summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris E Ferron <chris.e.ferron@linux.intel.com>2012-11-08 10:53:23 -0800
committerChris E Ferron <chris.e.ferron@linux.intel.com>2012-11-08 10:53:23 -0800
commit963b001863fd1d15bf527c475a7fe26ff5dc28be (patch)
treef55dad00448f0c8e7a807286ef8b809ee3679f3c
downloadraptor-963b001863fd1d15bf527c475a7fe26ff5dc28be.tar.gz
raptor-963b001863fd1d15bf527c475a7fe26ff5dc28be.tar.bz2
raptor-963b001863fd1d15bf527c475a7fe26ff5dc28be.zip
Imported Upstream version 2.0.8
-rw-r--r--AUTHORS4
-rw-r--r--COPYING339
-rw-r--r--COPYING.LIB510
-rw-r--r--ChangeLog1375
-rw-r--r--ChangeLog.157
-rw-r--r--ChangeLog.101019
-rw-r--r--ChangeLog.115416
-rw-r--r--ChangeLog.121124
-rw-r--r--ChangeLog.2637
-rw-r--r--ChangeLog.32026
-rw-r--r--ChangeLog.42809
-rw-r--r--ChangeLog.52424
-rw-r--r--ChangeLog.61812
-rw-r--r--ChangeLog.71764
-rw-r--r--ChangeLog.82234
-rw-r--r--ChangeLog.93100
-rw-r--r--INSTALL370
-rw-r--r--INSTALL.html376
-rw-r--r--LICENSE-2.0.txt202
-rw-r--r--LICENSE.html99
-rw-r--r--LICENSE.txt66
-rw-r--r--Makefile.am66
-rw-r--r--Makefile.in906
-rw-r--r--NEWS659
-rw-r--r--NEWS.html801
-rw-r--r--NOTICE3
-rw-r--r--README195
-rw-r--r--README.html307
-rw-r--r--RELEASE.html4206
-rw-r--r--UPGRADING.html159
-rw-r--r--aclocal.m410010
-rwxr-xr-xautogen.sh392
-rwxr-xr-xbuild/ar-lib270
-rwxr-xr-xbuild/compile343
-rwxr-xr-xbuild/config.guess1530
-rwxr-xr-xbuild/config.sub1773
-rwxr-xr-xbuild/depcomp708
-rwxr-xr-xbuild/install-sh527
-rw-r--r--build/ltmain.sh9661
-rwxr-xr-xbuild/missing331
-rwxr-xr-xconfigure18836
-rw-r--r--configure.ac1239
-rw-r--r--data/Makefile.am1
-rw-r--r--data/Makefile.in422
-rw-r--r--data/dc.rdf8
-rw-r--r--docs/Makefile.am158
-rw-r--r--docs/Makefile.in930
-rw-r--r--docs/html/home.pngbin0 -> 654 bytes
-rw-r--r--docs/html/index.html234
-rw-r--r--docs/html/index.sgml570
-rw-r--r--docs/html/introduction.html39
-rw-r--r--docs/html/ix01.html850
-rw-r--r--docs/html/left.pngbin0 -> 459 bytes
-rw-r--r--docs/html/parser-grddl.html103
-rw-r--r--docs/html/parser-guess.html43
-rw-r--r--docs/html/parser-json.html35
-rw-r--r--docs/html/parser-ntriples.html36
-rw-r--r--docs/html/parser-rdfa.html44
-rw-r--r--docs/html/parser-rdfxml.html43
-rw-r--r--docs/html/parser-rss-tag-soup.html47
-rw-r--r--docs/html/parser-trig.html36
-rw-r--r--docs/html/parser-turtle.html35
-rw-r--r--docs/html/raptor-formats-types-by-parser.html97
-rw-r--r--docs/html/raptor-formats-types-by-serializer.html108
-rw-r--r--docs/html/raptor-formats-types-index.html195
-rw-r--r--docs/html/raptor-formats.html45
-rw-r--r--docs/html/raptor-parsers.html56
-rw-r--r--docs/html/raptor-serializers.html56
-rw-r--r--docs/html/raptor2-changes-1-4-21-to-2-0-0.html969
-rw-r--r--docs/html/raptor2-changes-2-0-3-to-2-0-4.html41
-rw-r--r--docs/html/raptor2-changes-2-0-4-to-2-0-5.html44
-rw-r--r--docs/html/raptor2-changes-2-0-5-to-2-0-6.html42
-rw-r--r--docs/html/raptor2-changes-2-0-6-to-2-0-7.html54
-rw-r--r--docs/html/raptor2-changes-2-0-7-to-2-0-8.html46
-rw-r--r--docs/html/raptor2-changes.html62
-rw-r--r--docs/html/raptor2-section-avltree.html540
-rw-r--r--docs/html/raptor2-section-constants.html127
-rw-r--r--docs/html/raptor2-section-general.html1049
-rw-r--r--docs/html/raptor2-section-iostream.html1041
-rw-r--r--docs/html/raptor2-section-locator.html281
-rw-r--r--docs/html/raptor2-section-memory.html158
-rw-r--r--docs/html/raptor2-section-option.html602
-rw-r--r--docs/html/raptor2-section-parser.html994
-rw-r--r--docs/html/raptor2-section-sax2.html719
-rw-r--r--docs/html/raptor2-section-sequence.html610
-rw-r--r--docs/html/raptor2-section-serializer.html619
-rw-r--r--docs/html/raptor2-section-stringbuffer.html532
-rw-r--r--docs/html/raptor2-section-triples.html1214
-rw-r--r--docs/html/raptor2-section-unicode.html373
-rw-r--r--docs/html/raptor2-section-uri.html1175
-rw-r--r--docs/html/raptor2-section-world.html620
-rw-r--r--docs/html/raptor2-section-www.html783
-rw-r--r--docs/html/raptor2-section-xml-namespace.html761
-rw-r--r--docs/html/raptor2-section-xml-qname.html464
-rw-r--r--docs/html/raptor2-section-xml.html1177
-rw-r--r--docs/html/raptor2.devhelp2627
-rw-r--r--docs/html/reference-manual.html165
-rw-r--r--docs/html/restrict-parser-network-access.html153
-rw-r--r--docs/html/right.pngbin0 -> 472 bytes
-rw-r--r--docs/html/serializer-atom.html47
-rw-r--r--docs/html/serializer-dot.html46
-rw-r--r--docs/html/serializer-json.html38
-rw-r--r--docs/html/serializer-nquads.html37
-rw-r--r--docs/html/serializer-ntriples.html36
-rw-r--r--docs/html/serializer-rdfxml-abbrev.html34
-rw-r--r--docs/html/serializer-rdfxml-xmp.html35
-rw-r--r--docs/html/serializer-rdfxml.html37
-rw-r--r--docs/html/serializer-rss-1-0.html39
-rw-r--r--docs/html/serializer-turtle.html35
-rw-r--r--docs/html/style.css266
-rw-r--r--docs/html/tutorial-initialising-finishing.html43
-rw-r--r--docs/html/tutorial-parse-strictness.html38
-rw-r--r--docs/html/tutorial-parser-abort.html38
-rw-r--r--docs/html/tutorial-parser-content.html151
-rw-r--r--docs/html/tutorial-parser-create.html91
-rw-r--r--docs/html/tutorial-parser-destroy.html38
-rw-r--r--docs/html/tutorial-parser-example.html98
-rw-r--r--docs/html/tutorial-parser-features.html72
-rw-r--r--docs/html/tutorial-parser-runtime-info.html37
-rw-r--r--docs/html/tutorial-parser-set-error-warning-handlers.html55
-rw-r--r--docs/html/tutorial-parser-set-id-handler.html62
-rw-r--r--docs/html/tutorial-parser-set-namespace-handler.html59
-rw-r--r--docs/html/tutorial-parser-set-triple-handler.html53
-rw-r--r--docs/html/tutorial-parser-static-info.html46
-rw-r--r--docs/html/tutorial-parsing.html73
-rw-r--r--docs/html/tutorial-querying-functionality.html110
-rw-r--r--docs/html/tutorial-serializer-create.html44
-rw-r--r--docs/html/tutorial-serializer-declare-namespace.html64
-rw-r--r--docs/html/tutorial-serializer-destroy.html38
-rw-r--r--docs/html/tutorial-serializer-example.html114
-rw-r--r--docs/html/tutorial-serializer-features.html71
-rw-r--r--docs/html/tutorial-serializer-get-triples.html126
-rw-r--r--docs/html/tutorial-serializer-runtime-info.html41
-rw-r--r--docs/html/tutorial-serializer-send-triples.html57
-rw-r--r--docs/html/tutorial-serializer-set-error-warning-handlers.html55
-rw-r--r--docs/html/tutorial-serializer-to-destination.html121
-rw-r--r--docs/html/tutorial-serializing.html59
-rw-r--r--docs/html/tutorial.html103
-rw-r--r--docs/html/up.pngbin0 -> 406 bytes
-rw-r--r--docs/libraptor2.3140
-rw-r--r--docs/libraptor2.html63
-rw-r--r--docs/raptor-changes.xml1043
-rw-r--r--docs/raptor-docs.xml160
-rw-r--r--docs/raptor-formats.xml444
-rw-r--r--docs/raptor-parsers.xml262
-rw-r--r--docs/raptor-serializers.xml185
-rw-r--r--docs/raptor-tutorial-intro.xml25
-rw-r--r--docs/raptor-tutorial-parsing.xml642
-rw-r--r--docs/raptor-tutorial-querying-functionality.xml85
-rw-r--r--docs/raptor-tutorial-serializing.xml402
-rw-r--r--docs/raptor1-eol.html108
-rw-r--r--docs/raptor2-overrides.txt50
-rw-r--r--docs/raptor2-sections.txt498
-rw-r--r--docs/raptor2.types0
-rw-r--r--docs/rdfcat.c55
-rw-r--r--docs/rdfprint.c42
-rw-r--r--docs/rdfserialize.c47
-rw-r--r--docs/tmpl/raptor2-unused.sgml949
-rw-r--r--docs/tmpl/section-avltree.sgml197
-rw-r--r--docs/tmpl/section-constants.sgml62
-rw-r--r--docs/tmpl/section-general.sgml371
-rw-r--r--docs/tmpl/section-iostream.sgml353
-rw-r--r--docs/tmpl/section-locator.sgml101
-rw-r--r--docs/tmpl/section-memory.sgml51
-rw-r--r--docs/tmpl/section-option.sgml145
-rw-r--r--docs/tmpl/section-parser.sgml302
-rw-r--r--docs/tmpl/section-sax2.sgml245
-rw-r--r--docs/tmpl/section-sequence.sgml199
-rw-r--r--docs/tmpl/section-serializer.sgml207
-rw-r--r--docs/tmpl/section-stringbuffer.sgml175
-rw-r--r--docs/tmpl/section-triples.sgml369
-rw-r--r--docs/tmpl/section-unicode.sgml123
-rw-r--r--docs/tmpl/section-unused.sgml63
-rw-r--r--docs/tmpl/section-uri.sgml378
-rw-r--r--docs/tmpl/section-world.sgml179
-rw-r--r--docs/tmpl/section-www.sgml260
-rw-r--r--docs/tmpl/section-xml-namespace.sgml247
-rw-r--r--docs/tmpl/section-xml-qname.sgml159
-rw-r--r--docs/tmpl/section-xml.sgml369
-rw-r--r--docs/upgrade-script.pl460
-rw-r--r--docs/version.xml1
-rw-r--r--docs/version.xml.in1
-rw-r--r--examples/Makefile.am69
-rw-r--r--examples/Makefile.in647
-rw-r--r--examples/grapper.c1327
-rw-r--r--examples/raptor_abort.c132
-rw-r--r--examples/rdfcat.c55
-rw-r--r--examples/rdfguess.c102
-rw-r--r--examples/rdfprint.c42
-rw-r--r--examples/rdfserialize.c47
-rw-r--r--gtk-doc.make280
-rw-r--r--librdfa/Makefile.am25
-rw-r--r--librdfa/Makefile.in447
-rw-r--r--librdfa/config.h6
-rw-r--r--librdfa/context.c591
-rw-r--r--librdfa/curie.c687
-rw-r--r--librdfa/iri.c72
-rw-r--r--librdfa/language.c55
-rw-r--r--librdfa/lists.c240
-rw-r--r--librdfa/namespace.c140
-rw-r--r--librdfa/rdfa.c1538
-rw-r--r--librdfa/rdfa.h377
-rw-r--r--librdfa/rdfa_utils.c528
-rw-r--r--librdfa/rdfa_utils.h485
-rw-r--r--librdfa/strtok_r.c52
-rw-r--r--librdfa/strtok_r.h15
-rw-r--r--librdfa/subject.c534
-rw-r--r--librdfa/triple.c846
-rwxr-xr-xmkinstalldirs162
-rw-r--r--raptor2.pc.in12
-rw-r--r--raptor2.rdf.in94
-rw-r--r--raptor2.spec.in136
-rw-r--r--scripts/Makefile.am42
-rw-r--r--scripts/Makefile.in574
-rw-r--r--scripts/build-formats.c588
-rw-r--r--scripts/fix-bison54
-rwxr-xr-xscripts/fix-flex87
-rwxr-xr-xscripts/fix-groff-xhtml64
-rw-r--r--scripts/fix-gtkdoc-header.pl31
-rwxr-xr-xscripts/process-changes.pl836
-rw-r--r--src/Makefile.am348
-rw-r--r--src/Makefile.in1278
-rw-r--r--src/ntriples_parse.c1246
-rw-r--r--src/parsedate.c3191
-rw-r--r--src/parsedate.y1166
-rw-r--r--src/raptor.h1
-rw-r--r--src/raptor2.h.in2097
-rw-r--r--src/raptor_abbrev.c643
-rw-r--r--src/raptor_avltree.c1766
-rw-r--r--src/raptor_concepts.c167
-rw-r--r--src/raptor_config.h.in338
-rw-r--r--src/raptor_general.c780
-rw-r--r--src/raptor_grddl.c2105
-rw-r--r--src/raptor_guess.c267
-rw-r--r--src/raptor_internal.h1444
-rw-r--r--src/raptor_iostream.c1657
-rw-r--r--src/raptor_json.c785
-rw-r--r--src/raptor_json_writer.c349
-rw-r--r--src/raptor_librdfa.c397
-rw-r--r--src/raptor_libxml.c880
-rw-r--r--src/raptor_locator.c252
-rw-r--r--src/raptor_log.c164
-rw-r--r--src/raptor_memstr.c81
-rw-r--r--src/raptor_namespace.c1149
-rw-r--r--src/raptor_nfc_icu.c77
-rw-r--r--src/raptor_nfc_test.c296
-rw-r--r--src/raptor_option.c723
-rw-r--r--src/raptor_parse.c1771
-rw-r--r--src/raptor_permute_test.c346
-rw-r--r--src/raptor_qname.c632
-rw-r--r--src/raptor_rdfxml.c3223
-rw-r--r--src/raptor_rfc2396.c796
-rw-r--r--src/raptor_rss.c1731
-rw-r--r--src/raptor_rss.h448
-rw-r--r--src/raptor_rss_common.c736
-rw-r--r--src/raptor_sax2.c1022
-rw-r--r--src/raptor_sequence.c873
-rw-r--r--src/raptor_serialize.c773
-rw-r--r--src/raptor_serialize_dot.c589
-rw-r--r--src/raptor_serialize_html.c278
-rw-r--r--src/raptor_serialize_json.c559
-rw-r--r--src/raptor_serialize_ntriples.c384
-rw-r--r--src/raptor_serialize_rdfxml.c745
-rw-r--r--src/raptor_serialize_rdfxmla.c1576
-rw-r--r--src/raptor_serialize_rss.c2439
-rw-r--r--src/raptor_serialize_turtle.c1411
-rw-r--r--src/raptor_set.c334
-rw-r--r--src/raptor_statement.c447
-rw-r--r--src/raptor_stringbuffer.c907
-rw-r--r--src/raptor_syntax_description.c114
-rw-r--r--src/raptor_term.c967
-rw-r--r--src/raptor_turtle_writer.c1062
-rw-r--r--src/raptor_unicode.c945
-rw-r--r--src/raptor_uri.c1961
-rw-r--r--src/raptor_win32.c49
-rw-r--r--src/raptor_www.c832
-rw-r--r--src/raptor_www_curl.c306
-rw-r--r--src/raptor_www_libfetch.c101
-rw-r--r--src/raptor_www_libxml.c163
-rw-r--r--src/raptor_www_test.c109
-rw-r--r--src/raptor_xml.c1095
-rw-r--r--src/raptor_xml_writer.c1008
-rw-r--r--src/snprintf.c444
-rw-r--r--src/strcasecmp.c112
-rw-r--r--src/turtle_common.c163
-rw-r--r--src/turtle_common.h84
-rw-r--r--src/turtle_lexer.c3052
-rw-r--r--src/turtle_lexer.h346
-rw-r--r--src/turtle_lexer.l994
-rw-r--r--src/turtle_parser.c3817
-rw-r--r--src/turtle_parser.h124
-rw-r--r--src/turtle_parser.y1820
-rw-r--r--src/win32_raptor_config.h168
-rw-r--r--src/win32_raptor_config.h.in168
-rw-r--r--tests/Makefile.am44
-rw-r--r--tests/Makefile.in818
-rw-r--r--tests/empty.c33
-rw-r--r--tests/feeds/Makefile.am223
-rw-r--r--tests/feeds/Makefile.in621
-rw-r--r--tests/feeds/atom.rnc334
-rw-r--r--tests/feeds/atom.rng597
-rw-r--r--tests/feeds/test01-result.atom26
-rw-r--r--tests/feeds/test01-result.ttl40
-rw-r--r--tests/feeds/test01.rdf44
-rw-r--r--tests/feeds/test02-result.atom59
-rw-r--r--tests/feeds/test02-result.ttl41
-rw-r--r--tests/feeds/test02.rdf44
-rw-r--r--tests/feeds/test03-result.atom81
-rw-r--r--tests/feeds/test03-result.ttl57
-rw-r--r--tests/feeds/test03.rdf72
-rw-r--r--tests/feeds/test04-result.ttl67
-rw-r--r--tests/feeds/test04.atom44
-rw-r--r--tests/feeds/test05-result.ttl24
-rw-r--r--tests/feeds/test05.atom9
-rw-r--r--tests/grddl/Makefile.am76
-rw-r--r--tests/grddl/Makefile.in492
-rw-r--r--tests/grddl/data-01.nt1
-rw-r--r--tests/grddl/data-01.rdf6
-rw-r--r--tests/grddl/data-02.rdf6
-rw-r--r--tests/grddl/test-01.html21
-rw-r--r--tests/grddl/test-01.out2
-rw-r--r--tests/json/Makefile.am110
-rw-r--r--tests/json/Makefile.in523
-rw-r--r--tests/json/bad-00.json3
-rw-r--r--tests/json/bad-01.json10
-rw-r--r--tests/json/bad-02.json11
-rw-r--r--tests/json/bad-03.json10
-rw-r--r--tests/json/bad-04.json7
-rw-r--r--tests/json/bad-05.json11
-rw-r--r--tests/json/bad-06.json12
-rw-r--r--tests/json/bad-07.json11
-rw-r--r--tests/json/bad-08.json11
-rw-r--r--tests/json/bad-09.json11
-rw-r--r--tests/json/bad-10.json11
-rw-r--r--tests/json/bad-11.json11
-rw-r--r--tests/json/bad-12.json7
-rw-r--r--tests/json/bad-13.json11
-rw-r--r--tests/json/example1.json22
-rw-r--r--tests/json/example1.nt13
-rw-r--r--tests/json/example2.json57
-rw-r--r--tests/json/example2.nt13
-rw-r--r--tests/json/example3.json14
-rw-r--r--tests/json/example3.nt1
-rw-r--r--tests/json/example4.json39
-rw-r--r--tests/json/example4.nt5
-rw-r--r--tests/ntriples/Makefile.am126
-rw-r--r--tests/ntriples/Makefile.in535
-rw-r--r--tests/ntriples/bad-00.nt1
-rw-r--r--tests/ntriples/bad-01.nt1
-rw-r--r--tests/ntriples/bad-02.nt1
-rw-r--r--tests/ntriples/bad-03.nt1
-rw-r--r--tests/ntriples/bad-04.nt1
-rw-r--r--tests/ntriples/bad-05.nt1
-rw-r--r--tests/ntriples/bad-06.nt1
-rw-r--r--tests/ntriples/bad-07.nt1
-rw-r--r--tests/ntriples/bug-481.nq1
-rw-r--r--tests/ntriples/bug-481.out1
-rw-r--r--tests/ntriples/test.nt65
-rw-r--r--tests/ntriples/test.out31
-rw-r--r--tests/ntriples/testnq-1.nq11
-rw-r--r--tests/ntriples/testnq-1.out10
-rw-r--r--tests/ntriples/testnq-optional-context.nq2
-rw-r--r--tests/ntriples/testnq-optional-context.out2
-rw-r--r--tests/rdfa/0001.out1
-rw-r--r--tests/rdfa/0001.xml10
-rw-r--r--tests/rdfa/0006.out2
-rw-r--r--tests/rdfa/0006.xml15
-rw-r--r--tests/rdfa/0007.out3
-rw-r--r--tests/rdfa/0007.xml15
-rw-r--r--tests/rdfa/0008.out1
-rw-r--r--tests/rdfa/0008.xml15
-rw-r--r--tests/rdfa/0009.out1
-rw-r--r--tests/rdfa/0009.xml13
-rw-r--r--tests/rdfa/0010.out2
-rw-r--r--tests/rdfa/0010.xml12
-rw-r--r--tests/rdfa/0012.out1
-rw-r--r--tests/rdfa/0012.xml11
-rw-r--r--tests/rdfa/0013.out1
-rw-r--r--tests/rdfa/0013.xml11
-rw-r--r--tests/rdfa/0014.out1
-rw-r--r--tests/rdfa/0014.xml14
-rw-r--r--tests/rdfa/0015.out2
-rw-r--r--tests/rdfa/0015.xml12
-rw-r--r--tests/rdfa/0017.out3
-rw-r--r--tests/rdfa/0017.xml15
-rw-r--r--tests/rdfa/0018.out1
-rw-r--r--tests/rdfa/0018.xml16
-rw-r--r--tests/rdfa/0019.out1
-rw-r--r--tests/rdfa/0019.xml11
-rw-r--r--tests/rdfa/0020.out1
-rw-r--r--tests/rdfa/0020.xml16
-rw-r--r--tests/rdfa/0021.out1
-rw-r--r--tests/rdfa/0021.xml16
-rw-r--r--tests/rdfa/0023.out1
-rw-r--r--tests/rdfa/0023.xml15
-rw-r--r--tests/rdfa/0025.out2
-rw-r--r--tests/rdfa/0025.xml18
-rw-r--r--tests/rdfa/0026.out1
-rw-r--r--tests/rdfa/0026.xml15
-rw-r--r--tests/rdfa/0027.out1
-rw-r--r--tests/rdfa/0027.xml16
-rw-r--r--tests/rdfa/0029.out1
-rw-r--r--tests/rdfa/0029.xml16
-rw-r--r--tests/rdfa/0030.out1
-rw-r--r--tests/rdfa/0030.xml15
-rw-r--r--tests/rdfa/0031.out1
-rw-r--r--tests/rdfa/0031.xml13
-rw-r--r--tests/rdfa/0032.out1
-rw-r--r--tests/rdfa/0032.xml14
-rw-r--r--tests/rdfa/0033.out2
-rw-r--r--tests/rdfa/0033.xml18
-rw-r--r--tests/rdfa/0034.out1
-rw-r--r--tests/rdfa/0034.xml13
-rw-r--r--tests/rdfa/0035.out1
-rw-r--r--tests/rdfa/0035.xml16
-rw-r--r--tests/rdfa/0036.out1
-rw-r--r--tests/rdfa/0036.xml16
-rw-r--r--tests/rdfa/0037.out1
-rw-r--r--tests/rdfa/0037.xml17
-rw-r--r--tests/rdfa/0038.out1
-rw-r--r--tests/rdfa/0038.xml13
-rw-r--r--tests/rdfa/0039.out1
-rw-r--r--tests/rdfa/0039.xml16
-rw-r--r--tests/rdfa/0040.out1
-rw-r--r--tests/rdfa/0040.xml15
-rw-r--r--tests/rdfa/0041.out1
-rw-r--r--tests/rdfa/0041.xml17
-rw-r--r--tests/rdfa/0042.out0
-rw-r--r--tests/rdfa/0042.xml14
-rw-r--r--tests/rdfa/0046.out3
-rw-r--r--tests/rdfa/0046.xml12
-rw-r--r--tests/rdfa/0047.out3
-rw-r--r--tests/rdfa/0047.xml12
-rw-r--r--tests/rdfa/0048.out3
-rw-r--r--tests/rdfa/0048.xml12
-rw-r--r--tests/rdfa/0049.out2
-rw-r--r--tests/rdfa/0049.xml12
-rw-r--r--tests/rdfa/0050.out2
-rw-r--r--tests/rdfa/0050.xml12
-rw-r--r--tests/rdfa/0051.out2
-rw-r--r--tests/rdfa/0051.xml10
-rw-r--r--tests/rdfa/0052.out1
-rw-r--r--tests/rdfa/0052.xml12
-rw-r--r--tests/rdfa/0053.out2
-rw-r--r--tests/rdfa/0053.xml12
-rw-r--r--tests/rdfa/0054.out2
-rw-r--r--tests/rdfa/0054.xml13
-rw-r--r--tests/rdfa/0055.out2
-rw-r--r--tests/rdfa/0055.xml13
-rw-r--r--tests/rdfa/0056.out3
-rw-r--r--tests/rdfa/0056.xml12
-rw-r--r--tests/rdfa/0057.out4
-rw-r--r--tests/rdfa/0057.xml13
-rw-r--r--tests/rdfa/0058.out6
-rw-r--r--tests/rdfa/0058.xml13
-rw-r--r--tests/rdfa/0059.out6
-rw-r--r--tests/rdfa/0059.xml15
-rw-r--r--tests/rdfa/0060.out2
-rw-r--r--tests/rdfa/0060.xml13
-rw-r--r--tests/rdfa/0061.out1
-rw-r--r--tests/rdfa/0061.xml11
-rw-r--r--tests/rdfa/0062.out1
-rw-r--r--tests/rdfa/0062.xml11
-rw-r--r--tests/rdfa/0063.out1
-rw-r--r--tests/rdfa/0063.xml11
-rw-r--r--tests/rdfa/0064.out1
-rw-r--r--tests/rdfa/0064.xml12
-rw-r--r--tests/rdfa/0065.out3
-rw-r--r--tests/rdfa/0065.xml21
-rw-r--r--tests/rdfa/0066.out1
-rw-r--r--tests/rdfa/0066.xml10
-rw-r--r--tests/rdfa/0067.out1
-rw-r--r--tests/rdfa/0067.xml10
-rw-r--r--tests/rdfa/0068.out1
-rw-r--r--tests/rdfa/0068.xml13
-rw-r--r--tests/rdfa/0069.out1
-rw-r--r--tests/rdfa/0069.xml12
-rw-r--r--tests/rdfa/0070.out1
-rw-r--r--tests/rdfa/0070.xml12
-rw-r--r--tests/rdfa/0071.out1
-rw-r--r--tests/rdfa/0071.xml14
-rw-r--r--tests/rdfa/0072.out1
-rw-r--r--tests/rdfa/0072.xml14
-rw-r--r--tests/rdfa/0073.out1
-rw-r--r--tests/rdfa/0073.xml14
-rw-r--r--tests/rdfa/0074.out1
-rw-r--r--tests/rdfa/0074.xml14
-rw-r--r--tests/rdfa/0075.out1
-rw-r--r--tests/rdfa/0075.xml14
-rw-r--r--tests/rdfa/0076.out23
-rw-r--r--tests/rdfa/0076.xml34
-rw-r--r--tests/rdfa/0077.out24
-rw-r--r--tests/rdfa/0077.xml59
-rw-r--r--tests/rdfa/0078.out6
-rw-r--r--tests/rdfa/0078.xml14
-rw-r--r--tests/rdfa/0079.out3
-rw-r--r--tests/rdfa/0079.xml14
-rw-r--r--tests/rdfa/0080.out1
-rw-r--r--tests/rdfa/0080.xml12
-rw-r--r--tests/rdfa/0081.out6
-rw-r--r--tests/rdfa/0081.xml14
-rw-r--r--tests/rdfa/0082.out8
-rw-r--r--tests/rdfa/0082.xml14
-rw-r--r--tests/rdfa/0083.out6
-rw-r--r--tests/rdfa/0083.xml14
-rw-r--r--tests/rdfa/0084.out8
-rw-r--r--tests/rdfa/0084.xml17
-rw-r--r--tests/rdfa/0085.out4
-rw-r--r--tests/rdfa/0085.xml16
-rw-r--r--tests/rdfa/0087.out24
-rw-r--r--tests/rdfa/0087.xml35
-rw-r--r--tests/rdfa/0088.out3
-rw-r--r--tests/rdfa/0088.xml13
-rw-r--r--tests/rdfa/0089.out1
-rw-r--r--tests/rdfa/0089.xml12
-rw-r--r--tests/rdfa/0090.out1
-rw-r--r--tests/rdfa/0090.xml15
-rw-r--r--tests/rdfa/0091.out3
-rw-r--r--tests/rdfa/0091.xml16
-rw-r--r--tests/rdfa/0093.out2
-rw-r--r--tests/rdfa/0093.xml14
-rw-r--r--tests/rdfa/0099.out1
-rw-r--r--tests/rdfa/0099.xml19
-rw-r--r--tests/rdfa/0104.out3
-rw-r--r--tests/rdfa/0104.xml17
-rw-r--r--tests/rdfa/0106.out1
-rw-r--r--tests/rdfa/0106.xml12
-rw-r--r--tests/rdfa/0107.out0
-rw-r--r--tests/rdfa/0107.xml10
-rw-r--r--tests/rdfa/0108.out1
-rw-r--r--tests/rdfa/0108.xml13
-rw-r--r--tests/rdfa/0109.out1
-rw-r--r--tests/rdfa/0109.xml14
-rw-r--r--tests/rdfa/0110.out1
-rw-r--r--tests/rdfa/0110.xml12
-rw-r--r--tests/rdfa/0111.out2
-rw-r--r--tests/rdfa/0111.xml14
-rw-r--r--tests/rdfa/0112.out1
-rw-r--r--tests/rdfa/0112.xml15
-rw-r--r--tests/rdfa/0113.out2
-rw-r--r--tests/rdfa/0113.xml11
-rw-r--r--tests/rdfa/0114.out8
-rw-r--r--tests/rdfa/0114.xml21
-rw-r--r--tests/rdfa/0115.out4
-rw-r--r--tests/rdfa/0115.xml16
-rw-r--r--tests/rdfa/0117.out2
-rw-r--r--tests/rdfa/0117.xml14
-rw-r--r--tests/rdfa/0118.out1
-rw-r--r--tests/rdfa/0118.xml16
-rw-r--r--tests/rdfa/0119.out1
-rw-r--r--tests/rdfa/0119.xml18
-rw-r--r--tests/rdfa/0120.out1
-rw-r--r--tests/rdfa/0120.xml15
-rw-r--r--tests/rdfa/0121.out2
-rw-r--r--tests/rdfa/0121.xml23
-rw-r--r--tests/rdfa/0122.out0
-rw-r--r--tests/rdfa/0122.xml16
-rw-r--r--tests/rdfa/0126.out3
-rw-r--r--tests/rdfa/0126.xml14
-rw-r--r--tests/rdfa/0131.out5
-rw-r--r--tests/rdfa/0131.xml10
-rw-r--r--tests/rdfa/0134.out1
-rw-r--r--tests/rdfa/0134.xml10
-rw-r--r--tests/rdfa/0140.out0
-rw-r--r--tests/rdfa/0140.xml11
-rw-r--r--tests/rdfa/0147.out1
-rw-r--r--tests/rdfa/0147.xml10
-rw-r--r--tests/rdfa/0172.out1
-rw-r--r--tests/rdfa/0172.xml11
-rw-r--r--tests/rdfa/0173.out1
-rw-r--r--tests/rdfa/0173.xml11
-rw-r--r--tests/rdfa/0174.out1
-rw-r--r--tests/rdfa/0174.xml15
-rw-r--r--tests/rdfa/0181.out1
-rw-r--r--tests/rdfa/0181.xml12
-rw-r--r--tests/rdfa/0197.out1
-rw-r--r--tests/rdfa/0197.xml14
-rw-r--r--tests/rdfa/0201.out1
-rw-r--r--tests/rdfa/0201.xml12
-rw-r--r--tests/rdfa/0202.out1
-rw-r--r--tests/rdfa/0202.xml14
-rw-r--r--tests/rdfa/0203.out1
-rw-r--r--tests/rdfa/0203.xml14
-rw-r--r--tests/rdfa/0207.out6
-rw-r--r--tests/rdfa/0207.xml17
-rw-r--r--tests/rdfa/0209.out0
-rw-r--r--tests/rdfa/0209.xml14
-rw-r--r--tests/rdfa/0210.out1
-rw-r--r--tests/rdfa/0210.xml14
-rw-r--r--tests/rdfa/0211.out0
-rw-r--r--tests/rdfa/0211.xml15
-rw-r--r--tests/rdfa/0212.out1
-rw-r--r--tests/rdfa/0212.xml14
-rw-r--r--tests/rdfa/0215.out1
-rw-r--r--tests/rdfa/0215.xml30
-rw-r--r--tests/rdfa/0258.out1
-rw-r--r--tests/rdfa/0258.xml14
-rw-r--r--tests/rdfa/0262.out1
-rw-r--r--tests/rdfa/0262.xml11
-rw-r--r--tests/rdfa/0291.out1
-rw-r--r--tests/rdfa/0291.xml11
-rw-r--r--tests/rdfa/0294.out0
-rw-r--r--tests/rdfa/0294.xml48
-rw-r--r--tests/rdfa/0304.out2
-rw-r--r--tests/rdfa/0304.xml20
-rw-r--r--tests/rdfa/Makefile.am156
-rw-r--r--tests/rdfa/Makefile.in572
-rw-r--r--tests/rdfa11/0001.out1
-rw-r--r--tests/rdfa11/0001.xml10
-rw-r--r--tests/rdfa11/0006.out2
-rw-r--r--tests/rdfa11/0006.xml15
-rw-r--r--tests/rdfa11/0007.out3
-rw-r--r--tests/rdfa11/0007.xml15
-rw-r--r--tests/rdfa11/0008.out1
-rw-r--r--tests/rdfa11/0008.xml15
-rw-r--r--tests/rdfa11/0009.out1
-rw-r--r--tests/rdfa11/0009.xml13
-rw-r--r--tests/rdfa11/0010.out2
-rw-r--r--tests/rdfa11/0010.xml12
-rw-r--r--tests/rdfa11/0012.out1
-rw-r--r--tests/rdfa11/0012.xml11
-rw-r--r--tests/rdfa11/0013.out1
-rw-r--r--tests/rdfa11/0013.xml11
-rw-r--r--tests/rdfa11/0014.out1
-rw-r--r--tests/rdfa11/0014.xml14
-rw-r--r--tests/rdfa11/0015.out2
-rw-r--r--tests/rdfa11/0015.xml12
-rw-r--r--tests/rdfa11/0017.out3
-rw-r--r--tests/rdfa11/0017.xml15
-rw-r--r--tests/rdfa11/0018.out1
-rw-r--r--tests/rdfa11/0018.xml16
-rw-r--r--tests/rdfa11/0019.out1
-rw-r--r--tests/rdfa11/0019.xml11
-rw-r--r--tests/rdfa11/0020.out1
-rw-r--r--tests/rdfa11/0020.xml16
-rw-r--r--tests/rdfa11/0021.out1
-rw-r--r--tests/rdfa11/0021.xml16
-rw-r--r--tests/rdfa11/0023.out1
-rw-r--r--tests/rdfa11/0023.xml15
-rw-r--r--tests/rdfa11/0025.out2
-rw-r--r--tests/rdfa11/0025.xml18
-rw-r--r--tests/rdfa11/0026.out1
-rw-r--r--tests/rdfa11/0026.xml15
-rw-r--r--tests/rdfa11/0027.out1
-rw-r--r--tests/rdfa11/0027.xml16
-rw-r--r--tests/rdfa11/0029.out1
-rw-r--r--tests/rdfa11/0029.xml16
-rw-r--r--tests/rdfa11/0030.out1
-rw-r--r--tests/rdfa11/0030.xml15
-rw-r--r--tests/rdfa11/0031.out1
-rw-r--r--tests/rdfa11/0031.xml13
-rw-r--r--tests/rdfa11/0032.out1
-rw-r--r--tests/rdfa11/0032.xml14
-rw-r--r--tests/rdfa11/0033.out2
-rw-r--r--tests/rdfa11/0033.xml18
-rw-r--r--tests/rdfa11/0034.out1
-rw-r--r--tests/rdfa11/0034.xml13
-rw-r--r--tests/rdfa11/0035.out1
-rw-r--r--tests/rdfa11/0035.xml16
-rw-r--r--tests/rdfa11/0036.out1
-rw-r--r--tests/rdfa11/0036.xml16
-rw-r--r--tests/rdfa11/0037.out1
-rw-r--r--tests/rdfa11/0037.xml17
-rw-r--r--tests/rdfa11/0038.out1
-rw-r--r--tests/rdfa11/0038.xml13
-rw-r--r--tests/rdfa11/0039.out1
-rw-r--r--tests/rdfa11/0039.xml16
-rw-r--r--tests/rdfa11/0041.out1
-rw-r--r--tests/rdfa11/0041.xml17
-rw-r--r--tests/rdfa11/0048.out3
-rw-r--r--tests/rdfa11/0048.xml12
-rw-r--r--tests/rdfa11/0049.out2
-rw-r--r--tests/rdfa11/0049.xml12
-rw-r--r--tests/rdfa11/0050.out2
-rw-r--r--tests/rdfa11/0050.xml12
-rw-r--r--tests/rdfa11/0051.out2
-rw-r--r--tests/rdfa11/0051.xml10
-rw-r--r--tests/rdfa11/0052.out1
-rw-r--r--tests/rdfa11/0052.xml12
-rw-r--r--tests/rdfa11/0053.out2
-rw-r--r--tests/rdfa11/0053.xml12
-rw-r--r--tests/rdfa11/0054.out2
-rw-r--r--tests/rdfa11/0054.xml13
-rw-r--r--tests/rdfa11/0055.out2
-rw-r--r--tests/rdfa11/0055.xml13
-rw-r--r--tests/rdfa11/0056.out3
-rw-r--r--tests/rdfa11/0056.xml12
-rw-r--r--tests/rdfa11/0057.out4
-rw-r--r--tests/rdfa11/0057.xml13
-rw-r--r--tests/rdfa11/0059.out6
-rw-r--r--tests/rdfa11/0059.xml15
-rw-r--r--tests/rdfa11/0060.out2
-rw-r--r--tests/rdfa11/0060.xml13
-rw-r--r--tests/rdfa11/0061.out1
-rw-r--r--tests/rdfa11/0061.xml12
-rw-r--r--tests/rdfa11/0062.out1
-rw-r--r--tests/rdfa11/0062.xml12
-rw-r--r--tests/rdfa11/0063.out1
-rw-r--r--tests/rdfa11/0063.xml11
-rw-r--r--tests/rdfa11/0064.out1
-rw-r--r--tests/rdfa11/0064.xml12
-rw-r--r--tests/rdfa11/0065.out3
-rw-r--r--tests/rdfa11/0065.xml21
-rw-r--r--tests/rdfa11/0066.out1
-rw-r--r--tests/rdfa11/0066.xml10
-rw-r--r--tests/rdfa11/0067.out1
-rw-r--r--tests/rdfa11/0067.xml10
-rw-r--r--tests/rdfa11/0068.out1
-rw-r--r--tests/rdfa11/0068.xml13
-rw-r--r--tests/rdfa11/0069.out1
-rw-r--r--tests/rdfa11/0069.xml12
-rw-r--r--tests/rdfa11/0070.out1
-rw-r--r--tests/rdfa11/0070.xml12
-rw-r--r--tests/rdfa11/0071.out1
-rw-r--r--tests/rdfa11/0071.xml14
-rw-r--r--tests/rdfa11/0072.out1
-rw-r--r--tests/rdfa11/0072.xml14
-rw-r--r--tests/rdfa11/0073.out1
-rw-r--r--tests/rdfa11/0073.xml14
-rw-r--r--tests/rdfa11/0074.out1
-rw-r--r--tests/rdfa11/0074.xml14
-rw-r--r--tests/rdfa11/0075.out1
-rw-r--r--tests/rdfa11/0075.xml14
-rw-r--r--tests/rdfa11/0076.out23
-rw-r--r--tests/rdfa11/0076.xml35
-rw-r--r--tests/rdfa11/0077.out24
-rw-r--r--tests/rdfa11/0077.xml60
-rw-r--r--tests/rdfa11/0079.out3
-rw-r--r--tests/rdfa11/0079.xml14
-rw-r--r--tests/rdfa11/0080.out1
-rw-r--r--tests/rdfa11/0080.xml12
-rw-r--r--tests/rdfa11/0083.out6
-rw-r--r--tests/rdfa11/0083.xml14
-rw-r--r--tests/rdfa11/0084.out8
-rw-r--r--tests/rdfa11/0084.xml17
-rw-r--r--tests/rdfa11/0085.out4
-rw-r--r--tests/rdfa11/0085.xml16
-rw-r--r--tests/rdfa11/0087.out24
-rw-r--r--tests/rdfa11/0087.xml35
-rw-r--r--tests/rdfa11/0088.out3
-rw-r--r--tests/rdfa11/0088.xml13
-rw-r--r--tests/rdfa11/0089.out1
-rw-r--r--tests/rdfa11/0089.xml12
-rw-r--r--tests/rdfa11/0091.out3
-rw-r--r--tests/rdfa11/0091.xml16
-rw-r--r--tests/rdfa11/0093.out2
-rw-r--r--tests/rdfa11/0093.xml14
-rw-r--r--tests/rdfa11/0099.out1
-rw-r--r--tests/rdfa11/0099.xml19
-rw-r--r--tests/rdfa11/0104.out3
-rw-r--r--tests/rdfa11/0104.xml17
-rw-r--r--tests/rdfa11/0106.out1
-rw-r--r--tests/rdfa11/0106.xml12
-rw-r--r--tests/rdfa11/0107.out0
-rw-r--r--tests/rdfa11/0107.xml10
-rw-r--r--tests/rdfa11/0108.out1
-rw-r--r--tests/rdfa11/0108.xml13
-rw-r--r--tests/rdfa11/0109.out1
-rw-r--r--tests/rdfa11/0109.xml14
-rw-r--r--tests/rdfa11/0110.out1
-rw-r--r--tests/rdfa11/0110.xml12
-rw-r--r--tests/rdfa11/0111.out2
-rw-r--r--tests/rdfa11/0111.xml14
-rw-r--r--tests/rdfa11/0112.out1
-rw-r--r--tests/rdfa11/0112.xml15
-rw-r--r--tests/rdfa11/0113.out2
-rw-r--r--tests/rdfa11/0113.xml11
-rw-r--r--tests/rdfa11/0114.out8
-rw-r--r--tests/rdfa11/0114.xml21
-rw-r--r--tests/rdfa11/0115.out4
-rw-r--r--tests/rdfa11/0115.xml16
-rw-r--r--tests/rdfa11/0117.out2
-rw-r--r--tests/rdfa11/0117.xml14
-rw-r--r--tests/rdfa11/0118.out1
-rw-r--r--tests/rdfa11/0118.xml16
-rw-r--r--tests/rdfa11/0119.out1
-rw-r--r--tests/rdfa11/0119.xml18
-rw-r--r--tests/rdfa11/0120.out1
-rw-r--r--tests/rdfa11/0120.xml15
-rw-r--r--tests/rdfa11/0121.out2
-rw-r--r--tests/rdfa11/0121.xml23
-rw-r--r--tests/rdfa11/0122.out0
-rw-r--r--tests/rdfa11/0122.xml16
-rw-r--r--tests/rdfa11/0126.out3
-rw-r--r--tests/rdfa11/0126.xml14
-rw-r--r--tests/rdfa11/0131.out5
-rw-r--r--tests/rdfa11/0131.xml10
-rw-r--r--tests/rdfa11/0134.out1
-rw-r--r--tests/rdfa11/0134.xml10
-rw-r--r--tests/rdfa11/0140.out0
-rw-r--r--tests/rdfa11/0140.xml11
-rw-r--r--tests/rdfa11/0147.out1
-rw-r--r--tests/rdfa11/0147.xml10
-rw-r--r--tests/rdfa11/0172.out1
-rw-r--r--tests/rdfa11/0172.xml13
-rw-r--r--tests/rdfa11/0173.out1
-rw-r--r--tests/rdfa11/0173.xml13
-rw-r--r--tests/rdfa11/0174.out1
-rw-r--r--tests/rdfa11/0174.xml15
-rw-r--r--tests/rdfa11/0175.out1
-rw-r--r--tests/rdfa11/0175.xml12
-rw-r--r--tests/rdfa11/0176.out4
-rw-r--r--tests/rdfa11/0176.xml22
-rw-r--r--tests/rdfa11/0177.out1
-rw-r--r--tests/rdfa11/0177.xml13
-rw-r--r--tests/rdfa11/0178.out2
-rw-r--r--tests/rdfa11/0178.xml13
-rw-r--r--tests/rdfa11/0179.out1
-rw-r--r--tests/rdfa11/0179.xml14
-rw-r--r--tests/rdfa11/0180.out1
-rw-r--r--tests/rdfa11/0180.xml13
-rw-r--r--tests/rdfa11/0181.out1
-rw-r--r--tests/rdfa11/0181.xml12
-rw-r--r--tests/rdfa11/0182.out2
-rw-r--r--tests/rdfa11/0182.xml15
-rw-r--r--tests/rdfa11/0183.out2
-rw-r--r--tests/rdfa11/0183.xml15
-rw-r--r--tests/rdfa11/0186.out2
-rw-r--r--tests/rdfa11/0186.xml13
-rw-r--r--tests/rdfa11/0187.out3
-rw-r--r--tests/rdfa11/0187.xml15
-rw-r--r--tests/rdfa11/0188.out2
-rw-r--r--tests/rdfa11/0188.xml15
-rw-r--r--tests/rdfa11/0189.out2
-rw-r--r--tests/rdfa11/0189.xml12
-rw-r--r--tests/rdfa11/0190.out1
-rw-r--r--tests/rdfa11/0190.xml12
-rw-r--r--tests/rdfa11/0196.out2
-rw-r--r--tests/rdfa11/0196.xml14
-rw-r--r--tests/rdfa11/0197.out4
-rw-r--r--tests/rdfa11/0197.xml14
-rw-r--r--tests/rdfa11/0198.out4
-rw-r--r--tests/rdfa11/0198.xml16
-rw-r--r--tests/rdfa11/0201.out1
-rw-r--r--tests/rdfa11/0201.xml12
-rw-r--r--tests/rdfa11/0202.out1
-rw-r--r--tests/rdfa11/0202.xml14
-rw-r--r--tests/rdfa11/0203.out1
-rw-r--r--tests/rdfa11/0203.xml14
-rw-r--r--tests/rdfa11/0206.out1
-rw-r--r--tests/rdfa11/0206.xml13
-rw-r--r--tests/rdfa11/0207.out6
-rw-r--r--tests/rdfa11/0207.xml17
-rw-r--r--tests/rdfa11/0213.out1
-rw-r--r--tests/rdfa11/0213.xml14
-rw-r--r--tests/rdfa11/0214.out2
-rw-r--r--tests/rdfa11/0214.xml10
-rw-r--r--tests/rdfa11/0216.out1
-rw-r--r--tests/rdfa11/0216.xml31
-rw-r--r--tests/rdfa11/0217.out2
-rw-r--r--tests/rdfa11/0217.xml13
-rw-r--r--tests/rdfa11/0218.out1
-rw-r--r--tests/rdfa11/0218.xml12
-rw-r--r--tests/rdfa11/0219.out3
-rw-r--r--tests/rdfa11/0219.xml12
-rw-r--r--tests/rdfa11/0220.out4
-rw-r--r--tests/rdfa11/0220.xml12
-rw-r--r--tests/rdfa11/0221.out6
-rw-r--r--tests/rdfa11/0221.xml13
-rw-r--r--tests/rdfa11/0222.out5
-rw-r--r--tests/rdfa11/0222.xml13
-rw-r--r--tests/rdfa11/0223.out6
-rw-r--r--tests/rdfa11/0223.xml14
-rw-r--r--tests/rdfa11/0224.out5
-rw-r--r--tests/rdfa11/0224.xml15
-rw-r--r--tests/rdfa11/0225.out6
-rw-r--r--tests/rdfa11/0225.xml15
-rw-r--r--tests/rdfa11/0226.out7
-rw-r--r--tests/rdfa11/0226.xml15
-rw-r--r--tests/rdfa11/0227.out7
-rw-r--r--tests/rdfa11/0227.xml15
-rw-r--r--tests/rdfa11/0228.out1
-rw-r--r--tests/rdfa11/0228.xml16
-rw-r--r--tests/rdfa11/0229.out1
-rw-r--r--tests/rdfa11/0229.xml14
-rw-r--r--tests/rdfa11/0230.out1
-rw-r--r--tests/rdfa11/0230.xml16
-rw-r--r--tests/rdfa11/0231.out1
-rw-r--r--tests/rdfa11/0231.xml12
-rw-r--r--tests/rdfa11/0232.out3
-rw-r--r--tests/rdfa11/0232.xml12
-rw-r--r--tests/rdfa11/0233.out3
-rw-r--r--tests/rdfa11/0233.xml12
-rw-r--r--tests/rdfa11/0234.out3
-rw-r--r--tests/rdfa11/0234.xml14
-rw-r--r--tests/rdfa11/0235.out0
-rw-r--r--tests/rdfa11/0235.xml13
-rw-r--r--tests/rdfa11/0236.out1
-rw-r--r--tests/rdfa11/0236.xml7
-rw-r--r--tests/rdfa11/0237.out1
-rw-r--r--tests/rdfa11/0237.xml12
-rw-r--r--tests/rdfa11/0238.out1
-rw-r--r--tests/rdfa11/0238.xml10
-rw-r--r--tests/rdfa11/0239.out1
-rw-r--r--tests/rdfa11/0239.xml11
-rw-r--r--tests/rdfa11/0246.out6
-rw-r--r--tests/rdfa11/0246.xml13
-rw-r--r--tests/rdfa11/0247.out6
-rw-r--r--tests/rdfa11/0247.xml14
-rw-r--r--tests/rdfa11/0248.out6
-rw-r--r--tests/rdfa11/0248.xml14
-rw-r--r--tests/rdfa11/0249.out8
-rw-r--r--tests/rdfa11/0249.xml14
-rw-r--r--tests/rdfa11/0250.out2
-rw-r--r--tests/rdfa11/0250.xml10
-rw-r--r--tests/rdfa11/0251.out1
-rw-r--r--tests/rdfa11/0251.xml11
-rw-r--r--tests/rdfa11/0252.out1
-rw-r--r--tests/rdfa11/0252.xml11
-rw-r--r--tests/rdfa11/0253.out1
-rw-r--r--tests/rdfa11/0253.xml13
-rw-r--r--tests/rdfa11/0254.out1
-rw-r--r--tests/rdfa11/0254.xml11
-rw-r--r--tests/rdfa11/0255.out2
-rw-r--r--tests/rdfa11/0255.xml11
-rw-r--r--tests/rdfa11/0256.out1
-rw-r--r--tests/rdfa11/0256.xml11
-rw-r--r--tests/rdfa11/0257.out1
-rw-r--r--tests/rdfa11/0257.xml10
-rw-r--r--tests/rdfa11/0258.out1
-rw-r--r--tests/rdfa11/0258.xml14
-rw-r--r--tests/rdfa11/0259.out31
-rw-r--r--tests/rdfa11/0259.xml48
-rw-r--r--tests/rdfa11/0260.out25
-rw-r--r--tests/rdfa11/0260.xml37
-rw-r--r--tests/rdfa11/0261.out1
-rw-r--r--tests/rdfa11/0261.xml14
-rw-r--r--tests/rdfa11/0262.out1
-rw-r--r--tests/rdfa11/0262.xml11
-rw-r--r--tests/rdfa11/0263.out1
-rw-r--r--tests/rdfa11/0263.xml10
-rw-r--r--tests/rdfa11/0264.out1
-rw-r--r--tests/rdfa11/0264.xml10
-rw-r--r--tests/rdfa11/0265.out1
-rw-r--r--tests/rdfa11/0265.xml10
-rw-r--r--tests/rdfa11/0266.out2
-rw-r--r--tests/rdfa11/0266.xml12
-rw-r--r--tests/rdfa11/0267.out2
-rw-r--r--tests/rdfa11/0267.xml12
-rw-r--r--tests/rdfa11/0268.out2
-rw-r--r--tests/rdfa11/0268.xml12
-rw-r--r--tests/rdfa11/0269.out1
-rw-r--r--tests/rdfa11/0269.xml10
-rw-r--r--tests/rdfa11/0271.out1
-rw-r--r--tests/rdfa11/0271.xml10
-rw-r--r--tests/rdfa11/0272.out1
-rw-r--r--tests/rdfa11/0272.xml10
-rw-r--r--tests/rdfa11/0273.out1
-rw-r--r--tests/rdfa11/0273.xml10
-rw-r--r--tests/rdfa11/0274.out1
-rw-r--r--tests/rdfa11/0274.xml10
-rw-r--r--tests/rdfa11/0275.out1
-rw-r--r--tests/rdfa11/0275.xml10
-rw-r--r--tests/rdfa11/0276.out1
-rw-r--r--tests/rdfa11/0276.xml10
-rw-r--r--tests/rdfa11/0277.out1
-rw-r--r--tests/rdfa11/0277.xml10
-rw-r--r--tests/rdfa11/0278.out1
-rw-r--r--tests/rdfa11/0278.xml10
-rw-r--r--tests/rdfa11/0279.out1
-rw-r--r--tests/rdfa11/0279.xml10
-rw-r--r--tests/rdfa11/0280.out1
-rw-r--r--tests/rdfa11/0280.xml10
-rw-r--r--tests/rdfa11/0281.out1
-rw-r--r--tests/rdfa11/0281.xml10
-rw-r--r--tests/rdfa11/0282.out1
-rw-r--r--tests/rdfa11/0282.xml10
-rw-r--r--tests/rdfa11/0283.out1
-rw-r--r--tests/rdfa11/0283.xml10
-rw-r--r--tests/rdfa11/0284.out1
-rw-r--r--tests/rdfa11/0284.xml10
-rw-r--r--tests/rdfa11/0285.out1
-rw-r--r--tests/rdfa11/0285.xml12
-rw-r--r--tests/rdfa11/0286.out1
-rw-r--r--tests/rdfa11/0286.xml12
-rw-r--r--tests/rdfa11/0287.out1
-rw-r--r--tests/rdfa11/0287.xml10
-rw-r--r--tests/rdfa11/0289.out1
-rw-r--r--tests/rdfa11/0289.xml11
-rw-r--r--tests/rdfa11/0290.out1
-rw-r--r--tests/rdfa11/0290.xml11
-rw-r--r--tests/rdfa11/0291.out1
-rw-r--r--tests/rdfa11/0291.xml11
-rw-r--r--tests/rdfa11/0292.out2
-rw-r--r--tests/rdfa11/0292.xml13
-rw-r--r--tests/rdfa11/0293.out1
-rw-r--r--tests/rdfa11/0293.xml13
-rw-r--r--tests/rdfa11/0295.out494
-rw-r--r--tests/rdfa11/0295.xml930
-rw-r--r--tests/rdfa11/0296.out20
-rw-r--r--tests/rdfa11/0296.xml27
-rw-r--r--tests/rdfa11/0297.out2
-rw-r--r--tests/rdfa11/0297.xml10
-rw-r--r--tests/rdfa11/0298.out2
-rw-r--r--tests/rdfa11/0298.xml12
-rw-r--r--tests/rdfa11/0299.out1
-rw-r--r--tests/rdfa11/0299.xml10
-rw-r--r--tests/rdfa11/0300.out1
-rw-r--r--tests/rdfa11/0300.xml10
-rw-r--r--tests/rdfa11/0301.out4
-rw-r--r--tests/rdfa11/0301.xml12
-rw-r--r--tests/rdfa11/0302.out6
-rw-r--r--tests/rdfa11/0302.xml12
-rw-r--r--tests/rdfa11/0303.out4
-rw-r--r--tests/rdfa11/0303.xml13
-rw-r--r--tests/rdfa11/0304.out2
-rw-r--r--tests/rdfa11/0304.xml20
-rw-r--r--tests/rdfa11/Makefile.am201
-rw-r--r--tests/rdfa11/Makefile.in617
-rw-r--r--tests/rdfxml/22-rdf-syntax-ns.out23
-rw-r--r--tests/rdfxml/22-rdf-syntax-ns.rdf48
-rw-r--r--tests/rdfxml/Makefile.am415
-rw-r--r--tests/rdfxml/Makefile.in790
-rw-r--r--tests/rdfxml/bad-00.rdf14
-rw-r--r--tests/rdfxml/bad-01.rdf21
-rw-r--r--tests/rdfxml/bad-02.rdf15
-rw-r--r--tests/rdfxml/bad-03.rdf15
-rw-r--r--tests/rdfxml/bad-04.rdf11
-rw-r--r--tests/rdfxml/bad-05.rdf13
-rw-r--r--tests/rdfxml/bad-06.rdf12
-rw-r--r--tests/rdfxml/bad-07.rdf13
-rw-r--r--tests/rdfxml/bad-08.rdf15
-rw-r--r--tests/rdfxml/bad-09.rdf15
-rw-r--r--tests/rdfxml/bad-10.rdf0
-rw-r--r--tests/rdfxml/bad-11.rdf13
-rw-r--r--tests/rdfxml/bad-12.rdf7
-rw-r--r--tests/rdfxml/bad-13.rdf11
-rw-r--r--tests/rdfxml/bad-14.rdf11
-rw-r--r--tests/rdfxml/bad-15.rdf16
-rw-r--r--tests/rdfxml/bad-16.rdf16
-rw-r--r--tests/rdfxml/bad-17.rdf16
-rw-r--r--tests/rdfxml/bad-18.rdf7
-rw-r--r--tests/rdfxml/bad-19.rdf10
-rw-r--r--tests/rdfxml/bad-20.rdf6
-rw-r--r--tests/rdfxml/bad-21.rdf10
-rw-r--r--tests/rdfxml/bad-22.rdf11
-rw-r--r--tests/rdfxml/bad-23.rdf10
-rw-r--r--tests/rdfxml/daml-oil.out214
-rw-r--r--tests/rdfxml/daml-oil.rdf492
-rw-r--r--tests/rdfxml/ex-00.out1
-rw-r--r--tests/rdfxml/ex-00.rdf6
-rw-r--r--tests/rdfxml/ex-01.out2
-rw-r--r--tests/rdfxml/ex-01.rdf6
-rw-r--r--tests/rdfxml/ex-02.out0
-rw-r--r--tests/rdfxml/ex-02.rdf9
-rw-r--r--tests/rdfxml/ex-03.out1
-rw-r--r--tests/rdfxml/ex-03.rdf11
-rw-r--r--tests/rdfxml/ex-04.out3
-rw-r--r--tests/rdfxml/ex-04.rdf5
-rw-r--r--tests/rdfxml/ex-05.out4
-rw-r--r--tests/rdfxml/ex-05.rdf6
-rw-r--r--tests/rdfxml/ex-06.out5
-rw-r--r--tests/rdfxml/ex-06.rdf13
-rw-r--r--tests/rdfxml/ex-07.out3
-rw-r--r--tests/rdfxml/ex-07.rdf11
-rw-r--r--tests/rdfxml/ex-08.out6
-rw-r--r--tests/rdfxml/ex-08.rdf7
-rw-r--r--tests/rdfxml/ex-09.out3
-rw-r--r--tests/rdfxml/ex-09.rdf8
-rw-r--r--tests/rdfxml/ex-10.out6
-rw-r--r--tests/rdfxml/ex-10.rdf14
-rw-r--r--tests/rdfxml/ex-11.out1
-rw-r--r--tests/rdfxml/ex-11.rdf13
-rw-r--r--tests/rdfxml/ex-12.out10
-rw-r--r--tests/rdfxml/ex-12.rdf13
-rw-r--r--tests/rdfxml/ex-13.out3
-rw-r--r--tests/rdfxml/ex-13.rdf16
-rw-r--r--tests/rdfxml/ex-14.out4
-rw-r--r--tests/rdfxml/ex-14.rdf18
-rw-r--r--tests/rdfxml/ex-15.out1
-rw-r--r--tests/rdfxml/ex-15.rdf6
-rw-r--r--tests/rdfxml/ex-16.out1
-rw-r--r--tests/rdfxml/ex-16.rdf6
-rw-r--r--tests/rdfxml/ex-17.out1
-rw-r--r--tests/rdfxml/ex-17.rdf8
-rw-r--r--tests/rdfxml/ex-18.out1
-rw-r--r--tests/rdfxml/ex-18.rdf7
-rw-r--r--tests/rdfxml/ex-19.out1
-rw-r--r--tests/rdfxml/ex-19.rdf4
-rw-r--r--tests/rdfxml/ex-20.out1
-rw-r--r--tests/rdfxml/ex-20.rdf8
-rw-r--r--tests/rdfxml/ex-21.out7
-rw-r--r--tests/rdfxml/ex-21.rdf9
-rw-r--r--tests/rdfxml/ex-22.out4
-rw-r--r--tests/rdfxml/ex-22.rdf10
-rw-r--r--tests/rdfxml/ex-23.out8
-rw-r--r--tests/rdfxml/ex-23.rdf27
-rw-r--r--tests/rdfxml/ex-24.out6
-rw-r--r--tests/rdfxml/ex-24.rdf15
-rw-r--r--tests/rdfxml/ex-25.out4
-rw-r--r--tests/rdfxml/ex-25.rdf14
-rw-r--r--tests/rdfxml/ex-26.out2
-rw-r--r--tests/rdfxml/ex-26.rdf12
-rw-r--r--tests/rdfxml/ex-27.out6
-rw-r--r--tests/rdfxml/ex-27.rdf20
-rw-r--r--tests/rdfxml/ex-28.out3
-rw-r--r--tests/rdfxml/ex-28.rdf14
-rw-r--r--tests/rdfxml/ex-29.out3
-rw-r--r--tests/rdfxml/ex-29.rdf14
-rw-r--r--tests/rdfxml/ex-30.out1
-rw-r--r--tests/rdfxml/ex-30.rdf11
-rw-r--r--tests/rdfxml/ex-31.out5
-rw-r--r--tests/rdfxml/ex-31.rdf16
-rw-r--r--tests/rdfxml/ex-32.out2
-rw-r--r--tests/rdfxml/ex-32.rdf10
-rw-r--r--tests/rdfxml/ex-33.out3
-rw-r--r--tests/rdfxml/ex-33.rdf13
-rw-r--r--tests/rdfxml/ex-34.out9
-rw-r--r--tests/rdfxml/ex-34.rdf19
-rw-r--r--tests/rdfxml/ex-35.out1
-rw-r--r--tests/rdfxml/ex-35.rdf10
-rw-r--r--tests/rdfxml/ex-36.out4
-rw-r--r--tests/rdfxml/ex-36.rdf11
-rw-r--r--tests/rdfxml/ex-37.out2
-rw-r--r--tests/rdfxml/ex-37.rdf12
-rw-r--r--tests/rdfxml/ex-38-rdfxmla.out17
-rw-r--r--tests/rdfxml/ex-38.out8
-rw-r--r--tests/rdfxml/ex-38.rdf12
-rw-r--r--tests/rdfxml/ex-39.out7
-rw-r--r--tests/rdfxml/ex-39.rdf16
-rw-r--r--tests/rdfxml/ex-40.out1
-rw-r--r--tests/rdfxml/ex-40.rdf9
-rw-r--r--tests/rdfxml/ex-41.out3
-rw-r--r--tests/rdfxml/ex-41.rdf13
-rw-r--r--tests/rdfxml/ex-42.out19
-rw-r--r--tests/rdfxml/ex-42.rdf14
-rw-r--r--tests/rdfxml/ex-43.out7
-rw-r--r--tests/rdfxml/ex-43.rdf12
-rw-r--r--tests/rdfxml/ex-44.out8
-rw-r--r--tests/rdfxml/ex-44.rdf12
-rw-r--r--tests/rdfxml/ex-45.out2
-rw-r--r--tests/rdfxml/ex-45.rdf12
-rw-r--r--tests/rdfxml/ex-46.out53
-rw-r--r--tests/rdfxml/ex-46.rdf91
-rw-r--r--tests/rdfxml/ex-47.out24
-rw-r--r--tests/rdfxml/ex-47.rdf51
-rw-r--r--tests/rdfxml/ex-48.out5
-rw-r--r--tests/rdfxml/ex-48.rdf16
-rw-r--r--tests/rdfxml/ex-49.out4
-rw-r--r--tests/rdfxml/ex-49.rdf14
-rw-r--r--tests/rdfxml/ex-51.out1
-rw-r--r--tests/rdfxml/ex-51.rdf9
-rw-r--r--tests/rdfxml/ex-52.out2
-rw-r--r--tests/rdfxml/ex-52.svg26
-rw-r--r--tests/rdfxml/ex-53.out1
-rw-r--r--tests/rdfxml/ex-53.rdf1
-rw-r--r--tests/rdfxml/ex-54.out1
-rw-r--r--tests/rdfxml/ex-54.rdf7
-rw-r--r--tests/rdfxml/ex-55.out2
-rw-r--r--tests/rdfxml/ex-55.rdf11
-rw-r--r--tests/rdfxml/ex-56.out1
-rw-r--r--tests/rdfxml/ex-56.rdf8
-rw-r--r--tests/rdfxml/ex-57.out1
-rw-r--r--tests/rdfxml/ex-57.rdf17
-rw-r--r--tests/rdfxml/ex-58.out3
-rw-r--r--tests/rdfxml/ex-58.rdf15
-rw-r--r--tests/rdfxml/ex-59.nt1
-rw-r--r--tests/rdfxml/ex-59.rdf6
-rw-r--r--tests/rdfxml/ex-60.nt1
-rw-r--r--tests/rdfxml/ex-60.rdf6
-rw-r--r--tests/rdfxml/ex-61.out1
-rw-r--r--tests/rdfxml/ex-61.rdf4
-rw-r--r--tests/rdfxml/owl-schema.out160
-rw-r--r--tests/rdfxml/owl-schema.rdf279
-rw-r--r--tests/rdfxml/rdf-schema.out129
-rw-r--r--tests/rdfxml/rdf-schema.rdf187
-rw-r--r--tests/rdfxml/rdfs-namespace.out132
-rw-r--r--tests/rdfxml/rdfs-namespace.rdf188
-rw-r--r--tests/rdfxml/warn-00.out7
-rw-r--r--tests/rdfxml/warn-00.rdf12
-rw-r--r--tests/rdfxml/warn-02.out0
-rw-r--r--tests/rdfxml/warn-02.rdf7
-rw-r--r--tests/rdfxml/warn-04.out2
-rw-r--r--tests/rdfxml/warn-04.rdf10
-rw-r--r--tests/rdfxml/warn-05.out1
-rw-r--r--tests/rdfxml/warn-05.rdf9
-rw-r--r--tests/rdfxml/warn-06.out1
-rw-r--r--tests/rdfxml/warn-06.rdf9
-rw-r--r--tests/rdfxml/warn-07.out2
-rw-r--r--tests/rdfxml/warn-07.rdf20
-rw-r--r--tests/rdfxml/wine.out2012
-rw-r--r--tests/rdfxml/wine.rdf2402
-rw-r--r--tests/trig/Makefile.am70
-rw-r--r--tests/trig/Makefile.in490
-rw-r--r--tests/trig/bug370.out8
-rw-r--r--tests/trig/bug370.trig27
-rw-r--r--tests/trig/bug451.out9
-rw-r--r--tests/trig/bug451.trig26
-rw-r--r--tests/trig/example1.out15
-rw-r--r--tests/trig/example1.trig29
-rw-r--r--tests/trig/example2.out6
-rw-r--r--tests/trig/example2.trig11
-rw-r--r--tests/trig/example3.out6
-rw-r--r--tests/trig/example3.trig26
-rw-r--r--tests/turtle/Makefile.am331
-rw-r--r--tests/turtle/Makefile.in728
-rw-r--r--tests/turtle/README.txt20
-rw-r--r--tests/turtle/bad-00.ttl2
-rw-r--r--tests/turtle/bad-01.ttl3
-rw-r--r--tests/turtle/bad-02.ttl3
-rw-r--r--tests/turtle/bad-03.ttl3
-rw-r--r--tests/turtle/bad-04.ttl3
-rw-r--r--tests/turtle/bad-05.ttl4
-rw-r--r--tests/turtle/bad-06.ttl3
-rw-r--r--tests/turtle/bad-07.ttl4
-rw-r--r--tests/turtle/bad-08.ttl2
-rw-r--r--tests/turtle/bad-09.ttl3
-rw-r--r--tests/turtle/bad-10.ttl3
-rw-r--r--tests/turtle/bad-11.ttl3
-rw-r--r--tests/turtle/bad-12.ttl3
-rw-r--r--tests/turtle/bad-13.ttl3
-rw-r--r--tests/turtle/bad-14.ttl6
-rw-r--r--tests/turtle/bad-15.ttl2
-rw-r--r--tests/turtle/bad-16.ttl1
-rw-r--r--tests/turtle/bad-17.ttl3
-rw-r--r--tests/turtle/bad-18.ttl3
-rw-r--r--tests/turtle/bad-19.ttl3
-rw-r--r--tests/turtle/bad-20.ttl3
-rw-r--r--tests/turtle/bad-21.ttl2
-rw-r--r--tests/turtle/bad-22.ttl3
-rw-r--r--tests/turtle/bad-23.ttl7
-rw-r--r--tests/turtle/ex-38-turtle.out17
-rw-r--r--tests/turtle/ex-62.rdf19
-rw-r--r--tests/turtle/manifest-bad.ttl98
-rw-r--r--tests/turtle/manifest.ttl215
-rw-r--r--tests/turtle/rdf-schema.out124
-rw-r--r--tests/turtle/rdf-schema.ttl154
-rw-r--r--tests/turtle/rdfq-results.out36
-rw-r--r--tests/turtle/rdfq-results.ttl39
-rw-r--r--tests/turtle/rdfs-namespace.out131
-rw-r--r--tests/turtle/rdfs-namespace.ttl160
-rw-r--r--tests/turtle/test-00.out1
-rw-r--r--tests/turtle/test-00.ttl2
-rw-r--r--tests/turtle/test-01.out3
-rw-r--r--tests/turtle/test-01.ttl7
-rw-r--r--tests/turtle/test-02.out3
-rw-r--r--tests/turtle/test-02.ttl5
-rw-r--r--tests/turtle/test-03.out3
-rw-r--r--tests/turtle/test-03.ttl5
-rw-r--r--tests/turtle/test-04.out2
-rw-r--r--tests/turtle/test-04.ttl4
-rw-r--r--tests/turtle/test-05.out4
-rw-r--r--tests/turtle/test-05.ttl4
-rw-r--r--tests/turtle/test-06.out1
-rw-r--r--tests/turtle/test-06.ttl3
-rw-r--r--tests/turtle/test-07.out5
-rw-r--r--tests/turtle/test-07.ttl3
-rw-r--r--tests/turtle/test-08.out1
-rw-r--r--tests/turtle/test-08.ttl3
-rw-r--r--tests/turtle/test-09.out4
-rw-r--r--tests/turtle/test-09.ttl10
-rw-r--r--tests/turtle/test-10.out5
-rw-r--r--tests/turtle/test-10.ttl5
-rw-r--r--tests/turtle/test-11.out4
-rw-r--r--tests/turtle/test-11.ttl10
-rw-r--r--tests/turtle/test-12.out4
-rw-r--r--tests/turtle/test-12.ttl9
-rw-r--r--tests/turtle/test-13.out2
-rw-r--r--tests/turtle/test-13.ttl7
-rw-r--r--tests/turtle/test-14.out10000
-rw-r--r--tests/turtle/test-14.ttl10002
-rw-r--r--tests/turtle/test-15.out10000
-rw-r--r--tests/turtle/test-15.ttl3
-rw-r--r--tests/turtle/test-16.out10000
-rw-r--r--tests/turtle/test-16.ttl10002
-rw-r--r--tests/turtle/test-17.out1
-rw-r--r--tests/turtle/test-17.ttl6
-rw-r--r--tests/turtle/test-18.out2
-rw-r--r--tests/turtle/test-18.ttl9
-rw-r--r--tests/turtle/test-19.out1
-rw-r--r--tests/turtle/test-19.ttl4
-rw-r--r--tests/turtle/test-20.out2
-rw-r--r--tests/turtle/test-20.ttl6
-rw-r--r--tests/turtle/test-21.out3
-rw-r--r--tests/turtle/test-21.ttl4
-rw-r--r--tests/turtle/test-22.out3
-rw-r--r--tests/turtle/test-22.ttl4
-rw-r--r--tests/turtle/test-23.out1
-rw-r--r--tests/turtle/test-23.ttl3
-rw-r--r--tests/turtle/test-24.out2
-rw-r--r--tests/turtle/test-24.ttl3
-rw-r--r--tests/turtle/test-25.out7
-rw-r--r--tests/turtle/test-25.ttl14
-rw-r--r--tests/turtle/test-26.out1
-rw-r--r--tests/turtle/test-26.ttl4
-rw-r--r--tests/turtle/test-27.out1
-rw-r--r--tests/turtle/test-27.ttl5
-rw-r--r--tests/turtle/test-28-out.ttl6
-rw-r--r--tests/turtle/test-28.out22
-rw-r--r--tests/turtle/test-28.ttl22
-rw-r--r--tests/turtle/test-29.out1
-rw-r--r--tests/turtle/test-29.ttl1
-rw-r--r--tests/turtle/test-30.out5
-rw-r--r--tests/turtle/test-30.ttl12
-rw-r--r--tests/turtle/test-31-out.ttl10
-rw-r--r--tests/turtle/test-31.ttl10
-rw-r--r--tests/turtle/test-32-out.ttl8
-rw-r--r--tests/turtle/test-32.ttl5
-rw-r--r--tests/turtle/test-33.out1
-rw-r--r--tests/turtle/test-33.ttl3
-rw-r--r--tests/turtle/test-34-out.ttl7
-rw-r--r--tests/turtle/test-34.ttl4
-rw-r--r--tests/turtle/test-35.out1
-rw-r--r--tests/turtle/test-35.ttl1
-rw-r--r--tests/turtle/test-36.out2
-rw-r--r--tests/turtle/test-36.ttl4
-rw-r--r--tests/turtle/test-37.out1
-rw-r--r--tests/turtle/test-37.ttl3
-rw-r--r--tests/turtle/test-38.out1
-rw-r--r--tests/turtle/test-38.ttl5
-rw-r--r--utils/Makefile.am90
-rw-r--r--utils/Makefile.in785
-rw-r--r--utils/getopt.c157
-rw-r--r--utils/rapper.1191
-rw-r--r--utils/rapper.c976
-rw-r--r--utils/rapper.html104
-rw-r--r--utils/raptor_getopt.h21
-rw-r--r--utils/rdfdiff.c1065
-rw-r--r--win32/Makefile.am12
-rw-r--r--win32/Makefile.in438
-rw-r--r--win32/README.txt30
-rw-r--r--win32/rapper.dsp108
-rw-r--r--win32/rapper.vcproj175
-rw-r--r--win32/raptor.dsp277
-rw-r--r--win32/raptor.dsw86
-rw-r--r--win32/raptor.sln37
-rw-r--r--win32/raptor.vcproj981
-rw-r--r--win32/raptortest.cpp82
-rw-r--r--win32/raptortest.dsp95
-rw-r--r--win32/raptortest.vcproj167
1330 files changed, 273471 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..4e8a7c3
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,4 @@
+Dave Beckett <dave@dajobe.org>
+Dave Robillard <dave@drobilla.net>
+Lauri Aalto <laalto@iki.fi>
+Nicholas J Humfrey <njh@aelius.com>
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..d511905
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/COPYING.LIB b/COPYING.LIB
new file mode 100644
index 0000000..2d2d780
--- /dev/null
+++ b/COPYING.LIB
@@ -0,0 +1,510 @@
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard. To achieve this, non-free programs must
+be allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at least
+ three years, to give the same user the materials specified in
+ Subsection 6a, above, for a charge no more than the cost of
+ performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James
+ Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..327baa3
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,1375 @@
+2012-06-24 Dave Beckett <dave@dajobe.org>
+
+ * Snapshotted raptor2_2_0_8 for 2.0.8 release (GIT
+ dbdb2f9e4aee4e93383fe62751b52349be64187b)
+
+ * librdfa/config.h, librdfa/rdfa.h: Fix fake librdfa config.h
+
+ * librdfa/config.h, librdfa/context.c, librdfa/lists.c,
+ librdfa/rdfa.h: librdfa config.h now includes raptor_config.h
+ directly
+
+2012-06-23 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_www_libxml.c:
+ Init / cleanup libxml nano HTTP library
+
+ (raptor_www_libxml_init, raptor_www_libxml_free): Call
+ xmlNanoHTTPInit and xmlNanoHTTPCleanup respectively.
+
+2012-06-22 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/context.c: DECLARE_URI_MAPPING - start new namespace, do
+ not make a new one Call raptor_namespaces_start_namespace()
+ instead of raptor_namespace_stack_start_namespace() which copies
+ the namespace to the stack and then starts it.
+
+ * tests/rdfa11/Makefile.am: Update rapper and rdfdiff use like
+ already done for 'rdfa' tests
+
+ * librdfa/rdfa.c:
+ (raptor_rdfa_start_element): Free attr if allocated
+
+ * src/raptor_nfc_test.c: Remove include of raptor_nfc.h
+
+2012-06-20 Dave Beckett <dave@dajobe.org>
+
+ * NEWS.html, RELEASE.html: 2.0.8
+
+ * librdfa/curie.c, librdfa/namespace.c, librdfa/rdfa.c: Build
+ fixes from Daniel Richard G.
+
+ * RELEASE.html: 2.0.8
+
+2012-06-19 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_parse.c: Lower min syntax guess score to 2 (Q 0.3)
+
+ * src/turtle_parser.y: If Turtle and Trig are both present, make
+ guessing prefer Turtle
+
+ Also score higher for Trig if 'trig' is in mime type
+
+ * examples/.gitignore: ignore rdfguess
+
+ * examples/rdfguess.c: Update rdfguess example code to read from
+ stdin or a file called '-'
+
+ (rdfguess_guess_name): Added and alter to accept file called '-'
+ as reading from FILE* stdin.
+
+ (main): Call above to support reading from stdin. Do something
+ with -h/--help
+
+ * src/raptor_parse.c: Be conservative in guessing syntax - scoring
+ too low is a failure.
+
+ (raptor_world_guess_parser_name): Set min guess core to 5 (Q
+ 0.6). this value isn't exposed or user configurable.
+ Addresses Issue #0000487
+ http://bugs.librdf.org/mantis/view.php?id=487
+
+ * tests/feeds/Makefile.am: Fix output turtle files for out of
+ source tree 'make check'
+
+2012-06-18 Dave Beckett <dave@dajobe.org>
+
+ * NEWS.html, README.html, RELEASE.html: 2.0.8
+
+2012-06-17 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/curie.c:
+ (rdfa_resolve_curie): Protect NULL uri lookup [clang]
+
+ * librdfa/rdfa_utils.c:
+ (rdfa_add_item): Protect NULL list lookup [clang]
+
+ * librdfa/curie.c:
+ (rdfa_resolve_curie): Protect NULL uri lookup [clang]
+
+ * src/raptor_namespace.c:
+ (raptor_namespaces_find_namespace): No NULL prefix for strcmp
+ [clang]
+
+ * librdfa/context.c:
+ (rdfa_create_new_element_context): Return NULL on OOM [clang]
+
+ * librdfa/context.c: librdfa in raptor: do not print to stdout on
+ failure
+
+ (rdfa_create_context): Remove printf with hardcoded message. if
+ malloc fails return NULL
+
+ * librdfa/rdfa.c:
+ (end_element): Protect for NULL xml_literal before strlen [clang]
+
+ * librdfa/curie.c:
+ (rdfa_resolve_uri): empty rval check for OOM [clang]
+
+ * src/raptor_qname.c:
+ (raptor_qname_copy): Free new_qname on OOM [clang]
+
+ * NEWS.html, RELEASE.html: 2.0.8
+
+ * src/raptor_serialize_turtle.c: Do not emit a Turtle (...)
+ collection if the list item is a URI
+
+ Fixes Issue #0000381
+ http://bugs.librdf.org/mantis/view.php?id=381
+
+ * tests/rdfa11/Makefile.am: 29 failures - 0114 passes
+
+ * tests/rdfa11/0114.out: Correct expected result based on original
+ sparql
+
+ * src/raptor_rfc2396.c:
+ Fix URI resolving with reference uri '?y'
+
+ (raptor_uri_resolve_uri_reference): When reference uri has no path,
+ copy the base path over.
+
+ (main): Correct the test case expected result for '?y' following
+ RFC3986 section 5.4.1 Normal examples. Add test case based on
+ RDFa 1.1 test 0114
+
+ * tests/rdfa11/Makefile.am: 30 failures - 0234 passes
+
+ * tests/rdfa11/0234.out: Fix test URI
+
+ * tests/rdfa11/Makefile.am: notes
+
+ * tests/rdfa11/Makefile.am: 32 failures - 0295 passes
+
+ * tests/rdfa11/0295.out: Update XML ns; remove non-ascii junk
+
+ * tests/rdfa11/Makefile.am: 32 failures - 0259 passes
+
+ * librdfa/curie.c:
+ (rdfa_resolve_curie): Get XML namespace from constnat
+
+2012-06-13 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_guess.c, src/raptor_internal.h, src/raptor_parse.c:
+ Raptor locator accessor for guess parser struct
+ raptor_parser_factory_s gains optional get_locator method.
+
+ (raptor_parser_get_locator): Call factory get_locator method if
+ present, otherwise use field.
+
+ (raptor_guess_guess_get_locator): Added to get locator from inner
+ parser if it exists.
+
+2012-06-11 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: Compare libcurl hex vernums as strings
+
+ * src/raptor_term.c:
+ (raptor_new_term_from_literal): Cast language length again
+
+ * src/raptor_internal.h: Remove redundant
+ raptor_parser_log_error_varargs
+
+ * librdfa/Makefile.am: Add missing librdfa files to dist
+
+ * src/raptor_internal.h: Add prototype for
+ raptor_parser_log_error_varargs
+
+ * tests/rdfa11/0226.out, tests/rdfa11/0226.xml,
+ tests/rdfa11/0227.out, tests/rdfa11/0227.xml: Updated RDFa 1.1
+ tests 0226 and 0227 after upstream change
+
+ Switches from (fake) rdf:inlist property to ex:inlist in
+ example.org namespace
+
+2012-06-10 Dave Beckett <dave@dajobe.org>
+
+ * tests/rdfa11/Makefile.am:
+ 33 failures
+
+ * tests/rdfa11/0221.out: Add <uri> rdf:value <foo> triple that is
+ also generated by librdfa
+
+ * tests/rdfa11/0218.out: Fix test URI
+
+ * tests/rdfa11/0201.out: Fix test URI to .xml
+
+ * tests/rdfa11/0220.out: Add <uri> rdf:value <foo> triple that is
+ also generated by librdfa
+
+ * tests/rdfa11/0197.out: Add other triples not tested in sparql
+
+ * tests/rdfa11/Makefile.am: More failures detail
+
+ * tests/rdfa11/0255.out: 1 triple plain literal test
+
+ * tests/rdfa11/Makefile.am: 39 failures
+
+ * tests/rdfa11/0061.xml, tests/rdfa11/0062.xml,
+ tests/rdfa11/0076.xml, tests/rdfa11/0077.xml,
+ tests/rdfa11/0172.xml, tests/rdfa11/0173.xml,
+ tests/rdfa11/0260.xml: Format some tests as XHTML1 as the only
+ expected input form. 0061 0062 0076 0077 0172 0173 0260 are
+ marked in the test manifest as only having a host language
+ 'xhtml1'
+
+ * tests/rdfa11/0260.out: Fix test URI
+
+ * tests/rdfa11/Makefile.am: 44 failures
+
+ * src/raptor_sax2.c:
+ (raptor_sax2_inscope_xml_language): Allow returning ""
+
+ * tests/rdfa11/0296.out: Add vocab triple and homepage one that
+ sparql ommits
+
+ * tests/rdfa11/0259.out: Add test URI
+
+ * tests/rdfa11/0258.out: FIx test URI
+
+ * librdfa/rdfa.c: Simplify and fix languag handling
+
+ * src/raptor_general.c, src/raptor_internal.h: Move git-version.h
+ include to just one module to speed up recompiles.
+
+2012-06-09 Dave Beckett <dave@dajobe.org>
+
+ * tests/rdfa11/Makefile.am: 0295
+
+ * tests/rdfa11/0295.out:
+ Test passes if >0 triples are generated
+
+ * src/raptor_librdfa.c:
+ (raptor_librdfa_parse_start): Set initial line/column to unknown.
+
+ * librdfa/rdfa.c: librdfa in raptor - pass back error line number
+ info to user
+
+ (start_element): Update locator from SAX2
+
+ * tests/rdfa11/Makefile.am: 50 failures
+
+ * tests/rdfa11/0189.out: Fix test URI
+
+ * tests/rdfa11/0187.out: Fix output vocabs
+
+ * tests/rdfa11/Makefile.am: 0304 note
+
+ * src/raptor_internal.h: Redefine rdfa_update_uri_mappings to
+ internal symbol
+
+ * tests/rdfa11/Makefile.am: 52 failures
+
+ * tests/rdfa11/0301.out, tests/rdfa11/0302.out,
+ tests/rdfa11/0303.out: Use exact output triples including
+ usesVocabulary
+
+ * tests/rdfa11/0258.out: 1 triple
+
+ * tests/rdfa11/Makefile.am: 53 failures
+
+ * tests/rdfa11/0272.out, tests/rdfa11/0273.out,
+ tests/rdfa11/0274.out, tests/rdfa11/0275.out,
+ tests/rdfa11/0276.out, tests/rdfa11/0277.out,
+ tests/rdfa11/0278.out, tests/rdfa11/0279.out,
+ tests/rdfa11/0280.out, tests/rdfa11/0281.out,
+ tests/rdfa11/0282.out, tests/rdfa11/0283.out,
+ tests/rdfa11/0284.out, tests/rdfa11/0285.out,
+ tests/rdfa11/0286.out, tests/rdfa11/0287.out: Fixed expected
+ output bnode subject to be test URI
+
+ * tests/rdfa11/0188.out, tests/rdfa11/0189.out: Add usesVocabulary
+ triple which comes from @vocab - why!?
+
+ * tests/rdfa11/0186.out: Add usesVocabulary triple which comes
+ from @vocab - why!?
+
+ * src/Makefile.am: Add librdfa/namespace.c
+
+ * librdfa/rdfa.c: Let rdfa_update_uri_mappings() handle RDFa
+ namespace starting.
+
+ * librdfa/Makefile.am, librdfa/namespace.c: Add namespace.c
+
+ * librdfa/rdfa.c: Handle @lang tag for raptor
+
+ * tests/rdfa11/0180.out: Expect 1 triple
+
+ * tests/rdfa11/0173.out: just 1 triple with a plain literal
+
+ * tests/rdfa11/Makefile.am: 58 failures
+
+ * librdfa/rdfa.c:
+ (start_element): Do not abort @prefix handling too early
+
+ * tests/rdfa11/Makefile.am:
+ 0176 passes
+
+ * tests/rdfa11/0176.out: Use exact expected output for quick cmp
+
+ * tests/rdfa11/Makefile.am: Use cmp as a quicker test before doing
+ an rdfdiff
+
+ * tests/rdfa11/0107.out, tests/rdfa11/0122.out,
+ tests/rdfa11/0140.out, tests/rdfa11/0180.out,
+ tests/rdfa11/0235.out, tests/rdfa11/0258.out: Add expect 0 triples
+ files
+
+ * tests/rdfa11/0295.out: 0295 expected output
+
+ * tests/rdfa11/Makefile.am: comments
+
+ * configure.ac, tests/Makefile.am, tests/rdfa11/0001.out,
+ tests/rdfa11/0001.xml, tests/rdfa11/0006.out,
+ tests/rdfa11/0006.xml, tests/rdfa11/0007.out,
+ tests/rdfa11/0007.xml, tests/rdfa11/0008.out,
+ tests/rdfa11/0008.xml, tests/rdfa11/0009.out,
+ tests/rdfa11/0009.xml, tests/rdfa11/0010.out,
+ tests/rdfa11/0010.xml, tests/rdfa11/0012.out,
+ tests/rdfa11/0012.xml, tests/rdfa11/0013.out,
+ tests/rdfa11/0013.xml, tests/rdfa11/0014.out,
+ tests/rdfa11/0014.xml, tests/rdfa11/0015.out,
+ tests/rdfa11/0015.xml, tests/rdfa11/0017.out,
+ tests/rdfa11/0017.xml, tests/rdfa11/0018.out,
+ tests/rdfa11/0018.xml, tests/rdfa11/0019.out,
+ tests/rdfa11/0019.xml, tests/rdfa11/0020.out,
+ tests/rdfa11/0020.xml, tests/rdfa11/0021.out,
+ tests/rdfa11/0021.xml, tests/rdfa11/0023.out,
+ tests/rdfa11/0023.xml, tests/rdfa11/0025.out,
+ tests/rdfa11/0025.xml, tests/rdfa11/0026.out,
+ tests/rdfa11/0026.xml, tests/rdfa11/0027.out,
+ tests/rdfa11/0027.xml, tests/rdfa11/0029.out,
+ tests/rdfa11/0029.xml, tests/rdfa11/0030.out,
+ tests/rdfa11/0030.xml, tests/rdfa11/0031.out,
+ tests/rdfa11/0031.xml, tests/rdfa11/0032.out,
+ tests/rdfa11/0032.xml, tests/rdfa11/0033.out,
+ tests/rdfa11/0033.xml, tests/rdfa11/0034.out,
+ tests/rdfa11/0034.xml, tests/rdfa11/0035.out,
+ tests/rdfa11/0035.xml, tests/rdfa11/0036.out,
+ tests/rdfa11/0036.xml, tests/rdfa11/0037.out,
+ tests/rdfa11/0037.xml, tests/rdfa11/0038.out,
+ tests/rdfa11/0038.xml, tests/rdfa11/0039.out,
+ tests/rdfa11/0039.xml, tests/rdfa11/0041.out,
+ tests/rdfa11/0041.xml, tests/rdfa11/0048.out,
+ tests/rdfa11/0048.xml, tests/rdfa11/0049.out,
+ tests/rdfa11/0049.xml, tests/rdfa11/0050.out,
+ tests/rdfa11/0050.xml, tests/rdfa11/0051.out,
+ tests/rdfa11/0051.xml, tests/rdfa11/0052.out,
+ tests/rdfa11/0052.xml, tests/rdfa11/0053.out,
+ tests/rdfa11/0053.xml, tests/rdfa11/0054.out,
+ tests/rdfa11/0054.xml, tests/rdfa11/0055.out,
+ tests/rdfa11/0055.xml, tests/rdfa11/0056.out,
+ tests/rdfa11/0056.xml, tests/rdfa11/0057.out,
+ tests/rdfa11/0057.xml, tests/rdfa11/0059.out,
+ tests/rdfa11/0059.xml, tests/rdfa11/0060.out,
+ tests/rdfa11/0060.xml, tests/rdfa11/0061.out,
+ tests/rdfa11/0061.xml, tests/rdfa11/0062.out,
+ tests/rdfa11/0062.xml, tests/rdfa11/0063.out,
+ tests/rdfa11/0063.xml, tests/rdfa11/0064.out,
+ tests/rdfa11/0064.xml, tests/rdfa11/0065.out,
+ tests/rdfa11/0065.xml, tests/rdfa11/0066.out,
+ tests/rdfa11/0066.xml, tests/rdfa11/0067.out,
+ tests/rdfa11/0067.xml, tests/rdfa11/0068.out,
+ tests/rdfa11/0068.xml, tests/rdfa11/0069.out,
+ tests/rdfa11/0069.xml, tests/rdfa11/0070.out,
+ tests/rdfa11/0070.xml, tests/rdfa11/0071.out,
+ tests/rdfa11/0071.xml, tests/rdfa11/0072.out,
+ tests/rdfa11/0072.xml, tests/rdfa11/0073.out,
+ tests/rdfa11/0073.xml, tests/rdfa11/0074.out,
+ tests/rdfa11/0074.xml, tests/rdfa11/0075.out,
+ tests/rdfa11/0075.xml, tests/rdfa11/0076.out,
+ tests/rdfa11/0076.xml, tests/rdfa11/0077.out,
+ tests/rdfa11/0077.xml, tests/rdfa11/0079.out,
+ tests/rdfa11/0079.xml, tests/rdfa11/0080.out,
+ tests/rdfa11/0080.xml, tests/rdfa11/0083.out,
+ tests/rdfa11/0083.xml, tests/rdfa11/0084.out,
+ tests/rdfa11/0084.xml, tests/rdfa11/0085.out,
+ tests/rdfa11/0085.xml, tests/rdfa11/0087.out,
+ tests/rdfa11/0087.xml, tests/rdfa11/0088.out,
+ tests/rdfa11/0088.xml, tests/rdfa11/0089.out,
+ tests/rdfa11/0089.xml, tests/rdfa11/0091.out,
+ tests/rdfa11/0091.xml, tests/rdfa11/0093.out,
+ tests/rdfa11/0093.xml, tests/rdfa11/0099.out,
+ tests/rdfa11/0099.xml, tests/rdfa11/0104.out,
+ tests/rdfa11/0104.xml, tests/rdfa11/0106.out,
+ tests/rdfa11/0106.xml, tests/rdfa11/0107.xml,
+ tests/rdfa11/0108.out, tests/rdfa11/0108.xml,
+ tests/rdfa11/0109.out, tests/rdfa11/0109.xml,
+ tests/rdfa11/0110.out, tests/rdfa11/0110.xml,
+ tests/rdfa11/0111.out, tests/rdfa11/0111.xml,
+ tests/rdfa11/0112.out, tests/rdfa11/0112.xml,
+ tests/rdfa11/0113.out, tests/rdfa11/0113.xml,
+ tests/rdfa11/0114.out, tests/rdfa11/0114.xml,
+ tests/rdfa11/0115.out, tests/rdfa11/0115.xml,
+ tests/rdfa11/0117.out, tests/rdfa11/0117.xml,
+ tests/rdfa11/0118.out, tests/rdfa11/0118.xml,
+ tests/rdfa11/0119.out, tests/rdfa11/0119.xml,
+ tests/rdfa11/0120.out, tests/rdfa11/0120.xml,
+ tests/rdfa11/0121.out, tests/rdfa11/0121.xml,
+ tests/rdfa11/0122.xml, tests/rdfa11/0126.out,
+ tests/rdfa11/0126.xml, tests/rdfa11/0131.out,
+ tests/rdfa11/0131.xml, tests/rdfa11/0134.out,
+ tests/rdfa11/0134.xml, tests/rdfa11/0140.xml,
+ tests/rdfa11/0147.out, tests/rdfa11/0147.xml,
+ tests/rdfa11/0172.out, tests/rdfa11/0172.xml,
+ tests/rdfa11/0173.out, tests/rdfa11/0173.xml,
+ tests/rdfa11/0174.out, tests/rdfa11/0174.xml,
+ tests/rdfa11/0175.out, tests/rdfa11/0175.xml,
+ tests/rdfa11/0176.out, tests/rdfa11/0176.xml,
+ tests/rdfa11/0177.out, tests/rdfa11/0177.xml,
+ tests/rdfa11/0178.out, tests/rdfa11/0178.xml,
+ tests/rdfa11/0179.out, tests/rdfa11/0179.xml,
+ tests/rdfa11/0180.xml, tests/rdfa11/0181.out,
+ tests/rdfa11/0181.xml, tests/rdfa11/0182.out,
+ tests/rdfa11/0182.xml, tests/rdfa11/0183.out,
+ tests/rdfa11/0183.xml, tests/rdfa11/0186.out,
+ tests/rdfa11/0186.xml, tests/rdfa11/0187.out,
+ tests/rdfa11/0187.xml, tests/rdfa11/0188.out,
+ tests/rdfa11/0188.xml, tests/rdfa11/0189.out,
+ tests/rdfa11/0189.xml, tests/rdfa11/0190.out,
+ tests/rdfa11/0190.xml, tests/rdfa11/0196.out,
+ tests/rdfa11/0196.xml, tests/rdfa11/0197.out,
+ tests/rdfa11/0197.xml, tests/rdfa11/0198.out,
+ tests/rdfa11/0198.xml, tests/rdfa11/0201.out,
+ tests/rdfa11/0201.xml, tests/rdfa11/0202.out,
+ tests/rdfa11/0202.xml, tests/rdfa11/0203.out,
+ tests/rdfa11/0203.xml, tests/rdfa11/0206.out,
+ tests/rdfa11/0206.xml, tests/rdfa11/0207.out,
+ tests/rdfa11/0207.xml, tests/rdfa11/0213.out,
+ tests/rdfa11/0213.xml, tests/rdfa11/0214.out,
+ tests/rdfa11/0214.xml, tests/rdfa11/0216.out,
+ tests/rdfa11/0216.xml, tests/rdfa11/0217.out,
+ tests/rdfa11/0217.xml, tests/rdfa11/0218.out,
+ tests/rdfa11/0218.xml, tests/rdfa11/0219.out,
+ tests/rdfa11/0219.xml, tests/rdfa11/0220.out,
+ tests/rdfa11/0220.xml, tests/rdfa11/0221.out,
+ tests/rdfa11/0221.xml, tests/rdfa11/0222.out,
+ tests/rdfa11/0222.xml, tests/rdfa11/0223.out,
+ tests/rdfa11/0223.xml, tests/rdfa11/0224.out,
+ tests/rdfa11/0224.xml, tests/rdfa11/0225.out,
+ tests/rdfa11/0225.xml, tests/rdfa11/0226.out,
+ tests/rdfa11/0226.xml, tests/rdfa11/0227.out,
+ tests/rdfa11/0227.xml, tests/rdfa11/0228.out,
+ tests/rdfa11/0228.xml, tests/rdfa11/0229.out,
+ tests/rdfa11/0229.xml, tests/rdfa11/0230.out,
+ tests/rdfa11/0230.xml, tests/rdfa11/0231.out,
+ tests/rdfa11/0231.xml, tests/rdfa11/0232.out,
+ tests/rdfa11/0232.xml, tests/rdfa11/0233.out,
+ tests/rdfa11/0233.xml, tests/rdfa11/0234.out,
+ tests/rdfa11/0234.xml, tests/rdfa11/0235.xml,
+ tests/rdfa11/0236.out, tests/rdfa11/0236.xml,
+ tests/rdfa11/0237.out, tests/rdfa11/0237.xml,
+ tests/rdfa11/0238.out, tests/rdfa11/0238.xml,
+ tests/rdfa11/0239.out, tests/rdfa11/0239.xml,
+ tests/rdfa11/0246.out, tests/rdfa11/0246.xml,
+ tests/rdfa11/0247.out, tests/rdfa11/0247.xml,
+ tests/rdfa11/0248.out, tests/rdfa11/0248.xml,
+ tests/rdfa11/0249.out, tests/rdfa11/0249.xml,
+ tests/rdfa11/0250.out, tests/rdfa11/0250.xml,
+ tests/rdfa11/0251.out, tests/rdfa11/0251.xml,
+ tests/rdfa11/0252.out, tests/rdfa11/0252.xml,
+ tests/rdfa11/0253.out, tests/rdfa11/0253.xml,
+ tests/rdfa11/0254.out, tests/rdfa11/0254.xml,
+ tests/rdfa11/0255.out, tests/rdfa11/0255.xml,
+ tests/rdfa11/0256.out, tests/rdfa11/0256.xml,
+ tests/rdfa11/0257.out, tests/rdfa11/0257.xml,
+ tests/rdfa11/0258.xml, tests/rdfa11/0259.out,
+ tests/rdfa11/0259.xml, tests/rdfa11/0260.out,
+ tests/rdfa11/0260.xml, tests/rdfa11/0261.out,
+ tests/rdfa11/0261.xml, tests/rdfa11/0262.out,
+ tests/rdfa11/0262.xml, tests/rdfa11/0263.out,
+ tests/rdfa11/0263.xml, tests/rdfa11/0264.out,
+ tests/rdfa11/0264.xml, tests/rdfa11/0265.out,
+ tests/rdfa11/0265.xml, tests/rdfa11/0266.out,
+ tests/rdfa11/0266.xml, tests/rdfa11/0267.out,
+ tests/rdfa11/0267.xml, tests/rdfa11/0268.out,
+ tests/rdfa11/0268.xml, tests/rdfa11/0269.out,
+ tests/rdfa11/0269.xml, tests/rdfa11/0271.out,
+ tests/rdfa11/0271.xml, tests/rdfa11/0272.out,
+ tests/rdfa11/0272.xml, tests/rdfa11/0273.out,
+ tests/rdfa11/0273.xml, tests/rdfa11/0274.out,
+ tests/rdfa11/0274.xml, tests/rdfa11/0275.out,
+ tests/rdfa11/0275.xml, tests/rdfa11/0276.out,
+ tests/rdfa11/0276.xml, tests/rdfa11/0277.out,
+ tests/rdfa11/0277.xml, tests/rdfa11/0278.out,
+ tests/rdfa11/0278.xml, tests/rdfa11/0279.out,
+ tests/rdfa11/0279.xml, tests/rdfa11/0280.out,
+ tests/rdfa11/0280.xml, tests/rdfa11/0281.out,
+ tests/rdfa11/0281.xml, tests/rdfa11/0282.out,
+ tests/rdfa11/0282.xml, tests/rdfa11/0283.out,
+ tests/rdfa11/0283.xml, tests/rdfa11/0284.out,
+ tests/rdfa11/0284.xml, tests/rdfa11/0285.out,
+ tests/rdfa11/0285.xml, tests/rdfa11/0286.out,
+ tests/rdfa11/0286.xml, tests/rdfa11/0287.out,
+ tests/rdfa11/0287.xml, tests/rdfa11/0289.out,
+ tests/rdfa11/0289.xml, tests/rdfa11/0290.out,
+ tests/rdfa11/0290.xml, tests/rdfa11/0291.out,
+ tests/rdfa11/0291.xml, tests/rdfa11/0292.out,
+ tests/rdfa11/0292.xml, tests/rdfa11/0293.out,
+ tests/rdfa11/0293.xml, tests/rdfa11/0295.xml,
+ tests/rdfa11/0296.out, tests/rdfa11/0296.xml,
+ tests/rdfa11/0297.out, tests/rdfa11/0297.xml,
+ tests/rdfa11/0298.out, tests/rdfa11/0298.xml,
+ tests/rdfa11/0299.out, tests/rdfa11/0299.xml,
+ tests/rdfa11/0300.out, tests/rdfa11/0300.xml,
+ tests/rdfa11/0301.out, tests/rdfa11/0301.xml,
+ tests/rdfa11/0302.out, tests/rdfa11/0302.xml,
+ tests/rdfa11/0303.out, tests/rdfa11/0303.xml,
+ tests/rdfa11/0304.out, tests/rdfa11/0304.xml,
+ tests/rdfa11/Makefile.am: Add RDFa 1.1 tests and expected failures
+
+ * librdfa/rdfa.c: Crash fix for @prefix
+
+ (start_element): Do not crash if strtok_r returns NULL during walk
+ through @prefix. Instead, abort attribute prefix search This
+ makes RDFA 1.0 test 0209 work for me
+
+ * src/raptor_librdfa.c: Default for parser 'rdfa' is whatever
+ librdfa does by default
+
+ * librdfa/lists.c: Removed assignment of never-read 'triple'
+ variable [clang]
+
+ * src/turtle_lexer.l: Make failure to convert Turtle qname log as
+ level error not fatal
+
+2012-06-08 Dave Beckett <dave@dajobe.org>
+
+ * Makefile.am: Restore README and NEWS building for building from
+ GIT
+
+ * RELEASE.html: 2.0.8
+
+ * ChangeLog, ChangeLog.12, Makefile.am:
+ Added ChangeLog.12 for 2011
+
+ * docs/tmpl/section-uri.sgml: Updated uri tmpl
+
+ * src/snprintf.c: Prototypes for test functions to remove GCC
+ format warnings
+
+ * src/Makefile.am, src/snprintf.c: Add snprintf module simple unit
+ tests
+
+ * configure.ac: Set CPPFLAGS temporarily before libxml and libxslt
+ tests
+
+ * configure.ac: Make stripping -O flags (for maintainer) work
+ unless --enable-release
+
+ * configure.ac: --enable-debug no longer adds -g to CFLAGS
+
+2012-06-07 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_lexer.l, src/turtle_parser.y: Remove fatal errors
+ when a Turtle qname cannot be found
+
+ (turtle_lexer_error): Renamed from turtle_lexer_fatal_error and
+ takes a log level and now is in varargs format.
+
+ {QNAME}: Call turtle_lexer_error with a regular error log level
+ and provide user level information on the qname that failed.
+ Updated other calls to turtle_lexer_fatal error.
+
+ (turtle_syntax_error): Call raptor_parser_log_error_varargs().
+ Fixes Issue#0000507
+ http://bugs.librdf.org/mantis/view.php?id=507
+
+ * src/raptor_grddl.c, src/raptor_internal.h, src/raptor_parse.c:
+ Pass in log level to parser error helper
+
+ (raptor_parser_log_error_varargs): Renamed from
+ raptor_parser_error_varargs and pass on log level to
+ raptor_log_error_varargs
+
+ * librdfa/Makefile.am, librdfa/config.h: Add librdfa config.h to
+ dist
+
+ * src/raptor_term.c:
+ (raptor_new_term_from_literal): Bad cast for language len
+ truncation.
+
+ * utils/Makefile.am:
+ Improve building of rdfdiff
+
+ Declare rdfdiff as noinst_PROGRAMS instead of EXTRA_PROGRAMS, so
+ that it's always built (but not installed)
+
+ There is no need to mention rdfdiff in CLEANFILES, as Automake
+ already knows to clean it
+
+ * tests/grddl/Makefile.am, tests/json/Makefile.am,
+ tests/ntriples/Makefile.am, tests/rdfa/Makefile.am,
+ tests/rdfxml/Makefile.am, tests/trig/Makefile.am,
+ tests/turtle/Makefile.am:
+ Fixes for out of tree testing
+
+ Place the path to rapper in a variable RAPPER that can be
+ overridden by the user and ensure all instances have a $(EXEEXT)
+ suffix.
+
+ Use $(RAPPER) instead of the path to same in target bodies.
+
+ Place the path to rdfdiff in a variable RDFDIFF that can be
+ overridden by the user.
+
+ Use $(RDFDIFF) instead of the path to same in target bodies
+
+ * tests/feeds/Makefile.am: Fixes for feeds testing for out of tree
+ builds and portability
+
+ Do not use a variable containing a list of filenames both in a
+ target's dependencies and in the target body, at least outside of
+ maintainer mode. Make on Solaris 8 has a funny idea of how to
+ implement VPATH; it modifies the value of the variable by
+ prefixing the srcdir path to each filename therein, and this
+ breaks our rule code.
+
+ Remove the use of $? as this is not well-supported outside of GNU
+ Make and the semantics of it are not needed or wanted.
+
+ Adjust check-validate-atom target to look for input fields in
+ either builddir or srcdir since some are generated and some are
+ source.
+
+ * tests/feeds/Makefile.am: TRANG in a variable and add docs ptr
+
+ * src/Makefile.am:
+ Fixes for out of tree builds of library
+
+ Declare the turtle lex/yacc sources as BUILT_SOURCES, to take
+ advantage of Automake semantics for these.
+
+ Remove LEX and YACC variables, as these are already handled
+ automagically.
+
+ Replaced all instances of $(srcdir)/.. with $(top_srcdir)
+
+ Added some guard logic to the turtle_lexer.c rule so that it
+ doesn't erroneously generate the target file.
+
+ Added dummy turtle_lexer.h and turtle_parser.h rules to satisfy
+ dependencies
+
+ Fixed a typo in the raptor_parse_test rule
+
+ * docs/Makefile.am:
+ Fixes for out of tree builds of docs
+
+ Removed $(builddir)/ from target files since that is where they
+ already are.
+
+ raptor2.h is a file generated by config.status, so it always lives
+ in $(builddir), not $(srcdir)
+
+ Replaced all instances of $(srcdir)/.. with $(top_srcdir)
+
+ Added "dist-hook-local: docs" so that the docs are generated
+ during a "make dist" if they haven't been generated already
+ (otherwise "make dist" fails when they can't be found)
+
+ * configure.ac: Quote testing $use_memory_signing
+
+ * configure.ac:
+ Make all AC_ARG_WITH(blah) options handle --without-blah correctly
+
+ Now these forms can be used
+ --with-foo - enable feature
+ --without-foo - disable feature
+ --with-foo=blah - enable and give a value
+ --with-foo= - (default action) enable and search for value
+ (not given) - (default action) enable and search for value
+ for --with-xml2-config, --with-xslt-config, --with-curl-config,
+ --with-icu-config and --with-libwww-config where 'no' can be used
+ to disable it and prevent automatic searches for the config script
+ in the PATH.
+
+ * configure.ac:
+ Fix some configure portability issues
+
+ Fixed a typo in the STRCASECMP conditional
+
+ Set CPPFLAGS whether or not the check for xsltSaveResultToString
+ succeeds, because AC_CHECK_HEADERS() depends on this and the
+ result of the header check should not depend on the result of the
+ lib check.
+
+ Put -DRAPTOR_DEBUG and -DMAINTAINER_MODE into the config header
+ instead of CPPFLAGS. This prevents the flags from potentially
+ being passed to "make distcheck" builds, where they can cause
+ trouble (e.g. absence of git-version.h header)
+
+ Removed -g from maintainer CPPFLAGS since it does not belong there
+ and add to CFLAGS when --enable-debug is given.
+
+ * Makefile.am:
+ Fix README and NEWS building - only for maintainer
+
+ Generate NEWS in $(srcdir) as automake won't look for it in
+ $(builddir)
+
+ Remove not needed dist-hook target since README and NEWS are
+ copied in by the standard 'make dist' mechanism.
+
+ * autogen.sh: Support NOCONFIGURE variable, like Lib{XML2,XSLT}
+
+2012-06-06 Dave Beckett <dave@dajobe.org>
+
+ * src/snprintf.c: Portability improvements to vsnprintf code and
+ macros
+
+ (vsnprintf_check_is_c99): Initialize len to -1 when the variable
+ is declared instead of in the macro to remove redundancy.
+
+ (vsnprintf_is_c99): Check that len < size before looking at
+ tmp_buffer[len] otherwise we may be looking past the buffer size.
+
+ (macro VSNPRINTF_NOT_C99_BLOCK): free tmp_buffer when breaking out
+ of the while(1) loop. set len to a non-negative value in the
+ buffer != NULL case (raptor_vsnprintf2): Initialize len to -1 here
+ instead of in the VSNPRINTF_NOT_C99_BLOCK() macro. Return -1 if
+ format is NULL.
+
+ (raptor_vasprintf): Copy var args to re-use them when calling
+ raptor_vsnprintf2()
+
+ * configure.ac: Make configure vsnprintf() check more
+ comprehensive
+
+ - Test program also needs <stdio.h> and (now) <stdlib.h>
+ - Declare is_c99() function as static to avoid "no previous
+ declaration" warning from GCC's -Wmissing-declarations
+ - Improved test to invoke vsnprintf(NULL, 0, ...) because on Solaris
+ 8, the function returns -1 in this case but works normally otherwise
+ - Declare main(void) instead of main(int argc, char* argv) to avoid
+ "unused parameter" warnings
+ - Make test program return 0 if the test is successful,
+ as otherwise a false-positive result is possible (note that
+ AC_TRY_RUN() interprets failure to compile/link the program, etc.
+ the same as a non-zero program exit status)
+ - Make the test program return an exit status indicative of the
+ failure mode: 1 = non-NULL case fails, 10 = NULL case fails, 11
+ = both fail
+ - Use proper m4 quoting in modified code
+
+ * src/turtle_common.h: struct raptor_turtle_parser_s: trig field
+ is now int (compiler bugs)
+
+ * src/parsedate.y:
+ Include raptor headers here for CAST macros
+
+2012-05-23 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/rdfa.c:
+ (start_element): Start a raptor namespace for RDFa 1.1 @prefix
+
+2012-05-23 Lauri Aalto <laalto@iki.fi>
+
+ * src/snprintf.c:
+ (raptor_vsnprintf2): Fix uninitialized variable problems in non-c99
+ variant. Thanks to John Emmas for reporting.
+
+ - Compute len internally using int, not size_t as standard
+ vsnprintf() returns ints anyway. This fixes for negative value
+ comparison. Cast from size_t to int required for strlen() return
+ value.
+ - Initialize len earlier
+ - Use passed in size if a buffer is given
+
+2012-05-22 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: Use #ifdef in parsedate code fragment
+
+2012-05-21 Dave Beckett <dave@dajobe.org>
+
+ * src/win32_raptor_config.h.in: win32 config
+ RAPTOR_VERSION_DECIMAL renamed from RAPTOR_VERSION
+
+ * src/turtle_parser.y:
+ (main): Store fread result in a size_t
+
+ * utils/rdfdiff.c: Fixed reference leak of blank->owner
+
+ * utils/rdfdiff.c: Add raptor internal macros when building
+ without RAPTOR_INTERNAL
+
+ * utils/rapper.c, utils/rdfdiff.c: Need <io.h> on Windows for
+ _access()
+
+ * src/turtle_lexer.l: Removed const qualifier from
+ turtle_lexer_oom_text[]
+
+ Fixes warning when passed as a non-const function argument
+
+ * src/turtle_parser.y:
+ (turtle_parse): Added casts to quell type-compatibility warnings
+
+ * src/strcasecmp.c: Removed needless <stdio.h> #include and main()
+ prototype
+
+ (assert_strcasecmp): Test raptor_strcasecmp(), not
+ whatever strcasecmp() resolves to
+
+ * src/raptor_xml.c: Changed quote to a char for better type
+ compatibility
+
+ * src/raptor_uri.c:
+ URI test build fixes
+
+ Removed redundant WIN32_URI_TEST construct
+
+ Added STANDALONE cpp conditional around library functions
+
+ * src/raptor_term.c:
+ (raptor_new_term_from_literal): size_t and char casts.
+
+ * src/raptor_serialize_rss.c: Fix reference leaks for rss tag soup
+ parser.
+
+ (raptor_rss10_emit_rdfxml_item_triples): Don't make a copy of
+ base_uri to pass to raptor_serializer_start_to_iostream(), because
+ this function already makes its own copy
+
+ (raptor_rss10_ensure_atom_feed_valid): Use time() instead of
+ gettimeofday() with struct timeval when HAVE_GETTIMEOFDAY is not
+ defined.
+
+ (raptor_rss10_emit_item): Moved the "atom:summary" short-circuit
+ up to prevent a potential memory leak ("predicate")
+
+ (raptor_rss10_serialize_end): Don't leak entry_uri
+
+ * src/raptor_rdfxml.c: Fixed some rdfxml parser memory leaks /
+ double frees
+
+ (raptor_rdfxml_start_element_grammar): Fixed a memory leak
+
+ (raptor_rdfxml_end_element_grammar): Fixed a double-free() by
+ setting a pointer to NULL
+
+ * src/raptor_rdfxml.c: Broaden range of RDF/XML entity recognizing
+ heuristic
+
+ (raptor_rdfxml_parse_recognise_syntax): Removed angle brackets
+ from the HAS_RDF_ENTITY* strings to allow recognition of documents
+ produced by Stanford's Protege software (and possibly others)
+
+ * src/raptor_rdfxml.c:
+ (raptor_rdfxml_parse_terminate): Fixed leaks when freeing
+ rdf_xml_parser
+
+ * src/raptor_log.c: Guard against a buffer underrun
+
+ * src/raptor_iostream.c: Change raptor_iostream offset type to
+ size_t
+
+ (raptor_iostream_tell): Cast it (BAD) to "unsigned long" here.
+ FIXME: Needs a new iostream API method that returns the full
+ offset as a size_t
+
+ * src/raptor_internal.h: Quell cpp warnings for undefined symbols
+
+ * src/raptor_general.c: Use RAPTOR_VERSION_STRING for
+ raptor_version_string
+
+ * src/parsedate.y: Quell cpp warnings for undefined symbols
+
+ (LookupWord): Use a cast to assign a size_t to an int
+
+2012-05-17 Dave Beckett <dave@dajobe.org>
+
+ * tests/rdfa/0304.out, tests/rdfa/0304.xml,
+ tests/rdfa/Makefile.am: Add approved test 0304 (SVG) - failing
+
+ * tests/rdfa/Makefile.am: 0294.xml now passes
+
+ * librdfa/curie.c: Do not match the 'xml' prefix in raptor
+
+ * tests/rdfa/Makefile.am: Remove unused unapproved test framework
+
+ * utils/rapper.1: typo
+
+2012-05-16 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/config.h, librdfa/context.c, librdfa/curie.c,
+ librdfa/iri.c, librdfa/language.c, librdfa/lists.c,
+ librdfa/rdfa.c, librdfa/rdfa.h, librdfa/rdfa_utils.c,
+ librdfa/rdfa_utils.h, librdfa/strtok_r.c, librdfa/strtok_r.h,
+ librdfa/subject.c, librdfa/triple.c, src/Makefile.am,
+ src/raptor_internal.h, src/raptor_librdfa.c,
+ tests/rdfa/Makefile.am: Update librdfa in raptor to latest GIT and
+ make it work for RDFa 1.0
+
+ Add RDFa parser version aliases rdfa10, rdfa11 and default to 1.1
+
+ Existing RDFa 1.0 tests pass ONLY IF RDFa 1.0 is forced with -i rdfa10
+
+ * tests/ntriples/bug-481.out: Add surrogate chars to bug 481
+ output
+
+ * tests/turtle/Makefile.am, tests/turtle/bad-15.ttl,
+ tests/turtle/bad-16.ttl: Add (currently) bad turtle forms of bnode
+ subjects
+
+ * tests/turtle/Makefile.am, tests/turtle/test-38.out,
+ tests/turtle/test-38.ttl: Turtle test 38 for reading/writing
+ UTF-16 surrogates
+
+ Test for Issue #0000505
+ http://bugs.librdf.org/mantis/view.php?id=505
+
+ * src/turtle_lexer.l: Do not report double errors for Turtle
+ string decoding problems.
+
+ * src/ntriples_parse.c, src/raptor_nfc_test.c, src/turtle_common.c:
+ Handle errors from raptor_unicode_utf8_string_put_char
+
+ (raptor_stringbuffer_append_turtle_string)
+ (raptor_string_python_write, raptor_ntriples_term): Store result
+ in int and only use it if positive.
+
+ Part of fix for Issue #0000505
+ http://bugs.librdf.org/mantis/view.php?id=505
+
+ * src/raptor_unicode.c:
+ Allow reading/writing U+D800 to U+DFFF (UTF-16 surrogates)
+
+ (raptor_unicode_utf8_string_put_char)
+ (raptor_unicode_utf8_string_get_char): Should be ok to pass
+ through. Leaving the BOMs as forbidden - definitely not UTF-8
+
+ Part of fix for Issue #0000505
+ http://bugs.librdf.org/mantis/view.php?id=505
+
+ * tests/rdfa/0001.out, tests/rdfa/0001.xhtml, tests/rdfa/0001.xml,
+ tests/rdfa/0006.out, tests/rdfa/0006.xhtml, tests/rdfa/0006.xml,
+ tests/rdfa/0007.out, tests/rdfa/0007.xhtml, tests/rdfa/0007.xml,
+ tests/rdfa/0008.out, tests/rdfa/0008.xhtml, tests/rdfa/0008.xml,
+ tests/rdfa/0009.xhtml, tests/rdfa/0009.xml, tests/rdfa/0010.xhtml,
+ tests/rdfa/0010.xml, tests/rdfa/0011.out, tests/rdfa/0011.xhtml,
+ tests/rdfa/0012.xhtml, tests/rdfa/0012.xml, tests/rdfa/0013.xhtml,
+ tests/rdfa/0013.xml, tests/rdfa/0014.xhtml, tests/rdfa/0014.xml,
+ tests/rdfa/0015.out, tests/rdfa/0015.xhtml, tests/rdfa/0015.xml,
+ tests/rdfa/0017.xhtml, tests/rdfa/0017.xml, tests/rdfa/0018.out,
+ tests/rdfa/0018.xhtml, tests/rdfa/0018.xml, tests/rdfa/0019.xhtml,
+ tests/rdfa/0019.xml, tests/rdfa/0020.out, tests/rdfa/0020.xhtml,
+ tests/rdfa/0020.xml, tests/rdfa/0021.out, tests/rdfa/0021.xhtml,
+ tests/rdfa/0021.xml, tests/rdfa/0023.out, tests/rdfa/0023.xhtml,
+ tests/rdfa/0023.xml, tests/rdfa/0025.out, tests/rdfa/0025.xhtml,
+ tests/rdfa/0025.xml, tests/rdfa/0026.xhtml, tests/rdfa/0026.xml,
+ tests/rdfa/0027.xhtml, tests/rdfa/0027.xml, tests/rdfa/0029.xhtml,
+ tests/rdfa/0029.xml, tests/rdfa/0030.out, tests/rdfa/0030.xhtml,
+ tests/rdfa/0030.xml, tests/rdfa/0031.out, tests/rdfa/0031.xhtml,
+ tests/rdfa/0031.xml, tests/rdfa/0032.out, tests/rdfa/0032.xhtml,
+ tests/rdfa/0032.xml, tests/rdfa/0033.out, tests/rdfa/0033.xhtml,
+ tests/rdfa/0033.xml, tests/rdfa/0034.xhtml, tests/rdfa/0034.xml,
+ tests/rdfa/0035.xhtml, tests/rdfa/0035.xml, tests/rdfa/0036.xhtml,
+ tests/rdfa/0036.xml, tests/rdfa/0037.xhtml, tests/rdfa/0037.xml,
+ tests/rdfa/0038.xhtml, tests/rdfa/0038.xml, tests/rdfa/0039.xhtml,
+ tests/rdfa/0039.xml, tests/rdfa/0040.xhtml, tests/rdfa/0040.xml,
+ tests/rdfa/0041.xhtml, tests/rdfa/0041.xml, tests/rdfa/0042.xhtml,
+ tests/rdfa/0042.xml, tests/rdfa/0046.xhtml, tests/rdfa/0046.xml,
+ tests/rdfa/0047.xhtml, tests/rdfa/0047.xml, tests/rdfa/0048.xhtml,
+ tests/rdfa/0048.xml, tests/rdfa/0049.xhtml, tests/rdfa/0049.xml,
+ tests/rdfa/0050.xhtml, tests/rdfa/0050.xml, tests/rdfa/0051.out,
+ tests/rdfa/0051.xhtml, tests/rdfa/0051.xml, tests/rdfa/0052.xhtml,
+ tests/rdfa/0052.xml, tests/rdfa/0053.xhtml, tests/rdfa/0053.xml,
+ tests/rdfa/0054.out, tests/rdfa/0054.xhtml, tests/rdfa/0054.xml,
+ tests/rdfa/0055.out, tests/rdfa/0055.xhtml, tests/rdfa/0055.xml,
+ tests/rdfa/0056.xhtml, tests/rdfa/0056.xml, tests/rdfa/0057.xhtml,
+ tests/rdfa/0057.xml, tests/rdfa/0058.xhtml, tests/rdfa/0058.xml,
+ tests/rdfa/0059.out, tests/rdfa/0059.xhtml, tests/rdfa/0059.xml,
+ tests/rdfa/0060.xhtml, tests/rdfa/0060.xml, tests/rdfa/0061.out,
+ tests/rdfa/0061.xhtml, tests/rdfa/0061.xml, tests/rdfa/0062.out,
+ tests/rdfa/0062.xhtml, tests/rdfa/0062.xml, tests/rdfa/0063.out,
+ tests/rdfa/0063.xhtml, tests/rdfa/0063.xml, tests/rdfa/0064.out,
+ tests/rdfa/0064.xhtml, tests/rdfa/0064.xml, tests/rdfa/0065.out,
+ tests/rdfa/0065.xhtml, tests/rdfa/0065.xml, tests/rdfa/0066.out,
+ tests/rdfa/0066.xhtml, tests/rdfa/0066.xml, tests/rdfa/0067.out,
+ tests/rdfa/0067.xhtml, tests/rdfa/0067.xml, tests/rdfa/0068.out,
+ tests/rdfa/0068.xhtml, tests/rdfa/0068.xml, tests/rdfa/0069.out,
+ tests/rdfa/0069.xhtml, tests/rdfa/0069.xml, tests/rdfa/0070.out,
+ tests/rdfa/0070.xhtml, tests/rdfa/0070.xml, tests/rdfa/0071.out,
+ tests/rdfa/0071.xhtml, tests/rdfa/0071.xml, tests/rdfa/0072.xhtml,
+ tests/rdfa/0072.xml, tests/rdfa/0073.xhtml, tests/rdfa/0073.xml,
+ tests/rdfa/0074.xhtml, tests/rdfa/0074.xml, tests/rdfa/0075.xhtml,
+ tests/rdfa/0075.xml, tests/rdfa/0076.out, tests/rdfa/0076.xhtml,
+ tests/rdfa/0076.xml, tests/rdfa/0077.out, tests/rdfa/0077.xhtml,
+ tests/rdfa/0077.xml, tests/rdfa/0078.out, tests/rdfa/0078.xhtml,
+ tests/rdfa/0078.xml, tests/rdfa/0079.xhtml, tests/rdfa/0079.xml,
+ tests/rdfa/0080.xhtml, tests/rdfa/0080.xml, tests/rdfa/0081.xhtml,
+ tests/rdfa/0081.xml, tests/rdfa/0082.xhtml, tests/rdfa/0082.xml,
+ tests/rdfa/0083.xhtml, tests/rdfa/0083.xml, tests/rdfa/0084.xhtml,
+ tests/rdfa/0084.xml, tests/rdfa/0085.xhtml, tests/rdfa/0085.xml,
+ tests/rdfa/0086.out, tests/rdfa/0086.xhtml, tests/rdfa/0087.out,
+ tests/rdfa/0087.xhtml, tests/rdfa/0087.xml, tests/rdfa/0088.xhtml,
+ tests/rdfa/0088.xml, tests/rdfa/0089.xhtml, tests/rdfa/0089.xml,
+ tests/rdfa/0090.xhtml, tests/rdfa/0090.xml, tests/rdfa/0091.out,
+ tests/rdfa/0091.xhtml, tests/rdfa/0091.xml, tests/rdfa/0092.out,
+ tests/rdfa/0092.xhtml, tests/rdfa/0093.out, tests/rdfa/0093.xhtml,
+ tests/rdfa/0093.xml, tests/rdfa/0094.out, tests/rdfa/0094.xhtml,
+ tests/rdfa/0099.xhtml, tests/rdfa/0099.xml, tests/rdfa/0100.out,
+ tests/rdfa/0100.xhtml, tests/rdfa/0101.out, tests/rdfa/0101.xhtml,
+ tests/rdfa/0102.out, tests/rdfa/0102.xhtml, tests/rdfa/0103.out,
+ tests/rdfa/0103.xhtml, tests/rdfa/0104.out, tests/rdfa/0104.xhtml,
+ tests/rdfa/0104.xml, tests/rdfa/0105.out, tests/rdfa/0105.xhtml,
+ tests/rdfa/0106.out, tests/rdfa/0106.xhtml, tests/rdfa/0106.xml,
+ tests/rdfa/0107.xhtml, tests/rdfa/0107.xml, tests/rdfa/0108.xhtml,
+ tests/rdfa/0108.xml, tests/rdfa/0109.out, tests/rdfa/0109.xhtml,
+ tests/rdfa/0109.xml, tests/rdfa/0110.out, tests/rdfa/0110.xhtml,
+ tests/rdfa/0110.xml, tests/rdfa/0111.out, tests/rdfa/0111.xhtml,
+ tests/rdfa/0111.xml, tests/rdfa/0112.xhtml, tests/rdfa/0112.xml,
+ tests/rdfa/0113.out, tests/rdfa/0113.xml, tests/rdfa/0114.out,
+ tests/rdfa/0114.xml, tests/rdfa/0115.out, tests/rdfa/0115.xml,
+ tests/rdfa/0117.out, tests/rdfa/0117.xml, tests/rdfa/0118.out,
+ tests/rdfa/0118.xml, tests/rdfa/0119.out, tests/rdfa/0119.xml,
+ tests/rdfa/0120.out, tests/rdfa/0120.xml, tests/rdfa/0121.out,
+ tests/rdfa/0121.xml, tests/rdfa/0122.out, tests/rdfa/0122.xml,
+ tests/rdfa/0126.out, tests/rdfa/0126.xml, tests/rdfa/0131.out,
+ tests/rdfa/0131.xml, tests/rdfa/0134.out, tests/rdfa/0134.xml,
+ tests/rdfa/0140.out, tests/rdfa/0140.xml, tests/rdfa/0147.out,
+ tests/rdfa/0147.xml, tests/rdfa/0172.out, tests/rdfa/0172.xhtml,
+ tests/rdfa/0172.xml, tests/rdfa/0173.out, tests/rdfa/0173.xhtml,
+ tests/rdfa/0173.xml, tests/rdfa/0174.out, tests/rdfa/0174.xhtml,
+ tests/rdfa/0174.xml, tests/rdfa/0181.out, tests/rdfa/0181.xml,
+ tests/rdfa/0197.out, tests/rdfa/0197.xml, tests/rdfa/0201.out,
+ tests/rdfa/0201.xml, tests/rdfa/0202.out, tests/rdfa/0202.xml,
+ tests/rdfa/0203.out, tests/rdfa/0203.xml, tests/rdfa/0207.out,
+ tests/rdfa/0207.xml, tests/rdfa/0209.out, tests/rdfa/0209.xml,
+ tests/rdfa/0210.out, tests/rdfa/0210.xml, tests/rdfa/0211.out,
+ tests/rdfa/0211.xml, tests/rdfa/0212.out, tests/rdfa/0212.xml,
+ tests/rdfa/0215.out, tests/rdfa/0215.xml, tests/rdfa/0258.out,
+ tests/rdfa/0258.xml, tests/rdfa/0262.out, tests/rdfa/0262.xml,
+ tests/rdfa/0291.out, tests/rdfa/0291.xml, tests/rdfa/0292.out,
+ tests/rdfa/0292.xml, tests/rdfa/0294.out, tests/rdfa/0294.xml,
+ tests/rdfa/1001.out, tests/rdfa/1001.xhtml, tests/rdfa/Makefile.am:
+ Update RDFa 1.0 tests
+ - Rename test files to .xml so expected result urls are correct
+ - Just approved tests
+ - Turned sparql queries into expected triple output
+ - Hand edited all negative tests to expect 0 triples
+ - Removed duplicate xmlns from generated xml
+ - 0201.xml 0202.xml 0203.xml are SVG not XHTML; altered expected
+ output triples
+
+ * librdfa/curie.c:
+ (rdfa_resolve_uri): Pulled from newer RDFA git
+
+ * librdfa/rdfa.c:
+ (rdfa_init_base): Calculate buffer expansion correctly
+
+ Pulled from newer RDFA git
+
+ * tests/rdfa/Makefile.am: check-rdfa: Allow rapper result
+ warning (status 2) as success
+
+ * src/raptor_librdfa.c: Do not generate blank node predicate RDFa
+ triples
+
+ (raptor_librdfa_generate_statement): Return warning instead of
+ generating blank node predicate RDFa triples. Maybe should be
+ silent?
+
+ * configure.ac: Add strtok_r check for upcoming librdfa RDFA 1.1
+
+2012-05-15 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_qname.c: doc
+
+2012-05-14 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_libxml.c:
+ (raptor_libxml_resolveEntity): Init entity_input [clang]
+
+2012-04-13 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_www_curl.c:
+ (raptor_www_curl_header_callback): Do not send CRNL to URI
+ constructor.
+
+ * src/raptor_www_curl.c: Interpret Content-Location header as
+ absolute or relative URI
+
+ (raptor_www_curl_header_callback): Use
+ raptor_new_uri_relative_to_base_counted to construct URI relative
+ to current base.
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor2-sections.txt,
+ src/raptor2.h.in, src/raptor_uri.c:
+ (raptor_new_uri_relative_to_base_counted): Added
+
+2012-03-30 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor2-sections.txt,
+ docs/tmpl/section-triples.sgml, docs/tmpl/section-uri.sgml: Update
+ api docs for turtle write fns
+
+ * Merge pull request #3 from Anchakor/node_rw_turtle_string
+ turtle uri and term writing/tostring functions
+
+2012-03-29 Jiří Procházka <ojirio@gmail.com>
+
+ * src/raptor2.h.in, src/raptor_serialize_turtle.c:
+ (raptor_uri_to_turtle_counted_string,
+ raptor_term_to_turtle_counted_string): add counted string
+ versions. style and docs changes
+
+ * Merge remote-tracking branch 'dajobe/master' into
+ node_rw_turtle_string
+
+2012-03-23 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor2-sections.txt, docs/tmpl/section-www.sgml: Add
+ raptor_www_set_ssl_verify_option to docs - missing 's' in sections
+
+ * RELEASE.html:
+ RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES words
+
+2012-03-22 Dave Beckett <dave@dajobe.org>
+
+ * NEWS.html, RELEASE.html, configure.ac:
+ Bumped version to 2.0.8
+
+ * Snapshotted raptor2_2_0_7 for 2.0.7 release (GIT
+ a676f235309a59d4aa78eeffd2574ae5d341fcb0)
+
+2012-01-29 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/rdfa.c, src/raptor2.h.in, src/raptor_libxml.c,
+ src/raptor_option.c, src/raptor_rdfxml.c, src/raptor_rss.c,
+ src/raptor_turtle_writer.c: CVE-2012-0037
+
+ Enforce entity loading policy in raptor_libxml_resolveEntity and
+ raptor_libxml_getEntity by checking for file URIs and network
+ URIs.
+
+ Add RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES / loadExternalEntities
+ for turning on loading of XML external entity loading, disabled by
+ default.
+
+ This affects all the parsers that use SAX2: rdfxml, rdfa,
+ rss-tag-soup (and aliases).
+
+2012-03-15 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/rdfa.c: Pass on options NO_NET and NO_FILE to RDFA SAX2
+ object
+
+2012-03-11 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_general.c:
+ (raptor_world_default_generate_bnodeid_handler): size_t for
+ id_length.
+
+ * src/snprintf.c:
+ (raptor_format_integer): cast for comparing width to len
+
+ * INSTALL.html, configure.ac, src/Makefile.am,
+ src/raptor_internal.h, src/raptor_nfc.c, src/raptor_nfc.h,
+ src/raptor_nfc_data.c, src/raptor_nfc_icu.c, src/raptor_rdfxml.c,
+ src/raptor_unicode.c: Use ICU to check for Unicode NFC
+
+ This commit removes the built-in Raptor code for checking that
+ RDF/XML literals in Unicode NFC. This is now provided by the ICU
+ library which is only linked in if configure is given the
+ --with-icu-config=PATH argument.
+
+ Advantages:
+ 1. Removes a large compiled-in static dataset in the library and
+ makes raptor smaller.
+ 2. Uses a library that is kept up to date for new Unicode
+ versions.
+ 3. Should make RDF/XML parsing faster since it does not need to
+ check for NFC on every literal.
+
+ Disadvantages:
+ 1. Removes an existing (but likely rarely used) feature
+
+ * src/raptor_nfc_test.c:
+ Run all tests, fix file decoding
+
+ * src/raptor_nfc_test.c: size_t
+
+2012-02-20 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_internal.h, src/snprintf.c:
+ (raptor_format_integer): Return size_t for this internal function.
+
+2012-02-17 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-option.sgml, docs/tmpl/section-sax2.sgml,
+ docs/tmpl/section-uri.sgml: Update tmpls
+
+2012-02-13 Lauri Aalto <laalto@iki.fi>
+
+ * autogen.sh:
+ require automake 1.11.2+ for -Wextra-portability
+
+2012-02-08 Dave Beckett <dave@dajobe.org>
+
+ * build/.gitignore, configure.ac: Add automake option
+ -Wextra-portability and AM_PROG_AR to make it happy
+
+2012-02-04 Dave Beckett <dave@dajobe.org>
+
+ * utils/rapper.c:
+ Put raptor_option_get_count() out of the loops
+
+ * src/raptor_parse.c:
+ (raptor_new_parser): Set default strictness
+
+ * docs/raptor2-sections.txt: docs
+
+ * ChangeLog, RELEASE.html: 2.0.7
+
+ * src/raptor_option.c, src/raptor_parse.c, src/raptor_serialize.c,
+ src/raptor_xml_writer.c:
+ (raptor_object_options_init): Move default option settings here
+
+ * RELEASE.html, docs/raptor-1-to-2-map.tsv, src/raptor2.h.in,
+ src/raptor_internal.h, src/raptor_option.c, src/raptor_parse.c,
+ src/raptor_turtle_writer.c, src/raptor_www.c,
+ src/raptor_www_curl.c: Add options for controlling SSL certificate
+ verifying
+
+ Add options RAPTOR_OPTION_WWW_SSL_VERIFY_PEER for controlling
+ verifying an SSL peer. Takes an integer value: non-0 to verify
+ peer SSL certificate (default 1)
+
+ Add option RAPTOR_OPTION_WWW_SSL_VERIFY_HOST for controlling
+ verifying an SSL host. Takes an integer value: 0 none, 1 CN
+ match, 2 host match (default). Other values are ignored.
+
+ (raptor_www_set_ssl_verify_options): Added to set the verify
+ options on the raptor_www object.
+
+ Fixes Issue #0000469
+ http://bugs.librdf.org/mantis/view.php?id=469
+
+ * INSTALL.html, LICENSE.html, NEWS.html, README.html,
+ RELEASE.html, TODO.html, UPGRADING.html: 2011
+
+ * configure.ac: tidy xml parser message
+
+ * configure.ac, src/Makefile.am, src/raptor_expat.c,
+ src/raptor_internal.h, src/raptor_rdfxml.c, src/raptor_sax2.c:
+ Remove expat support
+
+ Update configure to properly let you build raptor without any XML
+ support either - it only needs it if a parser that requires XML is
+ configured.
+
+2012-02-01 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_sax2.c:
+ (raptor_sax2_check_load_uri_string): Failure returned
+
+ * src/raptor_uri.c: casts
+
+ * src/raptor_uri.c:
+ (raptor_new_uri_from_uri_or_file_string): Never free
+ uri_or_file_string
+
+ * src/raptor_uri.c: Make raptor_new_uri_from_uri_or_file_string
+ check for files first.
+
+ (raptor_new_uri_from_uri_or_file_string): If the arg is a file
+ that exists, use that as the path.
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor2-sections.txt,
+ src/raptor2.h.in, src/raptor_uri.c:
+ (raptor_uri_filename_exists): Added
+
+2012-02-01 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_sax2.c:
+ (raptor_sax2_parse_chunk): Return parse errors to caller.
+
+ Fixes part of Issue #0000488
+ http://bugs.librdf.org/mantis/view.php?id=488
+
+ * src/raptor_json.c:
+ (raptor_json_new_term_from_counted_string): RAPTOR_BAD_CAST for
+ shortening size_t -> int cast
+
+ * src/turtle_parser.y:
+ (turtle_parse,raptor_turtle_parse_chunk): Return parse error
+ status to caller
+
+ Fixes Issue #0000488
+ http://bugs.librdf.org/mantis/view.php?id=488
+
+2012-01-30 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor2-sections.txt,
+ src/raptor2.h.in, src/raptor_sax2.c, src/raptor_uri.c: More file
+ URI updates
+
+ (raptor_new_uri_from_uri_or_file_string): Added new constructor
+
+ (raptor_uri_uri_string_to_counted_filename): Removed
+
+ (raptor_sax2_check_load_uri_string): Use
+ raptor_new_uri_from_uri_or_file_string() and just check for file:
+
+ (raptor_uri_uri_string_is_file_uri): Just check for file:
+
+ (raptor_uri_file_exists): Check if URI is a file URI and the file
+ exists.
+
+ * src/raptor_internal.h, src/raptor_sax2.c, utils/rapper.c:
+ Consolidate URI policy checks and call SAX2 uri filter
+
+ (raptor_sax2_check_load_uri_string): add and use for policy
+ checks, making file URIs from canonical filename and calling URI
+ filter callback on SAX2.
+
+ rapper (rapper_uri_trace): Use trace word since it is not just
+ processing
+
+2012-01-29 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor2-sections.txt,
+ src/raptor2.h.in, src/raptor_internal.h, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_sax2.c:
+ (raptor_sax2_set_uri_filter): Added to filter for SAX2
+
+ * src/raptor_www.c:
+ (raptor_www_fetch): Return status code from URI filter
+
+ * docs/raptor-1-to-2-map.tsv, src/raptor2.h.in,
+ src/raptor_option.c, src/raptor_rdfxml.c, src/raptor_rss.c,
+ src/raptor_turtle_writer.c: Add RAPTOR_OPTION_NO_FILE to deny
+ internal file requests
+
+ * src/raptor_json.c:
+ Handle size changing between YAJL V1 and V2
+
+ Use RAPTOR_YAJL_LEN_TYPE macro to deal with the arg type change
+
+2012-01-28 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_uri.c: code cleanup
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor2-sections.txt,
+ src/raptor2.h.in, src/raptor_uri.c: Rename file uri string to
+ match convention
+
+ (raptor_uri_uri_string_to_counted_filename_fragment): Added to
+ return count lengths
+
+ (raptor_uri_uri_string_is_file_uri): Use
+ raptor_uri_uri_string_to_counted_filename() after a simple URI
+ test.
+
+ (raptor_uri_uri_string_to_filename): Renamed from
+ raptor_uri_uri_string_as_filename and use above.
+
+ (raptor_uri_uri_string_to_counted_filename): Added using above and
+ returning count.
+
+ * configure.ac, docs/raptor-1-to-2-map.tsv,
+ docs/raptor2-sections.txt, src/raptor2.h.in, src/raptor_uri.c:
+ raptor_uri_uri_string_as_filename
+
+ * src/raptor_internal.h, src/raptor_sax2.c: Add internal SAX2
+ enabled flag for enabling/disabling callbacks
diff --git a/ChangeLog.1 b/ChangeLog.1
new file mode 100644
index 0000000..9a3ec23
--- /dev/null
+++ b/ChangeLog.1
@@ -0,0 +1,57 @@
+2000-12-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c, rapier_parse.c, rapier.h, Makefile.am:
+ Snapshot 2000-12-15
+
+2000-12-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Added test files
+
+2000-12-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapier_parse.c (rapier_print_ns_name):
+ Only compile when debugging.
+ Put LIBRDF_DEBUG2 around some debugging statements.
+
+2000-11-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapier.h:
+ Changed some interfaces slightly.
+ Added defines when not linked with Redland.
+
+ * rdfdump.c:
+ Made work when compiled with Redland.
+ Added options via getopt/getopt_long and usage.
+
+ * rapier_parse.c:
+ Added general container support and callback.
+ Made work with Redland librdf_uri and concepts when used inside
+ Redland.
+ Tidied some function declarations.
+ Split some super-long functions into two - 1) xml parsing 2) rdf
+ grammar
+
+2000-11-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapier.h:
+ Changed some interfaces slightly.
+ Added defines when not linked with Redland.
+
+ * rdfdump.c:
+ Made work when compiled with Redland.
+ Added options via getopt/getopt_long and usage.
+
+ * rapier_parse.c:
+ Added general container support and callback.
+ Made work with Redland librdf_uri and concepts when used inside it.
+ Tidied some function declarations.
+ Split some super-long functions into two -
+ 1) xml parsing
+ 2) rdf grammar
+
+2000-11-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * acconfig.h, AUTHORS, autogen.sh, config.h.in, configure.in,
+ .cvsignore, INSTALL.html, LICENSE.html, Makefile.am, MPL.html,
+ NEWS.html, rapier.h, rapier_parse.c,
+ rdfdump.c, README.html: Initial import.
diff --git a/ChangeLog.10 b/ChangeLog.10
new file mode 100644
index 0000000..1829595
--- /dev/null
+++ b/ChangeLog.10
@@ -0,0 +1,1019 @@
+2009-11-29 Dave Beckett <dave@dajobe.org>
+
+ * Merge from raptor 1.4.20 release SVNr15728 to trunk
+
+2009-11-28 Dave Beckett <dave@dajobe.org>
+
+ * Merge RDFa changes from Raptor branch raptor1 (r15719)
+
+ * Snapshotted raptor_1_4_20 for 1.4.20 release (SVN 15727)
+
+ * tests/rdfa/0172.out, tests/rdfa/0172.xhtml, tests/rdfa/0173.out,
+ tests/rdfa/0173.xhtml, tests/rdfa/0174.out, tests/rdfa/0174.xhtml,
+ tests/rdfa/Makefile.am:
+ Added unapproved RDFa tests from librdfa upstream test suite:
+ 0172: empty datatype attribute
+ 0173: empty xml:lang attribute on plain literal
+ 0174: single character namespace prefixes
+
+ 0172 and 0173 test
+ Issue#0000306 http://bugs.librdf.org/mantis/view.php?id=306
+
+ 0174 tests
+ Issue#0000310 http://bugs.librdf.org/mantis/view.php?id=310
+
+ * librdfa/rdfa.c:
+ (start_element): For raptor, turn a NULL language to "" which is
+ what librdfa expects.
+
+ * librdfa/curie.c, librdfa/language.c, librdfa/rdfa.c,
+ librdfa/triple.c:
+ Apply librdfa GIT commits up to
+ 5823cb8bffe50fb1b46960f237f7274388cb5f93
+
+ commit 5823cb8bffe50fb1b46960f237f7274388cb5f93
+ Fixed @property CURIE processing unit tests to match code
+ updates.
+
+ commit a85d8e9e2e3d28452ad03d1ca64fdd98eed1c180
+ Fixed CURIE processing bug for TC 174.
+
+ The bug caused single-character prefixed CURIEs to be processed
+ incorrectly. Also fixed @property processing to not use reserved
+ words specified in a very early version of the RDFa spec. Fixed
+ a small bug related to processing CURIEs that have ':' as the
+ second character in the URI string.
+
+ commit f384b28bf916a2e0c7a7dbc99101a1a44c301965
+ Fixed plain literal bug uncovered by TC 172.
+
+ This bug caused plain literals to not be generated when
+ datatype="" was specified and when the content inside the element
+ contained XHTML child nodes.
+
+ * librdfa/language.c:
+ Apply librdfa GIT commit
+ 9960791ee4beca8e52e5d3a9766aba73d33f0063
+ Fixed bug that caused unreviewed TC 173 to partially fail.
+
+ The currently active language, specified via xml:lang, was not
+ being cleared when xml:lang="" was specified.
+
+ Related to Redland Issue#0000306
+ http://bugs.librdf.org/mantis/view.php?id=306
+
+2009-11-25 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/rdfa.c, src/raptor_abbrev.c: Casts for C++
+
+2009-11-25 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_abbrev.c:
+ (raptor_abbrev_subject_lookup): Free node if
+ raptor_new_abbrev_subject() ownership transfer did not succeed.
+
+ * src/raptor_abbrev.c:
+ (raptor_abbrev_subject_find): Check for failures.
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_emit): Free iterators on before returning an error.
+
+ * src/raptor_abbrev.c, src/raptor_avltree.c:
+ (raptor_avltree_sprout): Always take ownership of passed in node
+ data - free it if malloc fails. Make sure free_fn is not null
+ before calling it.
+
+ (raptor_abbrev_node_lookup,raptor_abbrev_subject_add_property):
+ raptor_avltree_add() now always takes ownership of added nodes.
+
+ * src/raptor_internal.h, src/raptor_serialize_rdfxmla.c:
+ fixed indent tabs -> spaces
+
+ * src/raptor_abbrev.c:
+ (raptor_abbrev_subject_invalidate): Return value expected
+
+2009-11-24 Dave Beckett <dave@dajobe.org>
+
+ * many files: Merge from raptor branch raptor1
+
+2009-11-23 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c,
+ tests/feeds/test01-result.ttl, tests/feeds/test02-result.ttl,
+ tests/feeds/test03-result.ttl, tests/feeds/test04-result.ttl,
+ tests/rdfxml/Makefile.am, tests/turtle/Makefile.am: Apply SVN
+ r15690 to raptor head
+
+2009-11-15 Dave Beckett <dave@dajobe.org>
+
+ * utils/rdfdiff.c: Apply SVN 15667 to raptor trunk
+
+2009-10-10 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c:
+ (raptor_grddl_run_grddl_transform_uri): Fix XML parser context
+ resource leak if raptor_grddl_fetch_uri fails.
+
+ * src/raptor_grddl.c:
+ (raptor_grddl_parse_chunk): Save and restore error handlers
+ properly - restore loop was broken. Remove memcpy for clarity in
+ copying.
+
+2009-08-25 Dave Beckett <dave@dajobe.org>
+
+ * autogen.sh: Update common autogen.sh
+
+2009-08-21 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_www.c:
+ (raptor_www_set_http_cache_control): Avoid dangling pointers
+
+2009-08-03 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_internal.h: Fixed comment
+
+2009-07-27 Dave Beckett <dave@dajobe.org>
+ * src/turtle_parser.y
+ (main): Terminate parser
+
+ * src/turtle_lexer.l
+ (main): Init world and namespaces so turtle lexing test does not
+ die.
+
+ * src/raptor_parse.c
+ (raptor_parse_file): Simplify, no need for O_LARGEFILES flag and
+ open/fdopen sequence.
+
+ * configure.ac:
+ Check for fcntl.h and AC_SYS_LARGEFILE to get large file checks
+
+ * src/raptor_parse.c:
+ (raptor_parse_file): Use open(2) and apply O_LARGEFILE option to
+ allow 32bit systems to read multi-gigabyte files.
+
+2009-07-23 Dave Beckett <dave@dajobe.org>
+
+ * Changelog entries above this are on BRANCH raptor1
+
+ * Create raptor 1 branch (SVN r15287)
+
+2009-07-19 Dave Beckett <dave@dajobe.org>
+
+ * Tagged for raptor 1.4.19 (SVN r15280)
+
+ * Snapshotted raptor_1_4_19 for 1.4.19 release (SVN 15279)
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_item): Handle C++'s picky casting between enum
+ types - that are really integers - to ints.
+
+ * src/raptor_rss_common.c: static data raptor_rss_fields_info:
+ semantic data errors found by C++'s more strict aliasing.
+ - Fix author item class.
+ - Set URI flag value for atom:schema and atom:href
+
+ * src/raptor_namespace.c:
+ (raptor_namespaces_init_v2, raptor_namespace_stack_to_array):
+ Casts for C++ in returns from RAPTOR_CALLOC for namespace stacks
+
+ * src/raptor_grddl.c:
+ (raptor_grddl_run_grddl_transform_doc): Cast for C++ for arg to
+ xsltSetCtxtSecurityPrefs.
+
+ * src/raptor_rfc2396.c:
+ (raptor_uri_resolve_uri_reference): Use memmove for overlapping
+ copy, not memcpy. [valgrind]
+
+ * src/raptor_serialize_json.c: raptor_json_context - use
+ raptor_statement_v2 for last statement.
+ (raptor_json_serialize_avltree_visit): Make V1 statements for the
+ stored V2 statements.
+ Improve fatal error messages.
+
+ * src/raptor_statement.c:
+ (raptor_free_statement): Restore actually freeing statement memory
+ - resource leak.
+
+ * configure.ac: libtool version change.
+ was: current 2 revision 0 age 1
+ rules steps:
+ 3. source code changed: revision++ = 3
+ 4. interfaces added and changed: current++ = 3, revision = 0
+ 5. interfaces added: age++ = 2
+ 6. interfaces removed: no
+ now: current 3 revision 0 age 2
+
+ * docs/libraptor.3: 1.4.19 changes
+
+ * src/raptor_turtle_writer.c:
+ (raptor_turtle_writer_literal): More silly games to prevent stupid
+ gcc warning: ignoring return value of 'strtol', declared with
+ attribute warn_unused_result so use the value and then discard it
+ in a stupid expression. Ditto strtod.
+
+ * src/raptor_uri.c:
+ (raptor_uri_print_v2): Silly games to prevent stupid gcc warning:
+ ignoring return value of 'fwrite', declared with attribute
+ warn_unused_result but right now there is nowhere to return the
+ error too.
+
+ * src/raptor_rss.c:
+ (raptor_rss_uplift_fields): Comment out variables used only in
+ debugging.
+
+ * src/raptor_turtle_writer.c:
+ (raptor_turtle_writer_literal): Ignore unused return values from
+ strtol and strtod used for checking.
+
+ * utils/rapper.c: Revert r15252 and reapply r14951 on rapper to
+ use experimental V2 APIs again
+
+ * configure.ac, src/Makefile.am, src/raptor_internal.h,
+ src/raptor_v2.h: Remove raptor_v2.h again - no need to dup this
+ for an internal build. Instead use -DRAPTOR_V2_EXPERIMENTAL when
+ building
+
+ * src/Makefile.am, src/raptor.h, src/raptor_internal.h,
+ src/raptor_v2.h: Added raptor_v2.h again - internal only and put
+ scary warning about V2 things into raptor.h
+
+ * src/raptor.h: use -DRAPTOR_V2_EXPERIMENTAL to enable the V2
+ structs and functions
+
+ * src/Makefile.am: Remove raptor_v2.h - bad idea for now
+
+ * src/Makefile.am, src/raptor.h, src/raptor_internal.h,
+ src/raptor_v2.h: Move public V2 structs and prototypes to internal
+ raptor_v2.h
+
+ * utils/rapper.c: Revert r14951 on rapper to use V1 APIs only for now
+
+ * COPYING, COPYING.LIB: Add specific versions of GPL (2) and
+ LGPL (2.1) to source control
+
+2009-07-16 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-docs.xml, docs/raptor-sections.txt,
+ docs/tmpl/section-general.sgml, docs/tmpl/section-parser.sgml,
+ docs/tmpl/section-serializer.sgml, docs/tmpl/section-world.sgml:
+ Add new functions. Add section world for init/cleanup and V2
+ world stuff
+
+ * src/raptor.h, src/raptor_grddl.c, src/raptor_sequence.c:
+ (raptor_new_sequence_v2): Renamed from
+ raptor_new_sequence_with_handler_context
+
+ * tests/rdfxml: Ignore automake outputs
+
+ * tests/ntriples: Ignore automake outputs
+
+ * tests/feeds: Ignore ttl outputs
+
+ * tests/feeds/Makefile.am: (check-serialize-atom): Make test use
+ generated file from build dir.
+
+ * utils/rapper.c: calloc another feature_value
+
+ * tests/feeds/Makefile.am: set result=1 on failures
+
+ * utils/rapper.c: calloc feature_value so that fields are
+ initialised to 0/NULL
+
+ * Raptor passes 'make check' test suite as of SVN r15234
+
+ * src/raptor_serialize_rss.c: Guess whether <atom:summary> on
+ input is xml or not based on if it starts with <
+
+ * tests/feeds/test02-result.atom, tests/feeds/test02-result.ttl,
+ tests/feeds/test02.rdf: Add <div>...</div> once to descs
+
+ * tests/feeds/test02.rdf: use <div>...</div> in descriptions
+
+ * tests/feeds/test03-result.atom: fix relative atom:link @href in
+ expected output
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_atom_feed): Output relative URIs for
+ <atom:link @href>
+
+ * src/raptor_serialize_rss.c: Extra/tidy debug messages
+
+2009-07-15 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_statement, raptor_rss10_build_items): Use
+ raptor_rss_item_set_uri to always assign item identifier and uri
+ fields correctly.
+
+ * src/raptor_rss.h, src/raptor_rss_common.c:
+ (raptor_rss_item_set_uri): Added to set the item identifier fields
+ plus the item->uri field correctly.
+
+2009-07-13 Dave Beckett <dave@dajobe.org>
+
+ * autogen.sh: Add SHAVE support - disabled by default and enabled
+ for maintainers.
+ libtool V2 needed
+ Add -Wall to automake args
+ Reorder args to remove dups
+ Find config_aux_dir and config_macro_dir and use them for copying in
+ config.{sub,guess} and adjusting aclocal args respectively.
+
+2009-06-21 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_move_statements, raptor_rss10_store_statement): When
+ mapping fields rss to atom, do not copy into a field that has a
+ value already.
+
+2009-06-13 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_parse.c:
+ (raptor_get_name): Use factory method if present.
+
+ * src/raptor_guess.c:
+ (raptor_guess_guess_get_name): Implement get_name by passing it on
+ to internal guessed parser.
+ (raptor_guess_parser_register_factory): Register get_name
+
+ * src/raptor_internal.h: struct raptor_parser_factory_s gains
+ get_name method
+
+ * src/raptor_guess.c:
+ (raptor_guess_parse_chunk): docs
+
+ * src/raptor_grddl.c:
+ (raptor_grddl_run_grddl_transform_doc): Init userCtxt *after*
+ sheet is defined as not NULL. GRDDL transforms now work again.
+
+ * utils/rapper.c:
+ (main): If counting, do not use a serializer at all.
+
+2009-05-16 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c: autodocs
+
+ * src/raptor_rss.c:
+ (raptor_rss_insert_rss_link): Added to add rss:link from atom:id
+ or <link rel=self>
+ (raptor_rss_insert_identifiers): Call above for channel and items.
+
+ * tests/feeds/test04-result.ttl: items and rss:links point to url
+ not tag: uri
+
+ * tests/feeds/test05-result.ttl: Moved dc:date to top
+
+ * tests/feeds/test02-result.atom, tests/feeds/test03-result.atom:
+ Added more atom:entrymap values
+
+2009-05-12 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c:
+ (raptor_rss_insert_identifiers): Add an rss:link with
+ /atom:link[@rel="self"]/@href string contents if not already
+ present.
+
+ * src/raptor_rss.c:
+ (raptor_rss_emit_block): Add resource parameter for the subject of
+ the triples to set. Do not try to play save/restore games with
+ the statement.subject
+ (raptor_rss_emit_item): Pass in item identifier to above.
+
+2009-05-11 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c:
+ (raptor_rss_emit_item): Set the atom author output node type by a
+ quick hack to alter the URIs.
+
+2009-05-10 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c: raptor_rss_uplift_map merged into
+ raptor_atom_to_rss
+ (raptor_rss_copy_field): Added to do field copy/conversion with
+ pair
+ (raptor_rss_uplift_fields): Iterate over list of conversions and
+ call raptor_rss_copy_field.
+
+ * src/raptor_rss_common.c:
+ (raptor_rss_field_conversion_date_uplift): Added for converting
+ from junk date to ISO dates.
+ (raptor_rss_date_uplift): Deleted, replaced by above.
+ raptor_atom_to_rss: gains fields from raptor_rss_uplift_map and
+ uses above conversion function to fix rss:pubdate to dc:date
+
+ * src/raptor_rss.h: Add raptor_rss_field_conversion for converting
+ field values and add to raptor_field_pair
+
+ * tests/feeds/test05-result.ttl: Add dc:date, atom:id, atom:title
+ fields
+
+2009-05-09 Dave Beckett <dave@dajobe.org>
+
+ * tests/feeds/test04-result.ttl: add both rss and renamed atom
+ fields rather than just one:
+ - dc:date & atom:updated
+ - rss:title & atom:title
+ - atom:id
+ - atom:summary
+
+ * src/raptor_rss.c:
+ (raptor_rss_start_element_handler): Remove renaming of atom terms
+ to rss
+ (raptor_rss_uplift_fields): Add copying of atom to rss terms, not
+ renaming.
+
+ * src/raptor_rss_common.c: atom:author is a container, not a block
+ raptor_rss_items_info - set value type to RAPTOR_RSS_ITEM_CONTAINER
+ raptor_rss_fields_info - set class to RAPTOR_RSS_RDF_ATOM_AUTHOR_CLASS
+ raptor_rss_block_fields_info - remove author from list of blocks
+
+ * tests/feeds/test04.atom: Restore xhtml namespace to div
+
+2009-05-01 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-general.sgml: update tmpls
+
+ * tests/turtle/Makefile.am, tests/turtle/test-32-out.ttl,
+ tests/turtle/test-32.ttl: Added test-32 based on test for
+ http://bugs.librdf.org/mantis/view.php?id=274
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_emit_subject_collection_items): Notice when a new
+ subject happens and reset property iterator.
+ (raptor_turtle_emit_subject): Look for trees with 2 or more
+ properties to be a potential collection.
+ Fixes Issue#0000277 http://bugs.librdf.org/mantis/view.php?id=277
+
+ * src/raptor_parse.c:
+ (raptor_get_feature): Return raw parser int feature.
+ Fixes Issue#0000288 http://bugs.librdf.org/mantis/view.php?id=288
+
+ * src/raptor_feature.c: raptor_features_list use bit 16 to record
+ that an int is not a boolean flag. Should refactor these flags
+ for Raptor V2 and alter the raptor_feature_value_type() return.
+
+2009-04-30 Dave Beckett <dave@dajobe.org>
+
+ * tests/feeds/Makefile.am: Add atom to turtle expected results to
+ EXPECTED_TTLS
+
+ * tests/turtle/Makefile.am: Add $(TURTLE_SERIALIZE_RDF_FILES) to dist
+
+ * tests/turtle/Makefile.am: More fixes for make distcheck testing
+
+ * tests/turtle/Makefile.am:
+ (check-turtle-parse-ntriples, check-turtle-serialize-rdf): Get
+ filenames from invoking Makefiles in nearby build-dirs not
+ src-dirs, which won't have makefiles in 'make distcheck' mode
+
+ * tests/ntriples/Makefile.am: Revert r15175
+
+ * tests/ntriples/Makefile.am: Make print-nt-test-files work in
+ 'make distcheck' mode
+
+ * src/raptor_sax2.c:
+ (raptor_sax2_parse_chunk): Make undeclared entity not fatal in
+ parsing - errors are still thrown by the error callback, but
+ parsing continues. Makes
+ http://bugs.librdf.org/mantis/view.php?id=303 easier to deal with
+ - primary data gets out when errors are present; when DTDs are not
+ loaded.
+
+ * src/raptor_libxml.c:
+ (raptor_libxml_xmlStructuredErrorFunc): Hunt for error_handlers in
+ parser context user data too.
+
+ * src/raptor_sax2.c:
+ (raptor_new_sax2): Save correct libxml error handlers
+
+2009-04-24 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h: Revert raptor_error_handlers ABI change for now
+
+2009-04-23 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_internal.h,
+ src/raptor_sax2.c: Protect calls to xmlSetStructuredErrorFunc()
+ and xmlSetGenericErrorFunc() by libxml flags and if enabled, save
+ and restore the previous values. Added
+ raptor_set_libxml_flags() (raptor V1) and
+ raptor_world_set_libxml_flags() (raptor V2) to set these flags.
+ Flags are defined in new enum raptor_libxml_flags.
+
+ Fixes Issue#000299 http://bugs.librdf.org/mantis/view.php?id=299
+
+ * docs/tmpl/section-feature.sgml, src/raptor.h,
+ src/raptor_general.c, src/raptor_grddl.c, src/raptor_internal.h,
+ src/raptor_parse.c: Use context-specific libslt security
+ configuration to avoid calling xsltSetDefaultSecurityPrefs().
+
+ Also allow user to set the policy for raptor globally with new API
+ function raptor_set_libxslt_security_preferences() (and in Raptor V2
+ with raptor_world_set_libxslt_security_preferences method on the
+ world class)
+
+ Fixes Isssue#0000296 http://bugs.librdf.org/mantis/view.php?id=296
+
+2009-04-21 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_libxml.c:
+ (raptor_libxml_init, raptor_libxml_init_sax_error_handlers): Init
+ per-context structured error handlers to go to
+ raptor_libxml_xmlStructuredErrorFunc
+
+ * configure.ac: Use RAPTOR_LDFLAGS for rest of internally linked
+ libs for libm, curl, fetch, libxml, expat, libxslt, libinn (for
+ parsedate)
+
+ * configure.ac, raptor.pc.in, src/Makefile.am: Introduce
+ RAPTOR_LDFLAGS to replace raw LIBS as the internal set of
+ arguments to use in linking.
+
+ * configure.ac, src/Makefile.am, utils/Makefile.am: Add
+ --enable-debug configure option. use AM_CPPFLAGS for defines and
+ include options Remove unused STANDARD_CFLAGS
+
+2009-03-31 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_namespace.c:
+ (raptor_new_namespaces_v2): Lowmem fix. Use calloc instead of
+ malloc to have struct members initialized to zero in case
+ raptor_namespaces_init_v2() fails and need to free a partially
+ initialized nstack.
+
+2009-03-30 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac, src/raptor_serialize_rss.c: Test for
+ gettimeofday. (raptor_rss10_ensure_atom_feed_valid): Use condition
+ to avoid calling it on windows that doesn't have it. Patch from
+ Lou Sakey 2008-07-31 to redland-dev
+
+ * src/raptor_sax2.c:
+ (raptor_sax2_finish): Call xmlCleanupParser() libxml call last to
+ avoid an access violation on windows. Patch from Lou Sakey
+ 2008-07-31 to redland-dev.
+
+ * src/raptor_general.c:
+ (raptor_vsnprintf): Windows vsnprintf() portability patch from Lou
+ Sakey.
+
+2009-03-29 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: Substitute ECHO
+
+ * src/raptor_rss.c:
+ (raptor_rss_start_element_handler): Make namespaces seen in fields
+ after any potential renames, so they will get declared later.
+ (raptor_rss_end_element_handler): End any blocks in all cases -
+ was not happening when there was no cdata.
+ (raptor_rss_emit_block): Only emit block strings that are not
+ NULL.
+ (raptor_rss_emit_connection): Turn predicate ordinals into URIs
+ since the RAPTOR_IDENTIFIER_TYPE_ORDINAL is deprecated (and turtle
+ serialiser does not handle it).
+ (raptor_rss_uplift_fields): Gain rss_parser arg and mark
+ namespaces seen in renames.
+
+ * src/raptor_rss_common.c: raptor_rss_fields_info - restore
+ rss:link value to string. raptor_rss_block_fields_info - fix
+ clashing offset for atom author name/email fields.
+
+2009-03-28 Dave Beckett <dave@dajobe.org>
+
+ * tests/feeds/Makefile.am, tests/feeds/test02-result.atom,
+ tests/feeds/test04-result.ttl, tests/feeds/test04.atom,
+ tests/feeds/test05-result.ttl, tests/feeds/test05.atom: Add test04
+ and test05 atom parsing to turtle. Update test suite to show
+ errors better and use ECHO macros
+
+ * tests/feeds/test0[123].rdf:: Rename test0[123].rss to .rdf
+
+ * tests/turtle/Makefile.am: Use TURTLE_SERIALIZE_RDF_FILES so that
+ ex-62.rdf gets used
+
+ * tests/turtle/Makefile.am, tests/turtle/test-31-out.ttl,
+ tests/turtle/test-31.ttl: Add tests for serializing rdf:_<n>
+ properties back to themselves.
+
+2009-03-23 Dave Beckett <dave@dajobe.org>
+
+ * tests/feeds/Makefile.am: use conditionals to execute tests in
+ sane order via FEED_TESTS var
+
+ * tests/feeds/Makefile.am:
+ (check-serialize-atom): Set parser/input base URI for test.
+
+ * tests/feeds/Makefile.am: notes
+
+ * tests/feeds/Makefile.am, tests/feeds/test01-result.ttl,
+ tests/feeds/test02-result.ttl, tests/feeds/test03-result.ttl: Add
+ parsing and serializing tests with intermediate turtle results to
+ check
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_internal.h,
+ src/raptor_parse.c, src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_serialize_rss.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c: Renamed
+ RAPTOR_FEATURE_ALIAS_DEFAULT_NAMESPACE to
+ RAPTOR_FEATURE_PREFIX_ELEMENTS (prefixElements) and change
+ meaning; it always declares prefix: and default namespace but this
+ option flips whether it core vocab is in the prefixed or default
+ namespace.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_build_xml_names): Do not declare or start namespaces
+ with NULL prefix; only the default namespace *may* do that.
+
+2009-03-20 Dave Beckett <dave@dajobe.org>
+
+ * tests/feeds/test01-result.atom: fix namespaces
+
+ * tests/feeds/test01-result.atom, tests/feeds/test02-result.atom,
+ tests/feeds/test03-result.atom: Add namespaces back to all
+ expected results
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_build_xml_names): Enable turning on/off namespaced
+ elements based on feature_alias_default_namespace
+
+2009-03-19 Dave Beckett <dave@dajobe.org>
+
+ * tests/feeds/Makefile.am, tests/feeds/test01-result.atom,
+ tests/feeds/test02-result.atom, tests/feeds/test03-result.atom:
+ Remove -f aliasDefaultNamespace=0 from tests for now, to enable
+ fixing of other things on their own
+
+2009-03-17 Dave Beckett <dave@dajobe.org>
+
+ * tests/feeds/Makefile.am: use $(srcdir) before expected
+
+ * tests/feeds/Makefile.am: report failure diff the right way
+ around: from expected to actual
+
+2009-03-12 Dave Beckett <dave@dajobe.org>
+
+ * tests/feeds/test02-result.atom, tests/feeds/test03-result.atom:
+ Fix atom namespaces
+
+ * tests/feeds/Makefile.am: Set aliasDefaultNamespace=0
+
+ * tests/feeds/Makefile.am, tests/feeds/test01-result.atom,
+ tests/feeds/test02-result.atom, tests/feeds/test03-result.atom:
+ Add expected test results, make check works from Makefile alone
+
+ * tests/feeds/Makefile.am: Fix RAPPER call
+
+2009-03-10 Dave Beckett <dave@dajobe.org>
+
+ * tests/feeds/test01.atom, tests/feeds/test02.atom,
+ tests/feeds/test03.atom: Remove atom output - now generated via
+ test
+
+ * tests/feeds/Makefile.am: fix error in error logging
+
+ * configure.ac, tests/Makefile.am, tests/feeds,
+ tests/feeds/Makefile.am: automaked tests/feed
+
+ * tests/feeds/Makefile: Removed, now autogenerated
+
+2009-02-28 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c: comments
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_statement):
+ Code style, remove if() depth.
+
+2009-02-27 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss_common.c: Make itunes:owner container work again.
+
+2009-02-25 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss_common.c: fix enclosure class/predicate RDF names
+
+ * src/raptor_rss.h, src/raptor_rss_common.c: Added
+ RAPTOR_RSS_RDF_ENCLOSURE for enclosure predicate in RDF as well as
+ RAPTOR_RSS_RDF_ENCLOSURE_CLASS for enclosure class in RDF
+
+ * src/raptor_rss.c:
+ (raptor_rss_start_element_handler): Declare as
+ seen the namespace for a block.
+
+ * src/raptor_rss.h, src/raptor_rss_common.c: Add RAPTOR_ATOM_LINK
+ block type
+
+ * src/raptor_rss.c:
+ (raptor_rss_emit_block): Emit type URI from
+ cls field, not predicate.
+
+2009-02-23 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c: raptor_rss_element loses unused rel field
+
+ * src/raptor_rss.c:
+ (raptor_rss_start_element_handler): Remove
+ unused element attribute recognition <source url> and <category domain>
+
+ * src/raptor_rss.c:
+ (raptor_rss_start_element_handler): Set
+ enclosure namespace used if an enclosure block was seen.
+
+2009-02-22 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss_common.c: raptor_rss_items_info - add block
+ predicate types raptor_rss_fields_info - make atom:author a
+ block. add atom:Author, atom:Category, atom:label, atom:schema and
+ atom:term raptor_rss_block_fields_info - add new predicates for
+ atom:category block add atom:author block
+
+ * src/raptor_rss.c: raptor_rss_parser gains current_block field to
+ store current metadata block object.
+ (raptor_rss_start_element_handler): Set current_block.
+ (raptor_rss_end_element_handler): Store any cdata in block field
+ with NULL attribute if there is one.
+
+ * src/raptor_rss.c:
+ (raptor_rss_start_element_handler): Wildcard element name matches
+ for RSS namespaces
+
+ * src/raptor_rss.c:
+ (raptor_rss_block_set_field): Added.
+ (raptor_rss_start_element_handler): Use above to set a block
+ attribute value
+
+ * src/raptor_rss.c: raptor_rss_parser - comment.
+ (raptor_rss_start_element_handler): Use
+ raptor_rss_get_current_item to get item. When checking block
+ attributes, skip NULL attribute names - for element cdata
+
+ * src/raptor_rss.c:
+ (raptor_rss_emit_block): Code style and skip block fields with no name.
+ (raptor_rss_emit_item): Code style.
+
+ * src/raptor_rss_common.c: raptor_rss_fields_info modify to make
+ rss:link and rss:docs take URLs
+
+ * src/raptor_rss.c, src/raptor_rss_common.c,
+ src/raptor_serialize_rss.c: Use RAPTOR_RSS_RDF_ENCLOSURE_CLASS for
+ enclosure class and RAPTOR_RSS_FIELD_ENCLOSURE for predicate
+
+ * src/raptor_rss.h: RAPTOR_RSS_BLOCKS_SIZE 10 after removing rss
+ container
+
+ * src/raptor_rss.h, src/raptor_rss_common.c: Add itunes: namespace
+ and itunes:owner container with fields in namespace itunes:
+ author, subtitle, summary, keywords explicit, image, name, block,
+ category and email
+
+ * src/raptor_rss.h, src/raptor_rss_common.c: raptor_rss_type loses
+ RAPTOR_RSS_CATEGORY type. raptor_rss_block_fields_info loses rss
+ category - just make it a string value
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c:
+ raptor_rss_type delete RAPTOR_RSS_UNKNOWN and replace with
+ RAPTOR_RSS_NONE everywhere
+
+2009-02-21 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.h, src/raptor_rss_common.c,
+ src/raptor_serialize_rss.c: raptor_rss_field_info renamed from
+ raptor_rss_info
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c,
+ src/raptor_serialize_rss.c: raptor_rss_items_info renamed from
+ raptor_rss_types_info raptor_rss_types_info gains a flags field to
+ distinguish blocks from containers.
+ (raptor_rss_add_container): Use flag to only scan containers, not
+ blocks.
+ (raptor_rss_emit_block): Handle all types of blocks. Use the node
+ type from raptor_rss_types_info to emit the node type. Use the
+ raptor_rss_block_fields_info to emit the predicates for all
+ blocks.
+
+2009-02-20 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c:
+ (raptor_rss_start_element_handler): Code style.
+
+ * src/raptor_rss.c:
+ (raptor_rss_insert_identifiers): Tidy to use
+ raptor_set_identifier_uri. Indenting.
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c,
+ src/raptor_serialize_rss.c:
+ (raptor_rss_start_element_handler, raptor_rss_insert_identifiers,
+ raptor_rss10_serialize_statement): Use raptor_set_identifier_uri
+ and raptor_set_identifier_id and refactor to use them better.
+ (raptor_rss_block_make_blank_node,
+ raptor_rss_insert_block_identifiers): Deleted.
+ (raptor_rss_item_equals_statement_subject): Added.
+ (raptor_new_rss_block): Add id argument.
+
+ * src/raptor_identifier.c, src/raptor_internal.h:
+ Added raptor_set_identifier_uri and raptor_set_identifier_id
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c,
+ src/raptor_serialize_rss.c: Remove old enclosure core and switch
+ to data-driven raptor_rss_block metadata code. Update copyrights
+ for 2009. typedef raptor_rss_block_fields_info renamed from
+ raptor_rss_block_info and add docs. Renamed field 'attribute'
+ from field_name, attribute_type from field_type. Added rdf
+ predicate info 'field'. raptor_rss_block_fields_info adds
+ predicate info.
+ (raptor_rss_start_element_handler): Read from
+ raptor_rss_block_fields_info.
+ (raptor_rss_insert_block_identifiers): Renamed from
+ raptor_rss_insert_enclosure_identifiers.
+ (raptor_rss_insert_identifiers): Call above with new name.
+ (raptor_rss_emit_block): Use more data tables to emit block.
+
+ * src/raptor_rss_common.c: Add sentinel to end
+ raptor_rss_blocks_info array
+
+ * src/raptor_rss.c:
+ (raptor_rss_start_element_handler): Recognise blocks from flags
+ and handle <enclosure> attributes @url, @length and @type -
+ statically for now.
+
+ * src/raptor_rss.h, src/raptor_rss_common.c: raptor_rss_info gains
+ block flag and block_type to use when a block is found.
+
+ * src/raptor_rss.c:
+ (raptor_rss_start_element_handler): Fix conditions for recognizing
+ inner containers.
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c: Add
+ raptor_rss_block_info to record other metadata blocks
+ configuration: rss enclosues, atom categories, rss category and
+ rss source. Switch raptor_rss_block structure from a list of
+ specific fields to short arrays of urls and strings.
+ (raptor_free_rss_block, raptor_rss_start_element_handler,
+ raptor_rss_insert_enclosure_identifiers, raptor_rss_emit_block):
+ Switch to generic raptor_rss_block URLs, strings
+
+2009-02-20 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_rss.c:
+ (raptor_rss_emit_block): Compilation fix after function parameter
+ rename
+
+2009-02-19 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c:
+ (raptor_rss_emit_block): Renamed from raptor_rss_emit_enclosure
+
+ * src/raptor_rss.h, src/raptor_rss_common.c: Add none raptor node type
+
+ * src/raptor_rss.c: Code style / whitespace.
+ (raptor_rss_end_element_handler): Use
+ raptor_rss_get_current_item() to get update_item.
+
+2009-02-18 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c:
+ (raptor_rss_get_current_item): Pull logic out to get item for
+ current type.
+ (raptor_rss_start_element_handler): Fix inner container
+ processing. Look for rdf:about on an item to get item URI there
+ first. Pull out enclosure construction from general field
+ handling.
+
+ * src/raptor_rss.c:
+ (raptor_rss_start_element_handler): Remove extra code block &
+ outdent.
+
+ * src/raptor_rss.c:
+ (raptor_rss_promote_namespace_uri): Added for storing namespace
+ change rules.
+ (raptor_rss_start_element_handler): Use above to simplify field
+ search logic. Document how an element matches a field.
+
+ * src/raptor_rss.c:
+ (raptor_rss_add_container): Add rules about inner containers,
+ setting prev_type if seen and put author element ambiguity rules
+ here.
+ (raptor_rss_start_element_handler): Use above to replace inner
+ container identification code.
+
+ * src/raptor_rss.c:
+ (raptor_rss_add_container): Added, pulled out of
+ raptor_rss_start_element_handler to include the logic for
+ determining feed type and container from element name.
+ (raptor_rss_start_element_handler): Call above.
+
+ * src/raptor_rss.c:
+ (raptor_rss_start_element_handler): Comments and tidying control
+ flow when identifying a container for rss_parser->current_type
+
+ * src/raptor_rss.c:
+ (raptor_rss_block_make_blank_node): Added
+ pulled out of raptor_rss_insert_identifiers
+ (raptor_rss_insert_identifiers): Call above.
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c:
+ raptor_rss_block gains rss_type field
+ (raptor_new_rss_block): Take type as param and use to set
+ node_type.
+ (raptor_rss_insert_enclosure_identifiers): Remove node_type init
+ and let raptor_new_rss_block set it.
+ (raptor_rss_start_element_handler): Call raptor_new_rss_type with
+ param for enclosure.
+
+ * src/raptor_rss.h: prototype param
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c:
+ raptor_rss_item renamed field enclosure to blocks.
+ (raptor_rss_insert_identifiers, raptor_rss_emit_item,
+ raptor_free_rss_item, raptor_rss_item_add_block): Renamed
+ item->enclosure to item->blocks and renamed variables.
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c:
+ Rename raptor_rss_enclosure to raptor_rss_block throughout and
+ corrected naming convention.
+
+ (raptor_new_rss_block): Renamed from raptor_rss_new_enclosure.
+ (raptor_rss_item_add_block): Renamed from
+ raptor_rss_item_add_enclosure.
+ (raptor_free_rss_block): Renamed from raptor_enclosure_free.
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_internal.h,
+ src/raptor_parse.c, src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_serialize_rss.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c, utils/rapper.c:
+ Added serializer feature
+ RAPTOR_FEATURE_ALIAS_DEFAULT_NAMESPACE (aliasDefaultNamespace) for
+ atom and rss 1.0 serializers to prevent declaring the default
+ namespace twice with a prefix and without. raptor_feature gains
+ RAPTOR_FEATURE_ALIAS_DEFAULT_NAMESPACE raptor_features_list gains
+ new feature
+
+ (raptor_turtle_writer_set_feature, raptor_sax2_set_feature,
+ raptor_xml_writer_set_feature, raptor_set_feature,
+ raptor_get_feature, raptor_serializer_set_feature_string,
+ raptor_serializer_get_feature_string): enum extensions for
+ raptor_feature switches. struct raptor_serializer_s gains int
+ field feature_alias_default_namespace
+ raptor_rss10_serializer_context gains a flag free_default_nspace
+ to know when to free default namespace now that it may not be
+ needed.
+ (raptor_rss10_serialize_terminate): Use the free_default_nspace
+ flag.
+ (raptor_rss10_build_xml_names): Implement altered namespace
+ declaration rules.
+ (raptor_new_serializer_v2): Initialise default namespace aliasing
+ to true by default.
+ (raptor_serializer_set_feature): Set flag.
+
+ * src/raptor_rss.h: document struct raptor_rss_enclosure_s fields
+
+2009-02-18 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_internal.h, src/raptor_sax2.c: Lowmem fixes in
+ raptor_sax2
+
+ (raptor_sax2_s): Internal struct gains "failed" field.
+
+ (raptor_sax2_parse_start):
+ Check for raptor_namespaces_init_v2() failure and set sax2 struct
+ failure flag.
+
+ (raptor_sax2_start_element, raptor_sax2_end_element,
+ raptor_sax2_characters, raptor_sax2_cdata, raptor_sax2_comment,
+ raptor_sax2_unparsed_entity_decl,
+ raptor_sax2_external_entity_ref):
+ No-op if sax2 struct in failed state.
+
+ * src/raptor_namespace.c:
+ (raptor_namespaces_init_v2): Check for alloc failure
+
+ * src/raptor_namespace.c:
+ (raptor_namespaces_qname_from_uri): Init ns to NULL to prevent
+ use-before-init warnings from some optimizing compilers.
+
+2009-02-17 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_namespace.c:
+ (raptor_namespaces_get_default_namespace): Make this work again -
+ look for default namespace in correct bucket.
+
+ * librdfa/rdfa.c, src/raptor_internal.h, src/raptor_namespace.c:
+ Replace namespace storage from a linked list to a hash on prefix
+ using raptor_hash_ns_string() witb a DJ Bernstein hash. This
+ makes turtle parsing with lots of namespaces (100s) much faster.
+ Based on the initial patch in the bug it fixes.
+
+ Fixes Issue#0000290 http://bugs.librdf.org/mantis/view.php?id=290
+
+2009-02-10 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_ensure_writen_header):
+ For XMP add a cosmetic newline after <?xpacket>
+
+ * src/raptor_rdfxml.c:
+ (raptor_rdfxml_generate_statement): Adjust predicate_type when
+ removing ordinal identifier type from predicate.
+ Fixes Issue#0000293 http://bugs.librdf.org/mantis/view.php?id=293
+
diff --git a/ChangeLog.11 b/ChangeLog.11
new file mode 100644
index 0000000..43ab1f3
--- /dev/null
+++ b/ChangeLog.11
@@ -0,0 +1,5416 @@
+2010-12-29 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_parse.c:
+ (raptor_world_guess_parser_name): Fix guessing by URI
+
+ * src/Makefile.am, src/raptor.h.in, src/raptor_parse.c,
+ src/raptor_serialize.c, src/raptor_syntax_description.c: Restore
+ array counts to syntax description.
+
+ Pull out common validation.
+
+ raptor_syntax_description gains names_count, mime_types_count and
+ uri_strings_count all computed at registration.
+
+ (raptor_syntax_description_validate): Added to public API to
+ validate and compute counts.
+
+ (raptor_world_register_parser_factory,
+ raptor_world_register_serializer_factory): Call above for common
+ validation checks.
+
+ * src/ntriples_parse.c, src/raptor_grddl.c, src/raptor_guess.c,
+ src/raptor_json.c, src/raptor_librdfa.c, src/raptor_parse.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/raptor_serialize.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_html.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_turtle.c,
+ src/turtle_parser.y: Update parsers and serializers to use
+ uri_strings for syntax description.
+
+ * src/raptor.h.in: raptor_syntax_description has an array of URI
+ strings, loses mime types count.
+
+2010-12-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c:
+ Lower RSS mime type q values to 0.8 since that
+ is good enough, raptor cannot ever reach 100%
+
+2010-12-01 Dave Beckett <dave@dajobe.org>
+
+ * NEWS.html, RELEASE.html, configure.ac,
+ src/win32_raptor_config.h:
+ Bumped version to 1.9.2
+
+ * README.html:
+ N-Quads
+
+2010-12-01 Dave Beckett <dave@dajobe.org>
+
+ * Snapshotted raptor2_1_9_1 for 1.9.1 release (GIT
+ 697d55552c5897afab65715d16abbce838acd3e7)
+
+2010-11-30 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_www_curl.c: Respect Content-Location: header in HTTP
+ responses for final URI
+
+ (raptor_www_curl_update_status): If HTTP header Content-Location:
+ was found, use that rather than the HTTP 3xx redirect URI.
+
+ (raptor_www_curl_header_callback): Use raptor_strncasecmp rather
+ than strncmp to find content type and content location. If
+ content location is found, set the final_uri
+
+ Fixes Issue#0000402 http://bugs.librdf.org/mantis/view.php?id=402
+
+ * docs/Makefile.am, docs/raptor1-eol.html: Add raptor1-eol.html
+
+ * INSTALL.html:
+ update - encouraging the released tarballs path
+
+ * src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c:
+ Remove unused created_p args / variables from raptor_abbrev
+ internal APIs
+
+2010-11-29 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h.in, src/raptor_term.c: Added convenience methods
+ for constructing URI terms
+
+ (raptor_new_term_from_counted_uri_string,
+ raptor_new_term_from_uri_string): Added to replace a common
+ pattern of make uri, make term, free uri.
+
+2010-11-22 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_general.c, src/raptor_internal.h: Update defensive
+ code for checking raptor_world
+
+ * src/raptor_general.c: autodocs
+
+ * docs/raptor-sections.txt: Add new symbols
+
+2010-11-21 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-world.sgml:
+ Update tmpls
+
+ * src/.gitignore:
+ ignore raptor.h
+
+ * configure.ac, src/Makefile.am, src/raptor.h, src/raptor.h.in,
+ src/raptor_general.c:
+ (raptor_new_world): Turn into a macro around the internal
+ raptor_new_world_internal()
+
+ * src/raptor_general.c, src/raptor_internal.h,
+ src/raptor_iostream.c, src/raptor_libxml.c,
+ src/raptor_namespace.c, src/raptor_parse.c, src/raptor_qname.c,
+ src/raptor_sax2.c, src/raptor_serialize.c, src/raptor_statement.c,
+ src/raptor_term.c, src/raptor_turtle_writer.c, src/raptor_uri.c,
+ src/raptor_www.c, src/raptor_xml_writer.c: Check world object is
+ valid for Raptor V2 in every constructor
+
+ RAPTOR2_WORLD_MAGIC: Alter the RAPTOR_MAGIC value to be different
+ for raptor V2 and rename it in code. RAPTOR1_WORLD_MAGIC is the
+ old value.
+
+ (raptor_check_constructor_world): Added to handle the check and
+ provide a function to debugger-break on. It warns once about the
+ pointer problems using a static var.
+
+ (RAPTOR_CHECK_CONSTRUCTOR_WORLD): Macro added to call
+ raptor_check_constructor_world() and replace generic
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE check.
+
+ * src/raptor_librdfa.c:
+ (raptor_librdfa_parse_start): Call
+ rdfa_set_processor_graph_triple_handler with context.
+
+ * scripts/process-changes.pl:
+ print_statement_field_renames_as_perl_script added.
+ labels
+
+ * docs/raptor-1-to-2-map.tsv: more notes
+
+ * scripts/process-changes.pl: Update titles
+
+ * scripts/process-changes.pl: Fix delete enum output
+
+ * docs/raptor-1-to-2-map.tsv: RAPTOR_FEATURE_ASSUME_IS_RDF and
+ RAPTOR_FEATURE_START_URI were deleted.
+
+ * docs/raptor-1-to-2-map.tsv:
+ Add enum changes
+
+ * scripts/process-changes.pl: Handle enums
+
+ * docs/Makefile.am: upgrade-script.pl depends on tsv file
+
+2010-11-17 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_librdfa.c: Replace rdfa_set_triple_handler with
+ rdfa_set_default_graph_triple_handler
+
+ * librdfa/rdfa.c, librdfa/rdfa.h, librdfa/triple.c: Update to
+ librdfa GIT 1a1a08c790b7649a7f6c12fb9e40c0d3dbe70481
+
+2010-11-08 Dave Beckett <dave@dajobe.org>
+
+ * src/ntriples_parse.c, src/raptor_grddl.c, src/raptor_internal.h,
+ src/turtle_parser.y: Fixes for C++ - Casts for C++ from void* to
+ typed pointer/function pointers - Rename some prototype args to
+ avoid 'explicit' C++ keyword.
+
+2010-11-07 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-sections.txt, docs/tmpl/section-stringbuffer.sgml,
+ docs/tmpl/section-triples.sgml: Update generated docs
+
+ * src/raptor_stringbuffer.c: docs
+
+ * UPGRADING.html: deleted questions
+
+ * RELEASE.html: 1.9.1
+
+ * RELEASE.html, src/raptor.h, src/raptor_term.c: Removed
+ raptor_term_as_counted_string() and raptor_term_as_string()
+ replaced by _to_ versions. These were 'deprecated' in GIT but
+ since 1.9.0 Raptor V2 was beta, it is OK to delete them.
+
+ * RELEASE.html: 1.9.1
+
+2010-10-27 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_avltree.c:
+ (raptor_avltree_print): Free avltree_iterator at end
+
+2010-10-22 Dave Beckett <dave@dajobe.org>
+
+ * src/ntriples_parse.c: N-Quads code tidying
+
+ * tests/ntriples/Makefile.am: Remove N-Quads from N-Triples test
+ files so Turtle parser doesn't barf.
+
+ * tests/ntriples/Makefile.am: #typo
+
+ * configure.ac: Typo in AM_CONDITIONAL enabling N-Quads parser
+
+ * tests/ntriples/Makefile.am: Add $(NQ_OUT_FILES) to dist
+
+ * tests/json/Makefile.am: example4.nt
+
+ * configure.ac, src/Makefile.am, src/ntriples_parse.c,
+ src/raptor_internal.h, src/raptor_parse.c,
+ tests/ntriples/Makefile.am, tests/ntriples/testnq-1.nq,
+ tests/ntriples/testnq-1.out: Added N-Quads parser. Hey, that was
+ easy!
+
+ Don't allow literal graphs/contexts despite that being in the spec
+ at http://sw.deri.org/2008/07/n-quads/ because it's a stupid idea.
+ Added test from the spec
+
+2010-10-18 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_stringbuffer.c:
+ (raptor_stringbuffer_append_uri_escaped_counted_string): Added
+
+ * src/raptor.h, src/raptor_stringbuffer.c:
+ (raptor_stringbuffer_append_hexadecimal): Added
+
+2010-10-18 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize.c: #doc typo
+
+2010-10-17 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_iostream.c: Fix major copying too much error with
+ raptor_read_string_iostream_read_bytes() memcpy
+
+ (raptor_read_string_iostream_read_bytes): Adjust copied bytes to
+ the maximum available in the buffer, not the maximum requested by
+ user. Could cause crashes since memcpy is called to always copy
+ the maximum amount the user requests, whatever amount of data is
+ in the string.
+
+2010-10-15 Dave Beckett <dajobe@digg.com>
+
+ * src/raptor_serialize.c:
+ (raptor_serializer_start_to_iostream): Reset free_iostream_on_end
+ flag to prevent crashes on reuse.
+
+2010-10-11 Dave Beckett <dave@dajobe.org>
+
+ * src/ntriples_parse.c:
+ (raptor_ntriples_parse_recognise_syntax): Refuse to handle .ttl or
+ .n3 named content.
+
+2010-10-09 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/rdfa.c, librdfa/rdfa.h: Update to librdf GIT commit
+ ddead5d1f72acd7fcd9e4c42503eadcce9d6ec87
+
+2010-10-07 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-1-to-2-map.tsv: Add raptor_parser_parse_iostream -
+ was new in 1.9.0
+
+2010-10-01 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_log.c:
+ (raptor_log_error): code tidy
+
+ * src/raptor.h: raptor_log_message: autodocs
+
+2010-09-28 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_uri.c: Remove use of strncmp when strings are same
+ length
+
+ (raptor_uri_equals): Use memcmp() on same length strings to remove
+ need for strncmp that looks for NULs.
+
+ (raptor_uri_compare): Use memcmp() on same length strings to
+ remove need for strncmp that looks for NULs. Sort shorter urls
+ earlier by comparing lengths.
+
+2010-09-28 Nicholas J Humfrey <njh@aelius.com>
+
+ * tests/json/Makefile.am, tests/json/example4.json,
+ tests/json/example4.nt: Added a more 'real-world' JSON pasing test
+ file, that includes a rdf:type URI.
+
+ * src/raptor_uri.c:
+ (raptor_uri_equals): small optimisation - URI lengths are now
+ compared before comparing strings.
+
+ * src/raptor_uri.c:
+ (raptor_uri_compare): URI comparison now takes into account the
+ stored string length, and does not depend upon NULL-termination of
+ strings.
+
+2010-09-24 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac:
+ Use AC_LANG_SOURCE for gcc flag test
+
+2010-09-19 Dave Beckett <dave@dajobe.org>
+
+ * ChangeLog, ChangeLog.10, Makefile.am:
+ Added ChangeLog.10 for 2009
+
+ * NEWS.html, RELEASE.html, configure.ac, src/win32_raptor_config.h:
+
+ Bumped version to 1.9.1
+
+ * src/raptor_rss_common.c:
+ (raptor_new_rss_block): Copy block_term when needed, do not own
+ it.
+
+2010-09-16 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c:
+ Use raptor_term as arg to raptor_new_rss_block
+
+ (raptor_new_rss_block): Change blank node ID to a raptor_term arg.
+
+ (raptor_rss_start_element_handler): Adjust call to
+ raptor_new_rss_block.
+
+2010-09-13 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_store_statement): Code tidy to move checks out of
+ loop.
+
+2010-09-12 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_abbrev.c, src/raptor_serialize_rss.c: Remove internal
+ uses of deprecated raptor_term_as_string()
+
+ * src/raptor_serialize_rss.c: Copy statements when saving them for
+ later.
+
+ (raptor_rss10_store_statement): Move copy statement only when not
+ handled, no need to do copy/free.
+
+ (raptor_rss10_serialize_statement): Pass on handled but do not do
+ copy statmenethere.
+
+ * src/raptor_serialize_rss.c: When debugging free memory allocated
+ by raptor_term_as_string()
+
+ * src/raptor.h, src/raptor_term.c:
+ Deprecated raptor_term_as_..._string() for _to_...string form
+
+ (raptor_term_to_counted_string): Added replacing
+ raptor_term_as_counted_string.
+
+ (raptor_term_to_string): Added replacing
+ raptor_term_as_string.
+
+ (raptor_term_as_counted_string, raptor_term_as_string):
+ Deprecated.
+
+ * src/raptor_librdfa.c: Make rdfa (librdfa) parser correctly
+ initialize static statement
+
+ (raptor_librdfa_parse_init): Init static statement with
+ raptor_statement_init() so reference counting and copying works.
+
+ * src/raptor_rss.c: Make RSS parser correctly initialize static
+ statement
+
+ (raptor_rss_parse_init): Init static statement with
+ raptor_statement_init() so reference counting and copying works.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_store_statement): Never call raptor_free_statement()
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_statement): Tidy logic looking for type
+ triples.
+
+ * src/raptor_serialize_rss.c: Update debug messages to emit raptor
+ term not assume URIs
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_statement): Do not set block URIs from
+ blank nodes
+
+ * src/raptor_serialize_rss.c:
+ Fix crash in serializing to atom when comparing blank node as URI
+
+ (raptor_rss10_serialize_statement): Do not assume object is URI.
+ NOTE: This should use raptor_term_equals and be rewritten to
+ remove the item_uri code.
+
+2010-09-02 Nicholas J Humfrey <njh@aelius.com>
+
+ * src/raptor_serialize_json.c:
+ (raptor_json_serialize_start): Corrected option macro name from
+ RAPTOR_OPTION_RELATIVE_URIS to RAPTOR_OPTION_JSON_CALLBACK.
+
+2010-08-22 Nicholas J Humfrey <njh@aelius.com>
+
+ * raptor2.rdf.in:
+ Normalised tabs into spaces #ws
+
+2010-08-17 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_nfc_test.c: Update for Raptor 2 API.
+
+2010-08-16 Dave Beckett <dave@dajobe.org>
+
+ * Snapshotted raptor2_1_9_0 for 1.9.0 release (GIT
+ 9223bfb82c7291dfc778d5bde690a6ecdb652e8e)
+
+2010-08-15 Dave Beckett <dave@dajobe.org>
+
+ * UPGRADING.html: remove overview section
+
+ * INSTALL.html, LICENSE.html, NEWS.html, README.html,
+ RELEASE.html, UPGRADING.html: Tidy HTML style and change title to
+ Raptor RDF Syntax Library
+
+ * TODO.html: Empty document and point at bugs.librdf.org
+
+ * UPGRADING.html, Makefile.am: Added UPGRADING.html
+
+ * docs/tmpl/section-general.sgml: Update tmpl for adding
+ raptor_log_message
+
+ * src/raptor.h: Remove newline so raptor_log_message gets scanned
+ by gtk-doc!
+
+ * docs/raptor-sections.txt: Add raptor_log_message
+
+ * docs/.gitignore: Ignore raptor-fake.i for real
+
+ * docs/.gitignore: Ignore raptor-fake.i
+
+ * docs/Makefile.am, docs/tmpl/section-general.sgml: Make
+ raptor-fake.i generate properly
+
+ * scripts/Makefile.am: restore CLEANFILES
+
+ * docs/Makefile.am, scripts/Makefile.am,
+ scripts/fix-gtkdoc-header.pl: Attempt to fix raptor.h header to
+ make gtk-doc happier
+
+ * docs/raptor-1-to-2-map.tsv: more words in notes
+
+ * docs/raptor-tutorial-parsing.xml: need base uri pointer
+
+ * docs/raptor-tutorial-serializing.xml: enumeration
+
+ * docs/raptor-tutorial-parsing.xml: enumeration
+
+ * docs/raptor-tutorial-querying-functionality.xml: typo
+
+ * docs/raptor-tutorial-parsing.xml: raptor 2
+
+ * docs/raptor-tutorial-intro.xml: raptor 2
+
+ * docs/.gitignore: Ignore upgrade-script.pl
+
+ * scripts/build-formats.c: Call emit_format_to_syntax_list() at
+ end to emit last seen mime type.
+
+ * scripts/build-formats.c:
+ (emit_format_to_syntax_list): Added to emit format -> list of
+ parser/serializers.
+
+ * scripts/build-formats.c: print previous mime type in types index
+
+ * src/raptor_serialize_ntriples.c: Label nquads as "N-Quads"
+
+2010-08-14 Dave Beckett <dave@dajobe.org>
+
+ * docs/libraptor2.3: Cut down for raptor2 and point to API docs in
+ HTML
+
+ * README.html: N-Quads serializer
+
+ * docs/raptor-parsers.xml: JSON parser
+
+ * INSTALL.html, README.html, raptor2.rdf.in: Update docs to point
+ to GitHub source and browse
+
+ * 000-README-GIT.txt: Remove migration text
+
+ * AUTHORS: Add Nicholas J Humfrey
+
+ * docs/tmpl/section-locator.sgml: Update generated tmpl for
+ locator rename
+
+ * RELEASE.html: 1.9.0 notes
+
+ * docs/raptor-serializers.xml: Add N-Quads section
+
+ * tests/trig/Makefile.am: Add bug370.out to dist
+
+ * tests/trig/Makefile.am, tests/trig/bug370.out,
+ tests/trig/bug370.trig, tests/trig/example1.out,
+ tests/trig/example2.out, tests/trig/example3.out:
+ Convert TRiG output results file to N-Quads to check graph
+ parameter.
+
+ * configure.ac, src/Makefile.am, src/raptor_internal.h,
+ src/raptor_serialize.c, src/raptor_serialize_ntriples.c:
+ Add N-Quads serializer name 'nquads' using N-Triples serializer.
+
+ Add conditions in makefile to allow ntriples and/or nquads
+ serializers
+
+ raptor_ntriples_serializer_context rename dummy field to is_quads
+
+ (raptor_ntriples_serialize_statement): Pass on flag to print
+ graph.
+
+ (raptor_nquads_serializer_register_factory): Added to register
+ nquads serializer with text/n-quads mime type
+
+ (raptor_init_serializer_nquads): Added
+
+2010-08-11 Dave Beckett <dave@dajobe.org>
+
+ * tests/turtle/Makefile.am, tests/turtle/bad-23.ttl:
+ Add bad test bad-23 for
+ http://bugs.librdf.org/mantis/view.php?id=369
+
+2010-08-09 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor-sections.txt,
+ src/raptor.h, src/raptor_locator.c: Revert
+ raptor_locator_uri_string to raptor_locator_uri to protect Reland
+ SWIG API
+
+ * configure.ac, src/raptor_general.c, src/raptor_internal.h:
+ Remove --with-dmalloc and dmalloc library support
+
+2010-08-09 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_term.c: STANDALONE flagging for raptor_term unit
+ tests
+
+2010-08-08 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-1-to-2-map.tsv: ID function rename typo
+
+2010-08-08 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-parser.sgml, docs/tmpl/section-triples.sgml,
+ docs/tmpl/section-world.sgml: Update tmpls
+
+2010-08-08 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-sections.txt: Update sections for ID handler changes
+
+ * configure.ac: Protect checks for optional configure tests
+ with quoting and X
+
+2010-08-08 Nicholas J Humfrey <njh@aelius.com>
+
+ * src/raptor_json.c: The JSON parser supports both
+ Resource-Centric and Triples.
+
+2010-08-06 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: Simplify libxslt save/restore logic
+
+ (raptor_libxslt_set_global_state): Always save default
+ security prefs.
+
+ (raptor_libxslt_reset_global_state): Always restore default
+ security prefs.
+
+ (raptor_init_parser_grddl_common): Init sec prefs if policy
+ allows and NULL
+
+ * src/raptor_grddl.c: Alter GRDDL init/cleanup of libxslt to be
+ done around transform
+
+ This means that raptor can operate in a single threaded
+ environment with other libxslt users, since it saves/restores all
+ the libxslt global vars that it needs back to their original state
+ after every xslt transform.
+
+ raptor_grddl_parser_context gains saved_xsltGenericError,
+ saved_xsltGenericErrorContext and saved_xsltSecurityPrefs fields.
+
+ (raptor_grddl_run_grddl_transform_doc): Use
+ raptor_libxslt_set_global_state() and
+ raptor_libxslt_reset_global_state() to save restore around
+ transforms.
+
+ (raptor_init_parser_grddl_common): Do not set default security
+ prefs.
+
+ (raptor_terminate_parser_grddl_common): NULL security prefs after
+ freeing them.
+
+ (raptor_libxslt_set_global_state): Added to save libxslt shared
+ state that grddl parser needs to overwrite.
+
+ (raptor_libxslt_reset_global_state): Added to reset state back to
+ original values.
+
+ Candidate for backporting to raptor1 since it has no API impact.
+
+ * src/raptor_grddl.c: Document libxslt global settings.
+
+ (raptor_grddl_run_grddl_transform_doc): set per-transform generic
+ error handler
+
+ * docs/raptor-1-to-2-map.tsv: Update from genid changes
+
+ Renamed 1.9.0 genid functions are renamed again, moving to world
+ class.
+ - raptor_world_set_generate_bnodeid_parameters renamed from
+ raptor_parser_set_default_generate_id_parameters
+ - raptor_world_set_generate_id_handler renamed from
+ raptor_parser_set_generate_id_handler
+
+ New 1.9.0 genid function renamed:
+ - raptor_world_generate_bnodeid renamed from
+ raptor_parser_get_new_generated_id and loses type arg.
+
+ * src/raptor_general.c, src/raptor_grddl.c, src/raptor_internal.h:
+ Make XSLT security preference setting totally disableable
+
+ (raptor_world_set_libxslt_security_preferences): If user sets any
+ value, even NULL, record that.
+
+ (raptor_init_parser_grddl_common): If pointer is NULL and user
+ didn't set it, only then make raptor-specific policy.
+
+ (raptor_terminate_parser_grddl_common): If pointer is not NULL and
+ raptor set it, then free policy.
+
+ xslt_security_preferences_policy field of raptor_world internal
+ renamed from free_xslt_security_preferences
+
+ This patch is a candidate for backporting to raptor1.
+
+ * src/raptor_www.c:
+ (raptor_www_set_user_agent): memcpy comment
+
+ * src/raptor_libxml.c: memcpy replacing more strcpy for known
+ length strings. Check NUL copying.
+
+ * src/raptor_www.c: memcpy replacing more strcpy for known length
+ strings. Check NUL copying.
+
+ * src/raptor_sax2.c:
+ (raptor_sax2_start_element): memcpy replacing strcpy with known
+ length string.
+
+ * src/raptor_qname.c: memcpy replacing more strcpy for known
+ length strings. Check NUL copying.
+
+ * src/raptor_namespace.c:
+ (raptor_new_namespace_from_uri): memcpy replacing strcpy
+
+ * src/raptor_uri.c:
+ (raptor_uri_filename_to_uri_string): memcpy replacing strcpy
+
+ * src/raptor_uri.c:
+ (raptor_new_uri_for_rdf_concept): memcpy replacing strcpy
+
+ * src/raptor_uri.c:
+ (raptor_new_uri_from_id): memcpy replacing strcpy
+
+ * src/raptor_uri.c:
+ (raptor_uri_print): Correct error check and simplify code.
+
+2010-08-05 Nicholas J Humfrey <njh@aelius.com>
+
+ * src/raptor_term.c: Changed behaviour of
+ raptor_new_term_from_counted_blank() and
+ raptor_new_term_from_blank() to generate a new identifier if NULL
+ is passed in.
+
+ * src/ntriples_parse.c: Fix for ntriples parsing after the
+ raptor_world_generate_bnodeid() changes. Fix was to delete code -
+ blank nodes must be named in ntriples.
+
+2010-08-04 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_guess.c, src/raptor_internal.h: Remove internal
+ raptor_parser_get_current_base_id and raptor_parser_factory method
+
+ * src/ntriples_parse.c, src/raptor.h, src/raptor_general.c,
+ src/raptor_grddl.c, src/raptor_internal.h, src/raptor_parse.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/turtle_parser.y: Move
+ generate ID code from raptor_parser to raptor_world class
+
+ (raptor_world_generate_bnodeid): Replaces
+ raptor_parser_internal_generate_id with arg
+ RAPTOR_GENID_TYPE_BNODEID.
+
+ Enum raptor_genid_type deleted - only RAPTOR_GENID_TYPE_BNODEID was
+ ever used.
+
+ raptor_generate_bnodeid_handler handler typedef renamed from
+ raptor_generate_id_handler since it now just applies to blank node
+ IDs.
+
+ raptor_generate_bnodeid_handler handler renamed from
+ raptor_generate_id_handler.
+
+ (raptor_free_world): Free user genid prefix if set.
+
+ (raptor_world_set_generate_bnodeid_handler): Renamed from
+ raptor_parser_set_generate_id_handler.
+
+ (raptor_world_generate_bnodeid): Renamed from
+ raptor_parser_get_new_generated_id and loses type arg.
+
+ (raptor_world_set_generate_bnodeid_parameters): Renamed from
+ raptor_parser_set_default_generate_id_parameters.
+
+ Update all callers to mostly use raptor_world_generate_bnodeid()
+ except where a user bnode ID is given, such as in Turtle _:foo or
+ RDF/XML rdf:nodeid="foo".
+
+ Remove copying of genid fields from parsers to parsers when
+ creating sub-parsers for e.g. grddl.
+
+ typedef raptor_parser loses generate_id* and default_generate_id*
+ fields.
+
+ (raptor_world_internal_generate_id): Renamed from
+ raptor_parser_internal_generate_id and loses type arg.
+
+ typedef raptor_world gains generate_bnodeid and
+ default_generate_bnodeid fields.
+
+ (raptor_free_parser): Lose tidying user genid prefix.
+
+ (raptor_parser_copy_user_state): Remove copying of genid fields
+ between parser user states.
+
+ (raptor_parser_get_current_base_id): Deleted, no longer needed to
+ support copying genids between parser states.
+
+2010-08-03 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_term.c: More raptor_term unit tests
+
+ * src/Makefile.am, src/raptor_term.c: Add unit tests for
+ raptor_term
+
+2010-08-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_term.c:
+ (raptor_term_equals): Make terms *different* not equal if lengths
+ are different
+
+2010-07-20 Dave Beckett <dave@dajobe.org>
+
+ * tests/rdfa/Makefile.am: typo
+
+ * tests/rdfa/Makefile.am: Use automake conditional
+ RAPTOR_PARSER_RDFA to enable tests
+
+ * tests/json/Makefile.am: Use automake conditional
+ RAPTOR_PARSER_JSON to enable tests
+
+ * tests/grddl/Makefile.am: Use automake conditional
+ RAPTOR_PARSER_GRDDL to enable tests
+
+ * docs/raptor-parsers.xml: Added json parser section
+
+ * src/raptor_json.c: Note this is RDF/JSON parser (resource
+ centric) today
+
+ * src/raptor_serialize_json.c: Accept "text/json" mime type with
+ low Q for json serializers
+
+ * INSTALL.html: words
+
+ * INSTALL.html: correct autotools min versions
+
+ * INSTALL.html: GIT
+
+ * INSTALL.html: add YAJL pointers
+
+ * configure.ac: add yajl pointer
+
+ * configure.ac: Added --with-yajl=DIR (or 'no') to configure where
+ yajl is installed.
+
+ * scripts/process-changes.pl: docs
+
+2010-07-02 Lauri Aalto <laalto@iki.fi>
+
+ * tests/json/Makefile.am: Run JSON parser tests only if the parser
+ is enabled
+
+2010-07-01 Nicholas J Humfrey <njh@aelius.com>
+
+ * src/raptor_json.c: Added space after commas in parameter lists
+
+ * src/raptor_json.c: Removed spaces after if
+
+ * src/raptor_json.c: Changed single line if-statments to two line
+ if statements
+
+ * src/raptor_json.c: Changed C++ style comments to C style
+
+ * tests/json/Makefile.am, tests/json/bad-13.json: Added a Test
+ Case for missing out the term type
+
+ * src/raptor_json.c: Textual changes to error messages.
+
+2010-06-30 Nicholas J Humfrey <njh@aelius.com>
+
+ * src/raptor_json.c: Removed unused debugging code.
+
+ * tests/json/Makefile.am, tests/json/bad-00.json,
+ tests/json/bad-01.json, tests/json/bad-02.json,
+ tests/json/bad-03.json, tests/json/bad-04.json,
+ tests/json/bad-05.json, tests/json/bad-06.json,
+ tests/json/bad-07.json, tests/json/bad-08.json,
+ tests/json/bad-09.json, tests/json/bad-10.json,
+ tests/json/bad-11.json, tests/json/bad-12.json: Added example of
+ bad RDF/JSON to check for parse errors.
+
+ * src/raptor_json.c: Slightly stricter parsing of JSON. Better
+ error messages then things go wrong.
+
+ * src/raptor_json.c, tests/json/Makefile.am,
+ tests/json/example3.json, tests/json/example3.nt: Enabled allowing
+ comments in JSON
+
+ * src/raptor_json.c: Fixed comparision between signed and unsigned
+ integers.
+
+2010-06-29 Nicholas J Humfrey <njh@aelius.com>
+
+ * src/raptor_json.c: Improved JSON syntax detection to look at the
+ content.
+
+ * src/raptor_json.c: Lots of code re-factoring.
+ - Improved error handling
+ - Using Raptor memory allocation
+ - Improved memory management
+
+ * src/raptor_json.c: Changed malloc() to RAPTOR_MALLOC, free() to
+ RAPTOR_FREE().
+
+ * src/raptor_json.c: Rewrote fprintf(stderr, ...) to
+ raptor_parser_fatal_error(...)
+
+2010-06-28 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_uri.c:
+ (raptor_new_uri_from_counted_string): autodoc to note counted
+ string need not be NULL-terminated.
+
+ * src/raptor_term.c: autodocs to note counted string constructors
+ need not be given NULL-terminated strings.
+
+2010-06-27 Nicholas J Humfrey <njh@aelius.com>
+
+ * src/raptor_json.c: Added RATOR_JSON_ prefix to symbols. Code
+ cleanup.
+
+ * src/raptor_json.c, tests/json/Makefile.am,
+ tests/json/example1.json, tests/json/example1.nt,
+ tests/json/example2.json, tests/json/example2.nt: Added support
+ for parsing resource-centric JSON
+
+ * configure.ac, tests/Makefile.am, tests/json/Makefile.am,
+ tests/json/example1.json, tests/json/example1.nt,
+ tests/json/example2.json, tests/json/example2.nt: Created some
+ tests for RDF/JSON.
+
+ * src/raptor_json.c: Added support for Bnodes and Datatyped
+ literals. Fix for parsing small files.
+
+ * src/raptor_json.c: Commiting initial work on writing an JSON
+ parser.
+
+ Currently only handles json-triples.
+
+ Lots of tidying up required: - symbol names - remove debugging
+ messages - sort out memory management
+
+2010-06-26 Nicholas J Humfrey <njh@aelius.com>
+
+ * configure.ac, src/Makefile.am, src/raptor_internal.h,
+ src/raptor_parse.c: Added libyajl library checking and json parser
+ building to automake
+
+2010-06-06 Dave Beckett <dave@dajobe.org>
+
+ * examples/grapper.c: code style
+
+ * examples/Makefile.am: Add grapper-future rule
+
+ * examples/grapper.c: fix menu preferences link
+
+ * examples/grapper.c: Remove more deprecated GTK - GtkToolTips and
+ trigger based on macro
+
+2010-06-05 Dave Beckett <dave@dajobe.org>
+
+ * examples/grapper.c: Better but preferences menu still broken
+
+ * examples/grapper.c: Another attempt, still crashes. GTK docs
+ also suck
+
+ * examples/grapper-ui.xml, examples/grapper.c: GtkUIManager and
+ external XML file is too damn complex to make work - disable.
+
+ * examples/grapper-ui.xml: Add GTK UI xml
+
+ * examples/grapper.c: more code explanation
+
+ * examples/grapper.c: Make both combo box alternatives work
+
+ * examples/grapper.c: Replace deprecated (in 2.4.x)
+ gtk_option_menu with gtk_combo_box
+
+ * examples/grapper.c: more 2.5.0+ code pruning
+
+ * examples/grapper.c: Require GTK 2.5.0+ (that's still quite old!)
+
+ * examples/grapper.c: code style
+
+ * examples/grapper.c: Update to Raptor 2 API
+
+2010-06-02 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-sections.txt: added
+ raptor_new_term_from_counted_blank
+
+ * src/raptor_term.c: fix raptor_new_term_from_counted_blank
+
+ * docs/raptor-1-to-2-map.tsv, src/raptor.h, src/raptor_term.c:
+ Added raptor_new_term_from_counted_blank for term with counted
+ length ID.
+
+ (raptor_new_term_from_counted_blank): Added
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor-sections.txt,
+ docs/tmpl/section-triples.sgml: Update docs for
+ raptor_new_term_from_counted_literal
+
+ * src/raptor.h, src/raptor_term.c: Added
+ raptor_new_term_from_counted_literal for constructing from strings
+ with known lengths.
+
+ (raptor_new_term_from_counted_literal): Added
+
+ (raptor_new_term_from_literal): Now calls
+ raptor_new_term_from_counted_literal.
+
+2010-05-25 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_term.c:
+ (raptor_new_term_from_literal): Fail if language and datatype are
+ given like librdf_new_node_from_typed_literal
+
+ * docs/raptor-1-to-2-map.tsv, src/raptor.h,
+ src/raptor_serialize_ntriples.c:
+ (raptor_statement_ntriples_write): Add flag to decide whether to
+ write graph term.
+
+ * src/raptor_serialize_ntriples.c, src/raptor_statement.c:
+ (raptor_statement_print_as_ntriples,
+ raptor_statement_ntriples_write): Write N-Triples not N-Quads
+
+2010-05-25 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_term.c:
+ (raptor_new_term_from_literal): Ownership of language should not
+ be taken.
+
+ * src/raptor_term.c:
+ (raptor_new_term_from_literal): Do not overwrite literal length
+ with language length.
+
+2010-05-24 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor-sections.txt: Add new
+ statement methods to sections and functions map
+
+ * src/raptor_serialize_html.c, src/raptor_serialize_rdfxml.c:
+ (raptor_term_html_write, raptor_rdfxml_serialize_statement): Use
+ literal and language length fields direct, remove strlen()s
+
+ * src/raptor_serialize_ntriples.c:
+ (raptor_term_ntriples_write, raptor_statement_ntriples_write):
+ Check for NULL args and early write failures
+
+ * src/raptor_term.c:
+ (raptor_term_as_counted_string, raptor_term_as_string,
+ raptor_term_print_as_ntriples, raptor_term_equals): Check for NULL
+ term args
+
+ * src/raptor_statement.c:
+ (raptor_statement_compare): Return stable order if both statements
+ are NULL
+
+ * src/raptor_statement.c:
+ (raptor_statement_print, raptor_statement_print_as_ntriples):
+ Check statement arg is not NULL
+
+ * src/raptor.h, src/raptor_statement.c:
+ (raptor_statement_equals): Added to public API
+
+ * src/raptor.h: Add raptor_statement_copy to public API
+
+ * src/raptor.h, src/raptor_statement.c: Add new public function
+ raptor_statement_clear
+ (raptor_statement_clear): Added based on core of
+ raptor_statement_free.
+ (raptor_statement_free): Simplified.
+
+ * src/raptor_statement.c:
+ (raptor_new_statement,raptor_new_statement_from_nodes,
+ raptor_statement_copy): Validate args are not NULL
+
+ * src/raptor.h, src/raptor_internal.h: Export
+ raptor_new_statement, raptor_new_statement_from_nodes and
+ raptor_statement_copy to public API
+
+2010-05-18 Dave Beckett <dave@dajobe.org>
+
+ * src/Makefile.am, src/raptor_statement.c, src/raptor_term.c: Move
+ raptor_term class code to new raptor_term.c
+
+ * src/raptor_uri.c:
+ (raptor_uri_compare): code tidier
+
+ * src/raptor_uri.c:
+ (raptor_uri_compare): Make both NULL be equal.
+
+ * src/raptor_uri.c:
+ (raptor_uri_compare): Update to match librdf_uri_compare when both
+ NULL.
+
+2010-05-16 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-1-to-2-map.tsv: Added raptor_term_blank_value
+
+ * scripts/Makefile.am: add rule for building libraptor2.la
+
+ * src/raptor_locator.c: #docs
+
+ * docs/raptor-sections.txt: Add raptor_term_blank_value
+
+ * utils/rdfdiff.c: Update to new raptor_term blank fields
+
+ * src/raptor_statement.c: Initialize raptor_term length fields
+ (raptor_new_term_from_literal, raptor_new_term_from_blank):
+ init the fields.
+ (raptor_term_equals): Use lengths as short cut for difference.
+
+ * src/raptor.h, src/raptor_rdfxml.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_html.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_ntriples.c, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c,
+ src/raptor_statement.c, src/turtle_parser.y: raptor_term blank is
+ now a new typedef raptor_term_blank_value with length field.
+ Update all callers
+
+ * src/raptor.h: raptor_term_literal_value gains string_len and
+ language_len fields
+
+2010-05-14 Dave Beckett <dave@dajobe.org>
+
+ * src/ntriples_parse.c, src/raptor_grddl.c, src/raptor_guess.c,
+ src/raptor_namespace.c, src/raptor_option.c, src/raptor_parse.c,
+ src/raptor_qname.c, src/raptor_rfc2396.c, src/raptor_rss.c,
+ src/raptor_sax2.c, src/raptor_serialize_rss.c,
+ src/raptor_serialize_turtle.c, src/raptor_set.c,
+ src/raptor_stringbuffer.c, src/raptor_uri.c, src/raptor_www.c,
+ src/raptor_www_curl.c, src/raptor_www_libxml.c, src/raptor_xml.c,
+ src/turtle_lexer.l, src/turtle_parser.y: code style:
+ Replace strncpy with memcpy - never need strncpy
+ zero-checking/filling semantics.
+
+2010-05-12 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_internal.h: Deleted raptor_unique_id prototype
+
+ * src/raptor_abbrev.c:
+ (raptor_unique_id): Deleted - never used.
+
+2010-05-07 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h: Adjust raptor_term_type so enum values match
+ librdf_node_type raptor_term_type: Made enum values match
+ librdf_node_type usage and introduce unused type '3'.
+
+2010-05-05 Dave Beckett <dave@dajobe.org>
+
+ * LICENSE.html: Link to specific GPL 2.1 version doc. Wording and
+ formatting
+
+2010-05-04 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-tutorial-parsing.xml: pkg-config
+
+ * docs/raptor-tutorial-parsing.xml: statement not triples
+
+ * docs/raptor-tutorial-querying-functionality.xml: Fix exampel of
+ listing parser options to use correct description.
+
+ * docs/raptor-tutorial-querying-functionality.xml: RAPTOR_OPTION_LAST
+
+ * docs/raptor-1-to-2-map.tsv: Update raptor_locator_print and
+ raptor_avltree_print signatures
+
+ * docs/raptor-tutorial-parsing.xml,
+ docs/raptor-tutorial-serializing.xml: Update tutorial references
+
+ * docs/tmpl/section-avltree.sgml, docs/tmpl/section-locator.sgml:
+ Update tmpls
+
+ * src/raptor.h, src/raptor_avltree.c:
+ (raptor_avltree_print): Gains an int return status like other
+ print functions
+
+ * src/raptor.h, src/raptor_locator.c:
+ (raptor_locator_print): Gains an int return status like other
+ print functions
+
+ * src/raptor_avltree.c: autodocs
+
+ * docs/tmpl/section-triples.sgml: Update tmpls for
+ raptor_term_compare and raptor_term_equals
+
+ * src/raptor.h: fix prototype for raptor_term_equals to match code
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor-sections.txt: Add
+ raptor_term_compare and raptor_term_equals to public API
+
+ * src/raptor.h, src/raptor_internal.h: Move raptor_term_compare
+ and raptor_term_equals to public API
+
+ * src/raptor_statement.c:
+ (raptor_term_equals): autodocs
+
+ * src/raptor_parse.c: autodocs
+
+ * docs/tmpl/section-triples.sgml: Remove RAPTOR_IDENTIFIER docs
+
+ * docs/raptor-parsers.xml, docs/raptor-serializers.xml,
+ docs/raptor-tutorial-intro.xml, docs/raptor-tutorial-parsing.xml,
+ docs/raptor-tutorial-querying-functionality.xml,
+ docs/raptor-tutorial-serializing.xml: Start to update tutorial -
+ still working through WARNING
+
+ * scripts/format-changes.pl, scripts/process-changes.pl: Update
+ scripts
+
+2010-05-03 Dave Beckett <dave@dajobe.org>
+
+ * scripts/process-changes.pl: Generate a perl script to rename
+ names
+
+ * scripts/process-changes.pl: put docbook xml format generation
+ optional
+
+ * scripts/process-changes.pl: Use Getopt::Long and Pod::Usage for
+ proper option handling
+
+ * docs/Makefile.am: Rename format-changes.pl to process-changes.pl
+
+ * scripts/Makefile.am: Rename format-changes.pl to
+ process-changes.pl
+
+ * scripts/process-changes.pl: switch to file handle arg on print
+ functions Rename option to --docbook-xml DOCBOOK-XML file rather
+ than print to stdout
+
+ * docs/raptor-1-to-2-map.tsv: add note for raptor_statement_v2
+
+ * docs/raptor-1-to-2-map.tsv: raptor_log is not a type
+
+ * docs/raptor-1-to-2-map.tsv: # before names in notes
+
+ * scripts/format-changes.pl: Make links to enum values
+
+2010-05-03 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_xml.c: fixed compiler warning
+
+ * src/raptor_serialize_rdfxmla.c: #ws
+
+ * src/turtle_parser.y: fixed casts for !RAPTOR_DEBUG
+
+2010-05-02 Dave Beckett <dave@dajobe.org>
+
+ * utils/Makefile.am: fix rapper.html rule for scripts
+
+ * docs/raptor-1-to-2-map.tsv: annotations for raptor_identifier to
+ raptor_term renamings
+
+ * docs/raptor-1-to-2-map.tsv: Add annotations for old raptor_www_
+ functions
+
+ * docs/raptor-1-to-2-map.tsv: Add more annotations for old
+ functions and types
+
+ * src/raptor_iostream.c:
+ (raptor_new_iostream_to_string): Rename arg to malloc_handler
+
+ * docs/raptor-1-to-2-map.tsv: typo
+
+ * docs/raptor-1-to-2-map.tsv: annotate former message handler
+ typedefs
+
+ * docs/raptor-1-to-2-map.tsv: annotate former URI handler _func
+ typedefs
+
+ * docs/raptor-1-to-2-map.tsv: raptor_log_message is new
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor-sections.txt,
+ docs/tmpl/section-avltree.sgml, docs/tmpl/section-general.sgml,
+ docs/tmpl/section-www.sgml, src/raptor.h, src/raptor_abbrev.c,
+ src/raptor_avltree.c, src/raptor_grddl.c, src/raptor_iostream.c,
+ src/raptor_parse.c, src/raptor_rss_common.c,
+ src/raptor_sequence.c, src/raptor_serialize.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_rss.c,
+ src/raptor_serialize_turtle.c, src/raptor_set.c, src/raptor_uri.c,
+ src/raptor_www.c, src/turtle_parser.y: Renamed typedefs ending in
+ _function to _handler.
+
+ Also changed parameter names and internal field names from foo_fn to
+ foo_handler to match.
+
+ (raptor_data_free_handler, raptor_data_context_free_handler,
+ raptor_data_context_print_handler and
+ raptor_data_context_print_handler): Signature of these typedefs
+ were changed to match the other handlers to became *pointers* to
+ functions so
+ e.g. a call with e.g.(raptor_data_context_free_handler*)blah
+ becomes (raptor_data_context_free_handler)blah.
+
+ raptor_data_compare_handler renamed from
+ raptor_data_compare_function
+
+ raptor_data_malloc_handler renamed from
+ raptor_data_malloc_function
+
+ raptor_data_free_handler renamed from raptor_data_free_function
+
+ raptor_avltree_visit_handler renamed from
+ raptor_avltree_visit_function
+
+ Updated all definitions, fields and arguments to match.
+
+ * scripts/.gitignore: ignore more
+
+ * scripts/format-changes.pl: add change table titles
+
+ * scripts/format-changes.pl: format types
+
+ * src/raptor.h: autodocs
+
+ * docs/tmpl/section-serializer.sgml: update tmpls
+
+ * docs/raptor-1-to-2-map.tsv: Added raptor_serializer_flush
+
+ * docs/raptor-sections.txt: add new functions
+
+ * src/raptor.h: raptor_data_free_handler autodocs
+
+ * docs/raptor-1-to-2-map.tsv: more things were added not removed
+
+ * docs/raptor-1-to-2-map.tsv: more things were added not removed
+
+ * docs/raptor-1-to-2-map.tsv: raptor_uri_source type was deleted
+ not added.
+
+ * docs/raptor-1-to-2-map.tsv: Add type changes
+
+ * scripts/format-changes.pl: Ignore types for now
+
+2010-04-30 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_serialize.c:
+ (raptor_serializer_flush): Added
+
+ * src/raptor_internal.h: raptor_serializer_factory_s gains
+ serialize_flush factory method.
+
+ * Makefile.am, configure.ac, docs/Makefile.am,
+ docs/build-formats.c, docs/format-changes.pl, fix-groff-xhtml,
+ scripts/Makefile.am, scripts/build-formats.c, scripts/fix-bison,
+ scripts/fix-flex, scripts/fix-groff-xhtml,
+ scripts/format-changes.pl, src/Makefile.am, src/fix-bison,
+ src/fix-flex: Move scripts and utility programs into new scripts
+ dir
+
+ * docs/tmpl/section-general.sgml, docs/tmpl/section-iostream.sgml,
+ docs/tmpl/section-www.sgml: Update tmpls
+
+ * docs/raptor-sections.txt, docs/tmpl/section-iostream.sgml,
+ docs/tmpl/section-unused.sgml, docs/tmpl/section-www.sgml,
+ src/raptor.h, src/raptor_iostream.c, src/raptor_www.c: Add typedef
+ raptor_data_malloc_function
+
+ raptor_data_malloc_function: added for a malloc() signature
+ function.
+
+ (raptor_www_fetch_to_string, raptor_new_iostream_to_string): Use
+ for argument malloc_handler.
+
+ * docs/raptor-sections.txt: Remove internal raptor_avltree_check
+ and raptor_avltree_dump
+
+ * docs/tmpl/section-general.sgml, docs/tmpl/section-parser.sgml:
+ Update tmpls
+
+ * src/raptor.h, src/raptor_internal.h: Move raptor_avltree_dump
+ and raptor_avltree_check debug prototypes to internal header
+
+ * docs/raptor-sections.txt: Add raptor_graph_mark_flags,
+ raptor_parser_parse_iostream, raptor_syntax_bitflags
+
+ * docs/tmpl/section-option.sgml, docs/tmpl/section-parser.sgml,
+ docs/tmpl/section-www.sgml, docs/tmpl/section-xml-namespace.sgml:
+
+ Update tmpls
+
+2010-04-29 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c: code style
+
+ * src/raptor_serialize.c: code style
+
+ * src/raptor_abbrev.c: code style
+
+ * src/raptor_librdfa.c: code style
+
+ * src/raptor_turtle_writer.c: Update to add RAPTOR_OPTION_STRICT
+ to cases.
+
+2010-04-28 Dave Beckett <dave@dajobe.org>
+
+ * docs/format-changes.pl: intro section
+
+ * docs/raptor-1-to-2-map.tsv: More replacements Replace
+ raptor_serializer_get_option_string with
+ raptor_serializer_get_option Note replace
+ raptor_iostream_write_string_turtle with
+ raptor_string_python_write
+
+ * docs/raptor-1-to-2-map.tsv: Add replacement note for delete
+ raptor_set_parser_strict
+
+ * docs/raptor-1-to-2-map.tsv: Remove
+ raptor_world_enumerate_parsers with
+ raptor_world_get_parser_description.
+
+ * docs/raptor-sections.txt: update for
+ graph_handler->graph_mark_handler renames
+
+ * docs/raptor-sections.txt: Update functions for changes
+
+ * docs/raptor-1-to-2-map.tsv: Update functions for 2010-03-26 to
+ 2010-03-28 changes missed
+
+ * docs/raptor-1-to-2-map.tsv: raptor_set_parser_strict removed
+
+ * utils/rapper.1: Note -m/--mode removed but wasn't in the raptor
+ V1 man page.
+
+ * src/raptor_parse.c, utils/rapper.c: Replaced
+ raptor_parser_set_strict() with RAPTOR_OPTION_STRICT
+
+ (raptor_parser_set_strict): Removed from public API and made
+ static, internal.
+
+ (raptor_parser_set_option): When RAPTOR_OPTION_STRICT is seen,
+ call above function to set the values. Update rapper to remove
+ the -m/--mode lax/strict favouring the -f strict option with
+ boolean value.
+
+ * src/raptor.h, src/raptor_option.c: Add RAPTOR_OPTION_STRICT for
+ parser with bool value
+
+ * tests/rdfxml/Makefile.am:
+ (check-scan-rdf): Use -f scanForRDF instead of removed option -s
+
+2010-04-27 Dave Beckett <dave@dajobe.org>
+
+ * docs/build-formats.c:
+ Fix use of wrong array index. Rewrite for
+ clarity
+
+ * utils/rapper.1: changes
+
+ * utils/rapper.1: adjust date
+
+ * utils/rapper.1: Remove -s / --scan
+
+ * utils/rapper.c: Remove option --scan / -s since it's the same as
+ -f scanForRDF
+
+2010-04-25 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_librdfa.c: Set mime types for RDFA parser with higher
+ Q than GRDDL parser
+
+ * docs/build-formats.c: Add intro section and remove version from
+ top.
+
+ * docs/build-formats.c: Note when there is no parser or serializer
+ for a mime type
+
+ * src/raptor_serialize_html.c: Set html serializer Q 1.0
+
+ * src/raptor_serialize_json.c: Pick json resource serializer as
+ json Q 1.0 choice
+
+ * src/raptor_serialize_rdfxml.c: Make rdfxml serializer accept
+ text/rdf with lower q
+
+ * src/raptor_serialize_turtle.c: Make turtle serializer accept
+ other turtle mime types with q < 10
+
+ * src/raptor_serialize_rss.c: Make RSS tag soup serializer accept
+ other rss mime types with low q
+
+ * src/raptor_rss.c: Make RSS tag soup parser accept
+ application/atom+xml q=1.0 for atom.
+
+ * docs/build-formats.c: Emit mime types index section
+
+2010-04-24 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_avltree.c, src/raptor_general.c,
+ src/raptor_iostream.c, src/raptor_namespace.c,
+ src/raptor_option.c, src/raptor_parse.c, src/raptor_qname.c,
+ src/raptor_sax2.c, src/raptor_sequence.c, src/raptor_serialize.c,
+ src/raptor_statement.c, src/raptor_stringbuffer.c,
+ src/raptor_turtle_writer.c, src/raptor_uri.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c: Make all raptor object destructors handle
+ NULL object pointer.
+
+ All raptor_free_CLASS() functions when given a NULL object now
+ just return rather than a) crash or b) abort()
+
+ * docs/.gitignore:
+ ignore more
+
+ * tests/turtle/Makefile.am:
+ remove deprecated rapper -n when testing
+ turtle parser with with ntriples test
+
+ * docs/.gitignore:
+ ignore more
+
+ * tests/rdfxml/Makefile.am:
+ check-assume-rdf does not need -a flag.
+
+ * docs/tmpl/section-avltree.sgml,
+ docs/tmpl/section-constants.sgml, docs/tmpl/section-general.sgml,
+ docs/tmpl/section-iostream.sgml, docs/tmpl/section-locator.sgml,
+ docs/tmpl/section-memory.sgml, docs/tmpl/section-option.sgml,
+ docs/tmpl/section-parser.sgml, docs/tmpl/section-sax2.sgml,
+ docs/tmpl/section-sequence.sgml,
+ docs/tmpl/section-serializer.sgml,
+ docs/tmpl/section-stringbuffer.sgml,
+ docs/tmpl/section-triples.sgml, docs/tmpl/section-unicode.sgml,
+ docs/tmpl/section-unused.sgml, docs/tmpl/section-uri.sgml,
+ docs/tmpl/section-world.sgml, docs/tmpl/section-www.sgml,
+ docs/tmpl/section-xml-namespace.sgml,
+ docs/tmpl/section-xml-qname.sgml, docs/tmpl/section-xml.sgml:
+ Update doc tmpls
+
+ * docs/build-formats.c: init parsers/serializers count to 0
+
+ * docs/.gitignore, docs/rdfcat.c, docs/rdfprint.c,
+ docs/rdfserialize.c: Remove rdf*.c example files from git; copied
+ in by maintainer rule
+
+ * examples/.gitignore: Update examples for raptor2 API
+
+ * .gitignore: Do not ignore examples dir
+
+2010-04-19 Dave Beckett <dave@dajobe.org>
+
+ * docs/build-formats.c: ws
+
+ * docs/build-formats.c: tidy words
+
+ * docs/build-formats.c: do not put a title on variablelist
+
+ * docs/build-formats.c: optional desc list title
+
+ * docs/raptor-docs.xml: Added raptor-formats.xml
+
+ * docs/Makefile.am: Added raptor-formats.xml
+
+ * docs/build-formats.c: now using raptor_iostream
+
+2010-04-18 Dave Beckett <dave@dajobe.org>
+
+ * docs/build-formats.c: Helper to print raptor syntaxes into
+ docbook xml
+
+2010-04-17 Dave Beckett <dave@dajobe.org>
+
+ * utils/rapper.c: code style
+
+ * utils/rapper.c: Remove unused -a flag. sort options strings
+ alphabetically
+
+ * utils/rapper.1: 2.0.0
+
+ * utils/rapper.c: Remove long deprecated -n flag to set syntax to
+ ntriples
+
+ * src/raptor_general.c, src/raptor_iostream.c,
+ src/raptor_namespace.c, src/raptor_option.c, src/raptor_parse.c,
+ src/raptor_qname.c, src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_statement.c, src/raptor_turtle_writer.c,
+ src/raptor_uri.c, src/raptor_www.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c: Make all constructors check for non-NULL
+ args/world and call raptor_world_open()
+
+ Adjusted some documentation to allow NULL args that weren't noted,
+ such as raptor_new_turtle_writer() can take a NULL base_uri.
+
+ * src/raptor.h: raptor_syntax_description docs
+
+ * src/ntriples_parse.c, src/raptor.h, src/raptor_grddl.c,
+ src/raptor_guess.c, src/raptor_librdfa.c, src/raptor_parse.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/turtle_parser.y:
+
+ raptor_syntax_description need_base_uri now raptor_syntax_bitflags
+ enum.
+
+ (raptor_syntax_description): Change need_base_uri filed to a
+ bitmask of bits defined in enum raptor_syntax_bitflags. Enables
+ this structure to be used beyond parser and serializer formats.
+
+ (raptor_syntax_bitflags): Added with RAPTOR_SYNTAX_NEED_BASE_URI
+ flag.
+
+2010-04-06 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_guess.c:
+ (raptor_guess_guess_get_description): Do not call
+ raptor_parser_get_description() with NULL arg.
+
+ * src/ntriples_parse.c, src/raptor.h, src/raptor_grddl.c,
+ src/raptor_guess.c, src/raptor_librdfa.c, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_html.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_ntriples.c, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c,
+ src/turtle_parser.y: Removed writable static data.
+
+ Changed *_names arrays to be const. Also fixed dimensions of
+ *_names arrays to match number of elements.
+
+ (raptor_syntax_description): Changed syntax names array to const
+ to not lose const qualifiers in initialization/assignment.
+
+ * src/raptor.h, src/raptor_parse.c, src/raptor_serialize.c:
+
+ (raptor_world_get_parser_description,
+ raptor_world_get_serializer_description): Removed const qualifier
+ from pass-by-value args.
+
+ * src/raptor_serialize.c: #ws
+
+2010-04-01 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_html.c: code style
+
+2010-04-01 Nicholas J Humfrey <njh@aelius.com>
+
+ * ChangeLog: Updated ChangeLog to include new HTML Table
+ serialiser.
+
+ * configure.ac, src/Makefile.am, src/raptor_internal.h,
+ src/raptor_serialize.c, src/raptor_serialize_html.c: Added HTML
+ Table serialiser.
+
+2010-03-31 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_ntriples.c: ntriples writes text/plain
+
+ * utils/rapper.c: Use raptor_world_get_serializer_description()
+ for serializer info.
+
+2010-03-29 Dave Beckett <dave@dajobe.org>
+
+ * examples/raptor_abort.c, examples/rdfcat.c, examples/rdfprint.c,
+ examples/rdfserialize.c: Update examples to raptor2 API
+
+ * examples/Makefile.am: 2010
+
+ * configure.ac: package name is raptor2 makes things a little
+ easier
+
+ * Makefile.am: Do not toy with distdir
+
+ * raptor2.spec.in: Update for raptor2
+
+ * raptor2.pc.in: link with -lraptor2
+
+ * tests/Makefile.am: Use libraptor2.la
+
+ * raptor2.pc.in: adjust includedir to be prefixed by package name
+
+ * utils/Makefile.am: Use libraptor2.la
+
+ * src/Makefile.am: libraptor2.la
+
+ * .gitignore, docs/.gitignore, src/.gitignore: Update git ignores
+
+ * docs/tmpl/section-general.sgml, docs/tmpl/section-option.sgml,
+ docs/tmpl/section-parser.sgml, docs/tmpl/section-serializer.sgml,
+ docs/tmpl/section-triples.sgml, docs/tmpl/section-world.sgml,
+ docs/tmpl/section-xml-namespace.sgml: update doc tmpls
+
+ * Makefile.am, configure.ac, docs/Makefile.am, docs/libraptor.3,
+ docs/libraptor2.3, raptor-src-config.in, raptor.pc.in,
+ raptor.rdf.in, raptor.spec.in, raptor2.pc.in, raptor2.rdf.in,
+ raptor2.spec.in, src/Makefile.am, src/raptor-config.1,
+ src/raptor-config.in: Rename raptor to raptor2
+
+2010-03-27 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_parse.c: Added
+ raptor_parser_parse_iostream() to parse from an iostream
+
+ * src/raptor_rss.c:
+ (raptor_rss_emit): Implement emit graph marks for rss-tag-soup
+ parser.
+
+ * src/raptor_rdfxml.c: Implement emit graph marks for rdfxml
+ parser.
+
+ * src/raptor_librdfa.c: Implement emit graph marks for librdfa
+ parser.
+
+ * src/ntriples_parse.c:
+ (raptor_ntriples_generate_statement): Tidy emit graph mark
+ condition.
+
+ * src/raptor_librdfa.c: ws
+
+ * src/raptor_librdfa.c:
+ (raptor_librdfa_generate_statement): Do nothing if there is no
+ statement handler.
+
+ * src/raptor_grddl.c:
+ (raptor_grddl_parse_chunk): Implement graph marks for GRDDL
+ parser.
+
+ * src/raptor_grddl.c:
+ (raptor_grddl_ensure_internal_parser): Disable graph marks for
+ child parsers.
+
+ * src/raptor_parse.c:
+ (raptor_parser_start_graph, raptor_parser_end_graph): Use
+ emit_graph_marks flag.
+
+ * src/raptor_internal.h, src/raptor_parse.c: Add internal
+ raptor_parser flag emit_graph_marks default set.
+
+ * src/raptor_parse.c: save editor before commit!
+
+ * src/raptor_internal.h, src/raptor_parse.c:
+ (raptor_parser_copy_flags_state): Added to copy flags to/from
+ parsers.
+
+ * src/raptor_parse.c:
+ (raptor_parser_copy_user_state): Copy failed,
+ emitted_default_graph bit flags.
+
+ * src/ntriples_parse.c: Implement graph marks for ntriples parser
+
+ * src/turtle_common.h, src/turtle_parser.y: Switch to use
+ raptor_parser emitted_default_graph field
+
+ * src/raptor_internal.h: raptor_parser_s gains
+ emitted_default_graph flag.
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_parse.c,
+ src/turtle_parser.y: Added raptor_parser_get_graph() and factory
+ method
+
+ (raptor_parser_get_graph): Added to get current graph for a
+ parser.
+
+ raptor_parser_factory: Added optional method get_graph. If
+ missing this indicates that start/end graph marks need to be
+ synthesised.
+
+ (raptor_turtle_get_graph): Added to implement this for Turtle and
+ TRiG parsers.
+
+ * src/raptor.h, src/raptor_namespace.c,
+ src/raptor_serialize_turtle.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c: Rename raptor_namespace_copy to
+ raptor_namespace_stack_start_namespace
+
+ (raptor_namespace_stack_start_namespace): Renamed from
+ raptor_namespace_copy to follow conventions; this is not a copy
+ constructor for the raptor_namespace class, it's a method on the
+ raptor_namespace_stack class. Update all callers
+
+ * src/raptor_qname.c:
+ (raptor_qname_copy): Handle NULL qname arg.
+
+ * src/turtle_common.h, src/turtle_parser.y, utils/rapper.c: Update
+ Turtle and TRiG parsers to emit new graph marks
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_parse.c: Updated
+ graph mark handler mechanism in a stream of triples
+
+ raptor_graph_mark_handler: Renamed from raptor_graph_handler since
+ it returns not just a URI (or NULL for default graph) but flags
+ that indicate if it was a start/end and whether the graph name was
+ declared in the syntax or implicit by the stream of statements.
+
+ raptor_graph_mark_flags: Added used above to record the start/end
+ marks and declared/not.
+
+ (raptor_parser_set_graph_mark_handler): Renamed from
+ raptor_parser_set_graph_handler.
+
+ raptor_parser: Renamed field to graph_mark_handler and changed
+ type to match above.
+
+ (raptor_parser_start_graph): Renamed from
+ raptor_parser_set_graph_name and added is_declared flag.
+
+ (raptor_parser_end_graph): Added.
+
+2010-03-26 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-triples.sgml: doc
+
+ * docs/raptor-sections.txt: fix name
+
+ * docs/raptor-sections.txt, src/raptor.h:
+ Add extra typedefs for
+ union to help gtkdoc
+
+ * src/raptor.h:
+ autodocs
+
+ * docs/raptor-sections.txt:
+ Update sections with renames
+
+ * docs/raptor-1-to-2-map.tsv: Update for serializer descriptions
+ raptor_serializers_enumerate* replaced by
+ raptor_world_get_serializer_description.
+
+ Added raptor_serializer_get_description
+
+ * src/Makefile.am, src/raptor_internal.h, src/raptor_serialize.c,
+ src/raptor_serialize_simple.c: Remove obsolete 'simple'
+ serializer' from sources that has not been enabled for a long time
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_rss.c,
+ src/raptor_serialize.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_simple.c,
+ src/raptor_serialize_turtle.c, utils/rapper.c: Syntax description
+ replaces serializer enumeration and get desc methods.
+
+ (raptor_world_get_serializer_description): Renamed from
+ raptor_world_enumerate_serializers and now just takes single int
+ param.
+
+ (raptor_serializer_get_description): Added Updated all serializers
+ to register static descriptions of names, mime types, label, uris.
+
+ Updated rapper utility to use raptor_serializer_get_description()
+ for listing serializers.
+
+ * src/raptor_parse.c:
+ code style
+
+ * docs/raptor-1-to-2-map.tsv: Update changes for parser
+ descriptions raptor_get_label, raptor_get_mime_type,
+ raptor_get_need_base_uri are deleted and use result fields from
+ raptor_parser_get_description()
+
+ * docs/raptor-1-to-2-map.tsv: Use
+ raptor_world_get_parser_description to replace
+ raptor_parsers_enumerate*
+
+ * src/raptor_parse.c: autodocs
+
+ * src/raptor.h, src/raptor_guess.c, src/raptor_internal.h,
+ src/raptor_parse.c, utils/rapper.c: Syntax description replaces
+ parser enumeration and get desc methods.
+
+ (raptor_world_get_parser_description): Renamed from
+ raptor_world_enumerate_parsers and now just takes single int param.
+
+ (raptor_parser_get_label, raptor_parser_get_mime_type,
+ raptor_parser_get_need_base_uri): Deleted; use
+ raptor_world_get_parser_description() result fields instead.
+
+ raptor_parser_factory gains an optional get_description factory
+ method.
+
+ (raptor_parser_get_name): Note this returns main name and point to
+ raptor_parser_get_description() to get other names and info.
+
+ (raptor_parser_get_description): Added to either use the factory
+ method or else return the factory desc.
+
+ (raptor_guess_guess_get_description): Updated guess parser to
+ return internal description rather than that of 'guess'. Updated
+ rapper utility to use raptor_parser_get_description() for listing
+ parsers.
+
+ * src/raptor.h: group public typedefs (code style)
+
+ * src/ntriples_parse.c, src/raptor_grddl.c, src/raptor_guess.c,
+ src/raptor_internal.h, src/raptor_librdfa.c, src/raptor_parse.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/turtle_parser.y: Use
+ raptor_syntax_description inside raptor_parser_factory
+ raptor_parser_factory loses fields about description replaced by a
+ static raptor_syntax_description desc field.
+
+ Updated all users to use factory->desc.FIELD rather than
+ factory->FIELD for the descriptive fields.
+
+ * src/raptor.h: Added raptor_type_q and raptor_syntax_description
+ types to public API.
+
+ * src/ntriples_parse.c, src/raptor_grddl.c, src/raptor_guess.c,
+ src/raptor_librdfa.c, src/raptor_rdfxml.c, src/raptor_rss.c,
+ src/turtle_parser.y: Update parsers to register mime types count
+
+ * src/raptor_parse.c: Check and use mime_types_count field.
+
+ (raptor_world_register_parser_factory): Add maintainer/debug check
+ of mime types count.
+
+ (raptor_world_enumerate_parsers, raptor_parser_get_mime_type): Do
+ not access mime types unless there is one.
+
+ * src/raptor_internal.h: raptor_parser_factory gains
+ mime_types_count field
+
+ * src/raptor_internal.h, src/raptor_parse.c, src/turtle_parser.y:
+ Remove raptor_parser_simple_error - only used once.
+
+ (turtle_parser_error): Call raptor_log_error() direct.
+
+ (raptor_parser_simple_error): Deleted.
+
+ * src/raptor_parse.c: ws, code style
+
+2010-03-25 Dave Beckett <dave@dajobe.org>
+
+ * src/ntriples_parse.c, src/raptor_grddl.c, src/raptor_guess.c,
+ src/raptor_internal.h, src/raptor_librdfa.c, src/raptor_parse.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/turtle_parser.y: Alter
+ parser registration to be more static and declarative.
+
+ raptor_parser_factory: field name turns into C array of names.
+ field mime_types turns into a C array of #raptor_type_q
+
+ (raptor_free_parser_factory): Do not free data fields that are now
+ static and shared.
+
+ (raptor_world_register_parser_factory): Reduce args to just world
+ plus factory handler.
+
+ (raptor_parser_factory_add_alias,
+ raptor_parser_factory_add_mime_type):
+ Deleted
+
+ (raptor_world_get_parser_factory, raptor_world_enumerate_parsers,
+ raptor_parser_get_mime_type, raptor_world_guess_parser_name,
+ raptor_parser_get_accept_header_all): Update to handle mime_types
+ as array of #raptor_type_q
+
+ Alter all parser registrations to pass in static data for names,
+ mime_types, label and uri_string in factory registration function
+ handler.
+
+ * src/ntriples_parse.c, src/raptor_grddl.c, src/raptor_guess.c,
+ src/raptor_internal.h, src/raptor_librdfa.c, src/raptor_parse.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/turtle_parser.y:
+ (raptor_world_register_parser_factory): Renamed from
+ raptor_parser_register_factory.
+
+2010-03-24 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_internal.h: struct raptor_parser_factory_s: docs
+
+ * src/raptor_parse.c:
+ (raptor_parser_register_factory): autodocs
+
+2010-03-23 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_statement.c:
+ (raptor_term_as_counted_string): Fixed warning about strict
+ aliasing.
+
+2010-03-23 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_parse.c, src/raptor_serialize_turtle.c,
+ src/strcasecmp.c: Fixed gcc4 warnings about using a char where an
+ int is required
+
+2010-03-21 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-1-to-2-map.tsv, src/raptor.h, src/raptor_option.c:
+ Remove raptor_option_get_value_type() - can use option description
+ to get this and more details.
+
+2010-03-20 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_parse.c:
+ (raptor_new_parser): Set default options *after* initialising
+ options block.
+
+ * src/raptor_option.c: autodoc words
+
+ * src/raptor_option.c: raptor_world_get_option_from_uri - autodocs
+
+ * src/raptor_option.c: raptor_option_get_value_type - fix autodoc
+
+ * src/raptor_general.c: Added turtle writer label to
+ raptor_domain_labels
+
+ * docs/raptor-sections.txt: Add raptor_option_description
+
+ * src/raptor.h: raptor_option_description reformatting for
+ autodocs
+
+ * docs/raptor-1-to-2-map.tsv: add notes
+
+ * docs/raptor-1-to-2-map.tsv: Added new raptor_option_description
+ functions raptor_world_get_option_description and
+ raptor_free_option_description
+
+ * docs/raptor-sections.txt: Added raptor_free_option_description
+
+ * docs/raptor-sections.txt: raptor_parser_get_option_count renamed
+ to raptor_option_get_count
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor-sections.txt: Update
+ docs and API ref to remove options enumeration functions.
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_option.c,
+ src/raptor_parse.c, src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Remove all
+ raptor_world_enumerate_CLASS_options functions.
+
+ (raptor_world_options_enumerate_common): Remove internal function
+ no longer used.
+
+ Update parser test code to use option descriptions for testing
+ option URIs.
+
+ Update autodocs to refer to raptor_world_get_option_description()
+ for getting the valid option IDs.
+
+ * src/raptor.h, src/raptor_option.c, utils/rapper.c: Added option
+ description class to describe any domain option.
+
+ typedef raptor_option_description added
+
+ (raptor_world_get_option_description): Added, to create an option
+ description object for a domain and option ID.
+
+ (raptor_free_option_description): Added to free an option
+ description.
+
+ (raptor_option_get_option_area_for_domain): Added internal helper
+ to map option IDs to area bits.
+
+ Update rapper to use option description instead of options
+ enumeration calls.
+
+ * docs/raptor-1-to-2-map.tsv, src/raptor.h, src/raptor_option.c,
+ utils/rapper.c: Rename raptor_parser_get_option_count() to
+ raptor_option_get_count().
+
+ * src/raptor.h: Add RAPTOR_DOMAIN_TURTLE_WRITER
+
+2010-03-18 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_option.c,
+ src/raptor_parse.c, src/raptor_serialize.c: Changed
+ raptor_*_set_option() to take in a const char* instead of char*.
+
+2010-03-09 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-1-to-2-map.tsv: code style
+
+ * src/raptor.h: code style
+
+ * docs/tmpl/section-parser.sgml,
+ docs/tmpl/section-serializer.sgml, docs/tmpl/section-world.sgml,
+ docs/tmpl/section-xml.sgml: Update doc tmpls
+
+ * docs/raptor-1-to-2-map.tsv: Update
+ raptor_xml_writer_set_feature/string new names
+
+ * docs/raptor-1-to-2-map.tsv: Remove raptor_world_set_www_flags
+ which was added in raptor2
+
+ * docs/raptor-sections.txt, src/raptor.h, src/raptor_general.c,
+ src/raptor_www.c:
+ (raptor_world_set_flag): Replaces raptor_world_set_www_flags with
+ world flag RAPTOR_WORLD_FLAG_WWW_SKIP_INIT_FINISH
+
+ * docs/raptor-sections.txt: Remove get/set option_string forms
+
+ * docs/raptor-1-to-2-map.tsv: Update serializer and xml_writer
+ get/set options to use just 1 function.
+
+ * src/raptor_internal.h, src/raptor_rdfxml.c, src/raptor_rss.c,
+ src/raptor_sax2.c: Update sax2 set options (there is no get) to
+ use generic code.
+
+ (raptor_new_sax2): Init options structure.
+
+ (raptor_free_sax2): Clear options structure.
+
+ (raptor_sax2_set_option): Alter signature to use new format. This
+ API is not yet public.
+
+ Update code and callers to use the option access macros.
+
+ * src/raptor_xml_writer.c:
+ (raptor_new_xml_writer): Call raptor_object_options_init
+
+ * src/raptor.h, src/raptor_rdfxml.c, src/raptor_rss.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_xml_writer.c,
+ utils/rapper.c:
+
+ Update xml writer set/get option API to use generic code
+ raptor_xml_writer_s:
+
+ Add raptor_object_options field and delete flags, indent,
+ xml_version, xml_declaration fields that are now managed by it.
+
+ (raptor_new_xml_writer): Init options with
+ raptor_object_options_init. Set defaults that are not 0 or NULL.
+
+ (raptor_free_xml_writer): Use raptor_object_options_clear() to
+ tidy up option strings.
+
+ (raptor_xml_writer_set_option): Use
+ raptor_object_options_set_option().
+
+ (raptor_xml_writer_set_option_string): Deleted, merged into above.
+
+ (raptor_xml_writer_get_option): Use
+ raptor_object_options_get_option().
+
+ (raptor_xml_writer_get_option_string): Deleted, merged into above.
+
+ Update many references in xml_writer code to numeric and string
+ options to use RAPTOR_OPTIONS_GET/SET_STRING/NUMERIC macros.
+
+ Update callers of raptor_xml_writer_set_option() inside
+ serializers to pass in NULL string arg. Update rapper utility to
+ use new set_options style calls for parser and serializer.
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_serialize.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_turtle.c: Update
+ serializer set/get option API to use generic code
+
+ raptor_serializer_s: Add raptor_object_options field and delete
+ multiple option_* fields that are now managed by it.
+
+ (raptor_new_serializer): Init options with
+ raptor_object_options_init. Set defaults that are not 0 or NULL.
+
+ (raptor_free_serializer): Use raptor_object_options_clear() to
+ tidy up option strings.
+
+ (raptor_serializer_set_option): Use
+ raptor_object_options_set_option().
+
+ (raptor_serializer_set_option_string): Deleted, merged into above.
+
+ (raptor_serializer_get_option): Use
+ raptor_object_options_get_option().
+
+ (raptor_serializer_get_option_string): Deleted, merged into above.
+
+ Update many references in serializers to numeric and string
+ options to use RAPTOR_OPTIONS_GET/SET_STRING/NUMERIC macros. Some
+ code tidying to break long lines.
+
+ * docs/raptor-1-to-2-map.tsv: Update API docs for
+ raptor_parser_set_option: args changed
+ raptor_parser_set_option_string: deleted, use above
+ raptor_parser_get_option: args changed
+ raptor_parser_get_option_string: deleted, use above
+
+ * src/raptor_parse.c: autodocs
+
+ * src/raptor_option.c: autodocs
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_parse.c: Update
+ parser set/get option API to use generic code
+
+ raptor_parser_s: loose cache_control and user_agent char* option
+ fields that are now managed by the raptor_object_options.
+
+ (raptor_free_parser): Use raptor_object_options_clear() to tidy up
+ option strings.
+
+ (raptor_parser_set_option): Use
+ raptor_object_options_set_option().
+
+ (raptor_parser_set_option_string): Deleted, merged into above.
+
+ (raptor_parser_get_option): Use
+ raptor_object_options_get_option().
+
+ (raptor_parser_get_option_string): Deleted, merged into above.
+ Update references to string options to use
+ RAPTOR_OPTIONS_GET/SET_STRING macros.
+
+ * src/raptor_internal.h, src/raptor_option.c: Move support for
+ option get/set into generic code and handle strings.
+
+ (raptor_object_options_copy_state): Copy strings when copying
+ state.
+
+ (raptor_object_options_init): Set integers / strings to 0 / NULL.
+
+ (raptor_object_options_clear_state): Added to free strings.
+
+ (raptor_object_options_get_option): Added to get any option for an
+ option area.
+
+ (raptor_object_options_set_option): Added to set any option for an
+ option area.
+
+ * src/raptor_internal.h, src/raptor_option.c, src/raptor_parse.c:
+
+ Added raptor_object_options_init to initialise options object.
+
+ (raptor_object_options_init): Added
+
+ (raptor_new_parser): Call above to init parser's options block.
+
+ * src/raptor_internal.h: Made raptor_object_options contain an
+ array of union str/int values and area.
+
+ raptor_object_options gains raptor_option_area area field and
+ options is now an array of raptor_str_int (union of char*/int)
+
+ Adjusted RAPTOR_OPTIONS_GET/SET_NUMERIC macros to use integer part
+ of union.
+
+ * src/raptor_internal.h, src/raptor_option.c, src/raptor_parse.c:
+
+ Rename raptor_object_options_copy to
+ raptor_object_options_copy_state since it is not a copy
+ constructor
+
+ (raptor_object_options_copy_state): Renamed from
+ raptor_object_options_copy.
+
+ * src/raptor_internal.h, src/raptor_option.c, src/raptor_parse.c:
+ Add raptor_object_options_copy() for copying options
+ state (raptor_object_options_copy): Added.
+
+ (raptor_parser_copy_user_state): Use above.
+
+ * src/raptor_grddl.c, src/raptor_internal.h, src/raptor_parse.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c: Move per-parser-project
+ options into a raptor_object_options type.
+
+ raptor_object_options typedef added. raptor_parser_s: use above
+ rather than array of int.
+
+ (RAPTOR_OPTIONS_GET_NUMERIC, RAPTOR_OPTIONS_SET_NUMERIC): Added
+ and used by parsers.
+
+ * src/raptor_statement.c:
+ (raptor_term_as_counted_string): Use raptor_term_ntriples_write()
+ Intended to address Issue#0000357
+
+2010-03-08 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-docs.xml, docs/tmpl/section-uri-factory.sgml: Remove
+ remaining uri-factory files
+
+ * src/raptor_general.c:
+ (raptor_world_set_log_handler): Allow setting after world is open.
+
+ * docs/tmpl/section-unused.sgml: Update doc tmpls
+
+ * docs/raptor-1-to-2-map.tsv: raptor_new_iostream_from_handler is
+ arg change. no notes
+
+ * docs/raptor-1-to-2-map.tsv: raptor_uri_is_file_uri is just a
+ rename
+
+ * docs/format-changes.pl: tweak format_notes regexes
+
+ * docs/raptor-1-to-2-map.tsv: more deprecation notes
+
+ * docs/raptor-1-to-2-map.tsv: update raptor_new_identifier/_v2
+ notes
+
+ * docs/raptor-1-to-2-map.tsv: raptor_syntax_name_check and
+ raptor_syntax_name_check_v2 replaced by
+ raptor_world_is_parser_name
+
+ * docs/format-changes.pl: Make format_notes() take is_inline param
+
+ * docs/format-changes.pl: remove # from formatted type name
+
+ * docs/format-changes.pl: format notes
+
+ * docs/format-changes.pl: format notes when present
+
+ * docs/raptor-1-to-2-map.tsv: Add change notes field
+
+ * docs/format-changes.pl: read notes field
+
+ * docs/format-changes.pl: ignore comments
+
+2010-03-08 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_general.c:
+ (raptor_world_set_flag): Set uri_interning to passed in value.
+
+2010-03-07 Dave Beckett <dave@dajobe.org>
+
+ * docs/format-changes.pl: headers for changed
+
+ * docs/format-changes.pl: adjust headers
+
+ * docs/.gitignore, docs/Makefile.am, docs/format-changes.pl,
+ docs/raptor-docs.xml: Add raptor changes formatting script
+ format-changes.pl
+
+ * docs/raptor-1-to-2-map.tsv, raptor-1-to-2-map.tsv: Move
+ raptor-1-to-2-map.tsv to docs
+
+ * raptor-1-to-2-map.tsv: move to 1 line TSV
+
+ * raptor-1-to-2-map.tsv: raptor 1 to raptor 2 function API map
+
+ * docs/raptor-sections.txt: Add RAPTOR_V2_AVAILABLE to sections.
+
+ * docs/tmpl/section-unused.sgml, src/raptor_uri.c: fix docbook
+ escapes for % in comments
+
+ * src/raptor_uri.c: autodocs and docbook for uri-hex literals
+
+ * src/raptor.h: autodocs for raptor_data_compare_function and
+ raptor_data_free_function
+
+ * src/raptor.h: autodocs for raptor_avltree,
+ raptor_avltree_iterator and raptor_avltree_visit_function.
+
+ * src/raptor_avltree.c: autodocs for raptor_avltree_print
+
+ * src/raptor_unicode.c: autodocs and docbook for linking to urls
+ with #s
+
+ * src/raptor_xml.c: autodocs
+
+ * src/raptor_statement.c: autodocs
+
+ * docs/tmpl/section-avltree.sgml: Added avltree template
+
+ * docs/tmpl/section-general.sgml, docs/tmpl/section-iostream.sgml,
+ docs/tmpl/section-option.sgml, docs/tmpl/section-sequence.sgml,
+ docs/tmpl/section-stringbuffer.sgml,
+ docs/tmpl/section-triples.sgml, docs/tmpl/section-unicode.sgml,
+ docs/tmpl/section-unused.sgml, docs/tmpl/section-uri.sgml,
+ docs/tmpl/section-world.sgml,
+ docs/tmpl/section-xml-namespace.sgml,
+ docs/tmpl/section-xml-qname.sgml, docs/tmpl/section-xml.sgml:
+ Updated sgml templates
+
+ * docs/raptor-sections.txt: raptor_avltree_dump not
+ raptor_avltree_debug
+
+ * docs/raptor-sections.txt, src/raptor.h, src/raptor_avltree.c:
+ Added enum raptor_avltree_bitflags for raptor_new_avltree() flags
+ with docs. raptor_avltree_bitflags added with docs on flags.
+
+ (raptor_new_avltree): Updated docs to point to above.
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_libxml.c: Rename
+ raptor_world_flag enum values to remove plural FLAGS
+
+ * src/raptor.h: autodocs
+
+ * src/raptor_statement.c: autodocs
+
+ * docs/raptor-sections.txt: autodocs
+
+ * src/raptor_iostream.c: autodocs
+
+ * src/raptor_locator.c: autodocs
+
+ * src/raptor_avltree.c: autodocs
+
+ * src/raptor.h: autodocs
+
+ * src/raptor_namespace.c: autodocs
+
+ * docs/raptor-sections.txt: more new names
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_internal.h,
+ src/raptor_libxml.c, src/raptor_uri.c: Give raptor_world a flags
+ mechanism for pre-open configuration
+
+ raptor_world_flags: Replaces raptor_libxml_flags and is an enum
+ not a bitmask.
+
+ Add RAPTOR_WORLD_FLAGS_URI_INTERNING flag for disabling URI
+ interning using an AVL-Tree.
+
+ (raptor_world_set_libxslt_security_preferences,
+ raptor_world_set_log_handler): Gains an int return value to report
+ failure if world is already opened.
+
+ (raptor_world_set_flag): Replaces raptor_world_set_libxml_flags
+ and has both an enum flag, int value and int error return. Update
+ libxml code looking for world->libxml_flags to use new enum names
+ as bitmasks.
+
+ * src/Makefile.am, src/raptor_general.c, src/raptor_log.c: Move
+ raptor logging code to new raptor_log.c
+
+2010-03-06 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_option.c: code style static int
+ raptor_option_uri_prefix_len replaces #define
+ RAPTOR_OPTION_URI_PREFIX_LEN
+
+ * src/raptor_parse.c: autodocs
+
+ * src/raptor.h, src/raptor_general.c: Added raptor_domain and add
+ it to raptor_log_message structure
+
+2010-03-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_general.c: Code style
+
+2010-03-01 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_internal.h,
+ utils/rapper.c, utils/rdfdiff.c: Added raptor_log_message for
+ message callbacks.
+
+ raptor_log_message: added struct
+
+ raptor_log_handler function prototype now takes just user dat and
+ message.
+
+ raptor_world_s gains a static raptor_log_message for use in errors.
+ No field here is reference counted.
+
+ (raptor_log_error): Rename arg to text and init raptor_log_message
+ structure in world object.
+
+ Updated rapper and rdfdiff log handler functions to new signature.
+
+2010-02-26 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_general.c:
+ (raptor_log_level_get_label): Added
+
+ * src/raptor.h: Move raptor_log_level earlier
+
+ * src/turtle_parser.y:
+ (graph): Do not free graph name twice for TRIG { }
+
+ * src/raptor_general.c: 2010
+
+2010-02-26 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_statement.c:
+ (raptor_term_compare): Allow NULL terms in comparison
+
+ * src/raptor_statement.c:
+ (raptor_new_statement_from_nodes): free passed in graph term on
+ alloc failure
+
+ * src/turtle_parser.y:
+ (graph): No need to NULL something that's already NULL.
+
+ * src/raptor.h:
+ (raptor_statement): fixed docs
+
+ * src/turtle_parser.y:
+ (raptor_turtle_parse_terminate): Set graph_name to NULL after
+ freeing to prevent a double free.
+
+2010-02-25 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_common.h, src/turtle_parser.y: Generate graph name in
+ raptor_statement object for TRIG syntax
+
+ struct raptor_turtle_parser_s gains raptor_term* graph_name.
+
+ Turtle parser: if trig is set, update graph_name field when { and
+ } are parsed, in addition to the raptor_parser_set_graph_name()
+ calls
+
+ (raptor_turtle_parse_terminate): Free any existing graph name.
+
+ (raptor_turtle_generate_statement): Set statement graph name for
+ TRIG, free it if copied in. End early if there is no statement
+ handler, no need to compute and free terms.
+
+ * src/raptor_statement.c:
+ (raptor_free_term): Return if term is nULL
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_statement.c,
+ src/turtle_parser.y: Added graph name to raptor_statement
+
+ raptor_statement typedef gains an optional raptor_term* graph
+ field for the graph name of the triple.
+
+ (raptor_new_statement_from_nodes): Gains an optional graph
+ argument.
+
+ (raptor_statement_copy, raptor_free_statement,
+ raptor_statement_print, raptor_statement_print_as_ntriples):
+ Updated to use graph field if present. Updated
+ raptor_new_statement_from_nodes() callers in turtle parser.
+
+2010-02-23 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_uri.c:
+ (raptor_uri_finish): Set world->uris_tree to NULL after freeing
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_serialize_init): Free rdf_type_uri, uri_term -
+ already copied to other objects.
+
+2010-02-22 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_parse.c:
+ (raptor_parser_factory_add_alias): Do not leak previously added
+ aliases. FIXME: Discards previously added aliases.
+
+2010-02-21 Dave Beckett <dave@dajobe.org>
+
+ * src/ntriples_parse.c, src/raptor.h, src/raptor_nfc_test.c,
+ src/raptor_unicode.c, src/turtle_common.c:
+ (raptor_unicode_utf8_string_put_char): renamed from
+ raptor_unicode_string_put_char()
+
+ * src/raptor.h, src/raptor_internal.h: Export raptor_term_copy to
+ public API.
+
+ * docs/raptor-sections.txt, src/ntriples_parse.c, src/raptor.h,
+ src/raptor_internal.h, src/raptor_nfc.c, src/raptor_nfc_test.c,
+ src/raptor_turtle_writer.c, src/raptor_unicode.c,
+ src/raptor_xml.c, src/turtle_common.c: Define
+ raptor_unicode_max_codepoint for magic number U+10FFFF
+
+2010-02-18 Dave Beckett <dave@dajobe.org>
+
+ * src/ntriples_parse.c, src/raptor.h, src/raptor_nfc.c,
+ src/raptor_nfc_test.c, src/raptor_turtle_writer.c,
+ src/raptor_unicode.c, src/raptor_xml.c:
+ (raptor_unicode_utf8_string_get_char): Renamed from
+ raptor_unicode_decode_utf8_char()
+
+ * src/raptor.h, src/raptor_nfc_test.c, src/raptor_unicode.c:
+ (raptor_unicode_check_utf8_string): Renamed from
+ raptor_utf8_check()
+
+ * src/raptor_internal.h, src/raptor_rdfxml.c,
+ src/raptor_unicode.c:
+ (raptor_unicode_check_utf8_nfc_string): Renamed from
+ raptor_utf8_is_nfc() Internal function rename.
+
+ * src/ntriples_parse.c, src/raptor.h, src/raptor_nfc.c,
+ src/raptor_nfc_test.c, src/raptor_turtle_writer.c,
+ src/raptor_unicode.c, src/raptor_xml.c:
+ (raptor_unicode_decode_utf8_char): Renamed from
+ raptor_utf8_to_unicode_char()
+
+ * src/Makefile.am, src/raptor_unicode.c, src/raptor_utf8.c:
+ Renamed raptor_utf8.c to raptor_unicode.c
+
+ * src/raptor.h, src/raptor_abbrev.c, src/raptor_avltree.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_turtle.c,
+ src/raptor_set.c, src/raptor_uri.c: raptor_new_avltree() loses
+ world arg. (raptor_new_avltree): Delete world arg that is unused
+ and not necessary to tie an avltree to raptor world.
+
+ * src/raptor.h, src/raptor_iostream.c, src/raptor_json_writer.c,
+ src/raptor_namespace.c, src/raptor_qname.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_ntriples.c, src/raptor_serialize_simple.c,
+ src/raptor_turtle_writer.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c: Rename raptor_iostream write bytes/string
+ method to raptor_iostream_TYPE_write form with iostream arg at
+ end.
+
+ (raptor_iostream_write_bytes, raptor_iostream_write_byte,
+ raptor_iostream_read_bytes): Put iostream arg at end but don't move
+ type, bytes are the lowest level iostream read/writing routines so
+ use a different convention to writing 'types'.
+
+ (raptor_iostream_string_write); Renamed from
+ raptor_iostream_write_string().
+
+ (raptor_iostream_counted_string_write): Renamed from
+ raptor_iostream_write_counted_string(). Update callers - lots of
+ them!
+
+ * src/raptor_iostream.c:
+ (raptor_iostream_write_bytes): Move offset after a successful write.
+
+ * src/raptor.h, src/raptor_iostream.c, src/raptor_json_writer.c,
+ src/raptor_serialize_simple.c, src/raptor_turtle_writer.c,
+ src/raptor_xml.c: Rename iostream writing methods to
+ raptor_iostream_TYPE_write form.
+
+ (raptor_iostream_decimal_write): Renamed from
+ raptor_iostream_write_decimal()
+
+ (raptor_iostream_hexadecimal_write): Renamed from
+ raptor_iostream_format_hexadecimal()
+
+ (raptor_stringbuffer_write): Renamed from
+ raptor_iostream_write_stringbuffer()
+
+ (raptor_uri_write): Renamed from raptor_iostream_write_uri()
+
+ (raptor_xml_element_write): Renamed from
+ raptor_iostream_write_xml_element()
+
+ * src/raptor.h, src/raptor_abbrev.c, src/raptor_namespace.c,
+ src/raptor_serialize_turtle.c, src/raptor_turtle_writer.c: Renamed
+ raptor_namespaces_qname_from_uri() to
+ raptor_new_qname_from_namespace_uri()
+
+ * src/raptor.h, src/raptor_xml.c, src/raptor_xml_writer.c: Rename
+ XML escaping utility functions to be consistent
+
+ (raptor_xml_escape_string_any): Renamed from
+ raptor_xml_any_escape_string()
+
+ (raptor_xml_escape_string_any_write): Renamed from
+ raptor_xml_any_escaped_string_write()
+
+ (raptor_xml_escape_string_write): Renamed from
+ raptor_xml_escaped_string_write()
+
+2010-02-18 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_internal.h, src/raptor_sax2.c:
+ (raptor_sax2_init,raptor_sax2_finish,raptor_world_s): Removed
+ sax2_initialized flag as no longer necessary.
+
+ * utils/rdfdiff.c: raptor_parse_uri() -> raptor_parser_parse_uri()
+
+2010-02-17 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-sections.txt, docs/tmpl/section-general.sgml,
+ docs/tmpl/section-iostream.sgml, docs/tmpl/section-locator.sgml,
+ docs/tmpl/section-option.sgml, docs/tmpl/section-parser.sgml,
+ docs/tmpl/section-serializer.sgml, docs/tmpl/section-triples.sgml,
+ docs/tmpl/section-uri.sgml, docs/tmpl/section-world.sgml,
+ docs/tmpl/section-www.sgml, docs/tmpl/section-xml-namespace.sgml,
+ docs/tmpl/section-xml-qname.sgml, docs/tmpl/section-xml.sgml:
+ update doc templates and sections for function renames
+
+ * src/raptor.h, src/raptor_serialize.c,
+ src/raptor_serialize_rss.c, utils/rapper.c: Rename serializer
+ methods to match raptor_CLASS_METHOD convention
+
+ (raptor_serializer_serialize_end): Renamed from
+ raptor_serialize_end().
+
+ (raptor_serializer_set_namespace): Renamed from
+ raptor_serialize_set_namespace().
+
+ (raptor_serializer_set_namespace_from_namespace): Renamed from
+ raptor_serialize_set_namespace_from_namespace().
+
+ (raptor_serializer_start_to_file_handle): Renamed from
+ raptor_serialize_start_to_file_handle().
+
+ (raptor_serializer_start_to_filename): Renamed from
+ raptor_serialize_start_to_filename().
+
+ (raptor_serializer_start_to_iostream): Renamed from
+ raptor_serialize_start_to_iostream().
+
+ (raptor_serializer_start_to_string): Renamed from
+ raptor_serialize_start_to_string().
+
+ (raptor_serializer_serialize_statement): Renamed from
+ raptor_serialize_statement(). Updated callers
+
+ * src/raptor.h, src/raptor_grddl.c, src/raptor_internal.h,
+ src/raptor_parse.c, utils/rapper.c: Rename parse methods to match
+ raptor_CLASS_METHOD convention
+
+ (raptor_parser_parse_file_stream): Renamed from
+ raptor_parse_file_stream()
+
+ (raptor_parser_parse_file): Renamed from raptor_parse_file()
+
+ (raptor_parser_parse_uri): Renamed from raptor_parser_uri()
+
+ (raptor_parser_parse_uri_with_connection): Renamed from
+ raptor_parse_uri_with_connection()
+
+ * utils/rapper.c:
+ Update call to raptor_namespaces_format
+
+ * src/raptor.h, src/raptor_namespace.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c, utils/rapper.c: Rename namespace methods
+ to match raptor_CLASS_METHOD convention
+
+ (raptor_namespace_format_as_xml): Renamed from
+ raptor_namespaces_format()
+
+ (raptor_xml_namespace_string_parse): Renamed from
+ raptor_new_namespace_parts_from_string() since it is not a
+ constructor for anything. Tidied docs and code. Updated callers.
+
+ * src/raptor.h, src/raptor_www.c:
+ (raptor_world_set_www_flags): Renamed from
+ raptor_www_no_www_library_init_finish() and gains flags arg.
+
+ * src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_statement.c: raptor_term_print_as_ntriples() now uses
+ raptor_term_ntriples_write()
+
+ (raptor_term_print_as_ntriples): Put handle at end like other
+ FILE* print methods. Update callers
+
+ * src/raptor.h, src/raptor_general.c: Remove
+ raptor_print_ntriples_string() debug function
+
+ * src/raptor.h, src/raptor_serialize_ntriples.c: Give
+ raptor_term_ntriples_write() and raptor_statement_ntriples_write()
+ a return value
+
+ * src/raptor.h, src/raptor_json_writer.c, src/raptor_namespace.c,
+ src/raptor_qname.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_ntriples.c, src/raptor_turtle_writer.c,
+ src/raptor_xml.c, src/raptor_xml_writer.c: Rename write to
+ iostream methods of class to follow raptor_CLASS_write() form
+
+ (raptor_term_ntriples_write): Renamed from
+ raptor_iostream_write_term_ntriples() and moved iostream to last
+ arg.
+
+ (raptor_xml_any_escaped_string_write): Renamed from
+ raptor_iostream_write_xml_any_escaped_string() and moved iostream
+ to last arg.
+
+ (raptor_xml_escaped_string_write): Renamed from
+ raptor_iostream_write_xml_escaped_string() and moved iostream to
+ last arg.
+
+ (raptor_qname_write): Renamed from raptor_iostream_write_qname()
+ and moved iostream to last arg.
+
+ (raptor_namespace_write): Renamed from
+ raptor_iostream_write_namespace() and moved iostream to last arg.
+
+ (raptor_string_ntriples_write): Renamed from
+ raptor_iostream_write_string_ntriples() and moved iostream to last
+ arg.
+
+ (raptor_string_python_write): Renamed from
+ raptor_iostream_write_string_python() and moved iostream to last
+ arg.
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_www.c: Move
+ raptor_www_init and raptor_www_finish to internal API.
+
+ * src/raptor_parse.c: Define ACCEPT_HEADER_LEN since this has been
+ a crash bug twice.
+
+ * src/ntriples_parse.c:
+ (raptor_ntriples_generate_statement): Let datatype URI be freed
+ after making literal term.
+
+ * src/raptor_parse.c:
+ (raptor_parser_get_accept_header): strncpy 9
+
+ * src/ntriples_parse.c: Use raptor_free_statement() to clear
+ static statement.
+
+ * src/raptor_statement.c:
+ (raptor_free_statement): use if(dynamic...)
+
+ * src/raptor_statement.c:
+ (raptor_free_statement): NULL triple part pointers after free
+ terms.
+
+ * src/ntriples_parse.c:
+ (raptor_ntriples_parse_init): Init static statement.
+
+2010-02-16 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_www_test.c: test fix for www
+
+ * src/raptor.h, src/raptor_grddl.c, src/raptor_parse.c,
+ src/raptor_www.c, src/raptor_www_test.c: Rename raptor_www
+ constructor / destructor to standard names
+
+ (raptor_new_www): Renamed from raptor_www_new
+
+ (raptor_new_www_with_connection): Renamed from
+ raptor_www_new_with_commection
+
+ (raptor_free_www): Renamed from raptor_www_free Update all
+ callers.
+
+2010-02-16 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_statement.c:
+ (raptor_free_statement): Free terms contained in statically
+ allocated statements.
+
+ * src/raptor_iostream.c: raptor_iostream write_bytes handlers are
+ supposed to return the number of bytes written or 0 on failure
+
+ * src/raptor.h, src/raptor_uri.c:
+ (raptor_uri_get_world): Added new API helper function. Needed to
+ prevent API breakage in librdf_uri.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_statement): Fixed compilation with
+ RAPTOR_DEBUG > 1.
+
+ * src/turtle_parser.y: Replaced raptor_term_print() calls with
+ raptor_term_print_as_ntriples() to compile with RAPTOR_DEBUG > 1.
+
+2010-02-14 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-iostream.sgml, docs/tmpl/section-locator.sgml,
+ docs/tmpl/section-option.sgml, docs/tmpl/section-parser.sgml,
+ docs/tmpl/section-sequence.sgml,
+ docs/tmpl/section-serializer.sgml, docs/tmpl/section-world.sgml,
+ docs/tmpl/section-xml.sgml: Update generated docs
+
+ * README.html: GIT
+
+ * src/raptor_parse.c:
+ (raptor_parser_get_accept_header): Static accept header should be
+ 9 when string is correct.
+
+2010-02-12 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor.h: Reintroduced RAPTOR_V2_AVAILABLE flag so that
+ library users can support both raptor1 and raptor2.
+
+2010-02-11 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor.h, src/raptor_internal.h: Pulled
+ raptor_statement_init(), raptor_free_statement() to public
+ API.
+
+2010-02-10 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_statement.c:
+
+ Pulled raptor_new_term_from_{uri,literal,blank}(),
+ raptor_free_term() to public API. Added API documentation.
+
+2010-02-09 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_option.c:
+ Fixed warnings about enum-int mismatches.
+
+2010-02-05 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_rss.c, src/raptor_sax2.c,
+ src/raptor_serialize.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_rss.c,
+ src/raptor_serialize_turtle.c, src/raptor_set.c,
+ src/raptor_uri.c, src/raptor_xml.c, src/raptor_xml_writer.c:
+ indent + whitespace
+
+ * src/raptor_rdfxml.c: Made daml_namespace_uri_string_len
+ const. Does not need to be initialised data.
+
+ * src/raptor_iostream.c:
+ (raptor_iostream_write_end): Return success (0) if iostream
+ handler does not implement write_end. Was returning an
+ uninitialized value (most likely non-0).
+
+ * src/fix-bison, src/turtle_parser.y:
+ Removed fix-bison/yydestruct hack to pass in YYPARAM* to
+ %destructors. Was required for raptor_uri cleanup before
+ raptor_uri became a struct containting raptor_world*.
+
+ * src/raptor_www.c:
+ (raptor_www_init,raptor_www_finish): Pulled functionality
+ from similar _common functions (removed, no longer a need to
+ share functionality).
+
+ * src/raptor_serialize_rdfxmla.c:
+ Remove accidental formatting
+ whitespace from string literal.
+
+ * src/raptor_rfc2396.c: Fixed code formatter artifact in
+ comment URL.
+
+ * src/raptor.h: Fixed typo in comment.
+
+2010-02-06 Dave Beckett <dave@dajobe.org>
+
+ * tests/turtle/Makefile.am: Add check-warn-rdf to check-local
+
+ * tests/turtle/Makefile.am: Move test-35 to TEST_WARN_FILES
+
+ * src/raptor_statement.c:
+ (raptor_new_term_from_literal): Remove language used with
+ typed literal and generate warning
+
+ * src/turtle_parser.y: Fix warning message
+
+ * src/turtle_parser.y: Remove language used with typed
+ literal and generate warning
+
+ * tests/turtle/Makefile.am, tests/turtle/test-35.out,
+ tests/turtle/test-35.ttl: Add turtle test 35 to ensure
+ language is removed when datatype is present
+
+2010-02-05 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-sections.txt: some more fn renames
+
+ * docs/raptor-docs.xml: rename section-feature.xml to
+ section.option.xml
+
+ * src/raptor_parse.c:
+ (main): need program even when not debugging
+
+ * docs/raptor-sections.txt, docs/tmpl/section-feature.sgml,
+ docs/tmpl/section-option.sgml: Rename feature to option - tutorial
+ docs not updated
+
+ * utils/rapper.c: Use raptor_option_get_value_type_label to print
+ option types
+
+ * src/raptor.h, src/raptor_option.c:
+ (raptor_option_get_value_type_label): Added
+
+ * src/raptor_option.c: Update option descriptions to give specific
+ instance names.
+
+ * utils/rapper.c:
+ feature->option in API calls except leave -f/--feature alone
+
+ * src/raptor_internal.h, src/raptor_option.c: Renamed
+ raptor_options_enumerate_common to
+ raptor_world_options_enumerate_common
+
+ * src/raptor_uri.c:
+ (main): Make test code less verbose except when very debuggy.
+
+ * src/raptor_rfc2396.c:
+ (main): Make test code less verbose except when very debuggy.
+
+ * src/raptor_www_test.c:
+ (main): Make test code less verbose except when very debuggy.
+
+ * src/raptor_sequence.c:
+ (main): Make test code less verbose except when very debuggy.
+
+ * src/raptor_iostream.c:
+ (main): Make test code less verbose except when very debuggy.
+
+ * src/raptor_stringbuffer.c:
+ (main): Make test code less verbose except when very debuggy.
+
+ * src/raptor_parse.c:
+ (main): Make test code less verbose except when very debuggy.
+
+ * src/raptor_option.c: Restore old feature URI prefix
+
+ * src/Makefile.am, src/raptor.h, src/raptor_feature.c,
+ src/raptor_grddl.c, src/raptor_internal.h, src/raptor_option.c,
+ src/raptor_parse.c, src/raptor_rdfxml.c, src/raptor_rss.c,
+ src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_turtle.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Rename
+ feature to option
+
+ * src/raptor_feature.c, src/raptor_parse.c, src/raptor_sax2.c,
+ src/raptor_serialize.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c: Move raptor_world_enumerate_*_features
+ functions to raptor_feature.c
+
+ * src/raptor_serialize.c: #autodocs
+
+ * src/raptor_feature.c, src/raptor_internal.h, src/raptor_sax2.c,
+ src/raptor_serialize.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c: Replace raptor_feature_get_areas with
+ raptor_feature_is_valid_for_area
+
+ (raptor_feature_get_areas):
+ Deleted. (raptor_feature_is_valid_for_area): Added to check if a
+ feature is valid for a given area; this all the calls to
+ raptor_feature_get_areas() ever was used for.
+
+ * src/raptor_xml_writer.c: Check for valid xml writer features
+ before getting or setting them.
+
+ (raptor_xml_writer_set_feature,
+ raptor_xml_writer_set_feature_string,
+ raptor_xml_writer_get_feature,
+ raptor_xml_writer_get_feature_string): Use
+ raptor_feature_get_areas() to check the features are valid.
+
+ * src/raptor_internal.h, src/raptor_turtle_writer.c: Check for
+ valid turtle writer features before setting them.
+
+ (raptor_world_enumerate_turtle_writer_features): Renamed from
+ raptor_turtle_writer_features_enumerate()
+
+ (raptor_turtle_writer_set_feature,
+ raptor_turtle_writer_set_feature_string): Use
+ raptor_feature_get_areas()
+
+ * src/raptor_serialize.c: Check for valid serializer features
+ before getting them
+
+ (raptor_serializer_get_feature,
+ raptor_serializer_get_feature_string): Use
+ raptor_feature_get_areas() to check for valid serializer features.
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_internal.h,
+ src/raptor_parse.c, src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Remove unused
+ RAPTOR_FEATURE_START_URI
+
+ * src/raptor_serialize.c: Check for valid serializer features
+ before setting them
+
+ (raptor_serializer_set_feature,
+ raptor_serializer_set_feature_string): Use
+ raptor_feature_get_areas() to check for valid serializer features.
+
+ * src/raptor.h, src/raptor_sax2.c: Added
+ raptor_world_enumerate_sax2_features()
+
+ * src/raptor_sax2.c: Check for valid features before setting
+ them
+
+ (raptor_sax2_set_feature): Check for a feature that applies using
+ raptor_feature_get_areas() then set the values.
+
+ * src/raptor_feature.c, src/raptor_internal.h: Added
+ raptor_feature_get_areas()
+
+ * src/raptor_internal.h: Add RAPTOR_FEATURE_AREA_NONE
+
+ * src/raptor_feature.c, src/raptor_internal.h: Added
+ RAPTOR_FEATURE_AREA_SAX2 for raptor_sax2 features
+
+ raptor_feature_area gains RAPTOR_FEATURE_AREA_SAX2
+
+ raptor_features_list: Use RAPTOR_FEATURE_AREA_SAX2 for
+ RAPTOR_FEATURE_NORMALIZE_LANGUAGE and RAPTOR_FEATURE_NO_NET.
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_sax2.c,
+ src/raptor_serialize.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c: Reapply: Remove
+ RAPTOR_FEATURE_ASSUME_IS_RDF - obsolete since 2003
+
+ Reapply GIT d7b9a598372cf1630dad79943ecd262427240719
+
+ raptor_feature enum loses RAPTOR_FEATURE_ASSUME_IS_RDF
+
+ (raptor_parser_set_feature, raptor_parser_get_feature): Remove check
+ for RAPTOR_FEATURE_ASSUME_IS_RDF.
+
+ Remove all case RAPTOR_FEATURE_ASSUME_IS_RDF:
+
+ * ChangeLog, src/raptor.h, src/raptor_feature.c,
+ src/raptor_internal.h, src/raptor_parse.c, src/raptor_sax2.c,
+ src/raptor_serialize.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c: Revert the commits that removed the
+ switch()s around features
+
+ Reverts commits
+ 60c814c462961b42e3e54dde1a4fb31bb274b2a8
+ c0db820178c7b4df4d22d7b2e9bbbfb808e21ad4
+ 8834cdc5fe3b9191b999dd1fb438912d19335771
+ aaa15968153874b15cd084301fc9d01e625503c2
+ 961f3225876929de7aa111b14bfa2470f1738175
+ 791de39082f36e449f586021797e768b798bb4f3
+ 24d277a1a920c393dd905be063784153f7ea6b00
+ 30737c28676891e0602bd2f39c7fe4d2ad56ed03
+ 85f3d2a285238f4dae1f3a344387be7e71afeb50
+ 65f264148fcb4fba792dea2fe40c079ffaa2af0a
+ 33df189465408c1a877a2a8b8ce6ad03c17e3f32
+ c9baae1679a55ac10b3bd91303679c7974c10335
+ bf43e7b8a12818742420c7fd860629a10d9584f8
+ 6355375feca96d6dcc2be74f9dd3422f30ff48a6
+ faa08164fcbd21a390633adfc75ee56595b73857
+ d7b9a598372cf1630dad79943ecd262427240719
+ 6c28294c30f870f8a26c985af412477cafc4cba9
+
+2010-02-04 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xml_writer.c: code style
+
+ * src/raptor_xml_writer.c:
+ (raptor_xml_writer_get_feature, raptor_xml_writer_set_feature):
+ Use raptor_feature_get_areas() to check for valid xml writer
+ features.
+
+ * src/raptor_turtle_writer.c:
+ (raptor_turtle_writer_get_feature): Use raptor_feature_get_areas()
+ to check for valid turtle writer features.
+
+ * src/raptor_internal.h, src/raptor_turtle_writer.c: Set turtle
+ writer features using feature data tables
+
+ (raptor_turtle_writer_set_feature): Use raptor_feature_get_areas.
+
+ (raptor_world_enumerate_turtle_writer_features): Renamed from
+ raptor_turtle_writer_features_enumerate()
+
+ * src/raptor_serialize.c: Make raptor_serializer_get_feature and
+ raptor_serializer_get_feature_string use area and numeric checks
+ to remove cases
+
+ (raptor_serializer_set_feature_string): docs.
+
+ (raptor_serializer_get_feature,
+ raptor_serializer_get_feature_string): Use
+ raptor_feature_get_areas() and raptor_feature_value_is_numeric()
+ to validate features for serializers.
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_internal.h,
+ src/raptor_serialize.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c: Remove unused RAPTOR_FEATURE_START_URI
+
+ * src/raptor_serialize.c:
+ (raptor_serializer_set_feature_string): Use
+ raptor_feature_get_areas() to check for valid serializer features.
+
+ * src/raptor_serialize.c:
+ (raptor_serializer_set_feature): Use raptor_feature_get_areas() to
+ check for valid serializer features.
+
+ * src/raptor_sax2.c:
+ (raptor_sax2_set_feature): use bit &
+
+ * src/raptor.h, src/raptor_sax2.c: Added
+ raptor_world_enumerate_sax2_features()
+
+ * src/raptor_sax2.c: Make raptor_sax2_set_feature smaller using
+ raptor_feature_get_areas
+
+ (raptor_sax2_set_feature): Check for a feature that applies using
+ raptor_feature_get_areas() then set the values.
+
+ * src/raptor_feature.c, src/raptor_internal.h: Added
+ raptor_feature_get_areas()
+
+ * src/raptor_internal.h: Add RAPTOR_FEATURE_AREA_NONE
+
+ * src/raptor_feature.c, src/raptor_internal.h: Added
+ RAPTOR_FEATURE_AREA_SAX2 for raptor_sax2 features
+
+ raptor_feature_area gains RAPTOR_FEATURE_AREA_SAX2
+
+ raptor_features_list: Use RAPTOR_FEATURE_AREA_SAX2 for
+ RAPTOR_FEATURE_NORMALIZE_LANGUAGE and RAPTOR_FEATURE_NO_NET.
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_parse.c,
+ src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Remove
+ RAPTOR_FEATURE_ASSUME_IS_RDF - obsolete since 2003
+
+ raptor_feature enum loses RAPTOR_FEATURE_ASSUME_IS_RDF
+
+ (raptor_parser_set_feature, raptor_parser_get_feature): Remove
+ check for RAPTOR_FEATURE_ASSUME_IS_RDF.
+
+ Remove all case RAPTOR_FEATURE_ASSUME_IS_RDF:
+
+ * src/raptor_parse.c: Use raptor_feature_value_is_numeric() in
+ get/set parser features
+
+ (raptor_parser_set_feature, raptor_parser_get_feature): Use
+ raptor_feature_value_is_numeric rather than huge cases with very
+ similar checks.
+
+ * src/turtle_parser.y: Remove obsolete raptor_init()
+ raptor_finish() calls
+
+ * utils/rapper.c: Update for feature type api
+
+ * src/raptor_feature.c, src/raptor_internal.h, src/raptor_parse.c,
+ src/raptor_serialize.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c: Added raptor_feature_value_is_numeric for
+ internal use.
+
+ (raptor_feature_value_is_numeric): Added.
+ Replaced most uses of same pattern:
+ int value_is_string = (raptor_feature_get_value_type(feature) == RAPTOR_FEATURE_VALUE_TYPE_STRING);
+ if(!value_is_string)
+ ...
+ with a raptor_feature_value_is_numeric() call.
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_internal.h,
+ src/raptor_parse.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Add
+ raptor_feature_value_type enum and use for features
+
+ raptor_features_list gains a raptor_feature_value_type value_type
+ field and uses enum values in data.
+
+ raptor_feature_area gains RAPTOR_FEATURE_AREA_TURTLE_WRITER since
+ XML writer features don't all apply; just indenting ones.
+
+ typedef raptor_feature_value_type added to public API
+
+ (raptor_feature_get_value_type): Renamed from
+ raptor_feature_value_type to return raptor_feature_value_type and
+ updated callers.
+
+ * src/raptor_feature.c: #ws
+
+ * src/raptor_feature.c: Use raptor_feature_area to split
+ raptor_features_list area / value type.
+
+ raptor_features_list flags field is split into area and value_type.
+
+ Use raptor_features_list enum values in data.
+
+ (raptor_features_enumerate_common): Get features for an
+ area. (raptor_feature_value_type): Use VT_STRING define.
+
+ * src/raptor_feature.c, src/raptor_internal.h, src/raptor_parse.c,
+ src/raptor_serialize.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c: Added raptor_feature_area enum for
+ raptor_features_enumerate_common()
+
+ raptor_feature_area added internally.
+
+ (raptor_features_enumerate_common): Switch flags arg to use enum.
+ Update callers.
+
+ * src/raptor_parse.c: #autodocs
+
+ * src/raptor_feature.c: Turn feature flag magic numbers into
+ defines
+
+ * src/raptor_feature.c: Add feature flag 32 for features with
+ URI-string values
+
+ raptor_features_list: Split the flags into their bits and set
+ RAPTOR_FEATURE_START_URI and RAPTOR_FEATURE_ATOM_ENTRY_URI to have
+ URI string value.
+
+2010-02-03 Dave Beckett <dave@dajobe.org>
+
+ * docs/.gitignore: Ignore bak files
+
+ * docs/tmpl/section-general.sgml, docs/tmpl/section-locator.sgml,
+ docs/tmpl/section-sequence.sgml, docs/tmpl/section-uri.sgml:
+ Update docbook tmpls
+
+ * src/raptor_sequence.c: code style
+
+ * src/raptor_sequence.c: Use RAPTOR_SEQUENCE_MIN_CAPACITY to
+ declare magic number
+
+ * src/raptor_sequence.c: #autodocs
+
+ * src/raptor.h, src/raptor_sequence.c: Make raptor_sequence_sort
+ take raptor_data_compare_function typedef
+
+ (raptor_sequence_sort): Adjusted parameters to use
+ raptor_data_compare_function. It's the same parameter type but
+ now via a typedef.
+
+ * src/raptor.h, src/raptor_iostream.c: iostream write_end now
+ returns a status code
+
+ typedef raptor_iostream_write_end_func returns an int
+
+ (raptor_iostream_write_end): Returns an int.
+
+ (raptor_filename_iostream_write_end): Update file write handlers
+ to return fclose value.
+
+ * src/raptor.h, src/raptor_iostream.c: Rename
+ raptor_iostream_handler2 to raptor_iostream_handler
+
+ typedef raptor_iostream_handler: renamed from
+ raptor_iostream_handler2
+
+ Update all callers and rename parameters and variables from
+ handler2 to handler.
+
+ (raptor_new_iostream_from_handler): Renamed from
+ raptor_new_iostream_from_handler2.
+
+ * src/ntriples_parse.c:
+ Remove support for xml"..." N-Triples
+ literals, long obsolete.
+
+ * tests/ntriples/Makefile.am, tests/ntriples/bad-07.nt: Add
+ bad07.nt to test literal form xml"..." is refused
+
+ * .gitignore:
+ do not ignore rdf files
+
+ * src/raptor.h, src/raptor_sequence.c: Remove
+ raptor_sequence_print_string from public API
+
+ (raptor_sequence_print_string): Moved to static and used for test
+ only.
+
+ * src/raptor.h, src/raptor_sequence.c: Remove
+ raptor_compare_strings from public API
+
+ (raptor_compare_strings): Moved to static and used for test only.
+
+ * src/raptor_abbrev.c, src/raptor_internal.h, src/raptor_rdfxml.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_statement.c,
+ src/turtle_parser.y: Rename raptor_new_term_from_term to
+ raptor_term_copy
+
+ (raptor_term_copy): Renamed from raptor_new_term_from_term Updated
+ all callers with new name. All copy constructors should be
+ raptor_CLASS_copy now.
+
+2010-01-30 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h: Reorder prototypes to group class and methods.
+
+ * src/raptor.h: #ws
+
+ * src/raptor.h, src/raptor_locator.c: Renamed
+ raptor_format_locator to raptor_locator_format
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_locator.c,
+ utils/rapper.c, utils/rdfdiff.c: raptor_print_locator renamed to
+ raptor_locator_print
+
+ * src/raptor.h: Reorder and group by class.
+
+ * src/raptor_avltree.c, src/raptor_internal.h: Remove legacy
+ raptor_avltree cursor functions
+
+ raptor_avltree loses cursor_iterator field.
+
+ (raptor_avltree_cursor_first, raptor_avltree_cursor_last,
+ raptor_avltree_cursor_prev, raptor_avltree_cursor_next,
+ raptor_avltree_cursor_get): Deleted
+
+ * src/raptor_avltree.c:
+ code style - whitespace, line breaks
+
+ * src/raptor.h, src/raptor_avltree.c: Rename
+ raptor_avltree_iterator_end to raptor_avltree_iterator_is_end
+
+ * src/raptor_avltree.c, src/raptor_internal.h: Move
+ raptor_avltree_s internals into raptor_avltree.c module.
+
+ * src/raptor_abbrev.c: Use term->world to save knowing internals
+ of raptor_avltree.
+
+ * docs/raptor-docs.xml, docs/raptor-sections.txt, src/raptor.h,
+ src/raptor_avltree.c, src/raptor_internal.h: Move raptor_avltree
+ to public API.
+
+ Public opaque typedefs: raptor_avltree and raptor_avltree_iterator
+
+ Public function typedefs: raptor_data_compare_function,
+ raptor_data_free_function and raptor_avltree_visit_function
+
+ Public functions: raptor_new_avltree, raptor_free_avltree,
+ raptor_avltree_add, raptor_avltree_delete, raptor_avltree_print,
+ raptor_avltree_remove, raptor_avltree_search,
+ raptor_avltree_set_print_handler, raptor_avltree_size,
+ raptor_avltree_visit, raptor_new_avltree_iterator,
+ raptor_free_avltree_iterator, raptor_avltree_iterator_end,
+ raptor_avltree_iterator_get and raptor_avltree_iterator_next NOTE:
+ These were not made public and seem to be internal/unused:
+ raptor_avltree_cursor_first, raptor_avltree_cursor_last,
+ raptor_avltree_cursor_prev, raptor_avltree_cursor_next and
+ raptor_avltree_cursor_get
+
+ * docs/raptor-docs.xml:
+ 2010
+
+ * NEWS.html, RELEASE.html:
+ Merge 1.4.21 news and release notes
+
+ * ChangeLog, ChangeLog.9, Makefile.am:
+ ChangeLog.9 for 2008
+
+ * .gitignore:
+ Do not ignore ChangeLog*
+
+ * utils/rapper.c, utils/rdfdiff.c: Update raptor_print_locator
+ calling convention
+
+2010-01-29 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_turtle.c: Ensure serialized Turtle names
+ are legal
+
+ (raptor_turtle_is_legal_turtle_qname): Added to enforce prefix and
+ local name character constraints.
+
+ (raptor_turtle_emit_resource): Use above to ensure that XML Qnames
+ that are not legal Turtle Qnames are never serialized.
+
+ Fixes Issue#0000337 http://bugs.librdf.org/mantis/view.php?id=337
+
+ * tests/turtle/Makefile.am, tests/turtle/test-34-out.ttl,
+ tests/turtle/test-34.ttl: Add Turtle serializing test 34 for not
+ serializing a qname with a .
+
+ Test for Issue#0000337 http://bugs.librdf.org/mantis/view.php?id=337
+
+2010-01-28 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c: Create a new set for checking for duplicate
+ rdf:ID at start of every parse.
+
+ (raptor_rdfxml_parse_init): Remove creating set from when parser is
+ constructed.
+
+ (raptor_rdfxml_parse_start): At start of parsing, delete any
+ existing id set and only create a new one if the feature
+ RAPTOR_FEATURE_CHECK_RDF_ID is enabled.
+
+ * src/turtle_lexer.l: Alter Turtle lexer to refuse to accept . in
+ namespace prefix/local names
+
+ Adjust Turtle lexer to match spec for the prefixName and name
+ tokens:
+ http://www.w3.org/TeamSubmission/2008/SUBM-turtle-20080114/#prefixName
+ http://www.w3.org/TeamSubmission/2008/SUBM-turtle-20080114/#name
+
+ This makes some previously accepted not-to-spec turtle documents be
+ rejected.
+
+ It makes new bad turtle syntax tests bad-21 and bad-22 pass.
+
+ (NCNAME_PREFIX): Updated for prefixName
+
+ (NCNAME): Update for name
+
+ Fixes Issue#0000326 http://bugs.librdf.org/mantis/view.php?id=326
+
+ * tests/turtle/Makefile.am, tests/turtle/bad-21.ttl,
+ tests/turtle/bad-22.ttl: Add bad turtle tests 21, 22 for . in
+ prefix and qname
+
+ * src/ntriples_parse.c: Make ntriples parser accept text/plain
+ with q=0.1
+
+ (raptor_ntriples_parser_register_factory): Register mime type
+ text/plain via raptor_parser_factory_add_mime_type.
+ Fixes Issue#0000319 http://bugs.librdf.org/mantis/view.php?id=319
+
+ * src/turtle_lexer.l: Make Turtle lexer handle \\ at end of
+ triple-quoted literals
+
+ Alter literal regex and let
+ raptor_stringbuffer_append_turtle_string report problems with
+ buffer ending in middle of \u and \U.
+
+ Add rule for bare \ on it's own which can only happen if input
+ ends on a \.
+
+ Fixes Issue#0000318 http://bugs.librdf.org/mantis/view.php?id=318
+
+ * tests/turtle/Makefile.am, tests/turtle/bad-20.ttl: Add
+ bad-20.ttl test for end of file in middle of \ escape
+
+ * tests/turtle/Makefile.am, tests/turtle/test-33.out,
+ tests/turtle/test-33.ttl: Added test-33 for \\ at end of
+ triple-quoted turtle literal
+
+ Added tests/turtle/test-33.ttl and tests/turtle/test-33.out files
+ to test Issue#0000318 http://bugs.librdf.org/mantis/view.php?id=318
+
+ * librdfa/iri.c: Update to librdfa GIT commit
+ 1979d7246a1d98f95bab78704a32b87cf95d1ef6
+
+ * librdfa/curie.c, librdfa/iri.c, librdfa/rdfa.c, librdfa/rdfa.h,
+ librdfa/triple.c: Merge librdfa changes to GIT
+ 88ca099befcb1b81be1a879663e5e891707e5239
+
+ Fixes several buffer alloc/realloc problems and failure to terminate
+ strings when using them with strstr().
+
+ Other librdfa changes:
+ - added "first" to list of allowed reserved words.
+ - allow @rel/@rev reserved word values to be in any case (TC 134)
+ - librdfa now treats the following characters as valid whitespace
+ characters: SPACE, \t, \n, \v, \f, and \r. (TC 131)
+ - fix generation of xml:lang if language was already in XML
+ Literal (TC 102)
+
+2010-01-26 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_general.c: ws
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_statement.c:
+ Adjust raptor_print_ntriples_string params to put FILE* last
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_locator.c: Adjust
+ raptor_print_locator params to put FILE* last like other print
+ methods.
+
+ * src/raptor_locator.c: ws
+
+ * src/raptor_general.c, src/raptor_internal.h, src/raptor_sax2.c:
+ Remove raptor_log_error_to_handlers and call raptor_log_error
+ directly.
+
+ (raptor_log_error_to_handlers): Deleted. Update several sax2
+ modules to call raptor_log_error instead.
+
+ * src/raptor_sequence.c:
+ indent
+
+ * src/raptor_abbrev.c, src/raptor_avltree.c,
+ src/raptor_internal.h: Update raptor_avltree to us
+ raptor_data_print_handler
+
+ typedef raptor_data_print_function: deleted
+
+ (raptor_new_abbrev_subject, raptor_avltree_set_print_handler): Use
+ raptor_data_print_handler* to replace raptor_data_print_function.
+
+ (raptor_print_abbrev_po): Swap args to match
+ raptor_data_print_handler calling convention.
+
+ * src/raptor.h, src/raptor_grddl.c, src/raptor_parse.c,
+ src/raptor_rss_common.c, src/raptor_sequence.c,
+ src/raptor_serialize.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_rss.c, src/turtle_parser.y: Rename
+ sequence-specific handlers typedefs to be more raptor-general
+
+ raptor_data_free_handler renamed from raptor_sequence_free_handler
+
+ raptor_data_context_free_handler renamed from
+ raptor_sequence_context_free_handler
+
+ raptor_data_print_handler renamed from
+ raptor_sequence_print_handler and update docs
+
+ raptor_data_context_print_handler renamed from
+ raptor_sequence_context_print_handler and update docs
+
+ Update all users.
+
+ * src/raptor_internal.h: Make all print methods return an int
+ status code
+
+ (raptor_statement_print, raptor_uri_print, raptor_sequence_print,
+ raptor_term_print_as_ntriples): Return int success code.
+
+ * src/raptor.h, src/raptor_sequence.c, src/raptor_statement.c,
+ src/raptor_uri.c: Make all print methods return an int status code
+
+ (raptor_statement_print, raptor_uri_print, raptor_sequence_print,
+ raptor_term_print_as_ntriples): Return int success code.
+
+ * src/raptor.h, src/raptor_grddl.c, src/raptor_sequence.c:
+ Update sequence _v2 constructor/methods to use _with_context
+
+ Rename typedefs for handlers to match, update constructor
+ documentation to explain the difference.
+
+ typedef raptor_sequence_context_print_handler renamed from
+ raptor_sequence_print_handler_v2.
+
+ raptor_sequence - renamed fields to add context_NAME for the
+ formerly _v2 handler names.
+
+ Add explanations of what they are for.
+
+ (raptor_new_sequence): autodocs and example of use
+
+ (raptor_new_sequence_with_context): Renamed from
+ raptor_new_sequence_v2 and autodocs.
+
+ * src/raptor.h, src/raptor_sequence.c: Remove unused
+ raptor_sequence_set_print_handler() and
+ raptor_sequence_set_print_handler_2().
+
+ (raptor_sequence_set_print_handler,
+ raptor_sequence_set_print_handler_v2): Deleted.
+
+2010-01-24 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_parser.y:
+ (verb): Get rdf:type term from static term and do not lose an URI
+ reference.
+
+ * src/turtle_parser.y: Free literal strings passed into
+ raptor_new_term_from_literal()
+
+ * src/turtle_parser.y:
+ (resource): Free uri object references when making resource from
+ QNAME_LITERAL or URI_LITERAL.
+
+ (raptor_turtle_generate_statement): Redo - free constructed terms
+
+ * src/turtle_parser.y:
+ (raptor_turtle_generate_statement): UNDO Free constructed terms
+
+ * src/turtle_parser.y:
+ (raptor_turtle_generate_statement): Free constructed terms
+
+ * src/turtle_parser.y: Free blank_id not blank
+
+ * src/raptor_rdfxml.c:
+ When creating new URIs or terms, free allocated values early.
+
+ Since functions like raptor_new_term_from_uri() take copies of their
+ arguments, any allocated objects passed in such as URIs or literals
+ should be freed. Adjust the code so that's done early.
+
+ (raptor_rdfxml_generate_statement): Free bag_predicate_uri.
+
+ (raptor_rdfxml_start_element_grammar): For rdf:ID, move the syntax
+ checks earlier to save extra complexity on errors.
+
+ Generally update all places to free generated IDs and constructed
+ URIs just after making raptor_uri or raptor_term
+
+ * src/raptor_uri.c: Use raptor_uri_resolve_uri_reference length
+ with raptor_new_uri_from_counted_string internally.
+
+ raptor_uri length is now unsigned int
+
+ (raptor_new_uri_from_counted_string): Add maintainer assert that URI
+ string is length it is declared to be.
+
+ (raptor_new_uri_relative_to_base): Use
+ raptor_uri_resolve_uri_reference return value to call
+ raptor_new_uri_from_counted_string.
+
+ (raptor_new_uri_for_rdf_concept): Correctly calcuate passed in
+ buffer length - it was malloced correctly.
+
+ (assert_uri_is_valid): Added.
+
+ (assert_uri_to_relative): Use above for checks.
+
+ * src/raptor_rfc2396.c:
+ (raptor_uri_resolve_uri_reference): set result_len when relative
+ is #frag.
+
+ * src/raptor_abbrev.c:
+ (raptor_new_qname_from_resource): Calculate the length of namespace
+ part of predicate URI correctly.
+
+ * src/raptor_abbrev.c:
+ (raptor_new_qname_from_resource): Namespace URI buffer was too short
+ by 1.
+
+ * src/raptor_serialize_rdfxmla.c: Replace rdf_xml_literal_uri with
+ use of static rdf:XMLLiteral URI
+
+ raptor_rdfxmla_serializer_context loses rdf_xml_literal_uri
+
+ (raptor_rdfxmla_serialize_init): Remove init with rdf_type_uri,
+ copy RAPTOR_RDF_type_term(). Remove rdf_xml_literal_uri.
+
+ (raptor_rdfxmla_serialize_terminate): Remove free of
+ rdf_xml_literal_uri.
+
+ * src/raptor_serialize_rdfxml.c:
+ Replace rdf_xml_literal_uri with use of static rdf:XMLLiteral URI
+
+ raptor_rdfxml_serializer_context loses rdf_xml_literal_uri
+
+ (raptor_rdfxml_serialize_init, raptor_rdfxml_serialize_terminate):
+ Remove init, free.
+
+ (raptor_rdfxml_serialize_statement): Use
+ RAPTOR_RDF_XMLLiteral_URI()
+
+ * src/raptor.h, src/raptor_rfc2396.c:
+ (raptor_uri_resolve_uri_reference): Now returns length of URI.
+
+2010-01-23 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_librdfa.c:
+ (raptor_librdfa_generate_statement): Use
+ raptor_new_uri_from_counted_string for rdf:XMLLiteral datatype.
+
+ * src/raptor_abbrev.c:
+ (raptor_new_qname_from_resource): Use
+ raptor_new_uri_from_counted_string.
+
+ * src/raptor_feature.c: Create feature URI prefix from counted URI
+ string
+
+ (raptor_features_enumerate_common): Use
+ raptor_new_uri_from_counted_string.
+
+ * src/raptor_rdfxml.c:
+ Create daml namespaces from counted string URIs
+
+ Added daml_namespace_uri_string and daml_namespace_uri_string
+ statics for DAML namespace URI.
+
+ (raptor_rdfxml_parse_init): Use
+ raptor_new_uri_from_counted_string.
+
+ * src/raptor_namespace.c: Create rdf and rdfs namespaces from
+ counted string URIs
+
+ Added raptor_rdf_schema_namespace_uri_len constant int.
+
+ (raptor_namespaces_init): Use raptor_new_uri_from_counted_string.
+
+ * src/raptor_uri.c:
+ Ensure URI string field is always set
+
+ Renamed raptor_uri_s field string_length to length.
+
+ (raptor_new_uri_from_uri_local_name,
+ raptor_new_uri_relative_to_base, raptor_new_uri_for_rdf_concept):
+ Use raptor_new_uri_from_counted_string with already calculated
+ length.
+
+ * src/raptor_grddl.c:
+ Create constant strings / lengths for GRDDL predicate URIs
+
+ Added grddl_namespaceTransformation_uri_string and
+ grddl_profileTransformation_uri_string constant strings with
+ macros for lengths.
+
+ (raptor_grddl_parse_init): Use above to create grddl parser URIs
+ with raptor_new_uri_from_counted_string.
+
+ * src/raptor.h, src/raptor_uri.c:
+ Added new uri constructor raptor_new_uri_from_counted_string
+
+ (raptor_new_uri_from_counted_string): Added
+
+ (raptor_new_uri): Now a wrapper around
+ raptor_new_uri_from_counted_string.
+
+2010-01-22 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c:
+ Use raptor_term instead of URIs and 'fake' URIs
+
+ raptor_rss_group_map uses a raptor_term as identifier, not URI.
+
+ (raptor_free_group_map): Free term.
+
+ (raptor_rss_group_map_compare): Compare terms.
+
+ (raptor_rss10_get_group_item): Use terms in search.
+
+ (raptor_rss10_set_item_group): Use term to create a new gm.
+
+ (raptor_rss10_move_statements,
+ raptor_rss10_move_anonymous_statements,
+ raptor_rss10_store_statement): Replace URIs with terms from subject,
+ removing all fake_uri.
+
+ (raptor_rss10_serialize_statement, raptor_rss10_build_items): Use
+ item term for calling raptor_rss10_set_item_group
+
+ * src/raptor_serialize_rss.c:
+ Use raptor_term for rdf:Seq node identity and remove a fake_uri
+
+ raptor_rss10_serializer_context replace seq_uri with raptor_term*
+ seq_term
+
+ (raptor_rss10_serialize_terminate): Free term.
+
+ (raptor_rss10_serialize_statement): Copy statement subject to get
+ seq node identity.
+
+ (raptor_rss10_build_items): Use seq_term for comparisons with
+ subject and delete fake_uri
+
+ * raptor.rdf.in: GITRepository
+
+2010-01-21 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_lexer.l:
+ Make Turtle long literals count raw newlines
+ correctly
+
+ (Rule <LITERAL>\" ....): Count the raw newlines seen in the yytext
+ to adjust the line numbers correctly for long literals.
+ Fixes Issue#0000331 http://bugs.librdf.org/mantis/view.php?id=331
+
+ * src/raptor_general.c: ,
+
+ * raptor.rdf.in: Update DOAP with GIT information.
+
+2010-01-20 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c: Always take a copy of world concepts so
+ they are consitently freed
+
+ * src/ntriples_parse.c, src/raptor_rdfxml.c: Use rdf namespace
+ raptor_terms to reduce raptor_term creations in parsers.
+
+ (raptor_ntriples_generate_statement): Tidy code, moving URI
+ construction to local blocks.
+
+ (raptor_rdfxml_generate_statement): Use concept terms for refiying
+ predicates and rdf:Statement class.
+
+ (raptor_rdfxml_start_element_grammar,
+ raptor_rdfxml_end_element_grammar): Update to use concept terms.
+
+ * src/raptor_internal.h:
+ Added macros to access the static RDF namespace raptor terms
+
+ Added macros RAPTOR_RDF_{NAME}_term(world) to get a shared pointer
+ to the static raptor_term for rdf namespace concepts.
+
+ * src/raptor_concepts.c, src/raptor_internal.h:
+ Make a set of raptor_term for RDF namespace terms used in graph.
+
+ raptor_rdf_ns_term_id gains an alias RDF_NS_LAST_SYNTAX_TERM for the
+ last syntax term.
+
+ raptor_world gains an array of raptor_term 'terms'; not all of these
+ will be used, the first few are syntax only.
+
+ (raptor_concepts_init, raptor_concepts_finish): Initialised and
+ free the terms.
+
+2010-01-19 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c:
+ (raptor_rss_block_set_field): Fix failure check
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c:
+ Turn two magic number offsets 0 into defines in raptor_rss.h
+
+ Add defines RAPTOR_RSS_LINK_HREF_URL_OFFSET and
+ RAPTOR_RSS_LINK_REL_STRING_OFFSET for indexes into block
+ urls/strings arrays - both at offset 0.
+
+ (raptor_rss_insert_rss_link): Use above defines and remove fixme.
+
+ Update raptor_rss_block_fields_info to use defines.
+
+ * src/raptor_xml_writer.c: raptor_xml_writer_nsd_compare - Remove
+ FIXME; duplicating a 3 line function is not a worry.
+
+ * src/raptor_uri.c:
+ (raptor_uri_print): Use world to report fwrite failure, remove
+ FIXME.
+
+ * src/raptor_serialize_rss.c: raptor_rss10_emit_item - remove
+ fixme now it is documented.
+
+ * docs/raptor-serializers.xml: note default atom:content type on
+ serializing to atom 1.0
+
+ * src/raptor_serialize_rdfxmla.c:
+ remove FIXME no longer relevant
+
+ * src/raptor_rss.c:
+ Add some resilience to calloc/malloc failure
+
+ (raptor_rss_parse_init): Code tidy.
+
+ (raptor_rss_block_set_field): Add return value for failure. Check
+ for URI and string alloc failure.
+
+ (raptor_rss_start_element_handler, raptor_rss_end_element_handler):
+ Set parser failure and end on alloc failure.
+
+ (raptor_rss_insert_rss_link): Add return value for failure and check
+ for new field, string failure.
+
+ (raptor_rss_insert_identifiers): Add return value for failure and
+ check for above function failing.
+
+ (raptor_rss_copy_field): Return failure on string alloc failure.
+
+ (raptor_rss_parse_chunk): Fail to parse when
+ raptor_rss_insert_identifiers fails.
+
+ * src/raptor_parse.c: Make score sorting us a dynamic buffer in
+ raptor_world_guess_parser_name
+
+ (raptor_world_guess_parser_name): Calloc/free the array and remove
+ FIXME!
+
+ * src/raptor_grddl.c: raptor_grddl_run_grddl_transform_doc -
+ remove FIXMEs now that these are documented
+
+ * docs/raptor-parsers.xml: document more GRDDL parser features
+
+ * src/raptor_grddl.c: raptor_grddl_run_grddl_transform_doc -
+ remove FIXME now that the XSLT params are documented
+
+ * docs/raptor-parsers.xml: document GRDDL XSTL parameters
+
+ * src/raptor_abbrev.c: autodocs
+
+ * src/turtle_parser.y: remove FIXMEs
+
+ * src/turtle_lexer.l: Update test code to Raptor V2 APIs.
+
+ * src/raptor_concepts.c, src/raptor_internal.h: Do not try to make
+ an rdf namespace concept URI for the NULL name
+
+ * src/raptor_concepts.c:
+ (raptor_concepts_init): Return 1 if URI alloc failed not succeeded
+
+ * src/raptor_concepts.c:
+ (raptor_concepts_init): Return 1 if URI alloc failed.
+
+ * src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c:
+ Rename abbrev struct compare functions to standard naming.
+
+ (raptor_abbrev_node_compare): Renamed from raptor_abbrev_node_cmp.
+
+ (raptor_abbrev_subject_compare): Renamed from
+ raptor_abbrev_subject_cmp.
+
+2010-01-18 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: GRDDL parser code style - whitespace, break
+ long lines, loop pre-counting
+
+ Whitespace around operators and break long lines.
+
+ For fixed size raptor_sequence or array loops, store size in a var
+ 'size' rather than run a function on every if/while loop.
+
+ * src/raptor_grddl.c: code style: break into 2 lines the long
+ assignments to grddl_parser
+
+ * src/raptor_grddl.c: Update conformance urls and doc ptr
+
+ * src/raptor_rdfxml.c: Code style fixes - indenting, whitespace, add
+ vars to break long lines.
+
+ Code style, indenting and whitespace. Add variables to break long
+ lines especially error reporting Use __func__ for internal error
+ message rather than hardcoding function name.
+
+ * src/Makefile.am, src/raptor.h, src/raptor_concepts.c,
+ src/raptor_general.c, src/raptor_internal.h, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c,
+ src/raptor_serialize_rss.c, src/raptor_uri.c, src/turtle_common.h,
+ src/turtle_parser.y: Update rdf namespace concepts to add
+ PlainLiteral, share across parsers
+
+ raptor_rdf_ns_term_id gains RDF_NS_PlainLiteral; reordered to put
+ together with RDF_NS_XMLLiteral, the other datatype.
+
+ raptor_world gains an array of pointers to raptor_uri* concepts.
+
+ turtle_parser loses nil_uri, first_uri, rest_uri that are now
+ available via the macros.
+
+ rss_parser loses rdf:type and rdf:Seq concept URIs that are now
+ available via the macros.
+
+ Added macros RAPTOR_RDF_{name}_URI(world) to get pointer to static
+ raptor_uri* for NS terms.
+
+ RDF/XML parser cuts down to just 5 DAML NS URIs to manage itself.
+
+ (raptor_new_uri_for_rdf_concept): now takes const name.
+
+ (raptor_concepts_init, raptor_concepts_finish): Added.
+
+ (raptor_world_open): Call raptor_concepts_init; re-order to init
+ URIs then concepts first.
+
+ (raptor_free_world): Call raptor_concepts_finish
+
+ Update RDF/XML, RSS and Turtle parsers to use shared URIs.
+
+ * src/fix-flex: alter lexer output to remove signed/unsigned
+ comparison that gcc 4.x warns.
+
+ * src/raptor_librdfa.c: Do not strdup language in
+ raptor_librdfa_generate_statement
+
+ * src/ntriples_parse.c, src/raptor_internal.h,
+ src/raptor_librdfa.c, src/raptor_rdfxml.c, src/raptor_rss.c,
+ src/raptor_rss_common.c, src/raptor_serialize_rss.c,
+ src/raptor_statement.c, src/turtle_parser.y: Change
+ raptor_new_term_from_blank calling semantics to copy id inside.
+
+ (raptor_new_term_from_blank): Copy blank ID.
+
+ Update all calls to raptor_new_term_from_blank to remove strdup()s
+ and add a few RAPTOR_FREE for generated IDs.
+
+ * src/ntriples_parse.c, src/raptor_librdfa.c, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_statement.c, src/turtle_parser.y:
+ Change raptor_new_term_from_literal calling semantics to copy inside.
+
+ (raptor_new_term_from_literal): Copy literals, optional language
+ and datatype URIs.
+
+ Update all calls to raptor_new_term_from_literal to remove strdup(),
+ malloc/free, or stringbuffer copy for literal string; remove copy
+ URI for datatype URI.
+
+ * src/raptor_rdfxml.c: Rename RDF ns-checking functions and document
+ their returns
+
+ (raptor_rdfxml_check_propertyElement_name): Renamed from
+ raptor_rdfxml_forbidden_nodeElement_name and returns tri-state flag
+
+ (raptor_rdfxml_check_propertyElement_name): Renamed from
+ raptor_rdfxml_forbidden_propertyElement_name and returns tri-state
+ flag.
+
+ (raptor_rdfxml_check_propertyAttribute_name): Renamed from
+ raptor_rdfxml_forbidden_propertyAttribute_name and returns
+ tri-state flag.
+
+ Update callers to check for <0: unknown name, 0: allowed, >0: not
+ allowed
+
+ * src/raptor_rdfxml.c: Set raptor_rdf_ns_terms_info as unsigned int
+ 1 bit so bool works
+
+ * src/raptor_rdfxml.c: Adjust raptor_rdf_ns_terms_info fields:
+ reorder, make positive and use bitfields.
+
+ Altered raptor_rdf_ns_terms_info field order to group flag
+ attributes together and use 1 bit each, make them positive allowed
+ flags rather than mix of forbidden/allowed.
+
+ Adjust the raptor_rdfxml_forbidden_TEST_name calling code to use
+ !raptor_rdf_ns_terms_info[field].allowed_TEST
+
+ * src/raptor_rdfxml.c: Tidy comments for raptor_rdf_ns_term_id names
+
+ * src/raptor_rdfxml.c: Tidy RDF terms description
+ raptor_rdf_ns_term_id: Renamed enum from rdf_attr. Names are all
+ RDF_ATTR_[name] now.
+
+ * src/ntriples_parse.c, src/raptor_librdfa.c, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_rss_common.c, src/raptor_statement.c,
+ src/turtle_parser.y: Change raptor_new_term_from_uri calling
+ semantics to take URI copy inside
+
+ (raptor_new_term_from_uri): autodocs and call raptor_uri_copy.
+
+ Updated all calls to raptor_new_term_from_uri to remove a
+ raptor_uri_copy or add a raptor_uri_free as appropriate.
+
+ * src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c: Make
+ raptor_abbrev_node use raptor_term rather than another embedded
+ node
+
+ raptor_abbrev_node loses the 'value' union and a pile of
+ sub-structure duplicating raptor_term* contents; yet another
+ librdf_node copy bites the dust.
+
+ (raptor_new_abbrev_node): Use raptor_new_term_from_term
+
+ (raptor_free_abbrev_node): Use raptor_free_term
+
+ (raptor_abbrev_node_cmp): Thin wrapper around raptor_term_compare.
+
+ (raptor_abbrev_node_equals): Thin wrapper around
+ raptor_term_equals.
+
+ Update all references to the raptor_abbrev_node internals above.
+
+ (raptor_rdfxmla_serialize_init, raptor_turtle_emit_subject): Fix a
+ couple of places where a static raptor_term was used for creating a
+ raptor_abbrev_node; now make a dynamic one so it can be reference
+ counted and freed.
+
+ * src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_statement.c: Make raptor_term_print_as_ntriples internal
+ so can use for raptor_abbrev
+
+ (raptor_term_print_as_ntriples): No longer static.
+
+2010-01-17 Dave Beckett <dave@dajobe.org>
+
+ * docs/rdfprint.c, examples/rdfprint.c, src/raptor.h,
+ src/raptor_grddl.c, src/raptor_rdfxml.c, src/raptor_rss_common.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_simple.c,
+ src/raptor_statement.c, src/turtle_parser.y, utils/rdfdiff.c: Rename
+ statement printing methods to raptor_statement_NAME() form
+
+ (raptor_statement_print): Renamed from
+ raptor_print_statement
+
+ (raptor_statement_print_as_ntriples): Renamed from
+ raptor_print_statement_as_ntriples
+
+ * src/raptor.h: Remove unused typedefs for old URI handler code
+ raptor_new_uri_func, raptor_new_uri_from_uri_local_name_func,
+ raptor_new_uri_relative_to_base_func,
+ raptor_new_uri_for_rdf_concept_func, raptor_free_uri_func,
+ raptor_uri_equals_func, raptor_uri_compare_func,
+ raptor_uri_copy_func, raptor_uri_as_string_func,
+ raptor_uri_as_counted_string_func: Deleted.
+
+ * docs/rdfcat.c, docs/rdfprint.c, examples/grapper.c,
+ examples/raptor_abort.c, examples/rdfcat.c, examples/rdfprint.c,
+ src/raptor.h, src/raptor_feature.c, src/raptor_general.c,
+ src/raptor_grddl.c, src/raptor_guess.c, src/raptor_internal.h,
+ src/raptor_parse.c, src/turtle_parser.y, utils/rapper.c,
+ utils/rdfdiff.c:
+ Rename parser methods to all start raptor_parser_METHOD
+
+ (raptor_parser_get_feature): Renamed from raptor_get_feature.
+
+ (raptor_parser_get_label): Renamed from raptor_get_label.
+
+ (raptor_parser_get_locator): Renamed from raptor_get_locator.
+
+ (raptor_parser_get_mime_type): Renamed from raptor_get_mime_type.
+
+ (raptor_parser_get_name): Renamed from raptor_get_name.
+
+ (raptor_parser_get_need_base_uri): Renamed from
+ raptor_get_need_base_uri.
+
+ (raptor_world_get_parser_factory): Renamed from
+ raptor_get_parser_factory.
+
+ (raptor_parser_parse_abort): Renamed from raptor_parse_abort.
+
+ (raptor_parser_parse_chunk): Renamed from raptor_parse_chunk.
+
+ (raptor_parser_set_uri_filter_no_net): Renamed from
+ raptor_parse_uri_no_net_filter.
+
+ (raptor_parser_get_new_generated_i): Renamed from
+ raptor_parser_generate_id.
+
+ (raptor_parser_set_default_generate_id_parameters): Renamed from
+ raptor_set_default_generate_id_parameters.
+
+ (raptor_parser_set_generate_id_handler): Renamed from
+ raptor_set_generate_id_handler.
+
+ (raptor_parser_set_graph_handler): Renamed from
+ raptor_set_graph_handler.
+
+ (raptor_parser_set_namespace_handler): Renamed from
+ raptor_set_namespace_handler.
+
+ (raptor_parser_set_statement_handler): Renamed from
+ raptor_set_statement_handler.
+
+ (raptor_parser_parse_start): Renamed from raptor_start_parse.
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_libxml.c,
+ src/raptor_parse.c:
+ Adjust raptor_log_level to match log4j levels: add trace, debug, info.
+
+ raptor_log_level gains RAPTOR_LOG_LEVEL_TRACE,
+ RAPTOR_LOG_LEVEL_DEBUG and RAPTOR_LOG_LEVEL_INFO. Reordered to
+ match severity from trace level to fatal error. Add autodocs.
+
+ * src/raptor_statement.c:
+ code style
+
+ * src/raptor_parse.c:
+ autodocs
+
+ * src/raptor_serialize.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c: autodocs
+
+ * src/raptor.h, src/raptor_iostream.c,
+ src/raptor_serialize_simple.c: Renamed
+ raptor_iostream_write_uri_v2 to raptor_iostream_write_uri and lose
+ world arg
+
+ * src/raptor.h, src/raptor_xml_writer.c: Rename
+ raptor_xml_writer_features_enumerate_v2 to
+ raptor_world_enumerate_xml_writer_features
+
+ * src/raptor.h, src/raptor_general.c: Rename
+ raptor_error_handlers_init_v2 to raptor_error_handlers_init
+
+ * src/raptor_serialize_rss.c: Fix debug calls to
+ raptor_print_statement_as_ntriples_v2 now called
+ raptor_print_statement_as_ntriples
+
+ * src/raptor.h, src/raptor_rdfxml.c, src/raptor_rss.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_xml_writer.c:
+ Remove _v2 from raptor_new_xml_writer_v2 name and remove unused arg.
+
+ (raptor_new_xml_writer_v2): Renamed from raptor_new_xml_writer and
+ delete unused
+
+ (never used) canonicalized arg.
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_parse.c:
+ Renamed raptor_feature_from_uri_v2 to raptor_world_get_feature_from_uri
+
+ * src/raptor.h, src/raptor_abbrev.c, src/raptor_namespace.c,
+ src/raptor_qname.c, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_rss.c,
+ src/raptor_turtle_writer.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c:
+ Remove _v2 from raptor_new_qname_from_namespace_local_name_v2
+
+ (raptor_new_qname_from_namespace_local_name): Renamed from
+ raptor_new_qname_from_namespace_local_name_v2.
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_namespace.c,
+ src/raptor_rss.c, src/raptor_sax2.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_turtle.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c,
+ src/turtle_common.h, src/turtle_lexer.l, src/turtle_parser.y:
+ Rename raptor_namespaces/stack functions to lose _v2 in name
+
+ (raptor_new_namespaces): Renamed from raptor_new_namespaces_v2.
+
+ (raptor_namespaces_init): Renamed from raptor_namespaces_init_v2
+
+ Also note where raptor_namespace_stack is static such as in
+ raptor_sax2, some tests and in raptor_turtle_parser.
+
+ * src/raptor_www_test.c:
+ Fix test o use raptor_www_new
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_grddl.c,
+ src/raptor_parse.c, src/raptor_www.c:
+ Rename raptor_www functions to lose _v2 in name
+
+ (raptor_www_init): Renamed from raptor_www_init_2 - internal.
+
+ (raptor_www_finish): Renamed from raptor_www_finish_v2 - internal.
+
+ (raptor_www_new): Renamed from raptor_www_new_v2.
+
+ (raptor_www_new_with_connection): Renamed from
+ raptor_www_new_with_connection_v2.
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_locator.c,
+ utils/rapper.c, utils/rdfdiff.c:
+ Remove _v2 from name and world arg from raptor_locator functions
+
+ (raptor_print_locator): Renamed from raptor_print_locator_v2 and
+ loses world arg.
+
+ (raptor_format_locator): Renamed from raptor_format_locator_v2 and
+ loses world arg.
+
+ (raptor_locator_uri_string): Renamed from raptor_locator_uri_v2 and
+ renamed to reflect returns a string not a raptor_uri*
+
+ * src/raptor_avltree.c, src/raptor_general.c, src/raptor_grddl.c,
+ src/raptor_iostream.c, src/raptor_json_writer.c,
+ src/raptor_namespace.c, src/raptor_nfc_test.c, src/raptor_parse.c,
+ src/raptor_qname.c, src/raptor_rdfxml.c, src/raptor_rfc2396.c,
+ src/raptor_rss.c, src/raptor_rss_common.c, src/raptor_sax2.c,
+ src/raptor_sequence.c, src/raptor_serialize.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_set.c,
+ src/raptor_statement.c, src/raptor_stringbuffer.c,
+ src/raptor_turtle_writer.c, src/raptor_www.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c, src/turtle_lexer.l, src/turtle_parser.y:
+
+ Code style:
+ use TYPE* var_name = RAPTOR_CALLOC(TYPE, 1, sizeof(*var_name))
+
+ This fix caught a few times where the calloc added an extra +1 -
+ presumably from the usual thing you need to do with a string
+ malloc. e.g. in raptor_new_json_writer(),
+ raptor_new_turtle_writer() and raptor_new_xml_writer_v2() which
+ probably were all from the same source.
+
+ * src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c:
+ Remove some un-necessary casts to (unsigned char*)
+
+ * src/raptor_serialize_rss.c, src/raptor_serialize_simple.c,
+ src/raptor_statement.c:
+ Remove some un-necessary casts to raptor_uri*
+
+ * src/raptor_serialize_json.c:
+ (raptor_json_serialize_avltree_visit): Use raptor_term_equals
+ instead of hand-crafted equivalent.
+
+ * src/raptor.h, src/raptor_abbrev.c, src/raptor_grddl.c,
+ src/raptor_internal.h, src/raptor_json_writer.c,
+ src/raptor_rdfxml.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_simple.c,
+ src/raptor_serialize_turtle.c, src/raptor_statement.c,
+ src/turtle_parser.y, utils/rapper.c, utils/rdfdiff.c:
+ raptor_term values are now a union of uri / literal fields / blank
+ string
+
+ raptor_term gains union value with uri field, literal struct and
+ blank field for URI, Literal and Blank rdf terms.
+
+ Lots of consequent changes; mostly mechanical search and replace.
+
+ Removed several (raptor_uri*)value and (unsigned char*)value casts.
+
+ (raptor_rss10_move_statements): Changes but when zeroing uri /
+ literal, do that in separate steps rather than assigning to value.
+
+ * src/raptor_serialize_dot.c: Convert DOT serializer to use
+ raptor_term not local raptor_dot_serializer_node
+
+ Deleted raptor_dot_serializer_node typedef
+
+ (raptor_dot_serializer_free_node,
+ raptor_dot_serializer_node_matches, raptor_dot_serializer_new_node):
+ Deleted and replaced with raptor_term versions - both based on
+ librdf_node.
+
+ Code style fixes.
+
+ * src/raptor_statement.c:
+ Fix formatting in raptor_term_as_counted_string for blank and uri
+
+ (raptor_term_as_counted_string): RAPTOR_TERM_TYPE_BLANK and
+ RAPTOR_TERM_TYPE_URI code was wrong - bad casting.
+
+2010-01-16 Dave Beckett <dave@dajobe.org>
+
+ * Merge branch 'statement-term' to 'master' with
+ commit efd40982c2356eab8c37c1da1acd8b459ec06b56
+
+2010-01-15 Dave Beckett <dave@dajobe.org>
+
+ * src/Makefile.am, src/raptor_internal.h, src/raptor_xsd.c:
+ Removed unused raptor_new_identifier_from_double and raptor_xsd module.
+
+ * src/raptor_librdfa.c:
+ Updated RDFA parser to use statement and term object model
+
+ * src/raptor_rss.c:
+ Skip attempting to output predicates with no URI/namespace
+
+ (raptor_rss_emit_item): Check predicate_uri first.
+
+ * src/raptor_rss.c:
+ Free allocate raptor_term
+
+ (raptor_rss_emit_item): Free some predicate and object terms just
+ allocated. Code style.
+
+ * docs/tmpl/section-iostream.sgml, docs/tmpl/section-triples.sgml,
+ docs/tmpl/section-uri.sgml: update generated docs
+
+ * src/raptor_rss.c:
+ Construct terms in raptor_rss_emit_item
+
+ (raptor_rss_emit_item): Use raptor_term constructors
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c,
+ src/raptor_serialize_rss.c:
+ Switch RSS parser and serializer internals from identfier to term
+
+ Compiles but does not fully work yet.
+
+ * src/raptor_internal.h:
+ Added raptor_term_equals
+
+ * src/raptor_statement.c:
+ Added raptor_term_equals
+
+2010-01-14 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_parser.y:
+ Convert turtle parser to use raptor_statement and raptor_term
+
+ Change raptor_identifier to raptor_term
+
+ Change raptor_turtle_triple to raptor_statement
+
+ Code style.
+
+ (raptor_turtle_generate_statement): Use copy constructor for term.
+
+ (raptor_turtle_new_triple, raptor_turtle_free_triple,
+ raptor_triple_print): Deleted
+
+ * src/raptor_internal.h, src/raptor_statement.c:
+ Add raptor_new_statement_from_nodes
+
+ (raptor_new_statement_from_nodes): Added
+
+ * src/raptor_serialize_turtle.c, src/turtle_parser.y:
+ Update Turtle parser and serializer to statement reference model.
+
+ (raptor_turtle_generate_statement): Generate new term objects for
+ each statement.
+
+ (raptor_turtle_serialize_statement): Use correct reference to
+ statement fields.
+
+ * src/raptor_internal.h, src/raptor_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_statement.c:
+ Made statement work statically and dynamically, promoting on copies
+
+ (raptor_new_statement): Added to make a new dynamic statement
+
+ (raptor_statement_init): Init a static statement with negative
+ usage.
+
+ (raptor_statement_copy): Do promote to dynamic on copy.
+
+ (raptor_free_statement): Do not free static statements.
+
+ (raptor_rdfxml_generate_statement): Do proper predicate creation
+ when reifying - this broke statement copying and rdfdiff.
+
+ (raptor_rdfxmla_serialize_statement): Correct pointers to statement
+ fields.
+
+2010-01-13 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c:
+ Code style and more fixing up RDF/XML raptor_term object use
+
+ Code style; introduce variables to break long lines/duplicate
+ expressions that hopefully the compiler will still optimize way.
+
+ (raptor_rdfxml_generate_statement): Free a locally created
+ reified_term object.
+
+ (raptor_rdfxml_process_property_attributes): Save a strlen. Code
+ style.
+
+ (raptor_rdfxml_start_element_grammar): Code style. Add
+ element_name_uri to remove several long lines. Add some OOM checks
+ when an ID/URI then raptor_term are created in two steps.
+
+ * src/ntriples_parse.c:
+ Update N-Triples parser to use raptor_term objects
+
+ (raptor_ntriples_generate_statement): Use raptor_term constructors.
+
+ * src/raptor_rdfxml.c:
+ More conversions of raptor_term statics to dynamic.
+
+ (raptor_rdfxml_process_property_attributes): Return failure error
+ status.
+
+ (raptor_rdfxml_process_property_attributes): Convert more
+ static (on stack) raptor_term objects into dynamic/by-reference.
+
+ * src/raptor_statement.c:
+ (raptor_statement_copy): Delete commented out old deep copy code.
+
+ (raptor_free_statement): Just call raptor_term to free inner terms.
+
+ * src/raptor_internal.h, src/raptor_rdfxml.c,
+ src/raptor_statement.c:
+ Deleted raptor_clear_term and raptor_copy_term. literal languages
+
+ (raptor_clear_term, raptor_copy_term): Deleted - no longer needed
+ or used.
+
+ (raptor_free_term): Merge in old raptor_clear code here.
+
+ (raptor_rdfxml_end_element_grammar): A little OOM checking.
+
+ * src/raptor_rdfxml.c:
+ (raptor_rdfxml_end_element_grammar): Allocate new strings for
+ literals since they become owned by raptor_term.
+
+ * src/raptor_rdfxml.c, utils/rapper.c:
+ change raptor_rdfxml_element
+
+ raptor_term statics fields to objects
+
+ raptor_rdfxml_element: reified, bag, subject, predicate and object
+ fields are now raptor_term*
+
+ (raptor_free_rdfxml_element): Use raptor_free_term on above fields
+ instead of raptor_clear_term.
+
+ (raptor_rdfxml_start_element_handler): Do not assign world to
+ above fields - not allocated yet. Move setting of default
+ literal_language inscope to code near the line where raptor_term
+ for a literal is created. Start turning direct references to
+ raptor_statement field->subject->type into static raptor_term
+ objects (memset then assigned) for bags, reified terms,
+ collections, bags, reified statements, ...
+
+ First stage of conversion to allocated raptor_terms.
+
+ * src/ntriples_parse.c, src/raptor.h, src/raptor_grddl.c,
+ src/raptor_internal.h, src/raptor_librdfa.c, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_rss_common.c, src/raptor_serialize.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_ntriples.c, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_rss.c,
+ src/raptor_serialize_simple.c, src/raptor_serialize_turtle.c,
+ src/raptor_statement.c, src/turtle_parser.y, utils/rapper.c,
+ utils/rdfdiff.c: raptor_term and raptor_term get usages.
+ statement is pointer to 3 terms
+
+ Compiles, does not all work.
+
+ (raptor_statement_init): Init usage.
+
+ (raptor_statement_copy): Now just a usage increment; comment out old
+ copying code.
+
+ (raptor_free_statement): Free on zero usage.
+
+ (raptor_free_term): Free on zero usage.
+
+ (raptor_new_term_from_term, raptor_new_term_from_uri,
+ raptor_new_term_from_literal, raptor_new_term_from_blank): Added new
+ term constructors - taking ownership of their input objects.
+
+ (raptor_rdfxml_generate_statement): Create raptor_term objects to
+ generate reified statements. Update lots of uses in parsers and
+ serializers of object.field to object->field for pointer based
+ access.
+
+2010-01-12 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-iostream.sgml, docs/tmpl/section-triples.sgml,
+ docs/tmpl/section-uri.sgml: Update generated docs
+
+2010-01-11 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c: raptor_rdfxml_generate_statement() now
+ takes raptor_term subject/ raptor_uri term.
+
+ (raptor_rdfxml_generate_statement): Use raptor_term fields.
+
+ (raptor_rdfxml_element_has_property_attributes,
+ raptor_rdfxml_start_element_grammar): Create static raptor_term
+ objects on stack for use in constructing parameter sets for
+ raptor_rdfxml_generate_statement. Several of these should be
+ dynamic and/or constructed once parser-wide.
+
+ * src/raptor_internal.h, src/raptor_rdfxml.c,
+ src/raptor_statement.c: Replace raptor_identifier with raptor_term
+ inside rdf/xml parser.
+
+ struct raptor_rdfxml_element_s updated to change fields reified,
+ bag, subject, predicate, object from raptor_identifier to
+ raptor_term. Also added a reified_id field for storing an ID used
+ for reification; not clear if this is entirely necessary.
+
+ (raptor_clear_term): Added based on raptor_clear_identifier.
+
+ (raptor_free_term): Added.
+
+ (raptor_copy_term): Added based on raptor_copy_identifier but not
+ calling raptor_free term on dest; call raptor_clear_term instead.
+
+ (raptor_free_rdfxml_element): Use raptor_clear_term to replace
+ raptor_clear_identifier.
+
+ (raptor_rdfxml_generate_statement): Updated to use raptor_term
+ field names. Some loss of clarity here since identifier URI/blank
+ node fields are merged into one void* term field 'value' for now.
+
+ (raptor_rdfxml_process_property_attributes,
+ raptor_rdfxml_start_element_grammar): Updated for raptor_term
+ fields. For capturing bag/reified IDs, use local variables rather
+ than overloading subject/reified/bad.id fields.
+
+ * src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c: Make
+ abbrev_node constructors/lookup functions use raptor_term
+
+ (raptor_new_abbrev_node): Pass in a raptor_term and use that to
+ find fields to copy.
+
+ (raptor_abbrev_node_lookup, raptor_abbrev_subject_find,
+ raptor_abbrev_subject_lookup): Lookup using fields in a passed in
+ raptor_term. Update callers to use raptor_term when searching -
+ means creating some static raptor_term objects on the stack for
+ now; will be either references or dynamically created when
+ raptor_abbrev_node / raptor_term node merge is done.
+
+ * src/raptor.h, src/raptor_serialize_ntriples.c: Added
+ raptor_iostream_write_term_ntriples and
+ raptor_iostream_write_statement_ntriples to public API
+
+ (raptor_iostream_write_statement_ntriples): Renamed from
+ raptor_iostream_write_statement_ntriples_v2 and loses world arg.
+
+ (raptor_iostream_write_term_ntriples): Renamed from internal
+ raptor_iostream_write_statement_part_ntriples and down to just 2
+ args: the iostr and term.
+
+ (raptor_ntriples_serialize_statement): Updated call to
+ raptor_iostream_write_statement_ntriples.
+
+ * src/raptor_internal.h, src/raptor_statement.c: Added
+ raptor_term_compare split out from raptor_statement_compare
+
+ * src/raptor.h, src/raptor_abbrev.c, src/raptor_statement.c: Turn
+ print-part-of-statements functions into methods of raptor_term
+
+ (raptor_term_as_counted_string): Renamed from
+ raptor_statement_part_as_counted_string and just take term arg.
+
+ (raptor_term_as_string): Renamed from
+ raptor_statement_part_as_string and just take term arg. Update
+ callers to use new 1-arg convention.
+
+ * src/raptor_statement.c: raptor_term_print_as_ntriples formed from
+ raptor_print_statement_as_ntriples
+
+ (raptor_term_print_as_ntriples): Renamed from
+ raptor_print_statement_part_as_ntriples
+
+ (raptor_print_statement_as_ntriples): Call above with raptor_term
+ pointer.
+
+ * librdfa/curie.c, librdfa/rdfa.c, src/ntriples_parse.c,
+ src/raptor.h, src/raptor_abbrev.c, src/raptor_expat.c,
+ src/raptor_feature.c, src/raptor_grddl.c, src/raptor_guess.c,
+ src/raptor_identifier.c, src/raptor_internal.h,
+ src/raptor_iostream.c, src/raptor_json_writer.c,
+ src/raptor_librdfa.c, src/raptor_locator.c, src/raptor_namespace.c,
+ src/raptor_parse.c, src/raptor_qname.c, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_rss_common.c, src/raptor_sax2.c,
+ src/raptor_serialize.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_turtle.c,
+ src/raptor_set.c, src/raptor_statement.c,
+ src/raptor_turtle_writer.c, src/raptor_uri.c, src/raptor_www.c,
+ src/raptor_www_curl.c, src/raptor_www_libfetch.c,
+ src/raptor_www_libxml.c, src/raptor_www_test.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c, src/turtle_lexer.l, src/turtle_parser.y,
+ utils/rapper.c, utils/rdfdiff.c:
+ New raptor_uri implementation - reference counted uris with interning.
+
+ Based on librdf_uri reference counted uris with interning in an
+ librdf_hash, this uses a raptor_avltree to store/lookup previously
+ seen uris so that a single URI string has one raptor_uri* object.
+
+ Removed initial world parameter from all raptor_uri class methods.
+
+ Update all callers of above.
+
+ rdfdiff debug prints also updated to generate ntriples
+
+ * src/raptor_abbrev.c: Remove too-clever inline editing of uri
+ string in raptor_new_qname_from_resource
+
+ * src/raptor_general.c, src/raptor_internal.h, src/raptor_uri.c:
+ Add raptor_uri_finish stup for uri class cleanup
+
+ * docs/raptor-sections.txt, docs/tmpl/section-feature.sgml,
+ docs/tmpl/section-general.sgml, docs/tmpl/section-iostream.sgml,
+ docs/tmpl/section-locator.sgml, docs/tmpl/section-parser.sgml,
+ docs/tmpl/section-sax2.sgml, docs/tmpl/section-sequence.sgml,
+ docs/tmpl/section-serializer.sgml, docs/tmpl/section-triples.sgml,
+ docs/tmpl/section-unused.sgml, docs/tmpl/section-uri.sgml,
+ docs/tmpl/section-world.sgml, docs/tmpl/section-www.sgml,
+ docs/tmpl/section-xml-namespace.sgml,
+ docs/tmpl/section-xml-qname.sgml, docs/tmpl/section-xml.sgml:
+ Update some generated docs.
+
+ * librdfa/rdfa.c, src/ntriples_parse.c, src/raptor.h,
+ src/raptor_abbrev.c, src/raptor_feature.c, src/raptor_grddl.c,
+ src/raptor_json_writer.c, src/raptor_librdfa.c,
+ src/raptor_namespace.c, src/raptor_qname.c, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_rss_common.c, src/raptor_sax2.c,
+ src/raptor_serialize.c, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_rss.c,
+ src/raptor_serialize_turtle.c, src/raptor_set.c,
+ src/raptor_turtle_writer.c, src/raptor_uri.c, src/raptor_www.c,
+ src/raptor_www_curl.c, src/raptor_www_test.c,
+ src/raptor_xml_writer.c, src/raptor_xsd.c, src/turtle_lexer.l,
+ src/turtle_parser.y, utils/rapper.c, utils/rdfdiff.c:
+ Remove _v2 suffix from raptor_uri constructors
+
+ * src/raptor_rss.c:
+ (raptor_rss_emit_connection): Use raptor_uri* for predicate_uri
+ arg
+
+ * src/raptor_internal.h, src/raptor_uri.c, src/raptor_xml_writer.c:
+ Removed raptor_uri_handler and made all URI functions work direct
+ with default implementation
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_uri.c:
+ Move raptor_uri_handler to internal and remove get/set functions.
+
+ (raptor_uri_get_handler_v2, raptor_uri_set_handler_v2): Deleted
+
+ (raptor_uri_init): Set default handler directly.
+
+ * src/raptor.h: Add raptor_new_identifier_from_identifier
+ prototype
+
+ * src/raptor.h, src/raptor_identifier.c:
+ Add reference count model for raptor_identifier
+
+ (raptor_new_identifier_from_identifier): Set initial usage to 1 when
+ allocaed as an object; initialising statically does not use this.
+
+ (raptor_new_identifier_from_identifier): Added copy constructor
+
+ (raptor_free_identifier): Free when usage is 0. static identifiers
+ do not call this; they use raptor_clear_identifier
+
+2010-01-08 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_identifier.c, src/raptor_internal.h,
+ src/raptor_rdfxml.c, src/turtle_parser.y:
+ Remove is_malloced field from raptor_identifier
+
+ raptor_identifier loses is_malloc field
+
+ (raptor_clear_identifier): Added to clear fields of static
+ identified; pulled out of raptor_free_identifier
+
+ (raptor_free_identifier): Call above and then free the object.
+
+ * src/raptor.h, src/raptor_parse.c, src/raptor_serialize.c,
+ utils/rapper.c: Rename parser/serializer feature enumeration
+ methods to be on raptor_world class
+
+ (raptor_world_enumerate_parser_features): Renamed from
+ raptor_features_enumerate_v2
+
+ (raptor_world_enumerate_serializer_features): Renamed from
+ raptor_serializer_features_enumerate_v2.
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_parse.c,
+ utils/rapper.c:
+ Rename raptor_set_feature to correct method name
+ raptor_parser_set_feature
+
+ * src/raptor.h, src/raptor_parse.c, utils/rapper.c: Rename
+ raptor_set_parser_strict to correct method name
+ raptor_parser_set_strict
+
+ * utils/rdfdiff.c:
+ Update for new parser constructor name
+
+ * utils/rapper.c: Update for new parser/serializer enumerate/check
+ method names
+
+ * src/raptor.h, src/raptor_grddl.c, src/raptor_guess.c,
+ src/raptor_parse.c, src/raptor_serialize.c,
+ src/raptor_serialize_rss.c:
+ Rename parser/serializer enumerating, checking and guessing
+ functions to be methods of raptor_world.
+
+ (raptor_world_enumerate_parsers): Renamed from
+ raptor_parsers_enumerate_v2
+
+ (raptor_syntaxes_enumerate_v2): Deleted; use
+ raptor_world_enumerate_parsers.
+
+ (raptor_world_is_parser_name): Renamed from
+ raptor_syntax_name_check_v2
+
+ (raptor_world_guess_parser_name): Renamed from
+ raptor_guess_parser_name_v2
+
+ (raptor_new_parser): Renamed from raptor_new_parser_v2
+
+ (raptor_new_parser_for_content): Renamed from
+ raptor_new_parser_for_content_v2.
+
+ (raptor_world_enumerate_serializers): Renamed from
+ raptor_serializers_enumerate_v2.
+
+ (raptor_world_is_serializer_name): Renamed from
+ raptor_serializer_syntax_name_check_v2
+
+ (raptor_new_serializer): Renamed from raptor_new_serializer_v2
+
+ * src/raptor_internal.h:
+ Restore raptor_simple_message_handler for internal use
+
+ * src/raptor_general.c:
+ (raptor_log_error): All user error handlers are called here now.
+
+ * src/raptor.h: Delete raptor_simple_message_handler - nothing
+ uses it anymore.
+
+ * src/raptor.h, src/raptor_namespace.c, src/raptor_xml.c:
+ raptor_xml_any_escape_string and raptor_xml_any_escape_string use
+ raptor_world to replace error_handler/error_data args.
+
+ (raptor_xml_any_escape_string, raptor_xml_any_escape_string): Delete
+ error_handler and error_data args and replace with raptor_world
+ initial argument. Pass errors via raptor_log_error/formatted.
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_serialize.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_turtle.c:
+ Serializer class loses specific fatal/error/warning handling
+
+ (raptor_serializer_set_error_handler,
+ raptor_serializer_set_warning_handler): Deleted
+
+ (raptor_serializer_error, raptor_serializer_simple_error,
+ raptor_serializer_error_varargs, raptor_serializer_warning,
+ raptor_serializer_warning_varargs): Removed the internal functions
+ that called the serializer-specific handlers.
+
+ In serializers replaced calls to the above functions with
+ raptor_log_error or raptor_log_error_formatted depending on the
+ arguments present.
+
+ * src/raptor_internal.h, src/raptor_serialize_turtle.c,
+ src/raptor_turtle_writer.c:
+ raptor_new_turtle_writer loses error_handler / error_data args.
+
+ struct raptor_turtle_writer_s loses error_handler and error_data
+ fields.
+
+ (raptor_new_turtle_writer): error_handler and error_data args
+ deleted.
+
+ Updated callers.
+
+ * src/raptor.h, src/raptor_rdfxml.c, src/raptor_rss.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_xml_writer.c:
+ raptor_new_xml_writer_v2 loses error_handler / error_data args.
+
+ raptor_xml_writer gains raptor_world field.
+
+ (raptor_new_xml_writer_v2): Delete args. Store world.
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_iostream.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c:
+ All raptor_iostream constructors gain an initial raptor_world arg.
+
+ (raptor_new_iostream_from_handler2, raptor_new_iostream_to_sink,
+ raptor_new_iostream_to_filename, raptor_new_iostream_to_file_handle,
+ raptor_new_iostream_to_string, raptor_new_iostream_from_sink,
+ raptor_new_iostream_from_filename,
+ raptor_new_iostream_from_file_handle,
+ raptor_new_iostream_from_string): Gain an initial raptor_world*
+ world argument. Consequently:
+
+ (raptor_iostream_write_xml_any_escaped_string,
+ raptor_iostream_write_xml_escaped_string): Both lose the
+ error_handler and error_data args since it can send errors via the
+ internal world.
+
+ * src/raptor.h, src/raptor_qname.c, src/turtle_parser.y:
+ raptor_qname_string_to_uri loses error_handler/error_data args.
+
+ (raptor_qname_string_to_uri): Delete error_handler and error_data
+ args. Use raptor_log_error_formatted to report prefix error.
+
+ * src/raptor.h, src/raptor_qname.c, src/raptor_sax2.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_xml_writer.c:
+ raptor_new_qname loses error_handler / error_data args
+
+ (raptor_new_qname): delete args and use raptor_log_error_formatted
+ for error reporting.
+
+ Update callers.
+
+ * src/raptor.h, src/raptor_namespace.c, src/raptor_rss.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_rss.c,
+ src/raptor_serialize_turtle.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c:
+ raptor_new_namespaces_v2 loses error_handler / error_data args.
+
+ (raptor_new_namespaces_v2): Delete args.
+
+ Update all callers with the change - many of which were NULL/NULL
+ anyway!
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_internal.h,
+ src/raptor_namespace.c, src/raptor_sax2.c, src/turtle_parser.y:
+ raptor_namespaces_init_v2 loses error_handler / error_data
+
+ (raptor_log_error_formatted): Added to write a formatted error
+ message with sprintf style.
+
+ raptor_namespace_stack: loses error_handler and error_data fields.
+
+ (raptor_namespaces_init_v2): Remove error_handler and error_data
+ args.
+
+ (raptor_new_namespace_from_uri): Use raptor_log_error_formatted to
+ format an error message with argument.
+
+ Update all calls to raptor_namespaces_init_v2 to remove error
+ handler/data args.
+
+ * src/raptor_json_writer.c:
+ Update call to error_handler in #defined-out code
+
+ * src/raptor_internal.h, src/raptor_json_writer.c,
+ src/raptor_serialize_json.c:
+ Remove error_handler/error_data from json writer
+
+ struct raptor_json_writer_s: loses error_handler and error_data
+ fields.
+
+ (raptor_new_json_writer): loses error_handler and error_data args.
+
+ (raptor_json_serialize_start): Update for new signature.
+
+ * src/raptor_libxml.c:
+ Initialise libxml generic error with pointer to raptor_world
+
+ (raptor_libxml_generic_error): Expect world and never a locator.
+
+ (raptor_libxml_init): Initialise generic error func with world
+ user data.
+
+ * src/raptor_libxml.c:
+ Handle new XML_FROM_SCHEMATRONV introduced in
+ libxml 2.6.32 2008-04-08
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_internal.h,
+ src/raptor_libxml.c:
+ libxml generic & structured error saving defaults on.
+
+ These are turned on by default so that when libxml library-wide
+ generic/structured error handlers are set, this happens by default.
+ Previously (1.4.x) it was done anyway, regardless of the flags.
+
+ raptor_libxml_flags: update docs to note default is on.
+
+ (raptor_new_world): set the flags on.
+
+ raptor_world_s: update docs for libxml_flags field to note
+ default.
+
+ (raptor_libxml_xmlStructuredError_handler_common): Renamed from
+ raptor_libxml_xmlStructuredErrorFunc and contains the core libxml
+ error handling but not the parameter guessing.
+
+ (raptor_libxml_xmlStructuredError_handler_global): Added to take
+ structured errors from the global libxml handlers. Calls
+ raptor_libxml_xmlStructuredErrorFunc with world and always NULL
+ locator.
+
+ (raptor_libxml_xmlStructuredError_handler_parsing): Added to take
+ structured errors from serror SAX handler. Calls
+ raptor_libxml_xmlStructuredErrorFunc with any world and locator
+ found.
+
+ * src/raptor_general.c, src/raptor_internal.h, src/raptor_libxml.c:
+ raptor_log_error no longer needs/uses error hander/data args
+
+ (raptor_log_error): Remove args and pick handler/data from work
+ error handlers.
+
+ (raptor_log_error_varags): Just call raptor_log_error and no longer
+ pick error handler/data here.
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_parse.c,
+ utils/rapper.c, utils/rdfdiff.c:
+ Move error-handler setting functions to methods of raptor_world
+
+ (raptor_world_set_fatal_error_handler): Renamed from
+ raptor_set_fatal_error_handler from parser class.
+
+ (raptor_world_set_error_handler): Renamed from
+ raptor_set_error_handler from parser class.
+
+ (raptor_world_set_warning_handler): Renamed from
+ raptor_set_warning_handler from parser class.
+
+ Updated rapper.c and rdfdiff.c to use new names and calling
+ convention.
+
+ * src/raptor_general.c, src/raptor_internal.h, src/raptor_libxml.c,
+ src/raptor_parse.c, src/raptor_sax2.c, src/raptor_www.c:
+ raptor_log_error_varargs no longer needs/users error handler/data
+ args
+
+ (raptor_log_error_varargs): Remove args and pick handler and handler
+ data from world error_handlers.
+
+ Update all callers of above.
+
+ * src/raptor_www_libxml.c:
+ (raptor_www_libxml_init, raptor_www_libxml_free): Remove
+ error_handlers code.
+
+ * src/raptor_libxml.c, src/raptor_sax2.c: Move libxml init/free
+ code to raptor_libxml_init and raptor_libxml_finish
+
+ (raptor_libxml_init): Add xmlInitParser call.
+
+ (raptor_libxml_finish): Add xmlCleanupParser call.
+
+ (raptor_sax2_init): Remove xmlInitParser call.
+
+ (raptor_sax2_finish): Remove xmlCleanupParser call.
+
+ * src/raptor_grddl.c:
+ Remove use of xmlSetStructuredErrorFunc from GRDDL parser.
+
+ (raptor_grddl_parse_chunk): Remove call to xmlSetStructuredErrorFunc
+ which is now done in raptor_libxml_init, once per-library.
+
+ * src/raptor_internal.h, src/raptor_libxml.c:
+ Removed raptor_libxml_sax_init_error_handlers - no users remain.
+
+ (raptor_libxml_sax_init_error_handlers): Deleted and merged back
+ into raptor_libxml_sax_init
+
+ * src/raptor_grddl.c:
+ GRDDL parser does not need or use libxml2 sax object.
+
+ struct raptor_grddl_parser_context_s loses sax field.
+
+ (raptor_grddl_parse_init_common): Remove call to
+ raptor_libxml_sax_init_error_handlers.
+
+ * src/raptor_grddl.c:
+ GRDDL parser does not need to create a raptor_sax2 for error
+ handlers.
+
+ struct raptor_grddl_parser_context_s loses sax2 field.
+
+ (raptor_grddl_parse_init_common, raptor_grddl_parse_terminate): Do
+ not init / free sax2.
+
+ * src/raptor_general.c, src/raptor_grddl.c, src/raptor_internal.h,
+ src/raptor_libxml.c, src/raptor_sax2.c:
+ Make libxml error handling save/restore happen once in world
+
+ struct raptor_sax2_s loses saved_structured_error_context,
+ saved_structured_error_handler, saved_generic_error_context and
+ saved_generic_error_handler
+
+ struct raptor_world_s gains above fields.
+
+ (raptor_libxml_init, raptor_libxml_finish): Added to capture the
+ save/restore of xmlSetStructuredErrorFunc and xmlSetGenericErrorFunc
+ context and handlers.
+
+ (raptor_world_open, raptor_free_world): Call raptor_libxml_init and
+ raptor_libxml_finish.
+
+ (raptor_libxml_sax_init_error_handlers): Renamed from
+ raptor_libxml_init_sax_error_handlers.
+
+ (raptor_libxml_sax_init): libxml setup specific to a SAX setup
+
+ (raptor_grddl_parse_init_common): Use above.
+
+ (raptor_new_sax2): Delete libxml init code.
+
+ (raptor_sax2_parse_start): Delete xmlSetStructuredErrorFunc call
+ and use raptor_libxml_sax_init.
+
+ * src/raptor_grddl.c:
+ (raptor_grddl_parse_init_common): Code style.
+
+2010-01-07 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/rdfa.c, librdfa/rdfa.h, src/raptor.h, src/raptor_grddl.c,
+ src/raptor_internal.h, src/raptor_librdfa.c, src/raptor_libxml.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/raptor_sax2.c:
+ Alter raptor_new_sax2() to take world and locator not
+ error_handlers.
+
+ struct raptor_sax2_s loses error_handlers field.
+
+ (raptor_new_sax2): Change to add world and locator at start; store
+ them and forget about error_handlers.
+
+ (raptor_sax2_simple_error, raptor_sax2_parse_chunk,
+ raptor_sax2_start_element): Take error handlers from world, not
+ sax2.
+
+ (raptor_grddl_parse_init_common, raptor_librdfa_parse_start,
+ raptor_rdfxml_parse_init, raptor_rss_parse_init): Update to new
+ raptor_new_sax2 calling convention.
+
+ (raptor_libxml_warning, raptor_libxml_error_common,
+ raptor_libxml_validation_warning): Call error handlers under world
+ rather than in sax2 error_handlers object.
+
+ (raptor_libxml_xmlStructuredErrorFunc): Find error handlers via
+ world.
+
+ struct rdfacontext [in librdfa] replaces error_handlers with world
+ and locator fields for use in calling raptor_new_sax2()
+
+ (rdfa_create_new_element_context) [in librdfa]: no need to copy
+ error_handlers.
+
+ (rdfa_parse_start) [in librdfa] use stored world and locator.
+
+ * src/raptor.h:
+ Removed prototype for raptor_www_set_error_handler
+
+ * src/raptor_general.c, src/raptor_grddl.c, src/raptor_internal.h,
+ src/raptor_librdfa.c, src/raptor_parse.c, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_www.c:
+ Moved raptor_error_handlers to one instance in raptor_world.
+
+ structs raptor_parser_s and raptor_www_s lose error_handlers
+ field.
+
+ struct raptor_world_s gains error_handlers field and new
+ internal_ignore_errors flag to temporarily disable errors.
+
+ (raptor_new_world): Initialise error handlers structure; this is now
+ the only place in the library this is done the public function
+ raptor_error_handlers_init_v2()
+
+ Consequently raptor_error_handlers_init_v2() could be moved internal
+ and the raptor_error_handlers structure made just fields in
+ raptor_world rather than a public structure that is hard to
+ version.
+
+ (raptor_world_internal_set_ignore_errors): Added internal function
+ to disable invoking all error handlers when set. Used in the GRDDL
+ parser and when WWW-fetching in some cases to ignore parse/404
+ errors.
+
+ (raptor_log_error_to_handlers, raptor_log_error_varargs,
+ raptor_log_error): Respect the ignore errors flag.
+
+ (raptor_grddl_discard_message): Deleted.
+
+ (raptor_grddl_fetch_uri): No longer uses above function but instead
+ calls raptor_world_internal_set_ignore_errors() before and after the
+ WWW fetch.
+
+ (raptor_grddl_run_recursive): Also no longer sets error handlers to
+ ignore errors and uses raptor_world_internal_set_ignore_errors
+ before and after running an internal parser.
+
+ (raptor_new_parser_v2): Do not init error_handlers field, just set
+ locator.
+
+ (raptor_www_set_error_handler): Deleted; not necessary since the
+ error_handlers is part of raptor_world not in raptor_www.
+
+ (raptor_parse_uri_with_connection): Removed call to
+ raptor_www_set_error_handler.
+
+ (raptor_parser_copy_user_state): Do not copy removed error_handlers
+ field.
+
+ (raptor_www_new_with_connection_v2): Do not init error_handlers
+ field.
+
+ * src/raptor_parse.c:
+ (raptor_parser_copy_user_state): Code style for assignments.
+
+ * src/raptor_internal.h:
+ Delete unused field from raptor_parser_s
+
+ * src/raptor_abbrev.c, src/raptor_internal.h:
+ Remove unused ordinal code from raptor_abbrev_node
+
+ raptor_abbrev_node: lose ordinal union part.
+
+ (raptor_abbrev_subject_add_list_element): Deleted.
+
+ * src/raptor.h:
+ Remove RAPTOR_WORLD_DECLARED
+
+ * src/raptor_internal.h:
+ Remove an old RAPTOR_DISABLE_V1-protected prototype.
+
+2010-01-06 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h:
+ Break raptor_error_handlers struct ABI moving handlers array to end.
+
+ Remove V2 API fixmes near this; also allows new log levels to be
+ added later.
+
+ * src/raptor_internal.h:
+ Remove unused static_usage field from raptor_world
+
+ * src/ntriples_parse.c:
+ Replace raptor_ntriples_term_type with raptor_term_type
+
+ (raptor_ntriples_generate_statement): Change types of args. Just
+ assign term types to statement types.
+
+ (raptor_ntriples_parse_line): Declare array of 3 term types.
+
+ * src/Makefile.am: remove n3 tests
+
+ * configure.ac, src/Makefile.am, src/n3_common.h, src/n3_lexer.l,
+ src/n3_parser.y, src/turtle_parser.y:
+ Remove experimental N3 flex/bison parser - let turtle parser handle it
+
+ This code was never in production/released code and will never be
+ since the turtle parser is likely to be updated and rewritten.
+
+ * src/n3_parser.y, src/ntriples_parse.c, src/raptor.h,
+ src/raptor_abbrev.c, src/raptor_grddl.c, src/raptor_identifier.c,
+ src/raptor_internal.h, src/raptor_librdfa.c, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_simple.c,
+ src/raptor_serialize_turtle.c, src/raptor_statement.c,
+ src/raptor_xsd.c, src/turtle_parser.y, utils/rapper.c,
+ utils/rdfdiff.c:
+ Rename raptor_identifier_type enum and values to raptor_term_type
+
+ The enum values changed: from RAPTOR_IDENTIFIER_TYPE_RESOURCE to
+ RAPTOR_TERM_TYPE_URI, from RAPTOR_IDENTIFIER_TYPE_ANONYMOUS to
+ RAPTOR_TERM_TYPE_BLANK, from RAPTOR_IDENTIFIER_TYPE_LITERAL to
+ RAPTOR_TERM_TYPE_LITERAL and from RAPTOR_IDENTIFIER_TYPE_UNKNOWN to
+ RAPTOR_TERM_TYPE_UNKNOWN.
+
+ * librdfa/iri.c:
+ fix warning: cast from pointer to integer of different size
+
+ (rdfa_iri_get_base): Do pointer calculations then cast result to
+ unsigned int.
+
+ * src/raptor.h:
+ Remove RAPTOR_V2_AVAILABLE - not needed
+
+ * configure.ac:
+ Remove -DRAPTOR_V2_EXPERIMENTAL=1 not needed anymore
+
+ * src/raptor.h, src/raptor_serialize.c:
+ raptor_serialize_start replaced by
+ raptor_serialize_start_to_iostream
+
+ (raptor_serialize_start): Removed deprecated function replaced by
+ correctly named raptor_serialize_start_to_iostream.
+
+ * src/ntriples_parse.c, src/raptor.h:
+ Removed raptor_ntriples_term_type from public api.
+
+ Moved raptor_ntriples_term_type to ntriples_parse.c module only.
+ It could be replaced by a more general raptor_term_type in future
+ when it gets added.
+
+ * src/raptor.h, src/raptor_abbrev.c, src/raptor_identifier.c,
+ src/raptor_librdfa.c, src/raptor_rdfxml.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_ntriples.c, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_simple.c,
+ src/raptor_serialize_turtle.c, src/raptor_statement.c,
+ utils/rdfdiff.c:
+ Remove RAPTOR_IDENTIFIER_TYPE_XML_LITERAL
+
+ This was used for rdf:parseType="Literal" object literals
+ internally but publically always is turned into
+ RAPTOR_IDENTIFIER_TYPE_LITERAL.
+
+ raptor_identifier_type loses RAPTOR_IDENTIFIER_TYPE_XML_LITERAL value.
+
+ Removed all code for this which mostly was deleting switch cases
+ but also deletes some functions from the Turtle and RDF/XML-abbrev
+ serializers.
+
+ (raptor_rdfxmla_emit_xml_literal, raptor_turtle_emit_xml_literal):
+ Deleted.
+
+ * src/raptor.h, src/raptor_abbrev.c, src/raptor_identifier.c,
+ src/raptor_rdfxml.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c src/raptor_serialize_rdfxmla.c ,
+ src/raptor_serialize_rss.c, src/raptor_serialize_simple.c,
+ src/raptor_serialize_turtle.c, src/raptor_statement.c,
+ utils/rdfdiff.c:
+ raptor_identifier_type loses the RAPTOR_IDENTIFIER_TYPE_ORDINAL value.
+
+ raptor_identifier loses ordinal field.
+
+ Consequent removal of RAPTOR_IDENTIFIER_TYPE_ORDINAL from cases
+ especially handling predicates.
+
+ (raptor_rdfxml_end_element_grammar,
+ raptor_rdfxml_generate_statement,
+ raptor_rdfxml_process_property_attributes,
+ raptor_rdfxml_serialize_statement): Most changes were made here to
+ generate a URI instead of the ordinal integers from the various
+ rdf:li element forms.
+
+ Multiple serializers are now simpler in not having to check for
+ predicate (or even subject/object) ordinals. Several if
+ ordinal {ordinal handling } .. else {uri handling} were removed.
+
+ rdfdiff lost several checks for ordinal/resource alternatives.
+ (rdfdiff_ordinal_equals_resource): Deleted.
+
+ * utils/rdfdiff.c: Remove checks for
+ RAPTOR_IDENTIFIER_TYPE_PREDICATE comparison with ordinal for
+ equality.
+
+ * src/raptor.h, src/raptor_abbrev.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_turtle.c,
+ src/raptor_statement.c: Removed RAPTOR_IDENTIFIER_TYPE_PREDICATE
+
+ raptor_identifier_type loses RAPTOR_IDENTIFIER_TYPE_PREDICATE
+ which has been a synonym for RAPTOR_IDENTIFIER_TYPE_RESOURCE for
+ some time.
+
+ Update code to remove from switch()s and conditions.
+
+ * src/n3_parser.y, src/raptor.h, src/raptor_identifier.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/raptor_serialize_rss.c,
+ src/raptor_xsd.c, src/turtle_parser.y:
+ Deleted raptor_uri_source enum and removed from raptor_identifier.
+
+ Only in RDF/XML parser and not used for anything public.
+
+ (raptor_new_identifier_v2): Delete uri_source arg.
+
+ (raptor_copy_identifier, raptor_set_identifier_uri,
+ raptor_set_identifier_id): Remove assignments to uri_source field.
+
+ (raptor_rdfxml_generate_statement): Remove 3 uri_source args.
+
+ (raptor_rss10_emit_item): Remove assignment to uri_source field.
+
+ Change all calls to raptor_new_identifier_v2() and
+ raptor_rdfxml_generate_statement() in the RDF/XML parser.
+
+ * src/n3_parser.y, src/ntriples_parse.c, src/raptor.h,
+ src/raptor_grddl.c, src/raptor_librdfa.c, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_rss_common.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_ntriples.c, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_rss.c,
+ src/raptor_serialize_simple.c, src/raptor_serialize_turtle.c,
+ src/raptor_statement.c, src/turtle_parser.y, utils/rapper.c,
+ utils/rdfdiff.c:
+ Make a raptor_statement into a 3-tuple of raptor_term.
+
+ This is a short term stage before merging raptor_term with
+ raptor_identifier and getting rid of raptor_triple (in N3 and
+ Turtle parsers). Also want to make the 3 raptor_terms in
+ raptor_statement as object references not statics, and add a graph
+ term. raptor_identifier_type should be raptor_term_type and have
+ less values: kill ordinal and predicate types. Lots of structure
+ name field changes everywhere statement is used.
+
+2010-01-05 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_parse.c, src/raptor_rss_common.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_rss.c,
+ src/raptor_statement.c, utils/rdfdiff.c:
+ Add raptor_world field to raptor_statement, remove raptor_statement_v2.
+
+ raptor_statment gains a raptor_world* field. raptor_statement_v2
+ typedef is deleted.
+
+ (raptor_print_statement_as_ntriples_common,
+ raptor_statement_compare_common): Deleted these internal helper
+ functions.
+
+ (raptor_print_statement_v2): Renamed to raptor_print_statement
+
+ (raptor_print_statement_as_ntriples_v2): Renamed to
+ raptor_print_statement_as_ntriples.
+
+ (raptor_statement_part_as_counted_string_v2): Renamed to
+ raptor_statement_part_as_counted_string.
+
+ (raptor_statement_part_as_string_v2): Renamed to
+ raptor_statement_part_as_string.
+
+ (raptor_statement_compare_v2): Renamed to raptor_statement_compare.
+
+ (raptor_statement_copy): Loses world arg.
+
+ (raptor_statement_copy_v2, raptor_statement_copy_v2_from_v1):
+ Deleted.
+
+ (raptor_free_statement): Loses world arg.
+
+ (raptor_free_statement_v2, raptor_print_statement_v1): Deleted
+
+ (raptor_statement_init): Added to initialise statically a
+ allocated statement.
+
+ (raptor_new_parser_v2): Init static statement with
+ raptor_statement_init().
+
+2010-01-05 Dave Beckett <dave@dajobe.org>
+
+ * src/ntriples_parse.c, src/raptor.h, src/raptor_iostream.c,
+ src/raptor_turtle_writer.c, src/raptor_uri.c:
+ Removed all V1 deprecated functions and structures.
+
+ (raptor_ntriples_term_as_string,
+ raptor_ntriples_string_as_utf8_string,
+ raptor_new_iostream_from_handler,
+ raptor_iostream_get_bytes_written_count,
+ raptor_iostream_write_string_turtle, raptor_uri_is_file_uri):
+ Deprecated functions deleted
+
+ raptor_ntriples_parser and raptor_iostream_handler: Deprecated
+ typedefs removed.
+
+ * src/raptor.h: Remove RAPTOR_V2_AVAILABLE blocks - V2 is always
+ available
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_general.c,
+ src/raptor_identifier.c, src/raptor_iostream.c,
+ src/raptor_locator.c, src/raptor_namespace.c, src/raptor_parse.c,
+ src/raptor_qname.c, src/raptor_sequence.c, src/raptor_serialize.c,
+ src/raptor_serialize_ntriples.c, src/raptor_statement.c,
+ src/raptor_uri.c, src/raptor_www.c, src/raptor_xml_writer.c:
+ Remove all raptor v1 APIs with v2 replacements.
+
+ Remove RAPTOR_V2_EXPERIMENTAL - no longer experimental. Remove
+ RAPTOR_V1 - not needed. Remove all blocks that were protected by
+ RAPTOR_DISABLE_V1 including structs, prototypes and V1 functions.
+
+ * src/raptor_parse.c: Fix static accept_header string length so
+ result is always NUL terminated
+
+ (raptor_parser_get_accept_header): The static last-resource
+ accept_header static string is 11 chars not 9. Ensure buffer is
+ big enough so that the NUL gets copied by strncpy().
+
+ * tests/turtle/ex-38-turtle.out: Restore hack out file
+ ex-38-turtle.out
+
+ * tests/.gitignore, tests/rdfxml/ex-38-rdfxmla.out: Restore hack out
+ file ex-38-rdfxmla.out
+
+ * src/n3_lexer.l, src/n3_parser.y, src/ntriples_parse.c,
+ src/parsedate.y, src/raptor.h, src/raptor_abbrev.c,
+ src/raptor_avltree.c, src/raptor_expat.c, src/raptor_feature.c,
+ src/raptor_general.c, src/raptor_grddl.c, src/raptor_guess.c,
+ src/raptor_identifier.c, src/raptor_iostream.c,
+ src/raptor_json_writer.c, src/raptor_librdfa.c,
+ src/raptor_libxml.c, src/raptor_locator.c, src/raptor_memstr.c,
+ src/raptor_namespace.c, src/raptor_nfc.c, src/raptor_nfc_test.c,
+ src/raptor_parse.c, src/raptor_qname.c, src/raptor_rdfxml.c,
+ src/raptor_rfc2396.c, src/raptor_rss.c, src/raptor_rss.h,
+ src/raptor_rss_common.c, src/raptor_sax2.c, src/raptor_sequence.c,
+ src/raptor_serialize.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_simple.c,
+ src/raptor_serialize_turtle.c, src/raptor_set.c,
+ src/raptor_statement.c, src/raptor_stringbuffer.c,
+ src/raptor_turtle_writer.c, src/raptor_uri.c, src/raptor_utf8.c,
+ src/raptor_www.c, src/raptor_www_curl.c, src/raptor_www_libfetch.c,
+ src/raptor_www_libxml.c, src/raptor_www_test.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c, src/raptor_xsd.c, src/snprintf.c,
+ src/strcasecmp.c, src/turtle_common.c, src/turtle_lexer.l,
+ src/turtle_parser.y, utils/getopt.c, utils/rapper.c,
+ utils/rdfdiff.c: Code style - whitespace around assignment and
+ comparison ops
+
+2010-01-02 Dave Beckett <dave@dajobe.org>
+
+ * Use AM_SILENT_RULES and move autotools helper files to build/ dir
+
+ Update autogen.sh with latest version; dependent on automake 1.11
+ and it's dependencies to get AM_SILENT_RULES.
+
+ Update configure.ac to invoke AM_SILENT_RULES defaulting to 'no'.
+
+ * Remove RCS ID
+
+ * Update another .gitignore
+
+ * Add .gitignore to replace SVN properties svn:ignore
diff --git a/ChangeLog.12 b/ChangeLog.12
new file mode 100644
index 0000000..0dc38eb
--- /dev/null
+++ b/ChangeLog.12
@@ -0,0 +1,1124 @@
+2011-11-27 Dave Beckett <dave@dajobe.org>
+
+ * NEWS.html, RELEASE.html, configure.ac: Bumped version to 2.0.7
+
+2011-11-27 Dave Beckett <dave@dajobe.org>
+
+ * Snapshotted raptor2_2_0_6 for 2.0.6 release (GIT f9f3768e7080f1f132856b731c232c8cbeac1634)
+
+ * docs/raptor-1-to-2-map.tsv: raptor_sequence swap, reverse and
+ next_permutation
+
+ * docs/raptor2-sections.txt:
+ raptor_sequence_next_permutation
+
+ * src/raptor_permute_test.c:
+ (intseq_get_at): Add for testing clarity
+
+ * src/raptor_permute_test.c: Add a proper value checking test for
+ permute size 5
+
+ * src/Makefile.am, src/raptor_permute.c, src/raptor_permute_test.c:
+ raptor_permute_test.c is a pure test and never linked into
+ libraptor2
+
+ * src/raptor_permute.c: Turn permute code into a test for sequence
+ raptor_sequence_next_permutation
+
+ * src/raptor2.h.in, src/raptor_sequence.c:
+ (raptor_sequence_next_permutation): Added based on int permute
+ code
+
+ * docs/raptor2-sections.txt, src/raptor2.h.in,
+ src/raptor_sequence.c:
+ (raptor_sequence_swap): Added pulled out of raptor_sequence_reverse
+
+2011-11-25 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor2.h.in, src/raptor_sequence.c:
+ (raptor_sequence_reverse): Added
+
+ * src/raptor_expat.c, src/raptor_sax2.c: Fix expat support
+
+2011-11-23 Dave Beckett <dave@dajobe.org>
+
+ * src/Makefile.am, src/raptor_permute.c:
+ Add test permutations code
+
+ * configure.ac: Use AWK
+
+ * src/raptor_namespace.c: Explain namespace depth, starting and
+ scopes
+
+2011-11-15 Nicholas J Humfrey <njh@aelius.com>
+
+ * src/Makefile.am: Made git-version.h a non-distributable source
+ file.
+
+2011-11-14 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_www_curl.c:
+ (raptor_www_curl_set_ssl_cert_options): Handle curl < 7.16.4
+
+ * NEWS.html, RELEASE.html, configure.ac:
+ Bumped version to 2.0.6
+
+ * Snapshotted raptor2_2_0_5 for 2.0.5 release (GIT
+ b286cc333996006f008a5ddd3ed116a7613a86bc)
+
+2011-11-13 Dave Beckett <dave@dajobe.org>
+
+ * docs/.gitignore, docs/Makefile.am: docs fixes to use
+ raptor-fake.h
+
+ * docs/tmpl/section-general.sgml, src/snprintf.c,
+ src/raptor2.h.in: autodocs
+
+ * ChangeLog, NEWS.html, RELEASE.html: 2.0.5
+
+ * src/Makefile.am: no rdfdiff here
+
+ * src/ntriples_parse.c, src/raptor_nfc_test.c,
+ src/raptor_turtle_writer.c, src/raptor_xml.c: Check for error
+ return for all raptor_unicode_utf8_string_get_char() calls
+
+ Fixes Issue #000481
+ http://bugs.librdf.org/mantis/view.php?id=481
+
+ * .gitignore: Ignore git-version.h
+
+ * tests/ntriples/Makefile.am, tests/ntriples/bug-481.nq,
+ tests/ntriples/bug-481.out: Add test/results for Issue #481
+
+ * autogen.sh: update autogen.sh
+
+ * configure.ac, src/Makefile.am, src/raptor_general.c,
+ src/raptor_internal.h:
+ Generate GIT commit in version string when
+ compiling from GIT Approach copied from rasqal
+
+2011-11-05 Lauri Aalto <laalto@iki.fi>
+
+ * src/ntriples_parse.c:
+ (raptor_nquads_parse_recognise_syntax): Guess nquads over ntriples
+ since now ntriples parses fine on nquads parser
+
+2011-11-04 Lauri Aalto <laalto@iki.fi>
+
+ * tests/ntriples/Makefile.am,
+ tests/ntriples/testnq-optional-context.nq,
+ tests/ntriples/testnq-optional-context.out: added test case for
+ optional context node in nquads
+
+ * src/ntriples_parse.c:
+ (raptor_ntriples_parse_line): Make context optional for nquads.
+
+ Fixes Issue #0000479
+ http://bugs.librdf.org/mantis/view.php?id=479
+
+2011-10-18 Nicholas J Humfrey <njh@aelius.com>
+
+ * src/turtle_parser.y: Added the W3C format URI for the Turtle
+ parser
+
+2011-10-13 Nicholas J Humfrey <njh@aelius.com>
+
+ * src/ntriples_parse.c, src/raptor_librdfa.c, src/raptor_rdfxml.c,
+ src/raptor_serialize_ntriples.c, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c:
+ Added W3C Format URIs to the parser and serialiser syntax
+ descriptions.
+
+2011-10-13 Nicholas J Humfrey <njh@aelius.com>
+
+ * src/raptor_json.c, src/raptor_serialize_json.c:
+ Updated the URL
+ for RDF/JSON serialisation specification.
+
+2011-09-26 Dave Beckett <dave@dajobe.org>
+
+ * Merge GitHub pull request #2 from presbrey/master
+
+2011-09-26 Joe Presbrey <presbrey@csail.mit.edu>
+
+ * (raptor_uri_string_to_relative_uri_string): compare paths not
+ files.
+
+ Bugfix raptor_uri_string_to_relative_uri_string
+
+ Fixes Issue #0000472
+ http://bugs.librdf.org/mantis/view.php?id=472
+
+2011-09-13 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_uri.c:
+ set errno to 0
+
+2011-09-08 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac, src/raptor_internal.h, src/snprintf.c: Removed
+ calls to trunc() and lround() and optional linking of libm
+
+ (raptor_format_float): Removed unused internal function and thus
+ removed the only need for trunc() and lround().
+
+ configure: Removed checks for trunc(), lround() in libc or libm.
+
+ * src/raptor_abbrev.c, src/raptor_general.c,
+ src/raptor_internal.h, src/raptor_iostream.c,
+ src/raptor_locator.c, src/raptor_uri.c, src/raptor_xml.c,
+ src/snprintf.c: Make raptor_format_integer handle hex too
+
+ (raptor_format_integer): Add base, width and padding fields
+
+ (raptor_format_hexadecimal): Deleted, replaced by above with base
+ = 16. Updated all callers of above with new parameters.
+
+ * src/raptor_json.c:
+ (raptor_json_parse_chunk): bad cast size_t to len for yajl API
+
+2011-08-31 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_general.c, src/raptor_iostream.c,
+ src/raptor_locator.c, src/raptor_nfc.c, src/raptor_nfc_test.c,
+ src/raptor_qname.c, src/raptor_turtle_writer.c,
+ src/raptor_unicode.c, src/raptor_www_curl.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c, src/snprintf.c: Add more RAPTOR_GOOD_CAST
+ and RAPTOR_BAD_CAST and fix some.
+
+ * src/raptor_uri.c:
+ (raptor_new_uri_from_rdf_ordinal): Use raptor_format_integer()
+
+ * src/raptor_general.c, src/raptor_internal.h: Use
+ raptor_format_integer() in generating bnode IDs
+
+ (raptor_world_default_generate_bnodeid_handler): Use
+ raptor_format_integer() and tidy code. raptor_world field
+ default_generate_bnodeid_handler_prefix_length is an integer; long
+ enough.
+
+ * src/raptor_abbrev.c:
+ (raptor_new_qname_from_resource): Use raptor_format_integer()
+
+ * src/raptor_internal.h, src/raptor_iostream.c, src/raptor_xml.c,
+ src/snprintf.c:
+
+ (raptor_format_hexadecimal): Added for formatting uppercase hex in
+ a fixed width field.
+
+ (raptor_iostream_hexadecimal_write): Use
+ raptor_format_hexadecimal()
+
+ (raptor_xml_escape_string_any): Use raptor_format_hexadecimal() to
+ remove a sprintf for &#xXX.
+
+ * utils/rdfdiff.c:
+ (rdfdiff_add_statement): Malloc right size
+
+ * src/ntriples_parse.c, src/raptor_grddl.c, src/raptor_iostream.c,
+ src/raptor_libxml.c, src/raptor_nfc.c, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_sax2.c, src/raptor_serialize_html.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_term.c,
+ src/raptor_turtle_writer.c, src/raptor_unicode.c,
+ src/raptor_xml.c, src/snprintf.c, src/turtle_common.h: Use
+ RAPTOR_BAD_CAST and RAPTOR_GOOD_CAST
+
+ Some good uses: - narrowing a known, checked unicode char to a U16
+
+ Some 'bad' uses:
+ - only handing error messages, literal language, qname prefixes of
+ a max len constrained by int
+ - passing in data to libxml constrained by int max len
+ - locator column field constrained to int size
+
+ Some bad uses:
+ - iostream read_bytes and write-bytes methods return int but could
+ easily return a lot more in the size_t range (compare to fread).
+ API change needed.
+ - locator byte field constrained to int size. should be size_t
+ - raptor_nfc_check returns int offset into a buffer that could be
+ larger raptor_ntriples_parser_context changed line_length and
+ offset to size_t raptor_turtle_parser changed buffer_length to
+ size_t
+
+ * src/raptor_internal.h: Add macros for describing types of casts
+
+ RAPTOR_GOOD_CAST: code checks or logic ensures cast will not
+ truncate
+
+ RAPTOR_BAD_CAST: value may be truncated; may require API
+ change/break. Might be unrealistic e.g. a >4G error message,
+ qname prefix.
+
+2011-08-30 Dave Beckett <dave@dajobe.org>
+
+ * src/snprintf.c: snprintf return code and size guessing fixes
+
+ vsnprintf_is_c99 macro: start guessing length from len
+ strlen(format) and grow size by 50% each loop to hopefully get big
+ enough faster.
+
+ (raptor_vsnprintf): Error out when raptor_vasprintf result < 0
+
+ (raptor_snprintf): Note error is < 0 response
+
+ (raptor_vasprintf): Error out when raptor_vsnprintf2 result is < 0
+
+2011-08-28 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_locator.c:
+ (raptor_locator_format): Use raptor_format_integer to kill
+ snprintf
+
+ * src/raptor_internal.h, src/snprintf.c:
+ (raptor_format_integer): Added
+
+ * src/raptor_json_writer.c:
+ (raptor_json_writer_literal_datatype): Remove unused code.
+
+2011-08-27 Dave Beckett <dave@dajobe.org>
+
+ * utils/rdfdiff.c: Fix rdfdiff assumption that RAPTOR_DEBUG is
+ defined
+
+ * src/raptor_grddl.c: Fix a few more RAPTOR_DEBUG is defined
+ assumptions
+
+ * src/raptor_avltree.c, src/raptor_grddl.c, src/raptor_guess.c,
+ src/raptor_iostream.c, src/raptor_namespace.c, src/raptor_parse.c,
+ src/raptor_qname.c, src/raptor_rdfxml.c, src/raptor_rfc2396.c,
+ src/raptor_sequence.c, src/raptor_serialize_rss.c,
+ src/raptor_set.c, src/raptor_stringbuffer.c,
+ src/raptor_turtle_writer.c, src/raptor_uri.c, src/raptor_www.c,
+ src/raptor_www_curl.c, src/raptor_www_test.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c, src/turtle_parser.y: Code style for
+ comparing a possibly undefined macro to a value
+
+ Use:
+ #if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > N
+ rather than:
+ #if RAPTOR_DEBUG > N
+
+ * src/raptor_internal.h: Do not assume RAPTOR_DEBUG is defined
+
+ * src/snprintf.c: autodocs
+
+ * configure.ac: Do not enable debug messages by default for
+ --enable-maintainer-mode
+
+ This now requires the extra --enable-debug option to configure or
+ autogen.sh
+
+ * docs/tmpl/section-general.sgml:
+ updated doc tmpl
+
+ * configure.ac: Check for vasprintf once
+
+ * configure.ac, src/snprintf.c: Define -D_GNU_SOURCE to get
+ vasprintf()
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor2-sections.txt: Add new
+ snprintf functions to docs
+
+ * src/raptor_json_writer.c, src/raptor_locator.c,
+ src/raptor_log.c: Use raptor_snprintf() and raptor_vasprintf()
+
+ In preference to raw snprintf() or doing strlen() on
+ raptor_vsnprintf().
+
+ * configure.ac, src/raptor2.h.in, src/raptor_general.c,
+ src/snprintf.c: Portability fixes to snprintf / vsnprintf /
+ vasprintf
+
+ (raptor_vsnprintf2): Added with actual vsnprintf() calling
+ contention, deprecating raptor_vsnprintf which doesn't
+
+ (raptor_snprintf): Added with snprintf() calling convention using
+ raptor_vsnprintf2() to provide a portable version.
+
+ (raptor_vasprintf): Added with vasprintf() calling convention
+ (GNU) using raptor_vsnprintf2() to implement it if not present.
+ Moved the formatted printing code all to src/snprintf.c
+
+2011-08-25 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_locator.c: Avoid snprintf(NULL, ) when there there is
+ no C99 vsnprintf()
+
+ (raptor_locator_format): Pick a large enough buffer size if
+ snprintf is likely not portable, when HAVE_C99_VSNPRINTF is not
+ defined.
+
+ Fixes Issue#0000465
+ http://bugs.librdf.org/mantis/view.php?id=465
+
+2011-08-21 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/rdfa.c: Switch deprecated index() to more portable
+ strchr()
+
+ * src/snprintf.c: Compile a local lround() if it is not present.
+
+ * configure.ac: Add check for lround()
+
+ * src/win32_raptor_config.h.in: Define isnan() macro around
+ _isnan()
+
+ * configure.ac: Define HAVE_TRUNC and HAVE_ROUND from configure
+
+2011-08-12 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_statement.c:
+ (raptor_statement_compare): Calculate pointer differences using
+ ptrdiff_t
+
+ * src/raptor_unicode.c: Casts for returning unicode char lengths
+
+ (raptor_unicode_utf8_string_put_char,
+ raptor_unicode_utf8_string_get_char): Cast small int return values.
+
+ * src/raptor_general.c:
+ (raptor_world_default_generate_bnodeid_handler): Use unsigned int
+ for ID lengths.
+
+ * src/raptor_internal.h, src/raptor_qname.c: Use size_t for qname
+ value length and unsigned int for name lengths.
+
+ raptor_qname_s changes value_length to size_t
+
+ (raptor_new_qname, raptor_new_qname_from_namespace_local_name,
+ raptor_qname_string_to_uri): unsigned ints for prefix and name
+ lengths.
+
+ * src/raptor_namespace.c: Use raptor_namespace prefix_length as
+ unsigned int; it's long enough.
+
+ (raptor_namespaces_find_namespace, raptor_new_namespace_from_uri):
+ Casts for unsigned int.
+
+ * src/raptor_internal.h: raptor_namespace prefix_length is
+ unsigned int
+
+ * src/raptor_serialize_turtle.c, src/turtle_parser.y: Use turtle's
+ actual mime type text/turtle in syntax recognizing code. This
+ should make guessing from the registered mime type accurate.
+
+2011-08-09 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor2-sections.txt,
+ docs/tmpl/section-unicode.sgml, src/raptor2.h.in,
+ src/raptor_unicode.c: Added UTF-8 strlen and substr utility
+ functions
+
+ (raptor_unicode_utf8_strlen): Added
+
+ (raptor_unicode_utf8_substr): Added
+
+2011-08-01 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: stddef.h for ptrdiff_t
+
+ * src/raptor_uri.c: code style - casts for lengths
+
+ (raptor_new_uri_from_counted_string,
+ (raptor_new_uri_from_counted_string): Cast size_t length from
+ strlen to unsigned int.
+
+ (raptor_new_uri_from_uri_local_name,
+ raptor_new_uri_relative_to_base, raptor_new_uri_from_id)
+ raptor_new_uri_for_rdf_concept): size_t for string and uri
+ lengths
+
+ (raptor_uri_path_common_base_length): Use size_t inside and return
+ size_t
+
+ (raptor_uri_path_make_relative_path): size_t for path lengths.
+
+ (raptor_uri_print): use size_t for number of objects fwrite prints
+
+ * src/raptor_serialize_rss.c: cast uri len to unsigned int
+
+ * src/raptor_www_curl.c:
+ size_t for len
+
+2011-07-31 Dave Beckett <dave@dajobe.org>
+
+ * src/ntriples_parse.c, src/raptor_abbrev.c, src/raptor_avltree.c,
+ src/raptor_general.c, src/raptor_grddl.c, src/raptor_guess.c,
+ src/raptor_internal.h, src/raptor_iostream.c, src/raptor_json.c,
+ src/raptor_json_writer.c, src/raptor_libxml.c, src/raptor_log.c,
+ src/raptor_namespace.c, src/raptor_option.c, src/raptor_parse.c,
+ src/raptor_qname.c, src/raptor_rdfxml.c, src/raptor_rfc2396.c,
+ src/raptor_rss.c, src/raptor_rss_common.c, src/raptor_sax2.c,
+ src/raptor_sequence.c, src/raptor_serialize.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_turtle.c,
+ src/raptor_set.c, src/raptor_statement.c,
+ src/raptor_stringbuffer.c, src/raptor_term.c,
+ src/raptor_turtle_writer.c, src/raptor_uri.c, src/raptor_www.c,
+ src/raptor_www_curl.c, src/raptor_www_libxml.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c, src/turtle_common.c, src/turtle_lexer.l,
+ src/turtle_parser.y, utils/rdfdiff.c: Code style change and
+ cleanup for alloc/free macros
+
+ Code style:
+ 1. var = RAPTOR_CALLOC(type, count, size)
+ Prefering:
+ var = RAPTOR_CALLOC(type, 1, sizeof(*var))
+ when count = 1
+
+ 2. var = RAPTOR_MALLOC(type, size)
+
+ 3. RAPTOR_FREE(type, var)
+
+ The consequence here is allocs that mostly fit into 1 line without
+ so much boilerplate and duplication of types.
+
+ The RAPTOR_MALLOC and RAPTOR_CALLOC now do the cast to the return
+ type.
+
+ RAPTOR_FREE takes the object type too but always casts arg to void
+ This certainly contains many wrong types to the arg but might be
+ used later in some kind of smart type-aware debugging allocator.
+
+ * librdfa/curie.c: Use size_t to compute sizes otherwise may
+ truncate on 64-bit systems
+
+ (rdfa_resolve_uri): Use size_t for strlen tmp
+
+ (rdfa_resolve_curie): cast for strlen when ifdef LIBRDFA_IN_RAPTOR
+
+ * librdfa/rdfa.c: Use size_t to compute sizes otherwise may
+ truncate on 64-bit systems
+
+2011-07-30 Dave Beckett <dave@dajobe.org>
+
+ * docs/.gitignore, docs/raptor-overrides.txt,
+ docs/raptor-sections.txt, docs/raptor.types,
+ docs/raptor2-overrides.txt, docs/raptor2-sections.txt,
+ docs/raptor2.types, docs/tmpl/.gitignore: More changes from
+ DOC_MODULE=raptor2
+
+ * docs/Makefile.am: Install raptor V2 docs in with doc module
+ raptor2 so they don't clash with raptor V1 docs
+
+2011-07-25 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c:
+ (raptor_grddl_run_grddl_transform_uri): Set base_uri for sheet URI
+ get.
+
+ * NEWS.html, RELEASE.html, configure.ac:
+ Bumped version to 2.0.5
+
+ * docs/tmpl/section-option.sgml, docs/tmpl/section-www.sgml:
+ Update tmpls
+
+ * Snapshotted raptor2_2_0_4 for 2.0.4 release (GIT
+ 76194e074160848d6f690a62b395d5dd23aff728)
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor-sections.txt,
+ src/raptor2.h.in, src/raptor_internal.h, src/raptor_option.c,
+ src/raptor_parse.c, src/raptor_turtle_writer.c, src/raptor_www.c,
+ src/raptor_www_curl.c:
+ Implement WWW feching SSL client certificate
+ options raptor_option gains: RAPTOR_OPTION_WWW_CERT_FILENAME,
+ RAPTOR_OPTION_WWW_CERT_TYPE and RAPTOR_OPTION_WWW_CERT_PASSPHRASE (raptor_www_set_ssl_cert_options): Added public API to set SSL
+ client certificates on WWW. (raptor_www_curl_set_ssl_cert_options): Added for libcurl to
+ implement above. (raptor_parser_parse_uri_with_connection): Use
+ raptor_www_set_ssl_cert_options() to turn the parser options into
+ settings on the WWW object.
+
+2011-07-24 Dave Beckett <dave@dajobe.org>
+
+ * src/ntriples_parse.c:
+ (raptor_ntriples_parse_line): Calculate term_lengths only when
+ debugging. [-Wunused-but-set-variable]
+
+ * src/turtle_lexer.l: Disable input() for Turtle lexer - never
+ needed.
+
+ * src/turtle_parser.y:
+ (turtle_parse): Do not assign buffer which is unused
+ [-Wunused-but-set-variable]
+
+ * src/raptor_internal.h, src/raptor_parse.c: Move parser buffer
+ from stack to parser object (reducing call stack size)
+
+ RAPTOR_READ_BUFFER_SIZE internal define added.
+
+ raptor_parser gains a buffer of RAPTOR_READ_BUFFER_SIZE + 1 for
+ NUL.
+
+ (raptor_parser_parse_file_stream): Use parser object buffer not
+ stack.
+
+ (raptor_parser_parse_uri_write_bytes): Use size_t in len
+ calculation.
+
+ (raptor_parser_parse_iostream): Use parser object buffer not
+ stack. Use size_t for read length.
+
+ * configure.ac: -Wno-sign-conversion for now
+
+ * src/raptor_internal.h, src/raptor_www.c: Reduce stack use of
+ raptor_www_file_handle_fetch
+
+ (raptor_www_file_handle_fetch): Use www->buffer for file buffer
+ for all builds not just www with libxml or libfetch.
+
+ * src/raptor_xml.c:
+ (raptor_valid_xml_ID): use size_t for strlen
+
+ * src/raptor_locator.c:
+ (raptor_locator_format): Cast calculated bufsize to int return.
+
+ * src/raptor_internal.h, src/raptor_www.c, src/raptor_www_curl.c:
+ Use a total_bytes for byte counts inside raptor_www
+
+ * src/snprintf.c:
+ (raptor_format_float): use a long for the intpart.
+
+ * configure.ac:
+ Expand (GCC) compiler warnings lots
+
+ * docs/raptor-1-to-2-map.tsv, docs/raptor-sections.txt,
+ src/raptor2.h.in, src/raptor_internal.h,
+ src/raptor_serialize_ntriples.c, src/raptor_serialize_turtle.c,
+ src/raptor_turtle_writer.c: Make sure N-Triples and Turtle
+ serialize legal blank node IDs
+
+ Fixes Issue #0000449
+ http://bugs.librdf.org/mantis/view.php?id=449
+
+ (raptor_bnodeid_ntriples_write): Added to write a N-Triples blank
+ node ID in legal form, replacing any letters not in the allowed
+ set.
+
+ (raptor_turtle_writer_bnodeid): Added internal method for Turtle
+ writer to do this too.
+
+ (raptor_turtle_emit_blank): Use above.
+
+ * configure.ac:
+ Enforce libcurl earliest version supported 7.12.0
+
+ See previous commit for Issue#0000457
+ http://bugs.librdf.org/mantis/view.php?id=457 and curl GIT commit
+ https://github.com/bagder/curl/commit/ffc5fa3a2be787c8198eb68836a45c440876c1bd
+
+ * src/raptor_internal.h:
+ Remove curl/types.h
+
+ Fixes Issue#0000457
+ http://bugs.librdf.org/mantis/view.php?id=457
+
+ Was made a blank file over 7 years ago.
+
+ curl GIT commit ffc5fa3a2be787c8198eb68836a45c440876c1bd
+ Date: Mon Apr 26 14:06:51 2004 +0000
+ "typedef CURL in the curl.h file instead of only having a single
+ useful typedef in the separate types.h"
+
+ Which is 7.11.2 but it wasn't mentioned in the release notes (even
+ if I'd read them): http://curl.haxx.se/changes.html
+
+ * configure.ac:
+ Improve checking for trunc and round
+
+ Fixes Issue#0000308
+ http://bugs.librdf.org/mantis/view.php?id=308
+
+2011-07-14 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_avltree.c:
+ Condition protect more debug printfs
+
+ * src/raptor_avltree.c:
+ Fix losing node parents in deleting
+
+ (raptor_avltree_delete_internal, raptor_avltree_delete_internal2):
+ Fix parents when moving nodes during deletion. Based on patch
+ from 'v-for-vandal' in notes of Issue#0000455
+ http://bugs.librdf.org/mantis/view.php?id=455
+ Thanks!
+
+ Fixes Issue#0000455
+ http://bugs.librdf.org/mantis/view.php?id=455
+
+ * src/raptor_avltree.c:
+ Add extra AVL Tree debugging
+
+ Based on patch in Issue #0000455
+ http://bugs.librdf.org/mantis/view.php?id=455 with code style
+ changes
+
+ * configure.ac, src/raptor_json.c:
+ Add YAJL V2 support
+
+ Note that YAJL V1 and V2 both install the same library name
+ 'libyajl' even though they have different ABI & APIs.
+
+ Fixes Issue #0000456
+ http://bugs.librdf.org/mantis/view.php?id=456
+
+2011-07-11 Dave Beckett <dave@dajobe.org>
+
+ * tests/trig/bug451.out, tests/trig/bug451.trig: Make bug451.trig
+ legal.
+ Fixes Issue #000451
+ http://bugs.librdf.org/mantis/view.php?id=451
+
+ * src/turtle_lexer.l:
+ Allow = instead of := in TRiG
+
+ * tests/trig/Makefile.am, tests/trig/bug451.out,
+ tests/trig/bug451.trig, tests/trig/example2.trig:
+ Add tests for bug
+ 451 - fixing TrIG to be legal
+
+2011-06-01 Dave Beckett <dave@dajobe.org>
+
+ * NEWS.html, RELEASE.html, configure.ac:
+ Bumped version to 2.0.4
+
+ * Snapshotted raptor2_2_0_3 for 2.0.3 release (GIT
+ 148879e3346d0976792b51bddf4d98db34263d07)
+
+2011-05-31 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-1-to-2-map.tsv: Fix API change typos; there are no
+ raptor_term_as.*string() functions
+
+ * src/turtle_lexer.l: Cleanup stringbuffer if EOF happens in a
+ literal
+
+ * docs/tmpl/section-general.sgml: doc tmpls
+
+2011-05-30 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_parser.y: More fixups for going back to pull parser
+
+ bison's yacc.c skeleton output does not support %lex-param so use
+ #define YYLEX_PARAM again
+
+ * src/turtle_parser.y:
+ (turtle_parser_error): Remove yy_init_globals call.
+
+2011-05-22 Dave Beckett <dave@dajobe.org>
+
+ * utils/Makefile.am: CLEANFILES cleans *.plist from clang output
+
+ * utils/rdfdiff.c:
+ (rdfdiff_statement_equals): Return different if object URIs
+ differ.
+ [CLANG]
+
+ * utils/Makefile.am: ANALYZE
+
+ * src/Makefile.am: all SOURCES
+
+ * src/Makefile.am: analyze for maintainer only
+
+ * src/Makefile.am: CLEANFILES cleans *.plist from clang output
+
+ * librdfa/triple.c:
+ Fixes from clang --analyze
+
+ (rdfa_complete_object_literal_triples): Remove assignment of
+ 'current_object_literal' that always assigns the existing value.
+
+ * librdfa/rdfa.c:
+ Fixes from clang --analyze
+
+ (start_element): Remove unused (attribute) 'value' var Remove
+ usless assignment of 'insert_xmlns_definition' at end of block it
+ is scoped to.
+
+ * librdfa/curie.c:
+ Fixes from clang --analyze
+
+ (rdfa_resolve_uri): use rval_copy to alter final char from '/' not
+ rval, which is always NULL.
+
+ (rdfa_resolve_curie): Remove unused var 'expanded_prefix_length'
+
+ * src/raptor_xml_writer.c:
+ (raptor_new_xml_writer): Remove useless assignment to 'nstack'.
+ [CLANG]
+
+ * src/raptor_uri.c:
+ Fixes [CLANG]
+ (raptor_uri_print): Initialize 'world' carefully and check if it is
+ NULL when calling raptor_log_error_formatted.
+
+ * src/raptor_unicode.c: Fixes [CLANG]
+ (raptor_unicode_utf8_string_get_char): Do not uslessly increment
+ 'input' pointer at end of function.
+
+ * src/raptor_turtle_writer.c: Fixes [CLANG]
+ (raptor_new_turtle_writer): Remove useless assignment to 'nstack'.
+
+ (raptor_turtle_writer_quoted_counted_string): Initialize 'rc' and
+ use it to return faiure from raptor_string_python_write()
+
+ * src/raptor_serialize_turtle.c: Fixes [CLANG]
+ (raptor_turtle_emit_subject_collection_items)
+
+ (raptor_turtle_emit_subject_properties): Return 'rv' on error.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_statement): Return failure on not handled
+ [CLANG]
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_emit_subject_properties): Return 'rv' on error
+ [CLANG].
+
+ * src/raptor_serialize_rdfxml.c:
+ Fixes [CLANG]
+
+ (raptor_rdfxml_serialize_statement): Remove
+ 'end_predicate_element' assignemnts that are immediately
+ overwritten. Use 'attrs_count' in writing a URI - be consistent
+ with other emitting even know we know in all cases what the values
+ will be.
+
+ * src/raptor_rss.c:
+ Fixes [CLANG]
+
+ (raptor_rss_start_element_handler): Remove unused 'attribute_type'
+ var.
+
+ (raptor_rss_insert_identifiers): Initialize 'new_uri' to NULL and
+ check for failures of it and term construction.
+
+ * src/raptor_rfc2396.c:
+ Fixes [CLANG]
+
+ (raptor_uri_resolve_uri_reference): Remove assignment to
+ 'last_char' never needed - loop continue action overwrites it.
+
+ * src/raptor_rdfxml.c:
+ Fixes [CLANG]
+
+ (raptor_rdfxml_start_element_handler): Check element->parent is
+ not NULL before using pointer.
+
+ (raptor_rdfxml_generate_statement): Remove unused rdf_xml_parser
+ var. (raptor_rdfxml_start_element_grammar): Remove assignments to
+ 'finished' that are immediately re-assigned.
+
+ * src/raptor_nfc.c:
+ (raptor_nfc_check): Remove unused 'start' var [CLANG]
+
+ * src/raptor_namespace.c:
+ (raptor_namespace_format_as_xml): Do not increment p at end [CLANG]
+
+ * src/raptor_memstr.c:
+ (raptor_memstr): Remove unused 'c' var [CLANG]
+
+ * src/raptor_libxml.c:
+ Fixes [CLANG]
+
+ (raptor_libxml_error_common): Set world and locator to NULL and
+ carefully assign and check use.
+
+ (raptor_libxml_xmlStructuredError_handler_parsing): Turn
+ assignment into something that does work. Hints that the
+ workaround for an ancient libxml2 context error pointer bug are no
+ longer needed since anyone using such an old libxml would have
+ crashed at this point when an error happened. Could bump minimum
+ libxml2 version.
+
+ * src/raptor_librdfa.c:
+ (raptor_librdfa_parse_init): Remove unused librdfa_parser [CLANG]
+
+ * src/raptor_json_writer.c:
+ Fixes [CLANG]
+
+ (raptor_json_writer_quoted): Initialize rc and set it to value of
+ any raptor_string_python_write error return. Return rc.
+
+ (raptor_json_writer_key_uri_value): Return error rc
+
+ * src/raptor_grddl.c:
+ Fixes [CLANG]
+
+ (raptor_grddl_run_grddl_transform_doc): Initialize userCtxt
+
+ (raptor_grddl_run_grddl_transform_uri): Remove unused grddl_parser
+
+ (raptor_grddl_parse_chunk): Remove assigning rc a value never read
+
+ * src/ntriples_parse.c:
+ (raptor_ntriples_parse_line): Initialize term fields in all
+ cases[CLANG]
+
+ * src/.gitignore: .gitignore
+
+ * src/Makefile.am: 'analyze' target fixes
+
+ * src/Makefile.am: Added 'analyze' target to invoke clang over
+ sources
+
+2011-05-19 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_parser.y: lets have bison debugging with push parser
+ too
+
+ * src/raptor_parse.c, src/raptor_serialize.c,
+ src/raptor_www_curl.c: Fixes for building in RAPTOR_DEBUG > 2 mode
+
+ * src/raptor_qname.c: docs
+
+2011-05-12 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: Ensure Bison 2.4+ is used
+
+2011-05-11 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_lexer.l:
+ Make TRiG lexer recognize URI/qname (ws)*
+
+ (:-)? (ws)* { Add new rule to recognize QNAME as the graph name.
+ Adjust it to skip over extra optional tokens. Adjust existing
+ rule to handle all whitespace around optional ':-'
+
+2011-05-10 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_lexer.l: Handle trig graph name and start in lexer
+ (GRAPH_NAME_LEFT_CURLY): Added returning URI for <uri> { with
+ optional ':-'
+
+ * src/turtle_parser.y: Fix calls to
+ raptor_term_print_as_ntriples() to raptor 2 API form
+
+ * src/raptor_statement.c:
+ (raptor_statement_print): Handle printing partial statements for
+ debugging.
+
+ * src/.gitignore: ignore raptor2.h
+
+ * src/turtle_parser.y:
+ (turtle_push_parse): world only if very debuggy
+
+ * src/turtle_parser.y:
+ (turtle_push_parse): print token on very debug only.
+
+2011-04-27 Dave Beckett <dave@dajobe.org>
+
+ * docs/libraptor2.3, examples/grapper.c, examples/raptor_abort.c,
+ examples/rdfcat.c, examples/rdfguess.c, examples/rdfprint.c,
+ examples/rdfserialize.c, scripts/build-formats.c, tests/empty.c:
+ Use raptor2.h header
+
+2011-04-26 Dave Beckett <dave@dajobe.org>
+
+ * docs/Makefile.am:
+ Make docs use raptor2.h
+
+ * configure.ac, docs/tmpl/section-general.sgml, librdfa/rdfa.h,
+ src/.gitignore, src/Makefile.am, src/ntriples_parse.c,
+ src/raptor.h, src/raptor.h.in, src/raptor2.h.in,
+ src/raptor_abbrev.c, src/raptor_avltree.c, src/raptor_concepts.c,
+ src/raptor_expat.c, src/raptor_general.c, src/raptor_grddl.c,
+ src/raptor_guess.c, src/raptor_iostream.c, src/raptor_json.c,
+ src/raptor_json_writer.c, src/raptor_librdfa.c,
+ src/raptor_libxml.c, src/raptor_locator.c, src/raptor_log.c,
+ src/raptor_memstr.c, src/raptor_namespace.c, src/raptor_nfc.c,
+ src/raptor_nfc_data.c, src/raptor_nfc_test.c, src/raptor_option.c,
+ src/raptor_parse.c, src/raptor_qname.c, src/raptor_rdfxml.c,
+ src/raptor_rfc2396.c, src/raptor_rss.c, src/raptor_rss_common.c,
+ src/raptor_sax2.c, src/raptor_sequence.c, src/raptor_serialize.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_html.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_turtle.c,
+ src/raptor_set.c, src/raptor_statement.c,
+ src/raptor_stringbuffer.c, src/raptor_syntax_description.c,
+ src/raptor_term.c, src/raptor_turtle_writer.c,
+ src/raptor_unicode.c, src/raptor_uri.c, src/raptor_www.c,
+ src/raptor_www_curl.c, src/raptor_www_libfetch.c,
+ src/raptor_www_libxml.c, src/raptor_www_test.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c, src/snprintf.c, src/turtle_common.c,
+ src/turtle_lexer.l, src/turtle_parser.y, utils/rapper.c,
+ utils/rdfdiff.c: Switch to raptor2.h as main header. raptor.h
+ includes it
+
+ * NEWS.html, RELEASE.html, configure.ac:
+ Bumped version to 2.0.3
+
+2011-04-15 Nicholas J Humfrey <njh@aelius.com>
+
+ * docs/Makefile.am: Set DISTCLEANFILES to empty before including
+ gtk-doc.make
+
+ * docs/Makefile.am: Moved raptor-fake.i from CLEANFILES to
+ DISTCLEANFILES.
+
+2011-04-05 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_parser.y:
+ (graph): Ensure $1 is NULLed out and ownership passed on
+
+ Fixes Issue #0000437
+ http://bugs.librdf.org/mantis/view.php?id=437
+
+ * src/raptor_statement.c:
+ (raptor_statement_print): Handle NULL terms.
+
+ * src/turtle_parser.y: Fix extra debugging use of
+ raptor_term_print_as_ntriples
+
+2011-03-27 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_lexer.l: Use %option extra-type to set type of extra
+ arg.
+
+2011-03-20 Dave Beckett <dave@dajobe.org>
+
+ * Snapshotted raptor2_2_0_2 for 2.0.2 release (GIT
+ 4d782df45fd4b3e11243008c4dc221effcaad591)
+
+ * configure.ac, src/raptor_general.c: Error out when calling
+ library presents a too old header
+
+ (raptor_new_world_internal): Switch to checking for too old, not
+ exact match.
+
+ * NEWS.html, RELEASE.html, configure.ac:
+ Bumped version to 2.0.2
+
+ * src/raptor_term.c: autodocs
+
+ * Snapshotted raptor2_2_0_1 for 2.0.1 release (GIT
+ 6f1655f985df370999a92897726d359946c1dbd9)
+
+2011-03-14 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h.in, src/raptor_parse.c: autodocs
+
+2011-03-10 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_term.c: Autodocs - mention UTF-8 encodings in
+ args/returns for raptor_term docs
+
+2011-02-27 Dave Beckett <dave@dajobe.org>
+
+ * scripts/process-changes.pl:
+ Update to latest process-changes.pl
+
+2011-02-14 Dave Beckett <dave@dajobe.org>
+
+ * scripts/process-changes.pl:
+ Update to latest process-changes.pl
+
+ * tests/turtle/Makefile.am, tests/turtle/test-36.out,
+ tests/turtle/test-36.ttl, tests/turtle/test-37.out,
+ tests/turtle/test-37.ttl: Add tests for long literal with dups and
+ lang
+
+2011-02-07 Dave Beckett <dave@dajobe.org>
+
+ * ChangeLog, ChangeLog.11, Makefile.am:
+ Add ChangeLog.11 for 2010
+
+2011-02-06 Dave Beckett <dave@dajobe.org>
+
+ * LICENSE.html: Make GPL V2 or newer explicit.
+
+2011-02-01 Dave Beckett <dave@dajobe.org>
+
+ * raptor2.spec.in: fix Source:
+
+2011-01-27 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_internal.h: Remove get_curie_type rename for librdfa
+ - now static
+
+ * librdfa/curie.c, librdfa/rdfa_utils.h: Update to librda GIT
+ commit 3838bb11fb155bbae200a2388096cbe6804a7551 No longer exports
+ get_curie_type.
+
+ * NEWS.html, RELEASE.html, configure.ac: Bumped version to 2.0.1
+
+2011-01-26 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_internal.h: Rename librdfa symbols for internal
+ linking of librdfa
+
+ Fixes Issue #0000416
+ http://bugs.librdf.org/mantis/view.php?id=416
+
+ * librdfa/rdfa.c, librdfa/rdfa_utils.c, librdfa/triple.c: Update
+ to librdfa GIT commit aeebd00d68ab7292cae35ebfbcb638f3a2625f39
+
+2011-01-24 Nicholas J Humfrey <njh@aelius.com>
+
+ * src/raptor_serialize_ntriples.c, tests/ntriples/testnq-1.out,
+ tests/trig/bug370.out, tests/trig/example1.out,
+ tests/trig/example2.out, tests/trig/example3.out: Fixed the nquads
+ serialiser to output the graph name in the fourth column, instead
+ of repeating the object
+
+2011-01-21 Dave Beckett <dave@dajobe.org>
+
+ * src/ntriples_parse.c, src/raptor_abbrev.c, src/raptor_librdfa.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_html.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c,
+ src/raptor_uri.c: Replace all RAPTOR_FATAL with error log messages
+ in user builds
+
+ All RAPTOR_FATAL calls are now only called inside RAPTOR_DEBUG
+ blocks.
+
+ * src/raptor_abbrev.c, src/raptor_internal.h:
+ (raptor_new_abbrev_subject): Made static to this module
+
+ * src/raptor_statement.c:
+ (raptor_statement_init): Init statement to NULL pointers
+
+2011-01-03 Dave Beckett <dave@dajobe.org>
+
+ * Snapshotted raptor2_2_0_0 for 2.0.0 release (GIT
+ 8ba659697c83891eb6ae9b47ce0e0ce8bb070e40)
+
+ * docs/raptor-docs.xml: shorter title
+
+ * NEWS.html, RELEASE.html: 2.0.0
+
+ * librdfa/rdfa.c: Revert upstream
+ 62d939ec1e3756a69eef48a50be0ab0624e2d4ad
+
+ * librdfa/triple.c:
+ (rdfa_generate_namespace_triple): Protect
+ processor_graph_triple_callback
+
+ * examples/grapper.c, librdfa/iri.c, librdfa/rdfa.c,
+ src/raptor_general.c: Casts for C++
+
+ * examples/grapper.c:
+ Use raptor_term_to_string in final 2.0.0 API
+
+ * docs/raptor-sections.txt:
+ Added raptor_syntax_description_validate
+
+ * docs/raptor-1-to-2-map.tsv: Added
+ raptor_syntax_description_validate
+
+ * docs/raptor-1-to-2-map.tsv: Update for older API change:
+ raptor_term_to_.*string not _as_
+
+ * src/.gitignore:
+ Ignore generated win32_raptor_config.h
+
+ * src/win32_raptor_config.h.in:
+ Insert generated @symbols
+
+ * src/win32_raptor_config.h, src/win32_raptor_config.h.in: Rename
+ win32_raptor_config.h to win32_raptor_config.h.in
+
+ * configure.ac:
+ generate src/win32_raptor_config.h
diff --git a/ChangeLog.2 b/ChangeLog.2
new file mode 100644
index 0000000..f77cec1
--- /dev/null
+++ b/ChangeLog.2
@@ -0,0 +1,637 @@
+2001-12-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Added dc.rdf to dist
+
+ * dc.rdf: RDF/XML example file
+
+ * tests/ex-20.rdf: use rdf:ID
+
+2001-10-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.in:
+ Check for xmlParseFile in xml or xml2
+
+2001-10-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am:
+ Allow tests with empty correct results file
+
+ * rdfdump.c:
+ Check that only file: URIs are used
+
+2001-09-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/ex-19.rdf:
+ Check omitted rdf:RDF works
+
+ * tests/ex-20.rdf:
+ Check rdf:ID generates right URI
+
+ * tests/Makefile.am:
+ Added ex-19, ex-20
+ Generate N-Triples output with fixed base URI
+
+ * configure.in:
+ Updated for use of libtool
+ Remove XML_OBJS, use LIBS for xml parser dependencies
+
+ * Makefile.am:
+ Create dynamic, static library using libtool
+ Reorganised rdfdump compile.
+
+ * raptor_parse.c (raptor_make_uri_from_id):
+ Take base_uri and use it to create
+ absolute URI from id.
+ Update uses of above function to match changed interface.
+
+2001-09-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c:
+ If quiet, don't even report number of statements
+
+ * rdfdump.c: Fix help
+
+2001-09-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * ntriples_parse.c (raptor_ntriples_string):
+ A little optimising of switch cases
+
+ * tests/test.nt:
+ Added \u and \U test cases
+
+ * ntriples_parse.c:
+ Added \U and \U escapes
+
+ * ntriples_parse.c (raptor_ntriples_unicode_char_to_utf8):
+ (raptor_ntriples_string): Tidy up, in preparation for adding new
+ escapes.
+
+ * ntriples_parse.c (raptor_ntriples_unicode_char_to_utf8):
+ Added,
+ based on librdf_unicode_char_to_utf8
+ (raptor_ntriples_string): Added, for handling \ escapes for both
+ "strings" and <uri-ref>
+
+ * tests/Makefile.am:
+ Automate test checks, diffs. Not doing proper model checks yet.
+
+ * tests/Makefile.am:
+ Add raw output files to dist
+
+ * configure.in:
+ Moved tests into tests directory
+
+ * tests/Makefile.am:
+ automakefile for tests
+
+ * Makefile.am:
+ Moved tests into tests directory
+
+2001-09-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h:
+ Added comments for raptor_identifier_type
+
+2001-08-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.in:
+ Handle libxml v1 (xml-config) and v2 (xml2-config)
+ Report libxml version found in configuring and status
+
+ * configure.in:
+ Bumped version to 0.9.4
+
+ * Snapshotted raptor_0_9_3 for 0.9.3 release
+
+ * configure.in:
+ When choosing xml parsers, end when one found.
+
+ * INSTALL.html:
+ Updated for xml parser choosing changes
+ Added N-Triples test
+
+ * configure.in:
+ Choose an xml parser from any available, --with-xml-parser selects one specifically.
+
+ * Makefile.am:
+ Use -n for invoking ntriples output; --ntriples only works when GNU
+ getopt_long is around.
+
+ * rdfdump.c:
+ Add ntriples to short getopt string
+
+ * configure.in:
+ Update CPPFLAGS from xml-config when it exists and testing for
+ headers.
+
+ * NEWS.html:
+ Updated for 0.9.3 release
+
+2001-08-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_xml_set_document_locator):
+ Capture SAX document locator
+ (raptor_xml_update_document_locator): Update raptor locator with that
+ info.
+ Update gnome xml/libxml error and warning functions to use the above.
+
+2001-08-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_generate_statement):
+ Handle generating reified statements
+ with IDs as well as URIs etc.
+
+ * Makefile.am: Added tests/ex-18.rdf
+
+ * tests/ex-18.rdf:
+ test rdf:Description as document element
+
+ * raptor_parse.c (raptor_xml_start_element_handler):
+ Process rdf: attributes on
+ document element.
+ (raptor_start_element_grammar): Handle <rdf:Description> at top level
+ when <rdf:RDF> not present.
+
+ * raptor_parse.c: Fix it again
+
+ * raptor_parse.c:
+ Fix things triggered by previous typo fix!
+
+ * raptor_parse.c: Typo
+
+ * configure.in:
+ Bumped version to 0.9.3
+
+ * TODO.html: Record more fixes
+
+ * Makefile.am:
+ Started adding test answer files with tests/ex-13.nt
+
+ * tests/ex-13.nt:
+ N-Triples output for tests/ex-13.rdf
+
+ * raptor.h:
+ RAPTOR_IDENTIFIER_TYPE_NONE => RAPTOR_IDENTIFIER_TYPE_UNKNOWN
+ different from RAPTOR_URI_SOURCE_NOT_URI to catch uninitialisation
+
+ * raptor_parse.c:
+ RAPTOR_IDENTIFIER_TYPE_NONE => RAPTOR_IDENTIFIER_TYPE_UNKNOWN
+ (raptor_print_statement_detailed): Added some debug-only tests
+ (raptor_copy_identifier): Oops, copy all fields in identifier.
+ Remove some void* casts no longer needed.
+ When copying DAML collection URI to parent, set type, uri_source too
+
+ * ntriples_parse.c:
+ Fix for debug output - calculate length of generated terms correctly.
+
+ * raptor.h:
+ added raptor_identifier for holding (URI, ID, types etc.)
+ raptor_identifier_type enum now union of raptor_subject,predicate,object_type
+ removed feature RAPTOR_FEATURE_INTERPRET_CONTAINERS_AS_TYPEDNODE
+ Added prototypes for raptor_identifier functions
+
+ * rdfdump.c, ntriples_parse.c:
+ Updates for change with introduction of raptor_identifier
+
+ * tests/ex-13.rdf:
+ Note results are in tests/ex-13.nt
+
+ * raptor_parse.c:
+ Major update with pervasive changes
+ Added skipping state to just ignore XML content (not used yet)
+ Removed seq, bag, alt, container parser FSM states.
+ Added rdf:type, rdf:value support when used as attributes.
+ Replaced loads of (URI, ID, literal, type) with raptor_identifier
+ - still more to do
+ Removed feature interpret_containers_as_typedNode - now default.
+ Removed support for 'bare' XML elements - now illegal.
+ Minor bug fixes found from above changes.
+ (raptor_new_identifier): Added
+ (raptor_init_identifier): Added
+ (raptor_copy_identifier): Added
+ (raptor_free_identifier): Added
+ (raptor_process_property_attributes): Lots of updates to handle
+ rdf:type, rdf:value and rdf:_n.
+
+ * Makefile.am: Added tests/ex-17.rdf
+
+ * tests/ex-17.rdf:
+ test empty propertyElt off a node
+
+ * tests/ex-01.rdf:
+ Added the two empty element XML forms
+
+ * Makefile.am: Added tests/ex-16.rdf
+
+ * tests/ex-16.rdf:
+ test rdf:value as an attribute
+
+ * Makefile.am: Added tests/ex-15.rdf
+
+ * tests/ex-15.rdf:
+ test rdf:type as an attribute
+
+ * tests/ex-07.rdf:
+ Strictly, Literal not literal
+
+2001-07-26 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ Don't peek at current_element before it is constructed.
+ For elements inside parsetype literal, pass on state to potential
+ child elements.
+
+2001-07-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * README.html:
+ Move quality warning from alpha->beta
+
+2001-07-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ Updates to get daml:collection stuff working inside Redland
+
+2001-07-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c:
+ Added --output=simple | ntriples to use raptor_print_statement_as_ntriples
+
+ * raptor.h:
+ Added raptor_print_statement_as_ntriples
+
+ * raptor_parse.c (raptor_print_statement_as_ntriples):
+ Added.
+ (raptor_make_uri_from_id): No longer uses base_uri. Probably need
+ to do this differently later.
+ Throughout - always store uri_source in parent when copying uris up.
+ Fix some mistakes in uri_source tracking.
+
+ * ntriples_parse.c:
+ Make _:name not include _: in name
+
+ * ntriples_parse.c (raptor_ntriples_generate_statement):
+ Handle _:name object stored
+ as strings, not URIs.
+
+ * raptor_parse.c (raptor_print_statement_detailed):
+ Handle _:name subject, object
+ stored as strings, not URIs.
+
+ * ntriples_parse.c (raptor_ntriples_generate_statement):
+ Handle _:name subject stored
+ as strings, not URIs.
+
+ * tests/test.nt:
+ Added tests for all end of lines: CR and CR LF (other lines are all LF)
+ Changed all subject resource names so easier to see missing results.
+
+ * ntriples_parse.c:
+ Added CR | LF | CR LF handling.
+ Handle space before/after trailing .
+ Various bits of tidying
+
+2001-07-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Added tests/ex-14.rdf
+
+ * tests/ex-14.rdf: Test that was crashing
+
+ * raptor_parse.c:
+ Store propertyElt/rdf:li resource/ID in object, not subject.
+
+ * configure.in, Makefile.am:
+ Added win32 dir to dist
+
+ * win32/raptor.dsw, win32/raptor.plg, win32/raptortest.cpp,
+ win32/raptortest.dsp, win32/Makefile.am, win32/raptor.dsp:
+ win32 files
+
+ * TODO.html:
+ Updated from recent fixes, improvements.
+
+ * Makefile.am:
+ Added RDF/XML test 11-13
+
+ * tests/ex-11.rdf, tests/ex-12.rdf, tests/ex-13.rdf:
+ tests for parseType literal, resource
+
+ * raptor.h:
+ Updated after patch from Aaron Michal to provide Win32 and
+ daml:collection support
+
+ * raptor_parse.c:
+ Added patch from Aaron Michal including
+ 1) Win32 support
+ 2) daml:collection support
+ 3) fixes to parseType literal and the raptor_format_element function
+ 4) Fixed passing on varargs in error, warning handlse.
+ 5) Various s/int i/unsigned int i/
+ I also:
+ Added memory cleanup for daml:collection URIs
+ Fixed some fencepost errors in parseType literal string management
+
+ * raptor_parse.c:
+ Update comment to match new rdf:value
+
+ * raptor_parse.c:
+ Added rdf:value property to list of rdf_attr_names
+
+2001-07-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ Update comment to match new rdf:value
+
+ * raptor_parse.c:
+ Added rdf:value property to list of rdf_attr_names
+
+2001-07-16 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * README.html:
+ Updated for ntriples parser.
+
+ * raptor.h:
+ Make URI function prototypes public
+
+ * ntriples_parse.c:
+ Handle anonymous nodes passed back properly.
+
+2001-07-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * ntriples_parse.c:
+ Tidied some comments
+
+ * Makefile.am:
+ Added ntriples parser files, test file
+
+ * rdfdump.c:
+ Added ntriples support, --ntriples arg to invoke it.
+
+ * raptor_parse.c:
+ Moved raptor_uri stuff to raptor.h
+ Made some uri functions public for ntriples
+
+ * raptor.h:
+ Define, use raptor_uri typedef here.
+ Add prototypes for raptor_uri functions
+
+ * ntriples.h, ntriples_parse.c:
+ N-Triples parser
+
+ * tests/test.nt: N-Triples test cases
+
+2001-07-02 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * NEWS.html: HTML tweak
+
+ * raptor_parse.c, raptor.spec.in, raptor.h:
+ Now called raptor
+
+ * Snapshotted raptor_0_9_2 for 0.9.2 release
+
+ * NEWS.html:
+ Updated for 0.9.2 release
+
+ * raptor_parse.c, raptor.spec.in, raptor.h, rdfdump.c,
+ configure.in, autogen.sh, acconfig.h, TODO.html, README.html,
+ NEWS.html, Makefile.am, LICENSE.html, INSTALL.html:
+ Now called raptor
+
+2001-06-06 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * README.html:
+ Point to TODO.html, NEWS.html, ChangeLog earlier on.
+
+ * configure.in:
+ Bumped version to 0.9.2
+
+ * NEWS.html:
+ Updated for 0.9.1 release
+
+ * Snapshotted rapier_0_9_1 for 0.9.1 release
+
+2001-06-04 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapier_parse.c:
+ Generate properties connecting parent nodes to contained resources
+ for all parent node types
+
+ * Makefile.am: Fix test typo2
+
+ * Makefile.am: Fix test typo
+
+ * Makefile.am: Renamed test files
+
+ * tests/ex-05.rdf, tests/ex-06.rdf, tests/ex-07.rdf,
+ tests/ex-08.rdf, tests/ex-09.rdf, ex-10.rdf, tests/ex-00.rdf,
+ tests/ex-01.rdf, tests/ex-02.rdf, tests/ex-03.rdf,
+ tests/ex-04.rdf: Test RDf/XML files
+
+ * rapier_parse.c:
+ Fixed some missing frees for IDs, bagIDs
+ Containers now return resource to parent properties.
+
+ * configure.in:
+ Fix XML_SetNamespaceDeclHandler detection when using expat sources
+
+ * configure.in:
+ One more return(0); added to AC_TRY_RUN
+
+ * configure.in:
+ Updated configure for better expat, libxml detection
+
+ * TODO.html: More todo.
+
+ * Makefile.am: Run ./rdfdump
+
+ * rdfdump.c: Count the statements
+
+ * rapier.h: Added rapier_uri_source
+
+ * rapier_parse.c:
+ Changed qname to local_name throughout.
+ (rapier_process_property_attributes): Pass in the element with the
+ attributes and the element that contains the resource
+ Added FIXMEs about ID attribute on empty propertyElt.
+
+2001-03-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapier_parse.c:
+ Replaced internal fields with more evocative names (subject_uri,
+ predicate_uri, object_uri)
+ Added rapier_uri_source for every URI so can follow URI provenance.
+ Pass the URI provenance to the generation of statements
+ Lots of bug squashing for tests ms_4.1_1.rdf (too many statements)
+ and ms_7.4_2.rdf (too few, parseType resource)
+
+2001-03-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapier_parse.c:
+ Added a cast for c++
+
+2001-02-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapier_parse.c:
+ More parseType literal buffer length overruns fixed.
+
+2001-02-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapier.h:
+ Added librdf_world support when inside Redland
+
+ * rapier_parse.c:
+ Added librdf_world support when inside Redland
+ (rapier_format_element): Count length of literal XML better -
+ correctly?
+
+2001-02-18 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapier_parse.c (rapier_parse_file):
+ Catch more conditional filename deallocs
+
+ * rapier_parse.c:
+ Split RAPIER_URI_AS_FILENAME into _TO_FILENAME versions, dealloc
+ resulting string when using _TO_ version.
+
+2001-02-09 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * README.html:
+ Moved bugs to separate page.
+
+ * TODO.html: Rapier todo/bugs
+
+2001-02-04 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * LICENSE.html:
+ Specify particular versions of licenses.
+
+ * Many files:
+ Change license boilerplate
+
+2001-01-25 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapier.h:
+ Prototype changes to use Redland URI objects (when available) for
+ public functions and locators.
+
+ * rapier_parse.c:
+ Changes to use Redland URI objects (when available) for public
+ functions and locators.
+
+ * rapier.h:
+ Updated for new prototypes.
+
+ * rapier_parse.c (rapier_new):
+ No args
+ (rapier_parse_file): Take rapier_uri pointers.
+
+ * rdfdump.c:
+ Fixed base URI handling, updated to new rapier_new api
+ Added -r, --replace-newlines for replacing newlines with spaces in literals
+ Added -q, --quiet for less messages.
+
+ * rapier_parse.c:
+ Add child_uri field to pass down to child nodes and use it when
+ rdf:resource used on propertyElts (not rdf:li)
+ inc rdf_attr_count for non RDF M&S attribtues
+ When ID seen on propertyElt, refify. But what to do with bagID then?
+ Fill in many missing bag_uri references when generating statements
+
+2001-01-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.in:
+ Define RAPIER_INTERNAL here
+
+ * rapier_parse.c:
+ Fixes for integration with Redland
+
+2001-01-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c, configure.in, acconfig.h:
+ Added test for needing optind declaration (portability)
+
+ * rapier_parse.c:
+ s/namespace/nspace/ to make compilable with c++
+ Added qname_length and value_length to rapier_ns_name and use them to
+ reduce number of strlen()s.
+ Added some more casts for c++, especially near LIBRDF_MALLOC
+
+ * configure.in:
+ Bumped version to 0.9.1
+
+2001-01-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Snapshotted rapier_0_9_0 for 0.9.0 release
+
+ * configure.in:
+ Try to detect and use old and new installed expat libs
+
+ * configure.in:
+ Try a better way to get correct expat headers
+
+ * rdfdump.c: Use HAVE_GETOPT_H
+
+ * configure.in:
+ Test for getopt.h (for rdfdump)
+ Test for expat.h, xmlparse.h - expat options.
+
+ * rapier_parse.c:
+ Use HAVE_EXPAT_H and HAVE_XMLPARSE_H
+
+ * configure.in:
+ Added fatal error if no XML parser found.
+
+ * Makefile.am:
+ Add rapier.spec.in to dist
+
+ * rapier.spec.in: RPM spec
+
+ * configure.in:
+ Made first version 0.9.0
+
+ * rdfdump.c: Tidy comment.
+
+ * NEWS.html, LICENSE.html, INSTALL.html:
+ Updated style, preparing for release
+
+ * README.html:
+ Updated features, todo, preparing for release.
+
+ * rapier_parse.c: Tidy comments.
+
+ * rapier.h:
+ Changed prototype of container test function
+
+ * rdfdump.c:
+ Fix error message formatting.
+
+ * rapier_parse.c:
+ Major updates from 2001-01-21:
+ parseType literal works mostly.
+ Added reification.
+ Fixed some compile-with-Redland problems
+ Made use of more Redland URI concepts
+ (rapier_generate_property): Removed - now use
+ rapier_generate_statement or:
+ (rapier_generate_named_statement): Added - handles statements with
+ predicates that can be either XML names or namespaced names.
+
+2001-01-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Tidy cflags
+
+ * configure.in:
+ Made version a lot bigger; alpha quality.
+ Added configurable expat/libxml choice
+ Tidy cflags
+
+ * config.h.in: Shouldn't be in CVS
+
+ * NEWS.html, LICENSE.html, INSTALL.html, README.html:
+ First version.
+
+ * rapier_parse.c:
+ Mostly working except for - reification (ignored),
+ rdf:li as propertyType doesn't work,
+ parseType literal not supported.
+ Little testing.
+
diff --git a/ChangeLog.3 b/ChangeLog.3
new file mode 100644
index 0000000..7f3fa4c
--- /dev/null
+++ b/ChangeLog.3
@@ -0,0 +1,2026 @@
+2002-12-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c:
+ (main) Try test again with /etc - surely that is least likely to
+ be a symlink?
+
+ * tests/Makefile.am:
+ check-bad-rdf: turn off bourne shell exiting while running
+ tests expected to fail.
+
+ * tests/Makefile.am:
+ Set baseuri from test file basename; ensure no dirs are in the base URI
+
+2002-12-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: Removed just for now
+
+2002-12-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * NEWS.html: tweak
+
+ * configure.in: Bumped version to 0.9.8
+
+ * NEWS.html: date
+
+ * Snapshotted raptor_0_9_7 for 0.9.7 release
+
+ * raptor.spec.in: Updated for 0.9.7 release
+
+2002-12-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * INSTALL.html, README.html, NEWS.html: Updated for 0.9.7 release
+
+ * acconfig.h:
+ Seems like PACKAGE and VERSION are not needed here, and later
+ autoconfs generate headers that moan.
+
+ * raptor_parse.c, raptor_general.c: castings
+
+ * raptor.h: Indent CPP directives after column 1 # for lame C compiler
+
+ * TODO.html: Updated after recent bug fixes
+
+ * tests/Makefile.am: test(1) string equality is = not ==
+
+2002-12-18 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * autogen.sh: Delete autom4te too
+
+ * configure.ac: auto-configure source for newer autoconfs
+
+2002-12-16 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c (main):
+ Use /bin to test, seems more likely to be around on more posix
+ systems such as OSX
+
+ * raptor_parse.c (raptor_generate_statement):
+ Handle NULL reified being passed.
+ (raptor_process_property_attributes): Property attributes are never
+ reified explicitly but may be in a bag.
+ (raptor_start_element_grammar,raptor_end_element_grammar): Turn bad
+ uses of bag:ID into errors not warnings.
+
+ * tests/Makefile.am:
+ Added more bag:ID checks (44-45) and errors (bad 05-09)
+ Make test failures stop the 'make check'.
+
+ * tests/bad-05.rdf, tests/bad-06.rdf, tests/bad-07.rdf,
+ tests/bad-08.rdf, tests/bad-09.rdf, tests/ex-48.rdf,
+ tests/ex-49.rdf, tests/ex-50.rdf, tests/ex-46.rdf,
+ tests/ex-47.rdf, tests/ex-48.out, tests/ex-49.out,
+ tests/ex-50.out, tests/ex-46.out, tests/ex-47.out:
+ Turned rdf:bagID property element checks into errors
+
+ * raptor_parse.c:
+ Add rdf:bagID checks - only allow it in the two cases it is in the
+ grammar - on a node element and an empty property element.
+ Otherwise emit warnings since there is no error test case yet.
+
+ * tests/ex-50.out, tests/ex-50.rdf, tests/ex-44.out,
+ tests/ex-45.out, tests/ex-46.out, tests/ex-47.out,
+ tests/ex-48.out, tests/ex-49.out, tests/ex-44.rdf,
+ tests/ex-45.rdf, tests/ex-46.rdf, tests/ex-47.rdf,
+ tests/ex-48.rdf, tests/ex-49.rdf:
+ Checking rdf:bagID ignored on other property element cases
+
+ * raptor_parse.c (raptor_generate_statement):
+ Handles generating a reified statement
+ ID for use with bagID and then reiifying the statement too.
+
+ * tests/Makefile.am: Add ex-43
+
+ * tests/ex-43.out, tests/ex-43.rdf:
+ Test rdf:bagID when property elements need generated reified ID
+
+ * raptor_parse.c (raptor_generate_statement):
+ Gain bag_element argument, use it
+ throughout to indicate the element to find the rdf:bagID if any.
+ (raptor_start_element_grammar): Generate _:bagid rdf:type rdf:Bag
+ when rdf:bagID appears on node element.
+
+ * tests/ex-42.out: Correct for actual output order
+
+2002-12-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/ex-03.rdf, tests/ex-03.out:
+ correct this now that rdf:bagID support begins to work
+
+ * tests/Makefile.am: Added ex-42
+
+ * tests/ex-42.out, tests/ex-42.rdf: rdf:bagID
+
+ * tests/bad-04.rdf: Check rdf:ID and rdf:bagID with same value fails
+
+ * tests/bad-02.rdf: Duplicate rdf:ID names
+
+ * raptor_parse.c:
+ Make debug less chatty about cdata, unless RAPTOR_DEBUG_CDATA
+ defined.
+
+ * raptor_parse.c (raptor_record_ID):
+ Added, notes rdf:ID and rdf:bagID values, checks
+ for duplicates (per in-scope base-URI).
+ (raptor_free_ID_list): Added, frees structure above.
+ (raptor_xml_start_element_handler): Handle xml:base using
+ raptor_new_uri_for_xmlbase to strip/fix parts that aren't used.
+ (raptor_start_element_grammar): Check for illegal rdf:ID, rdf:bagID
+ and rdf:nodeID using raptor_valid_xml_ID. Check for duplicate rdf:ID
+ and rdf:bagID values using raptor_record_ID.
+ Only allow parsetype "Literal", "Resource" and "Collection", not
+ case-equivalents.
+ Check for and forbid property attributes on a literal property
+ elemnent.
+
+ * Makefile.am: Added raptor_utf8.c
+
+ * raptor_internal.h: Export less from raptor_utf8.c
+
+ * raptor_general.c (raptor_valid_xml_ID):
+ Use raptor_unicode_is_namestartchar
+ and raptor_unicode_is_namechar.
+
+ * raptor_utf8.c: Raptor UTF-8 and Unicode support
+
+ * tests/bad-03.rdf: Check rdf:ID and rdf:bagID values
+
+ * tests/Makefile.am: Added bad-02 to bad-04
+
+ * raptor_uri.c (raptor_uri_construct):
+ Internal; constructs a uri-ref string from
+ the parts.
+ (raptor_new_uri_for_xmlbase): Ad
+ (raptor_uri_resolve_uri_reference): Copy reference path across when
+ reference URI has one.
+ Work for path components that are >1 letter long.
+ (raptor_new_uri_for_xmlbase): Added, makes a new uri from an existing
+ one, suitable for xml:base (no fragment, query; path must be
+ present).
+ (main): Make test cases use example.org.
+ Add checks for the above bugs.
+
+ * raptor.h: Added prototype for raptor_new_uri_for_xmlbase
+
+ * ntriples_parse.c:
+ raptor_ntriples_unicode_char_to_utf8 now raptor_unicode_char_to_utf8
+ raptor_ntriples_utf8_to_unicode_char now
+ raptor_unicode_utf8_to_unicode_char
+ (raptor_print_ntriples_string): Allow no delimiter.
+
+ * raptor_internal.h: Added prototypes for raptor_valid_xml_ID
+ Added prototypes for raptor_unicode_is_* methods.
+ The ntriples_* utf8/unicode methods are now raptor_unicode_*
+
+ * raptor_general.c (raptor_print_statement_as_ntriples):
+ N-Triples escape URIs (for IRI
+ compatibility).
+ (raptor_validate_xml_ID): Added, checks that the syntax of attributes
+ matching xml:ID are correct matching
+ http://www.w3.org/TR/REC-xml-names/#NT-NCName
+
+ * rdfdump.c: Exit 1 on error, 2 on warnings.
+
+ * README.html: Words
+
+2002-12-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/ex-41.rdf, tests/ex-41.out: Add rdf:datatype test with xml:lang
+
+ * raptor_parse.c: Don't care state about numbers
+
+ * raptor_parse.c (raptor_xml_end_element_handler):
+ Don't check for unbalanced XML; the
+ XML parsers do that
+
+ * raptor_parse.c:
+ Update parser states to match http://www.w3.org/TR/rdf-syntax-grammar/
+ names. Fix comments to also match.
+ rdf_syntax_terms_info - added to describe forbidden nodeEl,
+ propEl, propAttr
+ (raptor_forbidden_nodeElement_name,
+ raptor_forbidden_propertyElement_name): Added, using above
+
+ * rdfdump.c: Exit with code 2 if there were warnings.
+
+ * raptor_parse.c: Zap xml:lang attr
+
+2002-12-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.in: Added raptor-config
+
+ * Makefile.am: Added raptor-src-config
+
+ * raptor-src-config.in: raptor-src-config source
+
+2002-12-04 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_xml_start_element_handler):
+ Save away the element attributes
+ in an allocated array, restore the pointers later. This allows the
+ XML parser to free them correctly.
+ (raptor_xml_end_element_handler): Call raptor_free_qname again to
+ tidy up.
+ (raptor_init_parser_rdfxml): Initialise libxml2 explicitly
+ (raptor_terminate_parser_rdfxml): Added, cleaning up libxml2.
+
+ * raptor_libxml.c (raptor_libxml_endDocument):
+ free the libxml2 Doc that is created but
+ never freed by the SAX methods.
+
+ * raptor_internal.h, raptor_general.c:
+ Added raptor_terminate_parser_rdfxml() for closing rdfxml parser
+ factory.
+
+2002-12-03 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_libxml.c (raptor_libxml_internalSubset,
+ raptor_libxml_externalSubset): No return value.
+
+ * raptor.h: Update prototype for unsigned char arg.
+
+ * raptor_parse.c: Yet more casts, for expat XML_Char as char*
+
+ * raptor_uri.c (raptor_free_uri): There is no return value
+
+ * raptor_uri.c, raptor_qname.c, raptor_parse.c,
+ raptor_namespace.c, raptor_general.c, raptor.h, ntriples_parse.c:
+ More unsigned char to char fixes, other castings enough to make
+ g++ happy.
+
+ * raptor_parse.c, raptor_qname.c, raptor_namespace.c,
+ raptor_general.c, raptor_internal.h:
+ Use unsigned char for UTF-8 strings rather than char
+ (That means all XML names, content, buffers)
+
+ * raptor_parse.c: Delete HAVE_XML_SetNamespaceDeclHandler - never used
+ Don't merge expat XML_Char (char) and libxml2 xmlChar (unsigned char).
+ Work with unsigned char always.
+
+ * raptor_internal.h:
+ Don't merge expat XML_Char (char) and libxml2 xmlChar (unsigned char).
+ Work with unsigned char always.
+
+ * configure.in, acconfig.h:
+ Delete HAVE_XML_SetNamespaceDeclHandler - never used
+
+ * raptor_parse.c (raptor_element_has_property_attributes):
+ Unused rdf_parser arg zapped.
+
+ * raptor_parse.c (raptor_xml_parse_chunk_):
+ Don't assign a negative number to size_t len, it is probably unsigned.
+
+ * raptor_parse.c (raptor_free_element):
+ Use raptor_free_uri on datatype URI
+
+ * raptor_parse.c, raptor.h: Removed trailing ','s in enums
+
+2002-12-02 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * ntriples_parse.c (raptor_ntriples_string): sscanf format lx
+
+2002-11-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html:
+ Note suggestion to trim spaces around urls in lax/default mode
+
+2002-11-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * INSTALL.html: Now works with old libxml 2.3.5 (released 2001-03-23)
+
+ * raptor_libxml.c (raptor_libxml_init):
+ Use RAPTOR_LIBXML_XMLSAXHANDLER_INITIALIZED
+ to see if libxml xmlSAXHandler has an initialized field
+
+ * configure.in: Check libxml xmlSAXHandler has initialized field
+ defining RAPTOR_LIBXML_XMLSAXHANDLER_INITIALIZED if so
+
+ * acconfig.h: Added RAPTOR_LIBXML_XMLSAXHANDLER_INITIALIZED
+
+ * INSTALL.html: Updated supported versions
+
+2002-11-26 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * win32_config.h, configure.in, rdfdump.c, raptor_uri.c,
+ raptor_parse.c, raptor_libxml.c, raptor_general.c,
+ ntriples_parse.c: stdarg.h is now a required header.
+
+ * configure.in:
+ Added --with-xml2-config to set location of libxml xml2-config program.
+
+2002-11-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_xml_start_element_handler): Don't free
+ raptor_free_qname(element_name) here, raptor_free_element does it.
+
+2002-11-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.in:
+ Make it use expat sources if this is part of Redland, ../expat dir
+ exists
+ and there is no installed expat system library
+
+ * raptor_parse.c (raptor_xml_parse_chunk_):
+ Only use the libxml2 bug workaround for small
+ buffers for libxml2 versions lower than 2.4.25
+
+ * tests/Makefile.am:
+ Report error status from standard rdf/xml tests, even if the answer
+ was correct.
+
+ * tests/ex-03.rdf: Remove aboutEach* and bare bagID
+
+2002-11-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: XML parser choice
+
+ * tests/test.out, tests/test.nt, tests/ex-11.out, tests/ex-07.out,
+ raptor_parse.c, raptor_general.c, ntriples_parse.c:
+ rdfs:XMLLiteral now rdf:XMLLiteral
+ Add rdf:nil to allowed rdf namespace terms
+
+ * raptor_parse.c: More error/warnings rewordings
+
+ * raptor_parse.c:
+ Remove M&S from some comments, messages. Use RDF namespace.
+
+ * raptor_parse.c:
+ Improve warning about multiple object nodes for a property element.
+
+2002-11-07 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/test.out: typo
+
+ * tests/test.out, tests/ex-11.out, tests/ex-07.out:
+ Remove xml"" tests, replacing with "foo"<...> form.
+
+ * raptor_general.c: Remove xml"" (stage 1).
+ (raptor_print_statement_detailed): Output this as a datatyped literal.
+ (raptor_print_statement_as_ntriples): Output the "foo"<..> datatype
+ N-Triples form.
+
+ * ntriples_parse.c:
+ Remove xml"" (stage 1). Parsing it works but gives an error.
+ Never output.
+ (raptor_ntriples_generate_statement): Output "foo"<...> for xml
+ literal. Remove is_xml argument.
+ (raptor_ntriples_parse_line): For XML literal (old xml""), parse,
+ give an error and emit it in the datatype form.
+
+2002-11-02 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * README.html: Updated after 0.9.6 release - sigh!
+
+ * NEWS.html: fix 0.9.6 release date
+
+ * configure.in: Bumped version to 0.9.7
+
+ * Snapshotted raptor_0_9_6 for 0.9.6 release
+
+ * NEWS.html, TODO.html: Updated for 0.9.6
+
+ * raptor_parse.c:
+ rdf_attr_info gains allowed_unprefixed_on_attribute to suppress
+ warning.
+
+ * libraptor.3: Updated for 0.9.6
+
+ * tests/test.out: minor fix
+
+ * rdfdump.1: Add -a/--assume option.
+
+ * raptor.h: Tweak uri factory method typedefs, prefix with raptor_
+
+ * raptor.h: raptor_start_parse_file: Made an internal method
+
+ * raptor_general.c (raptor_start_parse_file): Made an internal method
+
+ * tests/test.nt: minor fix
+
+ * tests/test.out, tests/test.nt:
+ Added tests for datatyped literals with/without language
+
+ * ntriples_parse.c (raptor_ntriples_string):
+ Added N-Triples datatype (^^<uri-ref>) parsing.
+
+2002-11-01 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * ntriples_parse.c (raptor_ntriples_generate_Statement):
+ Added datatypes argument,
+ will set the URI if the string is passed in.
+
+2002-10-31 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c: Check for rdf:datatype on property/member elements
+
+ * tests/Makefile.am: Added ex-41
+
+ * tests/ex-41.out, tests/ex-41.rdf: Added rdf:datatype tests
+
+ * raptor_parse.c (raptor_free_element): Free xml:lang values
+
+ * raptor_parse.c:
+ alternatively, don't zap the pointer and let cleanup grab it.
+
+ * raptor_parse.c:
+ free rdf:about attribute value before discarding pointer.
+
+ * raptor_general.c (raptor_parse_file): Always free filename.
+
+ * raptor_uri.c (raptor_uri_filename_to_uri_string):
+ Fix length of buffer
+ for unix when file name is recalculated from getcwd().
+
+ * raptor_namespace.c (raptor_namespaces_free):
+ Don't need non-NULL context to do freeing.
+
+ * ntriples_parse.c:
+ Update to handle xml"string"@lang format (and warn about older one)
+
+ * ntriples_parse.c:
+ Update to handle "string"@lang format (and warn about older one)
+
+ * tests/test.out, tests/test.nt, tests/rdfs-namespace.out,
+ tests/rdf-schema.out, tests/ex-29.out:
+ Update to "string"@lang format.
+
+ * raptor_general.c (raptor_print_statement_as_ntriples):
+ Update to "string"@lang format.
+ Add datatype URI.
+
+ * rdfdump.c (main): Init uri_string variables
+
+ * raptor_internal.h, ntriples_parse.c, raptor_namespace.c,
+ raptor_parse.c, raptor_qname.c, raptor_uri.c, raptor_general.c,
+ raptor_libxml.c: LIBRDF_ macros now RAPTOR_
+
+ * raptor_internal.h: Remove raptor_uri_init
+
+ * raptor.h: Added raptor_uri_init
+
+ * raptor_namespace.c:
+ (main) Updates for initialising URI class in/outside redland
+
+ * rdfdump.c: When RAPTOR_IN_REDLAND, include <librdf.h>
+
+ * rdfdump.c: Use raptor URI calls.
+ Use raptor_init/raptor_finish - now required.
+
+ * raptor_general.c (raptor_init): Now compulsory
+
+ * raptor_parse.c, raptor_locator.c, raptor_namespace.c:
+ macro RAPTOR_URI_AS_STRING -> raptor_uri_as_string
+
+ * raptor_internal.h: Removed macro RAPTOR_URI_AS_STRING
+
+ * raptor_general.c: macro RAPTOR_URI_AS_STRING -> raptor_uri_as_string
+
+ * raptor.h: Added raptor_uri_as_string and uri class method
+
+ * raptor_uri.c (raptor_default_uri_as_string): Added
+ (raptor_uri_as_string): Added, using above for default class.
+ (raptor_uri_init_default_handler): Register the above
+
+ * raptor_general.c:
+ Use RAPTOR_URI_AS_STRING for getting uri string to make a filename.
+
+ * raptor_parse.c:
+ Remove uses of IS_RDF_MS_CONCEPT with raptor_uri_equals.
+ Define more concepts for rdf:RDF, rdf:Description and rdf:li
+
+ * raptor_internal.h: remove IS_RDF_MS_CONCEPT
+
+ * raptor_qname.c: macro RAPTOR_FREE_URI -> raptor_free_uri
+
+ * raptor_internal.h:
+ delete macros RAPTOR_FREE_URI, RAPTOR_URI_TO_FILENAME
+
+ * raptor_general.c: macro RAPTOR_FREE_URI -> raptor_free_uri
+ macro RAPTOR_URI_TO_FILENAME -> raptor_uri_uri_string_to_filename
+ (only use)
+
+ * ntriples_parse.c: macro RAPTOR_FREE_URI => raptor_free_uri
+
+ * raptor_uri.c: Add some casts now raptor_uri is a typedef for void*
+
+ * raptor_internal.h, raptor.h: Remove more RAPTOR_IN_REDLAND prototypes
+
+ * ntriples.h: Remove more RAPTOR_IN_REDLAND
+
+ * rdfdump.c: Remove more RAPTOR_IN_REDLAND and old API
+
+ * raptor_parse.c:
+ Re-add DAML Collection info to rdf_content_type_info table - just
+ plain luck that this was working without it.
+ Add concept URIs table to rdf_xml_parser structure.
+ Change concepts macros to point to the parts of that table.
+ Remove most of the RAPTOR_IN_REDLAND stuff, consequently.
+
+ * raptor_namespace.c (raptor_namespaces_free):
+ Handle being called when handler/context
+ empty.
+
+ * raptor_namespace.c:
+ Use raptor_namespace struct raptor_namespace_stack field
+ to get uri handler/context
+
+ * raptor_internal.h: raptor_namespace: add raptor_namespace_stack field
+
+ * raptor_general.c (raptor_start_parse):
+ Use changed raptor_namespaces_init call.
+
+ * raptor_namespace.c:
+ Remove RAPTOR_REDLAND code and use uri_handlre/context args
+ (raptor_namespaces_init): Now takes uri handler, context args.
+ Initialises rdf/rdfs namespace URIs.
+ (raptor_namespaces_free): Free rdf/rdfs namespace URIs.
+
+ * raptor_general.c: Remove RAPTOR_REDLAND code
+ Call raptor_namespaces_init with raptor URI handler, context
+
+ * raptor_internal.h:
+ Remove RAPTOR_REDLAND definitions and double prototypes.
+ Added uri_handler, uri_context, rdf_ms_uri, rdf_schema_uri to
+ raptor_namespace_stack.
+
+ * ntriples_parse.c: Remove RAPTOR_REDLAND code
+
+ * raptor_uri.c (raptor_uri_get_handler): Added
+
+ * raptor.h: Added raptor-uri_get_handler.
+
+ * raptor_uri.c: rename raptor_current_uri_* -> raptor_uri_current_*
+
+ * raptor_uri.c:
+ Use raptor_current_uri_handler, raptor_current_uri_context
+ throughout.
+
+2002-10-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c (raptor_uri_set_handler): Added, initialising the static
+ variables raptor_current_uri_handler, raptor_current_uri_context.
+ raptor_init_uri_class -> raptor_uri_init
+
+ * raptor_general.c, raptor_internal.h:
+ raptor_init_uri_class -> raptor_uri_init
+
+ * raptor.h: Added raptor_uri_set_handler
+
+ * raptor_uri.c: raptor_copy_uri -> raptor_uri_copy
+ (raptor_default_uri_copy): Added
+ (raptor_init_uri_default_handler): Added to re-init the default uri
+ class.
+ (raptor_init_uri_class): To initialise the uri class with default
+ handler
+
+ * raptor_internal.h: Declare uri class init prototypes.
+
+ * raptor_parse.c, raptor_general.c: raptor_copy_uri -> raptor_uri_copy
+
+ * raptor.h: raptor_copy_uri -> raptor_uri_copy
+ Added uri handler func definitions.
+ Added raptor_uri_handler, using above funcs
+
+2002-10-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_qname.c: Remove only RAPTOR_IN_REDLAND use - not required.
+
+ * raptor_uri.c: Updated copyright
+
+ * ntriples_parse.c:
+ Removed raptor_make_uri; use raptor_new_uri_relative_to_base directly.
+
+ * raptor.h: Removed raptor_new_uri_from_base_name prototype
+
+ * raptor.h: Removed all raptor_make_uri prototypes.
+ Added prototypes for raptor_new_uri_relative_to_base,
+ raptor_new_uri_from_id, raptor_new_uri_from_base_name,
+ raptor-new_uri_for_rdf_concept.
+
+ * raptor_parse.c: RAPTOR_FREE_URI (macro) to raptor_free_uri (method)
+ Removed raptor_make_uri; use raptor_new_uri_relative_to_base directly.
+ Removed raptor_make_uri_from_id: use raptor_new_uri_from_id directly
+ Use raptor_new_uri_for_rdf_concept
+
+ * raptor_uri.c: Typo.
+ Removed raptor_make_uri; use raptor_new_uri_relative_to_base directly.
+ (raptor_default_new_uri_for_rdf_concept,
+ raptor_new_uri_for_rdf_concept): Added to get URI of rdf:thing
+
+2002-10-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c (raptor_default_new_uri_relative_to_base,
+ raptor_new_uri_relative_to_base):
+ Added
+ (raptor_new_uri_from_id): Added, was make_uri_from_id
+ (raptor_new_uri_from_base_name): Added, was make_uri_from_base_name
+
+ * raptor.h: Added new uri methods, soon-to-be old make_uri_* ones
+
+ * raptor_internal.h: Move uri calls to raptor.h
+
+ * raptor_parse.c:
+ Remove unused rdf_parser argument of raptor_make_uri_from_id calls.
+
+ * raptor_uri.c (raptor_make_uri_from_id):
+ Remove unused rdf_parser argument
+
+ * raptor_uri.c:
+ Start of skeleton code for URI class, along with default methods.
+ (raptor_default_new_uri, raptor_new_uri): Added
+ (raptor_default_new_uri_from_uri_local_name,
+ raptor_new_uri_from_uri_local_name): Added
+ (raptor_default_free_uri,raptor_free_uri): Added
+ (raptor_default_uri_equals, raptor_uri_equals): Added
+ (raptor_make_uri, raptor_make_uri_from_id,
+ raptor_make_uri_from_base_name):Moved from raptor_general.c
+
+ * raptor_general.c: Move raptor_make_uri, raptor_make_uri_from_id,
+ raptor_make_uri_from_base_name to raptor_uri.c
+
+2002-10-12 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_xml_parse_terminate):
+ Moved all of raptor_xml_parse_clean
+ here, deleted it.
+
+ * rdfdump.c: Updated to newest calling API - no special ntriples calls.
+
+ * raptor_general.c, raptor.h: Tweak raptor_new_parser prototype.
+
+ * libraptor.3: Updated to describe features
+
+ * libraptor.3: Updated for shared parser core api
+
+ * raptor_parse.c: Add raptor_xml_parser here - private struct.
+
+ * raptor_internal.h: Moved raptor_xml_parser to private file.
+
+ * raptor_general.c: Tidy raptor_new old api note.
+
+ * ntriples.h: Updated ntriples parser to new registering API.
+
+ * ntriples_parse.c: Converted to the new factory-based API.
+ raptor_ntriples_parser_context (and struct version _s) now allocated
+ by main parser code.
+ Use raptor_parser for most methods and calls.
+ (raptor_ntriples_parse_init, raptor_ntriples_parse_terminate): Added
+ (raptor_ntriples_new): Replaced with wrapper around raptor_new_parser("ntriples").
+ (raptor_ntriples_free): Replaced with wrapper around raptor_free_parser
+ (raptor_ntriples_set_error_handler, raptor_ntriples_set_fatal_error_handler,
+ raptor_ntriples_set_statement_handler, raptor_ntriples_parser_error,
+ raptor_ntriples_parser_fatal_error, raptor_ntriples_parse_file):
+ Replaced with wrappers around general methods.
+ (raptor_ntriples_parse_chunk): Renamed from raptor_ntriples_parse
+ (raptor_ntriples_parse_start): Added from parts of old
+ raptor_ntriples_parse_file.
+ (raptor_ntriples_parser_register_factory): Added to register this
+ with the main system.
+ (raptor_init_parser_ntriples): Added to register this module.
+
+2002-10-11 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_internal.h:
+ Moved raptor_parser_s here, for use across the library.
+ Lots of rearranging and reordering to move structs earlier.
+ Added raptor_parser_factory_s and typedef.
+ Added prototypes for factory registration calls.
+
+ * raptor_parse.c: Now uses factory and parser-specific context.
+ (raptor_xml_new, raptor_xml_free, raptor_xml_parse_init): Moved most
+ code to raptor_new_parser, raptor_free_parser, raptor_start_parse
+ (raptor_xml_parse_init_file): Gone.
+ Renamed to match factory methods - raptor_xml_parse_terminate.
+ (raptor_parse_file): Moved to raptor_general.c
+ (raptor_xml_parser_register_factory): Added, for registering factory.
+ (raptor_init_parser_rdfxml): Register parser type "rdfxml".
+
+ * raptor_general.c:
+ Added parser factory functions and use them via new API.
+ (raptor_init, raptor_finish): Added to start/end raptor.
+ (raptor_delete_parser_factories): Added, helper for cleanup.
+ (raptor_parser_register_factory): Added, for registering parsers
+ (raptor_get_parser_factory): Added, helper for finding a parser
+ (raptor_new_parser): New constructor, uses factory and initialises
+ only general parts of parser.
+ (raptor_start_parse): New method to (re)initialise a particular
+ parse.
+ (raptor_start_parse_file): New method to start parsing from a
+ filename.
+ (raptor_parse_chunk): New method to parse content from memory.
+ (raptor_free_parser): New destructor.
+ (raptor_parse_file): Moved from raptor_parse.c and made general.
+ (raptor_new): Old API constructor, now written over new constructor.
+ (raptor_free): Old API destructor, now just calls new destructor.
+ (raptor_set_world): Temporary redland support.
+
+ * raptor_namespace.c (raptor_namespaces_free):
+ Zap top of stack when done, so
+ can work when called multiple times.
+
+ * raptor.h: Added raptor_init(), raptor_finish()
+ Deprecate raptor_new(), raptor_free().
+ Added raptor_new_praser(), raptor_free_parser(),
+ raptor_start_parser(), raptor_start_parse_file(), raptor_parse_chunk()
+ Temporarily use raptor_set_redland_world.
+
+2002-10-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Added raptor_general.c
+
+ * raptor.h: raptor_print_statement_detailed: Now public.
+
+ * raptor_internal.h, raptor_parse.c, raptor_general.c:
+ Split general parsing routines into raptor_general.c leaving
+ the rdf/xml parsing specific parts in raptor_parse.c.
+ The general raptor_parser structure moved to raptor_internal.h
+ leaving a new raptor_xml_parser for raptor_parse.c [rdf/xml].
+
+2002-10-07 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/test.html, tests/test.svg: Embedded rdf:RDF tests
+
+ * raptor_general.c, raptor_parse.c:
+ Call dummy (length calculating) vsnprintf call with a 1-byte buffer
+ rather than NULL - OSX seems unhappy with that.
+ Try to get rdf:RDF scanning working by adding at_grammar_start check
+ rather than apply at all state unknown points.
+
+2002-09-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am:
+ Split the checks into classes; ex-19.rdf is for when rdf is assumed
+ since it ommits rdf:RDF, and hence is not really rdf/xml.
+
+ * rdfdump.c: Added -a,--assume to set feature assume_is_rdf
+
+ * raptor_general.c, raptor_parse.c: Added rdf:datatype built in.
+ Literal datatype URI stored in containing property element.
+ Added feature_assume_is_rdf to make rdf:RDF optional.
+ (raptor_generate_statement): Add literal datatype URI argument.
+ (raptor_xml_parse_chunk_): Return parser errors in initial XML_Parse
+ correctly - check if it happens even if end of data. Similarly for
+ libxml's xmlParseChunk.
+ (raptor_set_feature): Added feature assume_is_rdf
+ (raptor_print_statement_detailed): Added literal datatype URI
+ printing.
+ (raptor_process_property_attributes): Warn about unqualified
+ (property) attributes, don't try to process them.
+ (raptor_start_element_grammar): Added feature assume_is_rdf
+ splitting scanning for rdf:RDF (feature scanning) and ignoring it
+ (feature assume)
+
+ * raptor_qname.c (raptor_new_qname):
+ Don't die on non-namespaced XML; could be used in
+ skipping or other processing.
+
+ * raptor.h: added assume_is_feature
+ datatypes built in
+ raptor_print_ntriples_string now returns an int
+
+ * LICENSE.html: Tidy intro, update dates
+
+ * ntriples_parse.c: change anon->bnodeid
+ Add ASCII rather than is* locale-tests and validate bnodeIDs with
+ the macros
+ (parse_ntriples_string): Check for invalid ASCII chars.
+ Tidy error reporting for end of line.
+ (raptor_ntriples_parse_line): Add validation of bnodeIDs
+ (raptor_ntriples_parse_file): Comments
+ (raptor_print_ntriples_string): Handle failure, add a return code
+
+ * ntriples.h: change anon->bnodeid
+
+ * configure.in: datatypes built in now
+
+ * Makefile.am: Clean the test programs
+
+2002-09-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am:
+ Restore rule to make librdf.la for when embedded in Redland
+
+ * TODO.html: remove duplicate bagID bug
+
+ * TODO.html: CDATA works with libxml now
+
+ * raptor_libxml.c (raptor_libxml_init):
+ Enable handling of cdata blocks -
+ <![CDATA[...]> by registering callback to raptor_xml_cdata_handler
+
+ * tests/ex-40.out: Fix node
+
+ * tests/Makefile.am: Added ex-40
+
+ * tests/ex-40.out, tests/ex-40.rdf: Check XML CDATA sections
+
+ * Makefile.am:
+ dist-hook added to copy pre-built README and NEWS to release
+
+2002-09-18 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_namespace.c (raptor_namespace_new):
+ Fix debug message to report no URI for namespace.
+
+ * raptor_namespace.c (raptor_namespace_new):
+ Make xmlns="" work when compiling inside Redland.
+
+2002-09-16 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_xml_parse_chunk_):
+ For libxml, don't pass in filename to
+ xmlCreatePushParserCtxt, we may not always have one.
+ For lbixml, return correctly from initial parsing.
+ (raptor_xml_parse_chunk): Add docucomments.
+ (raptor_parse_file): Terminate loop on end of file as well as error.
+
+ * Makefile.am:
+ Added REDLAND_LIBS to raptor_namespace_test to make it work inside redland
+
+2002-09-12 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: daml:collection fixed
+
+ * raptor_parse.c (raptor_parse_file): Split into:
+ raptor_xml_parse_init, raptor_xml_parse_init_file,
+ raptor_xml_parse_clean and raptor_xml_parse_chunk to allow more
+ flexible APIs.
+ (raptor_xml_parse_chunk_): Added, doing the main work of
+ raptor_xml_parse_chunk but without error checking.
+ (raptor_xml_parse_handle_errors): Added to process errors from an XML
+ parser during parsing.
+
+ * raptor_namespace.c: Make it work inside redland too.
+ Fix standalone tests inside redland.
+
+2002-09-11 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_internal.h:
+ Moved namespace and qname definitions and prototypes here from
+ raptor_parse.c
+
+ * Makefile.am: Added raptor_namespace.c raptor_qname.c
+
+ * raptor_parse.c:
+ Moved namespace code to raptor_namespace.c, qname code to
+ raptor_qname.c and renamed raptor_ns_map, raptor_ns_na,e
+ to match.
+
+ * raptor_qname.c: Raptor XML qname
+
+ * raptor_namespace.c: Raptor XML namespace classes
+
+2002-09-01 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c: Use updated LIBRDF_RS URI names
+
+ * raptor_parse.c:
+ Added rdf:parseType="Collection" after daml:collection code
+
+ * tests/Makefile.am: Added test ex-39 for parseType Collection
+
+ * tests/ex-39.out, tests/ex-39.rdf: rdf:parseType="Collection" test
+
+ * raptor_parse.c:
+ Change daml:Collection, daml:* comments to Collection, rdf:List etc.
+
+2002-08-31 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_end_element_grammar):
+ Generate rdf:nodeID, store in id, not
+ URI field.
+ Rearrange three calls of raptor_process_property_attributes into one.
+
+ * tests/Makefile.am:
+ Use ECHO_N and ECHO_C to do portable echo without newline
+
+ * configure.in:
+ Pass on echo pre/postfix args needed for echoing without a newline
+
+ * tests/Makefile.am:
+ Instead of ignoring warnings, make make ignore exit codes from rdfdump
+
+ * tests/Makefile.am: Ignore warnings (for now) in tests
+
+ * tests/Makefile.am: Remove RDF_TEST_ANSWER_FILES - not used
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ Don't copy URIs from daml:collection
+ to the contained nodes.
+
+ * tests/ex-34.out: Now correct.
+
+2002-08-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Added ex-38
+
+ * tests/ex-38.rdf, tests/ex-38.out: Test daml:Collection with rdf:ID
+
+ * tests/ex-37.out: switch order again
+
+ * raptor_parse.c (raptor_element_has_property_attributes):
+ Check for rdf: properties
+ too
+
+ * tests/ex-37.out: Correct order, nodes in result
+
+ * tests/ex-37.out, tests/ex-37.rdf:
+ rdf:type attribute on empty property
+
+ * tests/Makefile.am: Added ex-37
+
+2002-08-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c: Fixed empty daml:Collection handling
+
+ * raptor_uri.c: Minor strcat/strcpy optimisation
+
+ * tests/ex-34.rdf: Renamed nodes so prop2 goes with node2 etc.
+
+ * tests/ex-34.out: renamed genids to more match output
+
+ * tests/ex-35.out, tests/ex-35.rdf, tests/ex-36.out, tests/ex-36.rdf:
+ Added more daml:Collection checks
+
+ * tests/ex-24.out: output order changed, same triples
+
+ * tests/Makefile.am: Added ex-35, ex-36 for more daml:Collection checks
+
+ * tests/ex-12.out: output order changed, same triples
+
+2002-08-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c: removed fn not used
+
+ * raptor_parse.c: Update xml namespaces comment with NE05 errata
+
+ * raptor_parse.c:
+ Removed use of obsolete object_is_literal statement field
+ Added rdf datatypes test code
+
+ * ntriples_parse.c:
+ Removed use of obsolete object_is_literal statement field
+
+ * raptor.h: Add statement object datatype uri
+
+ * configure.in: Add rdf datatypes test flag --enable-rdf-datatypes
+
+ * acconfig.h: Add rdf datatypes test flag
+
+2002-08-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: Updates: OSX compiling works (from packaged sources)
+ Still works with latest expat (1.95.2), libxml (2.4.23)
+
+2002-08-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c (raptor_uri_uri_string_to_filename):
+ Freeing wrong things
+
+ * ntriples_parse.c, raptor_parse.c, raptor_internal.h:
+ Remove RAPTOR_URI_AS_FILENAME
+
+ * raptor.h: Added raptor_uri_is_file_uri
+
+ * configure.in: Added limits.h check
+
+ * raptor_internal.h: Added raptor_strncasecmp
+
+ * raptor_uri.c (raptor_uri_is_file_uri): Added.
+
+ * Makefile.am: Added strcasecmp_test
+
+ * strcasecmp.c (raptor_strncasecmp): Added
+ (assert_strcasecmp, assert_strncasecmp): Added for testing.
+ (main) Added to run tests
+
+ * raptor_uri.c:
+ (raptor_uri_filename_to_uri_string); For unix filename "foo", get dir
+ and name it "/dir/foo".
+ (main): Check above works using /tmp dir - warn if can't chdir(/tmp)
+
+ * raptor_internal.h:
+ Replaced raptor_file_uri_to_filename with aptor_file_uri_to_filename
+
+ * raptor_parse.c, ntriples_parse.c: Removed raptor_file_uri_to_filename
+
+ * raptor_uri.c (raptor_uri_filename_to_uri_string, raptor_uri_uri_string_to_filename):
+ fix unix relative file file:foo
+ and bad win32 authority check.
+ (main): Check unix foo/file:foo works
+
+ * raptor.h: Added raptor_uri_filename_to_uri_string and
+ raptor_uri_uri_string_to_filename
+
+ * raptor_uri.c (raptor_uri_filename_to_uri_string):
+ Added for filename to file: URI
+ for win32 and unix.
+ (raptor_uri_uri_string_to_filename): Added for file: URI to filename
+ for win32 and unix.
+ (assert_filename_to_uri,assert_uri_to_filename): Added for regression testing.
+ (main): Tests for win32 / unix filename / file:URIs
+
+2002-08-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * INSTALL.html: Added some more xml library versions
+
+ * raptor_parse.c: Remove a lot of raptor_update_document_locator calls
+ and add them to the start of several functions.
+ Replace some expat-specific stuff with general calls.
+
+ * raptor_parse.c:
+ Add raptor_update_document_locator calls before every parser error
+ or warning.
+ (raptor_expat_update_document_locator): Added.
+
+ * raptor_internal.h: Export raptor_libxml_update_document_locator
+ Export raptor_expat_update_document_locator
+ Export raptor_update_document_locator
+
+ * raptor_libxml.c (raptor_libxml_update_document_locator):
+ Now not static.
+ Remove column numbers - they seem to be total fiction.
+
+ * raptor_locator.c (raptor_update_document_locator): Added.
+
+ * raptor_parse.c (raptor_xml_cdata_handler):
+ Allow to be ignored when there is no
+ element (XML very damaged)
+
+ * rdfdump.c: Tidy output formatting
+
+ * raptor_libxml.c:
+ Delete extra '\n' at end of XML parsing messages; that's up to the
+ app to add.
+
+ * raptor_parse.c: Removed some \n-s from warning/error messages
+
+ * raptor_locator.c (raptor_format_locator):
+ Don't count \0 in buffer size.
+
+ * Makefile.am: Added raptor_locator.c
+
+ * raptor.h: Added raptor_format_locator
+
+ * raptor_locator.c: Raptor parsing locator functions
+
+ * raptor_parse.c: Moved raptor_print_locator to raptor_locator.c
+
+ * rdfdump.c:
+ Updated for raptor error handlers passed on as strings, not va_list
+
+ * ntriples_parse.c: raptor errors passed on as strings, not va_list
+ (raptor_ntriples_parser_error,
+ raptor_ntriples_parser_fatal_error): Turn va_list into a string.
+
+ * raptor_parse.c: raptor errors passed on as strings, not va_list
+ (raptor_parser_fatal_error_varargs,
+ raptor_parser_error_varargs,
+ raptor_parser_warning_varargs): Turn va_list into a string.
+
+ * raptor.h: raptor errors passed on as strings, not va_list
+
+2002-08-18 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Add LTLIBOBJS to raptor library, not rdfdump
+
+ * configure.in: Set LIBOBJS and LTLIBOBJS
+
+ * configure.in:
+ Check for strcasecmp, stricmp or use compatibility version
+
+ * raptor_internal.h:
+ Define raptor_strcasecmp to library routine, or leave alone for
+ compatibility function.
+
+ * Makefile.am: Added @LIBOBJS@
+ and strcasecmp.c
+
+ * strcasecmp.c: strcasecmp compatibility
+
+ * raptor_parse.c:
+ strcasecmp now raptor_strcasecmp, will be defined to right function
+
+ * win32_config.h:
+ Don't use macros for strcasecmp; now handled generally
+
+ * Makefile.am:
+ Added raptor_internal.h, win32_config.h to noinst headers
+ Added raptor_win32.c
+
+ * raptor_win32.c: Raptor WIN32 support functions
+
+ * win32_config.h: Raptor WIN32 hard-coded config
+
+ * rdfdump.c: Tidying up stdlib.h, dmalloc.h includes.
+ Include win32_config.h #ifdef WIN32
+
+ * raptor_parse.c, raptor_uri.c:
+ Tidying up stdlib.h, dmalloc.h includes.
+ Removed stuff duplicated in raptor.h/raptor_internal.h
+ Include win32_config.h #ifdef WIN32
+
+ * raptor_libxml.c: Tidying up stdlib.h, dmalloc.h includes.
+ Include win32_config.h #ifdef WIN32
+
+ * ntriples_parse.c: Tidying up stdlib.h, dmalloc.h includes.
+ Removed stuff duplicated in raptor.h/raptor_internal.h
+ Include win32_config.h #ifdef WIN32
+
+ * raptor_internal.h: Moved libxml includes, defines and structs here.
+ Declared extern function prototypes for libxml interface.
+
+ * raptor_parse.c: Use errno.h, not extern int errno
+ Moved most libxml code to new raptor_libxml.c
+ Moved necessary includes, defines and structs to raptor_internal.h
+ Some renaming of functions; raptor_libxml* for those related to libxml
+ Some functions now not static.
+ Added some necessary methods for accessing raptor_parser structure
+ for libxml.
+ (raptor_get_locator): Added; new public method.
+
+ * raptor.h: Added raptor_get_locator
+
+ * ntriples_parse.c: Use errno.h, not extern int errno
+
+ * Makefile.am: Added raptor_libxml.c
+
+ * raptor_uri.c: Use errno.h if present
+
+ * raptor_libxml.c: Raptor libxml functions
+
+ * raptor_parse.c:
+ Added 12 wrapper functions for libxml handlers, passing on the right
+ context to them, to enable handling of entities and resolving them.
+ (raptor_xml_update_document_locator): Handle if in document subset
+ Changed internal raptor fatal_error, error, warning functions
+ to have varargs versions that libxml can use.
+ (raptor_new): Initialise new libxml handler wrappers
+
+2002-08-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c: Set ntriples error handler
+
+ * ntriples_parse.c: Added fatal/non-fatal error handlers/functions.
+ (raptor_ntriples_set_error_handler): Added.
+ (raptor_ntriples_string): Documented args; now returns failure status.
+ (raptor_ntriples_parser_error): Added for non-fatal errors (bad lines).
+ (raptor_ntriples_parser_fatal_error): Fix passing on va_list arguments.
+
+ * ntriples.h: Added raptor_ntriples_set_error_handler
+
+2002-08-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.in: Add check for errno.h
+ Only link dmalloc if dmalloc.h is present (maintainer mode)
+
+ * ntriples_parse.c: Add use of errno.h if present
+
+ * raptor_parse.c: Add use of errno.h if present
+ Minor comments fix
+ When rdf:Description seen, go straight to state DESCRIPTION rather
+ than via OBJ
+
+2002-08-07 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c: Added rdf:List, rdf:first, rdf:rest (not used yet)
+ Added rdf:nodeID for bnodes as subject/objects like
+ rdf:about/rdf:resource
+
+ * raptor.h: Added RAPTOR_URI_SOURCE_BLANK_ID (for rdf:nodeID)
+
+2002-07-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.in: default xml parser now libxml
+
+ * INSTALL.html: Update --with-xml-parser docs
+
+2002-07-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * autogen.sh: Fix use of srcdir/find
+
+ * Makefile.am: Add -I's for compiling test programs
+
+2002-07-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: moved Redland parser todos here
+
+2002-07-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Added ex-34
+
+ * tests/ex-34.out, tests/ex-34.rdf:
+ Test daml:collection lists with blank nodes
+
+ * configure.in: Modify cflags to use redland srcdir not builddir
+
+ * Makefile.am: zap 'finish' stuff
+
+2002-07-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_end_element_grammar): Get rdf:ID working
+ on empty propertyElt with rdf:parseType="Resource"
+
+ * raptor_parse.c: Added reified raptor_identifier, changed code to
+ use it for rdf:ID value Store rdf:bagID in bag raptor_identifier
+
+ * raptor_parse.c (raptor_element_has_property_attributes):
+ Created, returns true iff a
+ property element has property attributes
+ (raptor_start_element_grammar): For property elements, move
+ handing property attributes to close of element, only then can
+ the resource URI be known.
+ (raptor_end_element_grammar): Update after above change.
+ For property elements that are empty (empty literal), create
+ a new blank node and hang the property attributes off that.
+
+ * raptor_parse.c:
+ Warn and continue when element content is seen inside a
+ <propElt rdf:resource="..."/>
+
+2002-07-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: make check sh stuff not echo
+
+ * tests/Makefile.am: Add ex-33
+
+ * tests/ex-33.out, tests/ex-33.rdf:
+ Check properties work off node generated by empty propertyElt
+
+2002-07-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: make check sh stuff not echo
+
+ * tests/Makefile.am: Add ex-33
+
+ * tests/ex-33.out, tests/ex-33.rdf:
+ Check properties work off node generated by empty propertyElt
+
+2002-07-14 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Add REDLAND_LIBS to rdfdump dependencies
+ Add rule to build librdf.la if needed
+
+2002-07-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Zap -static arg for rdfdump, seems to annoy libtool
+ Pass on redland libs, cflags as necessary
+
+ * ntriples.h: Change all LIBRDF_INTERNAL to RAPTOR_IN_REDLAND
+
+ * rdfdump.c: Change all LIBRDF_INTERNAL to RAPTOR_IN_REDLAND
+ Update to newest librdf world open/close calls
+
+ * raptor_parse.c: Tidy - 2 includes of stdlib.h
+ Change all LIBRDF_INTERNAL to RAPTOR_IN_REDLAND
+
+ * raptor_internal.h: Lose all redland includes - for app code
+
+ * raptor.h: Include librdf and uri headers when in Redland
+ Change all LIBRDF_INTERNAL to RAPTOR_IN_REDLAND
+
+ * configure.in:
+ Define REDLAND_LIBS, REDLAND_CPPFLAGS for use when building in redland
+
+ * raptor_parse.c: Moved debugging stuff to raptor_internal.h
+ Use updated raptor includes
+
+ * rdfdump.c: Use updated raptor includes
+
+ * raptor_uri.c: Don't include Redland rdf_config.h
+ Use updated raptor includes
+
+ * ntriples_parse.c: Use updated raptor includes
+
+ * raptor.h: Removed all standard includes
+ Moved URI stuff to raptor_internal.h except for typedef (needed
+ for prototypes)
+
+ * raptor_internal.h: Internal raptor definitions
+
+ * Makefile.am: Added raptor_internal.h
+
+ * configure.in: Fix raptor in redland check.
+
+ * ntriples_parse.c, raptor_parse.c:
+ don't include redland rdf_config.h - use ours
+
+ * configure.in, acconfig.h: added RAPTOR_IN_REDLAND
+
+2002-07-12 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h: include stdarg.h here
+
+ * tests/Makefile.am: Added ex-32
+
+ * tests/ex-32.out, tests/ex-32.rdf:
+ Test property attributes with rdf:resource
+
+ * raptor_parse.c (raptor_process_property_attributes):
+ Pass in an optional
+ identifier to use for the resource node.
+
+ Use that to process property attributes along with rdf:resource,
+ at the close of the (empty) propertyElt.
+
+2002-07-11 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c (raptor_uri_resolve_uri_reference):
+ Handle base URI without a path
+ such as "http://example.org"
+
+ * Makefile.am:
+ Tidy test program args +$(DEFS) to add crucial -DHAVE_CONFIG_H
+
+ * rdfdump.c (rdfdump_error_handler): Use va_list form
+ (rdfdump_warning_handler): Use va_list form
+
+ * raptor_parse.c (raptor_xml_start_element_handler):
+ Warn about unqualified rdf: attributes
+
+ * ntriples_parse.c (raptor_ntriples_parser_fatal_error):
+ now passes on va_list
+
+ * raptor.h:
+ API change: raptor_message_handler callback now takes a va_list as
+ final argument
+
+ * rdfdump.c: Make warning/error messages neater
+
+ * rdfdump.c: Added -w - ignore warnings
+ (rdfdump_warning_handler): Added
+ (rdfdump_error_handler): Added
+ Count warnings, errors and exit with #errors, or 128+#warnings
+
+ * raptor_parse.c:
+ When a property has multiple objects, give an error and skip the rest
+ of that element
+
+ * tests/Makefile.am: Added bad-01.rdf
+
+ * tests/bad-01.rdf: A property must have only one node value
+
+ * rdfdump.c:
+ (rdfdump_error_handler) Added. Exit 1 on an error, don't keep going
+
+ * tests/Makefile.am: Fix bad test checking again
+
+2002-07-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Added LOCAL_LIB_DIR for finish
+
+ * Makefile.am: Fix args for compiling tests
+
+2002-07-07 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Added finish target to install to lib
+ Tidy up test program building
+
+ * raptor_parse.c:
+ Allow non-namespaced elements to be recognised and skipped
+
+2002-06-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: typo
+
+ * Makefile.am: Added 'make deb' target
+
+ * tests/rdf-schema.out, tests/rdfs-namespace.out: RDFS schema answers
+
+ * tests/Makefile.am: Fix rdfs checks
+
+ * tests/Makefile.am: Add two RDFS schema namespaces
+
+ * tests/rdf-schema.rdf, tests/rdfs-namespace.rdf: RDFS schemas
+
+ * raptor_parse.c: (raptor_parser_error) Make this default to exit(1)
+ (raptor_start_element_grammar): Die when a second object is tried
+ to be set for a statement
+
+ * tests/Makefile.am: Check negative tests correctly
+
+ * autogen.sh: Add libtoolize cleanup, check and run
+
+ * configure.in: fix AC_OUTPUT
+
+ * Makefile.am, configure.in: Added debian dir
+
+2002-06-26 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * win32/README: win32 README
+
+ * autogen.sh: Added GNU config.* copy test
+
+2002-06-14 cmdjb <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Added bad test checking
+ Added bad-00.rdf
+
+ * tests/bad-00.rdf: Added bad test 00
+
+ * configure.in: Added raptor-config
+
+ * libraptor.3, rdfdump.1: Raptor manual pages
+
+ * Makefile.am: Added raptor-config
+ Added manual pages
+ Make rdfdump static only for maintainer
+
+ * raptor-config.in: Raptor configuration script
+
+2002-06-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_generate_id):
+ Hack - make genids be sequential through
+ lifetime of code, not start from 1 again at parsing.
+
+ * raptor.h: Add some RAPTOR_API defs for newer functions
+
+ * configure.in: Use NULL for XML_ParserCreate in first check too
+
+ * configure.in: Bumped version to 0.9.6
+
+ * Snapshotted raptor_0_9_5 for 0.9.5 release
+
+ * autogen.sh:
+ Delete libtool generated files before running automake (which invokes
+ libtoolize to do this)
+
+ * configure.in: Remove duplicate check of stdlib.h
+
+ * Makefile.am: Pass on -D defs when building tests
+
+ * raptor_uri.c: Include stdlib.h for malloc
+
+ * configure.in:
+ Call XML_ParserCreate with NULL to prevent crash (seen on alpha)
+
+ * configure.in:
+ Check for required libxml function xmlCreatePushParserCtxt (libxml
+ 1.8.3+)
+
+ * NEWS.html: Updated for 0.9.5 release
+
+ * TODO.html: tidy
+
+ * Makefile.am:
+ Don't compile raptor_cc.c into library, for this release (not used
+ yet).
+
+2002-06-06 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Added ex-31
+
+ * tests/ex-31.out, tests/ex-31.rdf:
+ Tests for rdf:li with parseType Resource
+
+ * raptor_parse.c: Make rdf:li work with parseType resource
+
+2002-06-05 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ made rdf:foo (unknown) attribute generate the statement and a warning
+
+ * raptor_parse.c:
+ Add further allowed rdf: properties (subject, predicate, object) and
+ classes (Seq Bag Alt Statement Property)
+
+2002-06-04 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_make_uri_from_id,raptor_make_uri):
+ Fold in relative URI resolution.
+ (raptor_make_uri_from_base_name): Added
+ (raptor_process_property_attributes): Use latter to create rdf: names
+
+ * configure.in: Check for stdlib.h
+
+ * raptor_uri.c: Remove prototype => raptor.h
+
+ * raptor.h: A little tidying.
+ Export raptor_uri_resolve_uri_reference
+
+ * raptor_uri.c: comment
+
+ * raptor_uri.c (raptor_uri_parse): Update comments
+ (raptor_uri_resolve_uri_reference): Lots more comments. Rejigged
+ structure to tidy up in one place. Removed all static buffers.
+
+ * tests/Makefile.am: Added ex-30
+
+ * tests/ex-30.out, tests/ex-30.rdf:
+ Tests that bare about attr works with a default ns
+
+ * raptor_parse.c (raptor_make_namespaced_name):
+ Make bare 'about' attribute (etc) work
+ even when a default namespace is declared.
+
+2002-06-03 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ Don't pass parsetype_resource child element state to parent
+ element->child_element - i.e. proto state of next child element
+
+2002-06-02 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ attribute => attr to fix gcc warning about shadowing a global (?why)
+
+ * raptor_parse.c: RBS -> RAPTOR_XML_READ_BUFFER_SIZE
+ (raptor_parse_file) Added work around for some libxml versions
+ failing to work when file is smaller than buffer size.
+
+2002-05-31 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ Various places: fix a bunch of casts to make g++ happy
+ Replace several unsigned int i with int i when used as array index.
+
+ * ntriples_parse.c:
+ Various places: fix a bunch of casts to make g++ happy
+ Replace several unsigned int i with int i when used as array index.
+ (raptor_ntriples_string): Fix %c in format string
+ (raptor_ntriples_unicode_char_to_utf8): Use unsigned long
+
+2002-05-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c: fix xml_language qualifier
+
+ * tests/Makefile.am: Add ex-29
+
+ * tests/ex-29.out, tests/ex-29.rdf:
+ Test xml:lang info gets passed to output
+
+ * raptor_parse.c (raptor_xml_end_element_handler):
+ Don't pop element before doing end
+ grammar, so that rdf_parser->current_element is correct during end
+ grammar work.
+
+ * raptor_parse.c, ntriples_parse.c:
+ Include stdlib.h for some prototypes.
+
+2002-05-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_end_element_grammar):
+ When zapping content_cdata, always make
+ length 0
+
+2002-05-26 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/ex-28.out, tests/ex-28.rdf:
+ Test case for property after parseType resource property inherting
+ parseType resource-ness
+
+ * tests/Makefile.am: Added test case 28
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ Don't copy the parsetype-resource
+ generated node URI up to parent element
+
+ * tests/Makefile.am: Added test case 27
+
+ * tests/ex-27.out, tests/ex-27.rdf:
+ Test case for wrong ID on 3rd parseType resource off a node
+
+2002-05-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * ntriples_parse.c: Wrap errno with #ifndef WIN32
+
+2002-05-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ Lessen some librdf compile warnings about char* and xmlChar* strings
+
+ * raptor_parse.c (raptor_free_xml_entity): Moved earlier in code
+ (raptor_xml_new_entity): Use LIBRDF_MALLOC
+
+2002-05-07 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * acconfig.h: Added libxml xmlEntity field defs
+
+ * configure.in: Check less libxml headers.
+ If libxml main headers missing, disable library
+ Check for xmlEntity fields name_length and etype
+
+ * raptor_parse.c:
+ Added new entity recording, expanding stuff for libxml
+ (raptor_xml_add_entity, raptor_xml_new_entity,
+ raptor_xml_entity_decl, raptor_xml_get_entity,
+ raptor_xml_free_entity, raptor_xml_free_entities): Added or
+ substantially updated
+
+2002-04-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c: tail_id is a char*, not a redland URI
+
+2002-04-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ (raptor_new) Initialise entities table count to 0 since
+ xmlCreateEntitiesTable sometimes doesn't do it.
+
+2002-04-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * acconfig.h, configure.in, raptor_parse.c:
+ renamed NEED_EXPAT/LIBXML to RAPTOR_XML_EXPAT/LIBXML so that raptor
+ can be linked to apps (such as Redland) that may have both
+
+ * configure.in:
+ Added configure warning about failure of expat UTF8 BOM and how to fix.
+
+ * configure.in: Perform expat BOM check only when a working expat found
+
+ * raptor_parse.c, configure.in, acconfig.h:
+ Rename EXPAT_ERROR_CRASH to EXPAT_NO_UTF8_BOM - expat 1.95.1
+ fails on an initial UTF-8 BOM sequence. expat 1.95.2 onwards fixes
+ this.
+
+ * acconfig.h: Added EXPAT_ERROR_CRASH
+
+ * raptor_parse.c:
+ If EXPAT_ERROR_CRASH then count XML tokens and only try to get line,
+ col, byte counts after 1 token has been seen.
+
+ * configure.in:
+ Add test for expat failure in error reporting before <?xml?>
+
+2002-04-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * INSTALL.html: Added CVS instructions, tidied and expanded
+
+ * tests/ex-22.rdf: ex-22
+
+2002-04-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.in: Look for gnome-xml/xmlmemory.h header
+
+ * raptor_parse.c:
+ Add a bunch of stuff for libxml1 to handle adding/removing entity decls
+ (raptor_xml_free_entity): Now libxml2 only
+ (raptor_xml_libxml1_add_entry): Added, libxml1 only
+ (raptor_xml_add_entity): Call libxml2 code or
+ raptor_xml_libxml1_add_entry for libxml1
+ (xmlHashLookup): Added, libxml1 only
+
+ * tests/Makefile.am: Added ex-26
+
+ * tests/ex-26.out, tests/ex-26.rdf:
+ Test entities get expanded in attributes
+
+ * configure.in: Look for libxml/parser.h libxml/hash.h
+
+ * raptor_parse.c:
+ For libxml, Use libxml/parser.h (v2) or gnome-xml/parser.h (v1)
+ Include libxml/hash.h for v2
+ Add xml entities support
+ (raptor_xml_free_entity): Pulled from xmlFreeEntity
+ (raptor_xml_add_entity): Pulled from xmlAddEntity (slight change to
+ API)
+ (raptor_xml_entity_decl): Added
+ (raptor_xml_get_entity): Added
+ (raptor_new): Use raptor_xml_entity_decl, raptor_xml_get_entity
+ and ask for them to be called.
+ (raptor_parse_file): Free entity stuff.
+
+2002-04-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Added ex-25*
+
+ * tests/ex-25.out, tests/ex-25.rdf:
+ Check mixing rdf:li and rdf:_n works
+
+ * raptor_parse.c (raptor_print_statement_detailed):
+ Handle printing ordinal objects
+
+ * raptor_parse.c (raptor_print_statement_as_ntriples):
+ Handle printing ordinal objects
+
+ * raptor_parse.c (raptor_xml_end_element_handler):
+ Don't overwrite state PROPERTYELT
+ with MEMBER, it will be switched over when necessary.
+
+ * raptor_parse.c: Make unknown/other parsetypes work like Literal
+
+2002-04-05 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am:
+ Re-add raptor_cc.c raptor_uri.c to sources, tests, distribution
+
+2002-03-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.in: Bumped version to 0.9.5
+
+ * Snapshotted raptor_0_9_4 for 0.9.4 release
+
+ * configure.in: Added check for GNU tar
+
+ * Makefile.am: Added TAR
+
+ * INSTALL.html, LICENSE.html: Updated HTML.
+
+ * README.html: Updated for 0.9.4 release
+ Updated HTML.
+
+ * TODO.html: Updated HTML.
+
+ * NEWS.html: Added notes for 0.9.4 release
+ Updated HTML.
+
+ * NEWS.html: Tidy footer
+
+ * Makefile.am:
+ Remove raptor_cc, raptor_uri stuff from distribution for this release
+
+ * raptor_parse.c: Or instead, add const to tail_id
+
+ * raptor_parse.c: Remove const from idList
+
+2002-03-26 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Don't compile the as-yet unused raptor_cc
+ raptor_uri into the library, for now.
+
+ * configure.in: Try to ensure -g is used in --maintainer-mode
+
+ * raptor_parse.c: daml:collection changes Use a genid (char*) for
+ storing daml:list last anon node Replace all uses of the URI with
+ the id Make a typedNode inside a daml:collection generate the
+ rdf:type statement Move the daml:nil generation to the parent
+ property
+
+ * TODO.html: Some more bugs in daml:collection (but others fixed)
+ Noted rdf:bagID isn't complete
+
+ * tests/Makefile.am: Added ex-24.rdf ex-24.out
+
+ * tests/ex-12.out: Correct test result.
+
+ * tests/ex-24.rdf, tests/ex-24.out: Added to test daml:collection
+ with typed nodes inside
+
+2002-03-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/ex-17.out: Fix answer; <foo/> gives an empty literal
+
+2002-03-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: Note xml:base and xml:lang support added
+
+ * raptor_parse.c (raptor_generate_statement): Only process
+ language for literal objects
+
+2002-03-17 cmdjb <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c: Added xml:lang and xml:base support
+ Use raptor_inscope_base_uri throughout, any time a URI is created
+ in a document.
+ Delete/ignore other xml* attributes when seen; XML spec governs their
+ use.
+ (raptor_generate_statement): Add language support.
+ (make_uri_from_id): Use raptor_inscope_base_uri
+ (raptor_start_element_grammar): Updated node state comments
+ (raptor_inscope_xml_language): Added
+ (raptor_inscope_base_uri): Added
+
+ * Makefile.am: Added raptor_uri.c
+
+ * raptor_uri.c: Raptor URI resolving implementation
+
+2002-03-12 cmdjb <Dave.Beckett@bristol.ac.uk>
+
+ * configure.in: Added --enable-release to turn on -O2
+
+ * configure.in: Strip -O2 from maintainer mode cflags
+
+ * raptor_parse.c:
+ Fix parseType resource (pTr) inside parseType resource.
+ Don't copy up the pTr element object to parent element,
+ since the pTr property is the 'parent' of the pTr object
+
+ * tests/Makefile.am: Added ex-23
+
+ * tests/ex-23.out, tests/ex-23.rdf:
+ Added test for embedded parseType Resource
+
+ * raptor_parse.c: Skip elements with aboutEach or aboutEachPrefix
+
+ * tests/test.out, tests/test.nt:
+ Added xml literals and lang-string literals
+
+ * ntriples_parse.c:
+ Replaced xml(...) with xml"..." throughout
+ Got "string"-lang working.
+
+2002-03-11 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_print_statement_as_ntriples):
+ Updated for xml"foo" /
+ xml"foo"-en N-Triples format
+
+ * tests/ex-11.out, tests/ex-07.out:
+ Updated for xml"foo" / xml"foo"-en N-Triples format
+
+2002-03-06 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ Added content type property_content set when content type isn't
+ unknown, but known to be value of a property
+
+ * tests/ex-22.out:
+ Fixed for ordering actually generated
+
+ * raptor_parse.c:
+ Handle bare rdf attributes correctly; only check when they have no
+ namespace.
+ Handle sequence of description/typed node blocks by handling
+ both as typed nodes and changing to description if necessary.
+
+ * tests/ex-21.out: Correct typos
+
+ * raptor.h:
+ Removed aboutEach* identifier types
+
+ * raptor.h:
+ Added prototype for raptor_print_ntriples_string
+
+ * ntriples_parse.c (raptor_print_ntriples_string):
+ Added docu-comment
+
+ * tests/Makefile.am: Addex ex-22
+
+ * tests/ex-22.out:
+ Fix base URI of answers
+
+ * tests/Makefile.am:
+ Made tests report pass/fail and return exit code to match this
+
+ * tests/ex-21.out, tests/ex-22.out, tests/test.out,
+ tests/ex-09.out, tests/ex-10.out, tests/ex-11.out,
+ tests/ex-12.out, tests/ex-13.out, tests/ex-14.out,
+ tests/ex-15.out, tests/ex-16.out, tests/ex-17.out,
+ tests/ex-18.out, tests/ex-19.out, tests/ex-20.out,
+ tests/22-rdf-syntax-ns.out, tests/ex-00.out, tests/ex-01.out,
+ tests/ex-02.out, tests/ex-03.out, tests/ex-04.out,
+ tests/ex-05.out, tests/ex-06.out, tests/ex-07.out,
+ tests/ex-08.out: Test N-Triples answers
+
+2002-03-05 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * ntriples_parse.c:
+ Added some missing prototypes.
+ (raptor_ntriples_generate_statement): Added support for literal
+ language, is_XML throughout.
+ Generate string/XML literals.
+ (raptor_ntriples_utf8_to_unicode_char): Added
+ based on librdf_utf8_to_unicode_char
+ (raptor_ntriples_string): Move the start pointer once the string has
+ been parsed.
+ Added literal language (partial), XML support (done)
+ (raptor_print_ntriples_string): Added; writes a ntriples-escaped
+ string, handling all escapes. Uses
+ raptor_ntriples_utf8_to_unicode_char
+
+ * raptor_cc.gperf:
+ A little strlen removal/optimising.
+ Added more test cases
+
+ * raptor.h:
+ raptor_statement: Added object_literal language, is_XML flag
+
+ * Makefile.am:
+ Added raptor_cc.c, raptor_cc.gperf and unit test
+
+ * raptor_cc.gperf:
+ Added function documentation.
+ Use constant pointers to constant strings
+ Tidy testing messages
+
+ * raptor_cc.gperf:
+ Raptor ISO 3166 country code handling
+
+ * raptor_parse.c (raptor_print_statement_as_ntriples):
+ Start updating N-Triples output
+ for xml() support and quote the literals using
+ raptor_print_ntriples_string
+
+ * raptor_parse.c:
+ Removed more aboutEach, aboutEachPrefix mentions
+
+ * raptor_parse.c:
+ Generate statement for parseType resource between parent and content
+
+ * tests/Makefile.am, tests/ex-21.rdf:
+ Test that rdf: namespace prefixes work
+
+ * tests/ex-13.rdf: Fix comment
+
+2002-02-05 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ Change a series of if statements
+ about state, to be based on a switch on content_type
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ parseType Literal uses content_type
+ XML Literal
+ Add XML_LITERAL content type to be used when preserved is
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ Moved property rdf:resource checking
+ to end element
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ FOr rdf:li properties, don't loop around state
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ Use content_type not state for
+ finding daml collections.
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ Remove explicit checks for built-in
+ container types.
+
+ * raptor_parse.c:
+ Removed old block_type comment
+
+ * raptor_parse.c:
+ Remove IN_RDF reference
+
+ * raptor_parse.c:
+ Change content_type / child_content_type when the state /
+ child_state is set
+ Change content_type when parseType changes.
+
+ * raptor_parse.c (raptor_xml_cdata_handler):
+ Changed to handle a few state exceptions
+ and then work on a content_type basis.
+ When reading a property value, if non-whitespace content is found,
+ set the content type to be literal.
+
+ * raptor_parse.c (raptor_xml_end_element_handler):
+ If there is a parent, pass the last
+ state of this element back up.
+
+ * raptor_parse.c (raptor_xml_start_element_handler):
+ Update literal handling to use
+ element content_type. Initialise to unknown, then from
+ the value passed from the parent element if there is one.
+ Use the flags of the content type to do the checks.
+ Ensure that when an element is found as a property value, content
+ type switches to RESOURCE to expect a resource (node).
+
+ * raptor_parse.c:
+ Added a bunch of LIBRDF_DEBUG* statements; tided output of others.
+
+ * raptor_parse.c:
+ typed_node=>typedNode
+
+ * raptor_parse.c:
+ Deleted states 6.29 (referencedItem) and 6.30 (inlineItem); now that
+ rdf:li is the same as any other property
+
+ * raptor_parse.c:
+ More EMPTY=>RESOURCE; code at this stage won't work
+
+ * raptor_parse.c:
+ Added some new content types
+ Uses of type EMPTY replaced with RESOURCE
+
+ * raptor_parse.c:
+ (raptor_xml_start_element_handler):
+ Initialise user_data, locator inside code body; gcc3.x wasn't doing
+ it in the order of declarations.
+
+ * raptor_parse.c:
+ Added RAPTOR_ELEMENT_CONTENT_TYPE_LAST to make it compile again
+
+ * raptor_parse.c: comment tidy
+
+ * raptor_parse.c:
+ Added child_content_type to parser state
+
+ * raptor_parse.c:
+ Added rdf_content_type_info
+ (raptor_element_content_type_as_string): Added
+
+ * raptor_parse.c:
+ Removed raptor_typed_node_block_type
+
+ * raptor_parse.c:
+ Include dmalloc.h (optionally) after stdlib.h - keeps some gcc3
+ versions happier
+
+2002-02-03 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am:
+ Added 22-rdf-syntax-ns.rdf rdf namespace test
+
+ * tests/22-rdf-syntax-ns.rdf:
+ Added RDF namespace schema to tests
+
+ * tests/ex-11.rdf:
+ Use parseType 'Literal' (specific value) rather than 'literal' which
+ just gets turned into parseType literal by the default rules.
+
+ * tests/Makefile.am:
+ Throw away stderr on make check; if it fails, I can find out by hand
+
diff --git a/ChangeLog.4 b/ChangeLog.4
new file mode 100644
index 0000000..145e919
--- /dev/null
+++ b/ChangeLog.4
@@ -0,0 +1,2809 @@
+2003-12-31 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c, raptor_parse.c, ntriples_parse.c, n3_parser.y:
+ Use expanded raptor_parser_register_factory with mime_type and
+ uri_string args where appropriate.
+
+ * libraptor.3, raptor.h: Added raptor_syntaxes_enumerate
+
+ * raptor_general.c (raptor_parser_register_factory):
+ Add mime_type and uri_string args, both optional.
+ (raptor_syntaxes_enumerate): Added to get syntax name, label,
+ mime_type or uri_string - all optional.
+ (raptor_parsers_enumerate): Uses raptor_syntaxes_enumerate.
+
+ * raptor_internal.h:
+ Store parser mime_type, URI in raptor_parser_factory
+ Update raptor_parser_register_factory to take mime_type,
+ uri_string args.
+
+ * configure.ac: Bumped version to 1.2.0
+
+ * Snapshotted raptor_1_1_0 for 1.1.0 release
+
+ * configure.ac:
+ Update RAPTOR_LIBTOOL_VERSION to reflect interfaces added,
+ none removed giving current 2:0:1
+
+ * NEWS.html: 1.1.0 released 2003-12-31
+
+ * libraptor.3: nroff/man style tweaks
+
+2003-12-31 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * libraptor.3: nroff/man style tweaks
+
+2003-12-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * NEWS.html: Link to W3C docs for 1.1.0
+
+ * configure.ac: words
+
+ * configure.ac: Make flex version warnings mention N-Triples Plus more
+
+2003-12-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * NEWS.html: Link to W3C docs for 1.1.0
+
+ * configure.ac: Make flex version warnings mention N-Triples Plus more
+
+2003-12-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html, README.html, NEWS.html, LICENSE.html, INSTALL.html:
+ XHTML 1 strict
+
+ * NEWS.html: Prepare for 1.1.0
+
+ * libraptor.3: bump date
+
+ * raptor_stringbuffer.c (main): Do not free as_string returned strings
+
+ * raptor_stringbuffer.c: brackets
+
+ * raptor_stringbuffer.c (raptor_free_stringbuffer):
+ Free any constructed string.
+
+ * raptor_xml_writer.c:
+ Use raptor_stringbuffer to better grow the output cdata.
+
+ * raptor_stringbuffer.c: stringbuffer now uses unsigned char
+ Removed raptor_new|free_stringbuffer_node - used once, now inlined.
+ (raptor_stringbuffer_append_string_common): Added with
+ common append code merged here.
+ (raptor_stringbuffer_append_counted_string,
+ raptor_stringbuffer_append_string): Added do_copy arg.
+ (main): Test code updated for api changes.
+
+ * raptor_internal.h:
+ Added prototypes for raptor_stringbuffer class to internal API
+
+ * Makefile.am:
+ Re-added raptor_stringbuffer.c and raptor_stringbuffer_test
+
+2003-12-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapper.1: Updated for 1.1.0, -a is gone. Added ntriples-plus
+
+ * libraptor.3: parser name is ntriples-plus
+
+ * libraptor.3: Updated for 1.1.0
+
+ * raptor.h: remove raptor_namespaces_end_namespace - does not exist.
+
+2003-12-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am:
+ Remove raptor_stringbuffer.c/test from dist - not used at present.
+
+ * configure.ac:
+ Added --with-xml-names to choose XML 1.0 name checking (default) or 1.1
+
+ * TODO.html: Added --enable-xml-1-1-names and updated to XML 1.1 PRs
+
+ * raptor_utf8.c (raptor_unicode_is_namestartchar):
+ Update to Namespaces in XML 1.1 WD
+ http://www.w3.org/TR/2003/PR-xml-names11-20031105/#NT-NCNameStartChar
+ and Extensible Markup Language (XML) 1.1 PR
+ http://www.w3.org/TR/2003/PR-xml11-20031105/#NT-NameStartChar
+ (raptor_unicode_is_namechar): Updated comment, no code changes
+ needed.
+
+ * tests/ntriplesplus/Makefile.am: No check-warn-rdf tests yet
+
+ * TODO.html: Added --disable-nfc-check to disable Unicode NFC checking.
+
+ * raptor_utf8.c:
+ Use RAPTOR_NFC_CHECK to wrap any use of the glib g_utf8_normalize.
+
+ * configure.ac: Define RAPTOR_NFC_CHECK when NFC check is needed
+
+ * configure.ac:
+ Added --disable-nfc-check to disable Unicode NFC checking even if a
+ suitable glib is present and providing it. Otherwise, autodetects
+ as before.
+
+ * TODO.html: I claim the CDATA counting problem with libxml is a
+ libxml bug.
+
+ * TODO.html: Record win32 file://c: somewhat handled.
+
+ * TODO.html: Added --disable-nfc-check to disable Unicode NFC checking.
+
+ * raptor_utf8.c:
+ Use RAPTOR_NFC_CHECK to wrap any use of the glib g_utf8_normalize.
+
+ * configure.ac: Define RAPTOR_NFC_CHECK when NFC check is needed
+
+ * configure.ac:
+ Added --disable-nfc-check to disable Unicode NFC checking even if a
+ suitable glib is present and providing it. Otherwise, autodetects
+ as before.
+
+ * TODO.html:
+ I claim the CDATA counting problem with libxml is a libxml bug.
+
+ * TODO.html: Record win32 file://c: somewhat handled.
+
+2003-12-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: updates, note bug or feature
+
+ * examples/Makefile.am: Removed REDLAND_LIBS
+
+2003-12-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ Update for changed raptor_generate_id handler calls - no const.
+
+ * raptor_general.c, raptor.h, raptor_internal.h:
+ raptor_generate_id handler does not take const string
+
+ * raptor_general.c, raptor.h, raptor_internal.h:
+ raptor_generate_id returns non const
+
+ * ntriples_parse.c (raptor_ntriples_parse_line):
+ Casts, unsigned char* for blank node IDs.
+
+ * ntriples_parse.c (raptor_ntriples_parse_line):
+ Enforce predicate must be URIref
+
+2003-12-16 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * ntriples_parse.c (raptor_ntriples_parse_line):
+ Pass blank node identifier generation
+ through raptor_generate_id. Rewrite returns into setting rc and jump
+ to cleanup to ensure allocated blank node IDs are freed.
+
+ * raptor.pc.in: Restore LDFLAGS, LIBS
+
+ * raptor-src-config.in: Removed --static-libs
+
+2003-12-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.pc.in: Just link -lraptor
+
+ * configure.ac:
+ Remove use of have_redland for expat sources (no longer shipped with
+ redland anyway)
+
+ * configure.ac: Remove redland source check.
+
+ * Makefile.am: No need for librdf.la rule
+
+ * rdfdump.c, raptor_stringbuffer.c, raptor_set.c,
+ raptor_namespace.c, Makefile.am: Remove all RAPTOR_IN_REDLAND code
+ use of REDLAND_LIBS, REDLAND_CFLAGS. Now the test and rdfdump
+ programs always just use raptor alone.
+
+2003-12-14 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html:
+ CDATA sections do not count line numbers at all (seen with libxml)
+
+ * raptor_general.c (raptor_print_statement_part_as_ntriples):
+ Update call of raptor_print_ntriples_string
+
+ * raptor.h: Update raptor_print_ntriples_string prototype
+
+ * raptor_general.c (raptor_print_ntriples_string):
+ Take unsigned const char*
+
+2003-12-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: libxml2.6.0 SAX API support done
+
+2003-12-06 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am:
+ Narrower yyerrlabl fix since bison 1.875a no longer requires it
+
+ * examples/grapper.c:
+ Casts and updates to use URI strings from raptor as unsigned char*
+ and converting to/from gchar*
+
+ * rdfdump.c, raptor_xml_writer.c, raptor_xml.c,
+ raptor_www_libxml.c, raptor_www.c, raptor_uri.c, raptor_sax2.c,
+ raptor_rss.c, raptor_parse.c, raptor_namespace.c, n3_parser.y,
+ n3_lexer.l:
+ Lots of casts for str* function args, return values between
+ unsigned char* as used for UTF8 and URI strings and char* used by
+ str* functions.
+ Some further casts for strings from XML.
+
+ * raptor_www_test.c (write_bytes_fh): No return value.
+ (main) Test code casts unsigned char* for URI strings
+ Fix write_content_type and write_bytes_fh set handler methods.
+
+ * raptor_utf8.c (raptor_unicode_char_to_utf8): unsigned char* arg.
+ (raptor_utf8_is_nfc): unsigned int, cast for unsigned char*
+
+ * raptor_sequence.c (raptor_sequence_ensure):
+ Use void** not void*. C++ cares.
+ (main): Test code casts to void* for args.
+
+ * raptor_qname.c (raptor_qname_string_to_uri):
+ cast for signed/unsigned int
+ comparison.
+
+ * raptor_locator.c (raptor_format_locator):
+ Use raptor_uri_as_counted_string to save a strlen.
+
+ * raptor_identifier.c:
+ (raptor_identifier_print) fputs arg cast [function for
+ RAPTOR_DEBUG only]
+
+ * raptor_general.c (raptor_parsers_enumerate): Unsigned int.
+ (raptor_parse_uri_write_bytes): unsigned char* cast.
+ Declare raptor_xml_literal_datatype_uri_string.
+ (raptor_print_statement_detailed): Replace several fprintf with fputs
+ and fputc.
+ (raptor_print_ntriples_string): Use unsigned long/size_t for counts.
+ (raptor_statement_part_as_counted_string): unsigned char*
+ Use raptor_xml_literal_datatype_uri_string.
+ (raptor_statement_part_as_string): unsigned char*
+ (raptor_print_statement_part_as_ntriples): unsigned char*. Replace
+ several fprintf with fputs and fputc.
+ Use raptor_xml_literal_datatype_uri_string
+ (raptor_default_generate_id_handler): Casts for str* functions
+ (raptor_check_ordinal): unsigned char*
+
+ * ntriples_parse.c:
+ (raptor_ntriples_generate_statement,
+ raptor_ntriples_string_as_utf8_string, raptor_ntriples_parse_line):
+ Updated to take/return unsigned char* args and internals. Update
+ raptor_uri calls for similar changes.
+ Use raptor_xml_literal_datatype_uri_string
+ Lots of casts for str* functions char* arguments.
+
+ * Makefile.am: Remove maintainer only n3 lex/yacc rules (flex/bison)
+ Post process the bison output to remove unused label to make g++
+ happier.
+
+ * raptor_internal.h:
+ Added raptor_xml_literal_datatype_uri_string for the RDF datatype
+ literal URI string, used several times.
+ raptor_check_ordinal takes unsigned char*
+ A couple of lengths, counts become unsigned int.
+ raptor_unicode_char_to_utf8, raptor_format_sax2_element,
+ raptor_xml_writer_cdata, raptor_xml_writer_comment,
+ raptor_xml_writer_as_string changed to
+ take/return unsigned char* for UTF8 strings.
+
+ * raptor.h: raptor_new_uri_func, raptor_new_uri_from_local_name_func,
+ raptor_new_uri_relative_to_base_func, raptor_uri_as_string_func,
+ raptor_uri_as_counted_string_func URI factory methods
+ changed to all take/return unsigned char* for URI strings
+ raptor_statement_part_as_counted_string,
+ raptor_statement_part_as_string,
+ raptor_new_uri, raptor_new_uri_from_uri_local_name,
+ raptor_new_uri_relative_to_base, raptor_uri_as_string,
+ raptor_uri_as_counted_string
+ URI methods changed to take/return unsigned char* for URI strings
+ raptor_ntriples_string_as_utf8_string changed to return unsigned
+ char* for UTF8 string
+ raptor_uri_resolve_uri_reference, raptor_uri_filename_to_uri_string,
+ raptor_uri_uri_string_to_filename,
+ raptor_uri_uri_string_to_filename_fragment, raptor_uri_is_file_uri
+ Changed to use unsigned char* for URI strings, char* for filenames
+
+2003-12-03 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: ntriples parser should use raptor_generate_id for bnodes
+
+2003-12-01 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_set.c (raptor_set_stats_print): Debug printing tweak.
+
+2003-11-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_internal.h: raptor_check_ordinal with now unsigned char* arg
+ raptor_sax2 content_cdata now unsigned char*
+
+ * raptor_general.c (raptor_check_ordinal): unsigned char *name
+
+ * raptor_parse.c: Lots of char/unsigned char casting.
+
+ * n3_common.h: Undo n3_syntax_error back to raptor_parser arg.
+
+ * n3_parser.y: (n3_parser_error) aka yyerror; take a void arg.
+
+ * n3_common.h:
+ The n3_syntax_error aka yyerror function takes a void arg.
+
+ * n3_parser.y: Casts for rdf_parser, strings.
+
+ * n3_lexer.l: Define INPUT_FN as yyinput (C++) or input (otherwise)
+ Add more casts for C++ near rdf_parser, yytext.
+ (copy_token): More casts for malloc and string functions.
+ (copy_string_token): More size_t, casts.
+
+ * ntriples_parse.c (raptor_ntriples_term): Use a size_t; cast for C++.
+
+ * ntriples_parse.c (raptor_ntriples_term_valid,raptor_ntriples_term):
+ Change argument names from class to term_class to avoid C++ keyword.
+
+ * raptor_getopt.h: Protect prototypes for C++
+
+ * raptor_stringbuffer.c: casts for RAPTOR_*ALLOC returns
+
+ * n3_parser.y: oops, raptort -> raptor
+
+ * n3_parser.y: another cast for RAPTOR_MALLOC return
+
+ * n3_parser.y: casts for RAPTOR_CALLOC returns
+
+ * configure.ac:
+ Move adding pkg-config glib2.0 cppflags/libs till after the other
+ libraries since that's more likely to be system wide and least
+ effect libxml2, other libraries that might be elsewhere. Mostly
+ affects OSX which is more sensitive to link order.
+
+ * raptor_stringbuffer.c (main): declare at start of block
+
+ * configure.ac: Check for libxml/SAX2.h - the new SAX2 API
+
+ * raptor_libxml.c:
+ Added a pile of libxml2_* macros to use the libxml2 SAX2 functions
+ when they are present, otherwise the SAX1. Not using the SAX2 parts
+ of the libxml2 API at present.
+
+ * strcasecmp.c: Add debug message arg casts.
+
+ * configure.ac:
+ Include libxml/parser.h when checking for other libxml2 headers
+
+ * ntriples_parse.c: Add some debug message arg casts.
+ (raptor_ntriples_parse_chunk): At end of input, check that there is
+ no remaining junk.
+
+ * ntriples_parse.c (raptor_ntriples_parse_chunk):
+ Fix line counting problems when \r\n
+ crosses a buffer or when a line ends at the end of a buffer.
+ last_char recorded in state.
+
+ * TODO.html: N-Triples Plus parser
+ More line counting fixes.
+
+ * README.html: Added N-Triples Plus parser
+
+ * raptor_stringbuffer.c (main): Free returned strings.
+
+ * Makefile.am:
+ Added raptor_stringbuffer.c raptor_stringbuffer_test code
+
+ * raptor.h: Added raptor_stringbuffer.
+
+ * raptor_stringbuffer.c: Stringbuffer class for growing strings
+
+ * raptor_libxml.c (raptor_libxml_init): With libxml2 use
+ raptor_xml_characters_handler for sax->characters.
+
+ * raptor_parse.c (raptor_cdata_grammar): Added is_cdata arg.
+ (raptor_xml_characters_handler): Added, calling raptor_cdata_grammar.
+ (raptor_xml_cdata_handler): Updated to call raptor_cdata_grammar with
+ is_cdata=1.
+ (raptor_xml_parse_init): With expat use raptor_xml_characters_handler
+ with XML_SetCharacterDataHandler.
+ (raptor_cdata_grammar): Tidy error reporting; do not use
+ raptor_xml_writer_as_string for a simple print.
+
+ * raptor_internal.h: Added raptor_xml_characters_handler prototype.
+
+2003-11-25 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * manifest.pl: Add withdrawn tests check
+
+2003-11-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/ntriplesplus/Makefile.am:
+ Added more N-Triples Plus tests (1-7) and bad (0-3)
+
+ * tests/ntriplesplus/test-07.out, tests/ntriplesplus/test-07.ntp,
+ tests/ntriplesplus/test-06.out, tests/ntriplesplus/test-06.ntp,
+ tests/ntriplesplus/test-05.out, tests/ntriplesplus/test-05.ntp,
+ tests/ntriplesplus/test-04.out, tests/ntriplesplus/test-04.ntp,
+ tests/ntriplesplus/test-03.out, tests/ntriplesplus/test-03.ntp,
+ tests/ntriplesplus/test-02.out, tests/ntriplesplus/test-02.ntp,
+ tests/ntriplesplus/test-01.out, tests/ntriplesplus/test-01.ntp:
+ More N-Triples Plus tests
+
+ * tests/ntriplesplus/bad-00.ntp, tests/ntriplesplus/bad-01.ntp,
+ tests/ntriplesplus/bad-02.ntp, tests/ntriplesplus/bad-03.ntp:
+ N-Triples Plus bad tests
+
+ * n3_lexer.l: In prefix state, always return to initial on
+ matching '.', then error out.
+ (n3_syntax_error): Copy removed here.
+ (main): Init enough more of parser/locator so that n3_syntax_error
+ in main library can be used.
+
+2003-11-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c: extra newline in version
+
+ * rdfdump.c: extra newline in help
+
+2003-11-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am:
+ Added check-ntriples-plus to check N-Triples Plus with the N-Triples
+ tests.
+
+ * n3_parser.y, n3_lexer.l, n3_common.h:
+ Added lineno to raptor_n3_parser context to track newlines for dos,
+ unix, mac since flex doesn't do that by default with yylineno.
+
+ * rdfdump.c: tidy help messages
+
+ * TODO.html: line counting for dos files
+
+ * ntriples_parse.c:
+ Track newlines correctly for \r\n across chunks; move last_nl into
+ ntriples parser context.
+ (raptor_ntriples_parse_chunk,raptor_ntriples_parse_start): Use and
+ init last_nl in ntriples parser context.
+
+2003-11-16 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h: Added raptor_ntriples_string_as_utf8_string
+
+ * ntriples_parse.c (raptor_ntriples_term):
+ Added allow_utf8 argument and new class
+ RAPTOR_TERM_CLASS_FULL which uses all the passed in string.
+ (raptor_ntriples_string_as_utf8_string): Added, using
+ raptor_ntriples_term as above.
+ (raptor_ntriples_parse_line): Use size_t len args.
+
+ * rdfdump.c: Use f/puts instead of print/fprintf when there are no %s
+
+ * raptor_uri.c (raptor_default_new_uri_for_rdf_concept):
+ Remove duplicate strlen(base_uri)
+
+2003-11-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * n3_lexer.l: Document more ntriples plus
+ Error out if @prefix's name doesn't match name
+
+ * TODO.html: todos near xml1.1 names
+
+ * raptor_utf8.c (raptor_unicode_is_namestartchar):
+ Two | changed to ||. Likely worked anyway
+
+2003-11-11 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * libraptor.3: Noted raptor_set_feature with non_nfc_fatal
+
+ * raptor.h: Added RAPTOR_FEATURE_NON_NFC_FATAL to pick between NFC
+ errors or warnings.
+
+ * raptor_general.c (raptor_set_feature): Added
+ RAPTOR_FEATURE_NON_NFC_FATAL to pick between NFC errors or warnings.
+ (raptor_set_parser_strict): Set feature_non_nfc_fatal default off.
+
+ * raptor_internal.h:
+ Added feature_non_nfc_fatal to pick between NFC errors or warnings.
+
+ * raptor_parse.c:
+ Put 'quotes' around element/attribute names in messages.
+ Use feature_non_nfc_fatal to pick between NFC errors or warnings.
+
+ * tests/Makefile.am: check-bad-nfc-rdf - use strict mode
+
+ * rdfdump.c: Document -m/--mode arg
+
+ * TODO.html: gzip2/bzip2 api
+
+2003-11-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: Note libxml2 2.6.0 SAX2 issues
+
+ * configure.ac: Added tests/ntriplesplus
+
+ * tests/ntriplesplus/Makefile.am: N-Triples plus tests
+
+ * tests/ntriplesplus/test-00.ntp, tests/ntriplesplus/test-00.out:
+ N-Triples Plus default namespace test
+
+ * tests/Makefile.am: added ntriplesplus dir
+
+ * raptor_qname.c (raptor_qname_string_to_uri):
+ Keep original name around for error reporting.
+
+ * rdfdump.c, n3_parser.y: parser now called ntriples-plus
+
+ * n3_parser.y: parser called ntriplesplus
+
+ * n3_parser.y (production directive):
+ Fix declaring default namespace prefix
+
+2003-11-09 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: added bad-20.rdf
+
+ * tests/bad-20.rdf: check non-namespaced element does not crash parser
+
+ * raptor_qname.c (raptor_new_qname,
+ raptor_new_qname_from_namespace_local_name): Do not die if no URI
+ for qname is available. It might be <a xmlns=""> which is at
+ least needed for some error reports or for embedded qnames.
+ Caused unnecessary crashes when parsing failed.
+
+2003-11-03 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_xml.c (main): Make tests less chatty on success
+
+ * raptor_uri.c (main): Make it less chatty on success
+
+ * raptor_uri.c (raptor_uri_uri_string_to_filename_fragment):
+ Allow file://a|/ and file://a:/
+ (main): For WIN32, check the above works.
+
+ * autogen.sh: remove ltmain.sh libtool before libtoolize
+
+ * raptor_general.c (raptor_parse_uri_with_connection):
+ Fail before parsing if raptor_www_fetch failed.
+
+ * raptor_internal.h: Added raptor_www_error_varargs internal prototype.
+
+ * raptor_www_libxml.c (raptor_www_libxml_http_error):
+ This was just all wrong, printing to
+ stderr and then exit(1). Change to use the proper
+ raptor_www_error_varargs callback.
+
+ * raptor_www.c (raptor_www_error_varargs):
+ Added, with va_list signature.
+
+ * raptor_general.c (raptor_parse_file):
+ When uri is given and base_uri is NULL, copy
+ the uri and free it later - fix to match the function documentation.
+
+2003-10-31 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c (raptor_parse_file): fclose only when fh is not NULL
+
+2003-10-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: Note Win32 URI code possible bug
+
+ * raptor_parse.c (raptor_xml_end_element_handler):
+ For RAPTOR_DEBUG, declare element_name at start of function.
+
+2003-10-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h: raptor_namespace(s)_(new|free) renamed to
+ raptor_(new|free)_namespace(s)
+ Added raptor_new_qname_from_namespace_local_name
+
+ * raptor_qname.c (raptor_new_qname_from_namespace_local_name): Added.
+
+ * raptor_namespace.c:
+ raptor_namespaces_(new|free) renamed to raptor_(new|free)_namespaces
+
+ * raptor_namespace.c:
+ raptor_namespace_(new|free) renamed to raptor_(new|free)_namespace
+
+ * raptor_xml_writer.c:
+ raptor_namespaces_free renamed to raptor_namespaces_clear
+
+ * raptor_parse.c (raptor_xml_start_element_handler):
+ Use raptor_new_sax2_element.
+ raptor_namespaces_free renamed to raptor_namespaces_clear
+
+ * raptor_internal.h: Added raptor_new_sax2_element
+
+ * raptor_sax2.c (raptor_new_sax2_element): Added.
+
+ * raptor.h:
+ Added prototypes for raptor_namespaces_new, raptor_namespaces_clear
+
+ * raptor_namespace.c (raptor_namespaces_new,raptor_namespaces_free):
+ Added for constructor and destructor.
+ raptor_namespaces_free renamed to raptor_namespaces_clear for
+ emptying a statically allocated namespace stack.
+
+ * n3_parser.y:
+ raptor_namespaces_free renamed to raptor_namespaces_clear
+
+2003-10-16 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * n3_parser.y: Moved n3 lexer/parser stuff to n3_common.h
+ Added uri field to union.
+ URI_LITERAL and QNAME_LITERAL now are uri.
+ PREFIX now expects an IDENTIFIER to follow.
+ Remove all make qname/uri and free(copied token) sequences since the
+ lexer does it.
+ Added fake yy_init_globals to stop dumb warning.
+
+ * n3_lexer.l: Make raptor_uris here from lexer tokens (qnames or URIs)
+ For @prefix, recognise following token as an identifier specially
+ rather than try to make it a URI.
+ (n3_token_free): Free string or raptor_uri.
+ (main): Lots of fixups to fake enough n3 parser structure to
+ get it working fairly standalone.
+
+ * Makefile.am: Added n3_common.h
+ Fixup free of null inside flex-generated lexer.
+
+ * n3_common.h: N3 parser/lexer shared internals
+
+ * raptor_internal.h: Moved n3 lexer/parser stuff to n3_common.h
+
+ * n3_parser.y (n3_qname_to_uri): Replace with call to
+ raptor_qname_string_to_uri and added length parameter.
+
+ * raptor_qname.c (raptor_new_qname):
+ Replace raptor_namespace_local_name_to_uri
+ with use of raptor_new_uri_from_uri_local_name.
+ (raptor_qname_string_to_uri): Added, making only the URI
+ equivalent to the qname and handling N3/RDQL-style special
+ cases such as "prefix:", ":" and NULL.
+
+ * raptor_internal.h, raptor.h:
+ Moved raptor_qname, raptor_namespace, raptor_namespace_stack
+ classes into public API.
+ Added raptor_qname_string_to_uri
+
+ * raptor_namespace.c (raptor_namespace_local_name_to_uri):
+ Removed - only used once internally and was never public.
+
+2003-10-09 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * n3_lexer.l (n3_token_free): Added, for cleanup in debugging.
+ (main): Init and clear token/lval.
+
+ * tests/Makefile.am: Added ex-53
+
+ * tests/ex-53.out, tests/ex-53.rdf: Check allowing optional rdf:RDF
+
+ * rdfdump.c:
+ --assume/-a feature_assume_is_rdf deleted; rdf:RDF is optional.
+
+ * raptor_general.c, raptor_parse.c:
+ feature_assume_is_rdf deleted; rdf:RDF is optional.
+
+ * raptor_internal.h: feature_assume_is_rdf deleted
+
+2003-10-06 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/wine.out, tests/wine.rdf:
+ OWL Wine Ontology from http://www.w3.org/TR/owl-guide/wine.rdf
+
+ * tests/Makefile.am:
+ Added OWL Wine ontology from http://www.w3.org/TR/owl-guide/wine.rdf
+ as wine.rdf wine.out
+
+2003-09-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: NTP lval
+
+ * n3_parser.y: Remove n3_parser_lex; re-#define yylex to call direct
+
+ * n3_lexer.l (copy_string_token):
+ Destroy malloced string on error return.
+
+ * n3_parser.y (n3_parse):
+ Don't delete buffer, pop buffer state; a successful lex does that.
+
+ * raptor_internal.h: Remove n3_token_print
+
+ * n3_parser.y: Use reentrant yacc parser.
+ Store the lexer lval in the n3_parser context.
+ Lots of #define trickery to get flex/bison to talk nicely.
+ Make n3_parser_error take an rdf_parser arg (this isn't configurable
+ by bison itself, so is likely fragile).
+ Remove use of extern in lineno; get it from the lexer.
+ Remove N3_Parser global; use rdf_parser local.
+ (n3_parser_error): Update for having rdf_parser arg, update locator
+ lineno from scanner.
+ (n3_syntax_error, n3_qname_to_uri): Get lineno from scanner.
+ (n3_parse): Remove fixmes, no need for protecting globals.
+ (main): Update for reentrant parser; init locator from standalone
+ args.
+
+ * n3_lexer.l:
+ Remove n3_lexer.c/.h prototypes no longer(?) needed with
+ re-entrant lexer.
+ Remove use of lineno; let lexer do it.
+ Change lexer call to pass in lval from reentrant parser.
+ (n3_token_print): Pass in lval.
+ (main): Update for api changes.
+
+2003-09-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_internal.h: Updates for reentrant lexer.
+
+ * n3_parser.y: Use reentrant lexer API.
+ Define YYLEX_PARAM to be scanner arg, from current grammar.
+ (n3_parser_lex): Take scanner arg.
+ (n3_syntax_error): Add rdf_parser arg.
+ (n3_parse): Init and destroy reentrant lexer.
+ (raptor_n3_parse_terminate): Tidy up any lexer stuff.
+ (main): Check for file not found, report it.
+
+ * n3_lexer.l:
+ Switch to reentrant lexer. Pass rdf_parser into code, yyextra
+ internally.
+ (yywrap): Add scanner arg.
+ (copy_string_token, n3_syntax_error): Add rdf_parser arg.
+ (main): Use reentrant calls for lexer to set yyin, get_text. Use
+ yylex_init/yylex_destroy.
+
+ * Makefile.am: n3_lexer_test depends on raptor_utf8
+
+ * raptor_parse.c:
+ Add EXPAT_UTF8_BOM_CRASH fix updates for sax2 changes.
+
+ * configure.ac: Tweak for old flex version output
+
+ * configure.ac: Try to check flex is new enough.
+
+2003-09-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * n3_parser.y: Minor C reformatting
+
+2003-09-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h: Added raptor_parsers_enumerate prototype
+
+ * n3_lexer.l: minor reformatting
+
+ * n3_lexer.l (copy_string_token): Make \r, \n and \t work
+
+ * raptor_general.c (raptor_init): Ensure rdf/xml is default parser.
+ (raptor_parsers_enumerate): Added, to enumerate parsers, returning
+ their name & label.
+
+ * examples/grapper.c:
+ Use raptor_parsers_enumerate to get parser names, labels.
+
+ * n3_lexer.l: flex archaeology for options
+
+ * examples/Makefile.am: Don't build examples by default
+
+2003-09-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_www.c, raptor_general.c:
+ Revert to old API for raptor_uri_uri_string_to_filename
+
+ * raptor.h, raptor_uri.c (raptor_uri_uri_string_to_filename):
+ Restored to old API.
+ (raptor_uri_uri_string_to_filename_fragment): Added with fragment arg.
+
+2003-09-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * n3_parser.y (n3_qname_to_uri):
+ Handle NULL (":" in N3) returning the default
+ namespace. It's not quite clear if this is legal.
+
+ * n3_parser.y (raptor_n3_generate_statement):
+ Do nothing if some part of the triple
+ is NULL.
+
+ * raptor_internal.h: n3_syntax_error now takes varargs
+
+ * n3_parser.y (n3_syntax_error): Now takes varargs
+
+ * n3_lexer.l: n3_syntax_error now takes varargs
+ (copy_string_token): Added \u, \U. Fixed, \r, \n, \t
+
+ * n3_parser.y: Wrap a debugging printf
+
+ * n3_lexer.l: For blank literal "_:abc", don't include _: in the
+ id passed to the parser.
+
+ * n3_parser.y:
+ Throughout replace raptor_new_uri with raptor_copy_uri when copying
+ existing base URI.
+
+ * n3_parser.y:
+ Throughout: Handle NULL uri string meaning use the base URI
+
+ * n3_lexer.l: Handle <> (returning NULL) as well as <> with content.
+ (n3_token_print): Update to match.
+ (n3_syntax_error): Simple standalone copy here.
+
+ * n3_parser.y (n3_parser_error):
+ Set lineno and call raptor_parser_simple_error to
+ pass on the parsing error.
+ (n3_syntax_error): Added. Set lineno and call raptor_parser_error
+ to pass on a general syntax error.
+ (n3_qname_to_uri): Init locator line before calling raptor_new_qname
+ that may fail, calling raptor_parser_simple_error.
+
+ * raptor_internal.h: Add n3_syntax_error
+
+ * n3_lexer.l: Call n3_syntax_error on a syntax error
+
+ * TODO.html: uris work for ntriples+
+
+ * examples/grapper.c: Add n3 syntax
+
+ * n3_parser.y (propertyList): Handle NULL verb, two cases.
+ (raptor_n3_parse_start): No locator column, byte values just yet.
+
+ * n3_parser.y (n3_qname_to_uri):
+ Call raptor_new_qname with rdf_parser for errors
+
+ * TODO.html: +RFE to disable NFC linking/check to glib
+
+2003-09-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * n3_parser.y: Don't raptor_free_uri shared uris made from qnames
+
+ * n3_parser.y (n3_parse): Tidy up flex buffers.
+ (raptor_n3_parse_terminate): Destroy any flex state on exit.
+
+ * n3_parser.y (n3_parse): delete buffer after parse.
+
+ * n3_parser.y: Free uri strings returned from URI_LITERAL.
+
+ * raptor_identifier.c (raptor_new_identifier):
+ Note uri, literal_datatype are shared and not copied.
+
+ * n3_parser.y: Free strings returned from QNAME_LITERAL.
+
+ * raptor_sequence.c (raptor_new_sequence): Use RAPTOR_MALLOC.
+ (raptor_free_sequence): Free the raptor_sequence.
+
+ * raptor_identifier.c (raptor_new_identifier):
+ Note id, literal, literal_language are shared and not copied.
+
+ * n3_parser.y (statement): Free identifier used for subject
+ (propertyList): Free identifier used for verb
+
+ * n3_parser.y: Track when an identifier is copied using is_malloced
+ (raptor_free_triple): Actually free the triple.
+
+ * raptor_internal.h, n3_parser.y: raptor_triple now just has 3 items.
+
+ * n3_parser.y (raptor_n3_parse_terminate): Free namespaces
+
+ * n3_parser.y (n3_parse): Do not parser NULL or empty string.
+ (raptor_n3_parse_chunk): Do not parser empty buffer.
+
+ * rdfdump.c: (main) Don't free NULL uri
+
+ * TODO.html: More N-Triples+ todos
+
+ * TODO.html, README.html, NEWS.html, INSTALL.html:
+ XHTML fixes, removing align="center"
+
+ * TODO.html: Some N-Triples+ todos
+
+ * n3_parser.y: More debugging messages.
+ Recover from errors, don't generate partial triples.
+ (n3_qname_to_uri): Return NULL if raptor_new_qname does not give a
+ URI (some error happened).
+
+ * n3_lexer.l: Remove END token, should only use EOF
+ Count lines right for \r\n|\r|\n
+ Handle EOF in comments
+
+ * n3_parser.y: Remove END token, should only use EOF
+ Add more debugging statements.
+ Throughtout, change raptor_new_uri to raptor_new_uri_relative_to_base.
+ (statement): Handle empty propertyList ("[]").
+ (propertyList 1): Copy verb into objectList, then append
+ propertyList items (if not empty "[]" again).
+ (objectList): Add empty item for "[]", returning NULL.
+ (resource): For [], handle NULL and generate statements here
+ before returning the generated id.
+ (n3_parser_print_statement): Added for test code
+ (main): In test code, init URI module only, create fake
+ static rdf_parser and n3_parser and initialise enough (base URI,
+ and context) so that it works.
+
+ * n3_parser.y: Add error recovery at '.'
+
+2003-09-14 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * n3_parser.y: raptor_print_triple renamed to raptor_triple_print
+
+ * n3_parser.y: Only define raptor_print_triple if debugging.
+
+ * raptor_identifier.c, n3_parser.y:
+ raptor_print_identifier renamed to raptor_identifier_print
+
+ * n3_parser.y: Raptor N-Triples+/N3 parser
+
+ * n3_lexer.l: Raptor N-Triples+/N3 lexer
+
+ * raptor_identifier.c (raptor_identifier_print): Added for debugging
+
+ * raptor_internal.h: When debugging, raptor_identifier_print
+
+ * raptor_identifier.c (raptor_new_identifier):
+ Add literal, literal_datatype,
+ literal_language args and handle them.
+ (raptor_init_identifier): Deleted, not used (enough).
+ (raptor_copy_identifier, raptor_free_identifier): Updated for
+ literal, literal language and literal datatype.
+
+ * rdfdump.c:
+ Use the syntax name (after validation) to intialise the parser rather
+ than an ever-growing set of flags.
+
+ * raptor_uri.c (raptor_default_new_uri):
+ If the filename had a fragment, re-append
+ it to the file:URI after updating it to be correct.
+ (raptor_uri_uri_string_to_filename): Add fragment_p arg to return
+ the URI fragment after a discovered filename in a file:URI.
+ (assert_uri_to_filename): Update call to
+ raptor_uri_uri_string_to_filename.
+
+ * raptor_parse.c (raptor_xml_parser): Add namespaces.
+ Elsewhere change rdf_parser->namespaces to
+ rdf_xml_parser->namespaces.
+ (raptor_xml_parse_start): Initialise the namespaces for rdf/xml.
+
+ * raptor_sequence.c: Raptor sequence ADT
+
+ * raptor_namespace.c (raptor_namespace_init):
+ Add defaults arg to control which
+ namespaces are added by default. 0=none, 1=xml, 2=... others
+ (main): Update test code to give new arg.
+
+ * raptor_general.c (raptor_init): Call raptor_init_parser_n3.
+ (raptor_start_parser, raptor_free_parser): Remove namespace code from
+ here; moves into specific parser context code.
+ (raptor_parse_file): Update for raptor_uri_uri_string_to_filename
+ extra arg.
+
+ * raptor_xml_writer.c:
+ (raptor_new_xml_writer) Update for raptor_namespaces_init defaults
+ arg.
+
+ * raptor_rss.c (raptor_rss_emit): Use raptor_new_identifier rather than
+ raptor_init_identifier and make items dynamically allocated.
+
+ * raptor_www.c:
+ (raptor_www_file_fetch) Update for raptor_uri_uri_string_to_filename
+ extra argument.
+
+ * raptor.h:
+ Add literal, literal_datatype, literal_language to raptor_identifier
+ structure.
+ Add above arguments to raptor_new_identifier.
+ Remove raptor_init_identifier - not used.
+ Add fragment_p argument to raptor_uri_uri_string_to_filename.
+
+ * raptor_internal.h:
+ Remove namespaces from raptor_parser; now in per-syntax contexts.
+ Updated raptor_namespaces_init to take defaults arg.
+ Added N3 class prototypes, for n3_token_print, raptor_init_parser_n3,
+ n3_parser_lex.
+ Added raptor_triple structure.
+ Added sequence class prototypes.
+
+ * Makefile.am:
+ Add n3_lexer.c n3_lexer.h both generated from n3_lexer.l by flex;
+ add maintainer-only rules to do that.
+ Add n3_parser.tab.c n3_parser.tab.h generated from n3_parser.y by
+ yacc; add maintainer-only rules to do that.
+ Add raptor_sequence.c and test.
+
+ * configure.ac: Add lex (flex required) and yacc
+
+2003-09-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: Bumped version to 1.1.0
+
+ * ntriples.h: deprecated
+
+ * Snapshotted raptor_1_0_0 for 1.0.0 release
+
+ * libraptor.3: new date
+
+ * NEWS.html: Note functions were removed, soname was increased
+
+ * ntriples.h, Makefile.am: Removed old header ntriples.h
+
+ * raptor_general.c, raptor.h, ntriples_parse.c:
+ Removed deprecated functions as promised. Changes are described in
+ the libraptor.3 man page.
+
+ * configure.ac: Updated for Raptor 1.0.0
+ Shared library soname major now 1
+
+ * NEWS.html, libraptor.3: Updated for Raptor 1.0.0
+
+ * win32_config.h: Added R_OK define for access()
+
+ * tests/Makefile.am: test wording for failures
+
+2003-09-05 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Added bad-05.nt
+
+ * tests/bad-05.nt: Bad Unicode character #x110000
+
+ * tests/test.out, tests/test.nt: fixes
+
+ * tests/test.nt:
+ Removed resource18-20 - illegal Unicode chars. Added \U0010FFFF
+
+ * ntriples_parse.c (raptor_ntriples_term):
+ Forbid Unicode characters outside #x0-#x10FFFF
+
+2003-09-04 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * libraptor.3: Updated for 0.9.13
+ Added raptor_parse_file_stream.
+ Added new feature normalize_language.
+ Added list of all static variables exported.
+
+ * configure.ac:
+ Define RAPTOR_VERSION_DECIMAL here and make it an AC_SUBST.
+
+ * raptor_general.c: Use RAPTOR_VERSION_DECIMAL define.
+
+ * raptor-config.1: Document --version-decimal and --libtool-libs
+
+ * raptor-config.in: Added --version-decimal.
+
+ * rdfdump.c: Allow filename "-" to be used as standard input.
+ When a filename is given, use raptor_parse_file.
+ Adjust the error messages to mention file names when using
+ raptor_parse_file.
+
+ * raptor.h: Added raptor_parse_file_stream
+
+ * raptor_general.c (raptor_parse_file_stream):
+ Added, allowing passing in of an existing
+ FILE* stream (with optional filename) and parsing rather than
+ raptor doing the fopen/fclose.
+ (raptor_parse_file): A NULL uri argument now means stdin.
+
+ * raptor_internal.h, raptor_parse.c: Remove rdf_parser->fh
+
+ * rdfdump.c: Use raptor_short_copyright_string in usage/help messages
+
+ * raptor_general.c, raptor.h: Added raptor_short_copyright_string
+
+2003-09-03 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c (raptor_set_feature):
+ Add new feature normalize_language
+ (raptor_set_parser_strict): Set default for feature
+ normalize_language to true.
+
+ * raptor.h, raptor_internal.h: Add new feature normalize_language
+
+ * raptor_parse.c (raptor_xml_start_element_handler):
+ Normalize language to lowercase.
+ After http://www.w3.org/TR/rdf-concepts/#dfn-language-identifier
+ Controlled by a new parser feature 'normalize_language'.
+
+ * ntriples_parse.c (raptor_ntriples_parse_line):
+ Normalize language to lowercase.
+ After http://www.w3.org/TR/rdf-concepts/#dfn-language-identifier
+
+2003-09-01 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor-config.in: Oops, -lraptor with --libs
+
+ * configure.ac:
+ Added RAPTOR_LIBTOOL_LIBS for compiling with raptor using libtool.
+
+ * raptor-config.in:
+ Added exec_prefix to make --libs generate the right -L
+ Added --libtool-libs for compiling with raptor using libtool.
+
+2003-08-31 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: dmalloc enabled only if dmalloc.h is present
+
+ * tests/Makefile.am: Removed warn-01 re-added accidently.
+
+ * tests/warn-00.out, tests/warn-00.rdf: Added rdf:bagID warning check
+
+ * tests/Makefile.am:
+ Added scanning tests and ex-52.svg/out for inside SVG
+
+ * tests/ex-52.out, tests/ex-52.svg: Check scanning for rdf/xml in SVG
+
+ * raptor_general.c (raptor_set_parser_strict):
+ Scanning and assuming are never default
+ on, must be enabled
+
+ * TODO.html: The scanning for rdf:RDF works (--scan argument to rapper)
+
+ * raptor_parse.c (raptor_xml_start_element_handler):
+ Fix scanning for rdf:RDF. Do
+ parent->child processing if the grammar has a state set up,
+ in this case it is expecting a list of node elements.
+
+ * rdfdump.c: Set strict before setting other features
+
+ * rdfdump.c: Use strict_mode
+
+ * tests/warn-00.out, tests/warn-00.rdf, tests/warn-01.out,
+ tests/warn-01.rdf, tests/warn-03.rdf: These are now errors not
+ warnings
+
+ * raptor_parse.c (raptor_xml_start_element_handler):
+ Non-namespaced elements are now
+ an error.
+ (raptor_process_property_attributes): Tidy non-namespaced element name.
+ (raptor_start_element_grammar): Give errors if an attempt is made
+ to proceed dealing with elements with no namespace for property or
+ node elements - attributes are caught above.
+
+ * tests/Makefile.am:
+ Add bad-18.rdf, bad-19.rdf for non-namespaced elements
+
+ * tests/bad-18.rdf, tests/bad-19.rdf:
+ Test node/property elements without namespaces fail
+
+ * raptor_internal.h:
+ Add raptor_parser field 'magic' for libxml2 error/warning callback
+ validation. and declare RAPTOR_LIBXML_MAGIC to set use there
+
+ * raptor_general.c (raptor_new_parser):
+ Set RAPTOR_LIBXML_MAGIC field in structure for
+ libxml2 error/warning callback validation.
+
+ * ntriples_parse.c (raptor_ntriples_term):
+ Check that the string/URI term was terminated
+ before the end of the string.
+
+ * tests/Makefile.am: Added bad-04.nt
+
+ * tests/bad-04.nt: Test for non-terminated URI
+
+ * raptor_libxml.c (raptor_libxml_warning,raptor_libxml_error):
+ Validate the ctx pointer
+ returned since sometimes it is a ctx, sometimes ctx->userData. The
+ latter is what is expected.
+
+ * tests/Makefile.am: Oops, run bad ntriples tests in N-Triples mode
+
+ * rapper.1: Added --version/-v
+
+ * rdfdump.c: Tidied up option error handling, messages.
+ Added --version/-v
+
+2003-08-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac:
+ Added --with-dmalloc option default auto for maintainer, no otherwise.
+
+2003-08-25 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: Bumped version to 0.9.13
+
+ * Snapshotted raptor_0_9_12 for 0.9.12 release
+
+ * NEWS.html: Updated for 0.9.12
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ With rdf:datatype, do not lose the
+ URI string pointer. For rdf:ID, do not allocate the URI twice.
+
+ * raptor_parse.c (raptor_generate_statement):
+ Do not set language when a datatype is given.
+
+ * raptor_xml_writer.c (raptor_new_xml_writer):
+ Initialise writer buffer to an empty string
+ to start (i.e. just \0).
+ (raptor_xml_writer_start_element): Now assume buffer is always
+ present, remove empty buffer case.
+ (raptor_xml_writer_end_element,raptor_xml_writer_cdata): Handle 0
+ length case, no strncpy.
+
+ * tests/Makefile.am: Added ex-51.
+ Fix daml+oil test.
+
+ * tests/ex-51.out, tests/ex-51.rdf: Check empty XML literal works
+
+ * tests/ex-41.out: No language for datatyped literals.
+
+ * tests/daml-oil.rdf, tests/daml-oil.out, tests/Makefile.am:
+ Updated to DAML+OIL schema 2001-03 as defined in
+ http://www.daml.org/2001/03/daml+oil-index.html
+
+ * tests/daml-oil.out, tests/daml-oil.rdf: Added 2000-11-30
+ http://www.cs.man.ac.uk/%7Ehorrocks/DAML-OIL/daml-oil.rdf
+
+ * tests/owl-schema.rdf, tests/owl-schema.out:
+ Updated OWL schema http://www.w3.org/2002/07/owl to match
+ that given in OWL Reference 2003-08-18 CR
+ at http://www.w3.org/TR/2003/CR-owl-ref-20030818/#appB
+
+ * libraptor.3: Updated for 0.9.12
+
+2003-08-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * NEWS.html: Updates for 0.9.12
+
+ * TODO.html: URI#frag used as URI in retrievals now
+
+ * Makefile.am: Remove -static from test links
+
+ * raptor_uri.c (main): Test xmlbase and retrievable URI tranforms.
+
+ * raptor_uri.c (raptor_uri_resolve_uri_reference): Handle #s
+ relative to a uri-reference with a #fragment.
+
+ * raptor_www.c:
+ (raptor_www_fetch) Use raptor_new_uri_for_retrieval to ensure
+ that the URI-reference fragments are removed, and the URI path
+ exists.
+
+ * raptor.h: Added raptor_new_uri_for_retrieval
+
+ * raptor_uri.c (raptor_new_uri_for_retrieval): Added, strips
+ fragments and ensures / path is present.
+
+ * INSTALL.html: Builds on Alpha Linux 2.2
+
+ * raptor_xml_writer.c
+ (raptor_xml_writer_start_element,raptor_xml_writer_end_element):
+ Use size_t for lengths.
+
+ * raptor_xml_writer.c (raptor_xml_writer_start_element):
+ Set content_element_seen in parent only if there is a parent.
+ (raptor_xml_writer_end_element): Change current_element to parent
+ only if there is a current element.
+
+ * TODO.html: NFC checks
+
+ * tests/Makefile.am:
+ Pull out may-fail NFC checks into a separate set and don't exit 1
+ if they do fail. Failure is possible since it requires GNOME glib2
+ which isn't always available.
+
+2003-08-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c (raptor_check_ordinal): parentheses just for gcc
+
+2003-08-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_xml_writer.c:
+ (raptor_xml_writer_end_element) Reset the current_element pointer
+ on finishing. Makes any succeeding cdata do the right thing.
+
+ * rdfdump.c: Inside redland, don't call raptor_init/finish, it's
+ done by redland's world.
+
+2003-08-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c (raptor_rss_parse_chunk):
+ Stop working after a user abort of the parser.
+
+ * raptor_general.c (raptor_check_ordinal): c is not const
+
+ * rdfdump.c, raptor_xml_writer.c, raptor_xml.c,
+ raptor_www_libwww.c, raptor_utf8.c, raptor_uri.c, raptor_set.c,
+ raptor_sax2.c, raptor_qname.c, raptor_parse.c, raptor_namespace.c,
+ raptor_locator.c, raptor_libxml.c, raptor_identifier.c,
+ raptor_general.c, ntriples_parse.c: Move dmalloc includes into
+ raptor_internal.h and use everywhere.
+
+ * raptor_internal.h:
+ Add raptor dmalloc includes here to ensure all raptor code uses it
+ or not consistently.
+
+ * TODO.html: +URI retrieval
+
+2003-08-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Added warn-03
+
+ * tests/warn-03.rdf: Handle deleting of default namespaces
+
+ * raptor_parse.c (raptor_xml_start_element_handler): Handle when a
+ name has a namespace but that namespace has no URI such as
+ xmlns="". In that case, the element has non-namespaced parts too,
+ so skip.
+
+ * ntriples_parse.c (raptor_ntriples_parse_line):
+ Casts so isspace calls get int args.
+
+ * raptor_uri.c (raptor_uri_is_absolute):
+ Cast so isalpha and isalnum get int args.
+
+ * tests/Makefile.am: Added ex-50
+
+ * tests/ex-50.out, tests/ex-50.rdf: Check parseType with unknown value
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ Handle parseType="Literal"
+ without duplicating code.
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ Handle parseType="...." which
+ isn't any of the other known types identically to
+ parseType="Literal".
+
+ * raptor_general.c (raptor_check_ordinal):
+ Return <0 on failure such as no legal
+ characters at all.
+
+ * raptor_internal.h: Added raptor_check_ordinal.
+
+ * ntriples_parse.c (raptor_ntriples_generate_statement): Make
+ RAPTOR_IDENTIFIER_TYPE_ORDINAL predicates for property URI strings
+ that match the rdf:_<n> pattern with n a decimal integer>0.
+
+ * raptor_parse.c: Use raptor_check_ordinal for checking <n> in rdf:_<n>
+
+ * raptor_general.c (raptor_check_ordinal): Check the <n> in rdf:_<n>
+
+ * raptor_general.c (raptor_vsnprintf):
+ Non-portable use of va_list fixed by copying the
+ arguments with va_copy before passing to vsnprintf calls. The
+ symptom was crashes on some architectures where this mattered, such
+ as powerpc.
+
+2003-08-07 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c (raptor_parse_uri_with_connection):
+ Return failure status.
+
+2003-08-03 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Added bad N-Triples tests bad-0[0-3].nt and checks
+
+ * tests/bad-00.nt, tests/bad-01.nt, tests/bad-02.nt, tests/bad-03.nt:
+ Bad N-Triples
+
+ * ntriples_parse.c: raptor_ntriples_term_class Added for:
+ (raptor_ntriples_term_valid): Checking validity of a ntriples term -
+ this could be inlined.
+ (raptor_ntriples_string) Renamed to:
+ (raptor_ntriples_term) Use raptor_ntriples_term_valid.
+ (raptor_ntriples_parse_line): Add more checks that whitespec exists
+ between ntriples terms.
+ Error to have typed literals with languages.
+
+ * tests/test.out, tests/test.nt:
+ Updated to remove language from typed literals
+
+ * raptor_general.c (raptor_print_statement_detailed):
+ Fix datatype uri output <uri> not <uri<
+
+2003-07-31 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html:
+ 'make check' shouldn't fail on NFC checks that will never work.
+
+ * raptor_general.c (raptor_parser_simple_error):
+ Call raptor_parser_error_varargs, don't
+ lose the arguments.
+
+2003-07-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: Bumped version to 0.9.12
+
+ * Snapshotted raptor_0_9_11 for 0.9.11 release
+
+ * NEWS.html, README.html: words
+
+ * raptor_sax2.c: struct nsd: use size_t for length.
+
+ * configure.ac:
+ Ensure the libxml2 xmlReader API is new enough (2.5.0+) such as
+ having xmlParserSeverities.
+
+ * NEWS.html: More updates for 0.9.11
+
+2003-07-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h: Update raptor_generate_id_handler to take user_bnodeid arg.
+
+ * raptor_rss.c:
+ Update calls of raptor_generate_id with user_bnodeid (NULL for
+ existing calls)
+
+ * raptor_parse.c:
+ Update calls of raptor_generate_id with user_bnodeid (NULL for
+ existing calls)
+ Use it to wrap the rdf:nodeID values for subject and object cases.
+
+ * raptor_internal.h: raptor_generate_id updated to add user_bnodeid
+
+ * raptor_general.c (raptor_set_generate_id_handler):
+ Document final argument
+ user_bnodeid from the rdf:nodeID attribute value.
+ (raptor_default_generate_id_handler): Add user_bnodeid, return it if
+ present.
+ (raptor_generate_id): Add user_bnodeid and pass on.
+
+ * NEWS.html, README.html: words
+
+ * README.html: Style.
+ RSS tag soup rewording
+
+ * README.html, INSTALL.html: Updated for 0.9.11 release
+
+ * raptor_internal.h: Added raptor_xml_writer_comment
+
+ * TODO.html: NFC checking done.
+ Exclusive XML C14N done.
+
+ * raptor_namespace.c (raptor_namespace_copy):
+ Don't copy uri and then lose it.
+
+ * raptor_xml_writer.c:
+ Added current_element for tracking empty/not empty elements.
+ (raptor_xml_writer_comment): Added, just concatenating the content
+ via raptor_xml_writer_cdata.
+
+ * raptor_parse.c (raptor_xml_comment_handler):
+ Call raptor_xml_writer_comment inside
+ parseType="Literal"
+
+ * raptor_xml_writer.c: raptor_xml_writer gains stack depth.
+ (raptor_free_xml_writer): Clear any content_cdata before finishing.
+ (raptor_xml_writer_start_element)
+ Add depth to raptor_format_sax2_element calls. Increase it
+ (raptor_xml_writer_start_element,raptor_xml_writer_end_element):
+ Add depth to raptor_format_sax2_element calls. Decrease it
+ and raptor_namespaces_end_for_depth each time.
+
+ * raptor_namespace.c:
+ Moved error_handler and error_data arguments around.
+ (raptor_namespaces_start_namespace) Gets those as arguments
+ (raptor_namespaces_start_namespace) Added, simpler version of _full
+ (raptor_namespaces_start_namespace_full) Added, was the old interface
+ but less error arguments.
+ (raptor_namespaces_namespace_in_scope): Fix namespace URI comparison.
+ (raptor_namespace_new) Looses error arguments.
+ (raptor_namespace_copy) Added, copy to a new stack with a new depth.
+
+ * raptor_sax2.c (raptor_format_sax2_element):
+ Gain stack depth argument.
+ Only use namespace declarations when there is a namespace stack
+ present.
+ copy namespaces to new stack when new ones are needed.
+
+ * raptor_internal.h:
+ Add error_handler and error_data to namespace_stack.
+ raptor_namespaces_start_namespace gets those as arguments
+ raptor_namespace_new looses them
+ raptor_namespaces_start_namespace takes less args
+ raptor_namespaces_start_namespace_full added
+ raptor_namespace_copy added
+ content_cdata_seen and content_element_seen back into sax2_element
+
+ * raptor_parse.c:
+ Moved content_cdata_seen and content_element_seen back into sax2_element
+ Update for new raptor_namespaces_start_namespace calling convention.
+
+ * raptor_xml_writer.c: Debug
+
+ * raptor_namespace.c (raptor_namespaces_format):
+ Fix missing counting : when present
+
+ * tests/ex-11.rdf, tests/ex-11.out:
+ Updated to declare the html namespace as default, expect it in the
+ N-Triples output.
+
+ * raptor_namespace.c (raptor_namespaces_namespace_in_scope):
+ Added, checking if a given
+ namespace is declared in scope.
+ (raptor_namespaces_format): Added, returning a string to declare
+ the given namespace.
+
+ * raptor_xml_writer.c:
+ (raptor_xml_writer_start_element,raptor_xml_writer_end_element):
+ Updated for raptor_format_sax2_element new arguments
+
+ * raptor_sax2.c (raptor_format_sax2_element):
+ Add raptor_namespace_stack argument.
+ Create xmlns declarations for elements not declared in the current
+ stack state, using raptor_namespaces_format to create the string.
+
+ * raptor_internal.h:
+ Added prototypes for raptor_namespaces_namespace_in_scope,
+ raptor_namespaces_format
+ raptor_format_sax2_element now takes a raptor_namespace_stack
+
+2003-07-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_internal.h: raptor_xml_writer prototypes take unsigned char*
+
+ * raptor_parse.c: Move the code building parseType="Literal" strings to
+ raptor_xml_writer class.
+ (raptor_cdata_grammar): Added, just for symmetry mostly, with most
+ code taken from raptor_xml_cdata_handler.
+
+ * raptor_xml_writer.c:
+ Move the code building parseType="Literal" strings to
+ raptor_xml_writer class.
+
+ * Makefile.am: Added raptor_xml_writer.c
+
+ * raptor_xml_writer.c: Initial version
+
+ * raptor_parse.c:
+ Split content_cdata fields between sax2_element & (RDF/XML
+ specific) element.
+ raptor_element: Add xml_writer field.
+ Various calls changed to use the new raptor_simple_message_handler
+ for error handling implemented as raptor_parser_simple_error here.
+ (raptor_xml_parser_simple_error_handler): Added, matching the
+ raptor_simple_message_handler API and calling raptor_parser_error.
+ (raptor_start_element_grammar): When parseType="Literal" appears,
+ create a new raptor_xml_writer.
+ (raptor_end_element_grammar): When parseType="Literal" ends, delete
+ the raptor_xml_writer.
+
+ * raptor_sax2.c (raptor_format_sax2_element):
+ Use raptor_simple_message_handler.
+
+ * raptor_general.c (raptor_start_parse):
+ Use raptor_parser_simple_error with
+ raptor_namespaces_init.
+ (raptor_parser_simple_error): Added, matching the
+ raptor_simple_message_handler API but same as raptor_parser_error.
+
+ * raptor_xml.c (raptor_xml_escape_string):
+ Use raptor_simple_message_handler.
+
+ * raptor_qname.c (raptor_new_qname): Use raptor_simple_message_handler.
+
+ * raptor.h: raptor_sax2_element moved here, semi-public.
+ Re-ordered URI functions earlier.
+ Various methods changed to use (public) raptor_simple_message_handler
+ for error handling.
+
+ * raptor_internal.h: Delete raptor_internal_message_handler.
+ Added prototype raptor_parser_simple_error, implementing
+ raptor_simple_error_handler API.
+ Various methods changed to use (public) raptor_simple_message_handler
+ for error handling.
+ raptor_sax2_element moved to semi-public raptor.h
+ rdf/xml-specific cdata parts moved from raptor_sax2_element to
+ raptor_element.
+ Added raptor_xml_writer functions.
+
+ * raptor_namespace.c:
+ Use (public) raptor_simple_message_handler for error handling.
+
+2003-07-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_process_property_attributes):
+ NFC error message tidy.
+ (raptor_end_element_grammar): Fix NFC error reporting and recovery.
+ Report NFC validation failures for XML Literals
+
+ * tests/Makefile.am: Added bad-15 bad-17 for bad NFC checking
+
+ * tests/bad-16.rdf, tests/bad-17.rdf, tests/bad-15.rdf:
+ Bad NFC tests for property attribute, element, element ptl
+
+ * configure.ac:
+ Added check for g_utf8_normalize in glib 2.0 using pkgconfig.
+ Defines HAVE_G_UTF8_NORMALIZE if present.
+
+ * raptor_internal.h: Added raptor_utf8_is_nfc
+
+ * raptor_parse.c (raptor_process_property_attributes):
+ Check for valid NFC on property
+ attribute values.
+ (raptor_end_element_grammar): Check for valid NFC on plain literal
+ property element values.
+
+ * raptor_utf8.c (raptor_utf8_is_nfc):
+ Added Normal Form C checking, using GNOME glib
+ 2.0 g_utf8_normalize initially.
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ Forbid property attributes and all
+ rdf:* attributes (except rdf:ID) with rdf:parseType
+
+ * raptor_general.c:
+ (raptor_statement_part_as_counted_string, raptor_print_statement_part_as_ntriples):
+ Do not emit language for datatyped literals.
+
+ * raptor_parse.c (raptor_process_property_attributes):
+ rdf:li is forbidden as a
+ property attribute
+
+ * raptor_parse.c:
+ rdf_syntax_terms_info table: rdf:li is forbidden as a property
+ attribute
+
+ * libraptor.3: Updated raptor_set_feature for
+ RAPTOR_FEATURE_ALLOW_BAGID and
+ RAPTOR_FEATURE_ALLOW_RDF_TYPE_RDF_LIST
+
+ * tests/owl-schema.out, tests/ex-39.out:
+ Updated to remove the <idList> rdf:type rdf:List triples
+
+ * raptor_general.c (raptor_set_feature, raptor_set_parser_strict):
+ Added a new feature
+ RAPTOR_FEATURE_ALLOW_RDF_TYPE_RDF_LIST (user argument) and
+ feature_allow_rdf_type_rdf_List (internal) to generate the rdf:type
+ rdf:List triple from rdf:parseType="Collection". The default is no
+ after latest RDF/XML revisions. Not relevant for daml:Collection
+ which get the daml:List always.
+
+ * raptor.h:
+ Added a new feature RAPTOR_FEATURE_ALLOW_RDF_TYPE_RDF_LIST
+ to control rdf:type rdf:List triple generation from
+ rdf:parseType="Collection" (default no)
+
+ * raptor_internal.h:
+ Added a new feature feature_allow_rdf_type_rdf_List
+ to control rdf:type rdf:List triple generation from
+ rdf:parseType="Collection" (default no)
+
+ * raptor_parse.c (raptor_start_element_grammar):
+ Remove rdf:type rdf:List triple
+ generation from rdf:parseType="Collection" by default. Not
+ for daml:Collection. Add a new feature
+ feature_allow_rdf_type_rdf_List to control this.
+
+2003-07-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_xml.c (raptor_valid_xml_ID, raptor_xml_escape_string):
+ unsigned long for all unichars.
+
+ * raptor_internal.h:
+ Update raptor_utf8_to_unicode_char to use unsigned long output.
+
+ * raptor_utf8.c (raptor_utf8_to_unicode_char):
+ Take and use unsigned long for unichars.
+
+ * raptor_rss.c:
+ namespace->nspace since might be a C/C++ keyword sometime
+
+ * raptor_www_curl.c (raptor_www_curl_header_callback):
+ Turn void* into char*
+
+ * raptor_set.c: Casts
+
+ * rdfdump.c (rdfdump_error_handler): Cast data into raptor_parser*
+
+ * raptor_www_curl.c:
+ (raptor_www_curl_write_callback,raptor_www_curl_header_callback):
+ Return unsigned int 0 on failure, cannot return -1 :)
+
+ * raptor_www.c: Some casts near mallocs
+
+ * tests/owl-schema.out: Updated to match 2003-03-18 version.
+
+ * tests/owl-schema.rdf:
+ Updated to 2003-03-18 version (just changed DOS line endings)
+
+ * ntriples_parse.c (raptor_ntriples_parse_chunk):
+ Handle just the end marker being given
+ i.e. len=0 (and possibly s=NULL)
+
+ * raptor_parse.c (raptor_xml_end_element_handler):
+ When parsing has been aborted (rdf_parser->failed), clean up used
+ memory rather than just return.
+ element_name is not used except when debugging, so #ifdef it.
+
+2003-07-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h:
+ Export global statics raptor_copyright_string, raptor_version_string,
+ raptor_version_major, raptor_version_minor, raptor_version_release
+ and raptor_version_decimal
+
+ * raptor_general.c:
+ Added statics raptor_copyright_string, raptor_version_string,
+ raptor_version_major, raptor_version_minor, raptor_version_release
+ and raptor_version_decimal
+
+ * Makefile.am:
+ Removed raptor_cc code since ISO may charge a commercial use fee for
+ this list.
+
+ * raptor_cc.gperf:
+ ISO 3166-1 'The use of ISO 3166-1 in commercial products may be
+ subject to a licence fee.' says the maintenance agency. Goodbye
+ code. See
+ http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/index.html
+
+ * raptor_parse.c:
+ Free former rdf:about, rdf:resource attribute string values before
+ they are zapped.
+
+ * raptor_parse.c (raptor_xml_parse_terminate):
+ Delete the sax2 object when cleaning
+ up.
+
+ * rdfdump.c: Free new uri_string when it's allocated for a filename
+
+ * rdfdump.c: Tidied usage and help information.
+
+ * rapper.1: Updated to match current rapper arguments.
+
+ * Makefile.am: Added raptor_identifier.c
+
+ * raptor_general.c, raptor_identifier.c:
+ Moved raptor_identifer classes to raptor_identifier.c
+
+2003-07-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c:
+ If first argument is a filename, make it into a file:/// uri.
+
+ * raptor_uri.c (raptor_default_new_uri):
+ Turn probably-bad file:filename 'URIs' into
+ proper file:///... etc. ones.
+
+ * raptor_parse.c:
+ Make use of forbidden rdf-namespaced property attributes into errors,
+ as they should be.
+ (raptor_forbidden_propertyAttribute_name): Now used.
+ Reword some error messages.
+
+ * tests/Makefile.am (check-bad-rdf):
+ Note when bad test succeeds instead of failing
+
+ * tests/Makefile.am: Added bad-13, bad-14
+
+ * tests/bad-14.rdf: rdf:Description is not a legal property attribute
+
+ * tests/bad-13.rdf: A property element cannot take rdf:about
+
+ * raptor_uri.c (raptor_new_uri_for_xmlbase): Docs
+
+2003-07-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * libraptor.3: formatting
+
+ * libraptor.3:
+ Added raptor_set_default_generate_id_parameters,
+ raptor_set_generate_id_handler
+
+ * raptor_general.c (raptor_set_default_generate_id_parameters):
+ Fix it right this time.
+
+ * raptor_general.c (raptor_set_default_generate_id_parameters):
+ Fix base so the next
+ generated ID uses the integer given, not integer+1
+
+ * raptor_general.c (raptor_free_parser):
+ Free any user-set genid prefix.
+
+2003-07-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h:
+ raptor_genid_type enum added - for RAPTOR_GENID_TYPE_BNODEID, BAGID
+ Added prototypes for raptor_set_generate_id_handler,
+ raptor_set_default_generate_id_parameters.
+
+ * raptor_general.c (raptor_set_generate_id_handler):
+ Added, to sent the generate ID
+ handler implementation.
+ (raptor_set_default_generate_id_parameters): Added, to sent the
+ generate ID handler parameters for the default implementation
+ ("gen"+integer).
+ (raptor_default_generate_id_handler): Added, moved default code from
+ raptor_generate_id
+ (raptor_generate_id): Use handler if it exists, otherwise the default
+ implementation.
+
+ * raptor_internal.h:
+ Added generate_id_handler data parts to raptor_parser internals.
+
+2003-06-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: use top_builddir not ..
+
+ * Makefile.am: add libraptor.la to rapper dependencies
+
+2003-06-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c:
+ Added -e/--ignore-errors otherwise rapper stops parsing after 1st
+ error using raptor_parse_abort.
+
+2003-06-14 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c (raptor_rss_insert_identifiers):
+ Back to being legal C99.
+
+ * libraptor.3: Fix changes for 0.9.11
+
+ * libraptor.3: Updated for stuff since 0.9.10
+
+ * raptor_rss.c (raptor_rss_insert_identifiers):
+ Init identifier after item
+
+ * rdfdump.c, configure.ac: Tweak RSS Tag Soup parser words
+
+2003-06-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_xml_start_element_handler):
+ Emit an error for namespace
+ declarations that are RDF namespace URI plus some chars. Emit
+ a warning if a namespace is declared same as RDF one but 1 char
+ short.
+
+ * tests/Makefile.am: Added bad-12, warn-02
+
+ * tests/bad-12.rdf, tests/warn-02.out, tests/warn-02.rdf:
+ Check for bad rdf namespace URI declarations and warn if last char
+ of RDF namespace URI omitted
+
+2003-06-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac:
+ Fix the check for RSS parser requirements and report it more
+ verbosely.
+
+ * configure.ac: RSS parser only if libxml/reader.h present (for now).
+
+ * configure.ac: libcurl reporting
+
+ * raptor_parse.c (raptor_xml_parse_chunk_): Use sax2->first_read
+
+ * raptor_parse.c (raptor_xml_parse_start,raptor_xml_parse_chunk_):
+ Don't use
+ first_read on newer libxml2.
+
+2003-06-06 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_internal.h:
+ raptor_sax2_s: Add first_read #if LIBXML_VERSION < 20425
+
+ * raptor_rss.c (raptor_rss_insert_identifiers):
+ Fix GCC-ism, declare variable at
+ start of block.
+
+ * raptor_parse.c (raptor_xml_parse_init):
+ Move declaration of expat xp to start of
+ function.
+
+ * examples/raptor_abort.c, examples/grapper.c, strcasecmp.c,
+ rdfdump.c, raptor_xml.c, raptor_www_test.c, raptor_www_libxml.c,
+ raptor_www_libwww.c, raptor_www_curl.c, raptor_www.c,
+ raptor_win32.c, raptor_utf8.c, raptor_uri.c, raptor_set.c,
+ raptor_sax2.c, raptor_rss.c, raptor_qname.c, raptor_parse.c,
+ raptor_namespace.c, raptor_locator.c, raptor_libxml.c,
+ raptor_general.c, ntriples_parse.c, configure.ac:
+ Merged patch from Jose Kahan to switch to use raptor_config.h
+ (helps people compiling from source with multiple config.h)
+
+2003-06-05 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * examples/grapper.c (fs_ok_button_callback):
+ Use raptor_uri_filename_to_uri_string
+ to make the file URI.
+ (main): If the argument is a filename, make a URI string out of it
+ via raptor_uri_filename_to_uri_string and use it instead of
+ assuming it is a URI.
+
+2003-05-12 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_xml.c (raptor_xml_escape_string):
+ Changed API - does not require a parser arg.
+
+ * raptor_internal.h: Moved SAX2 parts and prototypes here.
+
+ * raptor_general.c: Use RAPTOR_PARSER_RSS to wrap init of RSS parser
+
+ * raptor.h:
+ Changed prototype of raptor_xml_escape_string - does not require a
+ parser arg.
+
+ * raptor_parse.c:
+ Split raptor_element/raptor_rdf_xml_parser into SAX2/RDF bits.
+ Lots of function and structure renaming.
+
+ * configure.ac: Define RAPTOR_PARSER_RSS only when libxml is around
+
+ * raptor_sax2.c: SAX2 API
+
+ * Makefile.am: Added raptor_sax2.c
+
+2003-04-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c (raptor_rss_emit): Use raptor_free_identifier
+
+ * raptor_rss.c (raptor_rss_emit):
+ Properly init the raptor_identifier items
+
+2003-04-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c, raptor_parse.c, ntriples_parse.c:
+ Use raptor_parser_register_factory with label param.
+
+ * raptor.h: Added raptor_get_name, raptor_get_label
+
+ * raptor_general.c: Added parser label to factory
+ (raptor_parser_register_factory): Add label param, copy it.
+ (raptor_get_name): Added, return name of parser.
+ (raptor_get_label): Added, return label of parser.
+
+ * raptor_internal.h: Added parser label to factory
+
+ * examples/grapper.c: Remove some g_printfs
+ Remove use of display qnames - not impl.
+
+ * raptor_general.c (raptor_statement_part_as_counted_string):
+ Init len for literals with
+ the literal len included
+
+ * examples/grapper.c: Don't use triples_list for now.
+ (grapper_model_set_syntax): Fix output.
+ (grapper_model_statements_handler): Remove newlines from literals.
+
+ * raptor_general.c (raptor_statement_part_as_counted_string):
+ Init len for literals.
+
+2003-04-25 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_set.c: fix doccumment
+
+2003-04-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * examples/grapper.c:
+ Replace N-Triples / RDF/XML with dropdown menu and add RSS tag soup.
+
+2003-04-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c: Added -i/--input for rdfxml, ntriples, rss
+
+ * raptor_internal.h: More RAPTOR_DEBUG macros
+
+ * raptor_general.c:
+ (raptor_init) Added rss parser via raptor_init_parser_rss when
+ HAVE_LIBXML_XMLREADER_H
+
+ * Makefile.am: Added raptor_rss.c
+
+ * raptor_rss.c: Raptor RSS parser
+
+2003-04-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * INSTALL.html: Added some links
+
+ * configure.ac: Bumped version to 0.9.11
+
+ * Snapshotted raptor_0_9_10 for 0.9.10 release
+
+ * TODO.html, NEWS.html: Updated for 0.9.10 release
+
+ * INSTALL.html: Updated to reflect recent tests.
+ Added examples section, link to libraptor.html
+ Added more configure options docs.
+
+ * libraptor.3: Added raptor_set_parser_strict
+ Added raptor_www_no_www_library_init_finish
+
+ * raptor.spec.in: Require curl
+ Added raptor-config, raptor.pc
+
+2003-04-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.spec.in: Require curl
+ Added raptor-config, raptor.pc
+
+ * tests/Makefile.am:
+ Move rdf:bagID tests to list of tests with warnings for now (while
+ testing in lax mode)
+
+2003-04-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c (print_statements):
+ Print the program name not "rdfdump" hardcoded.
+
+2003-04-14 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: Check for libxml/xmlreader.h
+
+2003-04-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * examples/grapper.c: Added about box, triples count.
+ Free some allocated memory. Rest seems lost in gtk.
+
+ * examples/Makefile.am: Add AM_CFLAGS, LIBS for debugging
+
+ * raptor_parse.c (raptor_xml_start_element_handler):
+ Don't copy an empty attributes array.
+
+ * configure.ac: Added raptor.pc
+
+ * Makefile.am:
+ Added raptor.pc pkgconfig file installing to $(libdir)/pkgconfig
+
+ * raptor.pc.in: pkgconfig for raptor
+
+2003-04-07 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: words
+
+2003-04-05 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h: void arg
+
+ * examples/raptor_abort.c: Zap curl cleanup.
+
+ * rdfdump.c: Added -c flag to getopts - oops, missed in last release.
+ Added -m/--mode flag to set strict/lax. Check the values and die
+ with usage.
+ Check the legal values of -o/--output and die with usage.
+ Zap curl cleanup.
+
+ * raptor_www.c (raptor_www_no_www_library_init_finish):
+ To control global WWW
+ library init/finish
+
+ * raptor_parse.c:
+ Make bagID optional - removed from language and gives errors
+ (strict), allowed with warnings (lax).
+ lax/strict controlled by feature_allow_bagID
+
+ * raptor_internal.h: Added feature_allow_bagID
+
+ * raptor_general.c: Several more docucomments for functions.
+ (raptor_new_parser): Use raptor_set_parser_strict
+ (raptor_set_feature): Added RAPTOR_FEATURE_ALLOW_BAGID
+ (raptor_set_parser_strict): Added to set strict/lax mode flags.
+
+ * raptor.h: Added RAPTOR_FEATURE_ALLOW_BAGID
+ Added raptor_set_parser_strict
+ Added raptor_www_no_www_library_init_finish
+
+2003-04-03 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Added warn-01
+
+ * tests/warn-01.out, tests/warn-01.rdf:
+ Check warning on non-prefixed property elements
+
+2003-04-03 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c, tests/Makefile.am (raptor_xml_start_element_handler):
+ Error recovery - try to hide that a bad element was found from a
+ parent element, it thinks the element is empty. See
+ tests/warn-00.rdf
+
+ * tests/warn-00.out, tests/warn-00.rdf: Check warnings
+
+2003-04-02 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac, Makefile.am: debian dir elsewhere
+
+2003-04-01 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: docs updated
+
+ * TODO.html: www tidy by default on raptor_finish
+
+ * raptor_uri.c (raptor_uri_uri_string_to_filename):
+ Use raptor_strcasecmp
+ (raptor_uri_is_file_uri): Use raptor_strncasecmp
+
+2003-03-31 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * README.html: added libraptor.html
+
+ * Makefile.am: Added libraptor.html, fix-groff-xhtml
+
+ * libraptor.3: deleted repeated URI METHODS
+
+ * libraptor.3: Updated for 0.9.6->present
+
+2003-03-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * examples/grapper.c: Use N-triples output style.
+ Pass in URL command line argument
+
+ * TODO.html: words
+
+ * TODO.html: XML attribute bugs
+
+ * Makefile.am: Added raptor_xml.c
+
+ * raptor_parse.c (raptor_xml_start_element_handler):
+ do XML attribute value
+ normalization for libxml2. Cannot be done properly since the type of
+ the attribute is lost. expat gets it right.
+ (raptor_xml_parse_init): Cast for expat XML_SetExternalEntityRefHandler
+
+ * raptor_xml.c:
+ Updated for C14N text/attribute node encoding rules. Don't de-UTF8
+ at the same time.
+
+ * tests/ex-49.out: > in attribute appears raw
+
+ * raptor_general.c:
+ (main) Moved raptor_validate_xml_ID, raptor_xml_escape_string test
+ code to raptor_xml.c
+
+ * raptor_xml.c: Raptor XML routines
+
+ * raptor_general.c:
+ Moved raptor_validate_xml_ID, raptor_xml_escape_string to raptor_xml.c
+
+ * tests/Makefile.am: Added ex-49
+
+ * tests/ex-49.out, tests/ex-49.rdf:
+ Checking escaping in parseType Literal values with XML attributes
+
+ * raptor_parse.c (raptor_format_element):
+ Pass in parser for UTF-8 error handling.
+ Use raptor_xml_escape_string for attribute values but
+ only malloc/free if lengths changed.
+ (raptor_xml_end_element_handler): Update to new
+ raptor_xml_escape_string API and only malloc/free it if lengths
+ changed.
+
+ * raptor_parse.c (raptor_xml_cdata_handler):
+ Use updated raptor_xml_escape_string API
+
+ * raptor.h: Added raptor_statement_part_as_counted_string,
+ raptor_statement_part_as_string
+ Changed raptor_xml_escape_string API
+
+ * raptor_general.c (raptor_statement_part_as_counted_string,
+ raptor_statement_part_as_string): Added, making N-triples style
+ output from parts of raptor_statement.
+ (raptor_xml_escape_string): Change API to take an existing
+ buffer/calculate length
+ (main): Update for raptor_xml_escape_string.
+
+ * examples/Makefile.am: Also clean grapper binary
+
+2003-03-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * examples/grapper.c: Added N-Triples parsing
+
+ * examples/Makefile.am: Don't build grapper usually
+
+ * examples/grapper.c: Raptor GTK GUI example code
+
+ * examples/Makefile.am: Added grapper.c
+
+ * examples/Makefile.am: more deps
+
+ * raptor_internal.h:
+ Added raptor_print_statement_part_as_ntriples prototype
+
+ * raptor_general.c:
+ raptor_print_ntriples_string moved to raptor_general.c
+ (raptor_print_statement_part_as_ntriples): Added, internal.
+ (raptor_print_statement_as_ntriples): Now uses above.
+
+ * ntriples_parse.c:
+ raptor_print_ntriples_string moved to raptor_general.c
+
+2003-03-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * examples/Makefile.am: another deps attempt
+
+ * examples/Makefile.am: typo
+
+ * examples/Makefile.am: Use LDADD and hunt for @REDLAND_LIBS@
+ Added $(top_builddir)/../librdf/librdf.la
+
+ * configure.ac: Hunt for librdf.la in abs dir
+
+ * rapper.1: added -c/--count
+
+ * examples/Makefile.am: Fixes to make cross-dir building work.
+
+ * TODO.html: docs
+
+ * configure.ac, Makefile.am: Added examples dir
+
+ * raptor_general.c (raptor_parse_uri_with_connection): Added.
+ (raptor_parse_abort): Added.
+
+ * raptor.h: Added raptor_parse_uri_with_connection.
+ Added raptor_parse_abort.
+
+ * examples/raptor_abort.c, examples/Makefile.am: examples
+
+ * rdfdump.c:
+ Call curl_global_cleanup if using curl to free it's resources.
+
+ * raptor_www.c (raptor_www_init,raptor_www_finish):
+ Don't init/cleanup curl, we
+ can't guarantee doing this at most once if a handle is passed in.
+
+ * raptor_www_curl.c (raptor_www_curl_free): Tidy
+
+ * raptor_www_curl.c (raptor_www_curl_init,raptor_www_curl_free):
+ Use/mark field
+ curl_init_here to note when to cleanup a handle - don't destroy one
+ that was provided.
+
+ * raptor_internal.h:
+ for curl, record when curl_easy_init was done in raptor
+
+ * raptor_general.c (raptor_init): Call raptor_www_init
+ (raptor_finsh): Call raptor_www_finish
+ (raptor_parse_uri): Delete www object on failure.
+
+ * configure.ac: Bumped version to 0.9.10
+
+ * Snapshotted raptor_0_9_9 for 0.9.9 release
+
+ * NEWS.html, README.html: Updated for 0.9.9 release
+
+2003-03-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: fixed crashing when rdf/xml parser has no base URI
+
+2003-03-26 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_set.c: Only use raptor_set_stats_print with RAPTOR_DEBUG
+
+ * raptor_general.c: Some comment tidying.
+ (raptor_start_parse): Docucomment. Copy the uri into the parser
+ structure (base_uri, locator uri), don't just keep the pointer.
+ (raptor_free_parser): Free the base URI in the structure, if
+ present.
+
+ * raptor_parse.c (raptor_xml_parse_start):
+ Remove uri arg. Fail if no base URI is
+ given - stored in the parser object
+
+ * ntriples_parse.c (raptor_ntriples_parse_start): Remove uri arg.
+
+ * raptor_internal.h:
+ raptor_parser_factory start method: Remove (base) uri arg, it's in
+ the object data.
+
+ * raptor_www.c: Use RAPTOR_FREE,MALLOC,CALLOC
+ (raptor_www_free): Free the www object. Doh.
+
+ * TODO.html:
+ raptor_start_parse crash with NULL base URI for rdfxml parser
+
+ * libraptor.3: raptor_parse_chunk: Takes unsigned char buffer.
+
+ * libraptor.3: raptor_start_parse: Note NULL base URI ok for ntriples
+
+ * libraptor.3: Typo: raptor_start_parse not raptor_parse_start
+
+ * raptor_general.c (raptor_xml_escape_string):
+ Make it work with 10ffff again
+
+ * raptor_parse.c (raptor_xml_cdata_handler):
+ Cast around raptor_xml_escape_string
+
+ * raptor_general.c (raptor_xml_escape_string):
+ Null terminate new string
+
+ * raptor_www_libxml.c, raptor_www.c:
+ Use RAPTOR_WWW_BUFFER_SIZE for I/O buffers
+
+ * raptor_internal.h: Define RAPTOR_WWW_BUFFER_SIZE for I/O buffers
+
+ * rdfdump.c: Declare raptor_stats_print when RAPTOR_DEBUG
+
+ * raptor_general.c: (raptor_stats_print) C99
+
+2003-03-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c: Call raptor_stats_print with RAPTOR_DEBUG
+
+ * raptor_set.c: Record set hits/misses with RAPTOR_DEBUG
+ (raptor_set_stats_print): Defined with RAPTOR_DEBUG
+
+ * raptor_internal.h:
+ Move raptor_xml_parser typedef here (still internal).
+ raptor_xml_parser_stats_print, raptor_set_stats_print: Defined with
+ RAPTOR_DEBUG
+
+ * raptor_parse.c (raptor_xml_parser_stats_print):
+ Defined with RAPTOR_DEBUG
+
+ * raptor_general.c (raptor_stats_print): Defined with RAPTOR_DEBUG
+
+ * TODO.html: Fixed escaping rdf:parseType="Literal" content
+
+ * raptor_parse.c (raptor_xml_cdata_handler):
+ Use raptor_xml_escape_string when content
+ type is an XML literal
+
+ * raptor_general.c (raptor_xml_escape_string):
+ Now takes and returns lengths
+ Fix assumption of '\0' terminated strings.
+ (main): Update for counted strings
+
+ * raptor.h: raptor_xml_escape_string now takes and returns lengths
+
+ * raptor.h: Added raptor_xml_escape_string
+
+ * Makefile.am: Added raptor_general_test
+
+ * raptor_general.c (raptor_xml_escape_string):
+ Added, XML-escapes UTF-8 strings.
+ (main): Added set of tests for raptor_xml_escape_string
+
+2003-03-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/ex-48.out, tests/ex-48.rdf:
+ ex-48 parse type literal with entity encoding
+
+ * tests/Makefile.am: Added ex-48
+
+ * raptor_www_libxml.c (raptor_www_libxml_fetch): Make this work again
+
+ * raptor_parse.c (raptor_record_ID): Dealloc item after adding
+
+ * raptor_parse.c: typo
+
+ * raptor_parse.c:
+ Remove raptor_id_list implementation for ID checking to use raptor_set.
+ (raptor_xml_parse_init): Init raptor_set for ids.
+ (raptor_xml_parse_terminate): Use raptor_free_set.
+ (raptor_record_ID): Use raptor_set_add to check for unique
+ "ID base-URI"
+ (raptor_free_ID_list): Gone
+
+ * raptor_uri.c (raptor_default_uri_as_counted_string,
+ raptor_uri_as_counted_string):
+ Added and used in default factory.
+
+ * raptor.h: Added raptor_uri_as_counted_string.
+
+ * raptor_internal.h:
+ Added raptor_set and raptor_new_set constructor, raptor_free_set
+ destructor and raptor_set_add only method
+
+ * Makefile.am: Added raptor_set.c, raptor_set_test
+
+ * raptor_set.c: Raptor sets for ID checking
+
+2003-03-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Added OWL namespace document / rdf schema
+ owl-schema.rdf, owl-schema.out
+
+ * raptor_www.c: init w3c libwww
+
+ * tests/owl-schema.out, tests/owl-schema.rdf: OWL namespace schema
+
+ * TODO.html: Bug: encoding & < and > in XML literals.
+
+ * raptor_www_libwww.c: add fatal does-not-work error
+
+2003-03-18 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_www_libwww.c: Raptor WWW with W3C libwww
+
+ * rdfdump.c:
+ Added -c/--count option to just count triples, don't print anything.
+
+ * raptor_www_test.c: Use raptor_www_init/finish
+
+ * raptor_www_libxml.c: Handle www->failed and aborting transfer.
+
+ * raptor_www_curl.c: Handle www->failed and aborting transfer.
+ (raptor_www_curl_init): Use passed-in connection if available.
+
+ * raptor_www.c (raptor_www_init): Added, for once-only init.
+ (raptor_www_finish): Added, for once-only tidy.
+ (raptor_www_new): Now uses new constructor
+ (raptor_www_new_with_connection): Added, allows re-use of existing
+ www library connection - just curl at present.
+ (raptor_www_get_connection): Added, returns current libwww library
+ connection.
+ (raptor_www_abort): Added to stop a www transaction.
+ (raptor_www_file_fetch): Tidying of errors; handle abort.
+ (raptor_www_fetch): Uses raptor_www_file_fetch for all files.
+
+ * raptor_internal.h: Added W3C libwww prototypes.
+
+ * raptor_parse.c:
+ Throughout all SAX event handlers - if rdf_parser->failed set, return
+ immediately, doing no work.
+
+ * raptor_general.c (raptor_parse_uri_write_bytes):
+ Use raptor_www_abort if parsing
+ fails.
+ (raptor_parse_uri): Return error status. Pass on is_end empty chunk.
+ (raptor_parser_abort): Added, setting failed flag.
+ (raptor_print_statement_detailed): Typo
+
+ * raptor.h: Added raptor_www_abort
+
+ * raptor.h: Add raptor_www_init, raptor_www_finish.
+ Add raptor_www_new_with_connection
+ Add raptor_www_get_connection
+
+ * configure.ac: Added w3c libwww configuring
+
+2003-03-16 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c: Use raptor_parse_uri
+
+ * raptor_general.c (raptor_parse_uri_write_bytes): Added, to support:
+ (raptor_parse_uri): Added, using raptor_www to get and deal with all
+ the data in one go.
+
+ * raptor.h: raptor_parse_uri takes optional base_uri
+
+ * raptor_www_test.c: Use URI from context.
+ Take www arg on handlers
+ Use raptor_uri
+
+ * raptor_www_libxml.c, raptor_www_curl.c:
+ Use URI from context.
+ Take www arg on handlers
+
+ * raptor_www.c (raptor_www_set_userdata): Gone
+ (raptor_www_free): Free request uri
+ (raptor_www_set_write_bytes_handler,
+ raptor_www_set_content_type_handler): Added
+ (raptor_www_file_fetch): pass www to write_bytes
+ (raptor_www_fetch): Don't pass URI on.
+
+ * raptor_internal.h: Store raptor_uri of request
+ Use new declared write_bytes, content_type handlers
+ *fetch methods don't take URI string
+
+ * raptor.h: Declare handlers for raptor www write bytes, content type
+ raptor_www_fetch now takes a raptor_uri
+
+ * raptor_parse.c: Fix broken-fix for broken-expat UTF8 BOM crash.
+ tokens_count is on the rdf_xml_parser not rdf_parser
+
+ * configure.ac: tweak
+
+ * configure.ac: tidy libcurl version
+
+ * raptor_internal.h, configure.ac: No more gnome-xml/libxml.h
+
+ * configure.ac: Min libxml2 now 2.4.0
+
+ * configure.ac: Don't look for xml-config
+
+ * raptor_general.c (raptor_parse_file):
+ Tidy up if raptor_start_parse fails
+
+ * raptor_general.c:
+ Removed raptor_start_parse_file - merged into raptor_parse_file
+
+ * raptor_www.c (raptor_www_file_fetch): Used for RAPTOR_WWW_NONE
+ Report file open errors, correct file read eof handling.
+ (raptor_www_fetch) Use only raptor_www_file_fetch for RAPTOR_WWW_NONE
+
+ * raptor_general.c (raptor_start_parse_file):
+ Improve file open error message
+
+ * configure.ac:
+ Added --with-www=none option and RAPTOR_WWW_NONE to indicate it
+
+2003-03-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_www.c (raptor_www_error): Use RAPTOR_FREE
+
+ * raptor_www_test.c: Call raptor_uri_init
+
+ * raptor_www_curl.c (raptor_www_curl_fetch): call raptor_www_error
+
+ * raptor_internal.h: Use raptor_message_handler again
+
+ * raptor.h:
+ Use raptor_message_handler again in raptor_www_set_error_handler,
+ raptor_www_error
+
+ * raptor_www.c (raptor_www_free): Tidy locator URI
+ (raptor_www_set_error_handler, raptor_www_error): Use
+ raptor_message_handler again.
+ (raptor_www_error): Use raptor_locator in output, error handler.
+ (raptor_www_fetch): Store the URI string of request in the locator
+
+ * raptor.h: Declare raptor_www_message_handler (no locator)
+
+ * raptor_general.c: raptor_vsnprintf now internally visible.
+
+ * raptor_internal.h: Use different error handler, no parser context.
+ raptor_vsnprintf now internally visible.
+ Added raptor_www_error prototype
+
+ * raptor_www.c: Only enable raptor_www_file_fetch with libxml,
+ (raptor_www_set_error_handler): Use different error handler, no
+ parser context.
+
+ * configure.ac, Makefile.am: Added raptor WWW enabling, configuring
+
+ * raptor_internal.h:
+ Added raptor WWW retrieval internal includes, structs, prototypes
+
+ * raptor.h: Added raptor WWW retrieval prototypes
+
+ * raptor_www.c, raptor_www_curl.c, raptor_www_libxml.c,
+ raptor_www_test.c: Raptor WWW retrieval
+
+2003-03-04 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h: Export raptor_free_parser with RAPTOR_API
+
+ * win32_config.h: add trailing #endif
+
+ * win32_config.h: s/WIN32_LEAD_AND_MEAN/WIN32_LEAN_AND_MEAN/
+
+ * raptor_parse.c (raptor_xml_comment_handler): Added - nop at present.
+ (raptor_xml_parse_init): For expat, use raptor_xml_comment_handler
+
+ * raptor_libxml.c: (raptor_libxml_init) Use raptor_xml_comment_handler
+
+ * raptor_internal.h: Add raptor_xml_comment_handler prototype
+
+ * configure.ac:
+ Try to make maintainer mode flags match redland's defaults.
+
+2003-03-03 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac, Makefile.am: Fix cflags/cppflags when in redland
+
+2003-03-02 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/ex-46.out, tests/ex-46.rdf:
+ make rdf:li and rdf_2 property elements generate different triples
+
+2003-02-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/ex-46.out: fix
+
+ * tests/Makefile.am: Added ex-47
+
+ * tests/ex-47.out, tests/ex-47.rdf: Exercise all rdfs vocab
+
+ * tests/Makefile.am: Added ex-46
+
+ * tests/ex-46.out, tests/ex-46.rdf: Exercise all rdf vocab
+
+2003-02-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * win32/raptor.plg, win32/Makefile.am: deleted raptor.plg
+
+ * win32/raptor.dsp, win32/README:
+ Updated win32 config - from contributed patches
+
+2003-02-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c: Correct :'s turning into |'s in win32 file URIs
+
+2003-02-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * autogen.sh: run libtoolize in each configure.ac dir
+
+ * win32_config.h: win32 has C99 compatible vsnprintf called _vsnprintf
+
+ * configure.ac:
+ Check for vsnprintf and check for C99 compatible return value.
+
+ * raptor_general.c (raptor_vsnprintf):
+ Added for handling compatibilty with vsnprintf
+ that doesn't match C99.
+
+2003-02-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Use $(ECHO) which may be different from sh's echo
+
+ * Makefile.am:
+ Changing, moved raptor_getopt.h to rapper_SOURCES after automake
+ manual recommendation.
+
+ * Makefile.am: Put raptor_getopt.h in noinst_HEADERS
+
+ * Makefile.am: No need for EXTRA_libraptor_la_SOURCES
+
+ * Makefile.am: Use LTLIBOBJS for extra libraptor objs
+
+ * raptor.h: again
+
+ * raptor.h: don't do deprecated on broken OSX gcc
+
+ * raptor_getopt.h, getopt.c: No need for prefix
+
+ * getopt.c: Duh - use raptor getopt header
+
+ * Makefile.am:
+ Use RAPPER_EXTRA_OBJS to optionally add getopt to rapper only
+
+ * configure.ac: Add getopt object to RAPPER_EXTRA_OBJS
+
+ * rdfdump.c: Add raptor_getopt.h for local version
+
+ * raptor_getopt.h: Define rest of getopt externs
+
+ * getopt.c: More prefixes
+
+ * raptor_getopt.h, getopt.c: Public domain getopt
+
+ * configure.ac: Check for getopt and add getopt.o if it missing.
+
+ * autogen.sh:
+ try asking the progs for their version - slower, but right
+
+ * autogen.sh: tidying
+
+ * acconfig.h: acconfig.h obsoleted
+
+ * Makefile.am: Use AM_CPPFLAGS
+
+ * autogen.sh:
+ Min versions are bumpled - 2.52 for autoconf, 1.6 for automake
+ Now hunts for newest, shinyest autoconf and automake/aclocal and uses
+ them whatever is available.
+
+2003-02-18 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: autoconf 2.5x configure.ac
+
+ * configure.in: Replaced with autoconf 2.5x configure.ac
+
+2003-02-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h: Move stuff around, consolidate deprecated bits
+
+ * ntriples_parse.c, rdfdump.c: No need for ntriples.h
+
+ * raptor.h: Moved all ntriples.h defines here.
+ Defined RAPTOR_DEPRECATED (with gcc 3.1+) and used on old api calls.
+
+ * ntriples.h:
+ Moved all definitions to raptor.h - this file is now deprecated.
+
+2003-02-14 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor-config.in: No exec-prefix
+
+ * raptor-config.1: Manual page for raptor-config
+
+ * Makefile.am: Added raptor-config.1
+
+ * rapper.1: EXAMPLE
+
+2003-02-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: $name=>$$name
+
+ * configure.in: Bumped version to 0.9.9
+
+ * Snapshotted raptor_0_9_8 for 0.9.8 release
+
+ * raptor.spec.in: release is 1
+
+ * NEWS.html: Updated for 0.9.8 release
+
+2003-02-12 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Restore LICENSE.txt
+
+ * Makefile.am: No LICENSE.txt in dist
+
+ * README.html: Updated for 0.9.8 release.
+
+ * TODO.html: Note some missing conformance bits.
+
+ * raptor_uri.c (main):
+ Use lstat, reading a selection of dirs to try harder to test
+ relative file URIs.
+
+ * configure.in: check for sys/stat.h (for raptor_uri_test main)
+
+ * TODO.html: Note PNG parser
+
+ * tests/Makefile.am: There is no portable test == operator
+
+ * TODO.html: Fixed xmlns:foo="" being erroneously allowed.
+
+ * raptor_parse.c (raptor_xml_start_element_handler): Updated call to
+ raptor_namespaces_start_namespace to use error_handler, error_data
+ parameters
+
+ * raptor_general.c (raptor_start_parse):
+ Updated call to raptor_namespaces_init to use
+ error_handler, error_data parameters
+
+ * raptor_internal.h:
+ Updated raptor_namespaces_init, raptor_namespaces_start_namespace,
+ raptor_namespace_new with error_handler, error_data parameters
+
+ * raptor_namespace.c: (raptor_namespaces_init,
+ raptor_namespaces_start_namespace, raptor_namespace_new):
+ Add error handler and data parameters and use to explain how
+ xmlns:foo="" isn't allowed
+
+2003-02-11 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ multiple objects of a property element (statement) is an error
+
+ * tests/Makefile.am:
+ Report warnings when they occur. Print the warning text
+
+ * tests/bad-11.rdf: now xml
+
+ * tests/Makefile.am: typo - restult
+
+ * tests/bad-11.rdf: Check xmlns with no namespace name (URI) fails
+
+ * tests/Makefile.am: Added bad-11
+
+ * TODO.html: diagnosed crash on empty xml namespace name (URI)
+
+ * TODO.html: Fixed empty docs now give error, not crash.
+
+ * raptor_libxml.c (raptor_libxml_update_document_locator):
+ Handle empty parser context.
+
+ * tests/Makefile.am: ex-46 now bad-10
+
+ * tests/bad-10.rdf, tests/ex-46.rdf, tests/ex-46.out: Now bad-10
+
+ * raptor_parse.c (raptor_xml_parse_chunk_):
+ Make an empty rdf/xml bytestream an
+ illegal doc (like expat) and return an error.
+
+ * TODO.html: Clarified empty files bug
+
+ * raptor_libxml.c (raptor_libxml_update_document_locator):
+ Don't use loc if it is NULL
+ such as errors before start of XML document.
+
+ * raptor_libxml.c:
+ Check for xmlSAXHandler externalSubset field, not present in old
+ libxml v1. Whether raptor works after this is unlikely and untested.
+
+ * configure.in: Add old libxml V1 warning and suggestion
+
+ * acconfig.h: Added RAPTOR_LIBXML_XMLSAXHANDLER_EXTERNALSUBSET
+
+ * configure.in: Check for xmlSAXHandler externalSubset field
+
+ * INSTALL.html: Added libxml1 warning
+
+ * TODO.html: note some bugs
+
+2003-02-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_locator.c (raptor_print_locator):
+ Only print non-negative line numbers
+
+ * raptor_parse.c (raptor_xml_parse_chunk_):
+ For libxml, handle first chunk being
+ empty, when the XML parser context, xc, is attempted to be initialiased
+
+ * tests/Makefile.am: Added ex-46 (Empty file should give 0 triples)
+
+ * tests/ex-46.out, tests/ex-46.rdf: Empty file should give 0 triples
+
+2003-01-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Remove $? and replace with $< or full dependencies
+
+2003-01-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * ntriples_parse.c:
+ Fix macro IS_ASCII_DIGIT which refused to allow '0'.
+
+2003-01-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.1: rdfdump.1 renamed to rapper.1
+
+ * raptor.spec.in, tests/Makefile.am, TODO.html,
+ README.html, NEWS.html, Makefile.am, INSTALL.html:
+ rdfdump now rapper
+
+ * rapper.1: rdfdump.1 renamed to rapper.1
+
diff --git a/ChangeLog.5 b/ChangeLog.5
new file mode 100644
index 0000000..e57ab9e
--- /dev/null
+++ b/ChangeLog.5
@@ -0,0 +1,2424 @@
+2004-12-31 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c (raptor_rss10_serialize_terminate):
+ Free all namespaces, now they are
+ not stacked explicitly. Free namespace stack.
+ (raptor_rss10_build_xml_names): Use raptor_new_namespace and don't
+ start the rdf namespace.
+ (raptor_rss10_build_xml_names): Use raptor_new_namespace and don't
+ start the namespaces
+ ((raptor_rss10_serialize_end): Make a namespace stack here, with
+ only xml: defined.
+
+ * raptor_xml_writer.c (raptor_xml_writer_start_namespace_full):
+ Deleted.
+ (main): Declare the foo namespace but don't start it, so that the xml
+ writer will do that.
+
+ * raptor_xml_writer.c: Optionally declare a namespace stack internally.
+ (raptor_new_xml_writer): Add optional raptor_namespace_stack
+ parameter, if NULL declare one internally.
+
+ * turtle_lexer.l, turtle_parser.y: Delete unused WS token
+
+ * raptor_xml_writer.c, raptor_sax2.c, raptor_rss.c,
+ raptor_rdfxml.c, raptor_internal.h, raptor.h, libraptor.3:
+ Rename raptor_sax2_element to raptor_xml_element throughout.
+
+ * raptor_internal.h: Added feature_start_uri to raptor_serializer
+
+ * raptor_serialize.c (raptor_free_serializer):
+ Tidy up any feature_start_uri set.
+ (raptor_serializer_set_feature_string): Added, handling
+ feature_start_uri created from a passed in string.
+ (raptor_serializer_get_feature_string): Added, handling
+ feature_start_uri as a returned shared string.
+
+ * raptor_parse.c (raptor_parser_set_feature_string):
+ Added, always failing.
+ (raptor_parser_get_feature_string): Added, always failing.
+
+ * raptor.h: Added feature RAPTOR_FEATURE_START_URI
+ Added prototypes for raptor_parser_set_feature_string,
+ raptor_parser_get_feature_string,
+ raptor_serializer_set_feature_string,
+ raptor_serializer_get_feature_string and
+ raptor_feature_value_type
+
+ * raptor_feature.c: Added flag bits for string valued features.
+ Added startUri (RAPTOR_FEATURE_START_URI) with a string value.
+ (raptor_feature_value_type): Added, to return value of a feature.
+
+2004-12-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * libraptor.3: Added SAX2 XML Element and XML Writer classes.
+
+ * raptor_internal.h, raptor.h:
+ Moved raptor_sax2_element and raptor_xml_writer to public API.
+
+ * libraptor.3: Added rss-1.0 to raptor_new_serializer description.
+
+ * libraptor.3: More updates for 1.4.3
+
+2004-12-25 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c (raptor_rss_parser_processNode):
+ Turn <guid isPermaLink="true">val</guid>
+ into <guid rdf:resource="val"/>
+ (raptor_rss10_emit_item): Always serialize rss:items at the end of
+ an rss channel.
+
+ * raptor_xml_writer.c, raptor_xml.c, raptor_utf8.c, raptor_sax2.c,
+ raptor_rss.c, raptor_general.c: Casts for c++. Rename variables
+ namespace to nspace.
+
+2004-12-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_www_test.c (main): Cast for size_t
+
+2004-12-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c (raptor_rss10_serialize_statement): Fix item URI
+ check to use correct URI. In debugging unknown typed node, print
+ type URI.
+
+ * raptor_rss.c (raptor_rss10_serialize_statement): Do not look in
+ items with no URI.
+ (raptor_rss10_build_xml_names): Do not make qnames for types with
+ no namespace.
+
+ * raptor_rss.c (raptor_rss10_build_items): Do nothing if there is
+ no seq_uri
+
+ * raptor_rss.c (raptor_init_serializer_rss10): Give rss 1.0 a URI
+
+ * raptor_serialize.c (raptor_iostream_write_string_ntriples):
+ Renamed from raptor_serialize_ntriples_print_string and made public.
+ Handle delimiters that aren't ' or " such as >, and if found
+ \uHHHH escape it.
+ (raptor_iostream_write_statement_part_ntriples): Renamed from
+ raptor_serialize_ntriples_print_statement_part and made public.
+ (raptor_iostream_write_statement_ntriples): Added and made public.
+ (raptor_ntriples_serialize_statement): Moved most code to
+ raptor_iostream_write_statement_ntriples
+
+ * raptor.h: Add and export raptor_iostream_write_ntriples_string
+ and raptor_iostream_write_statement_ntriples
+
+ * tests/turtle/test-13.ttl, tests/turtle/test-13.out: Use a
+ namespace URI that gives a predicate which could be serialized to
+ rdf/xml.
+
+ * raptor_rss.c (raptor_rss_insert_identifiers): For channel type,
+ check both the link field and the atom:id field.
+
+ * raptor_rss.c (raptor_rss10_emit_item): Emit the
+ <rss:items><rdf:Seq><rdf:li /> .... </rdf:Seq></rss:items> here.
+ (raptor_rss10_serialize_end): Moved items code above.
+
+ * raptor_parse.c (raptor_guess_parser_name): Don't emit debug
+ messages about scores unless very debuggy.
+
+ * n3_lexer.l, turtle_lexer.l: In <PREF> state, accept remaining
+ characters so -s is true.
+
+ * raptor.h: Export raptor_xml_name_check
+
+ * raptor_xml.c (raptor_valid_xml_ID): Use raptor_xml_name_check
+ with appropriate XML version.
+ (raptor_xml_name_check): Added to check for a legal XML name.
+
+ * raptor_utf8.c (raptor_utf8_check): Added, to just check a string
+ is good UTF-8 and all the Unicode characters are 0 <= char <=
+ 0x10ffff
+
+ * raptor.h: Export raptor_utf8_check
+
+ * raptor_nfc_test.c (main): Use raptor_utf8_check
+
+ * raptor_xml_writer.c (main): Update tests for changed xml_writer api
+
+ * raptor.h: Export raptor_unicode_is_xml11_namestartchar,
+ raptor_unicode_is_xml10_namestartchar
+ raptor_unicode_is_xml11_namechar and
+ raptor_unicode_is_xml10_namechar
+
+ * raptor_utf8.c: (raptor_unicode_is_xml10_namestartchar,
+ raptor_unicode_is_xml11_namestartchar,
+ raptor_unicode_is_xml11_namechar, raptor_unicode_is_xml10_namechar):
+ Added, as public functions called by raptor_unicode_is_namestartchar
+ and raptor_unicode_is_namechar respectively.
+
+ * raptor_rss.c (raptor_clear_rss_items): Renamed from
+ raptor_free_rss_items. Use raptor_free_rss_item.
+ (raptor_rss_context_terminate): Rename call to raptor_clear_rss_items
+
+ * raptor_rss.c (raptor_clear_rss_item): Renamed from
+ raptor_free_rss_item to empty a static raptor_rss_item.
+ (raptor_free_rss_item): Same as above but deallocates the item too.
+ (raptor_free_rss_items, raptor_rss_context_terminate): Use
+ raptor_clear_rss_item.
+
+ * raptor_rss.c (raptor_rss10_move_statements): Add item arg.
+ Remove auto-fail with type RAPTOR_RSS_ITEM, and now look in the
+ sequence of items for instances of this type.
+ Count and report moved statements counts when debugging.
+ (raptor_rss10_store_statement): Only print out individal statement
+ moves when debugging.
+ (raptor_rss10_serialize_statement): When typed node is an item, get
+ the URI from the entry in the sequence if it exists, maybe move the
+ statements then.
+ (raptor_rss10_build_items): Move any item statements once the item
+ URIs have been made.
+ (raptor_rss10_serialize_end): Report triples remaining when
+ debugging.
+ Remove last raw use of raptor_iostream*
+
+2004-12-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c: Fix 'enc' prefix.
+ Add rdf_RDF_element and xml_writer to raptor_rss10_serializer_context.
+ (raptor_rss10_serialize_init): No need for nstack here.
+ (raptor_rss10_serialize_terminate): Delete nstack tidy.
+ Tidy up xml_writer and type qnames.
+ (raptor_rss10_move_statements): Note don't do rss items.
+ (raptor_rss10_build_items): Build list of raptor_rss_item* in
+ rss_serializer->items.
+ (raptor_rss10_build_xml_names): Added to make namespaces and qnames
+ for fields and types; pulled out of raptor_rss10_build_items.
+ (raptor_rss10_emit_item): Delete xml-writer, iostr args.
+ Replace more raptor_iostream* functions with raptor_xml_writer*
+ equivalents.
+ (raptor_rss10_serialize_end): Extra nl at end
+
+ * raptor_rss.c: Fix 'enc' prefix.
+ Add rdf_RDF_element and xml_writer to raptor_rss10_serializer_context.
+ (raptor_rss10_serialize_init): No need for nstack here.
+ (raptor_rss10_serialize_terminate): Delete nstack tidy.
+ Tidy up xml_writer and type qnames.
+ (raptor_rss10_move_statements): Note don't do rss items.
+ (raptor_rss10_build_items): Build list of raptor_rss_item* in
+ rss_serializer->items.
+ (raptor_rss10_build_xml_names): Added to make namespaces and qnames
+ for fields and types; pulled out of raptor_rss10_build_items.
+ (raptor_rss10_emit_item): Delete xml-writer, iostr args.
+ Replace more raptor_iostream* functions with raptor_xml_writer*
+ equivalents.
+ (raptor_rss10_serialize_end): Move rdf_RDF qname stuff to new
+ raptor_rss10_build_xml_names
+ Move bits around so that rdf:RDF is declared with all namespaces
+ known and using raptor_xml_writer_start_element.
+ Emit rdf:Seq and rdf:li elements using_xml_writer_start_element with
+ attributes as needed.
+ Attempt to emit channel items.
+
+ * raptor_internal.h: Remove
+ raptor_xml_writer_element_declare_namespace_full
+
+ * raptor_xml_writer.c: Renamed content_cdata_namespaces to nstack,
+ content_cdata_namespaces_depth to nstack_depth.
+ (raptor_xml_writer_start_namespace_full): Added, to start a new
+ namespace in the xml_writer at the current element.
+ (raptor_xml_writer_cdata_counted, raptor_xml_writer_raw_counted,
+ raptor_xml_writer_comment_counted): Added.counted string versions.
+
+ * raptor_sax2.c (raptor_new_sax2_element, raptor_free_sax2_element):
+ Init/tidy declared_namespaces.
+ (raptor_sax2_declare_namespace): Added to declare the given namespace
+ on the element.
+ (raptor_iostream_write_sax2_element): Handle declared_namespaces;
+ boost the nspace_declarations by size of the sequence.
+ Declare all the namespaces in the declared_nspaces sequence.
+
+ * raptor_rdfxml.c (raptor_xml_comment_handler):
+ Use raptor_xml_writer_comment (uncounted).
+ (raptor_cdata_grammar): Use raptor_xml_writer_cdata_counted
+
+ * raptor_internal.h: raptor_sax2_element added declared_nspaces field
+ Added prototype for raptor_sax2_declare_namespace.
+ Added prototypes for raptor_xml_writer_start_namespace_full and
+ raptor_xml_writer_element_declare_namespace_full
+ Split raptor_xml_writer_cdata / raptor_xml_writer_raw /
+ raptor_xml_writer_comment into uncounted and
+ raptor_xml_writer_cdata_counted / raw_counted / comment_counted
+
+2004-12-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c: Made rss1.0 the default namespace for writing;
+ added prefixes for others.
+ (raptor_rss10_serialize_end): Removed unused commented code.
+
+ * raptor_qname.c (raptor_qname_copy): Added.
+
+ * raptor.h: Added raptor_qname_copy.
+
+ * raptor_rss.c: raptor_rss_item field node_type is now a pointer to the
+ raptor_rss_info* for that node type.
+ (raptor_rss_insert_identifiers, raptor_rss_emit_item): Update for new
+ node_type definition.
+ raptor_rss10_serializer_context now has rdf_nspace
+ (raptor_rss10_build_items): Declare rdf namespace and store in
+ rss_serializer->rdf_nspace - freed when namespace stack is destroyed.
+ Declare all raptor_namespace* for the
+ raptor_rss_namespaces_info[].nspace
+ Declare all raptor_qname* for the raptor_rss_fields_info[].qname
+ Declare all raptor_qname* raptor_rss_types_info[].qname
+ Insert node_type pointers for all items.
+ (raptor_rss10_emit_item): Add xml_writer argument.
+ Use more of xml_writer to emit main type element and predicate names.
+ Incomplete.
+ (raptor_rss10_serialize_end): Declare and use mxl_writer and qname,
+ element for rdf:RDF.
+ Incomplete.
+
+ * raptor_rss.c: Do not init all NULL fields for
+ raptor_rss_namespaces_info
+
+ * raptor_rss.c: Added raptor_rss_namespace_info typedef and
+ raptor_rss_namespaces_info merging uri_strings and prefixes for
+ namespaces. Made all rss info static.
+ (raptor_rss_common_init, raptor_rss_parser_processNode,
+ raptor_rss10_serialize_end): Update for namespace URIs struct
+ change.
+
+ * raptor_rss.c: Added rss_namespace_prefix_strings to list
+ namespaces to declare. raptor_rss10_serializer_context gains
+ raptor_namespace_stack nstack field.
+ (raptor_rss10_serialize_init): Init the namespace stack.
+ (raptor_rss10_serialize_terminate): Clean namespace stack and any
+ defined qnames.
+ (raptor_rss10_emit_item): Padding.
+ (raptor_rss10_serialize_end): Write namespace decls using stack.
+
+ * raptor_rss.c: Rename some destructors more normally:
+ (raptor_free_rss_item): Renamed from raptor_item_free.
+ (raptor_free_rss_items): Renamed from raptor_rss_items_free.
+ (raptor_rss10_move_statements, raptor_rss10_store_statement): Record
+ field counts per item.
+ (raptor_rss10_build_items): Find the rdf:_<n> items and put them
+ into a raptor sequence.
+ (raptor_rss10_emit_item): Skeleton rss item writer.
+ (raptor_rss10_serialize_end): Make the final structures and do the
+ serializing in skeleton form.
+
+2004-12-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c: Added seq_uri to raptor_rss10_serializer_context
+ (raptor_rss10_serialize_terminate): Tidy seq_uri
+ (raptor_rss10_move_statements, raptor_rss10_store_statement): Ignore
+ checking fields with no URI.
+ (raptor_rss10_serialize_statement): For rdf:Seq node, store the URI
+ or blank node - as fake URI.
+ Make fake object node correctly for general statements.
+
+ * raptor_rss.c (raptor_rss_common_init): Prevent 2x initialising.
+ (raptor_item_free): Free type URI
+ (raptor_rss10_serialize_terminate): Call raptor_rss_common_terminate.
+ (raptor_rss10_move_statements): Use RAPTOR_IDENTIFIER_TYPE_PREDICATE
+ set raptor_sequence_set_at destroy overwritten object.
+ (raptor_rss10_store_statement): Use RAPTOR_IDENTIFIER_TYPE_PREDICATE
+ Make fake URIs from blank node strings and free them.
+
+ * raptor_general.c (raptor_free_statement):
+ Handle more statement part types.
+
+ * raptor_rss.c:
+ RAPTOR_RSS_FIELDS_SIZE now stops before UNKNOWN for real field names.
+ (raptor_rss10_move_statements): Added, to move statements from
+ the sequence of triples to below a typed node once a new typed node
+ of the given type appears.
+ (raptor_rss10_store_statement): Added, to store a given statement
+ either below an existing typed node or in a sequence of triples if
+ it can't be found one.
+
+ * raptor_rss.c (raptor_rss10_serialize_statement):
+ iostream write turned into debug.
+
+2004-12-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c (raptor_uri_print): Cast for gcc
+
+ * raptor_rss.c: Use raptor_uri in raptor_rss_item.
+ (raptor_rss_context_init, raptor_rss_context_terminate): Added and
+ used in parser and serializer init and terminate.
+ (raptor_rss10_serialize_init): Initialise list of triples, items.
+ (raptor_rss10_serialize_terminate): Tidy up triples, items.
+ (raptor_rss10_serialize_statement): Look for known typed nodes,
+ identify ones matching rss 1.0 model and also look for the
+ rdf:Seq. Store other triples for later.
+ (raptor_rss10_serialize_end): Added skeleton.
+
+2004-12-18 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c (raptor_uri_print): Added.
+
+ * raptor.h: Added raptor_uri_print
+
+ * raptor_general.c (raptor_statement_copy):
+ Added statement copy constructor
+ (raptor_free_statement): Added statement destructor.
+
+ * raptor_internal.h:
+ Added raptor_statement_copy and raptor_free_statement
+
+ * raptor_rss.c:
+ Moved parser namespace URIs to common code rss_namespace_uris.
+ (raptor_rss_common_init, raptor_rss_common_terminate): Added to
+ initialise and free up common rss items - namespace URIs, URIs for
+ types and uris for properties.
+ Added skeleton RSS 1.0 serializer
+ (raptor_rss10_serialize_init, raptor_rss10_serialize_terminate,
+ raptor_rss10_serialize_statement,
+ raptor_rss10_serialize_finish_factory,
+ raptor_rss10_serializer_register_factory,
+ raptor_init_serializer_rss10): Added skeleton RSS 1.0 serializer
+ factory and methods.
+
+ * raptor_general.c (raptor_init):
+ Added call to raptor_init_serializer_rss10
+
+ * raptor_internal.h: Added raptor_init_serializer_rss10
+
+ * raptor_rss.c (raptor_rss_parse_recognise_syntax): Add atom checks.
+
+2004-12-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Added
+ RDF_MAYFAIL_XML_TEST_FILES,RDF_MAYFAIL_XML_OUT_FILES and rule
+ check-mayfail-xml-rdf to run checks that may fail due to XML
+ parser bugs.
+
+ * raptor_sax2.c, raptor_serialize.c, raptor_iostream.c,
+ raptor_nfc.c, raptor_rdfxml.c: Initialise possibly used but
+ uninitialised vars to remove gcc warning with -O.
+
+ * raptor_namespace.c, raptor_rdfxml.c, raptor_serialize.c,
+ raptor_xml_writer.c, rdfdump.c, raptor.h, raptor_internal.h,
+ raptor_iostream.c: Casts for c++
+
+ * raptor_rdfxml.c: Fix using wrong element name in warnings.
+
+ * raptor_rdfxml.c (raptor_xml_start_element_handler):
+ Use raptor_sax2_element_set_attributes.
+
+ * raptor_xml_writer.c (raptor_xml_writer_empty_element): Added.
+ (raptor_xml_writer_start_element, raptor_xml_writer_end_element):
+ Updated raptor_iostream_write_sax2_element calls
+ (main): Add attributes and test writing empty element.
+
+ * raptor_internal.h: Added raptor_sax2_element_set_attributes
+ Added is_empty arg to raptor_iostream_write_sax2_element
+ Added raptor_xml_writer_empty_element
+
+ * raptor_sax2.c (raptor_sax2_element_set_attributes): Added.
+ (raptor_print_sax2_element): tidy
+ (raptor_iostream_write_sax2_element): Added is_empty arg
+ and use it for <foo... /> form.
+
+2004-12-14 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * libraptor.3: Actaully updated for 1.4.3 so far
+
+ * libraptor.3: Updated for 1.4.2 so far.
+
+ * tests/turtle/README.txt, tests/turtle/rdfq-results.out,
+ tests/turtle/test-00.out, tests/turtle/Makefile.am: Switch to base
+ URI http://www.w3.org/2001/sw/DataAccess/df1/tests/
+
+ * tests/turtle/test-13.out, tests/turtle/test-13.ttl,
+ tests/turtle/manifest.ttl, tests/turtle/bad-12.ttl,
+ tests/turtle/bad-13.ttl, tests/turtle/manifest-bad.ttl,
+ tests/turtle/bad-10.ttl, tests/turtle/bad-11.ttl,
+ tests/turtle/bad-08.ttl, tests/turtle/bad-09.ttl,
+ tests/turtle/bad-04.ttl, tests/turtle/bad-05.ttl,
+ tests/turtle/bad-06.ttl, tests/turtle/bad-07.ttl,
+ tests/turtle/Makefile.am: Import more bad turtle tests, initial
+ manifest files
+
+ * raptor_namespace.c (raptor_iostream_write_namespace): Handle
+ ns->uri is NULL and no prefix, i.e. emitting xmlns=""
+
+ * raptor_namespace.c (raptor_namespaces_format):
+ Handle ns->uri is NULL and no prefix, i.e. emitting xmlns=""
+
+2004-12-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c (raptor_default_new_uri_relative_to_base): Ask for
+ 1 more char for new URI to allow inserting of a missing "/" path.
+
+ * raptor_rfc2396.c (raptor_uri_resolve_uri_reference): Add debug
+ message. When adding a missing path "/", set the path_len and the
+ uri_len to match.
+ (main): Added test when a missing abs / path is added.
+
+ * raptor_sequence.c (raptor_sequence_set_at,
+ raptor_sequence_get_at): Check for non-negative idx
+
+ * raptor_sequence.c (raptor_sequence_get_at): Fix index offset check
+
+2004-12-02 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c: Make a raptor_sequence of namespace declarations
+ declared by '-f xmlns:foo="bar"' and then add them to the
+ serializer when initialised.
+ (rdfdump_free_namespace_decl): Added, to provide a helper to
+ cleanup.
+
+ * raptor_serialize.c (raptor_serialize_set_namespace): Call
+ factory method declare_namespace.
+ (raptor_rdfxml_serialize_declare_namespace): Copy the passed in
+ namespace prefix, URI before storing the namespace.
+ (raptor_rdfxml_serialize_start): Delete the namespace sequence
+ contents as the namespaces are declared on the namespace stack,
+ which is the new owner of the namespaces.
+
+ * raptor_namespace.c (raptor_new_namespace_parts_from_string):
+ Added, to decode things like "xmlns:foo='bar'" into prefix, uri
+ strings.
+
+ * raptor.h: Added prototype for raptor_new_namespace_parts_from_string.
+ raptor_sequence_free_handler prototype changed to return void
+
+2004-11-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_serialize.c (raptor_rdfxml_serialize_init):
+ Add a sequence of user-declared namespaces.
+ (raptor_rdfxml_serialize_terminate): Tidy sequence.
+ (raptor_rdfxml_serialize_declare_namespace): Use sequence to store
+ declared namespaces.
+ (raptor_rdfxml_serialize_start): Declare used-defined namespaces
+ and start them in the namespace stack.
+
+ * raptor_namespace.c (raptor_new_namespace_from_uri):
+ Added with raptor_new_namespace code.
+ (raptor_new_namespace): Now a wrapper around
+ raptor_new_namespace_from_uri.
+ (raptor_namespace_copy): Use raptor_new_namespace_from_uri.
+
+ * raptor_qname.c (raptor_iostream_write_qname):
+ Added to write a qname to an iostream.
+
+ * raptor.h: Add prototypes for raptor_iostream_write_qname,
+ raptor_new_namespace_from_uri
+
+ * raptor_rdfxml.c (raptor_xml_start_element_handler,
+ raptor_xml_end_element_handler, raptor_xml_comment_handler,
+ raptor_start_element_grammar, raptor_end_element_grammar,
+ raptor_cdata_grammar): Update the use of xml_writer for building
+ parseType="Literal" content to use an iostream. Use more sax2
+ methods rather than direct access to internals - still some left.
+ (raptor_xml_parse_init, raptor_xml_parse_start,
+ raptor_xml_parse_terminate, raptor_inscope_xml_language,
+ raptor_inscope_base_uri): Move expat/libxml details to
+ raptor_new_sax2, raptor_sax2_parse_start, raptor_free_sax2,
+ raptor_sax2_inscope_xml_language, raptor_sax2_inscope_base_uri
+ respectively.
+ (raptor_xml_parse_chunk_): Deleted, moved to raptor_sax2_parse_chunk
+
+ * raptor_xml_writer.c: Change to output to an iostream not build
+ up a stringbuffer.
+ (raptor_new_xml_writer): Add iostream arg, delete never-used
+ canonicalize.
+ (raptor_free_xml_writer): Remove stringbuffer.
+ (raptor_xml_writer_start_element, raptor_xml_writer_end_element):
+ Delete stringbuffer and use raptor_iostream_write_sax2_element.
+ (raptor_xml_writer_cdata): Delete stringbuffer and use
+ raptor_iostream_write_xml_escaped_string.
+ (raptor_xml_writer_raw): Added to write just the bytes.
+ (raptor_xml_writer_comment): Fixed to emit <!-- and -->
+ (raptor_xml_writer_as_string): Deleted.
+ (main): Added with test case.
+
+ * raptor_sax2.c (raptor_new_sax2, raptor_free_sax2,
+ raptor_sax2_inscope_xml_language, raptor_sax2_inscope_base_uri,
+ raptor_sax2_get_depth, raptor_sax2_inc_depth,
+ raptor_sax2_dec_depth, raptor_sax2_parse_start,
+ raptor_sax2_parse_chunk, raptor_sax2_element_get_element): Added.
+ (raptor_iostream_write_sax2_element): Renamed from
+ raptor_format_sax2_element and now writing to a raptor_iostream
+ with no allocing/freeing buffers.
+
+ * raptor_xml.c (raptor_iostream_write_xml_escaped_string): Added,
+ to write an XML-escaped version of a string to an iostream
+
+2004-11-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_namespace.c (raptor_iostream_write_namespace): Added to
+ write a namespace to a raptor_iostream
+
+ * raptor.h: Added raptor_iostream_write_namespace
+
+ * Makefile.am: Added raptor_xml_writer_test
+
+ * raptor_expat.c (raptor_expat_init): Take void* user data
+
+ * raptor_internal.h: raptor_exp_init takes void*
+ Add user_data to raptor_sax2
+ Added prototypes or raptor_new_sax2, raptor_free_sax2,
+ raptor_sax2_parse_start, raptor_sax2_parse_chunk,
+ raptor_sax2_parse_handle_errors, raptor_sax2_get_depth,
+ raptor_sax2_inc_depth, raptor_sax2_dec_depth,
+ raptor_sax2_inscope_xml_language, raptor_sax2_inscope_base_uri,
+ raptor_sax2_element_get_element, raptor_iostream_write_sax2_element
+ Deleted raptor_format_sax2_element, raptor_xml_writer_as_string and
+ raptor_xml_writer_write_to_iostream
+ Changed raptor_new_xml_writer to write to a raptor_iostream
+
+ * raptor.h: Added raptor_iostream_write_xml_escaped_string and
+ raptor_namespace_write
+
+2004-11-26 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_internal.h: Added prototype for
+ raptor_xml_writer_write_to_iostream
+
+ * raptor_xml_writer.c (raptor_xml_writer_write_to_iostream): Added
+
+ * raptor.h: Added prototype for raptor_iostream_write_stringbuffer
+
+ * raptor_iostream.c: (raptor_iostream_write_stringbuffer) Added
+
+ * configure.ac: --with-dmalloc default is now no
+
+2004-11-25 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac:
+ If expat_source is empty, set it to auto so no path-to-source is
+ added to libs, includes
+
+2004-11-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/ex-55.out, tests/ex-55.rdf: ex-55
+
+ * tests/Makefile.am: Added ex-55
+
+2004-11-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * examples/grapper.c:
+ Extensively updated to use GTK 2.4, 2.5 features when available.
+ Triples/Errors windows have a scalable pane between them
+ Triple columns can be sorted by clicking, width resized.
+ All known parser features are available on the preferences menu.
+ Added parser guessing button.
+ Moved syntax menu to top of display.
+ Updated about box fields to include more info when possible to
+ display.
+
+2004-11-12 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapper.1: Updated -f for serializer features
+
+2004-11-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_sequence.c (raptor_sequence_join): Copy pointers correctly
+
+ * raptor_sequence.c (raptor_sequence_join): Added, to move all
+ items between two sequences leaving one empty.
+
+ * raptor.h: Added raptor_sequence_join
+
+ * raptor.h: Added raptor_serialize_set_namespace
+
+ * raptor_serialize.c (raptor_serialize_set_namespace):
+ Added, not implemented.
+
+ * raptor_rss.c (raptor_rss_parse_recognise_syntax):
+ Boost in recognising xml rss
+
+2004-11-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c: allow -f to set serializer features
+
+ * raptor_feature.c (raptor_features_enumerate_common): return -1
+
+2004-11-07 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c: C style, indenting. const unsigned char.
+ (raptor_uri_path_make_relative_path): Remove a small memcpy.
+ (raptor_uri_to_relative_counted_uri_string) Docs edit.
+ Remove a large if {} block. Rename 'reference' var since libxml2
+ defines it (SEP). Use buildresult to make empty string result.
+
+ * raptor_serialize.c (raptor_rdfxml_serialize_statement): Use
+ feature feature_relative_uris to decide when to emit an absolute
+ or relative URI, the latter using raptor_uri_to_relative_uri_string.
+
+ * raptor_uri.c: Added raptor relative URI generating code patch
+ from René Puls
+ (raptor_uri_path_common_base_length): Added. Helper to return the
+ common base length of two paths
+ (raptor_uri_path_make_relative_path): Added. Helper to build the
+ result relative URI string from already analysed parts.
+ (raptor_uri_to_relative_counted_uri_string): Added. Get the
+ relative URI string between a base and reference URI.
+ (raptor_uri_to_relative_uri_string): Added. Wrapper about the above.
+ (assert_uri_to_relative): Added. Helper for tests for above.
+ (main): Added relative URI string generation tests.
+
+ * raptor.h: Added prototypes for
+ raptor_uri_to_relative_counted_uri_string and
+ raptor_uri_to_relative_uri_string
+
+ * raptor_rss.c (raptor_rss_parser_processNode): Add cast for name
+ when returned from xmlTextReaderConstLocalName.
+
+ * raptor_rss.c (raptor_rss_parser_processNode): Always declare
+ name as xmlChar*
+
+2004-11-06 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c: Tidy help messages about features, other words.
+
+ * raptor_parse.c (raptor_feature_from_uri): Moved to raptor_feature.c
+
+ * raptor.h: Moved raptor_feature_from_uri to separate section, not
+ just parsers
+
+ * raptor_internal.h: Deleted raptor_feature_from_uri_common
+
+ * raptor_feature.c (raptor_feature_from_uri): Defined here, no need for
+ raptor_feature_from_uri_common
+
+ * rdfdump.c: In feature help code, list parser and serializer features
+ separately, using new raptor_features_enumerate.
+
+ * raptor_serialize.c (raptor_serializer_features_enumerate):
+ Added, a wrapper around raptor_features_enumerate_common.
+ (raptor_serializer_set_feature): Added.
+ (raptor_serializer_get_feature): Added.
+
+ * raptor_parse.c: Moved raptor_features_list to raptor_feature.c
+ (raptor_features_enumerate): Changed to be a wrapper around
+ raptor_features_enumerate_common now containing the body of the code.
+ (raptor_feature_from_uri): Changed to be a wraper around
+ raptor_feature_from_uri_common now containing the body of the code.
+
+ * raptor_internal.h: Added feature_relative_uris for raptor_serializer.
+ Added prototypes for raptor_features_enumerate_common and
+ raptor_feature_from_uri_common
+
+ * raptor.h: Added RAPTOR_FEATURE_RELATIVE_URIS for serializing.
+ Added prototypes for raptor_serializer_features_enumerate,
+ raptor_serializer_set_feature and raptor_serializer_get_feature
+
+ * Makefile.am: Added raptor_feature.c
+
+ * raptor_feature.c:
+ Moved common raptor_feature code from raptor_parse.c
+
+ * raptor_rss.c:
+ Added <none> entry to raptor_rss_fields_info so that when indexed
+ with RAPTOR_RSS_FIELDS_NONE, does not access invalid data.
+ Fixes for xmlReader API for older libxml2s:
+ Added node type defines for <2.5.9
+ Use xmlTextReaderLocalName, xmlTextReaderNamespaceUri instead of the
+ Const versions with additional corresponding xmlFree()s for <2.6.0
+
+2004-11-01 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Snapshotted raptor_1_4_2 for 1.4.2 release
+
+ * win32_raptor_config.h, configure.ac:
+ Bumped version to 1.4.2
+
+ * raptor_xml_writer.c (raptor_xml_writer_cdata):
+ Return when raptor_xml_escape_string fails.
+
+ * raptor_xml.c (raptor_xml_escape_string):
+ Return -1 on UTF-8 encoding failure
+
+ * raptor_xml.c: docs
+
+2004-10-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Snapshotted raptor_1_4_1 for 1.4.1 release
+
+ * raptor_xml.c (raptor_xml_escape_string): Ensure an empty string
+ is copied out; write a NUL.
+
+2004-10-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * libraptor.3: 1.4.1 raptor_xml_escape_string return value now
+ int, <0 on failure.
+
+ * raptor_xml_writer.c (raptor_xml_writer_cdata): Use int for
+ raptor_xml_escape_string return variables and use error return <0
+
+ * raptor_serialize.c: (raptor_rdfxml_serialize_write_xml_attribute,
+ raptor_rdfxml_serialize_statement) Use int for
+ raptor_xml_escape_string return variables. Handle empty string
+ attribute when len=0.
+
+ * raptor_sax2.c (raptor_format_sax2_element):
+ Use int for raptor_xml_escape_string return.
+
+ * raptor.h: raptor_xml_escape_string changed return value to int
+
+ * raptor_xml.c (raptor_xml_escape_string): Return value now int,
+ <0 on failure to allow escaping an empty string to return 0 bytes
+ required.
+ (main): Add empty string escaping test. Check for failure of
+ first raptor_xml_escape_string call.
+
+ * raptor_rss.c (raptor_rss_parser_processNode): Fix url attribute
+ failing for non-enclosure.
+
+2004-10-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rfc2396.c (raptor_new_uri_detail): Do not add schema_len
+ twice to dest pointer; stop buffer overrun
+
+2004-10-26 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_locator.c (raptor_format_locator): Only print line if > 0
+
+ * raptor-config.1: Fix --libtool-libs desc
+
+2004-10-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * win32_raptor_config.h, configure.ac, NEWS.html:
+ Bumped version to 1.4.1
+
+ * Snapshotted raptor_1_4_0 for 1.4.0 release
+
+ * raptor_rss.c: Added generation of triples for RSS enclosures
+ based on a patch from Suzan Foster. Changes made include
+ correcting the enclosures namespace, tidying some memory leaks and
+ printing some debug information.
+
+ * raptor_serialize.c (raptor_rdfxml_serialize_statement):
+ Make rdf:_<n> 'ordinal' properties serialize correctly.
+
+ * raptor_www_test.c (main): Use raptor_www_fetch_to_string for testing.
+
+ * raptor_iostream.c (raptor_string_iostream_finish): Code tidy.
+
+ * libraptor.3, raptor.h: Added raptor_www_fetch_to_string
+
+ * raptor_www.c (raptor_www_fetch_to_string_write_bytes):
+ Added handler for the following function.
+ (raptor_www_fetch_to_string): Added, to get content back as a string.
+
+2004-10-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * libraptor.3: Updates for 1.4.0
+
+ * raptor.h, raptor_iostream.c: s/fh/handle/ for clarity.
+
+ * raptor.rdf.in: Add Raptor to the desc
+
+ * raptor.rdf.in, raptor.spec.in:
+ Update descriptions to include serializers
+
+2004-10-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_namespace.c: less namespace debugs
+
+ * raptor_xml_writer.c: less cdata debugs
+
+ * raptor_namespace.c: Make most namespace debug messages appear
+ only if #ifdef RAPTOR_DEBUG_VERBOSE
+
+ * raptor_rdfxml.c: Make most rdf/xml parsing debug messages appear
+ only if #ifdef RAPTOR_DEBUG_VERBOSE
+
+ * raptor_serialize.c:
+ (raptor_serialize_start, raptor_serialize_start_to_filename,
+ raptor_serialize_start_to_string,
+ raptor_serialize_start_to_file_handle,
+ raptor_serialize_statement, raptor_serialize_end):
+ Fail if no iostream is made or available.
+
+ * raptor_iostream.c (raptor_new_iostream_to_string):
+ Docs, zap string and length before starting.
+
+ * raptor_serialize.c (raptor_rdfxml_serialize_statement):
+ Print datatype URIs correctly.
+
+2004-10-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac, win32_raptor_config.h: 1.4.0
+
+ * raptor_internal.h:
+ Added warning_user_data, warning_handler to serializer
+ Added prototypes for raptor_serializer_warning and
+ raptor_serializer_warning_varargs
+
+ * raptor_serialize.c (raptor_serializer_warning,
+ raptor_serializer_warning_varargs): Added
+ (raptor_serializer_set_warning_handler): Added
+
+ * raptor.h: Added raptor_serializer_set_warning_handler
+
+ * configure.ac: autoconf mode
+
+ * rdfdump.c: default serializer simple
+
+ * raptor_serialize.c (raptor_rdfxml_serialize_statement): Handle
+ URI subject, object right.
+
+ * raptor_serialize.c (raptor_serialize_start_to_filename,
+ raptor_serialize_start_to_string,
+ raptor_serialize_start_to_file_handle): Don't enforce base URI is
+ required.
+
+2004-10-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h:
+ Updated raptor_new_iostream_to_string with malloc_handler argument
+
+ * raptor_serialize.c (raptor_serialize_start_to_string): Update
+ raptor_new_iostream_to_string for malloc_handler argument
+
+ * raptor_iostream.c (raptor_string_iostream_finish):
+ Use passed-in malloc_handler to
+ make string, raptor_stringbuffer_copy_to_string to copy directly in.
+ (raptor_new_iostream_to_string): Add optional malloc_handler argument
+ so caller can control allocation.
+ (main): Update tests for above.
+
+ * raptor.h: Added raptor_stringbuffer_copy_to_string
+
+ * raptor_stringbuffer.c (raptor_stringbuffer_copy_to_string):
+ Added to allow exporting to
+ externally alloced buffers - handy for cross-library/heap work.
+ (main): Added test for above.
+
+ * raptor_general.c (raptor_init): Don't register 'simple' type.
+
+ * raptor_iostream.c, raptor_namespace.c, raptor_serialize.c,
+ raptor_iostream.c: Casts for C++
+
+ * tests/Makefile.am, tests/turtle/Makefile.am:
+ Replace direct dependency on $(top_builddir)/rapper with build-rapper
+ so re-compile check is forced before testing.
+
+ * raptor.h, raptor_namespace.c, raptor_serialize.c:
+ Fix a bunch of constitency typos in namespace URIs
+
+ * raptor_internal.h:
+ Add locator, error_user_data and error_handler to raptor_serializer.
+ Add raptor_init_serializer_rdfxml, raptor_serializer_error,
+ raptor_serializer_simple_error and raptor_serializer_error_varargs.
+
+ * raptor_namespace.c:
+ Export raptor_xml_namespace_uri, raptor_rdf_namespace_ms_uri,
+ raptor_rdf_namespace_schema_uri,
+ raptor_xmlschema_datatypes_namespace_uri, raptor_owl_namespace_uri,
+ raptor_rdf_namespace_ms_uri_len
+
+ * raptor_general.c (raptor_init): Call raptor_init_serializer_rdfxml
+
+ * raptor.h:
+ Export raptor_xml_namespace_uri, raptor_rdf_namespace_ms_uri,
+ raptor_rdf_namespace_schema_uri,
+ raptor_xmlschema_datatypes_namespace_uri, raptor_owl_namespace_uri,
+ raptor_rdf_namespace_ms_uri_len
+ Add raptor_serializer_set_error_handler,
+ raptor_serializer_get_locator
+
+ * raptor_serialize.c: Added RDF/XML serializer.
+ Added locator to serializer.
+ (raptor_serializer_error, raptor_serializer_simple_error,
+ raptor_serializer_error_varargs): Added internal support for errors.
+ (raptor_serializer_set_error_handler, raptor_serializer_get_locator):
+ Added public methods
+
+2004-10-18 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_iostream.c: (main) casts for fprintf
+
+ * rdfdump.c: Remove ad-hoc serializing code and use raptor_serializer.
+ Update help and usage messages to use raptor_serializers_enumerate
+
+ * raptor_internal.h:
+ Added raptor_serializer_factory and declarations for factories
+ raptor_init_serializer_ntriples, raptor_init_serializer_simple and
+ raptor_delete_serializer_factories
+
+ * raptor_general.c (raptor_init):
+ Call raptor_init_serializer_ntriples and
+ raptor_init_serializer_simple
+
+ * raptor.h: Added raptor_serializer class and methods:
+ raptor_serializers_enumerate, raptor_serializer_syntax_name_check,
+ raptor_new_serializer, raptor_free_serializer,
+ raptor_serialize_start, raptor_serialize_start_to_filename,
+ raptor_serialize_start_to_string,
+ raptor_serialize_start_to_file_handle, raptor_serialize_statement,
+ raptor_serialize_end, raptor_serializer_get_iostream. Added new
+ raptor_iostream class constructor raptor_new_iostream_to_sink and
+ methods: raptor_iostream_write_end, raptor_iostream_write_string,
+ raptor_iostream_write_counted_string,
+ raptor_iostream_get_bytes_written_count,
+ raptor_iostream_write_decimal, raptor_iostream_format_hexadecimal
+
+ * Makefile.am: Added raptor_serialize.c
+ Added $(LIBS) to rfc2396 tests for -ldmalloc when present
+
+ * raptor_serialize.c: Serializers
+
+ * raptor_iostream.c (raptor_iostream_write_counted_string):
+ Added as a wrapper.
+
+ * raptor_iostream.c (raptor_iostream_format_hexadecimal):
+ Added for writing field-formatted hex.
+
+ * raptor_iostream.c (raptor_iostream_get_bytes_written_count):
+ Renamed from raptor_get_bytes_written_count
+ (raptor_iostream_write_decimal): Added to print a decimal to the
+ iostream.
+
+ * raptor_iostream.c (raptor_new_iostream_to_file_handle):
+ Do not fclose at end.
+ (raptor_string_iostream_finish): Free malloced context.
+ (raptor_iostream_write_string): Helper to write C string.
+
+ * raptor_iostream.c: Added sink iostream
+ (raptor_sink_iostream_write_byte, raptor_sink_iostream_write_bytes):
+ Added.
+ (raptor_new_iostream_to_sink): Added to create a throwaway data
+ iostream.
+ (raptor_free_iostream): Ensure write_end is always called once only.
+ (main): Test sink.
+
+ * raptor_iostream.c:
+ Added ended flag, once write_end is done, all further calls fail.
+ (raptor_filename_iostream_finish): Removed; write_end does this.
+ (raptor_filename_iostream_write_end): Added to fclose() on end
+ (raptor_string_iostream_finish): More checks when stringbuffer is
+ empty.
+ (raptor_new_iostream_to_string): Handle error tidy up better.
+ (raptor_iostream_write_end): Added.
+ (main): Code tidy.
+
+ * raptor_iostream.c: casts for c++
+
+ * raptor.h: Added raptor_iostream class and methods.
+
+ * Makefile.am: Added raptor_iostream.c and raptor_iostream_test
+
+ * raptor_iostream.c: Raptor I/O stream class
+
+ * turtle_parser.y, turtle_lexer.l, n3_parser.y, n3_lexer.l:
+ Rename rather generic define ERROR to ERROR_TOKEN to help win32.
+
+2004-10-16 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rapper.1: die .UE
+
+2004-10-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_xml.c (raptor_xml_escape_string):
+ Call error_handler correctly.
+
+2004-09-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor-config.1: Restore deleted content
+
+2004-09-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * win32_raptor_config.h, configure.ac, NEWS.html:
+ Bumped version to 1.3.4
+
+ * Snapshotted raptor_1_3_3 for 1.3.3 release
+
+ * Switched to LGPL / Apache 2.0 license in the sources
+ CVS tags before: raptor_license_lgpl_mpl,
+ and after: raptor_license_lgpl_apache2
+
+2004-09-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: Check for libxml 2.5.10+ for RSS tag soup parser
+ requirements, not features.
+
+2004-09-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_namespace.c (raptor_new_namespace):
+ Debug message only when level >1
+
+2004-09-09 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am:
+ Just link raptor_uri_test, raptor_uri_win32_test with raptor_rfc2396.lo
+
+ * raptor_uri.c: (main) Don't use raptor_basename
+
+ * raptor_uri.c:
+ Revert wrapping so that -DWIN32 raptor_uri_win32_test can be
+ compiled. OSX 'make check' will have to live with the moans.
+
+ * raptor_uri.c: Wrap functions with #ifndef STANDALONE ... #endif to
+ prevent multiple link warnings on OSX with tests.
+
+ * raptor_uri.c (main): Use program and raptor_basename in messages
+
+ * raptor_xml.c, raptor_stringbuffer.c, raptor_sequence.c,
+ raptor_rfc2396.c, raptor_uri.c: Wrap functions with
+ #ifndef STANDALONE ... #endif
+ to prevent multiple link warnings on OSX with tests.
+
+ * raptor.spec.in, Makefile.am, NOTICE: Added NOTICE for Apache
+ License 2.0
+
+ * raptor.spec.in: Mention atom 0.3
+
+ * raptor.spec.in: Update for LGPL/Apache 2.0
+
+ * raptor_rfc2396.c: Header
+
+2004-09-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rfc2396.c (raptor_new_uri_detail):
+ Handle NULL string - failure.
+ Increase alloced size to compensate for possibly 5 extra \0s
+ for each URI component.
+ (main): Check "" URI parses and NULL doesn't crash it.
+
+ * raptor_internal.h: Added raptor_uri_detail.
+ Added internal raptor_basename.
+
+ * raptor.h: docs
+
+ * Makefile.am: Added raptor_rfc2396.c and raptor_rfc2396_test
+ Link all tests with librdf.la $(LIBS)
+
+ * raptor_rfc2396.c: RFC2396 URI detail
+
+ * raptor_uri.c: Remove old URI resolving code.
+
+ * raptor_xml.c, raptor_parse.c, raptor_sequence.c, raptor_set.c,
+ raptor_stringbuffer.c, raptor_nfc_test.c: Use raptor_basename in
+ test code main()
+
+ * raptor_general.c (raptor_basename): Added
+
+ * raptor_rdfxml.c: correct comment
+
+ * Makefile.am: Run tests raptor_set_test and raptor_xml_test
+ only if rdf/xml is enabled.
+
+ * raptor_parse.c (raptor_stats_print):
+ Print rdfxml stats only if rdf/xml is enabled.
+
+ * Makefile.am: Change test to be raptor_parse_test
+ Use raptor_rdfxml.c only if rdf/xml enabled.
+
+ * raptor.h: Export raptor_xml_literal_datatype_uri_string_len
+
+ * raptor_internal.h: Declare raptor_delete_parser_factories.
+
+ * raptor_parse.c, raptor_general.c:
+ Moved the following parser related functions and methods to
+ raptor_parse.c:
+ raptor_default_generate_id_handler,
+ raptor_delete_parser_factories, raptor_feature_from_uri,
+ raptor_features_enumerate, raptor_free_parser, raptor_generate_id,
+ raptor_get_feature, raptor_get_label, raptor_get_locator,
+ raptor_get_mime_type, raptor_get_name, raptor_get_parser_factory ,
+ raptor_guess_parser_name, raptor_new_parser,
+ raptor_new_parser_for_content, raptor_parse_abort,
+ raptor_parse_chunk, raptor_parse_file, raptor_parse_file_stream,
+ raptor_parse_uri, raptor_parse_uri_with_connection,
+ raptor_parse_uri_write_bytes, raptor_parser_error,
+ raptor_parser_error_varargs, raptor_parser_fatal_error,
+ raptor_parser_fatal_error_varargs, raptor_parser_register_factory,
+ raptor_parser_simple_error, raptor_parser_warning,
+ raptor_parser_warning_varargs, raptor_parsers_enumerate,
+ raptor_set_default_generate_id_parameters, raptor_set_error_handler,
+ raptor_set_fatal_error_handler, raptor_set_feature,
+ raptor_set_generate_id_handler, raptor_set_parser_strict,
+ raptor_set_statement_handler, raptor_set_warning_handler,
+ raptor_start_parse, raptor_stats_print, raptor_syntax_name_check,
+ raptor_syntaxes_enumerate
+
+ * raptor_rdfxml.c: Added as copy of raptor_parse.c
+
+ * Makefile.am: -MPL.html (MPL 1.1), +LICENSE-2.0.txt (Apache 2.0)
+
+ * README.html, LICENSE.html: -MPL1.1, +Apache2.0
+
+ * LICENSE-2.0.txt: Added.
+
+ * MPL.html: Deleted.
+
+2004-09-07 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/turtle/test-16.ttl, tests/turtle/test-16.out:
+ 10000 triples exactly now
+
+ * raptor_sequence.c: docs
+
+ * turtle_parser.y (blank): Revert mis-edited triple sequence change.
+
+ * turtle_parser.y (propertyList):
+ Switch to left-recursion to prevent stack problems with bison.
+ (raptor_turtle_parse_terminate): Call turtle_lexer_lex_destroy
+ properly.
+
+ * tests/turtle/test-14.ttl, tests/turtle/test-14.out:
+ Use exactly 10000 all different triples.
+
+ * tests/turtle/test-15.ttl, tests/turtle/test-15.out:
+ Use different objects and no collections so there are exactly 10000
+ triples, all different.
+
+ * tests/turtle/test-16.ttl, tests/turtle/test-16.out:
+ Use different objects so all 10000 triples are different
+
+ * turtle_lexer.l (turtle_token_print):
+ Add INTEGER_LITERAL for debugging.
+
+ * Makefile.am: Make turtle_parser.c appear as C source name
+
+ * turtle_parser.y (statementList, objectList): Switch to using
+ left recursion to prevent stack overflow in bison with 10000
+ statements (possible) or objects (rarer).
+
+ * tests/turtle/Makefile.am, tests/turtle/test-16.ttl,
+ tests/turtle/test-15.out, tests/turtle/test-15.ttl,
+ tests/turtle/test-16.out, tests/turtle/test-14.out,
+ tests/turtle/test-14.ttl: Added large turtle tests test-14,15,16
+
+ * turtle_parser.y (raptor_turtle_parse_chunk):
+ Use RAPTOR_REALLOC for massive speed
+ improvements on some systems.
+
+ * raptor_internal.h: Added RAPTOR_REALLOC
+
+2004-09-06 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_set.c (raptor_free_id_set):
+ Free the set after freeing the list.
+
+2004-09-02 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/turtle/test-13.out, tests/turtle/test-13.ttl:
+ Make serializable as rdf/xml
+
+2004-09-01 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/turtle/Makefile.am, tests/turtle/README.txt:
+ Turtle tests readme
+
+2004-08-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c: compare namespace URIs the cheaper way
+
+ * raptor_rss.c: Added atom:copyright
+ Rewrite atom fields earlier.
+ Compare namespaces too, if they have them.
+
+ * raptor_rss.c: Handle atom 0.3 somewhat.
+ - Add atom author type.
+ - Add atom 0.3 NS and atom 0.3 properties
+ - Add DC Ns and all DC element properties.
+ - Always rewrites atom:content into rss:description which is not
+ correct for all situations.
+ - Cannot handle multiple <link> with different attributes; just uses
+ rel=alternate ones.
+ General changes:
+ Use XML_READER type enums.
+ Fix copying properties to use RAPTOR_RSS_FIELDS_SIZE.
+ Allow item field x to have a URI value in item->uri_fields[x] as well
+ as literal in item->fields[x].
+
+2004-08-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_rss.c: compare namespace URIs the cheaper way
+
+ * raptor_rss.c: Added atom:copyright
+ Rewrite atom fields earlier.
+ Compare namespaces too, if they have them.
+
+ * raptor_rss.c: Handle atom 0.3 somewhat.
+ - Add atom author type.
+ - Add atom 0.3 NS and atom 0.3 properties
+ - Add DC Ns and all DC element properties.
+ - Always rewrites atom:content into rss:description which is not
+ correct for all situations.
+ - Cannot handle multiple <link> with different attributes; just uses
+ rel=alternate ones.
+ General changes:
+ Use XML_READER type enums.
+ Fix copying properties to use RAPTOR_RSS_FIELDS_SIZE.
+ Allow item field x to have a URI value in item->uri_fields[x] as well
+ as literal in item->fields[x].
+
+2004-08-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * turtle_parser.y (blank rule): Do not free a generated id here
+
+2004-08-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: Remove old reference to g_utf8_normalize
+
+2004-08-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Add libraptor_la_SOURCES += for NFC.
+
+2004-08-18 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_set.c: Wrap main code with #ifndef STANDALONE
+
+ * raptor_general.c (raptor_init, raptor_finish):
+ Use new static raptor_initialised to
+ protect these from being run twice.
+
+2004-08-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: nfc_needed default
+
+ * configure.ac, Makefile.am:
+ Added conditional makefile support for XML parsers (expat, libxml),
+ selecting RDF parsers (RDF/XML, Turtle, N-Triples, RSS tag soup),
+ NFC checking.
+ Added new configure argument --enable-parsers to control this.
+
+ * raptor_utf8.c (raptor_utf8_is_nfc):
+ Protect NFC check with define RAPTOR_NFC_CHECK
+
+ * raptor_locator.c (raptor_update_document_locator):
+ Protect RDF/XML bits with define
+ RAPTOR_PARSER_RDFXML
+
+ * raptor_general.c (raptor_stats_print):
+ Protect RDF/XML bits with define RAPTOR_PARSER_RDFXML
+
+ * raptor.h: Added prototype for raptor_calloc_memory
+
+ * raptor_set.c, raptor_nfc.c: Casts for C++
+
+ * LICENSE.html: More LGPL v2.1 fixes
+
+ * win32_raptor_config.h: 1.3.3
+
+2004-08-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * turtle_lexer.l, n3_lexer.l: grammar
+
+ * turtle_lexer.l, n3_lexer.l, fix-flex:
+ fix-flex now inserts the raptor and win32 config includes block
+ at the top of the lexer C.
+
+ * n3_parser.y, n3_lexer.l: win32
+
+ * Several fixes for building on win32 from Chris Pointon
+
+ * win32/raptor.dsw, win32/raptor.dsp: win32 updates from Chris Pointon
+
+ * win32_raptor_config.h:
+ No need for #define YY_NO_UNISTD_H here, it's done in the turtle
+ lexer and parser C source.
+
+ * turtle_parser.y, turtle_lexer.l: Use turtle_parser.h
+
+ * raptor_xml_writer.c, raptor_sax2.c, raptor_qname.c,
+ raptor_parse.c, raptor_namespace.c, raptor_libxml.c: calloc() fixes.
+
+ * Makefile.am:
+ Do not generate *.tab.[ch] for turtle parser but process and rename
+ to make .c, .h.
+ Apply fix-flex to the generated flex header file, to catch another
+ unprotected include of unistd.h.
+
+ * libraptor.3: Document raptor_calloc_memory.
+
+ * raptor_general.c: Added raptor_calloc_memory
+
+ * raptor_www_libwww.c:
+ Add #ifdef RAPTOR_WWW_LIBWWW ... #endif block around content
+
+ * raptor_www_libfetch.c:
+ Add #ifdef RAPTOR_WWW_LIBFETCH ... #endif block around content
+ Use #ifdef HAVE_SYS_PARAM_H for sys/param.h
+
+ * raptor_www_curl.c:
+ Add #ifdef RAPTOR_WWW_LIBCURL ... #endif block around content
+
+ * win32_raptor_config.h: win32 updates from Chris Pointon
+
+ * raptor_www.c: Calloc fix.
+ (raptor_www_get_connection): Return NULL if no WWW library available.
+
+ * raptor_internal.h: Correct RAPTOR_CALLOC macro param names.
+
+ * raptor.h: Export raptor_xml_literal_datatype_uri_string
+
+ * win32/Makefile.am, win32/README.txt, win32/README:
+ README renamed to README.txt
+
+2004-08-12 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_nfc.c: Tidy debug messages.
+ Reset prev_class explicitly.
+
+2004-08-11 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c (raptor_record_ID): c99
+
+ * raptor_nfc.c: Return 0 from raptor_nfc_check on failure
+
+ * raptor_nfc_test.c: Raptor NFC test
+
+ * Makefile.am: Added raptor_nfc_test.c, raptor_nfc_data.c,
+ raptor_nfc.c and raptor_nfc.h
+ Added raptor_nfc_test
+
+ * raptor_utf8.c (raptor_utf8_is_nfc): Use raptor_nfc_check.
+
+ * raptor_nfc.c, raptor_nfc.h: Unicode NFC
+
+ * raptor_internal.h: Added prototype for raptor_nfc_check
+
+ * configure.ac:
+ Check for lengths of u8, u16, u32, char, short, int, long
+
+ * raptor_nfc_data.c: Unicode NFC data tables
+
+ * raptor_parse.c: Updated for raptor_set to raptor_id_set renaming.
+ (raptor_record_ID): Pass in the base_uri to the raptor_id_set_add, do
+ not malloc / free a larger string.
+
+ * raptor_internal.h:
+ Rename the raptor_set* typedef and functions to be raptor_id_set
+
+ * raptor_set.c:
+ Change the implementation to a list of (set of IDs)-per base URI.
+ Each time a base URI is checked it is swapped with the first in
+ the list. The set of IDs (raptor_base_id_set) takes a lot less
+ memory since it isn't storing the string concat(base URI,ID) but just
+ ID. The capacity and size parts are part of the raptor_base_id_set.
+ Rename the structures and functions to be raptor_id_set not raptor_set.
+
+ * raptor_parse.c (raptor_end_element_grammar):
+ Add check for a non-empty property
+ element with both a node element <rdf:Description/> child and
+ property attributes. For bad test bad-23.rdf
+
+ * tests/bad-23.rdf:
+ bad-23.rdf - property attributes and node element content check
+
+ * tests/Makefile.am: Added bad-23.rdf
+
+2004-08-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * libraptor.3: Document check_rdf_id feature
+
+2004-08-02 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c (raptor_set_parser_strict):
+ Set feature_check_rdf_id default true.
+
+ * raptor_parse.c (raptor_record_ID):
+ Use feature_check_rdf_id to always return
+ no rdf:ID check failure when feature is disabled.
+
+ * raptor_general.c (raptor_set_feature, raptor_get_feature):
+ Added RAPTOR_FEATURE_CHECK_RDF_ID
+ (raptor_set_parser_strict): Set feature_check_rdf_id default true.
+
+ * raptor.h: Added RAPTOR_FEATURE_CHECK_RDF_ID
+
+ * raptor_internal.h: Added feature_check_rdf_id
+
+ * ntriples_parse.c (raptor_ntriples_parse_chunk):
+ Move "junk at end of input" test
+ to the end of the function, giving the error only if the current
+ offset isn't at the end of the current line.
+
+2004-07-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_internal.h:
+ Switch to WWW read buffer size of 4096 (from 256 bytes!)
+
+ * raptor_general.c: Switch to read buffer size of 4096
+
+2004-07-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * autogen.sh: move 'rm's inside configure.ac loop
+
+ * autogen.sh: Ensure subdirs get config.guess, config.sub
+
+ * win32/raptortest.cpp: Added raptor_init, raptor_finish (untested).
+
+2004-07-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_locator.c: cast for c++
+
+2004-07-26 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c: Add #ifndef STANDALONE ... #endif around body.
+
+2004-07-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: Bumped version to 1.3.3
+
+ * Snapshotted raptor_1_3_2 for 1.3.2 release
+
+ * configure.ac:
+ Removed configuration for gnome glib, pkgconfig and glib-config
+ to get g_utf8_normalize for Unicode NFC checking.
+
+ * raptor_utf8.c (raptor_utf8_is_nfc):
+ Removed use of g_utf8_normalize for Unicode NFC
+ checking, it seems to give false negatives, is also rather slow since
+ it does normalization rather than just checking for NFC.
+
+ * libraptor.3: Updates for 1.3.2
+
+2004-07-16 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am, tests/ex-54.out, tests/ex-54.rdf,
+ tests/warn-03.out, tests/warn-03.rdf: Renamed warn-03 to ex-54 -
+ it is not an error or a warning, the data is good
+
+2004-07-14 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am, tests/bad-22.rdf:
+ bad-22.rdf testing rdf:li forbidden as a
+ property attribute (Graham Klyne)
+
+2004-07-09 Edd Dumbill <edd@usefulinc.com>
+
+ * raptor_locator.c: add accessors for parts of the raptor_locator
+ struct.
+ * raptor.h: add prototypes for the accessors
+
+2004-07-09 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * ChangeLog: ChangeLog in CVS now
+
+2004-07-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c (raptor_parse_uri_with_connection):
+ Pass up WWW errors to the parser error handler.
+
+2004-06-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: Added RAPTOR_PARSER_TURTLE, RAPTOR_PARSER_NTRIPLES
+ and RAPTOR_PARSER_RDFXML all set to 1
+
+ * raptor_general.c (raptor_init):
+ Added RAPTOR_PARSER_TURTLE, RAPTOR_PARSER_NTRIPLES and
+ RAPTOR_PARSER_RDFXML
+
+ * win32_raptor_config.h: 1.3.2
+
+ * turtle_parser.y, turtle_lexer.l, strcasecmp.c, rdfdump.c,
+ raptor_xml_writer.c, raptor_xml.c, raptor_www_test.c,
+ raptor_www_libxml.c, raptor_www_libwww.c, raptor_www_libfetch.c,
+ raptor_www_curl.c, raptor_www.c, raptor_win32.c, raptor_utf8.c,
+ raptor_uri.c, raptor_stringbuffer.c, raptor_set.c,
+ raptor_sequence.c, raptor_sax2.c, raptor_rss.c, raptor_qname.c,
+ raptor_parse.c, raptor_namespace.c, raptor_locator.c,
+ raptor_libxml.c, raptor_identifier.c, raptor_general.c,
+ raptor_expat.c, ntriples_parse.c, Makefile.am,
+ win32_raptor_config.h, win32_config.h: Renamed win32_config.h to
+ win32_raptor_config.h
+
+2004-06-25 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * ntriples_parse.c (raptor_ntriples_parse_line):
+ Make language on a datatyped literal a warning.
+
+2004-06-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * libraptor.3: Added raptor_alloc_memory. Note where and why it and
+ raptor_free_memory may need to be used in the descriptiona
+ and next to the methods that it applies to.
+
+ * raptor_general.c, raptor.h: Added raptor_alloc_memory. Docs.
+
+2004-06-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac:
+ Added --with-expat-source option to build against an external
+ expat source.
+ Handle old and new style expat source areas.
+ Report expat source dir in summary.
+ Tidy up default messages.
+ Only use expat subdir if it exists.
+
+ * tests/Makefile.am:
+ AM_LDFLAGS does not need LIBS, libraptor.la includes it all.
+
+2004-06-17 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: Zap extra $@ on rule line
+
+2004-06-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: pkg-config is too noisy on errors
+
+ * configure.ac:
+ Only muck about with removing -O2 from flags in maintainer mode.
+
+2004-06-12 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am:
+ Added local distclean-compile rule to override the insane
+ one automake uses by default: rm -f *.tab.c
+
+ * configure.ac: Bumped version to 1.3.2
+
+ * Snapshotted raptor_1_3_1 for 1.3.1 release
+
+ * tests/Makefile.am: add CLEANFILES
+
+ * tests/Makefile.am:
+ Added TESTS with raptor_empty_test the only one right now.
+ Added C include, linking lines
+
+ * tests/empty.c: Test of empty C file, just using raptor.h work
+
+ * raptor_uri.c (raptor_uri_filename_to_uri_string,
+ raptor_uri_uri_string_to_filename_fragment): Casts and
+ char/unsigned char fixes for C++
+
+2004-06-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c (raptor_default_new_uri): Avoid free(NULL) for filename.
+
+ * raptor_general.c (raptor_parse_file): Check before fopen that it
+ is not a directory attempting to be fopen()ed - unix only, with
+ lstat.
+
+ * raptor_www.c (raptor_www_file_fetch): Check before fopen that it
+ is not a directory attempting to be fopen()ed - unix only, with
+ lstat.
+
+ * rdfdump.c: Add error for failure of raptor_uri_filename_to_uri_string
+
+ * raptor_uri.c (raptor_uri_filename_to_uri_string):
+ Unix malloc too large by 2.
+
+ * raptor_uri.c (raptor_default_new_uri): Zero fragment pointer.
+
+ * raptor_uri.c (raptor_default_new_uri): Do not use a NULL filename.
+
+ * raptor_uri.c (raptor_uri_uri_string_to_filename_fragment):
+ Fail if the URI has no path or was going to return an empty string.
+ (assert_filename_to_uri): Test code allow checks for NULL.
+ (main): Test code for silly URIs that should work or fail.
+
+2004-06-06 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_internal.h: Added RAPTOR_FATAL3
+
+ * raptor_uri.c: Fix win32 file/URI encoding to use file:///name
+ and escape things better.
+ (raptor_uri_filename_to_uri_string): Calculate new length correctly,
+ with %-escaping.
+ (raptor_uri_uri_string_to_filename_fragment): Calculate new format.
+ Also do less strlen, strcpy.
+ (main): Change tests to match new win32 file URI, test %-escaping
+ and %-unescaping correctly.
+
+2004-06-04 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_uri.c:
+ NOTE: Not all below is fully working - 3 tests fail at this point.
+ (raptor_uri_filename_to_uri_string): %-escape ' ' and '%' at least
+ as a minimum. Document this. On Windows, generate file:///c:/ ...
+ not c|
+ (raptor_uri_uri_string_to_filename_fragment): Add %-unescaping.
+ (main): Added test cases for %-escaping, %-expanding
+
+ * Makefile.am: Added raptor_uri_win32_test
+
+2004-06-03 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/turtle/rdfq-results.ttl:
+ Updated to
+ http://www.w3.org/2003/03/rdfqr-tests/recording-query-results.html
+ CVS $Id: recording-query-results.html,v 1.9 2004/06/03 12:41:37 aseaborne Exp $
+
+2004-05-31 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c (raptor_parser_error_varargs,
+ raptor_parser_warning_varargs): Chop off trailing \n from messages.
+
+ * raptor_libxml.c (raptor_libxml_error):
+ Chop off trailing \n correctly.
+
+2004-05-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * turtle_lexer.l: Set the uri union field for ':' qname.
+
+ * turtle_parser.y (raptor_turtle_parse_start):
+ Delete any existing buffer content before
+ starting.
+
+ * raptor_general.c:
+ Added feature warn_other_parseTypes, default true in lax mode.
+
+ * raptor_parse.c:
+ Added feature warn_other_parseTypes and used to warn when a parseType
+ Literal is assumed.
+
+ * raptor_internal.h: Added feature warn_other_parsetypes
+
+ * raptor.h: Aded feature warn_other_parsetypes
+
+ * tests/warn-07.out, tests/warn-07.rdf: Replaced by warn-07
+
+ * tests/Makefile.am: Remove ex-50, warn-07 covers it
+
+ * tests/ex-50.out, tests/ex-50.rdf: Replaced by warn-07
+
+ * tests/Makefile.am: Add warn-07
+ Check for right values for warning tests, not just presence of a
+ warning.
+
+2004-05-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * autogen.sh: Add --enable-maintainer-mode
+
+ * configure.ac:
+ Add check for glib-2.0 presence rather than an error barf.
+
+2004-05-28 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am:
+ Add set +e, set -e around multiple tests so they only fail at the end.
+
+ * configure.ac: Only check flex version in maintainer mode
+
+ * Makefile.am: Re-order directives and tidy up.
+ Make lex and yacc rules be maintainer only.
+
+ * Makefile.am: Use automakefile conditionals STRCASECMP and GETOPT
+ for conditional sources.
+
+ * configure.ac: Use automakefile conditionals STRCASECMP and GETOPT
+
+2004-05-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: check for perl
+
+ * Makefile.am: Add fix-flex and use it
+
+ * fix-flex: Fix flex output
+
+ * raptor_internal.h: Added raptor_libxml_free
+
+ * raptor_parse.c (raptor_xml_parse_start, raptor_xml_parse_terminate):
+ Use
+ raptor_libxml_free to tidy up.
+
+ * raptor_libxml.c (raptor_libxml_free):
+ Added to tidy up after a parsing.
+
+ * raptor_parse.c (raptor_xml_parse_terminate):
+ Clean up sax2_element stack after
+ errors.
+
+2004-05-26 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * turtle_lexer.l: Allow _ after : in qnames.
+ Make bare ':' work.
+
+ * tests/turtle/rdf-schema.out, tests/turtle/rdf-schema.ttl:
+ RDF namespace document
+
+ * tests/turtle/rdfs-namespace.out, tests/turtle/rdfs-namespace.ttl:
+ RDFS namespace
+
+ * tests/turtle/Makefile.am: Added test-13, rdf-schema, rdfs-namespace
+
+ * tests/turtle/test-13.out, tests/turtle/test-13.ttl: test bare :
+
+ * turtle_parser.y: Fix RAPTOR_DEBUG args in old format.
+
+ * tests/turtle/Makefile.am: Added test-12
+
+ * tests/turtle/test-12.out, tests/turtle/test-12.ttl:
+ test for _ after : in qnames
+
+ * libraptor.3:
+ Describe use of UTF-8 for literals and strings
+
+ * libraptor.3: 1.3.1 changes
+
+2004-05-25 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h: Added RAPTOR_STATIC for WIN32 when statically linking
+ Fix raptor_print_statement arg s/const//
+
+2004-05-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c (raptor_free_memory, raptor_system_free):
+ Do not return, no return value.
+
+2004-05-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/turtle/rdfq-results.ttl, tests/turtle/rdfq-results.out:
+ Replace XML Schema namespace with 2001 versi
+
+2004-05-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c: Includes re-order, doc
+
+ * rdfdump.c: don't do stdarg.h here - it should be in raptor.h
+
+ * raptor.h:
+ Add include for stdarg.h to get va_list for raptor_vsnprintf
+
+ * raptor_xml.c (raptor_xml_escape_string):
+ q should be an unsigned char*
+
+ * raptor_utf8.c (raptor_unicode_char_to_utf8):
+ Cast for unsigned long to unsigned char
+
+ * raptor_parse.c (raptor_xml_start_element_handler): Cast for memcpy.
+
+ * win32_config.h: patch from Jose for VC6
+
+2004-05-18 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * ntriples_parse.c (raptor_ntriples_generate_statement):
+ Remove use of ntriples_parser,
+ not used.
+
+2004-05-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.spec.in: SNAP
+
+2004-05-12 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * turtle_parser.y, turtle_common.h, ntriples_parse.c:
+ Do not allow any language with datatype literals.
+
+ * tests/turtle/Makefile.am: add zip, tests.zip targets
+
+2004-05-11 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: Bumped version to 1.3.1
+
+ * Snapshotted raptor_1_3_0 for 1.3.0 release
+
+ * turtle_lexer.l: Allow - in qnames, prefix qnames.
+
+ * tests/turtle/Makefile.am: Added test-11
+
+ * tests/turtle/test-11.out, tests/turtle/test-11.ttl:
+ - and _ in qnames, prefixes
+
+2004-05-07 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_sequence.c, raptor_internal.h: Add assert macros
+
+2004-05-04 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c, raptor.h:
+ Export raptor_xml_literal_datatype_uri_string
+
+ * raptor_internal.h:
+ raptor_xml_literal_datatype_uri_string now exported.
+
+ * libraptor.3: Added 1.3.0 items
+
+ * raptor_general.c (raptor_parse_uri_with_connection): Document
+ the Accept: header malarky. Only send it if connection is NULL.
+ Use Accept: MIME-TYPE,*/*;q=0.1
+
+ * raptor_www_curl.c (raptor_www_curl_fetch): append to slist right
+
+ * raptor_general.c (raptor_parse_uri_with_connection): Send
+ "Accept: MIME-TYPE ;*/*" to prefer the specified one rather than
+ accept only that.
+
+ * raptor.h: Added raptor_get_mime_type
+
+ * raptor_general.c (raptor_parse_uri_with_connection):
+ Set Accept header with mime type of this syntax if there is one
+
+ * raptor_www.c (raptor_www_set_http_accept):
+ Make accept value overwrite \0 from Accept:
+
+ * configure.ac: make raptor.rdf
+
+ * turtle_parser.y, raptor_www_libxml.c, raptor_parse.c,
+ ntriples_parse.c: Fixes for c++
+
+ * Makefile.am: added raptor.rdf.in
+
+ * raptor.rdf.in: DOAP
+
+2004-05-02 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * turtle_parser.y: Add xml_literal_datatype_uri to parser context.
+ (raptor_turtle_parse_init,raptor_turtle_parse_terminate): use above
+ (raptor_turtle_generate_statement): Use above to remove language
+ from all literals except xml literals.
+
+ * turtle_common.h: Add xml_literal_datatype_uri to parser context.
+
+ * ntriples_parse.c: Add xml_literal_datatype_uri to parser context.
+ (raptor_ntriples_parse_init,raptor_ntriples_parse_terminate): use
+ above
+ (raptor_ntriples_generate_statement): Use above to remove language
+ from all literals except xml literals.
+
+ * raptor_identifier.c (raptor_identifier_print):
+ Use raptor_xml_literal_datatype_uri_string
+ and save a string.
+
+2004-04-29 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c (main):
+ Use raptor_free_memory to free memory allocated in libraptor.
+
+ * raptor_www_libxml.c (raptor_www_libxml_fetch):
+ Free content type using libxml's xmlFree
+ since it was allocated there.
+
+ * raptor_www_libxml.c, raptor_www_curl.c (raptor_www_libxml_fetch):
+ Make headers for User-Agent: and/or
+ Accept: if they were set in the raptor_www.
+
+ * raptor_www.c (raptor_www_set_http_accept): Added.
+
+ * raptor_internal.h: Added http_accept to raptor_www
+
+ * raptor.h: Added raptor_www_set_http_accept
+
+2004-04-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c (raptor_guess_parser_name):
+ use strrchr to find *last* .
+
+2004-04-14 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_sequence.c (raptor_new_sequence): Zap sequence field.
+
+ * raptor_xml_writer.c (raptor_xml_writer_cdata):
+ Do not copy more bytes than allowed.
+
+ * Makefile.am: Added raptor_expat.c
+
+ * raptor_parse.c: Export some expat-only handlers:
+ raptor_xml_unparsed_entity_decl_handler,
+ raptor_xml_external_entity_ref_handler.
+ (raptor_xml_parse_init): Do not call expat init code here.
+ (raptor_xml_parse_start): Call new raptor_expat_init to initialise
+ parser state.
+
+ * raptor_internal.h: Added RAPTOR_XML_EXPAT only exports including
+ raptor_expat_init prototype.
+
+ * raptor_expat.c: raptor expat parser
+
+2004-04-13 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h: Added xsd and owl namespace URIs
+
+ * raptor_namespace.c (raptor_namespaces_init):
+ Define xsd, owl when defaults is 2+
+
+2004-04-11 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c:
+ (raptor_xml_parse_start) Free expat/libxml contexts from an earlier parsing to ensure resetting of state
+
+ * raptor_stringbuffer.c (raptor_stringbuffer_prepend_string_common):
+ Added
+ (raptor_stringbuffer_prepend_counted_string,
+ raptor_stringbuffer_prepend_string): Added, implemented by above
+ internal function.
+ (main): Added tests for prepending.
+
+ * raptor.h: Add RAPTOR_API for newly exported functions. Add
+ raptor_stringbuffer_prepend_counted_string,
+ raptor_stringbuffer_prepend_string
+
+ * raptor_stringbuffer.c: (main) printf arg
+
+ * raptor_internal.h, raptor.h: Moved raptor_stringbuffer to public API
+
+ * raptor_stringbuffer.c (raptor_stringbuffer_append_stringbuffer):
+ Added.
+ (main): Updated test code for raptor_stringbuffer_append_stringbuffer
+
+2004-04-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c, raptor.h (raptor_guess_parser_name):
+ Added new public class method.
+ (raptor_new_parser_for_content): Now uses above.
+
+ * raptor_internal.h, raptor.h:
+ Move raptor_unicode_char_to_utf8, raptor_utf8_to_unicode_char to
+ public API.
+
+ * INSTALL.html: consistency with librdf instructions.
+ update libxml versions.
+ update automake, autoconf minimums.
+
+ * tests/Makefile.am: fix result codes for split off NFC warnings
+
+ * tests/Makefile.am:
+ Split off NFC warnings so they can fail noisily when glib isn't
+ present to do the check.
+
+ * rapper.1:
+ Document -g/--guess flag to guess the parser to use from the
+ identifier (URI or file name).
+
+ * rdfdump.c:
+ Added -g/--guess flag to use raptor_new_parser_for_content guessing
+ the parser to use from the identifier (URI or file name).
+
+ * turtle_parser.y, raptor_rss.c, raptor_parse.c, ntriples_parse.c:
+ Added scoring factory method recognise_syntax for rdfxml, ntriples,
+ rss, turtle parsers.
+
+ * raptor_internal.h:
+ Added parser scoring factory method recognise_syntax.
+
+ * raptor_general.c (raptor_new_parser_for_content):
+ Added, guessing which parser to
+ instance using scoring factory method recognise_syntax.
+
+ * raptor.h: Added raptor_new_parser_for_content
+
+2004-04-10 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_sequence.c: cast for c++
+
+2004-04-09 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c: Removed use of raptor_print_statement_detailed
+
+ * raptor_internal.h:
+ Removed raptor_print_statement_part_as_ntriples, made static
+
+ * raptor.h: Deprecate raptor_print_statement_detailed
+
+ * raptor_general.c (raptor_print_statement_detailed):
+ Restored, was in raptor.h but useless.
+
+ * raptor_general.c: dates, docucomments
+ (raptor_print_statement_detailed): Deleted - never publically
+ documented or used.
+
+2004-04-08 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: raptor_sequence_test needs to link with libraptor.la
+
+ * turtle_parser.y:
+ rename raptor_free_handler,raptor_print_handler -> as raptor_sequence...
+
+ * raptor.h, raptor_internal.h: Move sequence class to public api.
+
+ * raptor_sequence.c:
+ rename raptor_free_handler,raptor_print_handler -> as raptor_sequence...
+ (raptor_sequence_print_uri): Added.
+ (raptor_sequence_set_print_handler): Added.
+
+ * raptor_internal.h, raptor.h: Export raptor_vsnprintf public.
+
+2004-04-06 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * turtle_parser.y (turtle_parse): Remove un-necessary cast.
+
+ * turtle_parser.y (turtle_parse): Free lexer
+
+2004-04-05 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c:
+ Added HELP_PAD to format long help description over multiple lines.
+
+2004-03-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/turtle/test-00.out: Updated base uri
+
+ * tests/turtle/Makefile.am: Added rdfq-results
+
+ * tests/turtle/rdfq-results.out, tests/turtle/rdfq-results.ttl:
+ RDF Query result set example from
+ http://www.w3.org/2003/03/rdfqr-tests/recording-query-results.html
+
+2004-03-27 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c, turtle_parser.y, rdfdump.c: casts for C++
+
+ * NEWS.html: skeleton 1.3.0 news
+
+ * configure.ac, autogen.sh: Use some AM_INIT_AUTOMAKE options.
+ Require automake1.7, which requires autoconf 2.54
+
+ * examples/Makefile.am:
+ Drop $(shell .. ) which is not portable between makes
+
+ * raptor-src-config.in, raptor-config.in: emit --help usage to
+ stdout, Support --help and exit 0.
+
+2004-03-26 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * libraptor.3: words
+
+ * rapper.1: Document -f
+
+ * TODO.html: bug was libxml2 not me
+
+ * tests/Makefile.am: Add bad-21
+
+ * tests/bad-21.rdf:
+ Check non-namespaced attributes on a property are reported
+
+ * raptor_parse.c (raptor_xml_start_element_handler):
+ Check element, attributes for
+ non-namespaces once we know we are in rdf processing.
+ Check all named attributes for lack of namespace, error and zap
+ if found.
+ (raptor_process_property_attributes): Skip any deleted attributes.
+
+2004-03-25 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/Makefile.am: Added warn-05, warn-06
+
+ * tests/warn-05.out, tests/warn-06.out, tests/warn-05.rdf,
+ tests/warn-06.rdf: Check for warning for unknown rdf namespaced
+ property element, attributes
+
+ * raptor_parse.c (raptor_process_property_attributes):
+ Generate an error for forbidden
+ rdf names, warning for unknown rdf names.
+
+ * raptor_parse.c: Merged rdf_attr_info into rdf_syntax_terms_info.
+ Now we can check for unknown rdf: names
+ (raptor_forbidden_nodeElement_name,
+ raptor_forbidden_propertyElement_name,
+ raptor_forbidden_propertyAttribute_name): Return -1 on unknown name.
+ (raptor_start_element_grammar): Generate an error for forbidden
+ rdf names, warning for unknown rdf names.
+
+ * tests/Makefile.am: Added warn-04
+
+ * tests/warn-04.out, tests/warn-04.rdf:
+ Check for warning for unknown rdf namespaced node element
+
+ * tests/turtle/Makefile.am, tests/Makefile.am:
+ fix grep for Warning output
+
+ * raptor_general.c, raptor.h:
+ Added raptor_free_memory to dealloc memory returned by raptor
+ functions - some systems need this due to having multiple heaps.
+
+ * raptor_general.c (raptor_default_generate_id_handler): doh
+
+ * raptor_general.c (raptor_default_generate_id_handler):
+ Rework not to use tmpid before
+ initialising it.
+
+ * raptor_general.c (main): Free returned uri
+
+ * raptor.h: Added raptor_feature_from_uri
+
+ * Makefile.am: Added raptor_general_test
+
+ * raptor_general.c (raptor_feature_from_uri):
+ Turn a feature URI into a feature number.
+ (main): Added, testing feature enumerations.
+
+ * rdfdump.c: note feature values in -f help
+
+ * rdfdump.c: More help message tidying.
+
+ * rdfdump.c: Alter HELP_TEXT macro so short arg isn't auto-quoted.
+ Use this to add short option options arg to help.
+
+2004-03-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c (raptor_default_generate_id_handler):
+ Don't bump default genid
+ counter when a user_bnodeid is present.
+
+ * rdfdump.c:
+ Allow setting feature optional values -f NAME=VALUE (integer).
+
+ * raptor_general.c, raptor.h:
+ Use raptor_feature type for enumeration calls.
+
+ * raptor_general.c: Tidy feature labels
+
+ * rdfdump.c: Tidy -f help message.
+
+ * rdfdump.c: Re-ordered long_options to be alphabetical by option char.
+ Added -f/--feature FEATURE to set a parser feature.
+ With the value 'help', lists them all using raptor_features_enumerate.
+
+ * raptor.h: Added raptor_get_feature, raptor_features_enumerate.
+ raptor_set_feature gets a return value.
+
+ * raptor_general.c (raptor_set_feature):
+ Delete docs, now has an API. Return a failure value.
+ raptor_features_list - static added.
+ (raptor_features_enumerate): Added, to allow returning
+ of parser feature name, URI and/or label.
+ (raptor_get_feature): Added.
+
+2004-03-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * TODO.html: Add turtle use of raptor_generate_id
+
+ * turtle_parser.y (blank):
+ Use raptor_generate_id when a blank identifier name is
+ given, to allow application to change it.
+
+2004-03-21 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/turtle/test-10.out, tests/turtle/test-09.out, turtle_parser.y:
+ Make Turtle integers emit xsd:integer
+
+2004-03-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_parse.c: Twice.
+
+ * raptor_parse.c: Remove FIXME for other rdf:parseType values -
+ just fall through to Literal
+
+ * raptor_parse.c: FIXME not relevant.
+
+ * ntriples_parse.c (raptor_ntriples_generate_statement):
+ Kill a FIXME, fail with an
+ error on bad rdf:_n property.
+
+ * tests/Makefile.am: Added bad-06.nt
+
+ * tests/bad-06.nt: bad rdf:_n in ntriples
+
+2004-03-18 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * turtle_parser.y: Added INTEGER_LITERAL.
+ Turn it into a xsd:nonNegativeInteger
+
+ * turtle_lexer.l: Added INTEGER_LITERAL.
+
+ * tests/turtle/Makefile.am: Added test-09 test-10
+
+ * tests/turtle/test-09.out, tests/turtle/test-09.ttl,
+ tests/turtle/test-10.out, tests/turtle/test-10.ttl: Integer
+ literal tests
+
+ * tests/Makefile.am, Makefile.am:
+ Ensure rapper is up-to-date and built before tests are run.
+
+2004-03-15 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/warn-03.out, tests/warn-03.rdf:
+ Added warn-03 warning not dieing on NFC in XML literals
+
+ * tests/Makefile.am: Added warn-03
+
+ * raptor_parse.c (raptor_end_element_grammar):
+ For NFC problems in an XML literal,
+ take notice of feature_non_nfc_fatal which defaults to warning,
+ rather than given an error.
+
+2004-02-26 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * tests/turtle/Makefile.am: Added bad-04.ttl
+
+ * tests/turtle/bad-04.ttl: Check , in collection items fails
+
+ * tests/turtle/test-07.ttl: Remove , between items - forbidden.
+
+ * turtle_parser.y (objectList):
+ Remove optional commas for triple objects.
+ (itemList): Added with no commas.
+ (collection): Use itemList not objectList.
+
+ * tests/turtle/Makefile.am: remove test-09.ttl
+
+ * tests/turtle/test-09.out, tests/turtle/test-09.ttl:
+ Comma is required or not in collections, not optional
+
+2004-02-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.spec.in: Export library la files
+
+ * turtle_parser.y (objectList):
+ Allow optional commas in lists of objects - such as in
+ all triple objects and collections.
+
+ * tests/turtle/test-09.out, tests/turtle/test-09.ttl:
+ Added test for optional comms in a collection
+
+ * tests/turtle/Makefile.am: Added test-09.ttl
+
+2004-02-23 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor.h: Add stdio.h
+
+2004-02-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * n3_lexer.l, turtle_lexer.l (main):
+ Don't re-reset the scanner to its address.
+
+ * n3_lexer.l, turtle_lexer.l: Remove RAPTOR_IN_REDLAND
+
+ * turtle_parser.y (main): Use lineno.
+
+ * turtle_parser.y: comment
+
+2004-01-30 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * Makefile.am: deps
+
+ * rapper.1: fix changelog
+
+ * Makefile.am: Make rapper.html
+
+ * rapper.1: urls
+
+2004-01-25 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c (raptor_delete_parser_factories):
+ Free alias if it was set.
+
+2004-01-24 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * rdfdump.c: Don't print (default) when listing valid args for -i
+
+ * rdfdump.c: Use raptor_syntax_name_check to check name; don't
+ make/destroy a parser.
+
+ * raptor_general.c (raptor_syntax_name_check): Added, to check names.
+
+ * raptor.h: Added raptor_syntax_name_check
+
+ * rdfdump.c: Make -i try to make a parser, don't hardcode names.
+
+ * rdfdump.c: Use raptor_syntaxes_enumerate in -i error
+
+ * rdfdump.c: Use raptor_syntaxes_enumerate in usage -i help
+
+ * rapper.1: Updated to mention Turtle.
+
+ * configure.ac: Bumped version to 1.3.0
+
+ * README.html: turtle
+
+ * Snapshotted raptor_1_2_0 for 1.2.0 release
+
+ * libraptor.3, README.html, NEWS.html: Updated for 1.2.0
+
+ * TODO.html: N-Triples Plus to Turtle
+
+2004-01-22 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: Use AC_PROG_LEX and handle when there is no lex or
+ flex gracefully. AM_PROG_LEX set LEX to a value that caused odd
+ configure output.
+
+2004-01-20 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * configure.ac: Updated output files check from n3/ntriples plus
+ to turtle
+
+ * turtle_parser.y, raptor_rss.c, raptor_parse.c, ntriples_parse.c:
+ Update to use raptor_parser_register_factory alias argument
+ to register any old or alternate names.
+
+ * raptor_internal.h: Add alias field to raptor_parser_factory_s.
+ Add alias argument to raptor_parser_register_factory prototype.
+
+ * raptor_general.c (raptor_parser_register_factory,
+ raptor_get_parser_factory): Added an alias argument, used to
+ register a alternate name which is never used or returned in
+ parser enumerations.
+
+ * examples/grapper.c:
+ Added a tooltip for the errors/warnings output box.
+
+ * examples/grapper.c: Use G_TYPE_INT for column 1 of errors
+
+ * examples/grapper.c:
+ Added errors/warnings box, updated with results of parsing.
+
+ * Makefile.am: Added ChangeLog.1
+
+2004-01-19 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c: Define raptor_system_malloc, raptor_system_free
+
+ * raptor_internal.h: RAPTOR_... not LIBRDF_
+
+ * raptor_utf8.c (raptor_utf8_is_nfc): Use SYSTEM_FREE
+
+ * raptor_internal.h: Define SYSTEM_MALLOC, SYSTEM_FREE
+
+2004-01-18 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * turtle_parser.y: fix double free of first_identifier
+
+ * turtle_parser.y: Collections generating triples.
+
+ * turtle_common.h: Add nil/first/rest_uri fields
+
+ * tests/turtle/test-07.out: Updated as a collection test result.
+
+ * tests/turtle/Makefile.am: Added test-08
+
+ * tests/turtle/test-08.out, tests/turtle/test-08.ttl,
+ tests/turtle/test-07.ttl: collection test
+
+ * turtle_lexer.l: Added '(' and ')' for collections.
+
+ * turtle_parser.y:
+ Added collection grammar parts, triples not right yet.
+
+ * raptor_identifier.c (raptor_copy_identifier):
+ Copy literal languages correctly.
+
+ * tests/turtle/test-00.out, tests/turtle/Makefile.am,
+ tests/Makefile.am, turtle_parser.y, turtle_lexer.l,
+ turtle_common.h, raptor_internal.h, raptor_general.c,
+ configure.ac, Makefile.am:
+ N-Triples Plus to Turtle
+ n3_ in filenames to turtle_
+ .ntp to .ttl
+
+ * rdfdump.c: indenting
+
+ * rdfdump.c: Allow turtle, don't document ntriples-plus
+
+ * n3_parser.y, turtle_parser.y: Register under the name turtle
+
+2004-01-14 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_xml_writer.c, raptor_uri.c, raptor_rss.c, raptor_qname.c,
+ raptor_parse.c, raptor_namespace.c, raptor_internal.h,
+ raptor_general.c, ntriples_parse.c: RAPTOR_ERROR* and
+ RAPTOR_FATAL* lose their function arg, using __func__
+
+ * raptor_general.c (raptor_finish):
+ Remove direct call of raptor_terminate_parser_rdfxml
+
+ * raptor_parse.c (raptor_xml_parse_finish_factory): Renamed from
+ raptor_terminate_parser_rdfxml and now static.
+
+ * raptor_internal.h: finish_factory returns void
+
+ * raptor_internal.h: Added finish_factory factory cleanup method.
+ Removed raptor_terminate_parser_rdfxml.
+
+ * raptor_general.c (raptor_delete_parser_factories):
+ Free mime type, URI string. Call
+ new finish_factory factory method.
+
+2004-01-07 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c: year
+
+2004-01-01 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+
+ * raptor_general.c: casts for string ops
+
+ * raptor_www.c, raptor_internal.h, configure.ac:
+ Added WWW access with BSD libfetch.
+
+ * raptor_www_libfetch.c: WWW access with BSD libfetch
+
diff --git a/ChangeLog.6 b/ChangeLog.6
new file mode 100644
index 0000000..fdc5fcb
--- /dev/null
+++ b/ChangeLog.6
@@ -0,0 +1,1812 @@
+2005-12-21 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac, raptor.spec.in, Makefile.am:
+ Write rpm release as 1 (with --enable-release) or SNAP otherwise.
+
+ * src/turtle_parser.y, src/raptor_general.c, utils/rapper.1:
+ updated urls
+
+ * docs/tmpl/section-feature.sgml:
+ Added @RAPTOR_FEATURE_WRITER_XML_DECLARATION
+
+2005-12-20 Dave Beckett <dave@dajobe.org>
+
+ * utils/Makefile.am: Added rapper.html to dist
+
+ * raptor-src-config.in, LICENSE.html, Makefile.am, manifest.pl,
+ configure.ac: ILRT/UB link updates
+
+2005-11-30 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xml_writer.c (raptor_xml_writer_indent):
+ Fix writing an extra newline at doc start.
+
+2005-11-26 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xml_writer.c: Add automatic writing of the XML
+ declaration (dependent on the XML version).
+ (raptor_xml_writer_write_xml_declaration): Added, to support this.
+ New feature RAPTOR_FEATURE_WRITER_XML_DECLARATION can disable
+ this.
+ (main): Update the test code to expect an XML declaration in the
+ string.
+
+ * src/raptor_parse.c: Add do-nothing switch cases for
+ RAPTOR_FEATURE_WRITER_XML_DECLARATION.
+
+ * src/raptor_serialize_rdfxmla.c: Add Adobe XMP compatible output
+ as new serializer rdfxml-xmp based on patch from Sid Steward.
+ Duplicate predicates are ignored for a single subject.
+
+ * src/raptor_serialize_rdfxml.c: Defer writing xml declaration to
+ the xml writer.
+
+ * src/raptor_serialize.c: Add XML declaration writing feature
+ support
+ (RAPTOR_FEATURE_WRITER_XML_DECLARATION) for serializer.
+
+2005-11-25 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: Add test X = 1 for expat and libxml tests. Fixes
+ Issue#0000060
+
+2005-11-22 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_feature.c: Added
+ RAPTOR_FEATURE_WRITER_XML_DECLARATION feature.
+
+ * src/raptor.h: Added RAPTOR_FEATURE_WRITER_XML_DECLARATION to
+ control generating the XML declaration on serializers and XML
+ writer.
+
+2005-11-10 Dave Beckett <dave@dajobe.org>
+
+ * raptor.spec.in: Add gtk-doc docs to rpm
+
+2005-11-04 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-xml.sgml: new functions
+
+ * docs/tmpl/section-feature.sgml: New feature
+
+ * docs/libraptor.3: Updated for 1.4.8
+
+2005-11-02 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-sections.txt:
+ Added raptor_iostream_write_xml_any_escaped_string
+ raptor_xml_any_escape_string
+
+ * src/turtle_parser.y, src/raptor_internal.h, src/n3_parser.y:
+ Added RAPTOR_ASSERT with no return value and use it for turtle and
+ n3 parsers. Some compilers complain at an empty 3rd macro arg
+ with RAPTOR_ASSERT_RETURN.
+
+ * src/raptor_serialize_rss.c: remove ;;
+
+ * src/raptor_rdfxml.c (raptor_generate_statement): Make predicate
+ type fix in reifying.
+
+ * src/raptor_rdfxml.c (raptor_generate_statement): Make predicate
+ revert fix actually work.
+
+ * RELEASE.html: Updates for 1.4.8
+
+ * src/raptor_rdfxml.c, src/turtle_parser.y, src/raptor_rss.c,
+ src/raptor.h, src/ntriples_parse.c, src/n3_parser.y: Revert
+ RAPTOR_IDENTIFIER_TYPE_PREDICATE to
+ RAPTOR_IDENTIFIER_TYPE_RESOURCE change for predicates until the
+ next release.
+
+2005-09-21 Dave Beckett
+
+ * src/raptor_uri.c:
+ (raptor_new_uri_for_xmlbase, raptor_new_uri_for_retrieval):
+ Set ud->path_len to 1 when adding a default path of /
+ Fixes bug 0000045 http://bugs.librdf.org/mantis/view.php?id=45
+
+2005-09-20 Dave Beckett
+
+ * src/raptor_serialize_rdfxmla.c (raptor_rdfxmla_serialize_start):
+ Pass down xml_version to the raptor_xml_writer and write the
+ versioned header.
+
+ * src/raptor_serialize_rdfxml.c (raptor_rdfxml_serialize_start):
+ Pass down xml_version to the raptor_xml_writer and write the
+ versioned header.
+
+ * src/raptor_xml_writer.c: Add xml_version to raptor_xml_writer
+ structure.
+ (raptor_iostream_write_xml_element_start): Add xml_version field
+ and pass it down to the XML escape function.
+ (raptor_new_xml_writer): Init xml_version to 10.
+ (raptor_xml_writer_empty_element, raptor_xml_writer_start_element,
+ raptor_xml_writer_cdata, raptor_xml_writer_cdata_counted): Pass
+ down xml_version.
+ (raptor_xml_writer_set_feature, raptor_xml_writer_get_feature):
+ Handle RAPTOR_FEATURE_WRITER_XML_VERSION.
+
+ * src/raptor_xml.c (raptor_xml_any_escape_string,
+ raptor_iostream_write_xml_any_escaped_string): Added, handling XML
+ 1.0 or XML 1.1 Error if writing #x1-#x1f (excluding #x9, #xA, #xD)
+ or #x7F for XML 1.0
+
+ * src/raptor_serialize.c (raptor_serializer_set_feature,
+ raptor_serializer_get_feature): Add
+ RAPTOR_FEATURE_WRITER_XML_VERSION
+
+ * src/raptor_parse.c: switch on enum updates for feature
+ RAPTOR_FEATURE_WRITER_XML_VERSION for serializer and xml writer
+
+ * src/raptor_feature.c: Added RAPTOR_FEATURE_WRITER_XML_VERSION
+ for serializer and xml writer with short name xmlVersion
+
+ * src/raptor.h: Added RAPTOR_FEATURE_WRITER_XML_VERSION for
+ serializer, xml writer. Added prototypes for
+ raptor_xml_any_escape_string and
+ raptor_iostream_write_xml_any_escaped_string
+
+ * src/raptor_internal.h: raptor_serializer_s gains an xml_version
+ field
+
+ * src/raptor_sax2.c (raptor_sax2_parse_chunk): Once more with
+ static buffer, no vsnprintf
+
+ * src/raptor_sax2.c (raptor_sax2_parse_chunk): Fix error message
+ with 2 args for expat using raptor_vsnprintf.
+
+ * src/raptor_namespace.c (raptor_namespaces_format): XML escape
+ the written namespace name URI
+
+ * tests/ex-59.rdf: correct result
+
+ * tests/ex-59.nt, tests/ex-59.rdf: Test rdfxml serializer escapes
+ dquote in uri attrs
+
+ * tests/Makefile.am: Added RDF_SERIALIZE_TEST_FILES,
+ RDF_SERIALIZE_OUT_FILES and ex-59 for testing the rdfxml
+ serializer
+
+ * examples/Makefile.am: fix libraptor.la dir
+
+2005-09-18 Dave Beckett
+
+ * src/raptor_rdfxml.c (raptor_generate_statement): When reifiying,
+ just copy predicate_type.
+
+ * src/raptor_uri.c (raptor_uri_equals): Alter to accept NULL
+ pointers, which do not compare equal to a non-NULL URI. NULL does
+ equal NULL.
+
+ * src/raptor.h: Document that RAPTOR_IDENTIFIER_TYPE_PREDICATE is
+ never generated by a parser from now, replaced by
+ RAPTOR_IDENTIFIER_TYPE_RESOURCE and
+ RAPTOR_IDENTIFIER_TYPE_XML_LITERAL replaced by
+ RAPTOR_IDENTIFIER_TYPE_LITERAL with the rdf:XMLLiteral datatype.
+
+ * src/n3_parser.y, src/ntriples_parse.c, src/turtle_parser.y,
+ src/raptor_rss.c, src/raptor_rdfxml.c: Replace all
+ RAPTOR_IDENTIFIER_TYPE_PREDICATE with
+ RAPTOR_IDENTIFIER_TYPE_RESOURCE
+
+ * src/raptor_rdfxml.c: Added a new concept for rdf:XMLLiteral
+ Rename RAPTOR_N_CONCEPTS to RAPTOR_RDFXML_N_CONCEPTS
+ (raptor_rdfxml_parse_init): Init it.
+ (raptor_end_element_grammar): Never generate
+ RAPTOR_IDENTIFIER_TYPE_XML_LITERAL, instead generate a
+ RAPTOR_IDENTIFIER_TYPE_LITERAL with the rdf:XMLLiteral datatype.
+
+2005-09-16 Dave Beckett
+
+ * docs/libraptor.3: Update for 1.4.8 - added
+ raptor_set_namespace_handler
+
+ * src/raptor_www.c, src/raptor.h:
+ Revert: remove raptor_www_set_source_uri,
+ raptor_www_set_source_file_handle, raptor_www_retrieve and
+ raptor_www_retrieve_to_string
+
+2005-09-15 Dave Beckett
+
+ * src/raptor.h: delete unused raptor_www_fetch_to_string prototype
+
+ * src/raptor_www.c: autodocs
+ (raptor_www_set_source_uri): Added to set URI for content source
+ (raptor_www_set_source_file_handle): Added to set URI for content
+ source.
+ (raptor_www_file_handle_fetch): Added, with guts of
+ raptor_www_file_fetch.
+ (raptor_www_file_fetch): Modified to call
+ raptor_www_file_handle_fetch.
+ (raptor_www_retrieve): Added to retrieve from whatever source (URI
+ or handle).
+ (raptor_www_retrieve_to_string): Added to retrieve from whatever
+ source (URI or handle) into a string.
+ (raptor_www_fetch): Now a wrapper over raptor_www_retrieve.
+ (raptor_www_fetch_to_string): Now a wrapper over
+ raptor_www_retrieve_to_string.
+
+ * src/raptor.h: Added prototypes for raptor_www_set_source_uri,
+ raptor_www_set_source_file_handle, raptor_www_retrieve,
+ raptor_www_retrieve_to_string and
+ raptor_www_fetch_from_file_handle
+
+ * src/raptor_internal.h: (struct raptor_www_s) gains a handle
+ field
+
+ * src/raptor_parse.c: autodocs
+
+ * src/ntriples_parse.c: autodocs and some code style fixes
+
+2005-09-14 Dave Beckett
+
+ * docs/tmpl/section-parser.sgml: new functions
+
+2005-09-10 Dave Beckett
+
+ * src/raptor_expat.c: Updates to use new raptor_sax2 handler
+ style. The user data now points at the raptor_sax2* object, not
+ the parser.
+ (raptor_expat_init): send SAX2 events to core raptor_sax2_EVENT
+ routines.
+ (raptor_expat_update_document_locator): Moved from raptor_parser.c
+
+ * src/raptor_libxml.c: Updates to use new raptor_sax2 handler
+ style. The user data now points at the raptor_sax2* object, not
+ the parser. All raptor_parser* references are gone and
+ error/fatal error/warnings are returned via handler/data pairs.
+ (raptor_libxml_call_handler): Added to aid returning messages.
+ Deleted old and unused internal entity resolution code.
+ (raptor_libxml_init): send SAX2 events to core raptor_sax2_EVENT
+ routines.
+
+ * src/raptor_internal.h: Removed old and hardly tested internal
+ handling of libxml entities
+
+ * src/raptor_rdfxml.c: Rename raptor_xml_* to raptor_rdfxml_* in
+ structs and functions.
+ (raptor_rdfxml_start_element_handler,
+ raptor_rdfxml_end_element_handler, raptor_cdata_grammar): Move
+ expat BOM fixes to raptor_sax2.c
+ (raptor_rdfxml_parse_init): Use new raptor_sax2_set_EVENT_handler
+ methods. Use raptor_sax2_set_locator.
+ (raptor_get_libxml_context, raptor_set_libxml_document_locator,
+ raptor_get_libxml_document_locator, raptor_get_libxml_entities,
+ raptor_set_libxml_entities, raptor_expat_update_document_locator):
+ Deleted or merged into raptor_sax2.c
+
+ * src/raptor_parse.c (raptor_parser_fatal_error_message_handler,
+ raptor_parser_error_message_handler,
+ raptor_parser_warning_message_handler): Added handlers that take
+ location in same style as user message handler callbacks.
+ (raptor_stats_print): Update for raptor_rdfxml_parser
+
+ * src/raptor_locator.c (raptor_update_document_locator): Moved to
+ raptor_sax2.c
+
+ * src/raptor_general.c (raptor_init, raptor_finish): Call
+ raptor_init_sax2 and raptor_finish_sax2 respectively.
+
+ * src/raptor_internal.h: Removed several libxml/expat/rdxml
+ functions used to be too friendly with internals of other classes.
+ Renamed raptor_xml_parser to raptor_rdfxml_parser. Updated
+ prototype of raptor_libxml_update_document_locator. Added new
+ parser handler prototypes raptor_parser_error_message_handler,
+ raptor_parser_fatal_error_message_handler and
+ raptor_parser_warning_message_handler Added handlers for SAX2
+ events - start element, end element, characters, cdata, comment,
+ unparsed_entity_decl, external_entity_ref named as
+ raptor_sax2_EVENT_handler. raptor_sax2 gains a magic field as
+ this is used as the user data for libxml. raptor_sax2 uses the
+ handler typedefs for the event handlers. raptor_sax2 gains erorr,
+ fatal and warning handler and data fields. Added prototypes for
+ raptor_init_sax2 and raptor_finish_sax2. Updated prototype for
+ raptor_new_sax2. Added prototypes for
+ raptor_sax2_set_start_element_handler,
+ raptor_sax2_set_end_element_handler,
+ raptor_sax2_set_characters_handler, raptor_sax2_set_cdata_handler,
+ raptor_sax2_set_comment_handler,
+ raptor_sax2_set_unparsed_entity_decl_handler and
+ raptor_sax2_set_external_entity_ref_handler Added prototype for
+ raptor_sax2_set_locator. Added prototypes for:
+ raptor_sax2_start_element raptor_sax2_end_element,
+ raptor_sax2_characters, raptor_sax2_cdata, raptor_sax2_comment,
+ raptor_sax2_unparsed_entity_decl and
+ raptor_sax2_external_entity_ref.
+
+ * src/raptor_sax2.c: Now a more complete class
+ (raptor_init_sax2, raptor_finish_sax2): Added, calling any static
+ initialising/finishing.
+ (raptor_new_sax2): Added error, fatal_error and warning data and
+ handler registers. Register magic for libxml2 user_data fixups
+ (raptor_sax2_set_start_element_handler,
+ raptor_sax2_set_end_element_handler,
+ raptor_sax2_set_characters_handler, raptor_sax2_set_cdata_handler,
+ raptor_sax2_set_comment_handler,
+ raptor_sax2_set_unparsed_entity_decl_handler,
+ raptor_sax2_set_external_entity_ref_handler): Added for setting
+ SAX2 callback handlers.
+ (raptor_sax2_set_locator): Added, to set SAX2 file locator.
+ (raptor_sax2_parse_chunk): Update for new handlers, remove all
+ mention of raptor_parser. Use this object (raptor_sax2*) as the
+ user data now, not an external raptor_parser*.
+ (raptor_sax2_update_document_locator): Added, updating the current
+ location for the internal parser.
+ (raptor_sax2_start_element): Added, internal function calling the
+ start element handler, adding various workarounds needed.
+ (raptor_sax2_end_element): Added, internal function calling the
+ end element handler, adding various workarounds needed.
+ (raptor_sax2_characters, raptor_sax2_cdata, raptor_sax2_comment,
+ raptor_sax2_unparsed_entity_decl,
+ raptor_sax2_external_entity_ref): Added, internal functions
+ calling the same-named handler.
+
+2005-09-09 Dave Beckett
+
+ * src/raptor_qname.c: autodocs
+
+ * docs/raptor-sections.txt: Added new functions.
+
+ * src/raptor_internal.h (raptor_parser_s): Add new fields to the
+ end of the struct; add unused1 to try to make old offsets work
+
+ * src/raptor_namespace.c (raptor_namespaces_init): Remove
+ un-necessary casts for constant namespace names.
+
+ * src/raptor_uri.c (raptor_uri_uri_string_to_filename_fragment):
+ For win32, only remove leading / if there is one present. (patch
+ from John C. Barstow)
+ (main): Correct test case result to match above.
+
+ * src/raptor_xslt.c (raptor_xslt_parse_chunk): If the content is
+ in one chunk and is_end is true, call xmlParseChunk with the
+ is_end flag. (patch from René Puls)
+
+2005-09-07 Dave Beckett
+
+ * src/n3_parser.y, src/turtle_parser.y (statement):
+ Handle error recovery when subject is NULL
+
+2005-09-06 Dave Beckett
+
+ * src/turtle_common.c (raptor_stringbuffer_append_turtle_string):
+ Do not check unsigned for <0
+
+ * src/raptor_xml.c (raptor_xml_name_check):
+ Do not check unsigned for <0
+
+ * src/raptor_utf8.c (raptor_utf8_check): Do not check unsigned for <0
+
+ * src/raptor_serialize.c (raptor_serializers_enumerate):
+ counter can never be <0
+
+ * src/raptor_rdfxml.c (raptor_element_content_type_as_string):
+ Do not check unsigned for <0
+
+ * src/raptor_feature.c (raptor_feature_value_type):
+ Do not check unsigned for <0
+
+ * src/ntriples_parse.c (raptor_ntriples_term):
+ Do not check unsigned for <0
+
+ * src/raptor_parse.c (raptor_syntaxes_enumerate):
+ counter can never be <0
+
+2005-08-24 Dave Beckett
+
+ * src/Makefile.am: Add more conditional compiles for serializers
+
+ * src/Makefile.am: Added raptor_serialize_rdfxml.c
+ raptor_serialize_ntriples.c raptor_serialize_simple.c
+
+ * src/raptor_serialize.c: Moved specific serializers into separate
+ files - rdfxml, ntriples, simple
+
+ * src/raptor_serialize_rdfxml.c: RDF/XML serializer
+
+ * src/raptor_serialize_ntriples.c: N-Triples serializer
+
+ * src/raptor_serialize_simple.c: Simple serializer
+
+ * src/raptor-config.in, src/raptor-config.1:
+ s/features/options/ so not to confuse with raptor_feature
+
+ * utils/rapper.c:
+ Add HELP_TEXT_LONG to deal with help that has no short option.
+
+ * utils/rapper.c: fix --show-namespaces help
+
+ * utils/rapper.1: Added --show-namespaces
+
+ * utils/rapper.c: (print_namespaces) Added
+ Added --show-namespaces option - long options only.
+
+ * src/turtle_parser.y, src/raptor_rdfxml.c, src/n3_parser.y:
+ Handle raptor_new_namespace failing.
+
+ * src/turtle_parser.y, src/raptor_rdfxml.c, src/n3_parser.y:
+ Remove calls to raptor_namespaces_start_namespace_full and use the
+ three functions raptor_new_namespace,
+ raptor_namespaces_start_namespace and
+ raptor_parser_start_namespace instead.
+
+ * src/raptor_parse.c (raptor_set_namespace_handler): Added. New
+ user method.
+ (raptor_parser_start_namespace): Added. Internal function to
+ operate when namespaces are declared.
+
+ * src/raptor.h: Added raptor_namespace_handler typedef. Added
+ raptor_set_namespace_handler prototype.
+
+ * src/raptor_internal.h: raptor_parser_s gains namespace_handler
+ and namespace_handler_user_data fields. Added
+ raptor_parser_start_namespace prototype.
+
+2005-08-24 Dave Beckett
+
+ * tests/Makefile.am: link to libxml2 bug report
+
+ * src/raptor_rss.c (raptor_rss_emit_type_triple,
+ raptor_rss_emit_enclosure, raptor_rss_emit_connection): Zap
+ literal language and datatype before setting up statement objects.
+
+ * src/ntriples_parse.c (raptor_ntriples_generate_statement): Zap
+ literal language and datatype before setting up statement objects.
+
+ * src/n3_parser.y (raptor_n3_generate_statement): Zap literal
+ language and datatype for !literals. Add assertion.
+
+ * src/raptor_internal.h (RAPTOR_ASSERT_RETURN): Remove ()s around
+ return to allow no-value.
+
+ * src/turtle_parser.y (raptor_turtle_generate_statement): Zap
+ literal language and datatype for !literals. Add assertion.
+
+2005-08-22 Dave Beckett
+
+ * src/raptor.h: autodocs fixes
+
+ * src/raptor.h: autodocs
+
+ * docs/raptor-sections.txt: raptor_uri_init now internal
+
+ * src/raptor_parse.c: autodocs
+
+ * docs/tmpl/section-unused.sgml: raptor_uri_init now internal
+
+ * docs/tmpl/section-general.sgml, src/raptor_internal.h: Remove
+ unused container_test_handler function.
+
+ * src/raptor.h, src/raptor_xml.c, src/raptor_sequence.c,
+ src/raptor_iostream.c, src/raptor_stringbuffer.c: autodocs
+
+ * docs/raptor-sections.txt: No raptor_container_test_handler
+
+ * src/raptor.h: raptor_uri_init was internal
+
+ * src/raptor_uri.c: autodocs
+
+ * src/raptor_internal.h: raptor_uri_init was internal
+
+ * src/raptor_uri.c: autodocs
+
+2005-08-19 Dave Beckett
+
+ * Makefile.am: Enable gtk doc with make distcheck
+
+ * docs/tmpl/section-xml-namespace.sgml: args
+
+ * src/raptor_namespace.c, src/raptor.h, src/raptor_xml.c,
+ src/raptor_serialize.c, src/raptor_qname.c, src/raptor_parse.c,
+ src/raptor_iostream.c, src/raptor_sequence.c,
+ src/raptor_general.c, src/raptor_feature.c: autodocs
+
+ * docs/version.xml.in: version.xml.in
+
+ * docs/tmpl/section-serializer.sgml: whitespace
+
+ * src/raptor_sequence.c: autodocs
+
+ * src/raptor_xml.c (raptor_xml_escape_string): autodocs escapes
+
+ * src/ntriples_parse.c, src/raptor.h, src/raptor_feature.c,
+ src/raptor_general.c, src/raptor_identifier.c,
+ src/raptor_iostream.c, src/raptor_locator.c,
+ src/raptor_namespace.c, src/raptor_nfc.c, src/raptor_nfc_test.c,
+ src/raptor_parse.c, src/raptor_qname.c, src/raptor_rdfxml.c,
+ src/raptor_rfc2396.c, src/raptor_sequence.c,
+ src/raptor_serialize.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_set.c, src/raptor_stringbuffer.c, src/raptor_uri.c,
+ src/raptor_utf8.c, src/raptor_www.c, src/raptor_www_libwww.c,
+ src/raptor_xml.c, src/raptor_xml_writer.c, src/turtle_common.c:
+ autodocs reformatted for gtk-doc
+
+ * docs/tmpl/section-constants.sgml,
+ docs/tmpl/section-feature.sgml, docs/tmpl/section-general.sgml,
+ docs/tmpl/section-iostream.sgml, docs/tmpl/section-locator.sgml,
+ docs/tmpl/section-memory.sgml, docs/tmpl/section-parser.sgml,
+ docs/tmpl/section-sequence.sgml,
+ docs/tmpl/section-serializer.sgml,
+ docs/tmpl/section-stringbuffer.sgml,
+ docs/tmpl/section-triples.sgml, docs/tmpl/section-unicode.sgml,
+ docs/tmpl/section-unused.sgml, docs/tmpl/section-uri-factory.sgml,
+ docs/tmpl/section-uri.sgml, docs/tmpl/section-www.sgml,
+ docs/tmpl/section-xml-namespace.sgml,
+ docs/tmpl/section-xml-qname.sgml, docs/tmpl/section-xml.sgml:
+ initial templates
+
+ * docs/raptor-docs.xml: fix
+
+ * docs/raptor-docs.xml, docs/raptor-overrides.txt,
+ docs/raptor-sections.txt: gtk-doc files
+
+ * docs/Makefile.am, configure.ac: Enable gtk-doc
+
+ * configure.ac: check for gtk-doc
+
+2005-08-19 Dave Beckett
+
+ * src/raptor-config.1: Document --features and --help. Order
+ flags alphabetically in summary and body.
+
+ * src/raptor-config.in: Add --features argument to list configured
+ or discovered features of the raptor library
+
+ * configure.ac: Add AC_SUBSTs for recording discovered features:
+ RAPTOR_WWW_LIBRARY (or none), RAPTOR_XML_PARSER (or none),
+ RAPTOR_PARSERS (list) and RAPTOR_SERIALIZERS (list).
+
+2005-08-18 Dave Beckett
+
+ * src/raptor_sax2.c (raptor_sax2_parse_start): Fix for expat
+
+ * src/raptor_rdfxml.c (raptor_xml_unparsed_entity_decl_handler,
+ raptor_xml_external_entity_ref_handler): Casts for gcc4
+
+ * src/raptor_expat.c (raptor_expat_init): Casts for expat to use
+ sax2 handlers.
+
+ * src/raptor_internal.h: Move raptor_sax2 declaration outside
+ libxml-only block Fixup general arguments for
+ raptor_xml_unparsed_entity_decl_handler and
+ raptor_xml_external_entity_ref_handler.
+
+ * src/raptor_rdfxml.c (raptor_xml_unparsed_entity_decl_handler,
+ raptor_xml_external_entity_ref_handler): Generalise args from
+ expat-specific.
+ (raptor_xml_parse_init): Init sax2 handler fields
+
+ * src/raptor_libxml.c (raptor_libxml_init): Use sax2 structure
+ handlers
+
+ * src/raptor_expat.c (raptor_expat_init): Use sax2 structure
+ handlers
+
+ * src/raptor_internal.h: raptor_sax2 gains handlers for start/end
+ element, characters, cdata, comment, unparsed entity declaration,
+ extenal entity reference.
+
+ * src/raptor_sax2.c (raptor_sax2_parse_start): Init expat and
+ libxml the same
+
+ * src/raptor_libxml.c (raptor_libxml_init): Take raptor_sax2* and
+ raptor_uri* args
+
+ * src/raptor_expat.c (raptor_expat_init): Take raptor_sax2* and
+ raptor_uri* args
+
+ * src/raptor_internal.h: raptor_libxml_init and raptor_expat_init
+ take same args
+
+ * src/turtle_parser.y, src/raptor_xslt.c, src/raptor_rss.c,
+ src/raptor_rdfxml.c, src/raptor_guess.c, src/ntriples_parse.c,
+ src/n3_parser.y: Update uses of raptor_parser_register_factory to
+ remove alias argument and add calls to
+ raptor_parser_factory_add_alias for raptor
+ (rdfxml) and ntriplesplus (turtle)
+
+ * src/raptor_internal.h: Update raptor_parser_register_factory
+ prototype to return the registered factory and remove the alias
+ arg. Added prototype for raptor_parser_factory_add_alias
+
+ * src/raptor_parse.c (raptor_parser_register_factory): Now returns
+ the registered factory. Removed alias arg into new function:
+ (raptor_parser_factory_add_alias): Added.
+
+2005-08-17 Dave Beckett
+
+ * src/Makefile.am: maintainer clean n3 files
+
+ * src/Makefile.am: clean n3 tests
+
+ * src/n3_lexer.l (n3_lexer_syntax_error): Added, from turtle.
+
+ * src/n3_lexer.l: Added n3_lexer_syntax_error
+ (<LITERAL>\"\"\"): Copy just the len and always terminate the
+ string.
+ (n3_copy_string_token): Handle empty strings without stringbuffer
+ and use raptor_stringbuffer_append_turtle_string for escapes.
+ Ensure string is always termianted.
+
+ * src/n3_common.h: added stringbuffer field
+
+ * src/turtle_parser.y: Expect 9 conflicts. Added FLOATING_LITERAL
+ (FLOATING_LITERAL): Use raptor_new_identifier_from_double common
+ with n3.
+
+ * src/n3_parser.y (FLOATING_LITERAL): Use
+ raptor_new_identifier_from_double common with turtle.
+
+ * src/turtle_lexer.l (<LITERAL>\"\"\"): Copy just the len and
+ always terminate the string. Added doubles to Turtle.
+ (turtle_copy_string_token): Handle empty strings without
+ stringbuffer. Ensure string is always termianted.
+ (turtle_token_print): Print FLOATING_LITERAL
+
+ * tests/turtle/test-20.ttl, tests/turtle/test-20.out,
+ tests/turtle/Makefile.am: Add test-20 for empty literals
+
+ * tests/turtle/Makefile.am: re-add test-19
+
+2005-08-16 Dave Beckett
+
+ * src/raptor_internal.h: Added raptor_new_identifier_from_double
+ pointer
+
+ * src/raptor_xsd.c: raptor_xsd.c
+
+ * src/Makefile.am: Added raptor_xsd.c
+
+ * src/n3_parser.y, src/n3_lexer.l: Add double constants to N3
+ parser
+
+ * src/n3_lexer.l (main): Make uri_string an unsigned char*
+
+ * tests/turtle/Makefile.am: remove test-19 for now, no double
+ constants
+
+ * tests/turtle/Makefile.am, tests/turtle/test-19.out,
+ tests/turtle/test-19.ttl: added test-19 for 1.0 as a double
+
+ * src/Makefile.am: Add turtle_common.c
+
+ * tests/turtle/test-18.out: Remove header/footer
+
+ * src/turtle_parser.y: 2005
+
+ * src/turtle_lexer.l: Added turtle_lexer_syntax_error Build up
+ long strings inside a stringbuffer with
+ raptor_stringbuffer_append_turtle_string and avoid greedy match of
+ """s
+ (turtle_copy_string_token): Use
+ raptor_stringbuffer_append_turtle_string
+ (turtle_lexer_syntax_error): Added.
+
+ * src/raptor_internal.h: Added
+ raptor_stringbuffer_append_turtle_string prototype
+
+ * src/turtle_common.h: Added raptor_stringbuffer* field sb
+
+ * src/turtle_common.c: Raptor Turtle common code with
+ raptor_stringbuffer_append_turtle_string from raptor_turtle.l
+
+ * tests/turtle/Makefile.am, tests/turtle/test-18.out,
+ tests/turtle/test-18.ttl: Added test-18 for multiple long literals
+ with escapes
+
+ * src/raptor_serialize_rss.c (raptor_rss10_emit_item): Die in
+ debug mode with NULL item - all calls to this are currently
+ wrapped with a check.
+ (raptor_rss10_emit_item): Do not emit atom author when no such
+ item exists.
+
+ * manifest.pl: typo
+
+2005-08-11 Dave Beckett
+
+ * autogen.sh: Rewrite with functions, generalize to any redland
+ package. Add docs.
+
+ * raptor.spec.in: - Update Source:
+ - Use %makeinstall
+
+2005-08-10 Dave Beckett
+
+ * raptor.spec.in: Use %configure and %{_make}
+
+2005-08-08 Dave Beckett
+
+ * src/raptor_rss_common.c, src/raptor_rss.c,
+ src/raptor_internal.h: Move time.h and sys/time.h #ifdef and
+ includes to raptor_internal.h since time_t is mentioned there and
+ visible to all files.
+
+ * tests/Makefile.am: adjust -I to point to srcdir for
+ raptor_empty_test
+
+2005-07-31 Dave Beckett
+
+ * src/raptor_xml_writer.c (main): syntax
+
+ * src/raptor_uri.c: Add (void) casts for fwrite debug messages
+
+ * src/raptor_xml_writer.c, src/raptor_rdfxml.c, src/raptor_nfc_test.c:
+ Add (void) casts for fwrite debug messages
+
+ * Source re-organisation - libraptor code moved to new src/ dir.
+ rapper and rdfdif moved to new utils/ dir. Other manual pages to
+ docs/.
+
+2005-07-27 Dave Beckett
+
+ * Makefile.am: Add n3_lexer_test, n3_parser_test for maintainer
+
+ * n3_parser.y, turtle_parser.y (main): Make it compile
+
+ * n3_parser.y: Updates from turtle_parser.y:
+ gcc4 ignored return warning fixes:
+ (main): Check fread() return value and throw a user error.
+ (main): Fix for gcc4
+ (main) Move filename here
+
+ * examples/grapper.c: Add author url
+
+ * raptor_rss.c (raptor_rss_uplift_fields): Add possibility of
+ normalizing fields, but no code to do it yet.
+
+ * raptor_rss_common.c (raptor_rss_date_uplift): fail and do
+ nothing if function returns <0
+
+ * raptor_rss.c (raptor_rss_uplift_fields): Moved date code into
+ raptor_rss_date_uplift and call it.
+
+ * raptor_rss.h: Added raptor_rss_date_uplift prototype
+
+ * raptor_rss_common.c (raptor_rss_date_uplift): Added, pulled out
+ of raptor_rss.c
+
+ * turtle_parser.y: gcc4 ignored return warning fixes:
+ (main): Check fread() return value and throw a user error.
+
+2005-07-25 Dave Beckett
+
+ * examples/grapper.c (fs_ok_button_callback): Protect from
+ defining when when not used as a callback.
+ (open_button_callback): cast for gcc4
+
+2005-07-24 Dave Beckett
+
+ * raptor_rss.c (raptor_rss_parser_processNode): for rss:link and
+ atom:link with href, allow multiple link for atom, and continue to
+ ignore all but <link rel="altenrate"> for rss.
+
+ * raptor_rss_common.c: Tidying.
+ Added atom:feed and atom:entry to raptor_rss_types_info.
+ Declare atom namespace URI string raptor_atom_namespace_uri
+
+ * raptor_rss.h: Added RAPTOR_ATOM_FEED, RAPTOR_ATOM_ENTRY.
+
+ * raptor_serialize_rss.c: Add atom 1.0 serializing by generalising
+ rss 1.0 serializing. Change field names to reflect this
+ rdf_nspace -> default_nspace, rdf_RDF_element -> root_element.
+ Add is_atom flag.
+ (raptor_rss10_serialize_init): Init is_atom flag.
+ (raptor_rss10_move_statements, raptor_rss10_store_statement):
+ Rename back fields translated to rss: namespace.
+ (raptor_rss10_build_xml_names): Init namespace qname for rss/atom.
+ Declare the default namespace to rss/atom. Ignore all item types
+ but rss:item for atom; all but atom:author for rss. For item node
+ type use atom:entry / rss:item.
+ (raptor_rss10_emit_item): Add emit_container flag to prevent
+ generating the containing elements. For atom:author, generate it
+ inline for atom, ignore it for rss. When generating URI-valued
+ fields for atom, make them element content. For atom, do not
+ generate rdf:Seq block.
+ (raptor_rss10_serialize_end): Only emit node type rss:item (aka
+ atom:entry) for atom.
+ (raptor_init_serializer_atom): Added.
+
+ * configure.ac: Added atom serializer, enabled for maintainer
+ only.
+
+ * raptor_general.c (raptor_init): Add call to
+ raptor_init_serializer_atom if enabled
+
+ * raptor_internal.h: Added prototype for
+ raptor_init_serializer_atom Added raptor_atom_namespace_uri
+
+ * raptor_serialize_rss.c (raptor_rss10_serialize_end): End with an
+ error if no rss channel was found.
+
+ * Makefile.am: Use RAPTOR_SERIALIZER_RSS_1_0 for new separate rss
+ serializer. Use RAPTOR_RSS_COMMON when either rss parser or
+ serializer is needed.
+
+ * configure.ac: RSS 1.0 serializer is always available and does
+ not need the libxml requirements of the RSS tag soup parser.
+ Added RAPTOR_SERIALIZER_RSS_1_0 define and makefile conditional.
+ Added RAPTOR_RSS_COMMON when any rss code is needed.
+
+ * raptor_rss.c, raptor_rss_common.c, raptor_serialize_rss.c: Moved
+ common code between parser and serializer from raptor_rss.c into
+ new raptor_rss_common.c as new class raptor_rss_model. Moved
+ rss-1.0 serializer into new raptor_serialize_rss.c. Both can be
+ compiled independent of the other.
+
+ * raptor_rss.h: Redland Parser Toolkit Internal RSS Model and API
+
+ * raptor_internal.h: Add RAPTOR_PARSEDATE_FUNCTION macro for
+ parsedate.c
+
+ * raptor_general.c (raptor_init): Use define
+ RAPTOR_SERIALIZER_RSS_1_0 to call raptor_init_serializer_rss10
+
+ * raptor_xml.c, raptor_sax2.c: Moved raptor_new_xml_element,
+ raptor_free_xml_element, raptor_xml_element_set_attributes,
+ raptor_xml_element_declare_namespace, raptor_print_xml_element,
+ raptor_iostream_write_xml_element from raptor_sax2.c to
+ raptor_xml.c
+
+2005-07-23 Dave Beckett
+
+ * raptor_rss.c: More base URIs on base URIs fixes.
+ (raptor_rss_parser_processNode): Ensure base URI is always copied
+ at start element, always freed at end element. Make sure xml:base
+ processing is done for all elements including document and
+ typed-node ones.
+ (raptor_rss_parse_chunk): Remove duplicate document base URI
+ setting.
+
+2005-07-22 Dave Beckett
+
+ * raptor_rss.c: raptor_rss_info gains flags field to store
+ RAPTOR_RSS_INFO_FLAG_URI_VALUE where the value of the element
+ <foo>value</foo> is always a URI. Apply that to atom:id,
+ atom:icon and atom:logo. struct raptor_rss_parser_context_s gains
+ a sequence of base URIs per-element.
+ (raptor_rss_context_init, raptor_rss_context_terminate): Init and
+ free sequence of base URIs.
+ (raptor_rss_parse_start): Start base URI sequence with parser base
+ URI.
+ (raptor_rss_parser_processNode): Init base_uri from top of stack
+ of base URIs. Update base_uri from an xml:base arg, relative to
+ the current base URI. Use the base URI for all URi constructions.
+ Push the new base URI after an element has been found. Pop the
+ base URI at the end of an element. At the end of an element, if
+ the field always has a URI value, convert it.
+ (raptor_rss_parse_chunk): Init the URI sequence with the parser
+ base URI.
+
+ * raptor_rss.c: map raptor_atom_to_rss: turn more atom cloned rss
+ fields into rss fields.
+ (raptor_rss_uplift_fields): Change default action to copy
+ (duplicate) fields.
+ (raptor_rss10_emit_item): Do not emit link to atom:author types in
+ rss1.0
+ (raptor_rss10_serialize_end): Do not emit atom:author type in
+ rss1.0
+
+ * raptor_rss.c: Added atom 1.0 namespace (ATOM1_0_NAMESPACE_URI,
+ ASTOM1_0_NS) and terms. Turn old atom 0.3 terms into 1.0 versions
+ where known using raptor_atom_to_rss.
+ (raptor_rss_parser_processNode): Handle atom feed element
+ properly, make a new channel item. Convert atom 0.3 namespaced
+ elements to atom 1.0 Use atom:id to get a URI for the feed/entry
+ Copy atom:published to dc:date and atom:rights to dc:rights via
+ raptor_rss_uplift_map.
+ (raptor_rss_uplift_fields): Copy dc:date and atom:rights
+
+ * raptor_rss.c: Added content: namespace CONTENT_NAMESPACE_URI,
+ prefix "content:"
+ Added content:encoded field RAPTOR_RSS_FIELD_CONTENT_ENCODED
+ (raptor_rss_uplift_fields): Added an uplift from description to
+ content:encoded
+ (raptor_rss10_emit_item): Write content:encoded using
+ <![CDATA[...]]>
+
+2005-07-19 Dave Beckett
+
+ * raptor_guess.c (raptor_guess_parse_chunk): unused var parser
+
+ * ntriples_parse.c (raptor_init_parser_ntriples): Do not register
+ interest in text/plain -- too general.
+
+2005-07-18 Dave Beckett
+
+ * raptor_guess.c: Slim down, to use raptor_parser_exec.
+ (raptor_guess_parse_start): Deleted again.
+ (raptor_guess_parse_chunk): Use guessing and raptor_parser_exec to
+ switch to the right parser.
+
+ * raptor_internal.h: Added prototype to raptor_parser_exec
+
+ * raptor_parse.c (raptor_parser_exec): Added to turn one parser
+ type into another in-situ.
+
+ * rdfdump.c: make -g invoke the guess parser and report the
+ resulting parser at the first triple returned
+
+ * raptor_guess.c (raptor_guess_parse_start): Added.
+ (raptor_guess_parse_chunk): Pass in buffer to
+ raptor_guess_parser_name since we have it. Work with no
+ content_type such as when using a filename alone.
+
+ * ntriples_parse.c (raptor_ntriples_parse_chunk): Handle ending on
+ \r\n by updating 'start' by 1 position.
+
+ * ntriples_parse.c (raptor_ntriples_term): Check sscanf return to
+ catch bad \u or \U hex escape.
+
+ * turtle_lexer.l (turtle_copy_string_token): Check sscanf return
+ to catch bad \u or \U hex escape.
+
+ * raptor_general.c (raptor_init): Added guessing parser
+
+ * configure.ac, Makefile.am: Added raptor_guess.c
+
+ * raptor_guess.c: guessing parser using content type and an
+ internal parser
+
+ * raptor_xslt.c (raptor_xslt_parse_start): No need to init column,
+ byte locator.
+
+ * raptor_rdfxml.c (raptor_xml_parse_recognise_syntax): Guess that
+ application/xml is likely RDF/XML
+
+ * raptor_internal.h: raptor_parser_factory_s gains a
+ content_type_handler field.
+
+ * raptor_parse.c (raptor_start_parse): Init locator line, column,
+ byte to -1 (unknown)
+ (raptor_parse_uri_content_type_handler): Added to handle
+ raptor_www content type field return. Pass on to factory method
+ content_type_handler if present.
+ (raptor_parse_uri_with_connection): Init
+ raptor_parse_uri_content_type_handler to receive raptor_www
+ callbacks using raptor_www_set_content_type_handler.
+ (raptor_guess_parser_name): Check static buffer size for overflow.
+ Add some comments.
+
+ * raptor_xslt.c (raptor_xslt_parse_start): Use
+ raptor_parser_copy_user_state
+
+ * raptor_parse.c (raptor_parser_copy_user_state): Added.
+
+ * raptor_internal.h: Added prototype for raptor_parser_copy_user_state
+
+ * tests/ex-58.rdf, tests/ex-58.out, tests/Makefile.am: Added ex-58.
+ See http://lists.w3.org/Archives/Public/www-archive/2005Jul/0017.html
+ for discussion.
+
+ * raptor_rdfxml.c (raptor_end_element_grammar): When emitting
+ literals, handle a datatyped empty literal. Merge the property
+ element/member property element code.
+
+ * tests/ex-57.rdf, tests/ex-57.out, tests/Makefile.am: Added ex-57.
+ See http://lists.w3.org/Archives/Public/www-rdf-comments/2005AprJun/0000.html
+ for discussion.
+
+2005-07-13 Dave Beckett
+
+ * turtle_lexer.l: Switch qname, blank node and prefix definitions
+ to SPARQL ones.
+ (main): Fixes for gcc4
+
+ * turtle_parser.y (main): Fix for gcc4
+
+ * raptor_utf8.c (raptor_unicode_is_xml11_namechar):
+ Call raptor_unicode_is_xml11_namestartchar.
+
+2005-07-01 Dave Beckett
+
+ * configure.ac: Check for isascii, for parsedate.y
+
+ * parsedate.y: Update source links
+
+2005-06-29 Dave Beckett
+
+ * raptor_rss.c (raptor_rss_uplift_fields): Fix valid condition.
+
+ * raptor_rss.c: raptor_rss_uplift_map - added, rss091:pubDate ->
+ dc:date in ISO format
+ (raptor_rss_uplift_fields): Added, to search for fields to uplift.
+ (raptor_rss_uplift_items): Added, to scan items to uplift.
+ (raptor_rss_parse_chunk): Call raptor_rss_uplift_items.
+
+2005-06-17 Dave Beckett
+
+ * raptor.spec.in: License not Copyright header
+
+2005-06-12 Dave Beckett
+
+ * raptor_rss.c: update for INN parsedate
+
+ * configure.ac: Look for parsedate in libINN
+
+2005-06-11 Dave Beckett
+
+ * Makefile.am: Add parsedate.y to EXTRA_DIST
+
+ * configure.ac: Better check for parsedate function
+
+ * raptor_rss.c: Add the time includes for AC_HEADER_TIME
+
+ * configure.ac: Add the standard AC_HEADER_TIME checks.
+
+ * raptor_rss.c: Turn rss091:date into dc:date using a date parsing
+ function PARSEDATE_FUNCTION to decode it and strftiem to make the
+ new ISO format.
+
+ * configure.ac: Get date parsing code from parsedate, curl
+ curl_getdate or raptor parsedate if neither is available.
+
+ * Makefile.am: Add parsedate.c if PARSEDATE defined Build
+ parsedate.c from parsedate.y
+
+ * parsedate.y: Fixes to build in raptor
+
+ * parsedate.y: Imported public domain date parsing code from
+ http://cvs.php.net/php-src/ext/standard/parsedate.y
+
+2005-06-10 Dave Beckett
+
+ * raptor_rss.c: Added Suzan Foster to copyright
+
+2005-06-08 Dave Beckett
+
+ * rdfdiff.c: Casts for c++
+
+ * win32_raptor_config.h, configure.ac: Bumped version to 1.4.8
+
+ * Snapshotted raptor_1_4_7 for 1.4.7 release
+
+ * libraptor.3: Note no changes in 1.4.6 and 1.4.7
+
+2005-06-07 Dave Beckett
+
+ * raptor_serialize_rdfxmla.c (raptor_new_qname_from_resource):
+ Fail to split predicate if entire uri is an XML name - it's
+ probably not an absolute URI.
+
+ * raptor_serialize.c (raptor_rdfxml_serialize_statement): Fail to
+ split predicate if entire uri is an XML name - it's probably not
+ an absolute URI.
+
+ * raptor_namespace.c (raptor_namespaces_find_namespace_by_uri):
+ Return NULL if ns_uri is NULL.
+
+2005-06-06 Dave Beckett
+
+ * raptor_rss.c (raptor_rss_emit):
+ Fix crash when no RSS channel is present (Suzan Foster)
+
+2005-06-01 Dave Beckett
+
+ * Makefile.am: Added ChangeLog.[2-5]
+
+ * ChangeLog: 2004 to ChangeLog.5
+
+ * raptor_rss.c (raptor_rss_parser_processNode): Copy attribute
+ value before storing in the item field.
+
+2005-05-25 Dave Beckett
+
+ * raptor_xslt.c: docs
+
+2005-05-22 Dave Beckett
+
+ * configure.ac: Test for libxslt/xslt.h as well as library, and
+ disable if missing.
+
+2005-05-19 Dave Beckett
+
+ * configure.ac, win32_raptor_config.h: Bumped version to 1.4.7
+
+ * Snapshotted raptor_1_4_6 for 1.4.6 release
+
+ * win32/Makefile.am, win32/rapper.vcproj, win32/raptor.sln,
+ win32/raptor.vcproj, win32/raptortest.vcproj: Import configuration
+ from John Barstow
+
+ * win32/README.txt: updates
+
+ * win32_raptor_config.h: Switch to libxml
+
+ * win32_raptor_config.h: Spelling: RAPTOR_INLINE
+
+ * raptor_general.c (raptor_init): Added conditionals around
+ serializers: RAPTOR_SERIALIZER_RDFXML/NTRIPLES/RDFXML_ABBREV
+
+ * Makefile.am: Added conditionally included
+ RAPTOR_SERIALIZER_RDFXML_ABBREV
+
+ * configure.ac: Added --enable-serializers=LIST and serializers to
+ summary. Reformat other help messages to match.
+
+2005-05-18 Dave Beckett
+
+ * turtle_parser.y: (main) Move filename here
+
+ * configure.ac: Add proper check for libxslt
+
+ * configure.ac: default memory-signing no
+
+ * configure.ac, rdfdump.c: Bugs to http://bugs.librdf.org/
+
+2005-05-17 Dave Beckett
+
+ * raptor_identifier.c, raptor_parse.c, raptor_serialize.c,
+ raptor_serialize_rdfxmla.c, raptor_sax2.c, raptor_rdfxml.c: Casts
+ for RAPTOR_FREE
+
+ * configure.ac: usage message formatting
+
+ * raptor_general.c (raptor_free_statement): Casts for RAPTOR_FREE
+
+ * configure.ac: Added --with-memory-signing raptor signing memory
+ debugging Reformatted some other --with help messages.
+
+ * raptor_general.c (raptor_sign_malloc, raptor_sign_calloc,
+ raptor_sign_realloc, raptor_sign_free): Added raptor signing
+ memory debugging trigged by RAPTOR_MEMORY_SIGN.
+
+ * raptor_internal.h: Added raptor signing memory debugging trigged
+ by RAPTOR_MEMORY_SIGN
+
+ * n3_lexer.l: Use RAPTOR_MALLOC, RAPTOR_FREE
+
+ * n3_parser.y, turtle_parser.y (directive, resource): Use
+ RAPTOR_MALLOC, RAPTOR_FREE
+
+ * turtle_lexer.l: Use RAPTOR_MALLOC, RAPTOR_FREE
+
+ * rdfdiff.c:
+ (rdfdiff_new_file, rdfdiff_new_blank) Use RAPTOR_MALLOC rather
+ than strdup.
+
+ * raptor_www_curl.c (raptor_www_curl_header_callback): Use
+ RAPTOR_MALLOC on type field data.
+
+ * rdfdump.c: Add raptor_finish() before usage exit
+
+2005-05-13 Dave Beckett
+
+ * raptor_rss.c: Casts for C++
+
+ * raptor_serialize_rdfxmla.c (raptor_rdfxmla_serialize_init,
+ raptor_rdfxmla_serialize_terminate): Init/free rdf_xml_literal_uri
+ for the rdf:XMLLiteral URI.
+ (raptor_rdfxmla_serialize_statement): Turn datatyped literals that
+ are rdf:XMLLiteral into inline XML, not escaped.
+
+2005-05-12 Dave Beckett
+
+ * raptor_serialize.c (raptor_rdfxml_serialize_init,
+ raptor_rdfxml_serialize_terminate): Init/free rdf_xml_literal_uri
+ for the rdf:XMLLiteral URI.
+ (raptor_rdfxml_serialize_statement): Turn datatyped literals that
+ are rdf:XMLLiteral into inline XML, not escaped.
+
+2005-05-10 Dave Beckett
+
+ * configure.ac: Change quotes around bison test
+
+ * configure.ac: Try to work for older bison version styles
+
+2005-05-08 Dave Beckett
+
+ * raptor_rss.c:
+ Update from Suzan Foster to reflect the latest status of the
+ enclosure vocabulary and allow multiple common items and fields.
+ Fields in items are now a linked list of raptor_rss_field items.
+ (raptor_rss_context_init): Empty common area.
+ (raptor_enclosure_free): Use raptor_enclosure_free to empty enclosure
+ list.
+ (raptor_rss_field_free): Added to free a list of rss fields.
+ (raptor_clear_rss_item): Use raptor_rss_field_free for freeing
+ duplicate fields.
+ (raptor_clear_rss_common_items): added to empty common item field
+ lists.
+ (raptor_rss_context_terminate): Empty common item fields with
+ raptor_clear_rss_common_items.
+ (raptor_rss_new_field): Added.
+ (raptor_rss_enclosure_add): Added.
+ (raptor_rss_field_add): Added to add a new field value to the list of
+ values for one field item.
+ (raptor_rss_common_add): Added to add a new common item to the list
+ of common items for the current type.
+ (raptor_rss_common_get): Added to get the last common item for the
+ current type.
+ (raptor_rss_parser_processNode): Updates for new fields structure.
+ (raptor_rss_insert_enclosure_identifiers): Update for handling uris
+ and bnodes.
+ (raptor_rss_insert_identifiers): Update for lists for common items
+ and lists of ields.
+ (raptor_rss_emit_enclosure): Update for handling uris and bnodes.
+ (raptor_rss_emit_item, raptor_rss_emit, raptor_rss10_move_statements,
+ raptor_rss10_store_statement, raptor_rss10_serialize_statement,
+ raptor_rss10_build_xml_names): Updates for lists of common items and
+ lists of fields.
+ (raptor_rss10_emit_item): Added fix for moving fields to the item
+ when they got stuck on the enclosure when the enclosure uri = the guid.
+ Updates for lists of common items and lists of fields.
+ (raptor_rss10_serialize_end): Updates for lists of common items and
+ lists of fields.
+
+2005-05-04 Dave Beckett
+
+ * win32_raptor_config.h: Added SIZEOF_UNSIGNED_SHORT
+
+2005-04-17 Dave Beckett
+
+ * autogen.sh: allow envariables to override the programs
+
+2005-04-16 Dave Beckett
+
+ * raptor_iostream.c (raptor_string_iostream_finish):
+ Fixes bug 0000021: the output of to_string for an empty model should
+ always be parsable and result in an empty model
+ http://bugs.librdf.org/mantis/view.php?id=21
+
+ * raptor_iostream.c (raptor_string_iostream_finish):
+ Return an empty string "" (aka 1
+ byte, \0) when the stringbuffer is NULL, do not return the NULL.
+
+2005-04-14 Dave Beckett
+
+ * raptor_parse.c: docs typo
+
+2005-04-11 Dave Beckett
+
+ * tests/Makefile.am, tests/ex-56.out, tests/ex-56.rdf:
+ Added ex-56 test that relative URIs in datatypes work (Graham Klyne)
+
+2005-04-08 Dave Beckett
+
+ * raptor_xml_writer.c, raptor_serialize_rdfxmla.c,
+ raptor_serialize.c, raptor_rdfxml.c, raptor_parse.c,
+ raptor_general.c: Add missing switch cases to make -Wswitch-enum
+ happy.
+
+ * configure.ac: More gcc -W flags in maintainer mode.
+
+ * raptor_xslt.c: Casts for C++
+
+2005-04-07 Dave Beckett
+
+ * raptor_xslt.c (raptor_init_parser_grddl): Expand grddl parser
+ description.
+
+ * libraptor.3:
+ Added missing 1.4.5 API changes, adding XML writer features and
+ support functions as used by the rdf/xml-abbrev serializer.
+
+ * tests/Makefile.am:
+ test should use = not == for string compare portability
+
+2005-04-06 Dave Beckett
+
+ * raptor_xslt.c:
+ Added a list of XPaths to try, fixed searching for a profile.
+ Now handles 2 XHTML forms and XML.
+ (raptor_xslt_parse_chunk): Walk through the list of XPaths.
+ Do not give an error if no GRDDL is found, 0 triples are ok.
+
+ * raptor_libxml.c (raptor_libxml_error_common):
+ Added, passing in prefix and is_fatal
+ flag. Handle NULL ctx and hence NULL parser.
+ (raptor_libxml_error, raptor_libxml_generic_error,
+ raptor_libxml_fatal_error, raptor_libxml_validation_error): Use the
+ new function, share very common code.
+
+ * raptor_parse.c (raptor_parser_error_varargs): Survive a NULL parser.
+
+ * raptor_rdfxml.c (raptor_get_libxml_context,
+ raptor_set_libxml_document_locator,
+ raptor_get_libxml_document_locator): Survive NULL rdf_parser
+ calls.
+
+ * raptor_internal.h: Added
+ raptor_libxml_init_generic_error_handlers prototype
+
+ * raptor_xslt.c (raptor_xslt_parse_start): Init column, byte to -1
+ (raptor_xslt_xmlStructuredErrorFunc): Added, not tested.
+ (raptor_xslt_parse_chunk): Ensure last chunk with is_end is always
+ run. Report error if no XML DOM made. Set xslt context
+ structured error handler to raptor_xslt_xmlStructuredErrorFunc.
+
+2005-04-04 Dave Beckett
+
+ * raptor_xslt.c (raptor_xslt_parse_chunk):
+ Declare 'nodes' at top of block.
+ Init doc_txt/doc_txt_len earlier so do not free junk.
+ Get the base URI string from the XML doc if it exists.
+
+2005-03-25 Dave Beckett
+
+ * configure.ac: Added --with-xslt-config
+ Added grddl parser and checking.
+ Added simple search for libxslt needed by grddl.
+
+ * Makefile.am: Added grddl if RAPTOR_PARSER_GRDDL
+
+ * raptor_general.c (raptor_init): Added grddl
+
+ * raptor_libxml.c (raptor_libxml_init_sax_error_handlers):
+ Added to just init the
+ static error handlers for libxml for grddl.
+
+ * raptor_internal.h:
+ Export raptor_libxml_init_sax_error_handlers for grddl.
+ Added raptor_init_parser_grddl
+
+ * raptor_xslt.c: Generates triples via in internal rdf/xml parser.
+ (raptor_xslt_parse_start): Copy any user-set handlers to the
+ internal rdf/xml parser.
+ (main): Deleted, experimental code merged.
+
+ * raptor_xslt.c: Reformed test code into parser named 'grddl'
+ (raptor_xslt_parse_init, raptor_xslt_parse_terminate,
+ raptor_xslt_parse_start, raptor_xslt_parse_chunk,
+ raptor_xslt_parse_recognise_syntax,
+ raptor_xslt_parser_register_factory, raptor_init_parser_xslt): Added
+
+2005-03-24 Dave Beckett
+
+ * raptor_xslt.c: Fix some memory leaks.
+
+ * raptor_xslt.c: Remove commented out standalone xslt
+
+ * Makefile.am: Added bodge raptor_xslt_test
+
+ * raptor_xslt.c: Raptor GRDDL XSLT
+
+ * raptor_parse.c (raptor_parse_chunk): docs
+
+2005-03-10 Dave Beckett
+
+ * n3_lexer.l, turtle_lexer.l: Tidy to use .|\n to match any char
+
+ * n3_lexer.l, turtle_lexer.l: Added """long literals"""
+ Use yyterminate() to end on errors
+
+ * tests/turtle/bad-14.ttl, tests/turtle/test-17.ttl,
+ tests/turtle/test-17.out: long literals
+
+ * tests/turtle/Makefile.am:
+ Added test-17.ttl bad-14.ttl for long literals
+
+2005-03-06 Dave Beckett
+
+ * raptor_serialize_rdfxmla.c (raptor_new_qname_from_resource):
+ Use maximal xml name length for splitting predicate.
+
+ * raptor_serialize.c (raptor_rdfxml_serialize_statement):
+ Use maximal xml name length for splitting predicate.
+
+2005-02-21 Dave Beckett
+
+ * examples/Makefile.am: Add gconf-2.0 to grapper args
+
+2005-02-16 Dave Beckett
+
+ * examples/grapper.c: Added gconf storing of window width/height
+ at namespace /apps/grapper
+
+2005-02-14 Dave Beckett
+
+ * win32_raptor_config.h: Define RASQAL_INLINE to __inline
+
+ * raptor_nfc.c: Change inline to RAPTOR_INLINE
+
+ * raptor_internal.h: Define RAPTOR_INLINE to inline if not alerady
+ defined to something else
+
+2005-02-12 Dave Beckett
+
+ * raptor_serialize_rdfxmla.c
+ (raptor_rdfxmla_emit_subject_list_items,
+ raptor_rdfxmla_emit_subject_properties,
+ raptor_rdfxmla_emit_subject, raptor_rdfxmla_serialize_start):
+ Copy base URIs only when they are not NULL.
+ (raptor_rdfxmla_serialize_statement): Handle predicate type
+ RAPTOR_IDENTIFIER_TYPE_RESOURCE as an alternative.
+
+2005-02-10 Dave Beckett
+
+ * raptor_xml.c (raptor_valid_xml_ID): Just return an error status,
+ don't error out here.
+
+2005-02-08 Dave Beckett
+
+ * Makefile.am: Add n3_lexer.l n3_parser.y to EXTRA_DIST otherwise
+ building with --enable-maintainer-mode from tarball will fail.
+
+ * raptor_rss.c: Add RSS enclosures serializing into RSS 1.0
+ raptor_rss10_serializer_context gains enclosures sequence
+ (raptor_rss10_serialize_init, raptor_rss10_serialize_terminate):
+ Init, free enclosures sequence.
+ (raptor_rss10_store_statement): If subject isn't an RSS item, see if
+ it is an enclosure and if so, set the type.
+ (raptor_rss10_serialize_statement): If type is enclosure, walk the
+ list of enclosures and add a new one if not seen already.
+ (raptor_rss10_emit_item): Add indent arg as this is called recursively.
+ Use it to print spaces from the raptor_rss10_spaces constant.
+ Only serialize an rdf:about if the item has a URI.
+ If field is enc:enclosure, find the enclosure item and write it
+ indented further recursively calling raptor_rss10_emit_item.
+
+ * raptor_rss.c: re-comment back item enclosure thing
+
+2005-02-07 Dave Beckett
+
+ * raptor_rss.c (raptor_rss_parser_processNode): Do not assign
+ 'alternate' attribute values when there's no field to use.
+
+2005-02-06 Dave Beckett
+
+ * configure.ac, win32_raptor_config.h: Bumped version to 1.4.6
+
+ * Snapshotted raptor_1_4_5 for 1.4.5 release
+
+2005-02-04 Dave Beckett
+
+ * autogen.sh: Add autoheader and libtoolize to the path search.
+
+ * configure.ac: AM_PROG_LIBTOOL to AC_PROG_LIBTOOL seems to make
+ things happier
+
+2005-02-03 Dave Beckett
+
+ * configure.ac: In maintainer mode, stop if there is no flex.
+
+ * configure.ac:
+ In maintainer mode, stop if flex is too old or YACC is not GNU bison.
+
+ * raptor_libxml.c:
+ Use RAPTOR_LIBXML_XMLSAX2INTERNALSUBSET test for a function rather
+ than HAVE_LIBXML_SAX2_H test for a header to work on OSX 10.3.x which
+ has inconsistent system libxml shared library/headers.
+
+ * configure.ac:
+ Test for xmlSAX2InternalSubset so that it checks for the broken OSX
+ 10.3.x libxml features in the shared library rather than the ones
+ declared in the inconsistent header.
+
+2005-02-02 Dave Beckett
+
+ * raptor.rdf.in: Updates for schema
+
+ * tests/Makefile.am (check-rdfxmla): rdfdiff should read
+ $name-rdfxmla.rdf from builddir
+
+2005-02-01 Dave Beckett
+
+ * rdfdiff.c: C style Move more declarations to start of blocks.
+
+ * rdfdiff.c (rdfdiff_free_file): Restore what I broke.
+
+ * rdfdiff.c: C style Move more declarations to start of blocks.
+
+ * raptor_xml_writer.c (raptor_xml_writer_end_element): Move int
+ decl to start of block.
+
+ * raptor_serialize_rdfxmla.c (raptor_unique_id): Terminate string
+ right again after I broke it.
+
+ * rdfdiff.c, raptor_serialize_rdfxmla.c: Casts for C++
+
+ * raptor_serialize_rdfxmla.c: C style
+ (raptor_rdfxmla_emit_subject_list_items,
+ raptor_rdfxmla_emit_subject_properties): Declare i at start of
+ block.
+
+ * rapper.1: rdfxml-abbrev
+
+ * rdfdump.c: Widen help formatting for longer serializer name
+
+ * raptor_xml_writer.c: Various C style fixes.
+ Make an enum for raptor_xml_writer_flags.
+ Added XML_WRITER_ prefixes to macro and defines.
+ Moved spaces_buffer to module static.
+ Noted struct nsd and namespaces sorting are duplicated code.
+ Docucomments for several methods (not yet used by doc system) noting
+ use of the flags.
+
+ * Makefile.am: clean rdfdiff
+
+ * Makefile.am: rdfdiff to EXTRA_PROGRAMS for now
+
+ * Imported rdf/xml with abbreviations serializer 'rdfxml-abbrev'
+ written by Steve Shepard <steveshep@gmail.com>. Steve's changes
+ are as follows:
+
+ * Makefile.am: Added dependencies for rdfdiff.c and
+ raptor_serializer_rdfxmla.c
+
+ * raptor.h: Added RAPTOR_FEATURE enums and api for new xml_writer
+ features that support auto-indentation and auto-empty element
+ detection.
+
+ * raptor_feature.c: Added support for new xml_writer
+ auto-indentation and auto-empty features.
+
+ * raptor_general.c: Initialization of rdfxml-abbrev serializer.
+
+ * raptor_internal.h: Prototype for void
+ raptor_init_serializer_rdfxmla(void);
+
+ * raptor_serialize_rdfxmla.c: New rdfxml raptor_serializer that
+ handles some of the abbreviations specified by "RDF/XML Syntax
+ Specification (Revised)."
+
+ * rdfdiff.c: New tool to diff rdf files.
+
+ * tests/Makefile.am: Added tests for rdfdiff and the
+ rdfxml-abbrev serialization format.
+
+2005-01-26 Dave Beckett
+ * rapper.1: mention what RSS tag soup can do
+
+ * turtle_parser.y, n3_parser.y: Rename
+ raptor_new_triple/raptor_free_triple to have n3/turtle in the
+ name.
+
+ * raptor_internal.h, raptor_general.c, n3_parser.y, n3_lexer.l,
+ n3_common.h, configure.ac, Makefile.am: Update Notation3 code with
+ later Turtle improvements. Built it with maintainer mode only.
+
+ * turtle_lexer.l (turtle_copy_token): Renamed from copy_token
+ (turtle_copy_string_token): Renamed from copy_string_token.
+ (main): filename moved here from global!
+
+2005-01-24 Dave Beckett
+
+ * raptor_rss.c (raptor_rss_emit_item): Do not emit an items
+ property, that's only done by raptor_rss_emit_connection.
+
+2005-01-22 Dave Beckett
+
+ * raptor_rss.c: Added RSS1.1 namespace http://inamidst.com/rss1.1/
+ (raptor_rss_parser_processNode): Turn Channel into RSS type channel.
+ (raptor_rss_emit_type_triple, raptor_rss_emit_enclosure,
+ raptor_rss_emit_item, raptor_rss_emit_connection, raptor_rss_emit):
+ Add error return value and stop if there is no identifier.
+ (raptor_rss_emit): Stop if channel or any item has no identifier.
+ (raptor_rss_parse_chunk): Pass on failures from above to user.
+ (raptor_rss10_build_xml_names): Replace RSS1.1 namespace with RSS1.0
+ (raptor_rss10_emit_item): Add item_type arg and use it to only emit
+ items for the channel.
+
+2005-01-21 Dave Beckett
+
+ * raptor.h: Added const to src arg of
+ raptor_ntriples_string_as_utf8_string.
+
+ * libraptor.3: Deprecate raptor_ntriples_string_as_utf8_string
+
+ * raptor.h: Deprecate raptor_ntriples_string_as_utf8_string -
+ rather too internal to be useful, since it only works with a
+ parser.
+
+ * ntriples_parse.c (raptor_ntriples_term_valid): Remove rdf_parser
+ arg; only for a fatal error - just die.
+ (raptor_ntriples_term): Make start a const arg. When copying UTF8
+ bytes, move on the correct number of bytes in src and dest.
+ Update use of raptor_ntriples_term_valid.
+ (raptor_ntriples_string_as_utf8_string,
+ raptor_ntriples_parse_line): Update uses of
+ raptor_ntriples_term_valid.
+
+2005-01-17 Dave Beckett
+
+ * raptor_general.c (raptor_statement_part_as_counted_string):
+ Declare language_len to NULL, uri_string as unsigned char*.
+
+2005-01-16 Dave Beckett
+
+ * raptor_rss.c (raptor_rss10_emit_item): Copy original base_uri
+ each time, a raptor_new_xml_element is made and don't lose the
+ original reference.
+
+ * raptor_xml_writer.c (main): Copy original base_uri each time,
+ don't lose the original reference.
+
+2005-01-15 Dave Beckett
+
+ * raptor_general.c (raptor_statement_part_as_counted_string):
+ Initialise language_len, uri_string used in some cases to prevent
+ gcc warnings.
+
+ * configure.ac, win32_raptor_config.h: Bumped version to 1.4.5
+
+ * Snapshotted raptor_1_4_4 for 1.4.4 release
+
+ * raptor_rss.c (raptor_rss10_emit_item): Portability - declare
+ rdf_Seq* variables at start of block.
+
+2005-01-13 Dave Beckett
+
+ * win32_raptor_config.h, win32/Makefile.am, win32/rapper.dsp,
+ win32/raptor.dsp, win32/raptor.dsw, win32/raptortest.dsp: win32
+ build update (patch from Dave Viner)
+
+ * win32_raptor_config.h:
+ RAPTOR_INTERNAL should be defined in the build configuration
+
+2005-01-12 Dave Beckett
+
+ * raptor_rss.c: Recognise old RSS 0.9 namespace and handle it as
+ rss 1.0.
+
+2005-01-04 Dave Beckett
+
+ * raptor_serialize.c:
+ (raptor_rdfxml_serialize_start,
+ raptor_rdfxml_serialize_statement): Only copy non-NULL base URIs
+
+ * raptor_rss.c:
+ (raptor_rss10_move_statements, raptor_rss10_store_statement,
+ raptor_rss10_build_xml_names, raptor_rss10_emit_item):Handle
+ predicates of type RAPTOR_IDENTIFIER_TYPE_RESOURCE as well as type
+ RAPTOR_IDENTIFIER_TYPE_PREDICATE
+
+ * raptor_general.c (raptor_free_statement): Free predicate URIs
+ that were RAPTOR_IDENTIFIER_TYPE_RESOURCE
+
+ * raptor_uri.c (raptor_uri_to_relative_counted_uri_string):
+ Handle no path in base URI
+ (main): Add test for that and test for no path in both.
+
+ * raptor_uri.c (raptor_uri_to_relative_counted_uri_string): Handle
+ no path in reference URI
+ (main): Add test for that
+
+2005-01-03 Dave Beckett
+
+ * configure.ac, win32_raptor_config.h: Bumped version to 1.4.4
+
+ * Snapshotted raptor_1_4_3 for 1.4.3 release
+
+ * raptor_rdfxml.c (raptor_xml_start_element_handler): Updates for
+ unsigned char* string namespace URI strings.
+
+ * raptor_namespace.c:
+ Turn namespace URI string constants into unsigned char* strings.
+
+ * raptor_identifier.c (raptor_identifier_print): Casts for
+ printing rdf:XMLLiteral URI string constant.
+
+ * raptor_general.c: Turn rdf:XMLLiteral URI string constant into a
+ unsigned char* string.
+ (raptor_print_statement, raptor_print_statement_part_as_ntriples):
+ Casts for printing above constants.
+
+ * raptor_uri.c (raptor_default_new_uri_for_rdf_concept): Use RDF
+ namespace URI string constants.
+
+ * Makefile.am: Link libraptor.la for URI tests, to get the
+ namespace URI string constants.
+
+ * raptor.h: Turn namespace URI string constants into unsigned
+ char* strings. Change namespace URI defines into uses of the
+ constants.
+
+ * rdfdump.c (main): Init parser_feature and serializer_feature to
+ -1 to avoid compiler warnings.
+
+ * raptor_rss.c (raptor_rss10_serialize_statement): Init item to
+ NULL to avoid a compiler warning.
+
+ * rdfdump.c, raptor_uri.c, raptor_serialize.c, raptor_rss.c,
+ raptor_parse.c: Casts for c++
+
+ * raptor.h: remove old comment re xml writer
+
+2005-01-02 Dave Beckett
+
+ * rdfdump.c: set serializer features before starting to serialize
+
+ * rdfdump.c: Actually set parser feature values again. Set
+ strings for parser or serializer string feature values.
+
+ * raptor_general.c: 2005 copyrights
+
+ * rapper.1: No simple output format anymore
+
+ * rapper.1: Added RSS 1.0 ref
+
+2005-01-01 Dave Beckett
+
+ * rapper.1: Update for new parser, serializers, xmlns syntax
+
+ * raptor_serialize.c (raptor_serializer_set_feature_string): Docs,
+ and return values for integer value features
+ (raptor_serializer_get_feature_string): Return a new string for
+ the start uri if set.
+
+ * raptor_parse.c (raptor_parser_set_feature_string): Docs, and
+ return values for integer value features
+
+ * libraptor.3, raptor.h:
+ Added raptor_uri_to_counted_string and raptor_uri_to_string
+
+ * raptor_uri.c (raptor_uri_to_counted_string,raptor_uri_to_string):
+ Added.
+
+ * libraptor.3: changelog edit - cluster 1.4.3 entries by class
+
+ * libraptor.3: Added raptor_parser_get_feature_string,
+ raptor_parser_set_feature_string,
+ raptor_serializer_set_feature_string,
+ raptor_serializer_get_feature_string, raptor_feature_value_type,
+ raptor_namespaces_find_namespace_by_uri
+
+ * raptor_serialize.c, raptor_general.c:
+ Use raptor_rdf_namespace_uri and raptor_rdf_namespace_uri_len to
+ replace some constants.
+
+ * raptor_serialize.c (raptor_rdfxml_serialize_statement):
+ Handle ordinal subject and objects.
+
+ * raptor_serialize.c:
+ Add XML Writer to raptor_rdfxml_serializer_context, delete depth.
+ (raptor_rdfxml_serialize_init): Delete depth stuff.
+ (raptor_rdfxml_serialize_terminate): Tidy up xml writer, namespaces
+ and rdf:RDF element.
+ (raptor_rdfxml_serialize_declare_namespace): Don't copy uri, prefixes
+ since raptor_new_namesapce_from_uri copies them anyway.
+ (raptor_rdfxml_serialize_start): Convert to use xml writer.
+ (raptor_rdfxml_serialize_write_xml_attribute): Deleted.
+ (raptor_rdfxml_serialize_statement, raptor_rdfxml_serialize_end):
+ Convert to use xml writer.
+
+ * raptor_xml_writer.c (raptor_xml_writer_empty_element): Ensure
+ namespace declarations are removed at end of element.
+
+ * raptor.h: Added raptor_namespaces_find_namespace_by_uri
+
+ * raptor_namespace.c (raptor_namespaces_find_namespace_by_uri): Added.
+
+ * libraptor.3, raptor_sax2.c, raptor_rss.c, raptor.h:
+ raptor_xml_declare_namespace renamed to
+ raptor_xml_element_declare_namespace
+
+ * raptor_rss.c (raptor_rss10_build_xml_names): Use
+ raptor_xml_declare_namespace
+
+ * raptor_rss.c:
+ (raptor_rss10_build_xml_names): Use raptor_xml_declare_namespace
+
+ * raptor_sax2.c, raptor.h:
+ raptor_sax2_declare_namespace renamed to raptor_xml_declare_namespace
+
+ * raptor_serialize.c (raptor_new_serializer):
+ Default to emitting relative URIs
+
+ * raptor_serialize.c (raptor_rdfxml_serialize_ok_xml_name): Deleted.
+ (raptor_rdfxml_serialize_statement): Replace use of
+ raptor_rdfxml_serialize_ok_xml_name with raptor_xml_name_check for
+ XML 1.0 names.
+
+ * raptor_sax2.c, raptor_rdfxml.c, raptor.h, libraptor.3:
+ Rename raptor_xml_element_get_element to raptor_xml_element_get_name
+
+ * raptor_rss.c: Added rss:image and rss:textinput properties
+
+ * raptor_rss.c (raptor_rss10_store_statement):
+ Don't lose statements that are about
+ a known type node, but of unknown predicate.
+ (raptor_rss10_serialize_end): Add more debug info on remaining
+ statements.
+
+ * raptor_rdfxml.c (raptor_start_element_grammar):
+ Update raptor_new_xml_writer call.
+
+ * raptor.h: raptor_new_xml_writer gets nstack parameter.
+ raptor_xml_writer_start_namespace_full deleted
+
+ * libraptor.3: raptor_new_xml_writer gets nstack param.
+ raptor_xml_writer_start_namespace_full gone
+
+ * raptor_general.c (raptor_free_statement): Don't free null pointers.
diff --git a/ChangeLog.7 b/ChangeLog.7
new file mode 100644
index 0000000..5413d33
--- /dev/null
+++ b/ChangeLog.7
@@ -0,0 +1,1764 @@
+2006-12-29 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: Add profile_transformation_uri and
+ profile_uris list to grddl parser structure.
+ (raptor_xslt_parse_init, raptor_xslt_parse_terminate): init/free
+ the above fields. Add MATH_IS_VALUE_LIST and MATCH_IS_PROFILE
+ flags to match_table. Comment out hard-coded embedded RDF,
+ hCalendar xpaths. Added head profile xpath for profile URI
+ resoltuion.
+ (raptor_grddl_relay_triples): Look for matches in the list of
+ profile_uris for getting XSLT uris.
+ (typedef raptor_grddl_xml_parse_bytes_context): Renamed from
+ raptor_grddl_parse_bytes_context.
+ (raptor_grddl_uri_xml_parse_bytes): Renamed from
+ raptor_grddl_uri_parse_bytes.
+ (raptor_grddl_fetch_uri): Added to provide a single place to
+ retrieve URIs in the GRDDL operation. Set a user agent, send
+ accept header and handle no-net.
+ (raptor_grddl_run_grddl_transform_uri): Use raptor_grddl_fetch_uri
+ to retrieve the XSLT doc.
+ (raptor_grddl_seen_uri): Do a check only, mark done in new
+ function:
+ (raptor_grddl_done_uri): Added.
+ (raptor_grddl_parse_uri_write_bytes): Added for use by
+ raptor_grddl_parse_chunk.
+ (raptor_grddl_parse_chunk): Mark done when received is_end. Use
+ profile_uris list to record root namespace as first item in list
+ at index 0. Accept an XPath result of element and use its
+ namespace name if seen, to allow an XPath matching the root
+ element - not yet used. Update to use the match_table flags
+ field. Handle MATCH_IS_PROFILE by storing in the profile_uris
+ list, skipping the http://www.w3.org/2003/g/data-view profile URI.
+ Do all recursive GRDDL in one place over all the profile_uris
+ using raptor_grddl_fetch_uri.
+
+ * src/raptor_www_curl.c: (raptor_www_curl_fetch): set proxy if
+ www->proxy set
+
+2006-12-28 Dave Beckett <dave@dajobe.org>
+
+ * utils/rapper.c: adjust whitespace so longer grddl description fits
+
+ * src/raptor_grddl.c: grddl docs, description updates
+
+ * src/Makefile.am, src/raptor_grddl.c (from
+ /raptor/trunk/src/raptor_xslt.c:11760), src/raptor_xslt.c:
+ Renameed raptor_xslt.c to raptor_grddl.c
+
+ * src/raptor_xslt.c: Rename all functions / structures to be
+ raptor_grddl / grddl not xslt.
+
+ * src/raptor_xslt.c: update spec reference
+
+2006-12-27 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xslt.c: Track list of visited URIs across recursive
+ GRDDL parsers
+ (raptor_xslt_parse_init, raptor_xslt_parse_terminate): Share the
+ list of visited uris, allocated/freed at depth 0 parser.
+ (raptor_xslt_add_parent): Added to associate a parent with a child
+ GRDDL parser and to all share the depth 0 parser's list of visited
+ URIs.
+ (raptor_xslt_relay_triples, raptor_xslt_ensure_internal_parser):
+ Return failure code and prepare for alternative when this may not
+ pass on all triples for namespace/profile GRDDL operations.
+ (raptor_xslt_run_grddl_transform_doc): Handle error code from
+ above.
+ (raptor_xslt_seen_uri): Added to track URIs seen.
+ (raptor_xslt_parse_chunk): Use seen URI tracking for initial
+ document and recursive GRDDLs.
+
+ * src/raptor_general.c: docs
+
+2006-12-26 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xslt.c: Add GRDDL looking up of root namespace URIs.
+ (raptor_xslt_parse_init, raptor_xslt_parse_terminate): Init/free
+ doc_transform_uris and namespace_transformation_uri.
+ grddl_namespace_uris_ignore_list added with list of namespace URIs
+ to never attempt to retrieve.
+ (raptor_xslt_relay_triples): Added, to relay triples to user but
+ look for data-view:namespaceTransformation triples
+ (raptor_xslt_ensure_internal_parser): Added to init an internal
+ parser if needed, reusing otherwise. Relay triples via
+ raptor_xslt_relay_triples before sending to user handler.
+ (raptor_xslt_run_grddl_transform_doc): Moved internal parser code
+ to raptor_xslt_ensure_internal_parser.
+ (raptor_xslt_parse_chunk): Get and store document root namespace
+ URI and then use it if not ignored. Do not do transforms
+ immediately but store in a sequence. Do a parse on the root
+ namespace URI if present to look for transformation triples.
+ Finally apply all transformation URIs seen in one go.
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_parse_recognise_syntax):
+ Recognize RDF/XML in sample content by looking for the XML marking
+ the RDF namespace declaration, the root element and likely
+ attributes.
+
+ * src/raptor_parse.c: (raptor_guess_parser_name): Mime type
+ matches that are q<10 no longer return a match but use the q as
+ score. Guessing then continues with the recognise_syntax factory
+ method, if present.
+
+2006-12-14 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xslt.c: (raptor_xslt_parse_init,
+ raptor_xslt_parse_start): Move xslt_parser->sax2 init from
+ raptor_xslt_parse_start - running on every parse to
+ raptor_xslt_parse_init - running once.
+
+ * src/raptor_xslt.c: (raptor_xslt_parse_chunk): Free any
+ previously used xpathObj before making a new one
+
+2006-12-10 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xslt.c: Previous changes did this:
+ Fixes Issue#0000143 http://bugs.librdf.org/mantis/view.php?id=143
+
+ * src/raptor_xslt.c: struct raptor_xslt_parser_context_s gains
+ raptor_sax2* sax2 field.
+ (raptor_xslt_parse_terminate): Free sax2.
+ (raptor_xslt_parse_start): Create a new sax2 structure and
+ initialise it's locator and error handler params.
+ (raptor_xslt_parse_chunk): Move error handler inits to
+ raptor_xslt_parse_start and do it once.
+
+ * src/raptor_parse.c: (raptor_parser_fatal_error_message_handler,
+ raptor_parser_error_message_handler,
+ raptor_parser_warning_message_handler): No need to protectb
+ raptor_print_locator from NULL locator, it does that.
+
+ * src/raptor_libxml.c: (raptor_libxml_update_document_locator,
+ raptor_libxml_error_common): Protect from NULL locator.
+ (raptor_libxml_init_generic_error_handlers): Altered to take an
+ raptor_sax2* argument.
+
+ * src/raptor_internal.h: raptor_libxml_init_generic_error_handlers
+ altered to take an raptor_sax2* argument.
+
+2006-12-07 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_parse.c: (raptor_parser_copy_user_state): Make a new
+ copy of the shared generate id prefix string.
+ Fixes Issue#0000141 http://bugs.librdf.org/mantis/view.php?id=141
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_statement): Do not store an rdf:type
+ predicate triple as the typed-node type unless the triple object
+ is a URI.
+ Fixes Issue#0000157 http://bugs.librdf.org/mantis/view.php?id=157
+
+2006-12-06 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_turtle_writer.c: (raptor_turtle_writer_reference):
+ Generate <> for the empty relative URI
+
+2006-12-03 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c:
+ Rename raptor_node to raptor_abbrev_node and raptor_subject to
+ raptor_abbrev_subject and rename functions to match the pattern
+
+ * src/raptor_turtle_writer.c: Use limits.h to get LONG_MAX
+
+ * src/raptor_www_libxml.c: raptor_www_libxml_http_error prototype.
+
+ * src/raptor_xslt.c: Store a single parser that could be of any
+ name, not just 'rdfxml'.
+ (raptor_xslt_parse_init): Do not init rdfxml parser here.
+ 9raptor_xslt_parse_terminate): Free internal parser if present.
+ (raptor_xslt_parse_start): Do not copy user state to internal
+ parser here.
+ (raptor_xslt_run_grddl_transform_doc): Delve into the XSL
+ transformation results and try to interpret a mime type out of the
+ output type (if present). Assume any XML mime type is actually
+ RDF/XML and refuse to do recursive grddl guesses this way. Tidy
+ up code to clean up error paths
+
+ * src/raptor_www.c: (raptor_www_file_fetch): Return 200, 403 or
+ 404 status codes and set failed flag.
+ (raptor_www_fetch): Set failed flag if a status code was returned
+ and the result was not 200.
+
+ * src/raptor_xslt.c: (raptor_xslt_parse_chunk): Skip empty XSLT
+ URIs in the list found.
+
+2006-12-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_sax2.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c: Add new features to switch()s
+
+ * src/raptor_abbrev.c: (raptor_new_node): init node always
+
+ * src/raptor_serialize_rdfxmla.c: (raptor_rdfxmla_emit_blank): Do
+ not double-encode blank node ids. Do not free a shared blank node
+ string value.
+ (raptor_rdfxmla_emit_subject): Do not double-encode blank node
+ ids. Free only allocated attr_value.
+ (raptor_rdfxmla_serialize_init): Ensure rdf_type is initialized.
+
+ * src/raptor_turtle_writer.c: Remove // comments
+
+ * src/raptor_serialize_turtle.c: deleting commented-out code
+
+ * src/raptor_serialize_turtle.c: Code style, whitespace.
+
+ * src/raptor.h, src/raptor_internal.h: Move turtle write functions
+ into internal API for now
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_serialize_declare_namespace_from_namespace): Allow
+ a default namespace to be handled when prefix is NULL.
+
+ * src/raptor_turtle_writer.c: (raptor_turtle_writer_qname): Write
+ a QName using Turtle's rules either prefix:local or :local which
+ is not how raptor_iostream_write_qname() writes them for XML.
+
+ * src/raptor_turtle_writer.c: (raptor_turtle_writer_namespace_prefix):
+ Only emit a prefix if there is one.
+
+ * src/raptor_serialize_turtle.c, docs/raptor-serializers.xml,
+ docs/tmpl/section-general.sgml, configure.ac, src/Makefile.am,
+ src/raptor.h, src/raptor_serialize.c, src/raptor_turtle_writer.c,
+ tests/Makefile.am, tests/turtle/Makefile.am: Turtle serializer by
+ Dave Robillard
+
+ * src/raptor_xml_writer.c: docs
+
+ * src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_serialize_rdfxmla.c: (raptor_rdfxmla_find_subject):
+ Renamed from raptor_find_subject.
+ (raptor_new_qname_from_resource): Remove link to rdfxml-abbrev
+ serializer context and pass in namespaces stack parameters.
+ (raptor_lookup_node): Renamed from raptor_rdfxmla_lookup_node
+ (raptor_lookup_subject): Renamed from
+ raptor_rdfxmla_lookup_subject.
+ (raptor_find_subject): Renamed from raptor_rdfxmla_find_subject.
+
+ * src/raptor_abbrev.c: Re order functions
+
+ * src/Makefile.am, src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_serialize_rdfxmla.c: (raptor_new_qname_from_resource,
+ raptor_new_node, raptor_free_node, raptor_node_equals,
+ raptor_node_matches, raptor_new_subject, raptor_free_subject,
+ raptor_subject_add_property, raptor_subject_add_list_element,
+ raptor_rdfxmla_lookup_node, raptor_rdfxmla_find_subject,
+ raptor_rdfxmla_lookup_subject): Move common abbreviated serializer
+ code from raptor_serialize_rdfxmla.c to raptor_abbrev.c
+
+ * src/raptor_serialize_dot.c: gratuitous whitespace schanges
+
+ * docs/tmpl/section-feature.sgml: New DOT features
+
+ * src/raptor_turtle_writer.c copied from
+ /raptor/trunk/src/raptor_xml_writer.c:11666: copy for turtle
+ writing
+
+2006-11-26 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_uri.c: (raptor_uri_filename_to_uri_string):
+ Dynamically allocate the path buffer and realloc it if it's too
+ small. This helps Hurd which does not handle PATH_MAX like
+ linux/unix.
+
+ * docs/raptor-serializers.xml, src/raptor.h, src/raptor_feature.c,
+ src/raptor_internal.h, src/raptor_parse.c, src/raptor_serialize.c,
+ src/raptor_serialize_dot.c: Import updated DOT serializer.
+ Renamed features to remove _color/_COLOR from end of name. Added
+ feature descriptions
+
+ * src/raptor_serialize_dot.c: alter label
+
+ * src/Makefile.am, src/raptor_internal.h, src/raptor_serialize.c,
+ src/raptor_serialize_dot.c: Add DOT serializer
+
+ * configure.ac: libxml minimum version is now 2.6.8 since 2.6.7
+ crashes on PPC64 Linux. 2.6.8 was released March 2004 so this
+ should be no burden.
+
+2006-11-20 Dave Beckett <dave@dajobe.org>
+
+ * raptor.rdf.in: Update description and for SVN repository.
+
+2006-11-19 Dave Beckett <dave@dajobe.org>
+
+ * NEWS.html, RELEASE.html, configure.ac,
+ src/win32_raptor_config.h: Bumped version to 1.5.0
+
+2006-10-22 Dave Beckett <dave@dajobe.org>
+
+ * Snapshotted raptor_1_4_13 for 1.4.13 release (SVN r11540)
+
+ * src/raptor_rss.c: (raptor_rss_end_element_handler): Only declare
+ name when debugging.
+
+ * src/win32_raptor_config.h: Update defines:
+ HAVE_XMLSAX2INTERNALSUBSET replaces RAPTOR_LIBXML_XMLSAX2INTERNALSUBSET
+ Added HAVE_XMLCTXTUSEOPTIONS
+ Deleted RAPTOR_LIBXML_XMLUSENEWPARSER
+
+ * src/raptor_xslt.c: (raptor_xslt_uri_parse_bytes): Use #ifdef
+ HAVE_XMLCTXTUSEOPTIONS to protect call to xmlCtxtUseOptions
+
+ * src/raptor_sax2.c: (raptor_sax2_parse_chunk): Use #ifdef
+ HAVE_XMLCTXTUSEOPTIONS to protect call to xmlCtxtUseOptions
+
+ * src/raptor_libxml.c: #ifdef HAVE_XMLSAX2INTERNALSUBSET replaces
+ RAPTOR_LIBXML_XMLSAX2INTERNALSUBSET
+
+ * configure.ac: Remove unused check for xmlUseNewParser (defining
+ RAPTOR_LIBXML_XMLUSENEWPARSER) Use AC_CHECK_FUNCS to check for new
+ xmlCtxtUseOptions and existing xmlSAX2InternalSubset
+
+2006-10-21 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_emit_subject_properties): Throw an error and skip
+ triple if cannot make URI from a predicate.
+
+2006-10-13 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_uri.c: (raptor_uri_to_relative_counted_uri_string):
+ Check for equal scheme and authority correctly.
+ Fixes Issue #0000134 http://bugs.librdf.org/mantis/view.php?id=134
+
+ * src/raptor_uri.c: (main): Test for bug 134
+
+2006-10-09 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_parse.c: (raptor_set_default_generate_id_parameters)
+ autodocs
+
+2006-10-08 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rdfxmla.c: (raptor_rdfxmla_serialize_start)
+ Free any existing xml_writer before making a new one.
+
+ * src/raptor_serialize_rdfxml.c: (raptor_rdfxml_serialize_start)
+ Free any existing xml_writer before making a new one.
+
+ * src/raptor_serialize_rss.c: (raptor_rss10_serialize_end): Free
+ any existing xml_writer before making a new one.
+
+2006-10-05 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: Found more -W flags.
+
+ * utils/rdfdiff.c: cast
+
+ * src/raptor_set.c: const
+
+ * configure.ac: In maintainer mode, add all the supported -W
+ options to the MAINTAINER_CFLAGS
+
+ * utils/rapper.c: Cast for signed/unsigned comparison
+
+ * src/raptor_libxml.c: redundant decl
+
+ * utils/rapper.c: Cast for unsigned vs signed int use of
+ raptor_get_feature_count()
+
+ * src/n3_common.h, src/n3_lexer.l, src/n3_parser.y,
+ src/raptor_libxml.c, src/raptor_rdfxml.c, src/raptor_rss.c,
+ src/raptor_sax2.c, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/turtle_common.h,
+ src/turtle_lexer.l, src/turtle_parser.y: Make internal
+ error/warning/vargs functions use RAPTOR_PRINTF_FORMAT and fix a
+ few bad uses of args
+
+ * src/raptor_parse.c: (raptor_syntaxes_enumerate): Discard test
+ for unsigned int < 0.
+ (raptor_parse_uri_no_net_filter); Fix raptor_parser_error format
+ arg.
+
+ * src/raptor_serialize.c: (raptor_serializers_init): Declare new
+ style void.
+ (raptor_serializers_enumerate): Discard test for unsigned int < 0.
+
+ * src/ntriples_parse.c: (raptor_ntriples_term): Cast for
+ raptor_parser_error arg.
+
+ * src/raptor_internal.h: Declare many error/warning/*varargs
+ prototypes with RAPTOR_PRINTF_FORMAT that they take a printf-style
+ format argument.
+
+ * src/raptor.h: Added RAPTOR_PRINTF_FORMAT to allow declaring of
+ functions with a printf-style format argument.
+ Declare raptor_vsnprintf using it.
+
+ * src/raptor_internal.h, src/raptor_rdfxml.c, src/raptor_xml.c:
+ Turn content_cdata into using raptor_stringbuffer so that it does
+ a lot less copying (strncpy) when joining literals
+
+2006-10-03 Dave Beckett <dave@dajobe.org>
+
+ * examples/Makefile.am: Fix AM_* flags
+
+2006-10-02 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-tutorial-serializing.xml: typo
+ raptor_serializer_set_namespace => raptor_serialize_set_namespace
+
+ * docs/raptor-tutorial-serializing.xml: Add single triple
+ serializing example rdfserialize.c
+
+ * docs/Makefile.am: Add rdfserialize.c
+
+ * examples/rdfserialize.c: tidy
+
+ * examples/Makefile.am: Added rdfserialize example.
+
+ * examples/rdfserialize.c: rdfserialize.c: serialize 1 triple to
+ RDF/XML-Abbrev
+
+2006-09-24 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xslt.c: (raptor_xslt_uri_parse_bytes): Only use
+ XML_PARSE_NONET if defined.
+
+ * src/raptor_sax2.c: (raptor_sax2_parse_chunk): Use
+ XML_PARSE_NONET only if defined.
+
+2006-09-17 Dave Beckett <dave@dajobe.org>
+
+ * utils/Makefile.am: (AM_CFLAGS, AM_CPPFLAGS): Remove duplication
+ of @CFLAGS@, @CPPFLAGS@
+
+ * src/Makefile.am: (AM_CFLAGS): Remove duplication of @CFLAGS@
+
+2006-09-08 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: Allow LEX to be set to things that aren't exactly
+ 'flex'
+
+2006-08-27 Dave Beckett <dave@dajobe.org>
+
+ * NEWS.html, configure.ac, src/win32_raptor_config.h: Bumped
+ version to 1.4.13
+
+ * Snapshotted raptor_1_4_12 for 1.4.12 release (SVN r11256)
+
+ * docs/libraptor.3: 1.4.12 no API changes
+
+ * src/raptor_serialize.c: (raptor_serializers_init): Restore order
+ from 1.4.10
+
+ * src/raptor_serialize_rdfxmla.c: (raptor_init_serializer_rdfxmla):
+ Restore order from 1.4.10
+
+2006-08-26 Dave Beckett <dave@dajobe.org>
+
+ * src/win32_raptor_config.h, configure.ac, NEWS.html: Bumped
+ version to 1.4.12
+
+ * Snapshotted raptor_1_4_11 for 1.4.11 release (SVN r11244)
+
+ * src/raptor_parse.c: (raptor_start_parse): Throw an error if no
+ base URI is given and it is needed.
+
+ * src/raptor_sax2.c: (raptor_sax2_parse_start): Free any existing
+ base URI before assigning a new one.
+
+ * src/ntriples_parse.c: (raptor_ntriples_generate_statement): Use
+ raptor_new_uri since base_uri is never used, and all the URIs are
+ absolute.
+
+ * docs/tmpl/section-feature.sgml, docs/tmpl/section-parser.sgml,
+ docs/tmpl/section-unicode.sgml: Updated templates for 1.4.11
+
+ * src/raptor_parse.c: (raptor_start_parse): Return failure if need
+ a base URI and none was given.
+
+2006-08-23 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h: Add RAPTOR_API before
+ raptor_namespaces_qname_from_uri to export it properly for windows.
+ Fixes Issue #0000112 http://bugs.librdf.org/mantis/view.php?id=112
+
+ * src/raptor_rss.c: Use raptor_strcasecmp.
+ Fixes Issue #0000110 http://bugs.librdf.org/mantis/view.php?id=110
+
+2006-08-22 Dave Beckett <dave@dajobe.org>
+
+ * docs/libraptor.3: Updates for 1.4.11
+
+2006-08-21 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-sections.txt: Added raptor_get_feature_count and
+ raptor_get_need_base_uri
+
+ * src/n3_parser.y, src/ntriples_parse.c, src/raptor.h,
+ src/raptor_guess.c, src/raptor_internal.h, src/raptor_parse.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/raptor_xslt.c,
+ src/turtle_parser.y: Added raptor_get_need_base_uri to return new
+ field need_base_uri_flag in raptor_parser_factory that is set by
+ all parsers now
+
+2006-08-20 Dave Beckett <dave@dajobe.org>
+
+ * utils/rapper.c: Use raptor_get_feature_count and add
+ raptor_finish() before all exits.
+
+ * src/raptor.h: Added raptor_get_feature_count prototype
+
+ * src/raptor_feature.c: (raptor_get_feature_count): Added
+
+ * src/raptor_serialize.c: Turn serializers into a raptor_sequence
+ (raptor_free_serializer_factory): Added.
+ (raptor_serializers_init): Init sequence, reverse order so
+ N-Triples remains first.
+ (raptor_serializers_finish): Free with raptor_free_sequence
+ (raptor_serializer_register_factory,
+ raptor_get_serializer_factory, raptor_serializers_enumerate):
+ Update to use sequence.
+
+ * src/raptor_parse.c: Turn parsers into a raptor_sequence
+ (raptor_free_parser_factory): Added.
+ (raptor_parsers_init): Init sequence, reverse order so RDF/XML
+ remains first.
+ (raptor_parsers_finish): Free with raptor_free_sequence
+ (raptor_parser_register_factory, raptor_parser_factory_add_alias,
+ raptor_get_parser_factory, raptor_syntaxes_enumerate,
+ raptor_guess_parser_name): Update to use sequence.
+ (main): Added test for raptor_parser_get_accept_header_all
+
+ * src/raptor_internal.h: Added prototypes for raptor_parsers_init,
+ raptor_serializers_init, raptor_parsers_finish and
+ raptor_serializers_finish. Rename raptor_init/finish_sax2 to
+ raptor_sax2_init/finish
+
+ * src/raptor_sax2.c: (raptor_sax2_init): Renamed from
+ raptor_init_sax2
+ (raptor_sax2_finish): Renamed from raptor_finish_sax2
+
+ * src/raptor_general.c: (raptor_init): Call raptor_parsers_init
+ and raptor_serializers_init.
+ (raptor_finish): Call raptor_parsers_finish and
+ raptor_serializers_finish.
+
+ * src/raptor_serialize.c: (raptor_serializers_init): Added.
+ (raptor_serializers_finish): Renamed from
+ raptor_delete_serializer_factories
+
+ * src/raptor_parse.c: (raptor_parsers_init): Added.
+ (raptor_parsers_finish): Renamed from
+ raptor_delete_parser_factories
+ (raptor_parser_register_factory): Delete mime_type and uri_string
+ args.
+ (raptor_parser_factory_add_uri): Added for registering a URI
+
+ * src/n3_parser.y, src/ntriples_parse.c, src/raptor_guess.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/raptor_xslt.c,
+ src/turtle_parser.y: Remove mime_type and uri args from
+ raptor_parser_register_factory
+
+ * src/n3_parser.y, src/ntriples_parse.c, src/raptor_guess.c,
+ src/raptor_internal.h, src/raptor_parse.c, src/raptor_rdfxml.c,
+ src/raptor_rss.c, src/raptor_xslt.c,
+ src/turtle_parser.y: (raptor_parser_register_factory): Remove mime
+ type arg, nothing uses it now
+
+ * src/ntriples_parse.c: (raptor_ntriples_parse_chunk): Make junk
+ at end of input errro return from the function as a failure.
+
+ * src/turtle_parser.y: Remove %destructor tidy for PREFIX
+
+ * src/n3_parser.y: Remove %destructor tidy for PREFIX
+
+ * src/n3_parser.y: Add %destructor to tidy up tokens when doing
+ error recovery.
+ (directive): Hack to stop Bison moaning about not using $1
+
+ * src/turtle_parser.y: Add %destructor to tidy up tokens when
+ doing error recovery.
+ (directive): Hack to stop Bison moaning about not using $1
+
+ * src/n3_parser.y: Added labels for tokens to enable better error
+ messages.
+
+ * src/turtle_parser.y: Added labels for tokens to enable better
+ error messages.
+
+ * autogen.sh: Track where programs are discovered.
+
+ * src/raptor_parse.c: (raptor_parse_uri_with_connection,
+ raptor_set_feature, raptor_get_feature, raptor_set_parser_strict):
+ Update to use array of features throughout.
+ (raptor_parser_copy_user_state): Copy all features when copying
+ state.
+
+ * src/raptor_xslt.c: (raptor_xslt_uri_parse_bytes,
+ raptor_xslt_run_grddl_transform_uri): Update to use array of
+ features.
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_start_element_handler,
+ raptor_rdfxml_parse_start, raptor_rdfxml_generate_statement,
+ raptor_rdfxml_process_property_attributes,
+ raptor_rdfxml_start_element_grammar,
+ raptor_rdfxml_end_element_grammar, raptor_rdfxml_cdata_grammar,
+ raptor_rdfxml_record_ID): Update to use array of features
+ throughout.
+
+ * src/raptor_rss.c: (raptor_rss_parse_start): Update to use array
+ of features.
+
+ * src/raptor_guess.c: (raptor_guess_parse_chunk): Use
+ raptor_parser_copy_user_state to copy over pointers and feature
+ flags to the inner parser.
+
+ * src/raptor_internal.h: struct raptor_parser_s - replace
+ individual feature fields with an array.
+
+ * src/raptor_parse.c: Removed static raptor_get_parser_factory
+ prototype
+
+ * src/raptor_internal.h: Added raptor_get_parser_factory
+
+ * src/raptor_parse.c: (raptor_get_parser_factory): Now internal
+ not static
+
+ * configure.ac: flex check - warn before failing
+
+ * src/raptor_xslt.c: comma chameleon
+
+ * configure.ac: recommend flex 2.5.33
+
+ * configure.ac: Update to point at main flex site whichq finally
+ gets 2.5.33 after 9 years
+
+ * src/raptor_guess.c: Rework to call an internal use of a parser
+ rather than "exec"ing into the guessed parser.
+ Fixes Issue#0000091 http://bugs.librdf.org/mantis/view.php?id=91
+
+ * src/raptor_parse.c: (raptor_parser_exec): Deleted
+
+ * src/raptor_internal.h: Delete raptor_parser_exec
+
+ * src/raptor_xslt.c: Disable dc-extract.xsl
+
+2006-08-19 Dave Beckett <dave@dajobe.org>
+
+ * RELEASE.html: Updated for 1.4.11
+
+ * docs/raptor-docs.xml: Added raptor-parsers.xml and
+ raptor-serializers.xml
+
+ * docs/Makefile.am: Added raptor-parsers.xml and
+ raptor-serializers.xml
+
+ * docs/raptor-parsers.xml, docs/raptor-serializers.xml: Added list
+ of parsers and serializers
+
+ * docs/tmpl/section-parser.sgml: Updated
+
+ * docs/tmpl/section-www.sgml: Updated
+
+ * docs/tmpl/section-feature.sgml: Updated
+
+ * docs/libraptor.3: Rename raptor_uri_filter_func
+
+ * docs/raptor-docs.xml: tweak title
+
+ * docs/raptor-tutorial-parsing.xml: params
+
+ * docs/raptor-sections.txt: Rename raptor_uri_filter_func
+
+ * utils/rapper.c: Allow --show-namespaces to print to stderr while
+ relaying them to the serializer.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_declare_namespace_from_namespace): Don't
+ declared multiple prefixes for the same namespace URI.
+
+ * src/raptor_serialize_rdfxml.c:
+ (raptor_rdfxml_serialize_declare_namespace_from_namespace): Don't
+ declared multiple prefixes for the same namespace URI.
+
+ * docs/raptor-tutorial-parsing.xml: Update for uri filter arg change
+
+ * src/raptor_parse.c: Renamed raptor_www_uri_filter_func uri_filter to
+ raptor_uri_filter_func uri_filter and removed raptor_www* arg to
+ the filter function.
+
+ * src/raptor.h: Renamed raptor_www_uri_filter_func uri_filter to
+ raptor_uri_filter_func uri_filter and removed raptor_www* arg to
+ the filter function.
+
+ * src/raptor_www.c: Renamed raptor_www_uri_filter_func uri_filter
+ to raptor_uri_filter_func uri_filter and removed raptor_www* arg
+ to the filter function.
+
+ * src/raptor_internal.h: Renamed raptor_www_uri_filter_func
+ uri_filter to raptor_uri_filter_func uri_filter and removed
+ raptor_www* arg to the filter function.
+
+ * src/raptor_xslt.c: (raptor_xslt_uri_parse_bytes): Take in a
+ small structure to get the raptor_parser* pointer as well as the
+ libxml parser context. Use it to pass on the nonet option to
+ libxml if it is set.
+ (raptor_xslt_run_grddl_transform_uri): Use new struct.
+
+ * src/raptor_rss.c: (raptor_rss_parse_start): Pass on
+ raptor_parser feature no_net to raptor_sax2.
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_parse_init): Do feature
+ related initialising at the start of every parse, not once for all
+ rdf/xml parser instances.
+ (raptor_rdfxml_parse_start): Init feature_normalize_language and
+ feature_no_net here.
+
+ * src/raptor_sax2.c: (raptor_sax2_parse_chunk): Set libxml option
+ XML_PARSE_NONET if sax2 feature RAPTOR_FEATURE_NO_NET is set.
+ (raptor_sax2_set_feature): Handle RAPTOR_FEATURE_NO_NET.
+
+ * src/raptor_internal.h: raptor_sax2 gains feature_no_net
+
+ * docs/raptor-tutorial-parsing.xml: Add parser URI filtering
+ examples to tutorial
+
+ * docs/libraptor.3: Updated for 1.4.11
+
+ * utils/rapper.c: Reorder help message. Use triples in messages
+ and fix that plurals thing.
+
+2006-08-18 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-tutorial-serializing.xml: Add IDs to examples
+
+ * docs/raptor-tutorial-parsing.xml: Add IDs to examples
+
+ * docs/raptor-tutorial-querying-functionality.xml: Make it xml
+
+ * src/raptor_sax2.c: Added autodocs for raptor_xml_element_is_empty
+
+ * docs/raptor-sections.txt: Add raptor_parser_set_uri_filter,
+ raptor_www_set_uri_filter and raptor_www_uri_filter_func
+
+ * docs/raptor-tutorial-querying-functionality.xml: Fix example, add ID
+
+ * src/raptor.h: Document RAPTOR_FEATURE_NO_NET
+
+ * src/raptor_parse.c: (main): Print all features for a parser,
+ don't stop at first non parser feature.
+
+ * src/raptor_xslt.c: (raptor_xslt_run_grddl_transform_uri): Set
+ URI filter or if feature NO_NET is set,
+ raptor_parse_uri_no_net_filter
+
+ * src/raptor_xml_writer.c: Add RAPTOR_FEATURE_NO_NET to switches
+
+ * src/raptor_sax2.c: Add RAPTOR_FEATURE_NO_NET to switches
+
+ * src/raptor_serialize.c: Add RAPTOR_FEATURE_NO_NET to switches
+
+ * src/raptor_parse.c: (raptor_parse_uri_no_net_filter): Added to
+ use in parsers to deny network fetches when feature NO_NET is in
+ action.
+ (raptor_parse_uri_with_connection): Set URI filter or if feature
+ NO_NET is set, raptor_parse_uri_no_net_filter
+ (raptor_parser_set_uri_filter): Added.
+ (raptor_set_feature, raptor_get_feature): Handle
+ RAPTOR_FEATURE_NO_NET.
+ (raptor_parser_copy_user_state): Copy uri filter fields.
+
+ * src/raptor_www.c: (raptor_www_set_uri_filter): Added to add a
+ filter function to check a URI before it is resolved.
+ (raptor_www_fetch): call URI filter function before resolving.
+
+ * src/raptor_feature.c: Added RAPTOR_FEATURE_NO_NET to deny
+ network requests, primarily in parsing.
+
+ * src/raptor_internal.h: Add feature_no_net Added
+ raptor_parse_uri_no_net_filter prototype raptor_parser and
+ raptor_www gain fields uri_filter_user_data and
+ raptor_www_uri_filter_func uri_filter
+
+ * src/raptor.h: Added RAPTOR_FEATURE_NO_NET
+ Added raptor_www_uri_filter_func filter.
+ Added raptor_parser_set_uri_filter prototype.
+ Added raptor_www_set_uri_filter
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_generate_statement): Make
+ sure the allocated URI is always freed.
+
+ * configure.ac: Strip more -O flags from incoming CFLAGS, CXXFLAGS
+ and CPPFLAGS.
+
+ * configure.ac: Patch configure.ac to remove un-necessary tests
+ for C++ or F77++ compilers that libtool stupidly insists on
+
+2006-08-14 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rdfxmla.c: Replace reference counting with
+ counting blank/resource nodes used as subjects and objects to
+ prevent dual-triple generation.
+ Fixes Issue#0000014 http://bugs.librdf.org/mantis/view.php?id=14
+ Add function documentation and tidy code style.
+
+ * src/n3_parser.y: (raptor_n3_parse_start): Enforce that a base
+ URI is required.
+
+ * src/turtle_parser.y: (raptor_turtle_parse_start): Enforce that a
+ base URI is required.
+
+2006-07-30 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xslt.c: Allow GRDDL value to be a space-separated
+ list of URIs, so now can support dataview:transformation in XML
+ taking a list of transformations as defined in
+ http://www.w3.org/2004/01/rdxh/spec#grddl-xhtml
+ (raptor_xslt_parse_chunk): Split the value into a list of XSLT
+ URIs and use each of them on the document.
+ Fixes Issue #0000041 http://bugs.librdf.org/mantis/view.php?id=41
+
+ * src/raptor_xslt.c: Added a table of xpaths and optional XSLT
+ URIs to use, which allows non-GRDDL to be given as long as
+ XML/XHTML is recognised and the XSLT sheet does the transformation
+ work. Added transform pointers for DC <meta>, Embedded RDF and
+ HCalendar
+ (raptor_xslt_run_grddl_transform_doc,
+ raptor_xslt_run_grddl_transform_uri): Added, pulled out of
+ raptor_xslt_parse_chunk which was too long.
+ (raptor_xslt_parse_chunk): Much smaller and tidied error messages.
+ Use the given XSLT URI to do a transform if it exists rather than
+ the node value(s) as URIs for multiple transforms.
+
+ * configure.ac: Remove libwww support
+
+ * src/raptor_internal.h, src/raptor_www.c,
+ src/raptor_www_libwww.c: Remove libwww support
+
+2006-07-16 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c: (raptor_rss10_build_items):
+ Recognize ordinals also by their URI, not just from the deprecated
+ ORDINAL special type - this makes RSS 1.0 serializing work again.
+ Based on patch from Shin-ichi Hirata.
+
+2006-07-15 Dave Beckett <dave@dajobe.org>
+
+ * NEWS.html, configure.ac, src/win32_raptor_config.h: Bumped
+ versions to 1.4.11
+
+2006-07-14 Dave Beckett <dave@dajobe.org>
+
+ * Snapshotted raptor_1_4_10 for 1.4.10 release (SVN r11070)
+
+2006-07-04 Dave Beckett <dave@dajobe.org>
+
+ * raptor.pc.in, src/raptor-config.in: Remove @LDFLAGS from
+ raptor.pc.in and src/raptor-config.in.
+ Fixes Issue#0000097 http://bugs.librdf.org/mantis/view.php?id=97
+
+2006-06-26 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h: (raptor_identifier_type): no more
+ RAPTOR_IDENTIFIER_TYPE_ORDINAL generated.
+
+ * src/n3_parser.y: Remove duplicate symbol PREFIX.
+ (raptor_n3_generate_statement): Do not turn a rdf:_n into an
+ ordinal but just check it for validity.
+
+ * src/turtle_parser.y: Remove duplicate symbol PREFIX.
+ (raptor_turtle_generate_statement): Do not turn a rdf:_n predicate
+ into an ordinal but just check it for validity.
+
+ * src/ntriples_parse.c: (raptor_ntriples_generate_statement): Do
+ not turn a rdf:_n predicate into an ordinal but just check it for
+ validity.
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_generate_statement): Turn a
+ predicate ordinal into a resource using
+ raptor_new_uri_from_rdf_ordinal Handle reifying this afterwards.
+
+ * src/raptor_general.c: (raptor_statement_copy): Turn a subject,
+ predicate or object ordinal into a resource using
+ raptor_new_uri_from_rdf_ordinal
+
+ * src/raptor_internal.h: Added raptor_new_uri_from_rdf_ordinal
+ prototype.
+
+ * src/raptor_uri.c: (raptor_new_uri_from_rdf_ordinal): Added - internal.
+
+2006-06-25 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_generate_statement): Add
+ predicate_ordinal field, for now. Fix up calls to this to use it.
+
+2006-06-07 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c: (raptor_rss_parse_chunk): Return 0 on success
+
+2006-05-07 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_comment_handler): Do nothing
+ when a comment is given outside an xml_element context.
+
+ * src/raptor_rss.c: (raptor_rss_parse_chunk,
+ raptor_rss_parse_terminate): Make triples appear at end of
+ parsing, not on parser destruction which was terribly wrong.
+ (raptor_rss_comment_handler): Do nothing when a comment is given
+ outside an xml_element context.
+
+2006-05-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rdfxml.c: (raptor_rdfxml_serialize_start):
+ Reset "written header" flag. Without this, reusing a serializer
+ dies.
+
+2006-04-30 Dave Beckett <dave@dajobe.org>
+
+ * docs/libraptor.3: Updated for some final 1.4.9 changes
+
+2006-04-22 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_guess.c: (raptor_guess_parse_chunk): Tired of seeing
+ guess parser name, move to verbose debugging.
+
+ * src/raptor_www.c: (raptor_www_set_http_accept): Tired of seeing
+ accept headers, move to verbose debugging.
+
+ * src/raptor_xml_writer.c: (main): Rewrite to remove warning
+ punning
+
+ * src/raptor_www_test.c: (main): Rewrite to remove warning punning
+
+ * src/raptor_uri.c: (raptor_uri_uri_string_to_filename_fragment):
+ Rewrite to remove warning punning
+
+ * src/raptor_serialize_rss.c: (raptor_rss10_emit_item): Init
+ element to NULL
+
+ * src/raptor_rss.c: (raptor_rss_end_element_handler): Init
+ cdata_len to 0
+
+ * configure.ac, src/win32_raptor_config.h: Bumped version to
+ 1.4.10
+
+ * Snapshotted raptor_1_4_9 for 1.4.9 release (SVN r10822)
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_sax2_new_namespace_handler):
+ Move var def to start of block.
+
+ * src/raptor_parse.c: (raptor_parse_uri_with_connection): Move var
+ def to start of block.
+
+2006-04-20 Dave Beckett <dave@dajobe.org>
+
+ * examples/Makefile.am, examples/rdfcat.c, examples/rdfprint.c:
+ Add tutorial examples rdfcat.c and rdfprint.c here.
+
+ * docs: DocBook updates: new Tutorial chapter on serializing plus
+ completing of parsing chapter.
+
+ * src/raptor_uri.c: Change all calloc/mallocs for URI strings to
+ add enough room for a full pointer at the end of a URI string to
+ stop valgrind moans on 64bit systems when they are looking for the
+ end of string NUL.
+
+2006-04-15 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_www_curl.c: Delete alternate path using
+ CURLINFO_CONTENT_TYPE instead of grepping headers.
+
+ * src/raptor_www_curl.c: Add alternate path to use
+ CURLINFO_CONTENT_TYPE instead of grepping headers. Downside is
+ that the content type appears long after content. Add more debug
+ messages when RAPTOR_DEBUG > 2
+ (raptor_www_curl_init): Tidy alternate defines
+
+ * src/raptor_internal.h: Deleted raptor_uri_init_default_handler
+ prototype.
+
+ * src/raptor_uri.c: (raptor_uri_set_handler,
+ raptor_new_iostream_from_handler): Ajusted to take const handler
+ args.
+ (raptor_uri_init_default_handler): Deleted.
+ (raptor_uri_init): No need to init static struct.
+
+ * src/raptor.h: Adjust raptor_uri_set_handler and
+ raptor_new_iostream_from_handler prototypes to take const handler
+ args.
+
+ * src/raptor_rss.c: make raptor_rss_uplift_map const
+
+ * src/raptor_iostream.c: make handler field a const
+ (raptor_new_iostream_from_handler): Take a const handler.
+
+2006-04-14 Dave Beckett <dave@dajobe.org>
+
+ * tests/all-escape.nt, tests/all-escape.rdf: All 0-7F ascii
+ escapes and the XML 1.1 output
+
+2006-04-11 Dave Beckett <dave@dajobe.org>
+
+ * docs: DocBook updates
+
+2006-04-10 Dave Beckett <dave@dajobe.org>
+
+ * docs: DocBook updates: Tutorial introduction, parsing.
+
+2006-04-09 Dave Beckett <dave@dajobe.org>
+
+ * docs: DocBook updates
+
+ * src/raptor_xml.c: (raptor_xml_element_declare_namespace): Add
+ int return value for when a namespace is failed to be declared,
+ when it is already there.
+
+ * src/raptor.h: raptor_xml_element_declare_namespace now has an
+ int return value
+
+2006-04-07 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xslt.c: (raptor_xslt_parse_chunk): Added debug statement.
+
+2006-04-03 Dave Beckett <dave@dajobe.org>
+
+ * tests/turtle/manifest.ttl: Added test-25
+
+ * tests/turtle/Makefile.am, tests/turtle/test-25.out,
+ tests/turtle/test-25.ttl: Added comment test
+
+2006-04-01 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c: (raptor_rss_start_element_handler): Tidying of
+ logic near type attribute
+
+ * src/raptor_rss.c: (raptor_rss_start_element_handler): More
+ atom/old atom/rss guessing. Look for type=xml and an XML mime
+ type to trigger xml writer Look for attribute version on feed to
+ ensure old atom is found
+
+ * src/raptor_rss.c: (raptor_init_parser_rss): Add another mime
+ type possibility.
+
+ * src/raptor_rss.c: Add is_atom field to rss_parser structure.
+ (raptor_rss_start_element_handler): Use elements seen to pick
+ is_atom flag. Use is_atom flag to switch between rss author and
+ atom author handling.
+
+ * src/raptor_rss.c: (raptor_init_parser_rss): Add more
+ unregistered rss mime type possibilities.
+
+ * src/raptor_guess.c: (raptor_guess_parse_content_type_handler):
+ Strip ';' onwards from content type for guessing.
+
+ * src/raptor_rss.c: (raptor_rss_parse_recognise_syntax): Use xml
+ in mime type guess
+
+ * src/raptor_parse.c: (raptor_parser_get_accept_header,
+ raptor_parser_get_accept_header_all): Do not format with ;q=1.0
+
+ * src/turtle_parser.y: (raptor_init_parser_turtle): Register
+ application/x-turtle once only.
+
+ * src/raptor_parse.c: (raptor_guess_parser_name,
+ raptor_parser_get_accept_header,
+ raptor_parser_get_accept_header_all): Fix type_q list walking to
+ detect end of loops vs early exit properly.
+
+ * src/turtle_parser.y: (raptor_init_parser_turtle): Register N3
+ mime types here with lower Q, if no N3 parser is present.
+
+ * src/n3_parser.y: (raptor_init_parser_n3): Add another N3 mime
+ type possibility.
+
+ * src/raptor_parse.c: (raptor_guess_parser_name): Fix i/j problem.
+
+ * src/raptor_serialize_rss.c: (raptor_rss10_emit_item): Handle
+ atom:summary XML content
+
+ * configure.ac: No longer require libxml for rss-tag-soup parser.
+
+ * src/raptor_serialize_rss.c: casts
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c,
+ src/raptor_serialize_rss.c: Switch to using raptor_sax2 API from
+ xmlReader, and now can do atom type 'xhtml' content using
+ raptor_xml_writer.
+
+ * src/raptor.h: Add prototype for raptor_xml_element_is_empty
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_characters_handler,
+ raptor_rdfxml_cdata_handler, raptor_rdfxml_comment_handler): Add
+ xml_element parameter.
+
+ * src/raptor_sax2.c: (raptor_xml_element_is_empty): Added.
+ (raptor_sax2_characters_handler, raptor_sax2_cdata_handler,
+ raptor_sax2_comment_handler): Add xml_element parameter.
+
+ * src/raptor_internal.h: Add xml_element field to
+ raptor_sax2_characters_handler, raptor_sax2_cdata_handler and
+ raptor_sax2_comment_handler
+
+2006-03-30 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c: update function names in fatal/debug messages
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_start_element_handler): Tidy
+ tests for looking for an empty element.
+
+ * src/raptor_internal.h: raptor_xml_element gains a user_data
+ field
+
+2006-03-29 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c: Replace raptor_rss_parser_context* with
+ raptor_rss_parser*
+
+2006-03-27 Dave Beckett <dave@dajobe.org>
+
+ * src/win32_raptor_config.h: raptor win32 build files update from
+ John Barstow
+
+ * win32/rapper.vcproj, win32/raptor.sln, win32/raptor.vcproj:
+ raptor win32 build files update from John Barstow
+
+ * docs/tmpl/section-parser.sgml: docs update
+
+ * docs/raptor-overrides.txt: Do not override raptor_statement
+
+ * docs/tmpl/section-unused.sgml: RAPTOR_DEPRECATED
+
+2006-03-26 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-sections.txt: Added raptor_parser_get_accept_header
+
+ * src/raptor_parse.c: (raptor_parser_get_accept_header): fix q format
+
+ * src/n3_parser.y: (raptor_init_parser_n3): Register n3 mime type
+
+ * src/turtle_parser.y: (raptor_init_parser_turtle): Register
+ turtle experimental mime types
+
+ * src/raptor_xslt.c: (raptor_init_parser_grddl): Register HTML and
+ XHTML mime types at low q.
+
+ * src/raptor_rdfxml.c: (raptor_init_parser_rdfxml): Register
+ rdf/xml and older mozilla-era mime type.
+
+ * src/raptor_www.c: (raptor_www_set_http_accept): debug message
+
+ * src/raptor_rss.c: (raptor_rss_parse_recognise_syntax): look in
+ mime type for rss or atom.
+ (raptor_init_parser_rss): Register two rss mime types.
+
+ * src/raptor_guess.c: (raptor_guess_accept_header): Added
+ (raptor_guess_parser_register_factory): Use
+ raptor_guess_accept_header to accept all known types.
+
+ * src/raptor.h: Added prototype for raptor_parser_get_accept_header
+
+ * src/raptor_parse.c: (raptor_delete_parser_factories): Delete new
+ mime_types list.
+ (raptor_parser_register_factory): Use
+ raptor_parser_factory_add_mime_type.
+ (raptor_free_type_q): Added.
+ (raptor_parser_factory_add_mime_type): Added.
+ (raptor_syntaxes_enumerate): Use mime types from sequence to
+ return first as primary.
+ (raptor_parse_uri_with_connection): Use
+ raptor_parser_get_accept_header to do the work.
+ (raptor_get_mime_type): Use mime_type sequence in factory to
+ return first mime type if registered.
+ (raptor_guess_parser_name): Use mime types from sequence to find
+ them.
+ (raptor_parser_get_accept_header): Added
+ (raptor_parser_get_accept_header_all): Added to return an accept
+ header for all types
+
+ * src/raptor_internal.h: Added raptor_type_q for storing mime
+ type+Q values. raptor_parser_factory gains raptor_sequence*
+ mime_types replacing a single mime_type const char* and an
+ accept_header method to return the Accept: header rather than use
+ it from the mime_types list. Added prototypes, for
+ raptor_parser_factory_add_mime_type, raptor_free_type_q and
+ raptor_parse_get_all_accept_headers
+
+ * src/raptor_www_curl.c: (raptor_www_curl_fetch): Get the curl
+ status into a long, not an int which causes failure on 64 bit
+ archs. Fixes issue#0000075
+ http://bugs.librdf.org/mantis/view.php?id=75
+
+ * src/raptor_internal.h: (struct raptor_www_s): Removed CURLcode
+ status
+
+2006-03-20 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-chapter-intro.xml: docs
+
+2006-03-19 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-chapter-intro.xml: docs
+
+ * docs/raptor-docs.xml: Added raptor-chapter-intro.xml
+
+ * docs/Makefile.am: Added raptor-chapter-intro.xml
+
+ * docs/raptor-chapter-intro.xml: intro
+
+ * Makefile.am: deleted obsolete deb rule
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_parse_recognise_syntax): Add
+ foaf and doap to suffixes that are likely RDF/XML
+
+ * gtkdoc-mkdb reports "100% symbol docs coverage"
+
+ * docs/raptor-overrides.txt: Override internal struct names.
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_sequence.c,
+ src/raptor_serialize.c, src/raptor_xml.c, src/raptor_xml_writer.c:
+ autodocs
+
+2006-03-18 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_utf8.c, docs/tmpl/section-uri.sgml,
+ docs/tmpl/section-xml-namespace.sgml,
+ docs/tmpl/section-xml-qname.sgml, docs/tmpl/section-unicode.sgml:
+ autodocs
+
+ * src/raptor_utf8.c: (raptor_unicode_char_to_utf8): Add docs.
+ (raptor_utf8_to_unicode_char): Add docs. Now also checks for
+ overlong UTF-8 sequences, illegal code positions or out of range
+ codes.
+
+ * docs/raptor-sections.txt: Added new functions
+
+ * src/turtle_parser.y: Remove generating
+ RAPTOR_IDENTIFIER_TYPE_RESOURCE for statement predicates as
+ deprecated in 1.4.8
+
+ * src/raptor_rss.c: Remove generating
+ RAPTOR_IDENTIFIER_TYPE_RESOURCE for statement predicates as
+ deprecated in 1.4.8
+
+ * src/raptor_rdfxml.c: Remove generating
+ RAPTOR_IDENTIFIER_TYPE_RESOURCE for statement predicates as
+ deprecated in 1.4.8
+
+ * src/ntriples_parse.c: Remove generating
+ RAPTOR_IDENTIFIER_TYPE_RESOURCE for statement predicates as
+ deprecated in 1.4.8
+
+ * src/n3_parser.y: Remove generating
+ RAPTOR_IDENTIFIER_TYPE_RESOURCE for statement predicates as
+ deprecated in 1.4.8
+
+ * src/raptor_uri.c: (raptor_new_uri): Fail on NULL or empty uri_string.
+ (raptor_new_uri_from_uri_local_name): Fail on NULL uri or local_name
+ (raptor_new_uri_relative_to_base): Fail on NULL base_uri or uri_string
+ (raptor_new_uri_from_id): Fail on NULL base_uri or id.
+ (raptor_new_uri_for_rdf_concept): Fail on NULL name.
+ (raptor_uri_copy): Fail on NULL uri.
+ (raptor_uri_as_string): Fail on NULL uri.
+ (raptor_uri_as_counted_string): Fail on NULL uri.
+ (raptor_uri_filename_to_uri_string): : Fail on NULL filename.
+ (raptor_uri_uri_string_to_filename_fragment): Fail on NULL or empty
+ uri_string.
+ (raptor_uri_uri_string_is_file_uri): Fail on NULL or empty uri_string.
+ (raptor_new_uri_for_xmlbase): Fail on NULL uri.
+ (raptor_new_uri_for_retrieval): Fail on NULL uri.
+ (raptor_uri_to_relative_counted_uri_string): Fail on NULL
+ reference_uri. Document allowing NULL base_uri.
+ (raptor_uri_print): Print "(NULL URI)" for NULL URI.
+ (raptor_uri_to_counted_string): Fail on NULL uri.
+
+ * src/raptor_rdfxml.c: More raptor_* to raptor_rdfxml_* renames
+
+ * src/raptor_internal.h: Delete prototypes for functions only used
+ in rdfxml
+
+ * src/raptor_qname.c: Return const namespace from
+ raptor_qname_get_namespace
+
+ * src/raptor.h: Return const namespace from
+ raptor_qname_get_namespace
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_record_ID): Renamed from
+ raptor_record_ID
+ (raptor_rdfxml_inscope_base_uri): Renamed from
+ raptor_inscope_base_uri and now static
+ (raptor_inscope_xml_language): Deleted, replaced with 1 call to
+ raptor_sax2_inscope_xml_language
+
+ * src/raptor_rdfxml.c: raptor_element to raptor_rdfxml_element renames
+
+2006-03-15 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xml.c: (raptor_iostream_write_xml_any_escaped_string):
+ Write XML-escaped ASCII 9 and A as XML with trailing ';'
+
+ * tests/Makefile.am, tests/ex-60.nt, tests/ex-60.rdf: Added ex-60
+ rdf/xml serializing test
+
+ * src/raptor.h: Added raptor_qname_get_namespace
+
+ * src/raptor_qname.c: (raptor_qname_get_namespace): Added.
+
+ * src/raptor_www.c: (raptor_uri_uri_string_is_file_uri): Renamed
+ from raptor_uri_string_is_file_uri.
+
+ * src/raptor_uri.c: (raptor_uri_uri_string_is_file_uri): Renamed
+ from raptor_uri_string_is_file_uri.
+
+ * src/raptor.h: (raptor_uri_uri_string_is_file_uri): Renamed from
+ raptor_uri_string_is_file_uri.
+
+2006-03-04 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_parser.y: (directive): Use
+ raptor_new_namespace_from_uri and save string conversions.
+
+ * src/n3_parser.y: (directive): Use raptor_new_namespace_from_uri
+ and save string conversions.
+
+ * src/raptor_www.c: (raptor_www_fetch): Use
+ raptor_uri_string_is_file_uri instead of deprecated
+ raptor_uri_is_file_uri
+
+ * src/raptor_serialize_simple.c:
+ (raptor_simple_serialize_statement): Use new raptor_iostream_write_uri.
+
+ * src/raptor_uri.c: (raptor_uri_is_file_uri): Deprecated for
+ raptor_uri_string_is_file_uri.
+ (raptor_uri_string_is_file_uri): Added.
+
+ * src/raptor.h: Deprecated raptor_uri_is_file_uri for
+ raptor_uri_string_is_file_uri.
+ Added raptor_iostream_write_uri.
+
+ * src/raptor_iostream.c: (raptor_iostream_write_uri): Added.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_statement): Do not free shared string
+ returned from raptor_uri_as_string. Fixes issue#0000065
+ http://bugs.librdf.org/mantis/view.php?id=65
+
+ * src/raptor_serialize_rdfxml.c:
+ (raptor_rdfxml_serialize_statement): Use raptor_uri_to_string so
+ that new strings are allocated then freed. Fixes issue#0000065
+ http://bugs.librdf.org/mantis/view.php?id=65
+
+ * src/raptor_stringbuffer.c:
+ (raptor_stringbuffer_append_string_common,
+ raptor_stringbuffer_append_counted_string,
+ raptor_stringbuffer_append_string): Do nothing on appending a NULL
+ string or a string of length 0.
+ (main): Add tests for this. Fixes issue#0000073
+ http://bugs.librdf.org/mantis/view.php?id=73
+
+2006-02-21 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_new_qname_from_resource): Use
+ raptor_namespaces_qname_from_uri to prefer using an existing XML
+ namespace for creating a qname, otherwise make a new one just for
+ this element.
+
+ * src/raptor_namespace.c: (raptor_namespaces_qname_from_uri):
+ Added, to make a qname from the in-scope namespaces in a stack.
+
+ * src/raptor.h: Added prototype for raptor_namespaces_qname_from_uri
+
+2006-02-20 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c: raptor_rss_parser_context_s gains is_empty and
+ nstack fields.
+ (raptor_rss_context_init): Initialise new namespace stack and the
+ nspace field of raptor_rss_namespace_info.
+ (raptor_rss_context_terminate): Delete new namespace stack.
+ (raptor_rss_parse_start): Synthesise the namespace events.
+ (raptor_rss_start_element): Push is_empty flag into rss parser
+ context and reorganize empty case.
+ (raptor_rss_parser_processNode): set element_is_empty flag and use
+ it.
+
+ * src/raptor_rss_common.c: Add RDF namespace for RSS use
+
+ * src/raptor_rss.h: Add RDF namespace for RSS use
+
+2006-02-19 Dave Beckett <dave@dajobe.org>
+
+ * AUTHORS: update me
+
+2006-02-18 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-sections.txt: Add raptor_xml_element_get_attributes
+ raptor_xml_element_get_attributes_count
+
+ * src/raptor_serialize_rdfxmla.c: Remove // comments
+
+ * src/raptor_guess.c: Cast for C++
+
+ * src/n3_parser.y: Cast for C++
+
+ * src/turtle_parser.y: Cast for C++
+
+ * src/raptor_sax2.c: (raptor_sax2_parse_start,
+ raptor_sax2_end_element): Code tidying, move decls to top of
+ functions and don't end early if there is no handler.
+
+ * src/raptor_rdfxml.c: Remove several unused uses of raptor_sax2*
+
+ * src/raptor_rdfxml.c: Change to use field name xml_element for a
+ raptor_xml_element inside raptor_element.
+
+ * src/raptor_sax2.c: (raptor_free_sax2): Delete obsolete
+ raptor_libxml_libxml_free_entities. Free base URI.
+ (raptor_sax2_inscope_base_uri): Return SAX2 base URI if nothing is
+ in scope.
+ (raptor_sax2_parse_start): Save Base URI.
+ (raptor_sax2_start_element): Add all code from old
+ raptor_rdfxml_start_element_handler.
+ (raptor_sax2_end_element): Add all code from old
+ raptor_rdfxml_end_element_handler.
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_sax2_new_namespace_handler):
+ Add raptor_parser_start_namespace call.
+ (raptor_rdfxml_start_element_handler): Deleted and merged into
+ raptor_sax2_start_element.
+ (raptor_rdfxml_end_element_handler): Use raptor_xml_element*
+ argument.
+ (raptor_inscope_base_uri): Tidy code.
+
+ * src/raptor_internal.h: raptor_sax2_start_element_handler and
+ raptor_sax2_end_element_handler now take raptor_xml_element*
+ raptor_sax2 gaisn base_uri field.
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_end_element_handler): Split
+ into XML and RDF/XML parts now calling
+ raptor_rdfxml_end_xml_element_handler.
+ (raptor_rdfxml_end_xml_element_handler): Added, splitting RDF/XML
+ part out of raptor_rdfxml_end_element_handler
+
+ * src/raptor_sax2.c: (raptor_free_sax2): Run
+ raptor_namespaces_clear.
+ (raptor_sax2_simple_error): Added, to report errors from
+ namespaces upwards.
+ (raptor_sax2_parse_start): Init namespaces stack.
+
+ * src/raptor_rdfxml.c: Deleted raptor_namespace_stack, now in
+ raptor_sax2
+ (raptor_rdfxml_start_xml_element_handler): Added, splitting
+ RDF/XML part out of raptor_rdfxml_start_element_handler
+ (raptor_rdfxml_end_element_handler): Prepare for splitting XML and
+ RDF/XML parts.
+ (raptor_rdfxml_parse_start): Moved namespaces stack init into
+ raptor_sax2_parse_start.
+
+ * src/raptor_internal.h: raptor_sax2 gains raptor_namespace_stack
+ from rdf/xml parser
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_sax2_new_namespace_handler):
+ Added, as callback raptor_sax2_set_namespace_handler.
+ (raptor_rdfxml_start_element_handler): Split XML and RDF/XML
+ namespace processing parts in preparation for moving them
+ elsewhere.
+ (raptor_rdfxml_parse_init): Use raptor_sax2_set_feature to set the
+ XML namespace handler.
+
+ * src/raptor.h: Added prototypes for
+ raptor_xml_element_get_attributes and
+ raptor_xml_element_get_attributes_count.
+
+ * src/raptor_xml.c: (raptor_xml_element_get_attributes,
+ raptor_xml_element_get_attributes_count): Added.
+
+ * src/raptor_internal.h: raptor_sax2 gaisn namespace_handler and
+ feature_normalize_language fields. Added prototypes for
+ raptor_sax2_set_namespace_handler and raptor_sax2_set_feature.
+
+ * src/raptor_sax2.c: (raptor_sax2_set_namespace_handler): Added,
+ to allow callbacks when an XML namespace is defined.
+ (raptor_sax2_set_feature): Added, with one feature
+ RAPTOR_FEATURE_NORMALIZE_LANGUAGE for normalizing xml:lang values.
+
+2006-02-04 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_parse.c: (raptor_parser_warning): Restored.
+
+ * src/raptor_parse.c: (raptor_parser_error_varargs): Restored.
+
+ * src/Makefile.am: Added fix-bison
+
+ * src/fix-bison: Format output generated by bison
+
+ * src/raptor_internal.h: revert experiment not intended to be
+ commited
+
+ * src/raptor_internal.h: Add prototypes for
+ raptor_invoke_message_varargs and
+ raptor_invoke_simple_message_varargs
+
+ * src/raptor_parse.c: (raptor_parser_simple_error,
+ raptor_parser_warning): Use raptor_invoke_message_varargs
+ (raptor_parser_error_varargs, raptor_parser_warning_varargs):
+ Deleted.
+
+ * src/raptor_general.c: (raptor_invoke_simple_message_varargs,
+ raptor_invoke_message): Helper functions for invoking
+ error/warning/fatal error handlers with varargs, just given a
+ handler that takes a single message string.
+
+2006-02-03 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: allow --enable-parsers/serializers=none
+
+2006-02-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c: (raptor_rss_start_element,
+ raptor_rss_end_element, raptor_rss_cdata):
+ Added, pulling big chunks of code out of the switch in
+ raptor_rss_parser_processNode.
+
+2006-01-27 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c: Do not write XML header here, XML
+ writer does it.
+
+2006-01-22 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_guess.c: (raptor_guess_parse_chunk): Tired of seeing
+ debug message. Goodbye.
+
+2006-01-16 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_namespace.c: (raptor_namespaces_format):
+ NULL-terminate the namespace string.
+ Fixes bug 0000062 http://bugs.librdf.org/mantis/view.php?id=62
+
+ * tests/test.nt: Remove svn:eol-style native property so that
+ multiple line endings in one file work
+
+ * win32/rapper.dsp, win32/rapper.vcproj, win32/raptor.dsp,
+ win32/raptor.dsw, win32/raptor.sln, win32/raptor.vcproj,
+ win32/raptortest.cpp, win32/raptortest.dsp,
+ win32/raptortest.vcproj: Restore CRLF end of lines, set
+ svn:eol-style CRLF
+
+2006-01-14 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-serializer.sgml,
+ docs/tmpl/section-xml-namespace.sgml: update docs for new
+ functions
+
+ * docs/raptor-sections.txt: Added
+ raptor_serialize_set_namespace_from_namespace
+
+ * utils/rapper.c: (relay_namespaces): Added, calling
+ raptor_serialize_set_namespace_from_namespace when namespaces are
+ not just printed out. Makes serializers use namespace prefix/URIs
+ found in parsed RDF.
+
+ * src/raptor_serialize_rdfxmla.c: Delay the writing of the
+ namespaces on the rdf:RDF root element till as late as possible,
+ allowing user declaration of namespaces to effect the output.
+ (raptor_rdfxmla_serialize_init): Add rdf:RDF's namespace to the
+ list of namespaces to declare.
+ (raptor_rdfxmla_serialize_terminate): Do not free namespace #0
+ because of above.
+ (raptor_rdfxmla_serialize_declare_namespace_from_namespace):
+ Added, to set a namespace declared once only, preventing the same
+ prefix appearing twice.
+ (raptor_rdfxmla_serialize_declare_namespace): Use the above.
+ (raptor_rdfxmla_serialize_start): Do not write root element here.
+ (raptor_rdfxmla_ensure_writen_header): Added to write root element
+ and namespace declarations.
+ (raptor_rdfxmla_serialize_statement,
+ raptor_rdfxmla_serialize_end): Call
+ raptor_rdfxmla_ensure_writen_header before emitting syntax.
+ (raptor_rdfxmla_serializer_register_factory): Register
+ raptor_rdfxmla_serialize_declare_namespace_from_namespace.
+
+ * src/raptor_serialize_rdfxml.c: Delay the writing of the
+ namespaces on the rdf:RDF root element till as late as possible,
+ allowing user declaration of namespaces to effect the output.
+ (raptor_rdfxml_serialize_init): Add rdf:RDF's namespace to the
+ list of namespaces to declare.
+ (raptor_rdfxml_serialize_terminate): Do not free namespace #0
+ because of above.
+ (raptor_rdfxml_serialize_declare_namespace_from_namespace): Added,
+ to set a namespace declared once only, preventing the same prefix
+ appearing twice.
+ (raptor_rdfxml_serialize_declare_namespace): Use the above.
+ (raptor_rdfxml_serialize_start): Do not write root element here.
+ (raptor_rdfxml_ensure_writen_header): Added to write root element
+ and namespace declarations.
+ (raptor_rdfxml_serialize_statement, raptor_rdfxml_serialize_end):
+ Call raptor_rdfxml_ensure_writen_header before emitting syntax.
+ (raptor_rdfxml_serializer_register_factory): Register
+ raptor_rdfxml_serialize_declare_namespace_from_namespace.
+
+ * src/raptor.h: Added prototype for
+ raptor_serialize_set_namespace_from_namespace
+
+ * src/raptor_serialize.c: (raptor_serialize_set_namespace): Now a
+ wrapper around:
+ (raptor_serialize_set_namespace_from_namespace:): Added, to set a
+ namespace for serialzing from an existing raptor_namespace
+
+ * src/raptor_internal.h: raptor_serializer_factory gains a factory
+ method declare_namespace_from_namespace
+
+ * tests/Makefile.am: Report error output on rdfxml-abbrev failure
+
+ * tests/Makefile.am: (check-rdfxmla): Don't die on first error,
+ report all then die.
+
+ * docs/raptor-sections.txt: Added
+ raptor_namespace_get_counted_prefix
+
+ * src/raptor.h: Added prototype for raptor_namespace_get_counted_prefix
+
+ * src/raptor_namespace.c: (raptor_namespace_get_counted_prefix):
+ Added to return prefix and it's length.
+
+ * src/turtle_parser.y: (statementList): Rewrite to remove all
+ shift/reduce conflicts.
+
+ * src/n3_parser.y: (statementList): Rewrite to remove all
+ shift/reduce conflicts.
+
+2006-01-10 Dave Beckett <dave@dajobe.org>
+
+ * src/n3_parser.y: Make literal be just literals, resource only
+ URI or QNAME.
+
+ * src/turtle_parser.y: Use TRUE and FALSE boolean literals to make
+ xsd:boolean values. Make literal be just literals, resource only
+ URI or QNAME.
+
+ * src/turtle_lexer.l: Added true & false boolean literals
+
+ * tests/turtle/Makefile.am, tests/turtle/manifest.ttl,
+ tests/turtle/test-24.out, tests/turtle/test-24.ttl: Added boolean
+ literals tests
+
+ * src/turtle_parser.y: Compatibility fixes for older bisons (1.7x)
+ and whitespace edits.
+
+ * src/n3_parser.y: Compatibility fixes for older bisons (1.7x) and
+ whitespace edits.
+
+2006-01-09 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_parser.y, src/n3_parser.y: Compatibility fixes for
+ older bisons (1.7x) and whitespace edits.
+
+ * examples/Makefile.am: Fix raptor_abort link dependencies
+
+2006-01-08 Dave Beckett <dave@dajobe.org>
+
+ * fix-groff-xhtml: footer
+
+2006-01-07 Dave Beckett <dave@dajobe.org>
+
+ * Makefile.am, autogen.sh, configure.ac, docs/Makefile.am,
+ examples/Makefile.am, examples/grapper.c,
+ examples/raptor_abort.c, fix-groff-xhtml, manifest.pl,
+ raptor-src-config.in, src/Makefile.am, src/fix-flex,
+ src/n3_common.h, src/n3_lexer.l, src/n3_parser.y,
+ src/ntriples_parse.c, src/parsedate.y, src/raptor-config.1,
+ src/raptor-config.1, src/raptor-config.in, src/raptor.h,
+ src/raptor_expat.c, src/raptor_feature.c,
+ src/raptor_general.c, src/raptor_guess.c,
+ src/raptor_identifier.c, src/raptor_internal.h,
+ src/raptor_iostream.c, src/raptor_libxml.c,
+ src/raptor_locator.c, src/raptor_namespace.c,
+ src/raptor_nfc.c, src/raptor_nfc.h, src/raptor_nfc_test.c,
+ src/raptor_parse.c, src/raptor_qname.c, src/raptor_rdfxml.c,
+ src/raptor_rfc2396.c, src/raptor_rss.c, src/raptor_rss.h,
+ src/raptor_rss_common.c, src/raptor_sax2.c,
+ src/raptor_sequence.c, src/raptor_serialize.c,
+ src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_rss.c,
+ src/raptor_serialize_simple.c, src/raptor_set.c,
+ src/raptor_stringbuffer.c, src/raptor_uri.c,
+ src/raptor_utf8.c, src/raptor_win32.c, src/raptor_www.c,
+ src/raptor_www_curl.c, src/raptor_www_libfetch.c,
+ src/raptor_www_libwww.c, src/raptor_www_libxml.c,
+ src/raptor_www_test.c, src/raptor_xml.c,
+ src/raptor_xml_writer.c, src/raptor_xsd.c,
+ src/raptor_xslt.c, src/strcasecmp.c, src/turtle_common.c,
+ src/turtle_common.h, src/turtle_lexer.l,
+ src/turtle_parser.y, src/win32_raptor_config.h,
+ tests/Makefile.am, tests/empty.c, tests/ex-52.svg,
+ tests/test.html, tests/test.nt, tests/test.svg,
+ utils/Makefile.am, utils/getopt.c, utils/rapper.1,
+ utils/rapper.c, utils/raptor_getopt.h, utils/rdfdiff.c:
+ Remove RCS ID. Copyright 2006
+
+ * .cvsignore, data/.cvsignore, docs/.cvsignore,
+ examples/.cvsignore, src/.cvsignore, tests/.cvsignore,
+ tests/turtle/.cvsignore, utils/.cvsignore, win32/.cvsignore,
+ delete .cvsignore files
+
+2006-01-07 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac, src/win32_raptor_config.h: Bumped version to 1.4.9
+
+ * docs/tmpl/section-feature.sgml: Added
+ RAPTOR_FEATURE_WRITER_XML_VERSION
+
+ * Switched to Subversion version control.
+ CVS tag for raptor 1.4.8: raptor_1_4_8
+ Subversion revision ID for raptor 1.4.8: r3091
+
+2006-01-03 Dave Beckett <dave@dajobe.org>
+
+ * Snapshotted raptor_1_4_8 for 1.4.8 release (SVN r3091)
+
+2006-01-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_namespace.c (main): Cast for string
+
+ * src/n3_lexer.l: Apply more turtle to n3 changes for names.
+
+ * src/n3_parser.y: Update N3 parser to turtle.
+
+ * src/n3_lexer.l: Update N3 lexer to turtle.
+
+ * src/raptor_general.c, src/raptor_namespace.c,
+ src/turtle_parser.y, src/turtle_lexer.l: 2006 and urls
+
+ * tests/turtle/Makefile.am: Added test-23
+
+ * tests/turtle/test-23.out, tests/turtle/test-23.ttl: Test long
+ literal ending in a double quote
+
+ * tests/turtle/manifest.ttl: Added test-23 testing long literal
+ ending in a double quote
+
+ * src/turtle_common.c (raptor_stringbuffer_append_turtle_string):
+ Fix comment to match code and report hex char of bad escapes.
+
+ * src/turtle_lexer.l: Try to handle \-escapes inside """ properly.
+
+ * tests/turtle/README.txt: url
+
+ * tests/turtle/Makefile.am: Add TEST_MANIFEST_FILES to tests.zip
+
+ * tests/turtle/manifest-bad.ttl, tests/turtle/manifest.ttl:
+ Updated manifests from Arjohn Kampman
+
+ * src/turtle_parser.y (DECIMAL_LITERAL): Added turtle decimal and
+ double after SPARQL 2005-11-23
+
+ * src/turtle_lexer.l: Added turtle decimal and double after SPARQL
+ 2005-11-23
+
+ * tests/turtle/Makefile.am, tests/turtle/test-19.out,
+ tests/turtle/test-21.out, tests/turtle/test-21.ttl,
+ tests/turtle/test-22.out, tests/turtle/test-22.ttl: Added
+ decimal/double/integer + and - checks from
+ http://lists.w3.org/Archives/Public/public-cwm-talk/2005OctDec/0017.html
+
+2006-01-01 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_namespace.c (raptor_namespaces_find_namespace):
+ Handle searching for default namespace with prefix=NULL.
+ (main): Add test code for above.
diff --git a/ChangeLog.8 b/ChangeLog.8
new file mode 100644
index 0000000..6179c06
--- /dev/null
+++ b/ChangeLog.8
@@ -0,0 +1,2234 @@
+2007-12-31 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_iostream.c: (raptor_iostream_init_common): Added to
+ init iostream fields
+
+ * src/raptor_iostream.c: Replaced raptor_iostream_handler
+ structure with raptor_iostream_handler2
+ (raptor_new_iostream_from_handler2): Added.
+ (raptor_new_iostream_from_handler): Rewritten to use
+ raptor_new_iostream_from_handler2 and create an internal
+ raptor_iostream_handler2.
+ (raptor_new_iostream_from_sink, raptor_new_iostream_from_filename
+ raptor_new_iostream_from_file_handle,
+ raptor_new_iostream_from_string): Added for constructing read
+ iostreams.
+ (method raptor_iostream_read_bytes): Added for reading from read
+ iostreams.
+
+
+ * src/raptor.h: Added raptor_iostream_read_bytes_func Added
+ raptor_iostream_handler2 with version, private field and
+ read_bytes field. Deprecated raptor_iostream_handler structure
+ for raptor_iostream_handler2 structure. Added
+ raptor_new_iostream_from_handler2 and deprecated
+ raptor_new_iostream_from_handler Added
+ raptor_new_iostream_from_sink, raptor_new_iostream_from_filename
+ raptor_new_iostream_from_file_handle and
+ raptor_new_iostream_from_string for constructing read iostreams.
+ Added method raptor_iostream_read_bytes for read iostreams.
+
+2007-12-28 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_internal.h: Move SAX2 to public
+ API. Added new raptor_sax2 typedef. Added XML type handlers
+ raptor_sax2_start_element_handler,
+ raptor_sax2_end_element_handler, raptor_sax2_characters_handler,
+ raptor_sax2_cdata_handler, raptor_sax2_comment_handler,
+ raptor_sax2_unparsed_entity_decl_handler,
+ raptor_sax2_external_entity_ref_handler. Added functions
+ raptor_new_sax2, raptor_free_sax2,
+ raptor_sax2_set_start_element_handler,
+ raptor_sax2_set_end_element_handler,
+ raptor_sax2_set_characters_handler, raptor_sax2_set_cdata_handler,
+ raptor_sax2_set_comment_handler,
+ raptor_sax2_set_unparsed_entity_decl_handler,
+ raptor_sax2_set_external_entity_ref_handler,
+ raptor_sax2_set_namespace_handler, raptor_sax2_parse_start,
+ raptor_sax2_parse_chunk, raptor_sax2_parse_handle_errors,
+ raptor_sax2_inscope_xml_language, raptor_sax2_inscope_base_uri
+ Moved log API to public API. Added raptor_log_level and
+ raptor_error_handlers typedefs. Added
+ raptor_error_handlers_init.
+
+ * src/raptor.h, src/raptor_xml.c: Added
+ raptor_xml_element_get_language
+
+ * src/raptor.h, src/raptor_qname.c: Added
+ raptor_qname_get_local_name and raptor_qname_get_value
+
+ * src/raptor_turtle_writer.c: cast
+
+ * src/raptor_xml_writer.c: cast
+
+ * src/raptor_turtle_writer.c: (raptor_turtle_writer_newline): Cast
+ for signed/unsigned int compare.
+
+ * src/raptor_xml_writer.c: (raptor_xml_writer_indent): Cast for
+ signed/unsigned int compare.
+
+ * tests/turtle/Makefile.am: Add bad-19.ttl
+
+ * tests/turtle/bad-19.ttl: bad-19 () in predicate position
+
+2007-12-24 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor.types: Add gtkdoc file raptor.types
+
+2007-12-19 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_stringbuffer.c: (raptor_new_stringbuffer) Fixed
+ docs. Removed unnecessary local var and conditional.
+
+2007-12-18 Lauri Aalto <laalto@iki.fi>
+
+ * src/turtle_parser.y: (raptor_trig_parse_recognise_syntax): Wrap
+ function in #ifdef RAPTOR_PARSER_TRIG. Used only if
+ RAPTOR_PARSER_TRIG is defined, avoids gcc warning on unused static
+ function.
+
+2007-12-13 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_uri.c: Portability: Use Windows-like path handling on
+ Symbian.
+
+2007-12-09 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-tutorial-parsing.xml: fix raptor_set_feature() call
+ to have 3 args
+
+2007-11-28 Dave Beckett <dave@dajobe.org>
+
+ * tests/turtle/Makefile.am, tests/turtle/bad-17.ttl,
+ tests/turtle/bad-18.ttl, tests/turtle/manifest-bad.ttl: bad tests
+ 17 and 18 to Forbid ' and '''-quoted strings
+
+ * src/turtle_lexer.l: Remove '-quoted strings
+
+2007-11-26 Dave Beckett <dave@dajobe.org>
+
+ * autogen.sh: Update to handle OSX glibtoolize and optional ltdl
+
+2007-11-15 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_sax2.c: (raptor_sax2_parse_chunk) Fix compiler
+ warnings: unused variable, unused label.
+
+2007-11-15 Dave Robillard <dave@drobilla.net>
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_emit_subject_properties): Write ; statement
+ terminators with a leading space for consistency with . terminator
+
+2007-11-12 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_www.c: (raptor_www_init) Pull static initialized flag
+ from function scope to unit scope.
+
+ * src/raptor_nfc.h, src/raptor_nfc_data.c: Make raptor nfc data
+ const - eliminate ~53768 bytes of writable static.
+
+ * src/raptor_serialize_rss.c: Make raptor_rss10_spaces pointer const.
+
+ * src/n3_parser.y, src/raptor.h, src/raptor_internal.h,
+ src/raptor_namespace.c, src/raptor_rdfxml.c, src/raptor_rss.c,
+ src/raptor_sax2.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_turtle.c,
+ src/raptor_turtle_writer.c, src/raptor_uri.c,
+ src/raptor_xml_writer.c, src/turtle_parser.y: Make
+ raptor_uri_handlers const. SOURCE COMPATIBILITY BREAK: Five raptor
+ API function signatures changed:
+ raptor_uri_set_handler()
+ raptor_uri_get_handler()
+ raptor_new_namespaces()
+ raptor_namespaces_init()
+ raptor_new_xml_writer()
+
+ * src/raptor_uri.c: (raptor_uri_set_handler) Assert inputs
+
+2007-11-06 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_turtle.c: fix eol style
+
+ * src/raptor_uri.c: (raptor_uri_set_handler) Treat uri handler as
+ const although the API does not say it is const.
+
+ * src/raptor.h: Allow RAPTOR_API to be externally defined e.g. in
+ a static config.h. Remove __SYMBIAN32__ case.
+
+ * src/turtle_lexer.l, src/turtle_parser.y: Rename
+ turtle {TRUE,FALSE} tokens to {TRUE,FALSE}_TOKEN to prevent
+ potential clashes with system headers.
+
+ * src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Remove
+ writable static data. Refactor turtle/xml writers to use a const
+ spaces_buffer.
+
+ * src/raptor_uri.c: Remove writable static data. Make
+ raptor_uri_handler const
+
+ * src/ntriples_parse.c, src/raptor_feature.c,
+ src/raptor_general.c: Remove writable static data. Make const
+ arrays const.
+
+2007-11-05 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_turtle.c: (raptor_turtle_serialize_init)
+ Fix lowmem issues: Do not use a NULL namespaces sequence or
+ nstack. NULL rdf_type is allowed. Check for uri creation
+ failures. Check for sequence push failures.
+ (raptor_turtle_serialize_terminate) Do not leave dangling pointers
+ behind.
+
+2007-11-04 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_turtle_writer.c: (main): Write a proper double
+
+ * tests/turtle/test-28-out.ttl: Remove canonicalisation
+
+ * src/raptor_serialize_turtle.c: (raptor_turtle_emit_blank,
+ raptor_turtle_emit_subject, raptor_turtle_emit): Add more failure
+ pass ons.
+
+ * src/raptor_serialize_turtle.c: (raptor_turtle_emit_subject):
+ Fail when out of memory.
+
+ * src/raptor_serialize_turtle.c: (raptor_turtle_emit_subject):
+ Remove un-necessary use of snprintf to concat 2 strings.
+
+ * src/raptor_turtle_writer.c: (raptor_turtle_writer_double):
+ Removed, no longer used.
+
+ * src/raptor_turtle_writer.c: (raptor_turtle_writer_literal): Do
+ not canonicalise integer, double or decimal literals.
+
+2007-10-31 Dave Beckett <dave@dajobe.org>
+
+ * tests/turtle/test-10.out, tests/turtle/test-21.out,
+ tests/turtle/test-22.out: Remove canonicalisation of integer and
+ double (Turtle spec change coming soon)
+
+2007-10-30 Lauri Aalto <laalto@iki.fi>
+
+ * src/turtle_parser.y: Add {INTEGER,FLOATING}_LITERAL %destructors.
+
+2007-10-30 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_lexer.l, src/turtle_parser.y: Turtle INTEGER_LITERAL
+ and FLOATING_LITERAL now are stored as strings, with no
+ canonicalisation. This is required for SPARQL compatibility.
+
+2007-10-25 Lauri Aalto <laalto@iki.fi>
+
+ * src/n3_parser.y: (blank) Fix [ propertylist ] lowmem leaks.
+
+ * src/turtle_parser.y: (blank) Fix [ propertylist ] lowmem leaks.
+
+2007-10-25 Dave Beckett <dave@dajobe.org>
+
+ * src/snprintf.c: Define round() and trunc() as macros if they
+ were not found by configure as functions/macros. They were
+ standardised with C99.
+
+ * configure.ac: Check for trunc and round in libm
+
+ * utils/rapper.c: Quote args to HELP_ARG_BOTH()
+
+2007-10-24 Lauri Aalto <laalto@iki.fi>
+
+ * src/turtle_parser.y: Add destructors for turtle_parser
+ identifiers and sequences.
+ (triples) Free subject and propertylist on alloc failure.
+
+ * src/turtle_lexer.l: turtle_lexer: Check for alloc failures -
+ fail faster and do not pass NULLs to parser.
+
+2007-10-23 Lauri Aalto <laalto@iki.fi>
+
+ * src/turtle_lexer.l: (QUOTEDURI) Always free stringbuffer
+
+ * src/turtle_lexer.l: turtle_lexer: Check for alloc failures
+
+ * src/n3_lexer.l: (n3_copy_string_token) Always free stringbuffer
+ if it is allocated.
+
+ * src/raptor_stringbuffer.c: (raptor_stringbuffer_append_string_common)
+ Free passed in string on alloc error if ownership was transferred.
+
+ * src/turtle_common.c: (raptor_stringbuffer_append_turtle_string)
+ Check for alloc failure.
+
+ * src/fix-flex, src/n3_lexer.l, src/raptor_internal.h,
+ src/turtle_lexer.l: Lowmem leak fixes. Ported experimental lexer
+ leak prevention code from sparql_lexer r12922 to
+ raptor {n3,turtle}_lexer. Flagged with LEXER_ALLOC_TRACKING,
+ disabled by default.
+ (raptor_parser_s) Added lexer_user_data.
+
+ * src/raptor_internal.h,
+ src/raptor_parse.c: (raptor_parse_uri_with_connection) Lowmem leak
+ fixes. Store raptor_www pointer to raptor parser object to allow
+ resource cleanup from client code in case raptor_parse_chunk()
+ fails in a lexer.
+
+ * src/n3_parser.y,
+ src/raptor_parse.c: (raptor_parse_uri_with_connection) Set parser
+ to failed state if raptor_parse_chunk() returned an error.
+ (raptor_n3_parse_chunk) Return error code from n3_parse().
+
+2007-10-19 Lauri Aalto <laalto@iki.fi>
+
+ * src/n3_lexer.l, src/turtle_lexer.l: (n3_lexer, turtle_lexer)
+ Replace out-of-memory yyterminate()s with more informative error
+ reporting.
+
+ * src/fix-flex, src/n3_lexer.l, src/turtle_lexer.l: (fix-flex)
+ Import patches from rasqal fix-flex: remove generated
+ yy_fatal_error(), OOM checks to ensure_buffer_stack().
+ (n3_lexer_fatal_error,turtle_lexer_fatal_error) Added replacement
+ for generated fatal error handler.
+
+ * src/n3_lexer.l: (QNAME) OOM: Terminate instead of returning NULL
+ QNAME literal.
+
+ * src/n3_parser.y: (n3_parser) PREFIX should not be in %destructor list
+
+2007-10-18 Lauri Aalto <laalto@iki.fi>
+
+ * src/fix-bison, src/fix-flex: (fix-bison, fix-flex) Fix #line
+ numbers in generated raptor lexers and parsers.
+
+2007-10-15 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_rdfxmla.c: (raptor_rdfxmla_serialize_statement)
+ indent tabs -> spaces
+
+ * src/raptor_serialize_rdfxmla.c: Fix low memory crashes.
+ (raptor_rdfxmla_serialize_init) Check for nstack alloc failure
+ before using it. Alloc independent objects in a batch and check
+ them with one if. Check the return value of raptor_sequence_push()
+ - moved to end since it depends on successful sequence allocation.
+ (raptor_rdfxmla_serialize_terminate) Set pointers to NULL to
+ prevent dangling pointers.
+
+ * src/raptor_serialize_rdfxml.c: (raptor_rdfxml_serialize_init)
+ Check sequence push ret val.
+
+2007-10-12 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_sequence.c: (raptor_sequence_set_at) Free passed in
+ data item also when returning due to invalid index.
+
+2007-10-08 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_internal.h, src/raptor_serialize_turtle.c,
+ src/raptor_turtle_writer.c: (raptor_turtle_writer_literal,
+ raptor_turtle_writer_quoted): These may fail when out of memory,
+ change to return an int non-0 on failure
+
+2007-10-06 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_sequence.c: comments on sequence design
+
+2007-10-05 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor.h, src/raptor_sequence.c: (raptor_sequence_disown_at)
+ Removed. Was a hack that should not be in a public API. Functions
+ that needed this have been refactored to use
+ raptor_sequence_unshift() to get the item and its ownership.
+
+ * src/n3_parser.y: (propertyList) Refactored to not use
+ raptor_sequence_disown_at()
+
+ * src/turtle_parser.y: (propertyList) Refactored to not use
+ raptor_sequence_disown_at()
+
+ * src/raptor_sequence.c: Refactor raptor_sequence internals to
+ make shift/unshift as efficient as push/pop.
+ (raptor_free_sequence) Use RAPTOR_FREE macro instead of free() for
+ sequence.
+ (raptor_sequence_ensure) Added grow_at_front flag to describe
+ growth direction. Do not grow sequence if seq->capacity ==
+ capacity. Use RAPTOR_CALLOC instead of calloc() for sequence.
+ (raptor_sequence_grow) Removed.
+ (raptor_sequence_set_at) Do not allow setting items over +1
+ current size.
+ (main) Added test code.
+
+2007-10-04 Lauri Aalto <laalto@iki.fi>
+
+ * src/turtle_parser.y: Memory leak fixes: Free allocated resources
+ and YYERROR on alloc failure.
+ (raptor_turtle_new_triple) Free identifiers on error.
+
+ * src/turtle_parser.y: (turtle_parse) Check lexer init return
+ value.
+ (raptor_turtle_parse_init) Return error code on failure.
+
+ * src/raptor_identifier.c: (raptor_copy_identifier) Return
+ non-zero on allocation failure. No need to check for non-null
+ uris: raptor_uri_copy returns NULL if passed in a null
+ uri. Removed duplicate copying of literal_language.
+
+ * src/turtle_parser.y: (triples, propertyList, literal, blank)
+ YYERROR on alloc failure.
+ (raptor_turtle_parse_terminate) Free uris only if not null.
+
+ * src/n3_parser.y: Memory leak fixes: free resources on error.
+ (verb, literal, resource, blank, collection) Additional checks for
+ alloc failures.
+
+ * src/n3_lexer.l: lexer: yyterminate() on alloc failure.
+ (n3_copy_token, n3_copy_string_token) Check for alloc failure.
+
+ * src/raptor.h, src/raptor_sequence.c: Add raptor_sequence_disown_at()
+
+2007-10-02 Lauri Aalto <laalto@iki.fi>
+
+ * src/n3_parser.y: %destructors for %tokens and not just %types.
+ (directive) YYERROR if namespace alloc failed.
+
+2007-10-02 Dave Beckett <dave@dajobe.org>
+
+ * NEWS.html, configure.ac, src/win32_raptor_config.h: Bumped
+ version to 1.4.17
+
+2007-10-01 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_identifier.c: (raptor_new_identifier) Free owned
+ items on alloc failure.
+
+ * src/n3_parser.y: (raptor_n3_new_triple) Free owned identifiers
+ on alloc error.
+ (n3_parse) Check lexer init return value.
+
+ * src/n3_parser.y: n3 parser YYERROR on alloc failure. Still leaks
+ memory on errors.
+
+ * src/n3_parser.y: n3 parser YYERROR on alloc failure.
+
+ * src/raptor_serialize_rdfxml.c: Fix indent + trim whitespace
+
+2007-09-30 Dave Beckett <dave@dajobe.org>
+
+ * Snapshotted raptor_1_4_16 for 1.4.16 release (SVN 12743)
+
+ * docs/libraptor.3: Fix functions using raptor_unichar
+ GRDDL 2007-09-11
+
+2007-09-29 Dave Beckett <dave@dajobe.org>
+
+ * docs/libraptor.3: Added
+ raptor_new_xml_element_from_namespace_local_name
+
+ * src/raptor.h, src/raptor_serialize_rdfxml.c, src/raptor_xml.c:
+ Alter raptor_new_xml_element_from_namespace_local_name signature
+ to take an xml_language parameter
+
+ * src/raptor_grddl.c: (raptor_grddl_run_recursive): Only set
+ content type handler when recursive parser is grddl.
+
+ * src/raptor_serialize_rdfxml.c: (raptor_rdfxml_serialize_end):
+ Make sure an empty legal RDF/XML document is written when 0
+ triples were serialized.
+
+ * src/raptor_grddl.c: Replaced all calls to get parser's current
+ base ID with raptor_parser_get_current_base_id
+
+ * src/raptor_guess.c: (raptor_guess_get_current_base_id): Pass on
+ the call to get the base ID to the internal parser using
+ raptor_parser_get_current_base_id
+
+ * src/raptor_internal.h,
+ src/raptor_parse.c: (raptor_parser_get_current_base_id): Added.
+
+ * src/raptor_grddl.c: (raptor_grddl_parse_chunk): Remove
+ #ifdef-out old <link> processing
+
+ * src/raptor_grddl.c: (raptor_grddl_ensure_internal_parser):
+ Re-init the guess parser each time so it does a fresh guess.
+ (raptor_grddl_run_grddl_transform_doc): Save and restore the genid
+ around recursive parsers, so blank nodes are numbered across
+ graphs.
+ (raptor_grddl_run_recursive): Switch to parser_name, flags args.
+ Pass on the filter to the internal parser call. Do not add parent
+ if the parser is not grddl. Pass on the ignore error flag to
+ raptor_grddl_fetch_uri. Save and restore the genid around
+ recursive parsers, so blank nodes are numbered across graphs. Do
+ not call rdfxml parser if selected parser is already rdfxml.
+ Update raptor_grddl_run_recursive calls to use parser name and
+ flags. Alter the <link> processing to use the guess parser to
+ figure out the mime type during the recursion. Do not filter the
+ triples.
+ Fixes Issue#0000238 http://bugs.librdf.org/mantis/view.php?id=238
+
+ * src/raptor_www.c: (raptor_www_file_handle_fetch): Ensure the
+ buffer has a NUL after the last byte read, it helps elsewhere when
+ using str*() functions on the results - such as guessing the
+ parser from content.
+
+ * src/raptor_grddl.c: (raptor_grddl_parse_chunk): Use
+ RAPTOR_LIBXML_HTML_PARSE_NONET to decide whether to enable libxml
+ HTML_PARSE_NONET with the html parser.
+
+ * configure.ac: Add test for libxml HTML_PARSE_NONET since it not
+ a define, it cannot be done at run-time with #ifdef
+ Define RAPTOR_LIBXML_HTML_PARSE_NONET if available
+
+ * src/raptor_grddl.c: Add declaration for libxml_options
+
+ * src/raptor_grddl.c: (raptor_grddl_parse_chunk): Use
+ RAPTOR_LIBXML_XML_PARSE_NONET to set XML nonet option if it was
+ set with raptor feature nonet.
+
+ * tests/grddl/test-01.html: lie about the mime type in order to
+ get the test to work
+
+ * src/raptor_grddl.c: (raptor_grddl_uri_xml_parse_bytes): Use
+ RAPTOR_LIBXML_XML_PARSE_NONET to check for enum value
+ XML_PARSE_NONET
+
+ * src/raptor_sax2.c: (raptor_sax2_parse_chunk): Use
+ RAPTOR_LIBXML_XML_PARSE_NONET to check for XML_PARSE_NONET enum
+ value.
+
+ * tests/grddl/Makefile.am: Call rapper with -f noNet to prevent
+ unnecessary fetches of HTML DTDs
+
+ * configure.ac: Add test for libxml XML_PARSE_NO_NET since it not
+ a define, it cannot be done at run-time with #ifdef
+ Define RAPTOR_LIBXML_XML_PARSE_NONET if available
+
+ * src/raptor_grddl.c: (raptor_grddl_fetch_uri): Reject a URI with
+ feature noNet only if it is not a file URI
+
+ * configure.ac, tests/Makefile.am, tests/grddl,
+ tests/grddl/Makefile.am, tests/grddl/data-01.nt,
+ tests/grddl/data-01.rdf, tests/grddl/data-02.rdf,
+ tests/grddl/test-01.html, tests/grddl/test-01.out: Added
+ tests/grddl dir and test-01
+
+ * AUTHORS: Added Lauri Aalto
+
+2007-09-27 Lauri Aalto <laalto@iki.fi>
+
+ * src/n3_parser.y: (raptor_n3_parse_terminate) Do not assume the
+ parser is fully initialized.
+
+ * src/raptor_serialize_rdfxml.c: (raptor_rdfxml_ensure_writen_header,
+ raptor_rdfxml_serialize_statement) Memory leak fixes: make sure
+ base_uri is freed.
+
+ * src/raptor_serialize_rdfxml.c: (raptor_rdfxml_ensure_writen_header)
+ Memory leak fix. Set context->written_header flag early to prevent
+ running the function again when a previous call to this function
+ failed.
+
+ * src/raptor_uri.c: (raptor_uri_to_relative_counted_uri_string)
+ Fix memory leak - free uri details if suffix allocation fails.
+
+2007-09-26 Dave Beckett <dave@dajobe.org>
+
+ * autogen.sh: Added an inline perl script to grep out the version
+ from programs.
+
+2007-09-26 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_rdfxml.c: (raptor_rdfxml_serialize_statement)
+ Skip statements with bad predicate uris, do not return an error.
+
+ * src/raptor_uri.c: (raptor_default_new_uri,
+ raptor_uri_path_make_relative_path,
+ raptor_uri_to_relative_counted_uri_string,
+ raptor_uri_uri_string_to_filename_fragment) Check for alloc
+ failures.
+
+ * src/raptor_serialize_rdfxml.c:
+ (raptor_rdfxml_serialize_statement) Make sure
+ xml_writer->current_element does not become a dangling pointer on
+ error.
+ (raptor_rdfxml_serialize_end) No-op if context->rdf_RDF_element is NULL.
+
+ * src/raptor_uri.c: (raptor_uri_to_counted_string) Copy uri
+ string, not uri struct - worked previously with raptor_uris but
+ breaks with librdf_uris. No need to allocate +sizeof(char*).
+
+ * src, tests, utils: Props: ignore .exes
+
+ * src/raptor_serialize_rdfxml.c: (raptor_rdfxml_ensure_writen_header)
+ Forgot to return 0 on success - oops
+
+2007-09-25 Dave Beckett <dave@dajobe.org>
+
+ * autogen.sh: Use 3-part versions with perl to decode them. Still
+ broken for autoconf
+
+2007-09-25 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_xml_writer.c: (raptor_iostream_write_xml_element_start)
+ Check for alloc failures and clean up nspace_declarations on
+ failure.
+
+ * src/raptor_serialize_rdfxml.c: (raptor_rdfxml_ensure_writen_header)
+ Check for alloc failures. Return an error code on failure.
+ (raptor_rdfxml_serialize_statement) Check for
+ raptor_rdfxml_ensure_writen_header() return code.
+ (raptor_rdfxml_ensure_writen_header) Ignore
+ raptor_rdfxml_ensure_writen_header() return code in a cleanup
+ function.
+
+ * src/raptor_serialize_rdfxml.c: (raptor_rdfxml_serialize_statement)
+ Get a copy of predicate uri string for modification. Check for
+ alloc failures and clean up on error. Refactored to use
+ raptor_new_xml_element_from_namespace_local_name().
+
+ * src/raptor.h, src/raptor_xml.c: Refactoring: Added
+ raptor_new_xml_element_from_namespace_local_name(). Pulled from
+ rasqal_query_results_new_xml_element() - the same xml element
+ creation pattern recurs in other serializers as well.
+
+2007-09-24 Lauri Aalto <laalto@iki.fi>
+
+ * autogen.sh: Do not compare versions as decimal, e.g. automake
+ 1.10 should be treated newer than 1.7.
+ (update_prog_version) Convert [z.]x.y version strings to 100x+y.
+
+2007-09-23 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: Revert GRDDL to the main algorithm of around
+ 12377 which passes the tests again and
+ Fixes Issue#0000239 http://bugs.librdf.org/mantis/view.php?id=239
+
+ (raptor_grddl_parser_add_parent): Restored.
+ (raptor_grddl_copy_state): Removed
+ (raptor_grddl_new_child_parser): Removed.
+ (raptor_grddl_run_recursive): Remove reference to the above -
+ replacing raptor_grddl_new_child_parser with
+ raptor_grddl_ensure_internal_parser and replacing 'nparser'
+ references with grddl_parser->internal_parser.
+
+ * src/raptor_grddl.c: (raptor_grddl_discard_message): debug
+ message tweak.
+
+ * examples, tests, docs, docs/tmpl: props
+
+ * docs/tmpl/section-uri-factory.sgml, docs/tmpl/section-uri.sgml,
+ docs/tmpl/section-xml-namespace.sgml: Updated gtkdoc templates for
+ raptor_uri_compare
+
+2007-09-21 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor.h, src/raptor_namespace.c:
+ (raptor_new_namespace): Check for alloc failures and clean up on
+ error.
+ (raptor_namespaces_init): Changed to return an error code.
+
+ * src/raptor_parse.c: (raptor_parse): Check for alloc
+ failures. Clean up on failure.
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_start_element_handler)
+ return on fatal error, do not use NULL pointers.
+ (raptor_rdfxml_end_element_grammar) abort() after reporting a
+ fatal error.
+
+ * src/raptor_serialize.c: (raptor_new_serializer): Check for alloc
+ failures. Clean up on failure.
+
+ * src/raptor_serialize_rdfxml.c: (raptor_rdfxml_serialize_init):
+ Check for alloc failures. Clean up on failure.
+
+ * src/raptor_namespace.c: raptor_namespace.c: Fix comment typo
+
+ * src/raptor_abbrev.c: (raptor_abbrev_subject_add_property) Free
+ passed in nodes on error.
+
+ * src/raptor_abbrev.c, src/raptor_sequence.c: raptor_sequence:
+ Delete items to be inserted on error.
+ Fixes Issue#0000237 http://bugs.librdf.org/mantis/view.php?id=237
+
+ * src/fix-bison: bison parsers / fix-bison: Fix compiler warning
+ about empty declarations (remove semicolon).
+
+ * src/raptor_parse.c: (raptor_guess_parser_name) Fix compiler
+ warnings about unnecessary const cast
+
+ * src/raptor_rfc2396.c: (raptor_new_uri_detail) Check for alloc
+ failure.
+
+ * src/raptor_serialize_rdfxml.c: raptor_serialize_rdfxml: Fix
+ compiler warnings about uninitialized variables.
+
+ * src/raptor_serialize_rdfxmla.c: (raptor_rdfxmla_ensure_writen_header)
+ Fix compiler warning about uninitialized variable.
+
+ * src/raptor_xml_writer.c: (raptor_iostream_write_xml_element_start)
+ Check for alloc failure
+
+ * src/raptor_internal.h: raptor_internal.h: Allow
+ RAPTOR_WWW_BUFFER_SIZE to be externally defined. Can save stack
+ space in some resource-constrained environments with smaller
+ buffers.
+
+ * src/raptor_internal.h: raptor_internal.h: Allow
+ RAPTOR_ASSERT_DIE to be externally defined e.g. in a makefile.
+
+ * src/raptor_internal.h: raptor_internal.h: Rearrange include file
+ guards to include stdlib.h without dmalloc.
+
+ * src/raptor_general.c: (raptor_init) Set initialized flag early
+ to allow cleanup with raptor_finish() on init errors.
+
+ * src/raptor_general.c: (raptor_log_error) Do not abort() on fatal
+ messages - leave it up to caller to enable resource cleanup.
+
+ * src/raptor_general.c: (raptor_statement_part_as_counted_string)
+ Fix compiler warnings about uninitialized variables.
+
+ * src/raptor_rss_common.c, src/raptor_sax2.c: Fix compiler
+ warnings about possible unwanted semicolons
+
+ * src/raptor_serialize.c: Fix typos in comments
+
+ * src/raptor_sax2.c: Fix indent
+
+ * Makefile.am, autogen.sh, configure.ac, data/Makefile.am,
+ docs/Makefile.am, examples/Makefile.am, src/Makefile.am,
+ tests/22-rdf-syntax-ns.rdf, tests/Makefile.am,
+ tests/all-escape.rdf, tests/bad-00.rdf, tests/bad-01.rdf,
+ tests/bad-02.rdf, tests/bad-03.rdf, tests/bad-04.rdf,
+ tests/bad-05.rdf, tests/bad-06.rdf, tests/bad-07.rdf,
+ tests/bad-08.rdf, tests/bad-09.rdf, tests/bad-10.rdf,
+ tests/bad-11.rdf, tests/bad-12.rdf, tests/bad-13.rdf,
+ tests/bad-14.rdf, tests/bad-15.rdf, tests/bad-16.rdf,
+ tests/bad-17.rdf, tests/bad-18.rdf, tests/bad-19.rdf,
+ tests/bad-20.rdf, tests/bad-21.rdf, tests/bad-22.rdf,
+ tests/bad-23.rdf, tests/daml-oil.rdf, tests/ex-00.rdf,
+ tests/ex-01.rdf, tests/ex-02.rdf, tests/ex-03.rdf,
+ tests/ex-04.rdf, tests/ex-05.rdf, tests/ex-06.rdf,
+ tests/ex-07.rdf, tests/ex-08.rdf, tests/ex-09.rdf,
+ tests/ex-10.rdf, tests/ex-11.rdf, tests/ex-12.rdf,
+ tests/ex-13.rdf, tests/ex-14.rdf, tests/ex-15.rdf,
+ tests/ex-16.rdf, tests/ex-17.rdf, tests/ex-18.rdf,
+ tests/ex-19.rdf, tests/ex-20.rdf, tests/ex-21.rdf,
+ tests/ex-22.rdf, tests/ex-23.rdf, tests/ex-24.rdf,
+ tests/ex-25.rdf, tests/ex-26.rdf, tests/ex-27.rdf,
+ tests/ex-28.rdf, tests/ex-29.rdf, tests/ex-30.rdf,
+ tests/ex-31.rdf, tests/ex-32.rdf, tests/ex-33.rdf,
+ tests/ex-34.rdf, tests/ex-35.rdf, tests/ex-36.rdf,
+ tests/ex-37.rdf, tests/ex-38.rdf, tests/ex-39.rdf,
+ tests/ex-40.rdf, tests/ex-41.rdf, tests/ex-42.rdf,
+ tests/ex-43.rdf, tests/ex-44.rdf, tests/ex-45.rdf,
+ tests/ex-46.rdf, tests/ex-47.rdf, tests/ex-48.rdf,
+ tests/ex-49.rdf, tests/ex-51.rdf, tests/ex-53.rdf,
+ tests/ex-54.rdf, tests/ex-55.rdf, tests/ex-56.rdf,
+ tests/ex-57.rdf, tests/ex-58.rdf, tests/ex-59.rdf,
+ tests/ex-60.rdf, tests/ex-61.rdf, tests/ex-62.rdf,
+ tests/turtle/Makefile.am, tests/turtle/bad-00.ttl,
+ tests/turtle/bad-01.ttl, tests/turtle/bad-02.ttl,
+ tests/turtle/bad-03.ttl, tests/turtle/bad-04.ttl,
+ tests/turtle/bad-05.ttl, tests/turtle/bad-06.ttl,
+ tests/turtle/bad-07.ttl, tests/turtle/bad-08.ttl,
+ tests/turtle/bad-09.ttl, tests/turtle/bad-10.ttl,
+ tests/turtle/bad-11.ttl, tests/turtle/bad-12.ttl,
+ tests/turtle/bad-13.ttl, tests/turtle/bad-14.ttl,
+ tests/turtle/manifest-bad.ttl, tests/turtle/manifest.ttl,
+ tests/turtle/rdf-schema.out, tests/turtle/rdf-schema.ttl,
+ tests/turtle/rdfq-results.out, tests/turtle/rdfq-results.ttl,
+ tests/turtle/rdfs-namespace.out, tests/turtle/rdfs-namespace.ttl,
+ tests/turtle/test-00.out, tests/turtle/test-00.ttl,
+ tests/turtle/test-01.out, tests/turtle/test-01.ttl,
+ tests/turtle/test-02.out, tests/turtle/test-02.ttl,
+ tests/turtle/test-03.out, tests/turtle/test-03.ttl,
+ tests/turtle/test-04.out, tests/turtle/test-04.ttl,
+ tests/turtle/test-05.out, tests/turtle/test-05.ttl,
+ tests/turtle/test-06.out, tests/turtle/test-06.ttl,
+ tests/turtle/test-07.out, tests/turtle/test-07.ttl,
+ tests/turtle/test-08.out, tests/turtle/test-08.ttl,
+ tests/turtle/test-09.out, tests/turtle/test-09.ttl,
+ tests/turtle/test-10.out, tests/turtle/test-10.ttl,
+ tests/turtle/test-11.out, tests/turtle/test-11.ttl,
+ tests/turtle/test-12.out, tests/turtle/test-12.ttl,
+ tests/turtle/test-13.out, tests/turtle/test-13.ttl,
+ tests/turtle/test-14.out, tests/turtle/test-14.ttl,
+ tests/turtle/test-15.out, tests/turtle/test-15.ttl,
+ tests/turtle/test-16.out, tests/turtle/test-16.ttl,
+ tests/turtle/test-17.out, tests/turtle/test-17.ttl,
+ tests/turtle/test-18.out, tests/turtle/test-18.ttl,
+ tests/turtle/test-19.out, tests/turtle/test-19.ttl,
+ tests/turtle/test-20.out, tests/turtle/test-20.ttl,
+ tests/turtle/test-21.out, tests/turtle/test-21.ttl,
+ tests/turtle/test-22.out, tests/turtle/test-22.ttl,
+ tests/turtle/test-23.out, tests/turtle/test-23.ttl,
+ tests/turtle/test-24.out, tests/turtle/test-24.ttl,
+ tests/turtle/test-25.out, tests/turtle/test-25.ttl,
+ tests/turtle/test-26.out, tests/turtle/test-26.ttl,
+ tests/turtle/test-27.out, tests/turtle/test-27.ttl,
+ tests/turtle/test-28-out.ttl, tests/turtle/test-28.out,
+ tests/turtle/test-28.ttl, tests/turtle/test-29.out,
+ tests/turtle/test-29.ttl, tests/turtle/test-30.out,
+ tests/turtle/test-30.ttl, utils/Makefile.am, win32/Makefile.am:
+ Fix EOL issues when building svn version on cygwin.
+ Partial fix to http://bugs.librdf.org/mantis/view.php?id=236
+
+ * tests/Makefile.am, tests/turtle/Makefile.am: Added $(EXEEXT)s to
+ Makefiles to fix "make clean" on cygwin. Partial fix to
+ Issue#0000235 http://bugs.librdf.org/mantis/view.php?id=235
+
+ * autogen.sh: raptor autogen.sh $dir quoting. Partial fix to
+ Issue#0000234 http://bugs.librdf.org/mantis/view.php?id=234
+
+2007-09-20 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_parse_recognise_syntax):
+ Check for presence of html in the mime type correctly.
+
+2007-09-19 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_parse.c: (raptor_parse_uri_with_connection): Ensure a
+ parser is started if it wasn't started during WWW retrieval -
+ typically this is only if the file was empty (o bytes). Some RDF
+ syntaxes are legal as an empty file so can produce a valid empty
+ graph, such as N-Triples and Turtle.
+
+2007-09-17 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_turtle_writer.c: Add xsd boolean, decimal, double,
+ integer URIs to structure
+ (raptor_turtle_writer_literal): Use raptor_uri_equal instead of
+ strcmps. In Redland, this means no strcmps.
+
+ * src/raptor_serialize_turtle.c: (raptor_turtle_serialize_start):
+ Remove call to raptor_turtle_writer_base since
+ raptor_new_turtle_writer will do it if necessary.
+
+ * src/raptor_turtle_writer.c: (raptor_new_turtle_writer): Call
+ raptor_turtle_writer_base with initial base URI if there is one.
+ (raptor_turtle_writer_base): Adedd. Back to possibly generating a
+ relative base, allowing this to be called multiple times and
+ setting the actual writer base URI, potentially to NULL.
+ (main): Adjust expected result to expect an @base
+
+ * tests/turtle/test-28-out.ttl: @base and relative prefix
+
+ * src/raptor_internal.h, src/raptor_serialize_turtle.c,
+ src/raptor_turtle_writer.c: (raptor_turtle_writer_base): Added to
+ generate @base as an absolute URI.
+ (raptor_turtle_serialize_start): Call it if there is an output
+ base URI.
+
+2007-09-16 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-sections.txt: Add raptor_uri compare_func funcs
+
+ * tests/turtle/manifest.ttl: Added test-26 to test-30 to manifest.
+
+ * src/raptor_uri.c: (main): Ensure called is inited
+
+ * src/raptor_uri.c: (main): Add tests for raptor_uri_compare and
+ interface versioning.
+
+ * src/raptor_uri.c: (raptor_uri_set_handler): Adjust handler to
+ not have to point to const data and to have V1 or V2 declared by
+ setting the initialised field. Truncate it to 1 or 2.
+ (raptor_uri_compare): Use interface version to decide whether to
+ invoke the uri_compare method.
+ (struct raptor_uri_default_handler): Set URI Interface version to 2.
+
+ * src/raptor.h: (struct raptor_uri_handler): Add URI Interface
+ versions 1 and 2 - adding raptor_uri_compare_func. Overload the
+ 'initialised' field to store the API version. Existing Redland
+ sets that to 1.
+ (raptor_uri_set_handler): Adjust handler to not have to point to
+ const data.
+
+ * configure.ac, docs/libraptor.3, docs/raptor-parsers.xml,
+ raptor.rdf.in, src/raptor_grddl.c, src/raptor_internal.h,
+ src/raptor_parse.c: Remove RDFa support for now
+
+2007-09-15 Dave Beckett <dave@dajobe.org>
+
+ * docs/libraptor.3: 1.4.16
+
+2007-09-15 Dave Robillard <dave@drobilla.net>
+
+ * src/raptor.h, src/raptor_uri.c: (raptor_uri_handler): Move new
+ raptor_uri_compare method to end of struct to limit ABI breakage.
+
+2007-09-15 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_internal.h, src/raptor_parse.c, src/raptor_rdfxml.c,
+ src/raptor_set.c: Make raptor_set_test less chatty
+
+ * tests/turtle/Makefile.am: Re-added test-30 now it's in SVN
+
+ * tests/turtle/test-30.out, tests/turtle/test-30.ttl: test-30 for @base
+
+2007-09-15 Dave Robillard <dave@drobilla.net>
+
+ * docs/tmpl/section-uri.sgml, src/raptor.h, src/raptor_abbrev.c,
+ src/raptor_uri.c: (raptor_uri_compare): Added for librdf
+ overloading (rather than using strcmp directly).
+
+ * tests/turtle/Makefile.am: Remove references to nonexistant test-30
+
+ * src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c: Use
+ AVL tree rather than sequence for abbreviated serialisers (turtle
+ & rdfxmla), significant performance improvement for large
+ serialisations.
+ (raptor_abbrev_node_lookup): Use AVL tree search against
+ abbrev_node instead of linear sequence search.
+ (raptor_abbrev_node_cmp): Adapt old raptor_abbrev_node_equals to
+ provide strcmp-like ordering.
+ (raptor_abbrev_node_equals): Change to trivial wrapper around new
+ raptor_abbrev_node_cmp.
+
+2007-09-14 Dave Robillard <dave@drobilla.net>
+
+ * src/raptor_serialize_turtle.c: Fix unwanted blank line at end of
+ Turtle list abbreviation. e.g. before:
+ :foo :bar (
+ 1
+ 2
+ 3
+
+ ) .
+
+ after:
+
+ :foo :bar (
+ 1
+ 2
+ 3
+ ) .
+
+2007-09-11 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_lexer.l, src/turtle_parser.y: Added turtle @base
+
+ * tests/turtle/Makefile.am: Adde test-30 for @base
+
+2007-09-08 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_sax2.c: (raptor_sax2_finish): Reset libxml error
+ handlers to defaults.
+ Fixes Issue#0000232 http://bugs.librdf.org/mantis/view.php?id=232
+
+2007-09-06 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_common.c: docs fix
+
+2007-09-03 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_lexer.l: {QUOTEDURI}: Apply turtle escapes to URIs
+
+ * tests/turtle/test-29.out, tests/turtle/test-29.ttl: Fix line
+ endings of test-29
+
+ * tests/turtle/Makefile.am, tests/turtle/test-29.out,
+ tests/turtle/test-29.ttl: test-29: Test all ntriples/turtle
+ escapes U+0001 to U+007F
+
+ * src/snprintf.c: Define __USE_ISOC99 to 1
+
+ * src/raptor_rss.c: (raptor_rss_end_element_handler): Fixed a bug
+ that silently discarded non-empty fields -- oops.
+
+ * src/raptor_rss.c: raptor_rss_uplift_map: copy atom:updated to
+ dc:date
+
+ * configure.ac: Make sure to define HAVE_CURL_CURL_H when
+ curl/curl.h is found
+
+2007-09-01 Dave Beckett <dave@dajobe.org>
+
+ * docs/libraptor.3: Added RDFa
+
+2007-08-28 Dave Beckett <dave@dajobe.org>
+
+ * docs/libraptor.3: Added description of new 1.4.16 functions
+
+2007-08-27 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: GRDDL and RDFa
+
+ * src/snprintf.c: just leave raptor_format_float for now.
+
+ * docs/rdfcat.c, docs/rdfprint.c, docs/rdfserialize.c: Added C examples
+
+2007-08-26 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-tutorial-parsing.xml: parsing filtering tutorial docs
+
+ * docs/raptor-parsers.xml: GRDDL docs
+
+ * src/raptor_grddl.c: (raptor_grddl_fetch_uri): Set WWW timeout
+ from value of new parser feature RAPTOR_FEATURE_WWW_TIMEOUT
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_parse.c,
+ src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Added parser
+ feature RAPTOR_FEATURE_WWW_TIMEOUT
+
+2007-08-25 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_general.c, src/raptor_nfc.c,
+ src/raptor_serialize_ntriples.c, src/raptor_xml.c: Use
+ raptor_unichar instead of unsigned long for a Unicode codepoint
+
+ * src/raptor_utf8.c: (raptor_unicode_char_to_utf8,
+ raptor_utf8_to_unicode_char,
+ raptor_unicode_is_xml11_namestartchar,
+ raptor_unicode_is_xml10_namestartchar,
+ raptor_unicode_is_xml11_namechar, raptor_unicode_is_xml10_namechar
+ raptor_unicode_is_namestartchar, raptor_unicode_is_namechar):
+ Updated to take a raptor_unichar argument.
+
+ * src/raptor_internal.h: Update the raptor_unicode_* functions
+ that take a unicode char to use raptor_unichar:
+ raptor_unicode_is_namestartchar and raptor_unicode_is_namechar
+
+ * src/raptor.h: Define raptor_unichar for a Unicode codepoint
+ instead of unsigned long. Update the raptor_unicode_* functions
+ that take a unicode char to use it: raptor_unicode_char_to_utf8,
+ raptor_utf8_to_unicode_char,
+ raptor_unicode_is_xml11_namestartchar,
+ raptor_unicode_is_xml10_namestartchar,
+ raptor_unicode_is_xml11_namechar and
+ raptor_unicode_is_xml10_namechar.
+
+ * src/raptor_nfc.h: Remove unused u32
+
+ * src/raptor.h: Document RAPTOR_FEATURE_HTML_LINK
+
+ * src/snprintf.c: raptor_format_float not public
+
+ * docs/libraptor.3: 1.4.16
+
+2007-08-24 Dave Beckett <dave@dajobe.org>
+
+ * utils/rapper.c: word
+
+2007-08-24 Dave Robillard <dave@drobilla.net>
+
+ * AUTHORS: Test commit (added undeserving self to AUTHORS).
+
+2007-08-24 Dave Beckett <dave@dajobe.org>
+
+ * tests/turtle/Makefile.am: (check-turtle-serialize-syntaxs):
+ srcdir added for diff and cmp
+
+2007-08-19 Dave Robillard <dave@drobilla.net>
+
+ * AUTHORS: Added Dave Robillard
+
+2007-08-19 Dave Beckett <dave@dajobe.org>
+
+ * utils/rapper.c: words
+
+ * utils/rapper.1: Added -I/--input-uri and -O/--output-uri
+
+ * utils/rapper.c: Added -I/--input-uri and -O/--output-uri to set
+ the input/parser base URI and output/serializer base URI directly
+ Defaults remain the same - the serializer base URI defaults to the
+ input base URI, however it was set. Tidied the verbose messages
+ to mention parser name. Added a message for the serializer name
+ too.
+
+2007-08-18 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_parser.y: (raptor_turtle_parser_register_factory):
+ Make default application/x-turtle for now
+
+ * src/raptor_parse.c: (raptor_parser_factory_add_mime_type): docs
+ were wrong.
+
+ * src/raptor_serialize_dot.c: (raptor_dot_serializer_end): Handle
+ a missing base URI.
+ Fixes Issue#0000216 http://bugs.librdf.org/mantis/view.php?id=216
+
+2007-08-17 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h: Applied raptor part of symbian portability fix for
+ Issue#0000203 http://bugs.librdf.org/mantis/view.php?id=203
+
+2007-08-14 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_parse_recognise_syntax):
+ Apply a negative score if html is in the mime type. Do not
+ recognize as rdf if <html is present or the html namespace is
+ declared.
+
+2007-08-05 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xml_writer.c: (main) Quieter unit test
+
+ * src/snprintf.c: #ifdef out unused dopr_outch prototype
+
+ * src/turtle_common.c: (raptor_stringbuffer_append_turtle_string):
+ Take const string arg.
+
+ * src/raptor_internal.h: Update prototypes for
+ raptor_turtle_writer_quoted and raptor_turtle_writer_literal to
+ take const string args.
+
+ * src/raptor_turtle_writer.c: (raptor_turtle_writer_quoted,
+ raptor_turtle_writer_literal): const string args.
+ (main): Unit tests
+
+ * src/raptor_turtle_writer.c: (raptor_turtle_writer_double):
+ Renamed from snprint_turtle_double and now goes direct to the
+ writer's iostream. Serialize NaN, -INF and INF numbers
+
+ * src/raptor_turtle_writer.c: (raptor_turtle_writer_literal): Use
+ raptor_format_float to format decimals.
+
+ * src/Makefile.am: Added snprintf.c
+
+ * src/snprintf.c: (raptor_format_float): Renamed from fmtfp and
+ edited to be XSD rules.
+
+ * src/raptor_internal.h: Added raptor_format_float
+
+ * src/raptor_parse.c: (raptor_parse_file_stream): C99
+
+ * tests/turtle/test-28-out.ttl, tests/turtle/test-28.out,
+ tests/turtle/test-28.ttl: Update test-28 results for truncating to
+ precision
+
+ * tests/turtle/Makefile.am: Remove test-28 from roundtrip exact
+ test
+
+ * tests/turtle/Makefile.am: minor fix
+
+ * tests/turtle/Makefile.am: (check-turtle-serialize-syntax): diff
+ always in text
+
+ * tests/turtle/test-28-out.ttl: fix expected output
+
+ * tests/turtle/Makefile.am: comment
+
+ * tests/turtle/Makefile.am, tests/turtle/test-28-out.ttl,
+ tests/turtle/test-28.out: Check test-28 for exact syntax returned
+ as well as triples
+
+2007-08-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_parse.c: (raptor_parse_file_stream): Always NULL
+ terminate the read buffer.
+
+ * tests/turtle/Makefile.am, tests/turtle/test-28.out,
+ tests/turtle/test-28.ttl: Added test-28.ttl test-28.out for
+ serializing xsd:double
+
+2007-07-29 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_set.c: (main): Make test silent when successful.
+
+ * src/raptor_avltree.c: remove debug
+
+ * src/raptor_set.c: comment
+
+ * src/raptor_avltree.c: print_string is not needed unless debugging
+
+ * src/raptor_set.c: Switch to use raptor_avltree for ID sets
+
+ * src/raptor_avltree.c, src/raptor_internal.h: Rename constructor
+ and destructor
+
+ * src/raptor_avltree.c: (main): Make test silent when successful.
+
+ * src/raptor_avltree.c: Conditionalise detailed AVL-tree debugging
+
+ * src/Makefile.am: Add raptor_avltree_test to TESTS
+
+ * src/Makefile.am, src/raptor_avltree.c, src/raptor_internal.h:
+ Added AVL-Tree code
+
+2007-07-19 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize.c: docs
+
+2007-07-13 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_turtle_writer.c: (snprint_turtle_double): Tidy to
+ remove several strlen()s
+
+ * src/raptor_serialize_rss.c: cast
+
+ * src/raptor_serialize_rss.c: (raptor_rss10_serialize_statement):
+ Do not debug die when rdf:Seq node is a blank node.
+
+2007-07-08 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rdfxml.c: (raptor_rdfxml_serialize_start):
+ Pass on the xml declaration feature to the xml writer.
+ Fixes Issue #0000210 http://bugs.librdf.org/mantis/view.php?id=210
+
+ * src/raptor_grddl.c: struct raptor_grddl_parser_context_s gains
+ html_link_processing to enable looking for <html> <link> with
+ RDF/XML value.
+ (raptor_grddl_parse_init_common): Enable html <link> by default.
+ (raptor_rdfa_parse_init): Disable html <link> for RDFA parser.
+ (raptor_grddl_parse_chunk): Check for html <link> available as
+ well as allowed by feature.
+
+2007-07-05 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-feature.sgml, src/raptor.h,
+ src/raptor_feature.c, src/raptor_grddl.c, src/raptor_parse.c,
+ src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Added
+ RAPTOR_FEATURE_HTML_LINK to control GRDDL looking for html <link
+ type="application/rdf+xml" href="uri">
+
+2007-07-04 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: (grddl_free_xml_context): Free the context
+ itself.
+ (raptor_grddl_parser_add_parent): Deleted, merged into
+ raptor_grddl_new_child_parser. Delete html:link entry from table
+ for now - handle rdf/xml links specially later.
+ (raptor_grddl_copy_state): Added, pulled out of
+ raptor_grddl_ensure_internal_parser
+ (raptor_grddl_ensure_internal_parser): Call
+ raptor_grddl_copy_state
+ (raptor_grddl_new_child_parser): Added, from
+ raptor_grddl_ensure_internal_parser and
+ raptor_grddl_parser_add_parent to allocate a new parser rather
+ than overwrite the 'internal_parser'.
+ (raptor_grddl_fetch_uri): Set/reset the content type handler
+ eachtime.
+ (raptor_grddl_run_xpath_match): Free URI after calculating
+ relative to base.
+ (raptor_grddl_run_recursive): Gains filter arg, again. Use
+ raptor_grddl_new_child_parser to make a new (GRDDL) raptor_parser*
+ and free it here when done.
+ (raptor_grddl_parse_chunk): Add new filter arg to
+ raptor_grddl_run_recursive Look for <link
+ type="application/rdf+xml" href="URI" /> with RDF expected, not an
+ XSLT transform URI.
+
+ * src/raptor_www_curl.c: (raptor_www_curl_header_callback): Handle
+ multiple type headers appearing, overwriting - such as during an
+ HTTP redirect.
+
+2007-07-03 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: (raptor_grddl_discard_message): Report
+ discarded errors when debugging.
+ (raptor_grddl_parse_chunk): Run XML then HTML parsing in sequence,
+ discarding all errors here. Restore the error handlers
+ afterwards. Move tidying up of buffers to function exit tidying.
+
+ * src/raptor_libxml.c: (raptor_libxml_xmlStructuredErrorFunc):
+ Tidy output to say "HTML Parser" not "XML HTML Parser"
+
+2007-07-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: style
+
+ * src/raptor_grddl.c: match-table gains: looking for
+ <link type="application/rdf+xml" href="URI" />
+
+ * utils/rapper.c: Remove const for print_graph
+
+ * src/raptor_serialize_turtle.c: raptor_turtle_context gains
+ rdf_nil_uri. Tidy some error messages to remove ()s
+ (raptor_turtle_emit_subject_collection_items): At the object of an
+ rdf:rest, if it's blank, check it exists and make it the new
+ subject, otherwise check it's a URI called rdf:nil.
+ (raptor_turtle_serialize_init, raptor_turtle_serialize_terminate):
+ Init/free rdf:rest URI.
+ Fixes Issue#0000207 http://bugs.librdf.org/mantis/view.php?id=207
+
+ * tests/Makefile.am, tests/ex-62.rdf: Added ex-62 for Issue#0000207
+
+2007-06-23 Dave Beckett <dave@dajobe.org>
+
+ * src/snprintf.c: style, ANSI C and std headers
+
+ * src/snprintf.c: Import Public Domain snprintf from mutt:
+ http://dev.mutt.org/hg/mutt/file/55cd4cb611d9/snprintf.c Last
+ Modified: Tue Aug 08 22:49:12 2006 +0000.
+
+2007-06-20 Dave Beckett <dave@dajobe.org>
+
+ * raptor.rdf.in: Set Project URI
+ Update syntaxes
+
+ * src/raptor_grddl.c: Add XSLT security
+ (raptor_init_parser_grddl_common): Deny reading, writing to files,
+ creating directories or writing to network.
+ (raptor_terminate_parser_grddl_common): Tidy up xslt security prefs.
+
+2007-06-19 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h: raptor_graph_handler without const uri
+
+ * tests/Makefile.am: Add trig dir
+
+ * docs/raptor-parsers.xml: Update GRDDL
+ Add RDFa and TRiG
+
+ * utils/rapper.1: Added --show-graphs
+
+ * utils/rapper.c: Added --show-graphs option to print named graph
+ URIs as seen
+
+ * tests/trig, tests/trig/Makefile.am, tests/trig/example1.out,
+ tests/trig/example1.trig, tests/trig/example2.out,
+ tests/trig/example2.trig, tests/trig/example3.out,
+ tests/trig/example3.trig: Added TRiG tests
+
+ * configure.ac: Add trig parser support, enabled by default.
+
+ * src/Makefile.am: Added RAPTOR_PARSER_TRIG sharing turtle parser code
+
+ * src/raptor.h: Added raptor_graph_handler
+ Added raptor_set_graph_handler
+
+ * src/raptor_parse.c: (raptor_parsers_init): Call
+ raptor_init_parser_trig.
+ (raptor_set_graph_handler): Added to get graph name callbacks.
+ (raptor_parser_set_graph_name): Added internal function.
+
+ * src/turtle_common.h: struct raptor_turtle_parser_s gains trig flag.
+
+ * src/raptor_internal.h: struct raptor_parser_s gains field
+ graph_handler Added raptor_init_parser_trig and
+ raptor_parser_set_graph_name prototypes.
+
+
+ * src/turtle_parser.y: Add TRiG support. New tokens LEFT_CURLY,
+ RIGHT_CURL, COLONMINUS ({, } and :-) New token graphName
+ (colonMinusOpt): Added for TRiG's optional :-
+ (graph): Added for TRiG graph name before { ... graph ... }
+ (graphName): Added for TRiG
+ (graphBody): Added for TRiG
+ (triplesList): Added for TRiG
+ (terminatedTriples): Added.
+ (statement): uses graph, terminatedTriples
+ (triples): Added, pulled out of statement
+ (raptor_trig_parse_recognise_syntax): Recognise trig in url.
+ (raptor_trig_parser_register_factory): Added for TRiG
+ (raptor_init_parser_trig): Added for TRiG
+
+ * src/turtle_lexer.l: Add { } and :- for TRiG
+
+2007-06-12 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: (raptor_grddl_run_grddl_transform_uri): Hack
+ locator URI so errors with XSLT are reported against that URI not
+ the documents.
+
+ * src/raptor_grddl.c: (raptor_grddl_fetch_uri): Fix accept header
+
+ * src/raptor_grddl.c: Use /* for root element
+
+ * src/raptor_grddl.c: XML @dataview:transformation are only on the
+ root element.
+
+ * src/raptor_grddl.c: (raptor_grddl_check_recursive_content_type_handler):
+ Renamed from raptor_grddl_check_rdf_content_type_handler since it
+ stores all content types now. Check for HTML content type and set
+ html_base processing flag
+ (raptor_grddl_run_recursive): Remove allow_rdf flag, always true.
+
+
+ * src/raptor_grddl.c: struct raptor_grddl_parser_context_s gains
+ xinclude_processing and html_base_processing flags.
+ (raptor_grddl_parse_init_common): Initialise grddl, xinclude but
+ not html base.
+ (raptor_rdfa_parse_init): Disable grddl, xinclude and init html
+ base.
+ (raptor_grddl_run_xpath_match): If html_base_processing is
+ enabled, switch XML doc type to XML_HTML for the xmlNodeGetBase()
+ call and restore afterwards.
+ (raptor_grddl_parse_chunk): Look for HTML or XHTML mime types to
+ enable html_base_processing. Conditionalise XML Include
+ processing with xinclude_processing flag.
+
+2007-06-10 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: Debug message madness!
+ (raptor_grddl_parse_chunk): After xinclude processing, reserialize
+ the document DOM so it can be parsed later as RDF/XML if needed.
+
+ * src/raptor_grddl.c: (raptor_grddl_parse_chunk): Recognise root
+ rdf:RDF element and process as RDF/XML. Fix RDF/XML parsing of
+ doc to not filter triples.
+
+ * utils/rapper.c: If no base URI is given, do not set it
+
+ * src/raptor_grddl.c: (raptor_grddl_run_recursive): Send to right
+ parser.
+
+ * tests/ex-61.nt, tests/ex-61.out (from
+ /raptor/trunk/tests/ex-61.nt:12321): Rename ex-61.nt to ex-61.out
+
+ * src/raptor_grddl.c: (raptor_grddl_parse_uri_write_bytes):
+ Removed.
+ (raptor_grddl_run_recursive): Use typedef
+ raptor_parse_bytes_context with raptor_parse_uri_write_bytes as a
+ handler for starting parse lazily
+
+ * src/raptor_parse.c: Moved raptor_parse_bytes_context to
+ raptor_internal.h
+ (raptor_parse_uri_write_bytes): No longer static.
+
+ * src/raptor_internal.h: Added raptor_parse_bytes_context Export
+ raptor_parse_uri_write_bytes handler for use with GRDDL fetch.
+
+ * src/raptor_parse.c: Added raptor_parse_bytes_context typedef
+ (raptor_parse_uri_write_bytes): Use the above to look if this is the
+ first time called, and if so, determine the base URI from the user's
+ set base URI, the final URI from protocol, or otherwise, the resolved
+ URI. This prevents calling raptor_start_parse() until the first byte
+ is seen (and thus the base URI, protocol context is known)
+ (raptor_parse_uri_with_connection): Explains the base URI rules in
+ detail. Remove call to raptor_start_parse() and initialse the rpbc
+ block.
+
+ * src/raptor_www_curl.c: (raptor_www_curl_update_status): set
+ final_uri and call final_uri_handler if set
+
+ * src/raptor_www.c: (raptor_www_set_final_uri_handler): Added.
+
+ * src/raptor.h: Added raptor_www_final_uri_handler typedef. Added
+ raptor_www_set_final_uri_handler prototype.
+
+ * src/raptor_internal.h: raptor_www gains final_uri_userdata and
+ final_uri_handler;
+
+ * src/raptor_internal.h: struct raptor_www_s gains a
+ checked_status flag
+
+ * src/raptor_www_curl.c: (raptor_www_curl_update_status): Added.
+ (raptor_www_curl_write_callback): Call raptor_www_curl_update_status
+ from here when first byte arrives, before any parsing.
+ (raptor_www_curl_fetch): Move getting final URI earlier - above.
+
+ * src/raptor_www_curl.c: typo
+
+ * tests/Makefile.am, tests/ex-61.nt, tests/ex-61.rdf: Added ex-61
+
+ * src/raptor_www_curl.c: (raptor_www_curl_fetch): Save final URI
+
+ * src/raptor_www.c: (raptor_www_get_final_uri): Added.
+
+ * src/raptor.h: Added raptor_www_get_final_uri prototype
+
+ * src/raptor_internal.h: struct raptor_www_s gains a final_uri field
+
+ * src/raptor_sax2.c: (raptor_sax2_inscope_xml_language): Turn
+ xml:lang="" into a NULL result.
+
+ * src/raptor_grddl.c: (raptor_grddl_run_recursive): Zaps error
+ handlers on recursive parse when ignore_errors set.
+
+ * src/raptor_grddl.c: (raptor_grddl_fetch_uri): flags
+ argument (was ignore_errors) can now send a different accept
+ header.
+ (raptor_grddl_run_grddl_transform_uri): Call
+ raptor_grddl_fetch_uri and expect XSLT.
+ (raptor_grddl_run_recursive): Call raptor_grddl_fetch_uri and
+ ignore errors.
+
+ * src/raptor_grddl.c: (raptor_grddl_discard_message): Added.
+ (raptor_grddl_fetch_uri): Added ignore_errors argument to set the
+ raptor_www error handler to raptor_grddl_discard_message
+ (raptor_grddl_run_grddl_transform_uri): Do not discard errors from
+ raptor_grddl_fetch_uri call.
+ (raptor_grddl_run_recursive): Added ignore_errors argument and use
+ it to return 0 with no warnings, when errors happen.
+ (raptor_grddl_parse_chunk): Run namespace URI recursive grddl
+ while discarding errors. Run head profile URIs recursive grddl
+ while discarding errors.
+
+ * src/raptor_grddl.c: (raptor_grddl_run_grddl_transform_doc): Pass
+ in an xml context and use the base URI there rather than the
+ parser's.
+ (raptor_grddl_run_grddl_transform_uri): Pass on the xml context to
+ the above.
+
+2007-06-09 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-www.sgml: Added
+ raptor_www_set_connection_timeout
+
+ * docs/tmpl/section-feature.sgml: new feature
+ @RAPTOR_FEATURE_MICROFORMATS
+
+ * docs/raptor-sections.txt: Added
+ raptor_www_set_connection_timeout
+
+ * src/raptor_www_curl.c: (raptor_www_curl_init): Use
+ www->connection_timeout.
+
+ * src/raptor_www.c: (raptor_www_new_with_connection): Init
+ connection timeout to 10s
+ (raptor_www_set_connection_timeout): Added.
+
+ * src/raptor.h: Add raptor_www_set_connection_timeout
+
+ * src/raptor_internal.h: raptor_www gains connection_timeout
+
+ * src/raptor_www_curl.c: (raptor_www_curl_init): Set a 10 second
+ connection timeout.
+
+ * src/raptor_libxml.c: (raptor_libxml_xmlStructuredErrorFunc): For
+ HTTP error only, append str1 to the error.
+
+ * src/raptor_grddl.c: Use XML base URI passed around with the
+ grddl_xml_context.
+ (raptor_new_xml_context): Renamed from
+ raptor_sequence_push_xml_context, moving sequence push to main
+ code.
+ (raptor_rdfa_parse_init): Push URI for RDFa in
+ raptor_grddl_parse_start.
+ (raptor_grddl_parse_start): Add XML context for RDFa here.
+ (raptor_grddl_add_transform_xml_context): Renamed from
+ raptor_grddl_add_transform_uri
+ (raptor_grddl_run_grddl_transform_doc): If there is no parser name
+ guessable, return.
+ (raptor_grddl_run_grddl_transform_uri): Take a grddl_xml_context*
+ arg instead of raptor_uri.
+
+2007-06-06 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: Added grddl_xml_context structure.
+ Transform and profile URI raptor_sequences are now sequences of
+ grddl_xml_context structures.
+ (raptor_sequence_push_xml_context, grddl_free_xml_context): Added.
+ (raptor_grddl_parse_init_common): No need for
+ raptor_libxml_init_generic_error_handlers, raptor_new_sax2 does
+ it. Initialise raptor_sequence with grddl_free_xml_context.
+ (raptor_grddl_add_transform_uri): Use
+ raptor_sequence_push_xml_context.
+ (raptor_grddl_filter_triples): Use grddl_xml_context for
+ profile_uri sequence.
+ (raptor_grddl_run_xpath_match): Use grddl_xml_context for URI
+ results.
+ (raptor_grddl_parse_chunk): Use raptor_sequence_push_xml_context
+ for former URI sequences.
+
+ * src/raptor_libxml.c: (raptor_libxml_generic_error): Now
+ external, not static. Call raptor_log_error_varargs direct, no
+ mention of sax2, locator is from error_handlers.
+ (raptor_libxml_init_generic_error_handlers): Removed.
+ (raptor_libxml_xmlStructuredErrorFunc): Add err->str1 to message
+ if it's given.
+
+ * src/raptor_www_libxml.c: (raptor_www_libxml_http_error):
+ Deleted, no longer needed.
+ (raptor_www_libxml_init): Set xml generic error context, but save
+ old one.
+ (raptor_www_libxml_free): Restore old xml generic error context.
+
+ * src/raptor_www.c: (raptor_www_new_with_connection): Init
+ RAPTOR_ERROR_HANDLER_MAGIC
+ (raptor_www_set_error_handler): Use error_handlers
+ (raptor_www_error_varargs): Removed, merged into raptor_www_error
+ (raptor_www_error): Call raptor_log_error_varargs here.
+
+ * src/raptor_sax2.c: (raptor_new_sax2): Set xmlSetGenericErrorFunc
+ here with the same context pointer as for structured errors.
+
+ * src/raptor_parse.c: (raptor_new_parser): Init
+ RAPTOR_ERROR_HANDLER_MAGIC
+
+ * src/raptor_internal.h: removed
+ raptor_libxml_init_generic_error_handlers prototype added
+ raptor_libxml_generic_error prototype raptor_www gains
+ old_xmlGenericErrorContext for libxml and error_handlers replacing
+ older error_data, error_handle. removed raptor_www_error_varargs
+ prototype
+
+ * src/raptor_sax2.c: SAX2 error_handler fix for expat
+
+ * tests/turtle/Makefile.am, tests/turtle/test-27.out,
+ tests/turtle/test-27.ttl: Added turtle test test-27 for scope of
+ @prefix
+
+2007-06-04 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: Do an additional RDF/XML parse of content
+ that is found to be RDF/XML by mime type during recursive GRDDL,
+ and an additional parse of the top level content too, if also
+ found.
+
+ * src/raptor_parse.c: (raptor_parser_copy_user_state): Copy last
+ feature too!
+
+ * src/raptor_parse.c, src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Added
+ RAPTOR_FEATURE_MICROFORMATS
+
+ * src/raptor_grddl.c: (raptor_grddl_parse_chunk): Use feature
+ RAPTOR_FEATURE_MICROFORMATS to dis/enable checking for hardcoded
+ microformats
+
+ * src/raptor_feature.c: C
+
+ * src/raptor_feature.c: raptor_features_list gains
+ RAPTOR_FEATURE_MICROFORMATS with name 'microformats'
+
+ * src/raptor.h: Added RAPTOR_FEATURE_MICROFORMATS
+
+ * src/raptor_grddl.c: Remove C++ comment
+
+ * src/raptor_grddl.c: Added MATCH_LAST to stop searching for
+ hardcoded sheets. Add hReview sheet that if matches, stops
+ looking for later microformats such as hCard.
+ (raptor_grddl_parse_chunk): Use MATCH_LAST to stop looking for
+ later hardcoded matches.
+ (raptor_init_parser_grddl_common,
+ raptor_terminate_parser_grddl_common): Added, called once for
+ grddl or rdfa available.
+
+ * src/raptor_parse.c: (raptor_parsers_init): Call
+ raptor_init_parser_grddl_common for GRDDL or RDFA parsers.
+ (raptor_parsers_finish): Call raptor_terminate_parser_grddl_common
+ for GRDDL or RDFA parsers.
+
+ * src/raptor_internal.h: Add prototypes for
+ raptor_init_parser_grddl_common and
+ raptor_terminate_parser_grddl_common
+
+ * src/raptor_grddl.c: (raptor_grddl_add_transform_uri): Added, to
+ add a transformation URI
+ (XSLT) for a document, removing duplicate URIs.
+ (raptor_grddl_filter_triples, raptor_grddl_parse_chunk): Use
+ raptor_grddl_add_transform_uri.
+
+2007-06-03 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac, src/raptor_grddl.c, src/raptor_internal.h,
+ src/raptor_parse.c: Add RDFa parser
+
+2007-05-27 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize.c: (raptor_serializer_register_factory):
+ Fix debug call with RAPTOR_DEBUG>1
+ Fixes Issue#0000195 http://bugs.librdf.org/mantis/view.php?id=195
+
+2007-05-26 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_uri.c: (raptor_uri_filename_to_uri_string): Make
+ path_max bigger *2, not smaller /4.
+ Fixes Issue#0000192 http://bugs.librdf.org/mantis/view.php?id=192
+
+ * src/n3_parser.y: (n3_parser_error): Invoke
+ raptor_parser_simple_error with a format string and arg.
+
+ * src/turtle_parser.y: (turtle_parser_error): Invoke
+ raptor_parser_simple_error with a format string and arg.
+
+ * src/raptor.h: Allow _declspec and __declspec
+ Fixes Issue#0000188 http://bugs.librdf.org/mantis/view.php?id=188
+
+2007-05-23 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-feature.sgml: Add RAPTOR_FEATURE_HTML_TAG_SOUP
+
+2007-05-21 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: Check for libxml/nanohttp.h only once the
+ xml-config include paths have been setup.
+
+ * configure.ac: Add -Wformat-security
+
+2007-05-14 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: (raptor_grddl_parse_chunk): Use
+ HTML_PARSE_RECOVER if available
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_grddl.c,
+ src/raptor_parse.c, src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Added parser
+ feature RAPTOR_FEATURE_HTML_TAG_SOUP aka htmlTagSoup for use by
+ GRDDL parser
+
+ * src/raptor_libxml.c: debug bogus pointers not fail temporarily
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_parse_recognise_syntax):
+ Move buffer editing to raptor_guess_parser_name.
+
+ * src/raptor_parse.c: (raptor_guess_parser_name): Only run
+ recognise_syntax with first N bytes of content
+
+ * src/raptor_grddl.c: debugmsg
+
+ * src/raptor_grddl.c: Use HTML parser when XML parser fails, to
+ create a DOM for GRDDLing from invalid/not-WF HTML content.
+ raptor_grddl_parser_context_s gains htmlParserCtxt as well as
+ xmlParserCtxt and process_this_as_rdfxml GRDDL flag to know when
+ to parse the content twice.
+ (raptor_grddl_parse_terminate): Tidy htmlParserCtxt. Add
+ MATCH_IS_HARDCODED to match_table just to make it clear.
+ (match_table): Re-enable hcalendar and hcard as hardcoded XSLTs
+ (raptor_grddl_run_xpath_match): Handle non-namespace elements.
+ Handle MATCH_IS_HARDCODED and return on first match.
+ (raptor_grddl_parse_chunk): Major change in structure - all
+ content passed in is saved until is_end=1, then parsed with XML
+ parser and if that fails, HTML parser. HTML parser is run with no
+ errors or warnings.
+
+2007-05-11 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_parser.y: (raptor_turtle_parse_recognise_syntax):
+ Look for turtle @prefix and rdf namespace use in buffer.
+
+ * src/n3_lexer.l: Add rule to allow a comment on the last line,
+ without a final newline
+
+ * src/turtle_lexer.l: Add rule to allow a comment on the last
+ line, without a final newline
+
+ * tests/turtle/Makefile.am, tests/turtle/test-26.out,
+ tests/turtle/test-26.ttl: Add test-26
+
+2007-05-10 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c: 's
+
+2007-05-09 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_parse_recognise_syntax):
+ Recognize rdf entities as namespaces. Add bonus points for using
+ the words rdf and rdf
+
+2007-05-08 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_parse_recognise_syntax):
+ Only use first 512 bytes of content for hunting for namespaces.
+
+2007-04-26 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_internal.h: struct raptor_www_s loses useless
+ old_handler field for www_libxml
+
+ * src/raptor_www_libxml.c: (raptor_www_libxml_init,
+ raptor_www_libxml_free): Set, reset generic error func.
+
+ * src/raptor_internal.h: Fix raptor_parse_date prototype
+
+ * src/raptor_libxml.c: (raptor_libxml_init_generic_error_handlers):
+ Use xmlSetGenericErrorFunc
+
+ * src/parsedate.y: ANSI C function prototypes.
+
+ * src/parsedate.y: Prototype for raptor_parse_date
+
+2007-04-24 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_general.c: raptor_log_level_labels make it the right size
+
+ * src/raptor_grddl.c, src/raptor_parse.c, src/raptor_sax2.c:
+ Update for error_handlers arrays.
+
+ * src/raptor_libxml.c: (raptor_libxml_warning): Update for
+ error_handlers arrays. Also do not send an error to the warning
+ handlers.
+ (raptor_libxml_error_common, raptor_libxml_validation_warning):
+ Update for error_handlers arrays.
+ (raptor_libxml_xmlStructuredErrorFunc): Add xpath to the error
+ message when the domain is XML_FROM_XPATH. Ignore error_handlers
+ if the pointer is bogus. Use the arrays. If error_handler is
+ NULL, ignore it.
+
+ * src/raptor_general.c: (raptor_error_handlers_init): Init error
+ handler array fields and magic field.
+
+ * src/raptor_internal.h: raptor_error_handlers now contains arrays
+ of user_data and handlers and a magic field to check that an
+ error_handler pointer is valid.
+
+2007-04-22 Dave Beckett <dave@dajobe.org>
+
+ * autogen.sh: Update autogen.sh
+
+2007-04-14 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_turtle.c: (raptor_turtle_emit_literal,
+ raptor_turtle_emit_xml_literal): Send namespace stack to
+ raptor_turtle_writer_literal
+
+ * src/raptor_turtle_writer.c: (raptor_turtle_writer_literal): Add
+ nspace field and use it to look up if a qname can be used for a
+ datatype URI.
+
+ * src/raptor_internal.h: raptor_turtle_writer_literal gains nspace
+ field
+
+ * src/raptor_parse.c: (raptor_guess_parser_name): Make suffix
+ decoding work again
+
+2007-04-10 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c: (raptor_rss_parse_recognise_syntax): One more
+ addition in the neverending guesswork that is rss tag soup. This
+ time for sites that have feed in the DNS name, or just somewhere
+ in the URL.
+
+ * src/raptor_parse.c: (raptor_guess_parser_name): Discard suffixes
+ that are not '\.[a-zA-Z0-9]+$'
+
+2007-03-27 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: Check for curl header after inserting any cflags
+ from curl-config. This lets the curl test work when curl the
+ includes are not in the usual places
+
+2007-03-26 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac, src/win32_raptor_config.h: Bumped version to
+ 1.4.16
+
+ * Snapshotted raptor_1_4_15 for 1.4.15 release (SVN r12027)
+
+ * src/raptor_grddl.c: (raptor_grddl_parser_register_factory):
+ Register XHTML mime type higher, very unlikely another parser is
+ dealing with this.
+
+ * src/raptor_rss.c: (raptor_rss_parse_recognise_syntax): Make mime
+ type heuristics ignore anything with html in it so XHTML mime type
+ is ignored.
+
+2007-03-25 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_internal.h: raptor_uri_detail_s gains is_hierarchical
+ flag.
+
+ * src/raptor_rfc2396.c: (raptor_new_uri_detail): Set
+ is_hierarchical flag.
+ (raptor_uri_resolve_uri_reference): Handle a non-hierarchical base
+ URI.
+ Fixes Issue#0000177 http://bugs.librdf.org/mantis/view.php?id=177
+ (main): Fix above changes an earlier test:
+ From:
+ resolve("foo:", "not_scheme:blah") => "foo:/not_scheme:blah"
+ To:
+ resolve("foo:", "not_scheme:blah") => "foo:not_scheme:blah"
+
+ * src/raptor_rfc2396.c: (main): Add test to confirm report from
+ Issue#000177 http://bugs.librdf.org/mantis/view.php?id=177
+
+ * utils/rapper.c: Print all informational and help messages to
+ stderr. Only results of parsing and the help (-h/--help) message
+ goes to stdout now.
+
+2007-03-22 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_xml_writer.c, src/ntriples_parse.c,
+ src/raptor_grddl.c, src/raptor_parse.c: Casts for C++
+
+ * examples/grapper.c: Use library variables for license, home page
+
+ * examples/grapper.c: Casts and C99 fixes
+
+ * src/raptor_rss.h: Fix CONTENT_NAMESPACE_URI to correct URI
+
+2007-03-19 Dave Beckett <dave@dajobe.org>
+
+ * utils/rapper.c: NULL base URI
+
+ * tests/Makefile.am: Set rapper output baseuri to NULL via '-'
+
+ * utils/rapper.1, utils/rapper.c: Allow base uri '-' for no output
+ base URI
+
+ * src/raptor_www.c: (raptor_www_fetch): If a request returns a
+ status code that is not success, generate an error message.
+
+ * src/raptor_www_curl.c: (raptor_www_curl_fetch): Enhance failure
+ error message
+
+2007-03-15 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c: Adjust the xml:base attribute adding
+ to put it next to the raptor_xml_writer_start_element of the root
+ element.
+
+ * src/raptor_serialize_rdfxmla.c:
+ raptor_rdfxmla_serializer_context gains xml_nspace field.
+ (raptor_rdfxmla_serialize_init,
+ raptor_rdfxmla_serialize_terminate): Init/free xml namespace.
+ (raptor_rdfxmla_ensure_writen_header): Write xml:base when a base
+ URI is given.
+ Addresses Issue #0000174 http://bugs.librdf.org/mantis/view.php?id=174
+
+ * src/raptor_serialize_rdfxml.c: raptor_rdfxml_serializer_context
+ gains xml_nspace field.
+ (raptor_rdfxml_serialize_init, raptor_rdfxml_serialize_terminate):
+ Init/free xml namespace.
+ (raptor_rdfxml_ensure_writen_header): Write xml:base when a base
+ URI is given.
+ Addresses Issue #0000174 http://bugs.librdf.org/mantis/view.php?id=174
+
+2007-03-12 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c, src/raptor_serialize_rss.c: Replace shared
+ nspaces list with one per rss-parser/serializer.
+
+ * src/raptor_rss.h: raptor_rss_namespace_info looses nspace field.
+
+ * src/raptor_rfc2396.c: (raptor_uri_resolve_uri_reference): In
+ removing ./ do not go past end of buffer.
+
+2007-03-11 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: struct raptor_grddl_parser_context_s gains
+ content_type, content_type_check and stringbuffer for saved
+ rdf/xml content.
+ (raptor_grddl_parse_terminate): Free any saved content type or
+ stringbuffer.
+ (raptor_grddl_parse_start): Init type check.
+ (raptor_grddl_libxml_discard_error): Restore, for discarding
+ validation errors again.
+ (raptor_grddl_parse_chunk): If content type was seen and type was
+ application/rdf+xml, save content for later parsing as RDF/XML.
+ Discard validation errors again.
+ (raptor_grddl_parse_content_type_handler): Save content type
+ header when passed in.
+ (raptor_grddl_parser_register_factory): Register
+ raptor_grddl_parse_content_type_handler.
+
+ * src/raptor_parse.c: (raptor_guess_parser_name): Add any mime
+ type q <10 to the score, don't lose it entirely.
+
+2007-03-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: Alter match_table to look for substrings
+ inside html:link@rel and html:a@rel Delete old hard-coded
+ transforms for dc: never worked and embedded RDF: grddl profile
+ support handles this now.
+
+ * src/raptor_grddl.c: (raptor_grddl_run_grddl_transform_doc):
+ Invoke xsltSetGenericErrorFunc here to get the right rdf_parser
+ configured.
+
+ * src/raptor_grddl.c: Handles GRDDL W3C Working Draft 2 March 2007
+
+ * src/raptor_grddl.c: (raptor_grddl_libxml_discard_error): Deleted.
+ (raptor_grddl_parse_chunk): No longer ignore validation errors
+ http://lists.w3.org/Archives/Public/public-grddl-comments/2007JanMar/0062.html
+
+2007-02-15 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: (raptor_grddl_run_grddl_transform_uri):
+ Return a warning and do not fail if XSLT sheet is not found
+ (raptor_grddl_run_recursive): Return a warning and do not fail if
+ the recursive GRDDL doc is not found.
+ (raptor_grddl_parse_chunk): Tidy other errors. Add aborting on
+ XInclude failure.
+
+ * src/raptor_grddl.c: (raptor_grddl_parse_chunk): Do not get/set
+ content when there was no internal parser.
+
+ * src/raptor_grddl.c: (raptor_grddl_ensure_internal_parser): Unset
+ user_data/statement_handler if filter is not used so that re-using
+ the same parser with different filter now works.
+ (raptor_grddl_fetch_uri): Add content_type_handler and
+ content_type_user_data args and use them to call
+ raptor_www_set_content_type_handler if not NULL.
+ (raptor_grddl_run_grddl_transform_uri): Update
+ raptor_grddl_fetch_uri call
+ (raptor_grddl_check_rdf_content_type_handler): Handler to look for
+ RDF MIME Type and trigger content saving if so.
+ (raptor_grddl_run_recursive): Add allow_rdf argument to allow
+ RDF/XML content to be processed if the type is right.
+ (raptor_grddl_parse_chunk): For a namespace URI, run recursive and
+ allow RDF/XML. If it was seen on return, create a new "rdfxml"
+ parser and run it. Reorder setting the root_ns_uri profile
+ earlier so that it can be recognised as a transform in RDF/XML
+ namespace documents.
+
+ * src/raptor_parse.c: (raptor_parse_chunk): If the stringbuffer is
+ declared, save a copy of the bytes that pass by.
+ (raptor_parser_save_content, raptor_parser_get_content): Added to
+ trigger/reset saving content and to get the content back as a new
+ string.
+
+ * src/raptor_internal.h: raptor_parser gains a stringbuffer Added
+ prototypes for raptor_parser_save_content and
+ raptor_parser_get_content
+
+2007-02-12 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: (raptor_grddl_parse_init): Update
+ raptor_new_sax2 call. Delete raptor_sax2_set_locator.
+
+ * src/raptor_rss.c: (raptor_rss_parse_init): Update
+ raptor_new_sax2 call. Delete raptor_sax2_set_locator.
+
+ * src/raptor_rdfxml.c: (raptor_rdfxml_parse_init): Update
+ raptor_new_sax2 call. Delete raptor_sax2_set_locator.
+
+ * src/raptor_www.c: (raptor_www_error_varargs): Call
+ raptor_log_error_varargs.
+
+ * src/raptor_parse.c: (raptor_new_parser): Set locator and
+ handlers/data in the error_handlers.
+ (raptor_parser_fatal_error): Call raptor_log_error_varargs
+ (raptor_parser_fatal_error_varargs): Removed.
+ (raptor_parser_fatal_error_message_handler): call
+ raptor_log_error.
+ (raptor_parser_simple_error, raptor_parser_error_varargs,
+ raptor_parser_warning): Call raptor_log_error_varargs.
+ (raptor_parser_error_message_handler,
+ raptor_parser_warning_message_handler): Call raptor_log_error.
+ (raptor_set_fatal_error_handler, raptor_set_error_handler,
+ raptor_set_warning_handler): Update for error_handlers
+ (raptor_parser_copy_user_state): Copy raptor_error_handlers block.
+
+ * src/raptor_sax2.c: (raptor_new_sax2): Just have error_handlers
+ arg. Use xmlSetStructuredErrorFunc for better libxml errors
+ (raptor_sax2_set_locator): Removed, not needed.
+ (raptor_sax2_simple_error): Call raptor_log_error_varargs.
+ (raptor_sax2_parse_start): Call xmlSetStructuredErrorFunc
+ (raptor_sax2_parse_chunk): Call raptor_log_error_simple instead of
+ directly calling the error handler.
+
+ * src/raptor_libxml.c: (raptor_libxml_call_handler): Removed.
+ (raptor_libxml_warning, raptor_libxml_error_common,
+ raptor_libxml_validation_warning): Use raptor_log_error_varargs.
+ (raptor_libxml_xmlStructuredErrorFunc): Use locator from the
+ error_handlers. Call raptor_log_error.
+
+ * src/raptor_general.c: (raptor_invoke_simple_message_varargs,
+ raptor_invoke_message_varargs): Removed internal function. Added
+ raptor_log_level_labels list.
+ (raptor_log_error_simple, raptor_log_error_varargs,
+ raptor_log_error): Added for new logging.
+ (raptor_error_handlers_init): Added to init new structure
+
+ * src/raptor_internal.h: Added raptor_error_handlers structure and
+ remove the pointers from raptor_parser, raptor_sax2. Added
+ raptor_log_level enum Removed raptor_invoke_message_varargs,
+ raptor_invoke_simple_message_varargs Added
+ raptor_error_handlers_init, void raptor_log_error_simple, void
+ raptor_log_error_varargs, void raptor_log_error raptor_new_sax2
+ now just takes a raptor_error_handler* param
+ Removed raptor_sax2_set_locator
+
+ * utils/rapper.c: help text for -t/--trace
+
+2007-02-11 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_libxml.c: #if LIBXML_VERSION >= not >
+
+ * utils/rapper.1: Added -t/--trace option to show URIs traversed.
+
+ * utils/rapper.c: Added -t/--trace option to show URIs traversed.
+ (rapper_uri_trace): Added.
+ (main): If tracing, register rapper_uri_trace as a URI filter
+ function with raptor_parser_set_uri to see URis retrieved.
+
+ * src/raptor_grddl.c: (raptor_grddl_parse_chunk): Call
+ xmlSetStructuredErrorFunc to make most errors be printed much nicer.
+
+ * src/raptor_internal.h: Added
+ raptor_libxml_xmlStructuredErrorFunc prototype.
+
+ * src/raptor_libxml.c: (raptor_libxml_xmlStructuredErrorFunc):
+ Added for sending libxml structured error messages back to a
+ parser.
+
+2007-02-10 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: Add XInclude headers
+ (raptor_grddl_filter_triples): Renamed from
+ raptor_grddl_relay_triples
+ (raptor_grddl_filter_triples): Do not pass on triples, just look
+ for transformation triples.
+ (raptor_grddl_ensure_internal_parser): Add filter arg and if set
+ for profile and namespace parsings, send triples via
+ raptor_grddl_filter_triples.
+ (raptor_grddl_run_grddl_transform_doc): Call
+ raptor_grddl_ensure_internal_parser with no filtering when have
+ got the resulting string and want to do a specific parse, not a
+ recursive GRDDL.
+ (raptor_grddl_run_recursive): Call
+ raptor_grddl_ensure_internal_parser filtering when doing a
+ recursive GRDDL - this is namespace or profile recursion.
+ (raptor_grddl_parse_chunk): Run XML include processing. Do not
+ try to call NULL profile URIs. Fix transformation loop to call
+ all transformations, not just first.
+
+ * src/raptor_grddl.c: (raptor_grddl_libxml_discard_error): Added
+ to throw away libxml errors.
+ (raptor_grddl_parse_chunk): Use raptor_grddl_libxml_discard_error
+ to dicard XML validation errors since it seems the GRDDL spec
+ doesn't care.
+
+ * src/turtle_parser.y: (raptor_turtle_parse_recognise_syntax):
+ Recognise n3 in mime type when N3 parser is not around.
+ (raptor_turtle_parser_register_factory): Register low interest in
+ text/rdf+n3 when N3 parser is not around.
+
+2007-02-06 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: (raptor_grddl_parse_chunk): Tidy up doc and
+ xpath context on errors or success so that it is initialised next
+ time for new documents.
+
+ * src/raptor_grddl.c: (raptor_grddl_parser_add_parent): Do not set
+ parent twice
+
+2007-01-31 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac, src/win32_raptor_config.h: Bumped version to
+ 1.4.15
+
+ * Snapshotted raptor_1_4_14 for 1.4.14 release (SVN r11863)
+
+2007-01-28 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: (raptor_libxslt_error_common): Added.
+ (raptor_grddl_xsltGenericError_handler): Added.
+ (raptor_grddl_parse_init): Register
+ raptor_grddl_xsltGenericError_handler to handle XSLT generic
+ errors.
+ (raptor_grddl_run_grddl_transform_doc): Set 'base' and 'Base' XSLT
+ parameters to allow some XSLT sheets to work - pragmatism.
+
+ * src/raptor_grddl.c: struct raptor_grddl_parser_context_s gains
+ rdf_parser field. Add lots more debugging messages
+ (raptor_grddl_parse_init): Init rdf_parser field.
+ (raptor_grddl_parser_add_parent): Relay all triples to the parent
+ grddl parser.
+ (raptor_grddl_ensure_internal_parser): Lose relay flag - always
+ relay.
+ (raptor_grddl_parse_chunk): Copy root_ns_uri if not NULL. When
+ processing head profile URIs, strip out the GRDDL profile URI
+ before adding them to the grddl_parser->profile_uris sequence.
+
+2007-01-27 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: Add AC_CHECK_FUNC(xsltInit)
+
+ * src/raptor_grddl.c: (raptor_init_parser_grddl): Check for xsltInit
+
+ * src/raptor_parse.c: (raptor_parsers_finish): Call
+ raptor_terminate_parser_grddl when enabled.
+
+ * src/raptor_internal.h: Added raptor_terminate_parser_grddl prototype
+
+ * src/raptor_grddl.c: Add XML schema namespace to ignored
+ namespace list.
+ (raptor_grddl_parse_chunk): Copy root namespace URI when adding to
+ a list.
+ (raptor_terminate_parser_grddl): Added, to free up shared
+ resources.
+
+ * docs/libraptor.3: 1.4.14
+
+ * src/raptor_parse.c: autodocs
+
+ * src/raptor_internal.h: Move raptor_turtle_writer to
+ raptor_internal.h for now.
+
+ * src/raptor.h: Move raptor_turtle_writer to raptor_internal.h for
+ now.
+
+2007-01-26 Dave Beckett <dave@dajobe.org>
+
+ * src/n3_parser.y, src/ntriples_parse.c, src/raptor_general.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/turtle_parser.y: Rename
+ raptor_generate_id to raptor_parser_internal_generate_id with
+ altered calling convention - pass in ID type
+
+ * src/raptor.h: Adedd prototype for raptor_parser_generate_id
+
+ * src/raptor_internal.h: raptor_parser_internal_generate_id
+ renamed from raptor_generate_id.
+
+ * src/raptor_parse.c: (raptor_parser_generate_id): Added as a
+ public function, modified from previously internal
+ raptor_generate_id().
+ (raptor_parser_internal_generate_id): Renamed from
+ raptor_generate_id.
+
+2007-01-16 Dave Beckett <dave@dajobe.org>
+
+ * utils/rapper.c: Add a another raptor_finish() before exit
+
+2007-01-14 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_grddl.c: struct raptor_grddl_parser_context_s loses
+ xpathObj
+ (raptor_grddl_parse_terminate): Remove xpathObj tidy. Remove
+ profile URIs from 'match_table' list of xpaths - now invoked on
+ it's own.
+ (raptor_grddl_relay_triples): Add relay triples debugging. Fix
+ loop to properly walk through profile URIs
+ (raptor_grddl_run_xpath_match): Added to invoke a match to an
+ xpath returning a list of URIs as raptor_sequence. Code removed
+ from raptor_grddl_parse_chunk.
+ (raptor_grddl_run_recursive): Added to invoke a recursive GRDDL on
+ a URI, sending triples back to the current parser. Code removed
+ from raptor_grddl_parse_chunk.
+ (raptor_grddl_parse_chunk): Use raptor_grddl_run_recursive to do
+ most of the work. Invoke the <head profile> early on before
+ running general XPath matches. Use raptor_grddl_run_xpath_match
+ to run general XPath matches.
+
+ * utils/rapper.c: Use raptor_home_url_string and
+ raptor_license_string in short and long usage messages.
+
+ * src/raptor.h: Added raptor_home_url_string (replacing raptor_url)
+
+ * src/raptor_general.c: raptor_home_url_string
+
+ * src/raptor.h: Added raptor_url
+
+ * src/raptor.h: Added raptor_license_string
+
+ * src/raptor_general.c: 2007 and add raptor_license_string
+
+2007-01-07 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_abbrev.c: (raptor_new_abbrev_node): Initialise with
+ ref_count 1
+ (raptor_abbrev_node_lookup): Do not add ref_count here
+
+ * tests/turtle/Makefile.am: (check-turtle-serialize): rdfdiff with
+ a local file, not one in $(srcdir)
+
+ * utils/rdfdiff.c: Apply the base URI to the to-file, if given.
+ Otherwise use the from_file's URI.
+
+ * tests/turtle/Makefile.am: (check-turtle-serialize): Add base
+ URIs for the rdf-schema.ttl and rdfs-namespace.ttl
+
+ * tests/turtle/Makefile.am: (check-turtle-serialize): Ensure it
+ dies when a failure happens
+
+ * tests/turtle/Makefile.am: (check-turtle-serialize): Call rdfdiff
+ with -u to set base URI for input turtle. This allows test-00.ttl
+ to produce the same absolute URIs each time and for round-trip
+ serializing to work.
+
+ * utils/rdfdiff.c: Added -u/--base-uri option to specify the from
+ file base URI so that if the from file is a local file or relative
+ URI, it can be given an absolute base.
+
+ * tests/turtle/Makefile.am: (check-turtle-serialize): output
+ serialization results to .ttl files
+
+ * tests/turtle/Makefile.am: Add check-turtle-serialize to
+ check-local
+
+2007-01-05 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor-config.1: Document --private-libs and explain what it
+ is under --libs too.
+
+ * src/raptor-config.in: Add --private-libs and move private @LIBS
+ to that from --libs
+
+ * raptor.pc.in: Use Libs.private for internal dynamically linked
+ libraries
diff --git a/ChangeLog.9 b/ChangeLog.9
new file mode 100644
index 0000000..b198480
--- /dev/null
+++ b/ChangeLog.9
@@ -0,0 +1,3100 @@
+2008-11-26 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-general.sgml, docs/tmpl/section-triples.sgml:
+ sgml docs
+
+ * tests/turtle/Makefile.am: more workarounds for noisy gnu make
+
+ * tests/turtle/Makefile.am: workaround gnu make being noisy
+
+ * tests/Makefile.am, tests/ex-62.rdf, tests/turtle/Makefile.am,
+ tests/turtle/ex-62.rdf: Moved remaining turtle tests to
+ tests/turtle
+
+ * configure.ac, tests/Makefile.am, tests/all-escape.nt,
+ tests/all-escape.rdf, tests/bad-00.nt, tests/bad-01.nt,
+ tests/bad-02.nt, tests/bad-03.nt, tests/bad-04.nt,
+ tests/bad-05.nt, tests/bad-06.nt, tests/ntriples,
+ tests/ntriples/Makefile.am, tests/ntriples/all-escape.nt,
+ tests/ntriples/all-escape.rdf, tests/ntriples/bad-00.nt,
+ tests/ntriples/bad-01.nt, tests/ntriples/bad-02.nt,
+ tests/ntriples/bad-03.nt, tests/ntriples/bad-04.nt,
+ tests/ntriples/bad-05.nt, tests/ntriples/bad-06.nt,
+ tests/ntriples/test.nt, tests/ntriples/test.out, tests/test.nt,
+ tests/test.out: Moved ntriples tests to tests/ntriples
+
+ * tests/Makefile.am: Removed unused OWL URLs
+
+ * configure.ac, tests/ex*rdf, tests/ex*out, tests/bad*rdf,
+ tests/warn*rdf, tests/warn*out, tests/wine*: Moved rdf/xml parsing
+ and serializing tests to tests/rdfxml
+
+ * src/raptor_nfc.c:
+ (raptor_nfc_check): Invert check for
+ raptor_nfc_check_combiners "check 3" to make legal Unicode
+ sequence U+006b U+0061 U+0304 U+0062 U+006f U+006c
+ as UTF-8 encoded bytes:
+ 0x6b 0x61 0xcc 0x84 0x62 0x6f 0x6c
+ work. Causes additional raptor_nfc_test failures but they are
+ probably(?) not correct. raptor_nfc_test is not currently part of
+ the normal test suite (make check)
+
+ Fixes Issue#0000259 http://bugs.librdf.org/mantis/view.php?id=259
+
+2008-11-22 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_common.c:
+ (raptor_stringbuffer_append_turtle_string): Calculate new string
+ size correctly.
+
+ * src/turtle_parser.y:
+ (turtle_parse): Take a length arg and save a strlen inside lexer
+ by using turtle_lexer__scan_bytes
+
+2008-11-18 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/rdfa.c: GIT commit
+ 2ddcb3f9e010d0b3d9ee546e807539be5da1b14a
+ The bug appears whenever there is a subject and predicate
+ specified on an element, but no child nodes for the object literal.
+
+ Fixes Issue#0000289 http://bugs.librdf.org/mantis/view.php?id=289
+
+2008-11-12 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_sax2.c:
+ (raptor_sax2_parse_chunk): Fixed raptor_log_error_to_handlers()
+ calls when built with expat. Fixes issue #287
+ http://bugs.librdf.org/mantis/view.php?id=287
+
+2008-11-07 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: handle empty LEX in test
+
+2008-10-13 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_internal.h, src/raptor_sax2.c:
+ (raptor_sax2_init, raptor_sax2_finish): (revert r14679, reapply
+ r14459): Reintroduce sax2_initialized counter. This time to work
+ around issues cleaning up libxml2 in case it was never initialized
+ due to a failure earlier in raptor initialization.
+
+2008-10-09 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_grddl.c:
+ (raptor_terminate_parser_grddl_common): Zero raptor_xslt_sec
+ variable after xsltFreeSecurityPrefs() to prevent double deletions
+ with multiple raptor instances in the same process.
+
+ * src/raptor_internal.h, src/raptor_sax2.c:
+ (raptor_sax2_init, raptor_sax2_finish): (Revert r14459) Removed
+ sax2_initialized counter from raptor_world. Does not serve its
+ purpose if multiple raptor_worlds used.
+
+2008-10-08 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_internal.h:
+ Revert r14677 as unnecessary
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_internal.h:
+ (raptor_world_instance): Internal function turned to an API
+ function for legacy support.
+
+2008-10-07 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor.h: Wrap raptor_world declaration to
+ RAPTOR_WORLD_DECLARED preprocessor guards.
+
+ * src/raptor_general.c: docs
+
+2008-10-06 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h: RAPTOR_DISABLE_V1 not RAPTOR_DISBALE_V1
+
+2008-10-06 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_set.c: Refactored raptor_set_test to use raptor v2
+ functions.
+
+ * src/raptor_avltree.c: Refactored raptor_avltree_test to use
+ raptor v2 functions.
+
+ * src/raptor_turtle_writer.c: Refactored raptor_turtle_writer_test
+ to use raptor v2 functions.
+
+ * src/raptor_xml_writer.c: Refactored raptor_xml_writer_test to
+ use raptor v2 functions.
+
+ * src/raptor_www_test.c: Refactored raptor_www_test to use raptor
+ v2 functions.
+
+ * src/raptor_namespace.c: Refactored raptor_namespace_test to use
+ raptor v2 functions.
+
+ * src/raptor_uri.c: Refactored raptor_uri_test to use raptor v2
+ functions.
+
+ * src/raptor_parse.c: Refactored raptor_parse_test to use raptor
+ v2 functions.
+
+ * utils/rdfdiff.c: Refactored rdfdiff to use raptor v2 APIs +
+ internals.
+
+ * src/raptor_internal.h, src/raptor_statement.c: Reorganized
+ internal raptor_statement functions.
+
+ (raptor_statement_copy): Require raptor_world param, replace
+ earlier raptor_statement_copy_common() static function.
+
+ (raptor_free_statement): Require raptor_world param, replace
+ earlier raptor_free_statement_common() static function. Loses
+ RAPTOR_DISABLE_V1 status.
+
+ (raptor_print_statement_v1): Pulled static function to library
+ internals.
+
+ * utils/rapper.c: Refactored rapper to use raptor v2 API.
+
+ * src/raptor.h, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_rss.c,
+ src/raptor_uri.c:
+ (raptor_uri_to_relative_uri_string_v2): New v2 API
+ function. raptor_uri_to_relative_uri_string() depends on V1
+ functions and cannot be used with RAPTOR_DISABLE_V1 or without
+ raptor_init().
+
+ * src/raptor_internal.h: Fixed flipped flag
+
+ * src/raptor_general.c:
+ (raptor_world_open): Fixed return type
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_internal.h,
+ src/raptor_www.c: Refactored raptor_www init/finish to support v2
+ raptor_world_instance. Retain source/binary compatibility with old
+ API.
+
+ (raptor_www_init_v2, raptor_www_finish_v2,
+ raptor_www_no_www_library_init_finish_v2): New API functions that
+ work with raptor_world objects.
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_internal.h:
+ Decouple raptor_world allocation and initialization to allow
+ setting flags etc. before init.
+
+ (raptor_world_open): New API function.
+
+ (raptor_world_s): Internal struct gains opened field.
+
+ * src/raptor.h, src/raptor_parse.c,
+ src/raptor_serialize.c:
+ (raptor_parser_get_world, raptor_serializer_get_world): Added two
+ new API functions to access raptor_world from a parser/serializer
+ object.
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_general.c,
+ src/raptor_identifier.c, src/raptor_internal.h,
+ src/raptor_iostream.c, src/raptor_locator.c,
+ src/raptor_namespace.c, src/raptor_parse.c, src/raptor_qname.c,
+ src/raptor_sequence.c, src/raptor_serialize.c,
+ src/raptor_serialize_ntriples.c, src/raptor_statement.c,
+ src/raptor_uri.c, src/raptor_www.c, src/raptor_xml_writer.c: Added
+ API flag RAPTOR_V2_AVAILABLE.
+
+ Flagged v1 functions replaced with v2 variants with RAPTOR_V1 -
+ easy to deprecate later.
+
+ Wrapped v1 functions replaced with v2 variabrs in #ifndef
+ RAPTOR_DISABLE_V1 - easy to remove old implementations if needed.
+
+ * src/fix-bison: Keep #line references up to date
+
+ * src/fix-bison, src/n3_parser.y, src/turtle_parser.y: HACK: Use
+ fix-bison to pass in pure bison parser param (rdf_parser*) to
+ %destructor - raptor_world required for raptor_free_uri_v2().
+
+ * src/raptor.h, src/raptor_serialize_ntriples.c: Refactored
+ raptor_serialize_ntriples internals to use v2 raptor_world APIs.
+
+ (raptor_iostream_write_statement_ntriples_v2): New API function
+ that takes in a raptor_world param.
+
+2008-10-03 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_grddl.c: Refactored raptor_grddl internals to use v2
+ raptor_world APIs.
+
+ * src/raptor_serialize_rss.c: Debug prints to use v2 APIs.
+
+ * src/raptor_serialize.c:
+ (raptor_serializer_register_factory): Fixed compiler warning in
+ debug print.
+
+ * src/raptor_namespace.c, src/raptor_qname.c, src/turtle_parser.y:
+ Debug prints to use v2 APIs.
+
+ * src/raptor.h, src/raptor_sequence.c:
+ (raptor_new_sequence_with_handler_context): New API function that
+ supports passing context data (e.g. raptor_world) to free_handler,
+ print_handler.
+
+ (raptor_sequence_set_print_handler_v2): New API function.
+
+ (raptor_sequence_free_handler_v2,
+ raptor_sequence_print_handler_v2): New API callback function
+ typedefs for raptor_new_sequence_with_handler_context(),
+ raptor_sequence_set_print_handler_v2().
+
+ (raptor_sequence_print_uri): Deprecated API function, should use
+ raptor_uri_print(), raptor_uri_print_v2() instead.
+
+ (raptor_free_sequence, raptor_sequence_set_at,
+ raptor_sequence_push, raptor_sequence_shift): Support
+ free_handler_v2
+
+ (raptor_sequence_print): Support print_handler_v2.
+
+ * src/raptor_expat.c:
+ (raptor_expat_init): v2 APIs
+
+ * src/raptor.h, src/raptor_iostream.c,
+ src/raptor_serialize_simple.c: Refactored raptor_iostream
+ internals to use v2 raptor_world APIs.
+
+ (raptor_iostream_write_uri_v2): New API function that takes in a
+ raptor_world param.
+
+ (raptor_simple_serialize_statement): Use
+ raptor_iostream_write_uri_v2() instead of
+ raptor_iostream_write_uri().
+
+ * utils/rdfdiff.c:
+ (long_options,title_format_string): Use const qualifier for
+ constant data.
+
+ * utils/rapper.c:
+ (long_options,title_format_string): Use const qualifier for
+ constant data.
+
+ * src/raptor_www.c: Changed raptor_www_do_www_init_finish to its
+ inverse raptor_www_skip_www_init_finish to make the flag default
+ to 0 -> moved from writable .data chunk to .bss.
+
+ * librdfa/curie.c:
+ (g_property_reserver_words,g_relrev_reserver_words): Use const
+ qualifier for constant data.
+
+2008-10-02 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_statement.c:
+ (raptor_statement_compare_v2): Fixed args to
+ raptor_statement_compare_common()
+
+ * src/raptor_statement.c:
+ (raptor_print_statement_as_ntriples_common): Added const qualifier
+ to helper prototype
+
+ * src/raptor.h, src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_rss_common.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_rss.c, src/raptor_statement.c: Refactored
+ raptor_statement internals to use v2 raptor_world APIs.
+
+ (raptor_statement_v2): New API struct for wrapping
+ raptor_statement with raptor_world without breaking source/binary
+ compatibility.
+
+ (raptor_print_statement_v2, raptor_print_statement_as_ntriples_v2,
+ raptor_statement_compare_v2): New API function variants that work
+ on raptor_statement_v2 objects.
+
+ (raptor_statement_part_as_counted_string_v2,
+ raptor_statement_part_as_string_v2): New API function variants
+ that take in raptor_world object.
+
+ (raptor_statement_copy_v2, raptor_statement_copy_v2_from_v1,
+ raptor_free_statement_v2): New internal raptor_statement_v2
+ lifecycle functions.
+
+ (raptor_print_abbrev_po): Use
+ raptor_statement_part_as_string_v2().
+
+ (raptor_new_rss_item, raptor_rss10_serialize_init,
+ raptor_rss10_move_statements,
+ raptor_rss10_move_anonymous_statements,
+ raptor_rss10_store_statement, raptor_rss10_serialize_statement,
+ raptor_rss10_build_items, raptor_rss10_emit_rdfxml_item_triples,
+ raptor_rss10_serialize_end): triples sequences are now sequences
+ of raptor_statement_v2.
+
+ (raptor_json_serialize_start, raptor_json_serialize_statement):
+ context->avltree is now a tree of raptor_statement_v2.
+
+ (raptor_statement_copy_common): (Pulled from
+ raptor_statement_copy.) Now also checks for OOM.
+
+
+ * librdfa/curie.c, librdfa/rdfa.c: Refactored librdfa raptor
+ integration internals to use v2 raptor_world APIs.
+
+2008-09-23 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_www_libfetch.c, src/raptor_www_libxml.c: Refactored
+ raptor_www_lib{fetch,xml} internals to use v2 raptor_world APIs.
+
+ * src/raptor_www_curl.c: Refactored raptor_www_curl internals to
+ use v2 raptor_world APIs.
+
+2008-09-22 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_abbrev.c, src/raptor_namespace.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_turtle.c,
+ src/raptor_xml.c: Use
+ raptor_new_qname_from_namespace_local_name_v2() instead of
+ raptor_new_qname_from_namespace_local_name()
+
+2008-09-20 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_sequence.c:
+ (raptor_sequence_set_at): Maintain sequence design contract:
+ "size" consecutive items in "sequence" starting from "start" when
+ setting items more than +1 offset beyond the end of sequence.
+
+ Fixes Issue#000276 http://bugs.librdf.org/mantis/view.php?id=276
+
+2008-09-19 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss_group_map): Internal struct gains world field, cannot
+ trust item to be valid to use item->world.
+
+ (raptor_free_group_map, raptor_rss_group_map_compare,
+ raptor_rss10_set_item_group): Use/init group_map's raptor_world.
+
+ (raptor_rss10_get_group_item): Init world field on search group
+ map allocated on stack.
+
+ * src/raptor_rss_common.c:
+ (raptor_new_rss_item): Init identifier.world as well
+
+ * src/raptor.h, src/raptor_qname.c:
+ (raptor_new_qname_from_namespace_local_name_v2): New API function
+ that takes in a raptor_world param. Passed in raptor_namespace*
+ may be NULL -> cannot use ns->world.
+
+ (raptor_qname_copy): Copy qname->world as well.
+
+ * src/raptor_serialize_json.c: Refactored raptor_serialize_json
+ internals to use v2 raptor_world APIs.
+
+ * src/raptor_serialize_dot.c: Refactored raptor_serialize_dot
+ internals to use v2 raptor_world APIs.
+
+ * src/raptor_serialize_rss.c: Refactored raptor_serialize_rss
+ internals to use v2 raptor_world APIs.
+
+ * src/raptor_serialize_turtle.c: Refactored
+ raptor_serializer_turtle internals to use v2 raptor_world APIs.
+
+ * src/raptor_serialize_rdfxmla.c: Refactored
+ raptor_serializer_rdfxmla internals to use v2 raptor_world APIs.
+
+ * src/raptor_avltree.c:
+ (raptor_new_avltree): Bugfix: set world
+ field to passed in value.
+
+ * src/raptor_abbrev.c, src/raptor_avltree.c,
+ src/raptor_internal.h, src/raptor_serialize_json.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_rss.c,
+ src/raptor_serialize_turtle.c, src/raptor_set.c: Refactored
+ raptor_abbrev, raptor_avltree internals to use v2 raptor_world
+ APIs.
+
+ (raptor_new_abbrev_node, raptor_new_avltree): Internal functions
+ changed to take in raptor_world.
+
+ (raptor_avltree_s): Moved internal struct definition to
+ raptor_internal.h. Gains world field.
+
+ (raptor_abbrev_node): Internal struct gains world field.
+
+ * src/raptor_serialize_json.c:
+ (raptor_json_serializer_start):
+ Fixed accidentally deleted base_uri declaration
+
+ * src/raptor_internal.h, src/raptor_json_writer.c,
+ src/raptor_serialize_json.c: Refactored raptor_json_writer
+ internals to use v2 raptor_world APIs.
+
+ (raptor_new_json_writer): Internal function prototype
+ changed. Require raptor_world, do not take uri handlers anymore.
+
+ * src/raptor_serialize.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_turtle_writer.c: Further
+ internals refactoring to use v2 raptor_uri functions.
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_rdfxml.c,
+ src/raptor_statement.c, src/raptor_uri.c: Further refactored
+ raptor_uri internals to use v2 raptor_world APIs.
+
+ (raptor_uri_to_relative_counted_uri_string_v2,
+ raptor_uri_print_v2, raptor_uri_to_counted_string_v2,
+ raptor_uri_to_string_v2): New API functions that take in a
+ raptor_world param.
+
+ (raptor_new_uri_from_rdf_ordinal): Changed internal function to
+ take in raptor_world.
+
+ * src/raptor_serialize_rdfxml.c: Refactored
+ raptor_serialize_rdfxml internals to use v2 raptor_world APIs.
+
+2008-09-18 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_librdfa.c: Refactored raptor_librdfa internals to use
+ v2 raptor_world APIs.
+
+ * src/raptor_guess.c: Refactored raptor_guess internals to use v2
+ raptor_world APIs.
+
+ * src/raptor_rss.c, src/raptor_rss.h, src/raptor_rss_common.c,
+ src/raptor_serialize_rss.c: Refactored raptor_rss internals to use
+ v2 raptor_world APIs.
+
+ (raptor_rss_field_s, raptor_rss_item_s, raptor_rss_model,
+ raptor_rss_element_s): Internal structs gain world field.
+
+ (raptor_new_rss_item, raptor_rss_new_field): Internal functions
+ gain world param.
+
+ * src/ntriples_parse.c: Refactored ntriples_parse internals to use
+ v2 raptor_world APIs.
+
+ * src/n3_lexer.l, src/n3_parser.y: Refactored n3_parser/n3_lexer
+ internals to use v2 raptor_world APIs.
+ FIXME: Figure out a way to pass custom args (raptor_world) to
+ %destructor.
+
+2008-09-12 Lauri Aalto <laalto@iki.fi>
+
+ * src/turtle_parser.y: Refactored turtle_parser internals to use
+ v2 raptor_world APIs.
+ FIXME: Figure out a way to pass custom args (raptor_world) to
+ %destructor.
+
+ * src/turtle_lexer.l: Refactored turtle_lexer internals to use v2
+ raptor_world APIs.
+
+ * src/n3_parser.y:
+ (FLOATING_LITERAL): missing cast
+
+ * src/raptor_sax2.c: Refactored raptor_sax2 internals to use v2
+ raptor_world APIs.
+
+ * src/raptor_www.c:
+ (raptor_www_fetch): Use raptor_new_uri_for_retrieval_v2()
+
+ * src/raptor.h, src/raptor_uri.c:
+ (raptor_new_uri_for_xmlbase_v2, raptor_new_uri_for_retrieval_v2):
+ Added new v2 API functions to replace old ones. Refactored
+ internals to use raptor v2 raptor_world APIs.
+
+ * src/raptor_rdfxml.c: Refactored raptor_rdfxml internals to use
+ v2 raptor_world APIs.
+
+ * src/raptor_rdfxml.c: Refactored raptor_rdfxml internals to use
+ v2 raptor_world APIs.
+
+ * src/raptor.h, src/raptor_uri.c:
+ (raptor_new_uri_from_id_v2): Added new API function to replace
+ raptor_new_uri_from_id(). Refactored internals to use raptor v2
+ raptor_world APIs.
+
+ * src/n3_parser.y, src/raptor_internal.h, src/raptor_xsd.c:
+ Refactored raptor_xsd internals to use v2 raptor_world APIs.
+
+ (raptor_new_identifier_from_double): Internal function prototype
+ changed.
+
+ * src/raptor_turtle_writer.c:
+ (main): Use raptor_world_instance() in test code temporarily to
+ make tests compile
+
+ * src/raptor_internal.h, src/raptor_serialize_turtle.c,
+ src/raptor_turtle_writer.c: Refactored raptor_turtle_writer
+ internals to use v2 raptor_world APIs.
+
+ (raptor_new_turtle_writer): Internal function prototype changed.
+
+ * src/raptor_set.c:
+ (main): Use raptor_world_instance() in test code temporarily to
+ make tests compile
+
+ * src/raptor_internal.h, src/raptor_rdfxml.c, src/raptor_set.c:
+ Refactored raptor_set internals to use v2 raptor_world APIs.
+
+ (raptor_new_id_set): Internal function changed to require
+ raptor_world param.
+
+ * src/raptor.h, src/raptor_xml_writer.c: Refactored
+ raptor_xml_writer internals to use v2 raptor_world APIs.
+
+ (raptor_new_xml_writer_v2): New API function that takes in a
+ raptor_world param.
+
+2008-09-10 Dave Beckett <dave@dajobe.org>
+
+ * docs/libraptor.3: extra b
+
+2008-09-10 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_rss.h:
+ (raptor_rss_namespace_info): Fix const member missing constructor
+ warning in c++ mode.
+
+ * src/raptor_internal.h, src/raptor_sax2.c:
+ (raptor_world_s, raptor_sax2_init, raptor_sax2_finish): Store
+ raptor_sax2 init counter in raptor_world. Works around resiliency
+ issues in some xml parser implementations where xmlCleanupParser()
+ crashes if xmlInitParser() has not been run.
+
+2008-09-08 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor.h, src/raptor_internal.h: Moved EXTERN_C definitions
+ to internal header - no need to expose in API.
+
+ * src/raptor.h, src/raptor_iostream.c, src/raptor_parse.c,
+ src/raptor_sequence.c, src/raptor_serialize.c, src/raptor_www.c:
+ Workaround for an armcc c++ mode issue regarding function pointers
+ as arguments: Need explicit extern "C" to get C linkage for C
+ function pointers.
+
+ * src/raptor_rdfxml.c:
+ (rdf_syntax_terms_info,rdf_content_type_info): Fixed c++ mode
+ warnings about missing const member initializers. Array data is
+ already const by the outermost const.
+
+ * src/n3_lexer.l, src/turtle_lexer.l: casts for c++
+
+2008-09-05 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_libxml.c:
+ (raptor_libxml_xmlStructuredErrorFunc): Use fputs when there is no
+ error handler.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_ensure_atom_field_zero_one): do not assign same
+ variable field while initing it.
+
+ * librdfa/rdfa.c, src/raptor_rss_common.c,
+ src/raptor_serialize_rss.c: Fixes for g++ from
+ Issue#0000270 http://bugs.librdf.org/mantis/view.php?id=270
+
+2008-09-04 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_rdfxml.c, src/raptor_rss.c, src/raptor_rss.h,
+ src/raptor_rss_common.c:
+ (raptor_rdfxml_start_element_handler,
+ raptor_rss_new_enclosure): Bugfix: Initialize world fields in
+ composed raptor_identifiers.
+
+ * src/raptor_xml.c: Refactored raptor_xml internals to use v2
+ raptor_world APIs.
+
+ * src/raptor.h, src/raptor_identifier.c: Refactored
+ raptor_identifier internals to use v2 raptor_world functions.
+
+ (raptor_new_identifier_v2): New API function that takes in
+ raptor_world param.
+
+ (raptor_identifier): API struct gains world field. BINARY
+ COMPATIBILITY BREAK: sizeof(raptor_identifier) changed. Source
+ compatibility not broken.
+
+2008-09-03 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_parse.c:
+ (raptor_parse_uri_with_connection): Use
+ raptor_www v2 functions
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_www.c:
+ Refactored raptor_www internals to use v2 raptor_world functions.
+
+ (raptor_www_new_v2, raptor_www_new_with_connection_v2): New API
+ functions that take in raptor_world param.
+
+ (raptor_www_s): Internal struct gains world param.
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_grddl.c,
+ src/raptor_internal.h, src/raptor_libxml.c, src/raptor_parse.c,
+ src/raptor_sax2.c, src/raptor_www.c: Refactored raptor logging to
+ use v2 raptor_world functions. Store world pointer to raptor_sax2,
+ raptor_error_handlers.
+
+ (raptor_error_handlers): API struct gains world field. BINARY
+ COMPATIBILITY BREAK: struct size and layout changed. (Source
+ compatibility not broken.)
+
+ (raptor_error_handlers_init_v2): New API function that takes in
+ raptor_world param.
+
+ (raptor_log_error_to_handlers, raptor_log_error_varargs,
+ raptor_log_error): Internal logging functions now require a
+ raptor_world param (may be NULL).
+
+ (raptor_sax2_s): Internal struct gains world field.
+
+ * src/raptor_rss_common.c:
+ (raptor_rss_types_info,
+ raptor_rss_fields_info): Fixed gcc warnings about missing
+ initializers.
+
+ * src/raptor_internal.h, src/raptor_qname.c:
+ (raptor_free_qname,
+ raptor_qname_copy, raptor_new_qname,
+ raptor_new_qname_from_namespace_local_name): Bugfix: qname nspace
+ field may be NULL. Store world pointer in qname struct and use it
+ instead of indirecting nspace->nstack->world.
+
+ (raptor_qname_s): Internal struct gains world field.
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_internal.h,
+ src/raptor_parse.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Refactored
+ raptor_feature internals to use v2 raptor_world functions.
+
+ (raptor_features_enumerate_v2,
+ raptor_serializer_features_enumerate_v2,
+ raptor_feature_from_uri_v2,
+ raptor_xml_writer_features_enumerate_v2): New API functions that
+ take in raptor_world param.
+
+ (raptor_features_enumerate_common,
+ raptor_turtle_writer_features_enumerate): Internal functions
+ changed to take in raptor_world param.
+
+ * src/raptor_qname.c: Refactored raptor_qname internals to use v2
+ raptor_world functions.
+
+ * src/raptor.h, src/raptor_internal.h, src/raptor_namespace.c:
+ Refactored raptor_namespace internals to use v2 raptor_world
+ functions.
+
+ (raptor_new_namespaces_v2, raptor_namespaces_init_v2): New API
+ functions that take in raptor_world param and use the uri handlers
+ defined in it.
+
+ (raptor_namespace_stack_s): Internal struct gains world field,
+ loses uri_handler, uri_context fields.
+
+2008-09-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_nfc_test.c: Update what is being ntested
+
+2008-09-02 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize.c:
+ (raptor_serializer_error_varargs,
+ raptor_serializer_warning_varargs): Use locator v2 functions
+
+ * src/raptor.h, src/raptor_locator.c: Refactored raptor_locator
+ internals to use v2 raptor_world functions.
+
+ (raptor_print_locator_v2, raptor_format_locator_v2,
+ raptor_locator_uri_v2): New API functions that take in a
+ raptor_world param.
+
+ * src/raptor_uri.c:
+ (raptor_uri_init): Use raptor_world* as
+ default uri handler context.
+
+ (raptor_default_new_uri): Refactored internals to use v2
+ raptor_world functions.
+
+ * src/raptor_serialize.c:
+ (raptor_serialize_start_to_iostream,
+ raptor_serialize_start_to_filename,
+ raptor_serialize_start_to_string,
+ raptor_serialize_start_to_file_handle, raptor_free_serializer,
+ raptor_serializer_set_feature_string): Refactored raptor_serialize
+ internals to use v2 raptor_world functions.
+
+ * src/raptor.h, src/raptor_parse.c: Refactored raptor_parse
+ internals to use v2 raptor_world functions.
+
+ (raptor_new_parser_for_content_v2): New API function that takes in
+ a raptor_world param.
+
+ (raptor_parser_register_factory, raptor_parser_factory_add_alias,
+ raptor_guess_parser_name_v2): Use RAPTOR_DEBUG instead of
+ RAPTOR_FATAL for error messaging and let caller handle the
+ error. These error conditions are really tests for
+ development-time assumptions and should surface in maintainer
+ mode (debug messages enabled).
+
+ (raptor_start_parse, raptor_free_parser, raptor_parse_file,
+ raptor_parse_file_no_net_filter, raptor_parse_uri_with_connection,
+ raptor_guess_parser_name_v2): Refactored to use v2 raptor_world
+ functions.
+
+ * src/raptor_general.c, src/raptor_www.c:
+ (raptor_new_world,
+ raptor_free_world, raptor_init, raptor_finish): Moved raptor_www
+ init/finish calls to new_world/free_world.
+
+ Added a FIXME note to raptor_www to re-engineer the init/finish API.
+
+ * src/raptor_internal.h, src/raptor_rss.c, src/raptor_rss.h,
+ src/raptor_rss_common.c, src/raptor_serialize_rss.c: Made
+ raptor_rss_{namespaces,types,fields}_info arrays const and moved
+ non-const uris/qnames to raptor_world.
+
+ (raptor_rss_namespace_info): Internal struct loses uri field.
+
+ (raptor_rss_info): Internal struct oses uri,qname fields.
+
+ (raptor_world_s): Internal struct gains
+ rss_common_initialised (from raptor_rss_common_initialised static
+ in raptor_rss_common.c); rss_namespaces_info_uris,
+ rss_types_info_uris, rss_types_info_qnames, rss_fields_info_uris,
+ rss_fields_info_qnames from
+ raptor_rss_{namespaces,types,fields}_info arrays.
+
+ (raptor_rss_item_s): Internal struct gains node_typei field for
+ indexing to uris/qnames in raptor_world.
+
+ (raptor_rss10_serializer_context): Internal struct gains world
+ field.
+
+ (raptor_rss_common_init): Require raptor_world param. Return int
+ return code. Allocate and init uri arrays in raptor_world.
+
+ (raptor_rss_common_terminate): Require raptor_world param. Free
+ allocs by raptor_rss_common_init().
+
+ (raptor_rss10_build_xml_names): Allocate and init qname arrays in
+ raptor_world. Store item type index for uri/qname access. Access
+ uris/qnames in raptor_world.
+
+ (raptor_rss10_serialize_terminate): Free qname arrays in
+ raptor_world.
+
+ (raptor_rss_model_init): Require raptor_world param.
+
+ (raptor_rss_parse_init, raptor_rss_start_element_handler,
+ raptor_rss_sax2_new_namespace_handler,
+ raptor_rss_insert_enclosure_identifiers,
+ raptor_rss_emit_enclosure, raptor_rss_emit_item, raptor_rss_emit,
+ raptor_rss10_move_statements, raptor_rss10_store_statement,
+ raptor_rss10_serialize_statement,
+ raptor_rss10_emit_atom_triples_map, raptor_rss10_emit_rss_items):
+ Access uris/qnames in raptor_world.
+
+ (raptor_rss_insert_identifiers): Store item type index for
+ uri/qname access.
+
+ (raptor_rss10_emit_item): Store item type index for uri/qname
+ access. Access uris/qnames in raptor_world.
+
+2008-09-01 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_nfc_test.c: format
+
+ * src/raptor_nfc_test.c: Make test take file as argument. Add
+ where it can be found
+
+ * librdfa/curie.c: Merge to GIT
+ 5e29c166212c61d86223d2c4aa97e67fe0655063
+
+2008-09-01 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_general.c, src/raptor_internal.h,
+ src/raptor_sax2.c:
+ (raptor_sax2_init, raptor_sax2_finish, raptor_init, raptor_finish,
+ raptor_new_world, raptor_free_world): Changed raptor_sax2
+ init/finish code to the raptor_world model. Take in (unused)
+ raptor_world param.
+
+ * src/raptor_grddl.c:
+ (raptor_init_parser_grddl_common): Fixed signature to match prototype
+
+ * src/n3_parser.y, src/raptor.h, src/raptor_general.c,
+ src/raptor_internal.h, src/raptor_namespace.c, src/raptor_uri.c,
+ src/raptor_www_test.c, src/turtle_parser.y: Moved uri_handler and
+ uri_handler_context to raptor_world.
+
+ (raptor_new_uri_v2, raptor_new_uri_from_uri_local_name_v2,
+ raptor_new_uri_relative_to_base_v2,
+ raptor_new_uri_for_rdf_concept_v2, raptor_free_uri_v2,
+ raptor_uri_equals_v2, raptor_uri_compare_v2, raptor_uri_copy_v2,
+ raptor_uri_as_string_v2, raptor_uri_as_counted_string_v2,
+ raptor_uri_set_handler_v2, raptor_uri_get_handler_v2): New API
+ functions that take in a raptor_world object.
+
+ (raptor_uri_init,main): Changed internal function to take in
+ raptor_world param. Changed test code callers to use full
+ raptor_init()/raptor_finish() instead so that the world is
+ properly set up.
+
+ FIXME: Refactor the raptor_uri opaque abstraction so that it can
+ store raptor_world* - no need to pass in world as an argument to
+ calls that take raptor_uris.
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_internal.h,
+ src/raptor_serialize.c, src/raptor_serialize_dot.c,
+ src/raptor_serialize_json.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_simple.c,
+ src/raptor_serialize_turtle.c: Moved serializers sequence to
+ raptor_world.
+
+ (raptor_serializers_enumerate_v2,
+ raptor_serializer_syntax_name_check_v2, raptor_new_serializer_v2):
+ New API function variants that accept a raptor_world object.
+
+ (raptor_serializer_s, raptor_seriazlizer_factory_s): Internal
+ structs gain world field.
+
+ (raptor_serializer_register_factory, raptor_serializers_init,
+ raptor_serializers_finish, raptor_init_serializer_*): Internal
+ functions changed to require raptor_world param.
+
+ (raptor_delete_serializer_factories): Removed unnecessary prototype.
+
+ * src/n3_parser.y, src/ntriples_parse.c, src/raptor.h,
+ src/raptor_general.c, src/raptor_grddl.c, src/raptor_guess.c,
+ src/raptor_internal.h, src/raptor_librdfa.c, src/raptor_parse.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/turtle_parser.y:
+ Introduced a raptor_world object for storing library-wide data
+ instead of static variables.
+
+ Moved parsers sequence to raptor_world.
+
+ (raptor_new_world, raptor_free_world): New API functions,
+ eventually to replace raptor_init() and raptor_finish().
+
+ (raptor_parsers_enumerate_v2, raptor_syntaxes_enumerate_v2,
+ raptor_syntax_name_check_v2, raptor_guess_parser_name_v2,
+ raptor_new_parser_v2): New API function variants that accept a
+ raptor_world object.
+
+ (raptor_parser_s, raptor_parser_factory_s): Internal structs gain
+ world field.
+
+ (raptor_parser_register_factory, raptor_parser_factory,
+ raptor_parser_get_accept_header_all, raptor_parsers_init,
+ raptor_parsers_finish, raptor_init_parser_*): Internal functions
+ changed to require raptor_world param.
+
+ (raptor_world_instance): New accessor for a static pointer to a
+ raptor_world instance created by raptor_init(). Required for
+ supporting non-v2 API functions (where v2 variants exist).
+
+2008-08-29 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_parser.y:
+ (raptor_trig_parse_recognise_syntax,
+ raptor_trig_parse_recognise_syntax): Use raptor_memstr to compare
+ a string against a buffer that may not be NUL terminated.
+ Part of fix for
+ Issue#0000269 http://bugs.librdf.org/mantis/view.php?id=269
+
+ * src/raptor_rdfxml.c:
+ (raptor_rdfxml_parse_recognise_syntax): Use
+ raptor_memstr to compare a string against a buffer that may not be
+ NUL terminated.
+ Part of fix for
+ Issue#0000269 http://bugs.librdf.org/mantis/view.php?id=269
+
+ * src/raptor_librdfa.c:
+ (raptor_librdfa_parse_recognise_syntax):
+ Use raptor_memstr to compare a string against a buffer that may
+ not be NUL terminated.
+ Part of fix for
+ Issue#0000269 http://bugs.librdf.org/mantis/view.php?id=269
+
+ * src/Makefile.am, src/raptor_memnstr.c, src/raptor_memstr.c (from
+ /raptor/trunk/src/raptor_memnstr.c:14406): Renamed
+ raptor_memnstr.c to raptor_memnstr.c
+
+ * src/raptor_internal.h, src/raptor_memnstr.c:
+ (raptor_memstr):
+ Renamed from raptor_memnstr
+
+2008-08-27 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_memnstr.c: comment
+
+ * src/raptor_memnstr.c: includes
+
+ * src/raptor_memnstr.c: internal
+
+ * src/raptor_internal.h: Added raptor_memnstr()
+
+ * src/Makefile.am: Added raptor_memnstr.c
+
+ * src/raptor_memnstr.c: Added raptor_memnstr
+
+2008-08-25 Lauri Aalto <laalto@iki.fi>
+
+ * src/fix-flex: Removed additional OOM checks added to
+ flex-generated ensure_buffer_stack(). flex versions 2.5.34 and
+ later generate the OOM checking code themselves.
+
+2008-08-24 Dave Beckett <dave@dajobe.org>
+
+ * utils/rapper.c:
+ (main): Make printing triples count at least
+ potentially localizable.
+
+ * src/raptor_uri.c: Added tests for
+ Issue#0000268 http://bugs.librdf.org/mantis/view.php?id=268
+ which pass.
+
+2008-08-20 Lauri Aalto <laalto@iki.fi>
+
+ * tests/rdfa/Makefile.am: Run tests inside set +e ... set -e
+
+2008-07-10 Lauri Aalto <laalto@iki.fi>
+
+ * src/ntriples_parse.c:
+ (raptor_ntriples_generate_statement): Cast
+ to eliminate compiler printf-like format arg warning.
+
+2008-07-04 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: Use AC_PROG_CC AM_PROG_CC_C_O
+
+2008-07-04 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_turtle_writer.c:
+ (raptor_turtle_writer_literal):
+ Validate XSD integer, decimal and double literal output. Emit
+ special short forms only if the whole literal value is consumed by
+ strtol() (for integers) or strtod() (for decimals and
+ doubles). Otherwise produce a warning and emit literal in the
+ normal "value"^^<datatype_uri> format.
+ Fixes Issue #0000263 http://bugs.librdf.org/mantis/view.php?id=263
+
+2008-07-03 Dave Beckett <dave@dajobe.org>
+
+ * NEWS.html, RELEASE.html, configure.ac,
+ src/win32_raptor_config.h: Bumped version to 1.4.19
+
+ * docs: props
+
+2008-07-02 Dave Beckett <dave@dajobe.org>
+
+ * docs/libraptor.3: 2008
+
+2008-07-02 Lauri Aalto <laalto@iki.fi>
+
+ * src/ntriples_parse.c:
+ (raptor_ntriples_generate_statement):
+ Produce error messages when raptor_new_uri() fails.
+ Fixes Issue #0000262 http://bugs.librdf.org/mantis/view.php?id=262
+
+2008-06-29 Dave Beckett <dave@dajobe.org>
+
+ * tests/feeds/Makefile: fix
+
+ * tests/feeds/Makefile, tests/feeds/atom.rnc,
+ tests/feeds/atom.rng, tests/feeds/test01.atom,
+ tests/feeds/test01.rss, tests/feeds/test02.atom,
+ tests/feeds/test02.rss, tests/feeds/test03.atom,
+ tests/feeds/test03.rss: Feed examples
+
+ * tests/feeds: Add feeds
+
+2008-06-25 Dave Beckett <dave@dajobe.org>
+
+ * Snapshotted raptor_1_4_18 for 1.4.18 release (SVN 14104)
+
+2008-06-23 Dave Beckett <dave@dajobe.org>
+
+ * docs/Makefile.am, utils/Makefile.am: Use $(PERL) not perl
+
+2008-06-20 Dave Beckett <dave@dajobe.org>
+
+ * README.html, RELEASE.html, docs/raptor-parsers.xml,
+ utils/rapper.1: Update RDFa pointers to
+ http://www.w3.org/TR/2008/CR-rdfa-syntax-20080620/ caniddate rec
+
+ * src/raptor_sequence.c:
+ (raptor_sequence_set_at): Correct
+ counting when there is old data but no free handler.
+
+ * tests/rdfa/0011.out, tests/rdfa/0092.out, tests/rdfa/0094.out,
+ tests/rdfa/0099.xhtml, tests/rdfa/0100.out, tests/rdfa/0100.xhtml,
+ tests/rdfa/0101.out, tests/rdfa/0101.xhtml, tests/rdfa/0102.out,
+ tests/rdfa/0102.xhtml, tests/rdfa/0103.out, tests/rdfa/0103.xhtml,
+ tests/rdfa/0104.xhtml, tests/rdfa/0105.out, tests/rdfa/0105.xhtml,
+ tests/rdfa/0106.out, tests/rdfa/0106.xhtml, tests/rdfa/0107.out,
+ tests/rdfa/0107.xhtml, tests/rdfa/0110.out, tests/rdfa/0110.xhtml,
+ tests/rdfa/0111.out, tests/rdfa/0111.xhtml, tests/rdfa/0112.out,
+ tests/rdfa/0112.xhtml, tests/rdfa/Makefile.am: Update approved
+ tests from
+ http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/ as
+ of now
+
+2008-06-19 Dave Beckett <dave@dajobe.org>
+
+ * docs/libraptor.3: Added raptor_serialize_start_to_iostream for
+ 1.4.18
+
+ * docs/raptor-tutorial-serializing.xml: xml
+
+ * docs/raptor-tutorial-serializing.xml: Explain
+ raptor_serialize_start and raptor_serialize_start_to_iostream,
+ recommending the latter.
+
+ * docs/Makefile.am: Call gtkdoc-scan with
+ --deprecated-guards="RAPTOR_DISABLE_DEPRECATED"
+
+ * src/ntriples_parse.c, src/raptor.h, src/raptor_iostream.c,
+ src/raptor_statement.c, src/raptor_turtle_writer.c,
+ src/raptor_uri.c: Use RAPTOR_DISABLE_DEPRECATED macro to wrap
+ disabling deprecated functions and prototypes
+
+ * docs/tmpl/section-feature.sgml, docs/tmpl/section-serializer.sgml: docs tmp
+
+ * src/raptor_iostream.c: typo
+
+ * docs/raptor-sections.txt: Added raptor_serialize_start_to_iostream
+
+ * src/raptor_serialize.c:
+ (raptor_serialize_set_namespace): Allow
+ "" as a synonym for NULL prefix.
+
+2008-06-18 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_item): Use
+ _:author for atom author bnode always since atom:author may not be
+ a valid bnode ID.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_ensure_atom_field_zero_one): Added.
+ (raptor_rss10_ensure_atom_feed_valid): Use
+ raptor_rss10_ensure_atom_field_zero_one to ensure that fields
+ appear 0 or 1 times for atom feed and entry.
+
+2008-06-15 Dave Beckett <dave@dajobe.org>
+
+ * docs/rdfserialize.c: Casts for C++
+
+ * librdfa/rdfa.c: GIT commit 8892f4056d9486d7bdd0cc89fe12b3a863a4d418
+ (rdfa_free_context): rewrite
+ rdfa_free_list(context->context_stack) call to look and do a
+ proper rdfa_free_context() on each returned item that is not
+ ourself. Still leaks one malloc but does not crash parser on error.
+
+ * src/raptor_librdfa.c:
+ (raptor_librdfa_parse_start): Init librdfa
+ context->error_handlers from static field in raptor_parser
+ structure so that error handlers are passed correctly to librdfa
+ and raptor_sax2
+
+ * librdfa/rdfa.c, librdfa/rdfa.h: GIT commit
+ 1a4f7d0352017cf6d55ecbcf7d355badb0c777f9. Do not make a new
+ error_handlers structure for the rdfa context, use the one passed
+ in from the top-level rdfacontext, set by raptor as error_handlers
+ static in the raptor_parser structure
+
+ * src/raptor_serialize_dot.c:
+ (raptor_dot_serializer_new_node):
+ Return NULL [sparse]
+
+ * src/raptor_rdfxml.c:
+ (raptor_rdfxml_start_element_grammar): Call
+ raptor_rdfxml_process_property_attributes with NULL not 0 [sparse]
+
+ * src/raptor_grddl.c: match_table: Use NULL for pointer in
+ sentinal. [sparse]
+
+ * src/raptor_abbrev.c:
+ (raptor_new_abbrev_node): Return NULL [sparse]
+
+ * src/raptor_rss.h: raptor_rss_field bitfields should be
+ unsigned [sparse]
+
+ * src/raptor_sax2.c: #ifdef RAPTOR_XML_EXPAT
+
+ * src/raptor_rdfxml.c: #ifdef RAPTOR_DEBUG_VERBOSE
+
+ * src/raptor_nfc_test.c: casts
+
+ * configure.ac, src/raptor_nfc.h: Use autoconf 2.5.x
+ AC_CHECK_TYPES for u8 and u16
+
+2008-06-14 Dave Beckett <dave@dajobe.org>
+
+ * utils/rapper.c: fix comment
+
+ * utils/rapper.c: Fix HELP_ARG_BOTH quoting as used in help message.
+
+2008-06-13 Dave Beckett <dave@dajobe.org>
+
+ * examples/raptor_abort.c, examples/rdfserialize.c: Casts for C++
+
+ * src/raptor_serialize_rss.c: Casts to remove warnings when
+ compiling with C++
+
+ * librdfa/curie.c, librdfa/rdfa.c, librdfa/rdfa_utils.c,
+ librdfa/triple.c: GIT commit
+ aefb63f96141d64e1a9f5845600feebac6aefa45
+ librdfa casts to remove warnings when compiling with C++
+
+ * src/n3_common.h, src/ntriples_parse.c, src/raptor_expat.c,
+ src/raptor_grddl.c, src/raptor_guess.c, src/raptor_librdfa.c,
+ src/raptor_libxml.c, src/raptor_locator.c, src/raptor_nfc.c,
+ src/raptor_nfc.h, src/raptor_nfc_test.c, src/raptor_rfc2396.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_json.c,
+ src/raptor_serialize_ntriples.c, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_simple.c, src/raptor_utf8.c,
+ src/raptor_win32.c, src/raptor_www.c, src/raptor_www_curl.c,
+ src/raptor_www_libfetch.c, src/raptor_www_libxml.c,
+ src/raptor_www_test.c, src/raptor_xsd.c, src/turtle_common.c,
+ src/turtle_common.h: 2008
+
+ * utils/rapper.c: Tidy variables into parser, serializer, other
+ blocks. Output <stdin> in error, info messages when filename is
+ NULL
+
+ * src/raptor_sequence.c:
+ (raptor_sequence_set_at): Tidy tortured test.
+
+ * src/raptor_sequence.c:
+ (raptor_sequence_set_at): Update size
+ when not over-writing an existing item.
+
+2008-06-12 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_move_leftover_statements): Added to move any
+ remaining triples after initial serialize_statement scan, to items
+ or channel.
+ (raptor_rss10_serialize_end): Call
+ raptor_rss10_move_leftover_statements.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_statement):
+ Use correct URI for rss:items with new macro
+ RAPTOR_RSS_RSS_items_URI replacing RAPTOR_RSS_RDF_items_URI
+
+ * src/raptor_rss_common.c:
+ (raptor_rss_model_init): Init
+ RAPTOR_RSS_RSS_items_URI against rss:
+ (rss 1.0) namespace, not
+ rdf:
+
+ * src/raptor_rss.h: RAPTOR_RSS_RDF_items_URI renamed to
+ RAPTOR_RSS_RSS_items_URI since it is in the rss:
+ (rss 1.0)
+ namespace
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_rdfxml_item_triples):
+ Use raptor_serialize_start_to_iostream() with no destroying
+ iostream instead of raptor_serialize_start().
+
+ * src/raptor.h: Added raptor_serialize_start_to_iostream prototype
+
+ * src/raptor_serialize.c:
+ (raptor_serialize_start_to_iostream):
+ Added to have the new semantics of not owning and destroying the
+ passed-in iostream
+
+ * tests/rdfa/Makefile.am: 0094.xhtml fails now
+
+ * librdfa/rdfa.c: GIT commit
+ c2ca66384c2e201023e0ca7cb4d9e38450459c93
+ (rdfa_parse_end): Ensure rdfa_pop_item() is called when in raptor
+ too
+
+ * librdfa/rdfa.c: GIT commit
+ 346046a980aee3ed84f69f482a74f95e2414c267
+ (start_element): Sort namespaces by prefix and hide overriden ones
+
+2008-06-10 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/rdfa.c, librdfa/rdfa.h: Merge to GIT
+ fd8d211db142e14007ea6b3ac3eab090adf0a793
+
+ * librdfa/curie.c, librdfa/rdfa.c, librdfa/rdfa.h,
+ librdfa/rdfa_utils.c, librdfa/rdfa_utils.h, librdfa/triple.c:
+ Merge to GIT a119a5ea0f215ec6036e79de30bb1131d9ca5647
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_statement):
+ correct docs
+
+ * src/raptor_avltree.c:
+ (main): Do not call an internal debug
+ function raptor_avltree_print() in unit testing.
+
+ * src/raptor_sequence.c:
+ (main): Remove test for preventing
+ raptor_sequence_set_at() at size+1; this is now allowed.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_statement):
+ Ignore any triple with predicate rss:items as it can be infered
+ later for RSS 1.0 and ignore for Atom 1.0
+
+ * src/raptor_rss.h, src/raptor_rss_common.c: Added rss:items to
+ raptor_rss_model concepts with macro RAPTOR_RSS_RDF_items_URI
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_build_items): Skip
+ triples that have no URI value.
+
+ * src/raptor_sequence.c:
+ (raptor_sequence_set_at): Handle
+ extending the sequence beyond capacity+1
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_move_statements):
+ Handled anonymous triples twice and the handled flag did not help
+ - removed. Improved the logic to clearly 'continue' loop when a
+ triple is handled; added comments to say why. Changed signature
+ to return number of triples used, not presently used by callers.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_build_xml_names): Off
+ by 1 in declaring user namespaces.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_set_xml_writer): Free any namespaces
+ declared on the old stack, before freeing the stack.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_terminate):
+ Free all allocated namespaces now it doesn't crash things.
+
+ * src/raptor_serialize_rss.c: Ensure namespaces are freed before
+ the stack they are associated with, so that URI destructor handler
+ calls work.
+ (raptor_rss10_serialize_init, raptor_rss10_serialize_terminate):
+ Add raptor_free_namespace to user_namespaces sequence and call it
+ early.
+ (raptor_rss10_serialize_end): Do not free namespace stack here, as
+ it refers to namespaces that are still alive.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_build_items): Make a
+ fake triple subject URI for comparison with seq node ID.
+
+2008-06-09 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-parsers.xml: Added RDFa parser
+
+ * docs/raptor-serializers.xml: rss 1.0 and atom 1.0 serializer notes
+
+2008-06-05 Dave Beckett <dave@dajobe.org>
+
+ * utils/rapper.c: update the parser/serializer name length to 14
+ for 'rss-tag-soup' & 'json-triples' which are at the previous max
+ 12
+
+ * configure.ac: enable atom serializer for everyone
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_atom_triples_map,
+ raptor_rss10_emit_atom_feed): Adjust
+ raptor_rss10_emit_atom_triples_map calling convention to add
+ element name and code tidy.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_atom_triples_map):
+ Added, pulled out of raptor_rss10_emit_atom_feed. Skip maps that
+ do not apply to feed element.
+ (raptor_rss10_emit_atom_feed): Call above twice, to generate
+ at:feedmap and at:entrymap.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_move_statements,
+ raptor_rss10_store_statement): Set is_xml field when field is
+ content:encoded
+ (raptor_rss10_emit_item): Select rdf:parseType="Literal" for rss
+ output with XML valued literals but prefer CDATA block for
+ content:encoded.
+
+2008-06-04 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c:
+ Make rdfxml and rdfxml-abbrev serializers respect feature
+ writeBaseURI.
+
+ * src/raptor_feature.c: Adjust RAPTOR_FEATURE_WRITE_BASE_URI description
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_end):
+ Respect feature writeBaseURI
+
+ * src/raptor_serialize_rss.c: raptor_rss10_serializer_context
+ gains xml_literal_dt URI field.
+ (raptor_rss10_serialize_init, raptor_rss10_serialize_terminate):
+ Free xml_literal_dt field.
+ (raptor_rss10_move_statements, raptor_rss10_store_statement): Set
+ is_xml field when an XML literal.
+ (raptor_rss10_emit_atom_feed, raptor_rss10_emit_rss_items): Emit
+ relative URIs.
+ (raptor_rss10_ensure_atom_feed_valid): Set atom:id if not present,
+ to item URI.
+ (raptor_rss10_emit_item): Emit relative URIs except for atom:id
+ For atom:content with a URI value, write <atom:content src="{uri
+ value}" type="{type}" /> and take the type from at:contentType
+ When writing a literal value and it is xml, write an atom type='xhtml'.
+
+ * src/raptor_rss.h, src/raptor_rss_common.c: raptor_rss_field
+ gains is_xml field. Added at:contentType /
+ RAPTOR_RSS_FIELD_AT_CONTENT_TYPE field
+
+ * src/raptor_uri.c:
+ (raptor_uri_to_relative_counted_uri_string):
+ Add support for a base URI with scheme and authority but no path,
+ so the result can be a relative URI starting with '/'.
+ (main): Add a test for the above
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_build_xml_names): Tidy
+ is_atom/not code.
+
+2008-06-04 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_rss.c: Fixed warnings.
+ (raptor_rss10_emit_rdfxml_item_triples, raptor_rss10_serialize_end):
+ Init variables to NULL for some optimizing compilers that warn
+ about possible use-before-init.
+ (raptor_rss10_emit_item): Cast int to enum.
+
+2008-06-04 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_build_xml_names): Add
+ is_entry flag and use it to decide root name atom:feed or
+ atom:entry for atom serializer.
+ (raptor_rss10_serialize_end): When a feature atom_entry_uri is
+ set, look for a matching item and if found, emit just that as an
+ atom entry document.
+
+2008-06-03 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss_common.c:
+ (raptor_rss_set_date_field): cast
+
+2008-06-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_internal.h,
+ src/raptor_parse.c, src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Added
+ RAPTOR_FEATURE_ATOM_ENTRY_URI to set the Atom Entry document URI
+ for the atom serializer
+
+2008-05-29 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_rdfxml_item_triples): Remove rdf-xml
+ atom:content for; it's not used.
+ Check for 0 triples and end if nothing to emit.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_ensure_atom_feed_valid): !
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_ensure_atom_feed_valid): Remove any atom:content or
+ atom:summary in feed
+
+ * src/raptor_rss_common.c: raptor_atom_to_rss: rss:description
+ maps to atom:summary
+
+ * tests/rdfa/Makefile.am: 0058 now passes and the others pass if
+ you re-order the xml namespaces
+
+ * src/raptor_serialize_rss.c: ws
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_ensure_atom_items_valid):
+ Added to check and correct atom id, title, updated and link OR
+ content.
+ (raptor_rss10_emit_item): Handle atom:link being written as
+ <atom:link href="{uri}" rel="alternate"> - no choice for now on
+ rel.
+ (raptor_rss10_serialize_end): Call
+ raptor_rss10_ensure_atom_items_valid
+
+ * src/raptor_xml_writer.c:
+ (raptor_xml_writer_start_element_common):
+ Renamed from raptor_iostream_write_xml_element_start. Add
+ indenting of xml namespace declaration attributes when auto
+ indenting is on and there are more than 1.
+ (raptor_xml_writer_end_element_common): Renamed from
+ raptor_iostream_write_xml_element_end
+ (raptor_xml_writer_empty_element, raptor_xml_writer_start_element,
+ raptor_xml_writer_end_element): Update to use new names.
+
+ * src/raptor_xml_writer.c:
+ (raptor_iostream_write_xml_element_start):
+ Remove all args that can be found in xml_writer.
+ (raptor_xml_writer_empty_element,
+ raptor_xml_writer_start_element): Update to use new
+ raptor_iostream_write_xml_element_start
+
+ * src/raptor_rss.h, src/raptor_rss_common.c: Added
+ raptor_rss_format_iso_date and raptor_rss_set_date_field.
+ (raptor_rss_date_uplift): Use above
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_item): Generate
+ bnode for author if not present.
+
+ * librdfa/rdfa.c, librdfa/subject.c: Merge with GIT
+ 8adf69fff952d069e4f6da472d9d8e0acf8fea28 that fixes test case
+ #0058
+
+ * src/raptor_serialize_rss.c: Get atom author blank node ID from
+ atom:author string value.
+
+2008-05-28 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.h: Re-order atom fields so that required ones are
+ generated first when going in sequential field order.
+
+ * src/raptor_rss_common.c, src/raptor_serialize_rss.c: Re-order
+ atom fields so that required ones are generated first when going
+ in sequential field order.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_terminate):
+ Comment out raptor_free_namespace calls - crashes worse than leaks
+ for now.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_atom_feed): Use
+ atom_namespace not default for 'link'.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_rdfxml_item_triples):
+ use at:md not atom:md
+
+ * docs/tmpl/section-xml-qname.sgml, docs/tmpl/section-xml.sgml:
+ added raptor_xml_writer_flush raptor_xml_writer_newline to
+ templates.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_serialize_init): Init
+ namespaces with error reporting.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_rdfxml_item_triples):
+ Fix root_qname double free
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_rss_items): Set
+ xml-writer
+ (raptor_rss10_emit_rdfxml_item_triples): Added, pulled rdf/xml
+ block writing out of raptor_rss10_emit_item. Validate you can only
+ use rdf-xml with rss-1.0 serializer and atom-triples with atom
+ serializer.
+ (raptor_rss10_emit_item): Call raptor_rss10_emit_rdfxml_item_triples
+
+ * src/raptor_rss_common.c: Turn dc:date into atom:updated
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_atom_feed): Add
+ <link href="{uri}" rel="self" />
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_rss_items):
+ Added, pulled RSS 1.0-specific channel XML out of raptor_rss10_emit_item
+ (raptor_rss10_emit_item): Call raptor_rss10_emit_rss_items for RSS
+ 1.0 rdf:Seq and rss:items
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_atom_feed):
+ Added, pulled atom-specific entry fields out of raptor_rss10_emit_item
+ (raptor_rss10_emit_item): Call raptor_rss10_emit_item for atom and
+ channel: atom feed.
+
+ * src/raptor_xml.c:
+ (raptor_xml_element_set_attributes): note
+ @attributes become owned
+
+ * src/raptor_serialize_rss.c: RSS 1.0 / Atom serializers now
+ support user namespace declarations
+ raptor_rss10_serializer_context gains user_namespaces
+ (raptor_rss10_serialize_init): Init user_namespaces
+ (raptor_rss10_serialize_declare_namespace,
+ raptor_rss10_serialize_declare_namespace_from_namespace): Added.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_item): Added
+ at:entrymap and at:map in the atom fee when
+ rssTriples=atom-triples.
+
+2008-05-27 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.h: Update ATOMTRIPLES_NAMESPACE_URI
+
+ * librdfa/curie.c:
+ (rdfa_resolve_curie): Protect strtok_r with
+ NULL string from using a NULL wcptr.
+
+2008-05-26 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-sections.txt: Added raptor_qname_to_counted_name,
+ raptor_xml_writer_flush and raptor_xml_writer_newline
+
+ * tests/rdfa/Makefile.am: Update failures to remove those now passing:
+ + 0092: expected XML result corrected
+ + 0094: expected XML result corrected
+
+ * tests/rdfa/0011.out, tests/rdfa/0092.out, tests/rdfa/0094.out,
+ tests/rdfa/0100.out, tests/rdfa/0101.out, tests/rdfa/0102.out,
+ tests/rdfa/0103.out, tests/rdfa/Makefile.am: update xml results
+
+ * librdfa/rdfa.c:
+ (start_element): Reverse raptor stack namespace
+ order to match that which librdfa uses. GIT
+ 46929dc0822aa55553d61df5127b2695b8c7acf8
+
+ * tests/rdfa/Makefile.am: Update failures to remove those now passing:
+ + 0042: no triples is correct; expected result corrected
+ + 0052: expected result corrected
+ + 0053: expected result corrected
+ + 0091: fixed
+ 0058 still wrong; sparql test case is inadequate
+
+ * src/raptor.h: Added prototype for raptor_qname_to_counted_name
+
+ * src/raptor_qname.c:
+ (raptor_qname_to_counted_name): Added.
+
+ * librdfa/rdfa.c:
+ (start_element): Walk raptor namespace stack to
+ figure out xml literal ns declarations.
+ (raptor_rdfa_start_element, raptor_rdfa_end_element): Pass in
+ qname string. GIT c1313ac3de0dee9903e7b132cb4626708f3df257
+
+ * tests/rdfa/0053.out: Update test result for 0053 to correct
+ subject for first triple
+
+ * tests/rdfa/0083.xhtml, tests/rdfa/0102.xhtml: Update inputs for
+ tests 0083 0102
+
+ * tests/rdfa/0052.out: Update test result for 0052 to correct
+ subject
+
+ * tests/rdfa/0042.out: Update test result for 0042 to expect no
+ triples
+
+ * tests/rdfa/0011.out, tests/rdfa/0092.out, tests/rdfa/0094.out:
+ Update test results for 0011 0092 0094 to use xmlns with double
+ quotes
+
+ * librdfa/rdfa.c:
+ (start_element): set xml_lang variable when
+ inside raptor GIT aeac34493258ecf53374b6cbda5eec03f10b841e
+
+ * librdfa/triple.c:
+ (rdfa_free_triple): Free triple. GIT
+ a64e1f00a53d6858a818156a9115d10b7ecec036
+
+2008-05-25 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/curie.c, librdfa/rdfa.c, librdfa/rdfa.h,
+ librdfa/rdfa_utils.c, librdfa/rdfa_utils.h, librdfa/triple.c:
+ Merge to GIT f82c0941956254847e8d51654759b2b45dc00088
+
+ * tests/rdfa/Makefile.am: Update expected test failures to add new
+ approved & failing tests:
+ 0042.xhtml 0088.xhtml 0091.xhtml 0092.xhtml 0093.xhtml 0094.xhtml
+ 0100.xhtml 0101.xhtml 0102.xhtml 0103.xhtml
+ Add triple counts to failure message
+
+ * tests/rdfa/0017.out, tests/rdfa/0017.xhtml, tests/rdfa/0039.out,
+ tests/rdfa/0039.xhtml, tests/rdfa/0040.out, tests/rdfa/0040.xhtml,
+ tests/rdfa/0042.out, tests/rdfa/0042.xhtml, tests/rdfa/0085.out,
+ tests/rdfa/0085.xhtml, tests/rdfa/0088.out, tests/rdfa/0088.xhtml,
+ tests/rdfa/0091.out, tests/rdfa/0091.xhtml, tests/rdfa/0092.out,
+ tests/rdfa/0092.xhtml, tests/rdfa/0093.out, tests/rdfa/0093.xhtml,
+ tests/rdfa/0094.out, tests/rdfa/0094.xhtml, tests/rdfa/0099.out,
+ tests/rdfa/0099.xhtml, tests/rdfa/0100.out, tests/rdfa/0100.xhtml,
+ tests/rdfa/0101.out, tests/rdfa/0101.xhtml, tests/rdfa/0102.out,
+ tests/rdfa/0102.xhtml, tests/rdfa/0103.out, tests/rdfa/0103.xhtml,
+ tests/rdfa/0104.out, tests/rdfa/0104.xhtml, tests/rdfa/0107.out,
+ tests/rdfa/0107.xhtml, tests/rdfa/0108.out, tests/rdfa/0108.xhtml,
+ tests/rdfa/0109.out, tests/rdfa/0109.xhtml,
+ tests/rdfa/Makefile.am: Added RDFa approved tests
+ 0017 0039 0040 0042 0085 0088 0091 0092 0093 0094 0099 0100 0101 0102
+ 0103 0104 0107 0108 0109
+ where approved tests are given by the SPARQL:
+ BASE <http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/>
+ PREFIX : <http://www.w3.org/2006/03/test-description#>
+ SELECT ?test
+ FROM <rdfa-xhtml1-test-manifest.rdf>
+ WHERE { ?test :reviewStatus :approved }
+ and
+ http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/rdfa-xhtml1-test-manifest.rdf
+ Last-Modified: Mon, 19 May 2008 10:47:38 GMT
+
+2008-05-24 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-feature.sgml, docs/tmpl/section-triples.sgml:
+ update docs
+
+ * librdfa/rdfa.c:
+ (rdfa_free_context): Revert change in GIT
+ d0f2401a9b914f70fff262be602fe92cf5a2e93e. Memory leak remains
+
+ * src/raptor_librdfa.c:
+ (raptor_librdfa_parse_start): Free any old
+ context.
+ (raptor_librdfa_parse_terminate): Free context.
+
+ * librdfa/rdfa.c: Declare rdfa_init_context as static since it is
+ only used in rdfa.c. GIT 71dd65d38f70120a205abf73e0cf8fd0bf6f0f27
+
+ * librdfa/rdfa.c:
+ (rdfa_free_context): Free context_stack and
+ remove TODO. GIT d0f2401a9b914f70fff262be602fe92cf5a2e93e
+
+ * librdfa/triple.c:
+ (rdfa_free_triple): free triple. GIT
+ 402f883bfc2d7157eb6f13018ad141450ed47944
+
+ * src/raptor_librdfa.c: include rdfa_utils.h
+
+ * src/raptor_librdfa.c:
+ (raptor_librdfa_generate_statement): free
+ incoming triple
+
+2008-05-22 Lauri Aalto <laalto@iki.fi>
+
+ * src/n3_lexer.l, src/turtle_lexer.l: Fixed n3/turtle lexer error
+ handling. Do not report OOM for failed function calls that can
+ fail for other reasons besides OOM, e.g. qname expansion fails due
+ to undeclared prefix.
+
+2008-05-21 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rdfxml.c, src/raptor_serialize_rdfxml.c,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_rss.c: Use
+ raptor_xml_writer_flush for xml writer
+
+ * src/raptor.h: Added prototypes for raptor_xml_writer_newline
+ and raptor_xml_writer_flush
+
+ * src/raptor_xml_writer.c: raptor_xml_writer gains pending_newline
+ flag
+ (raptor_xml_writer_indent): Handle pending_newline feature as well
+ as indenting.
+ (raptor_xml_writer_empty_element, raptor_xml_writer_start_element,
+ raptor_xml_writer_end_element): Call indent if pending_newline.
+ (raptor_xml_writer_newline): Added.
+ (raptor_xml_writer_flush): Added to tidy up at the end of an XML
+ writer.
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_move_statements,
+ raptor_rss10_store_statement, ): Set is_mapped when going from rss
+ to atom fields.
+ (raptor_rss10_remove_mapped_item_fields,
+ raptor_rss10_remove_mapped_fields): Added to delete field values
+ that were mapped when there is an non-mapped value.
+ (raptor_rss10_serialize_end): Call
+ raptor_rss10_remove_mapped_fields for atom.
+
+ * src/raptor_rss.c:
+ (raptor_rss_uplift_fields): Set is_mapped when
+ uplifting
+
+ * src/raptor_rss.h: raptor_rss_field gains is_mapped field
+
+2008-05-19 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_internal.h, src/raptor_rss.h,
+ src/raptor_rss_common.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c: Added grouping of triples by
+ key (uri/fakeuri(bnode)) to item using an avltree of
+ raptor_rss_group_map
+ (raptor_free_group_map, raptor_rss_group_map_compare,
+ raptor_rss10_get_group_item, raptor_rss10_set_item_group): Added.
+ (raptor_rss10_serialize_init, raptor_rss10_serialize_terminate):
+ init / free group_map avl tree
+ (raptor_rss10_move_statements): If a statement object is
+ anonymous, move it to the item triples, do not search for a field.
+ Do not move any other fields with anonymous objects.
+ (raptor_rss10_move_anonymous_statements): Added to move blank node
+ closure triples to their item.
+ (raptor_rss10_store_statement): Use avl tree to find an item for a
+ triple
+ (raptor_rss10_serialize_statement): Do not discard blank nodes on
+ input. Set blank node/URI to item mapping.
+ (raptor_rss10_emit_item): Emit different triple block elements,
+ attributes only for atom;content
+ (raptor_rss10_serialize_end): Call
+ raptor_rss10_move_anonymous_statements
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_internal.h,
+ src/raptor_serialize_rdfxmla.c, src/raptor_turtle_writer.c: 2008
+
+ * src/raptor_feature.c: RAPTOR_FEATURE_RSS_TRIPLES label shorter
+
+ * src/raptor_serialize_rss.c: raptor_rss10_serializer_context
+ gains rss_triples_mode
+ (raptor_rss10_serialize_start): Added to set rss_triples_mode from
+ feature_rss_triples. 1 is "rdf-xml" value, 2 is "atom-triples"
+ (raptor_rss10_emit_item): Emit triples when enabled by feature
+ Remove node elements, typed nodes and emit a single node for rss
+ triples mode 2
+ (raptor_rss10_serializer_register_factory): Init
+ raptor_rss10_serialize_start
+
+ * src/raptor_serialize_rdfxmla.c: raptor_rdfxmla_context gains
+ fields single_node, write_node_elements, write_typed_nodes
+ (raptor_rdfxmla_emit_resource_uri): Added.
+ (raptor_rdfxmla_emit_resource): Use
+ raptor_rdfxmla_emit_resource_uri
+ (raptor_rdfxmla_emit_subject_properties): Use write_typed_nodes
+ flag to write rdf:type <subject node type URI> property element.
+ (raptor_rdfxmla_emit_subject): Handle write_typed_nodes to skip
+ typed node element. Handle write_node_elements flag.
+ (raptor_rdfxmla_emit): Do not emit any top-level blank nodes if
+ single_node is set.
+ (raptor_rdfxmla_serialize_init): Init defaults for
+ write_node_elements and write_typed_nodes: true/1.
+ (raptor_rdfxmla_serialize_set_write_rdf_RDF,
+ raptor_rdfxmla_serialize_set_xml_writer): autodocs
+ (raptor_rdfxmla_serialize_set_single_node,
+ raptor_rdfxmla_serialize_set_write_node_elements,
+ raptor_rdfxmla_serialize_set_write_typed_nodes): Added to set
+ internal flags.
+ (raptor_rdfxmla_serialize_end): Free single node URI if present.
+
+ * src/raptor_internal.h: raptor_serializer_s gains feature_rss_triples
+ Added prototypes for raptor_rdfxmla_serialize_set_single_node,
+ raptor_rdfxmla_serialize_set_write_node_elements and
+ raptor_rdfxmla_serialize_set_write_typed_nodes
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_parse.c,
+ src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_xml_writer.c: Added feature
+ rss_triples (RAPTOR_FEATURE_RSS_TRIPLES) for rss-1.0/atom serializers
+
+2008-05-18 Lauri Aalto <laalto@iki.fi>
+
+ * tests/rdfa: props
+
+2008-05-17 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/rdfa.c, librdfa/rdfa_utils.h, librdfa/subject.c: Update
+ to GIT 402f883bfc2d7157eb6f13018ad141450ed47944
+
+2008-05-15 Dave Beckett <dave@dajobe.org>
+
+ * librdfa/rdfa.h: Remove uri_mappings field if LIBRDFA_IN_RAPTOR is defined
+
+ * docs/tmpl/section-sequence.sgml, docs/tmpl/section-triples.sgml,
+ docs/tmpl/section-xml.sgml: gtk docs
+
+ * src/raptor_xml_writer.c: autodocs
+
+ * src/raptor_avltree.c: de-autodoc internal functions
+
+ * docs/raptor-sections.txt: Added raptor_sequence_delete_at and
+ raptor_xml_writer_get_depth
+
+ * librdfa/rdfa.c: Do not call rdfa_update_uri_mappings with
+ LIBRDFA_IN_RAPTOR
+
+ * tests/rdfa/0060.out, tests/rdfa/Makefile.am: Fix 0060.out to
+ make 4 tests expected to fail
+
+ * tests/rdfa/Makefile.am: annotate expected test failures
+
+ * tests/rdfa/Makefile.am: Expect failures: 0011.xhtml 0052.xhtml
+ 0053.xhtml 0058.xhtml 0060.xhtml
+
+ * configure.ac, tests/Makefile.am, tests/rdfa,
+ tests/rdfa/0001.out, tests/rdfa/0001.xhtml, tests/rdfa/0006.out,
+ tests/rdfa/0006.xhtml, tests/rdfa/0007.out, tests/rdfa/0007.xhtml,
+ tests/rdfa/0008.out, tests/rdfa/0008.xhtml, tests/rdfa/0009.out,
+ tests/rdfa/0009.xhtml, tests/rdfa/0010.out, tests/rdfa/0010.xhtml,
+ tests/rdfa/0011.out, tests/rdfa/0011.xhtml, tests/rdfa/0012.out,
+ tests/rdfa/0012.xhtml, tests/rdfa/0013.out, tests/rdfa/0013.xhtml,
+ tests/rdfa/0014.out, tests/rdfa/0014.xhtml, tests/rdfa/0015.out,
+ tests/rdfa/0015.xhtml, tests/rdfa/0018.out, tests/rdfa/0018.xhtml,
+ tests/rdfa/0019.out, tests/rdfa/0019.xhtml, tests/rdfa/0020.out,
+ tests/rdfa/0020.xhtml, tests/rdfa/0021.out, tests/rdfa/0021.xhtml,
+ tests/rdfa/0023.out, tests/rdfa/0023.xhtml, tests/rdfa/0025.out,
+ tests/rdfa/0025.xhtml, tests/rdfa/0026.out, tests/rdfa/0026.xhtml,
+ tests/rdfa/0027.out, tests/rdfa/0027.xhtml, tests/rdfa/0029.out,
+ tests/rdfa/0029.xhtml, tests/rdfa/0030.out, tests/rdfa/0030.xhtml,
+ tests/rdfa/0031.out, tests/rdfa/0031.xhtml, tests/rdfa/0032.out,
+ tests/rdfa/0032.xhtml, tests/rdfa/0033.out, tests/rdfa/0033.xhtml,
+ tests/rdfa/0034.out, tests/rdfa/0034.xhtml, tests/rdfa/0035.out,
+ tests/rdfa/0035.xhtml, tests/rdfa/0036.out, tests/rdfa/0036.xhtml,
+ tests/rdfa/0037.out, tests/rdfa/0037.xhtml, tests/rdfa/0038.out,
+ tests/rdfa/0038.xhtml, tests/rdfa/0041.out, tests/rdfa/0041.xhtml,
+ tests/rdfa/0046.out, tests/rdfa/0046.xhtml, tests/rdfa/0047.out,
+ tests/rdfa/0047.xhtml, tests/rdfa/0048.out, tests/rdfa/0048.xhtml,
+ tests/rdfa/0049.out, tests/rdfa/0049.xhtml, tests/rdfa/0050.out,
+ tests/rdfa/0050.xhtml, tests/rdfa/0051.out, tests/rdfa/0051.xhtml,
+ tests/rdfa/0052.out, tests/rdfa/0052.xhtml, tests/rdfa/0053.out,
+ tests/rdfa/0053.xhtml, tests/rdfa/0054.out, tests/rdfa/0054.xhtml,
+ tests/rdfa/0055.out, tests/rdfa/0055.xhtml, tests/rdfa/0056.out,
+ tests/rdfa/0056.xhtml, tests/rdfa/0057.out, tests/rdfa/0057.xhtml,
+ tests/rdfa/0058.out, tests/rdfa/0058.xhtml, tests/rdfa/0059.out,
+ tests/rdfa/0059.xhtml, tests/rdfa/0060.out, tests/rdfa/0060.xhtml,
+ tests/rdfa/0061.out, tests/rdfa/0061.xhtml, tests/rdfa/0062.out,
+ tests/rdfa/0062.xhtml, tests/rdfa/0063.out, tests/rdfa/0063.xhtml,
+ tests/rdfa/0064.out, tests/rdfa/0064.xhtml, tests/rdfa/0065.out,
+ tests/rdfa/0065.xhtml, tests/rdfa/0066.out, tests/rdfa/0066.xhtml,
+ tests/rdfa/0067.out, tests/rdfa/0067.xhtml, tests/rdfa/0068.out,
+ tests/rdfa/0068.xhtml, tests/rdfa/0069.out, tests/rdfa/0069.xhtml,
+ tests/rdfa/0070.out, tests/rdfa/0070.xhtml, tests/rdfa/0071.out,
+ tests/rdfa/0071.xhtml, tests/rdfa/0072.out, tests/rdfa/0072.xhtml,
+ tests/rdfa/0073.out, tests/rdfa/0073.xhtml, tests/rdfa/0074.out,
+ tests/rdfa/0074.xhtml, tests/rdfa/0075.out, tests/rdfa/0075.xhtml,
+ tests/rdfa/0076.out, tests/rdfa/0076.xhtml, tests/rdfa/0077.out,
+ tests/rdfa/0077.xhtml, tests/rdfa/0078.out, tests/rdfa/0078.xhtml,
+ tests/rdfa/0079.out, tests/rdfa/0079.xhtml, tests/rdfa/0080.out,
+ tests/rdfa/0080.xhtml, tests/rdfa/0081.out, tests/rdfa/0081.xhtml,
+ tests/rdfa/0082.out, tests/rdfa/0082.xhtml, tests/rdfa/0083.out,
+ tests/rdfa/0083.xhtml, tests/rdfa/0084.out, tests/rdfa/0084.xhtml,
+ tests/rdfa/0086.out, tests/rdfa/0086.xhtml, tests/rdfa/0087.out,
+ tests/rdfa/0087.xhtml, tests/rdfa/0089.out, tests/rdfa/0089.xhtml,
+ tests/rdfa/0090.out, tests/rdfa/0090.xhtml, tests/rdfa/1001.out,
+ tests/rdfa/1001.xhtml, tests/rdfa/Makefile.am: Added RDFA test
+ cases from
+ http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/
+
+ * librdfa/curie.c:
+ (rdfa_resolve_curie): Handle undefined
+ namespaces prefix
+
+ * src/raptor_librdfa.c:
+ (raptor_librdfa_generate_statement):
+ Generate correct bnodes
+
+ * Makefile.am, configure.ac, librdfa, librdfa/Makefile.am,
+ librdfa/curie.c, librdfa/language.c, librdfa/rdfa.c,
+ librdfa/rdfa.h, librdfa/rdfa_utils.c, librdfa/rdfa_utils.h,
+ librdfa/subject.c, librdfa/triple.c, src/Makefile.am,
+ src/raptor_internal.h, src/raptor_librdfa.c, src/raptor_parse.c:
+ Added RDFA support via a copy of librdfa linked inside Raptor
+
+ librdfa/ directory contains a copy of (part of) librdfa
+ http://rdfa.digitalbazaar.com/librdfa/ by Manu Sporny
+
+ "librdfa is licensed under the GNU Lesser General Public License v2.1
+ (or newer), GNU General Public License v2.0 (or newer), or the Apache
+ 2.0 License (or newer). Each license is an alternative, and if you
+ select one license, that one alone applies."
+
+ (same license as raptor)
+
+ The sources were taken from GIT at
+ http://rdfa.digitalbazaar.com/librdfa.git
+ and patched to work inside raptor.
+
+ src/raptor_librdfa.c: New raptor parser 'rdfa'
+
+ * src/raptor_grddl.c:
+ (raptor_grddl_parse_recognise_syntax): Lower
+ scores for xhtml since the mime type gets added in too
+
+ * src/raptor_grddl.c:
+ (raptor_grddl_parse_recognise_syntax): Do
+ not guess using "xhtml" suffix twice
+
+2008-05-15 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_emit_subject):
+ Resiliency fix. Check raptor_new_avltree_iterator() return value.
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_emit_subject_properties): Free avltree iterator
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_emit_subject_properties): Resiliency fix: do not
+ leak iterator on OOM.
+
+2008-05-14 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_abbrev.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_turtle.c: Switch raptor_avltree_cursor_*
+ functions to use raptor_avltree_iterator
+
+ * tests/Makefile.am: check-rdfxmla, check-turtle-serialize: check
+ status from rapper & rdfdiff
+
+ * src/raptor_avltree.c:
+ (raptor_avltree_cursor_first,
+ raptor_avltree_cursor_last): Return failure/finished if tree was
+ empty.
+
+ * src/raptor_avltree.c:
+ (raptor_avltree_iterator_get): finished if
+ no current node
+
+ * tests/turtle/Makefile.am: check-turtle-serialize: check status
+ from rapper & rdfdiff
+
+ * src/raptor_avltree.c:
+ (raptor_new_avltree): Zap cursor_iterator
+
+ * src/raptor_internal.h: Added raptor_avltree_iterator typedef.
+ Added RAPTOR_AVLTREE_FLAG_REPLACE_DUPLICATES flag Added prototypes
+ for raptor_new_avltree_iterator, raptor_free_avltree_iterator,
+ raptor_avltree_iterator_end, raptor_avltree_iterator_next and
+ raptor_avltree_iterator_get.
+
+ * src/raptor_avltree.c: Autodocs for (still internal) AVL Tree
+ functions Some whitespace/indenting fixes.
+ (raptor_avltree_add, raptor_avltree_sprout): Will either replace or
+ ignore updates to a duplicate - equivalent - item depending on the
+ new raptor_new_avltree constructor flags arg value
+ RAPTOR_AVLTREE_FLAG_REPLACE_DUPLICATES.
+ (raptor_avltree_node_leftmost, raptor_avltree_node_rightmost):
+ Accept a range argument to use for searching in a range.
+ (raptor_avltree_node_search_right,
+ raptor_avltree_node_search_left): Added for searching for a node
+ in a direction in a range.
+ (raptor_avltree_node_prev, raptor_avltree_node_next): Handle
+ moving with ranges.
+ (raptor_new_avltree_iterator): Added iterator constructor with
+ direction arg to indicate prev/next direction of iteration,
+ optionally in a range.
+ (raptor_free_avltree_iterator): Added iterator destructor.
+ (raptor_avltree_iterator_end): Added iterator done check method.
+ (raptor_avltree_iterator_next): Added iterator move method.
+ (raptor_avltree_iterator_get): Added iterator get current method.
+ (raptor_avltree_cursor_first, raptor_avltree_cursor_last,
+ raptor_avltree_cursor_prev, raptor_avltree_cursor_next,
+ raptor_avltree_cursor_get): Rewritten in terms of a
+ tree->cursor_iterator iterator.
+ (raptor_avltree_print): Rewritten using an iterator.
+ (raptor_avltree_check_internal, raptor_avltree_check): Use an
+ unsigned int count.
+ (main): Use iterator for going forward check.
+
+2008-05-10 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_abbrev.c:
+ (raptor_abbrev_subject_add_property): Do
+ not lose reference count for inner nodes.
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtl_serialize_statement):
+ use raptor_abbrev_subject_add_property to ignore duplicate triples
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_statement): use
+ raptor_abbrev_subject_add_property to ignore duplicate triples
+
+ * src/raptor_abbrev.c:
+ (raptor_abbrev_node_cmp): Fix comparison to
+ properly return 0 when literals are truly equal
+ (raptor_abbrev_subject_add_property): Catch duplicates and do not
+ add them.
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_serialize_statement):
+ Revert bogus dup triple test.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_statement):
+ Revert bogus dup triple test.
+
+ * tests/turtle/Makefile.am: check-turtle-serialize: do not break
+ on first error; still return failure
+
+ * src/raptor_turtle_writer.c:
+ (raptor_new_turtle_writer): Make
+ first @base be absolute since there is no base URI at that point.
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_serialize_statement): Check whether no new subject,
+ predicate or object nodes were created, in which case this is a
+ duplicate statement that can be ignored.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_statement): Check whether no new
+ subject, predicate or object nodes were created, in which case
+ this is a duplicate statement that can be ignored.
+
+ * src/raptor_abbrev.c:
+ (raptor_abbrev_node_lookup,
+ raptor_abbrev_subject_lookup): Added a created_p output parameter
+ which is set to non-0 if a node was created.
+
+ * src/raptor_internal.h: raptor_abbrev_node_lookup and
+ raptor_abbrev_subject_lookup gain a created_p output parameter.
+
+2008-05-01 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_rss.c:
+ (raptor_rss10_emit_item): Fix attrs
+ re-declared warning
+
+ * src/raptor_serialize_rss.c: Removed indent arg from
+ raptor_rss10_emit_item and comment out indent lines
+ (raptor_rss10_emit_item): Loose indent
+
+ * src/raptor_serialize_rss.c: With the atom serializer, write any
+ remaining triples for an item as an <atom:content
+ type="application/rdf+xml">...</> block using the rdf/xml-abbrev
+ serializer. Use auto-indenting XML writer, do not manage indent
+ here anymore.
+ (raptor_rss10_emit_item): Write atom:content block for atom
+ serializer and when triples present.
+ (raptor_rss10_serialize_end) Init auto indent and auto empty xml
+ elements.
+
+ * src/raptor_serialize_rdfxmla.c: Added new flags to allow an
+ external xml_writer to be given, not write rdf:RDF, initialise the
+ starting xml writer depth and allow an external namespace stack.
+ (raptor_rdfxmla_emit,
+ raptor_rdfxmla_serialize_declare_namespace_from_namespace): Set
+ starting xml writer depth.
+ (raptor_rdfxmla_serialize_init_nstack): Added to separate out
+ stack initialising from raptor_rdfxmla_serialize_init.
+ (raptor_rdfxmla_serialize_init): Call
+ raptor_rdfxmla_serialize_init_nstack() and set rdf:RDF writing to
+ true by default.
+ (raptor_rdfxmla_serialize_terminate): Conditionalise freeing the
+ xml writer and namespaces stack.
+ (raptor_rdfxmla_serialize_set_write_rdf_RDF): Added
+ (raptor_rdfxmla_serialize_set_xml_writer): Added
+ (raptor_rdfxmla_serialize_start): Do not init local xml_writer if
+ one was passed in.
+ (raptor_rdfxmla_ensure_writen_header): Do not write rdf:RDF if not
+ wanted.
+
+ * src/raptor_rss_common.c:
+ (raptor_new_rss_item): Added,
+ refactoring raptor_rss_model_add_item and
+ raptor_rss_model_add_common content and ensuring triples field is
+ always initialised.
+
+ * src/raptor_rss.h: Added raptor_new_rss_item prototype.
+
+ * src/raptor_qname.c:
+ (raptor_new_qname_from_namespace_local_name): Accept NULL
+ namespace to make a namespace-less qname.
+
+ * src/raptor_xml_writer.c:
+ (raptor_xml_writer_get_depth): Added.
+
+ * src/raptor_sequence.c:
+ (raptor_sequence_delete_at): Added
+
+ * src/raptor.h: Added raptor_sequence_delete_at and
+ raptor_xml_writer_get_depth
+
+ * src/raptor_serialize.c:
+ (raptor_serialize_end): use
+ free_iostream_on_end field to free iostream only if it was
+ internal, not passed in
+
+ * src/raptor_internal.h: iostream gets free_iostream_on_end field
+ Added raptor_rdfxmla_serialize_set_write_rdf_RDF and
+ raptor_rdfxmla_serialize_set_xml_writer prototypes
+
+2008-04-30 Dave Robillard <dave@drobilla.net>
+
+ * src/raptor_turtle_writer.c:
+ (raptor_new_turtle_writer,
+ raptor_turtle_writer_base): Set base URI even if not writing @base
+ directive, so relative URI writing works correctly when @base is
+ disabled.
+
+2008-04-26 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_uri.c:
+ (assert_uri_to_relative): Free base_uri if not NULL
+
+2008-04-25 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_avltree.c, src/raptor_general.c,
+ src/raptor_identifier.c, src/raptor_internal.h,
+ src/raptor_iostream.c, src/raptor_json_writer.c,
+ src/raptor_namespace.c, src/raptor_parse.c, src/raptor_qname.c,
+ src/raptor_sax2.c, src/raptor_sequence.c, src/raptor_serialize.c,
+ src/raptor_serialize_turtle.c, src/raptor_set.c,
+ src/raptor_statement.c, src/raptor_stringbuffer.c,
+ src/raptor_uri.c, src/raptor_xml.c, src/raptor_xml_writer.c,
+ src/raptor_abbrev.c: Use RAPTOR_ASSERT_OBJECT_POINTER_RETURN on
+ destructor object arg. Code comments 2008
+
+2008-04-16 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_serialize_end):
+ Reset context->written_header flag to enable serializer object
+ reuse.
+
+2008-04-14 Dave Beckett <dave@dajobe.org>
+
+ * src/turtle_lexer.l: Rename fatal_error_longjmp_env to
+ turtle_lexer_fatal_error_longjmp_env
+
+ * src/n3_lexer.l: Use setjmp/longjmp to return fatal error
+ messages to caller without abort()
+ (n3_lexer_fatal_error): Remove abort() call.
+ main code: setjmp before starting parse. Move code to inside %{
+ %} block.
+
+ * src/n3_common.h, src/n3_parser.y, src/turtle_common.h,
+ src/turtle_parser.y: Count errors in syntax parsing and do not
+ report errors after the first one. A workaround instead of adding
+ full bison error parser recovery.
+
+ * configure.ac, src/turtle_lexer.l: Use setjmp/longjmp to return
+ fatal error messages to caller without abort()
+ (turtle_lexer_fatal_error): Remove abort() call.
+ main code: setjmp before starting parse. Move code to inside %{
+ %} block.
+
+2008-04-14 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_rdfxml.c:
+ (raptor_rdfxml_end_element_grammar):
+ Resiliency fixes: check raptor_parser_internal_generate_id()
+ return value
+
+ * src/raptor_libxml.c:
+ (raptor_libxml_free): Resiliency fix: make
+ sure myDoc is always freed.
+
+ * src/n3_lexer.l, src/turtle_lexer.l: Reverted from r13787 abort()
+ calls back to *_lexer_fatal_error() - it is assumed that these
+ functions never return.
+
+ * src/ntriples_parse.c:
+ (raptor_ntriples_generate_statement,
+ raptor_ntriples_string_as_utf8_string): Resiliency fixes: check
+ for alloc failures.
+
+2008-04-13 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss_common.c: 2008
+
+ * src/raptor_rss.h,
+ src/raptor_rss_common.c:
+ (raptor_rss_model_add_item,
+ raptor_free_rss_item): Add triples, free it.
+ (raptor_clear_rss_item): Deleted, not used.
+
+ * src/raptor_serialize_rss.c: comments
+ (raptor_rss10_serialize_statement): pass on handled flag from
+ raptor_rss10_store_statement()
+
+ * src/raptor_guess.c:
+ (raptor_guess_parse_chunk):: Check for
+ raptor_parser_copy_user_state failure and pass on.
+
+ * src/raptor_grddl.c:
+ (raptor_grddl_ensure_internal_parser): Check
+ for raptor_parser_copy_user_state failure and pass on. Slightly
+ adjust nearby code to remove else.
+
+ * src/raptor_internal.h,
+ src/raptor_parse.c:
+ (raptor_parser_copy_user_state): Add a return
+ value on failure of allocs.
+
+ * src/raptor_parse.c:
+ (raptor_parser_copy_user_state): Copy
+ Cache-Control: header and User-Agent: header values to destination
+ parser
+
+ * src/raptor_internal.h: Note about code changes needed when
+ adding user data to raptor_parser
+
+ * src/raptor_internal.h: Removed prototypes for removed functions:
+ raptor_parser_error_message_handler,
+ raptor_parser_fatal_error_message_handler,
+ raptor_parser_warning_message_handler,
+ raptor_parser_fatal_error_varargs, raptor_parser_warning_varargs
+
+ * src/n3_lexer.l, src/parsedate.y, src/raptor_parse.c,
+ src/raptor_rdfxml.c, src/turtle_lexer.l: Remove calls to abort()
+ in mainline code (some aborts still exist in test code for
+ consistency failures in avltree but they are only compiled in with
+ RAPTOR_DEBUG)
+
+ (raptor_parser_fatal_error): Set parsing failed flag on fatal error.
+ (raptor_parser_fatal_error_message_handler,
+ raptor_parser_error_message_handler,
+ raptor_parser_warning_message_handler): Removed, no longer used.
+
+ (raptor_rdfxml_start_element_grammar):
+ case RAPTOR_STATE_PARSETYPE_DESCRIPTION...
+ RAPTOR_STATE_PARSETYPE_COLLECTION
+ Remove use of abort() for an ancient check for an object URI that can
+ be worked around.
+ case RAPTOR_STATE_MEMBER_PROPERTYELT:
+ With content type RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_XML_LITERAL,
+ remove use of abort() for unknown content types related to
+ daml/collections - it will fall through to a fatal error anyway.
+ With default content type, remove abort() and tidy the error
+ message.
+ Parsing will still fail in this case.
+
+ (n3_lexer_fatal_error, turtle_lexer_fatal_error): Do not call abort.
+
+ (ToHour): Do not call abort, print message when debugging and return
+ invalid value.
+
+2008-04-12 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c:
+ (raptor_rss_start_namespaces): Added, pulling
+ namespace scanning out of raptor_rss_parse_chunk.
+ (raptor_rss_parse_chunk): Call above.
+
+ * src/raptor_rss.c: Add a nspaces_seen[] array in raptor_rss and
+ track namespaces declared either in input (xmlns seen via SAX) or
+ output, when writing a field in RSS1.0 schema. Save them all up
+ and generate before emitting.
+ (raptor_rss_parse_start): Reset nspaces_seen array to none seen.
+ (raptor_rss_sax2_new_namespace_handler): Mark namespace seen, do
+ not pass on to rdf namespace handler just yet.
+ (raptor_rss_parse_chunk): On finish, scan all fields of all items
+ for namespaces and mark those that need declaring. Then call
+ raptor_parser_start_namespace() to start them for the client.
+
+2008-04-11 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rss.c:
+ (raptor_rss_sax2_new_namespace_handler): Added.
+ (raptor_rss_parse_init): Register
+ raptor_rss_sax2_new_namespace_handler to pass on SAX2 namespace
+ events to the rdf parser.
+ Fixes Issue #0000255 http://bugs.librdf.org/mantis/view.php?id=255
+
+ * docs/tmpl/section-triples.sgml: sgml docs
+
+ * src/raptor_serialize_rss.c: 2008
+
+2008-04-11 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_general.c:
+ (raptor_init, raptor_finish): Changed
+ raptor_initialised flag to a reference count.
+
+2008-04-05 Dave Beckett <dave@dajobe.org>
+
+ * docs/raptor-serializers.xml: Add JSON serializers section
+
+2008-04-03 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_end):
+ Fixed crash when reusing serializer objects. Reset
+ context->written_header flag so that when
+ raptor_rdfxmla_ensure_writen_header() returns success,
+ context->rdf_RDF_element is always non-null.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_statement):
+ Fixed rdfxml-xmp segfault. Make sure avltree cursor points to
+ something before trying to indirect it.
+
+2008-04-01 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor-config.1: remove undefined macro .l other fixes
+
+ * NEWS.html, RELEASE.html configure.ac, src/win32_raptor_config.h:
+ Bumped version to 1.4.18
+
+2008-03-29 Dave Beckett <dave@dajobe.org>
+
+ * Snapshotted raptor_1_4_17 for 1.4.17 release (SVN 13771)
+
+ * utils/rapper.c: adjust feature pops
+
+ * utils/rapper.c: free features
+
+ * utils/rapper.c: Allow multiple features to be set with
+ -f/--feature by storing them away in two raptor_sequence* lists,
+ one for parser and one for serializer.
+
+ Then such things like
+ rapper -q -o json -f jsonCallback=foo -f 'jsonExtraData="foo":"bar"' -f relativeURIs ...
+ can be called.
+
+ * src/raptor_serialize_json.c:
+ (raptor_json_serialize_init): Alter
+ default to serialize with absolute URIs for JSON.
+ (raptor_json_serialize_start): Use feature_relative_uris to decide
+ what base uri to send to JSON writer.
+
+2008-03-27 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_json.c:
+ (raptor_json_serialize_start): Make
+ callback start with '(' again.
+
+2008-03-26 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_sax2.c:
+ (raptor_sax2_unparsed_entity_decl): Do not
+ return error when there is no handler.
+ (raptor_sax2_external_entity_ref): Error out when there is no
+ handler as the XML cannot be parsed with unknown external entity
+ references.
+
+ * src/raptor_rdfxml.c, src/raptor_sax2.c:
+ (raptor_sax2_unparsed_entity_decl,
+ raptor_sax2_external_entity_ref): Moved unparsed entity and
+ external entity reference error messages to sax2 class.
+ (raptor_rdfxml_unparsed_entity_decl_handler,
+ raptor_rdfxml_external_entity_ref_handler): Deleted.
+ (raptor_rdfxml_parse_init): Remove setting handlers
+
+ * src/raptor_rdfxml.c:
+ (raptor_rdfxml_unparsed_entity_decl_handler,
+ raptor_rdfxml_external_entity_ref_handler): Turn
+ fprintf(stderr...) calls into real raptor_parser_error calls
+
+ * src/raptor_sax2.c:
+ (raptor_sax2_external_entity_ref): Note
+ failure is happening with 'return 0'
+
+ * src/raptor.h: raptor_sax2_external_entity_ref_handler autodocs
+
+2008-03-25 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_sax2.c, src/raptor_iostream.c: autodocs
+
+ * docs/libraptor.3: 1.4.17 and lots of formatting tidying
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_internal.h,
+ src/raptor_parse.c, src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_serialize_json.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c: Added RAPTOR_FEATURE_JSON_EXTRA_DATA name
+ jsonExtraData that allows adding data to the end of the top level
+ JSON object on output
+
+2008-03-23 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-feature.sgml: add json callback feature
+
+2008-03-16 Dave Beckett <dave@dajobe.org>
+
+ * configure.ac: fix check for needing to link with -lm
+
+ * src/raptor_sax2.c:
+ (raptor_sax2_parse_chunk): Fixes to calling
+ raptor_log_error_to_handlers when built with expat.
+
+ * src/raptor_parse.c:
+ (main): Only define program if RAPTOR_DEBUG
+
+ * src/raptor_avltree.c:
+ (check_string, main): Casts for C++
+
+ * src/raptor_turtle_writer.c:
+ (main): Cast for C++
+
+ * src/raptor_uri.c:
+ (main): Remove C99 initializer for C++
+
+ * src/raptor_abbrev.c:
+ (raptor_abbrev_node_lookup): Cast for C++
+
+ * src/raptor_set.c:
+ (raptor_id_set_add): Casts for C++
+
+ * src/raptor_turtle_writer.c:
+ (main): use raptor_iostream_tell
+ instead of deprecated raptor_iostream_get_bytes_written_count
+
+ * tests/turtle/test-28-out.ttl: Update expected exact turtle
+ serializer result due to AVLTree change in re-ordering the triples
+
+ * src/raptor.h, src/raptor_feature.c, src/raptor_internal.h,
+ src/raptor_parse.c, src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_serialize_json.c, src/raptor_turtle_writer.c,
+ src/raptor_xml_writer.c: Added RAPTOR_FEATURE_JSON_CALLBACK
+ serializer feature for the JSON serializer to emit a callback
+ block like callback(...);
+ struct raptor_serializer_s gains feature_json_callback.
+ (raptor_free_serializer): Free all string features.
+ (raptor_serializer_set_feature_string,
+ raptor_serializer_get_feature_string): Store/return JSON callback
+ in feature_json_callback.
+ raptor_features_list array gains new entry for
+ RAPTOR_FEATURE_JSON_CALLBACK with name "jsonCallback".
+ (raptor_json_serialize_start): Write callback before serialize start.
+ (raptor_json_serialize_end): Terminate callback after serialize end.
+
+ * src/raptor.h: Removed raptor_sax2_parse_handle_errors prototype
+ - no such function.
+
+2008-02-25 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_rdfxml.c:
+ (raptor_rdfxml_start_element_grammar,
+ raptor_rdfxml_end_element_grammar): Check for alloc failures.
+
+ * src/raptor_xml.c:
+ (raptor_new_xml_element): Check for cdata
+ stringbuffer alloc failure.
+
+ * src/raptor_sax2.c:
+ (raptor_sax2_start_element): Low-memory
+ cleanup fixes.
+
+ * src/raptor.h:
+ (raptor_error_handlers): Quick segfault fix:
+ statically allocate RAPTOR_LOG_LEVEL_LAST+1 error handler slots
+
+ * src/raptor.h:
+ (raptor_error_handlers): Portability fix: avoid
+ "type containing an unknown-size array is not allowed" errors on
+ some compilers.
+
+2008-02-24 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_www.c:
+ (raptor_www_set_http_cache_control): +1 for
+ zero termination
+
+2008-02-24 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_grddl.c,
+ src/raptor_internal.h, src/raptor_libxml.c, src/raptor_parse.c,
+ src/raptor_sax2.c, src/raptor_www.c, src/raptor_www_libxml.c:
+ Added struct raptor_message_handler_closure for user data plus an
+ error handler.
+ (raptor_log_error_simple): Removed, only used in raptor_sax2.c
+ (raptor_log_error_to_handlers): Added to log to an
+ raptor_error_handlers object.
+ (raptor_sax2_simple_error): Tidy error calling to use closure
+ pointer.
+ (raptor_sax2_parse_chunk, raptor_log_error_to_handlers): Use
+ raptor_log_error_to_handlers
+ (raptor_www_set_error_handler, raptor_www_error): Update for
+ closure struct.
+ (raptor_grddl_fetch_uri, raptor_grddl_parse_chunk): Update for
+ closure struct. Tidy saving and restoring error handlers
+ (raptor_new_parser): Init last_log_level for error handlers.
+ (raptor_parse_uri_with_connection, raptor_parser_simple_error,
+ raptor_parser_error_varargs, raptor_parser_error_message_handler,
+ raptor_parser_warning, raptor_parser_warning_message_handler,
+ raptor_set_fatal_error_handler, raptor_set_error_handler,
+ raptor_set_warning_handler): Update for closure struct.
+ (raptor_libxml_warning, raptor_libxml_error_common,
+ raptor_libxml_generic_error,
+ raptor_libxml_xmlStructuredErrorFunc): Update for closure struct.
+ (raptor_www_libxml_init): Update for closure struct.
+
+2008-02-24 Lauri Aalto <laalto@iki.fi>
+
+ * src/Makefile.am: flex-generated header file does not need fixing
+ with fix-flex. It already has YY_NO_UNISTD_H guard and all other
+ fix-flex issues are for .c files only.
+ Fixes warnings due to multiple inclusion of raptor_config.h.
+
+2008-02-23 Dave Beckett <dave@dajobe.org>
+
+ * docs/tmpl/section-feature.sgml, src/raptor.h,
+ src/raptor_feature.c, src/raptor_grddl.c, src/raptor_internal.h,
+ src/raptor_parse.c, src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_turtle_writer.c, src/raptor_www.c,
+ src/raptor_www_curl.c, src/raptor_www_libxml.c,
+ src/raptor_xml_writer.c: Add RAPTOR_FEATURE_WWW_HTTP_CACHE_CONTROL
+ and RAPTOR_FEATURE_WWW_HTTP_USER_AGENT to control WWW. Pass that
+ on in parsers to internal www. raptor_www struct gains
+ cache_control and user_agent fields.
+ (raptor_www_curl_fetch): Disable curl www Pragma: header always.
+ (raptor_www_set_http_cache_control): Added.
+ (raptor_www_set_user_agent, raptor_www_set_proxy): Error checking
+ on malloc failure.
+ Fixes Issue #0000252 http://bugs.librdf.org/mantis/view.php?id=252
+
+2008-02-22 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_rdfxml.c:
+ (raptor_rdfxml_cdata_grammar): Check for
+ null pointer before indirecting it.
+
+ * src/raptor_libxml.c: Removed writable static data from
+ raptor_libxml.c
+
+2008-02-16 Dave Beckett <dave@dajobe.org>
+
+ * autogen.sh: autogen checks when env prog version is
+ empty. Update all packages to latest autogen.sh
+
+2008-02-09 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_avltree.c, src/raptor_internal.h:
+ (raptor_avltree_remove): Added.
+ (raptor_avltree_delete): Rewritten in terms of
+ raptor_avltree_remove. (main): Add test with
+ raptor_avltree_remove
+
+2008-02-07 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_avltree.c:
+ (raptor_avltree_search_internal): Alter to
+ return the node. (raptor_avltree_search): Use
+ raptor_avltree_search_internal changed
+
+2008-02-07 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_emit_subject_properties): Do not throw away return
+ value from raptor_rdfxmla_emit_subject_list_items().
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_emit_subject_properties): Check
+ raptor_avltree_cursor_first() return value. Fixes a NULL
+ indirection crash later on.
+
+ * src/raptor_avltree.c:
+ (raptor_new_avltree): Initialize print_fn
+ field to NULL.
+
+2008-02-06 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_statement):
+ Ensure variable rv is initialized before use.
+
+2008-02-02 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_abbrev.c, src/raptor_internal.h,
+ src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c:
+ Switch raptor_avltree subject->properties from raptor_sequence to
+ raptor_avltree and use an AVL Tree cursor to iterate it. This
+ changes the exact ordering of the output from original order, to
+ sorted by raptor_abbrev_node comparison order.
+
+ * src/raptor_avltree.c: Export avltree cursor prototypes. Added
+ raptor_data_print_function field.
+ (raptor_avltree_set_print_handler, raptor_avltree_print): Added to
+ print an AVL Tree.
+ (raptor_avltree_sprout_right): Fix failure to set parent correctly
+ in RR rebalancing.
+ (raptor_avltree_dump_internal): Print node value if print_fn is
+ defined.
+
+ * src/raptor_internal.h: Added raptor_data_print_function typedef.
+ Added raptor_avltree_set_print_handler and raptor_avltree_print
+ prototypes. Added avltree cursor prototypes:
+ raptor_avltree_cursor_first, raptor_avltree_cursor_last,
+ raptor_avltree_cursor_prev, raptor_avltree_cursor_next and
+ raptor_avltree_cursor_get
+
+ * src/raptor_avltree.c:
+ (compare_strings): update sig
+
+ * src/raptor_avltree.c, src/raptor_internal.h,
+ src/raptor_serialize_json.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_turtle.c, src/raptor_set.c: Change
+ raptor_avltree data from raptor_avltree_t typedef to void*.
+ excessive typedefs. Rename raptor_avltree_compare_function to
+ raptor_data_compare_function. Rename
+ raptor_avltree_delete_function to raptor_data_free_function
+
+ * src/raptor.h, src/raptor_general.c, src/raptor_parse.c,
+ src/raptor_www.c:
+ (raptor_error_handlers_init): Remove all args
+ except object pointer. Add docs. This is currently not called
+ internally so no need for extra arg soup. Use to init
+ error_handlers everywhere.
+ (raptor_new_parser, raptor_www_new_with_connection): Use
+ raptor_error_handlers_init rather than set magic directly.
+
+ * src/raptor_statement.c:
+ (raptor_statement_compare): Allow
+ subject, predicate or object to have NULL pointers which always
+ sort earlier than pointers with values.
+
+2008-01-29 Lauri Aalto <laalto@iki.fi>
+
+ * tests/grddl/Makefile.am: Run GRDDL tests only if GRDDL parser is
+ enabled in configuration.
+
+2008-01-27 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_avltree.c:
+ (raptor_new_avltree): Init size and cursor
+
+ * src/raptor_avltree.c: struct raptor_avltree gains a cursor
+ field.
+ (raptor_avltree_node_leftmost, raptor_avltree_node_rightmost):
+ Added for code clarity. Really this could be inlined or a macro.
+ (raptor_avltree_node_prev, raptor_avltree_node_next): Added for
+ moving around tree in order.
+ (raptor_avltree_cursor_first, raptor_avltree_cursor_last,
+ raptor_avltree_cursor_prev, raptor_avltree_cursor_next,
+ raptor_avltree_cursor_get): Added avltree cursor with new methods.
+ (main): Added tests for forwards and backwards cursoring.
+
+ * src/raptor_statement.c: code style
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_serialize_start):
+ Indenting
+
+ * src/raptor_serialize_json.c:
+ (raptor_statement_avltree_compare):
+ Use raptor_statement_compare.
+
+ * src/Makefile.am, src/raptor.h, src/raptor_general.c,
+ src/raptor_statement.c: Added raptor_statement.c for statement
+ functions.
+ (raptor_statement_compare): Added, based on
+ raptor_json_statement_compare.
+
+ * src/raptor_turtle_writer.c:
+ (main): Use write_base_uri in test.
+
+2008-01-23 Dave Robillard <dave@drobilla.net>
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_context): Fix
+ comment on written_header for Turtle (not XML).
+ Add feature to control writing @base directive to Turtle files.
+ (RAPTOR_FEATURE_WRITE_BASE_URI): Added.
+ (raptor_new_turtle_writer): Added write_base_uri parameter.
+
+
+2008-01-22 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_avltree.c: Remove most internal checks as they do not
+ hold while sprouting and rebalancing
+ (raptor_avltree_add, raptor_avltree_delete): Check here
+ afterwards.
+
+2008-01-21 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_avltree.c: Run raptor_avltree_check_node after only
+ if not rebalancing - node is still being moved.
+
+ * src/raptor_avltree.c: remove QUOTE_FN and flush stderr
+
+ * src/raptor_avltree.c: Remove other raptor_avltree_check_node before
+
+ * src/raptor_avltree.c:
+ (raptor_avltree_sprout): Do not run before
+ check, the node is not consistent while it is moving to the right
+ place.
+
+ * src/raptor_turtle_writer.c:
+ (main) cast for strlen
+
+ * src/raptor_internal.h: Added prototypes for raptor_avltree_size,
+ raptor_avltree_dump and raptor_avltree_check
+
+ * src/raptor_avltree.c: raptor_avltree_node gains a parent field
+ raptor_avltree gains a size field
+ (raptor_avltree_sprout): Add a parent node arg for updating parent
+ field on sprouts.
+ (raptor_avltree_add): Call raptor_avltree_sprout with NULL parent.
+ (raptor_avltree_print_node): Added for debugging
+ (raptor_avltree_check_node): Added to check a node for validity of
+ pointers
+ (raptor_avltree_sprout_left, raptor_avltree_sprout_right,
+ raptor_avltree_sprout, raptor_avltree_balance_left,
+ raptor_avltree_balance_right): Update parent pointers and run
+ check functions afterwards.
+ (raptor_avltree_delete_internal): Run check functions
+ (raptor_avltree_size): Added to get tree size.
+ (raptor_avltree_dump_internal, raptor_avltree_dump,
+ raptor_avltree_check_internal, raptor_avltree_check): Added for
+ debugging tree and checking consistency.
+ (main): Added one more test item so tree is not balanced. Run
+ checks during adds and delete.
+
+2008-01-21 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_rdfxml.c:
+ (raptor_rdfxml_parse_init): Check for
+ allocation failures and return error code if necessary.
+ (raptor_rdfxml_parse_terminate): Do not assume sax2, id_set are
+ initialized.
+
+2008-01-21 Dave Beckett <dave@dajobe.org>
+
+ * utils/rdfdiff.c: Changed algorithm - read both files into
+ rdfdiff_file* structures with rdfdiff_collect_statements, removing
+ duplicates for each file then compare afterwards.
+ (rdfdiff_statement_equals): Edited to have one return.
+ (rdfdiff_statement_find): Added
+ (rdfdiff_statement_exists): Uses rdfdiff_statement_find.
+ (rdfdiff_compare_statements): Removed.
+ (main): Use rdfdiff_collect_statements and after both files are
+ read in, walk through and remove common statements from the
+ from_file list.
+
+ * tests/Makefile.am: show results from check-rdfdiff failing
+
+ * utils/rdfdiff.c:
+ (rdfdiff_statement_exists): Added.
+ (rdfdiff_collect_statements): Use rdfdiff_statement_exists to not
+ add duplicate statements.
+
+ * tests/Makefile.am: Set result=1 on errors
+
+2008-01-20 Dave Beckett <dave@dajobe.org>
+
+ * tests/turtle/rdf-schema.out, tests/turtle/rdf-schema.ttl: Remove
+ duplicate statements from rdf-schema* now that serializer discards
+ them
+
+ * src/raptor_abbrev.c:
+ (raptor_abbrev_subject_add_property): Do
+ not save duplicate statements.
+ Fixes Issue #0000245 http://bugs.librdf.org/mantis/view.php?id=245
+
+ * src/raptor_avltree.c:
+ (main): Add test for raptor_avltree_search
+
+ * src/raptor.h, src/raptor_xml.c: autodocs
+
+2008-01-17 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_serialize_json.c:
+ (raptor_json_serialize_init):
+ Change the test for name "json".
+
+ * src/raptor_serialize_json.c:
+ (raptor_init_serializer_json):
+ Change serializer name 'json-t' to 'json-triples'
+
+ * src/raptor_serialize_json.c:
+ (raptor_init_serializer_json): Set
+ JSON mime type to application/json. Change serializer name 'json'
+ to resource-centric one and add alias 'json-r'.
+
+ * src/raptor_xml_writer.c:
+ (main): Use raptor_iostream_tell rather
+ than deprecated raptor_iostream_get_bytes_written_count
+
+ * src/raptor_serialize_json.c:
+ (raptor_init_serializer_json): Cast
+
+ * src/raptor_json_writer.c: Added define
+ RAPTOR_JSON_WRITER_DATATYPES to remove unused fields and
+ initialising/freeing supporting commented-out function
+ raptor_json_writer_literal_datatype
+
+ * configure.ac, src/Makefile.am, src/raptor_internal.h,
+ src/raptor_json_writer.c, src/raptor_serialize.c,
+ src/raptor_serialize_json.c: Added JSON serializing support.
+ raptor_json_writer class for formatting JSON. json-r and json-t
+ serializations based on
+ http://n2.talis.com/wiki/RDF_JSON_Specification
+
+2008-01-16 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_turtle_writer.c:
+ (raptor_iostream_write_string_python):
+ Do not write too much raw UTF-8
+
+ * src/raptor_turtle_writer.c:
+ (raptor_iostream_write_string_python): Add Long Turtle mode 2,
+ shift JSON to 3.
+ (raptor_turtle_writer_quoted_counted_string): Use mode 2 for
+ triple-quoted long strings
+
+ * src/raptor_internal.h: Add
+ raptor_turtle_writer_quoted_counted_string replacing
+ raptor_turtle_writer_quoted
+
+ * src/raptor.h, src/raptor_serialize_ntriples.c,
+ src/raptor_turtle_writer.c:
+ (raptor_iostream_write_string_python):
+ Added renamed from raptor_iostream_write_string_turtle and
+ replacing raptor_iostream_write_string_ntriples. Handles writing
+ to an iostream with escapes in N-Triples, Turtle and JSON with
+ appropriate escapes which are all python like.
+ (raptor_iostream_write_string_turtle): Changed to use
+ raptor_iostream_write_string_python.
+ (raptor_turtle_writer_quoted_counted_string): Renamed from
+ raptor_turtle_writer_quoted and taking a length
+
+2008-01-14 Lauri Aalto <laalto@iki.fi>
+
+ * autogen.sh: Do not branch autogen.sh scripts but keep them
+ identical
+
+2008-01-12 Dave Beckett <dave@dajobe.org>
+
+ * autogen.sh: automake 1.10 research
+
+2008-01-11 Lauri Aalto <laalto@iki.fi>
+
+ * src/n3_parser.y, src/ntriples_parse.c, src/raptor_grddl.c,
+ src/raptor_guess.c, src/raptor_internal.h, src/raptor_parse.c,
+ src/raptor_rdfxml.c, src/raptor_rss.c, src/raptor_serialize.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_simple.c,
+ src/raptor_serialize_turtle.c, src/turtle_parser.y:
+ (raptor_*_serializer_register_factory,
+ raptor_*_parser_register_factory) Return error codes from parser
+ and serializer factory registration functions.
+ (raptor_serializer_register_factory,
+ raptor_parser_register_factory) Check factory function return
+ code.
+ (raptor_parser_factory_add_alias,
+ raptor_parser_factory_add_mime_type,
+ raptor_parser_factory_add_uri) Added error code returns. Bubble up
+ OOM errors to caller.
+
+ * src/raptor_parse.c, src/raptor_serialize.c:
+ (raptor_parsers_init,
+ raptor_parser_register_factory,
+ raptor_serializer_register_factory): Let raptor_init() handle
+ dying on OOM.
+
+ * src/n3_parser.y, src/ntriples_parse.c, src/raptor_general.c,
+ src/raptor_grddl.c, src/raptor_guess.c, src/raptor_internal.h,
+ src/raptor_parse.c, src/raptor_rdfxml.c, src/raptor_rss.c,
+ src/raptor_sax2.c, src/raptor_serialize.c,
+ src/raptor_serialize_dot.c, src/raptor_serialize_ntriples.c,
+ src/raptor_serialize_rdfxml.c, src/raptor_serialize_rdfxmla.c,
+ src/raptor_serialize_rss.c, src/raptor_serialize_simple.c,
+ src/raptor_serialize_turtle.c, src/raptor_uri.c,
+ src/turtle_parser.y: Changed raptor internal init functions to
+ return error codes.
+
+2008-01-07 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor.h: Add raptor_error_handlers_init and raptor_sax2
+ RAPTOR_API exports.
+
+ * src/raptor_rfc2396.c:
+ (raptor_uri_resolve_uri_reference): Cast
+ unsigned char -> char. Fixes compilation problems on non-gcc
+ compilers.
+
+2008-01-05 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_rfc2396.c: Update URI resolving for RFC3986 - some
+ abnormal examples have different results or have defined possible
+ results.
+ (raptor_uri_resolve_uri_reference): Remove leading /../ and /./
+ (main): Update tests for RFC3986 changes
+
+ * src/raptor_general.c: 2008
+
+2008-01-04 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_ensure_writen_header):
+ Do not assume context->turtle_writer is initialized.
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_serialize_init):
+ Require non-NULL rdf:type abbrev node.
+
+ * src/raptor_abbrev.c:
+ (raptor_abbrev_subject_add_property):
+ Prevent low-memory double deletes - increment object reference
+ counts earlier.
+
+ * src/raptor_turtle_writer.c:
+ (raptor_turtle_writer_quoted): Check
+ for stringbuffer alloc failures.
+
+2008-01-03 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor.h, src/raptor_qname.c: Added
+ raptor_qname_get_counted_value
+
+2008-01-03 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_turtle.c:
+ (raptor_turtle_serialize_statement):
+ Return error if raptor_abbrev_node_lookup() or
+ raptor_abbrev_subject_add_property() calls fail.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_statement):
+ Removed redundant conditional.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_ensure_writen_header):
+ Check for qname alloc failure, do not pass NULL attributes to XML
+ element.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_statement):
+ Lowmem fixes. Return raptor_abbrev_subject_add_property() errors
+ to caller.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_ensure_writen_header):
+ Added int return code.
+ (raptor_rdfxmla_serialize_end) Fixed low-memory crash: make sure
+ context->rdf_RDF_element is not used if NULL.
+
+ * src/raptor_abbrev.c:
+ (raptor_new_qname_from_resource): Fixed
+ low-memory leaks.
+
+ * src/raptor_serialize_rdfxmla.c, src/raptor_serialize_turtle.c:
+ rdfxml-abbrev & turtle serializer error messages: Removed double
+ 0x prefixes - %p already gives one.
+
+ * src/raptor_iostream.c: Changed raptor_iostream_handler2
+ initializers from gcc/c99 style to traditional C.
+
+2008-01-02 Lauri Aalto <laalto@iki.fi>
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_end):
+ Do not assume xml_writer or rdf_RDF_element are initialized.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_serialize_statement):
+ Check for raptor_abbrev_node_lookup() errors.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_ensure_writen_header):
+ Check for alloc failures.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_emit_subject):
+ Check for alloc failures.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_emit_subject_properties): Check for alloc failures.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_emit_literal):
+ Check for qname attribute alloc failures.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_emit_resource):
+ Check for qname attribute alloc failure.
+
+ * src/raptor_serialize_rdfxmla.c:
+ (raptor_rdfxmla_emit_subject_list_items): Check for xml element
+ alloc failure.
+
+ * src/raptor_abbrev.c:
+ (raptor_new_qname_from_resource): Check for
+ alloc failure.
+
+ * src/raptor_abbrev.c:
+ (raptor_abbrev_node_lookup): Check for
+ lookup node allocation failures.
+
+ * src/raptor_abbrev.c:
+ (raptor_new_abbrev_node): Check for alloc
+ failures.
+
+ * src/turtle_parser.y:
+ (raptor_turtle_parse_chunk): Do not leave
+ turtle_parser->buffer a dangling pointer if realloc fails.
+ (raptor_turtle_parse_terminate) When freeing
+ turtle_parser->buffer, do not trust turtle_parser->buffer_length
+ to be in sync.
+
+ * src/raptor_iostream.c:
+ (raptor_new_iostream_to_filename): Close
+ file on alloc failure.
+
+ * src/raptor_iostream.c:
+ (raptor_new_iostream_from_filename):
+ Close file on alloc failure.
+
+ * src/raptor_iostream.c:
+ (raptor_iostream_calculate_modes,
+ raptor_iostream_check_handler, raptor_new_iostream_from_handler2):
+ Fix compiler error on some non-gcc compilers - illegal use of
+ const.
+
+2008-01-01 Dave Beckett <dave@dajobe.org>
+
+ * src/raptor_iostream.c: code style
+
+ * src/raptor_iostream.c: docs
+
+ * src/raptor_iostream.c:
+ (raptor_iostream_calculate_modes): Use
+ handler2 version for calculations.
+ (raptor_iostream_check_handler): Check handler API versions.
+ (raptor_new_iostream_from_handler2,
+ raptor_new_iostream_to_filename,
+ raptor_new_iostream_to_file_handle, raptor_new_iostream_to_string,
+ raptor_new_iostream_from_filename,
+ raptor_new_iostream_from_file_handle): Set mode once.
+
+ * src/raptor_iostream.c: Check handler matches requested mode
+ (raptor_iostream_calculate_modes): Added.
+ (raptor_iostream_check_handler): Renamed from
+ raptor_iostream_init_common.
+ (raptor_new_iostream_from_handler2, raptor_new_iostream_to_filename,
+ raptor_new_iostream_to_file_handle, raptor_new_iostream_to_string,
+ raptor_new_iostream_from_filename,
+ raptor_new_iostream_from_file_handle): Use
+ raptor_iostream_check_handler to check things and
+ raptor_iostream_calculate_modes to set mode.
+
+ * src/raptor_iostream.c: Merge read/write filename code Ensure
+ finish is called to fclose(handle)
+
+ * src/raptor_iostream.c:
+ (test_*): Replace uses of
+ raptor_iostream_get_bytes_written_count with raptor_iostream_tell
+
+ * src/raptor_iostream.c: Use unsigned long offset not bytes.
+ (raptor_iostream_get_bytes_written_count): Deprecated for
+ raptor_iostream_tell
+ (raptor_iostream_tell): Added
+
+ * src/raptor.h: Deprecate raptor_iostream_get_bytes_written_count
+ for raptor_iostream_tell
+
+ * src/raptor_iostream.c:
+ (raptor_filename_iostream_finish): Added
+ to close filename file
+ handle. raptor_iostream_read_file_handle_handler struct added
+ (raptor_new_iostream_from_file_handle): Added.
+ (test_read_from_file_handle): Enabled.
+
+ * src/raptor_iostream.c: Put ended EOF into flags
+
+ * src/raptor_iostream.c: Merge read/write sinks
+
+ * src/raptor_iostream.c: Add private field to raptor_iostream_s
+ for handling freeing handler2
+ (raptor_new_iostream_from_handler2): Add const to hamdler2 arg.
+
+ * src/raptor.h: raptor_iostream_handler2 loses private field - it
+ can be part of internals of raptor_iostream Updated
+ raptor_new_iostream_from_handler2 to make handler2 arg
+ constant pointer to constant data.
+
+ * src/raptor.h: Added raptor_iostream_read_eof and typedef
+ raptor_iostream_read_eof_func to raptor_iostream_handler2
+ structure.
+
+ * src/raptor_iostream.c:
+ (raptor_iostream_read_eof): Added.
+ (main) More unit test refactoring and checking.
+
+ * src/raptor_iostream.c: Resource cleanup on test failures
+
+ * src/raptor_iostream.c: Refactor read tests to be units - one
+ function per test.
+
+ * src/raptor_iostream.c: Refactor write tests to be units - one
+ function per test.
+
+ * src/raptor_iostream.c:
+ (main): Tests for iostream reading
+
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..a1e89e1
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,370 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
+Inc.
+
+ Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+ Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below. The lack of an optional feature in a given package is not
+necessarily a bug. More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+ The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package, generally using the just-built uninstalled binaries.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+ regular user, particularly if the prior `make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+ 7. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 8. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'. This
+is known as a "VPATH" build.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+ By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them. In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+ Some packages offer the ability to configure how verbose the
+execution of `make' will be. For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved. Use GNU `make'
+instead.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+ On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS
+ KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+ Use DIR as the installation prefix. *note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/INSTALL.html b/INSTALL.html
new file mode 100644
index 0000000..8e08009
--- /dev/null
+++ b/INSTALL.html
@@ -0,0 +1,376 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!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">
+<head>
+ <title>Raptor RDF Syntax Library - Building and Installing from Source</title>
+</head>
+<body>
+
+<h1>Raptor RDF Syntax Library - Building and Installing from Source</h1>
+
+
+<h2>1. Getting the sources</h2>
+
+<p>There are several ways to get the sources. The most stable and
+tested versions are the sources shipped with each release and these
+are recommended as the first place to start. If you want to get a
+newer set, then there are nightly snapshots made of the development
+sources, which may not yet be committed to GIT. For the
+latest developent sources, anonymous GIT access is available
+but this may require some configuring of developer tools that are not
+needed for the snapshot releases.
+</p>
+
+<p>The source bundle and package files contain all the HTML files and
+documentation provided on the web site.
+</p>
+
+<h2>1.1 Getting the sources from releases</h2>
+
+<p><b>This is the recommended source to build and install raptor.</b> It
+ensures that a tested and working set of files are used.</p>
+
+<p>The released sources and available from
+<a href="http://download.librdf.org/source/">http://download.librdf.org/source/</a> (master site) and also from the
+<a href="http://sourceforge.net/projects/librdf/">SourceForge site</a>.
+</p>
+
+
+<h2>1.2 Getting the sources from GIT</h2>
+
+<p><b>This is the recommended source for developers</b>. It provides
+the latest beta or unstable code. For a stable version, use a release
+as described above.</p>
+
+<pre>
+ git clone git://github.com/dajobe/raptor.git
+ cd raptor
+</pre>
+
+<p>At this stage, or after a <tt>git pull</tt> you will
+need to create the automake and autoconf derived files, as described
+below in <a href="#sec-create-configure">Create the configure program</a>
+by using the <code>autogen.sh</code> script.
+</p>
+
+<p>Building Raptor in this way requires some particular development
+tools not needed when building from snapshot releases - automake,
+autoconf, libtool, gtk-doc and dependencies.
+The <code>autogen.sh</code> script looks for the newest versions of
+the auto* tools and checks that they meet the minimum versions.
+</p>
+
+
+<h2>2. Configuring and building</h2>
+
+<p>Raptor uses the GNU automake and autoconf to handle system
+dependency checking. It is developed and built on x86 Linux
+and x86 OSX but is also tested on other systems occasionally.
+</p>
+
+<p>Raptor has several optional libraries:</p>
+<ul>
+ <li>The libxml2 XML library (2.6.8 or newer) for parsing XML syntaxes.</li>
+ <li>Libcurl, libxml2 or libfetch for retrieving URIs.</li>
+ <li>libxslt (requiring libxml2 also) to provide the XSLT functionality for the
+ GRDDL and microformats parser.</li>
+ <li><a href="http://lloyd.github.com/yajl/">YAJL</a> to provide JSON
+ parsers if it is available.</li>
+ <li><a href="http://www.icu-project.org/">ICU</a> to provide
+ Unicode NFC checking only if enabled with
+ <code>--with-icu-config</code></li>
+</ul>
+
+<h3><a id="sec-create-configure" name="sec-create-configure"></a>2.1. Create <code>configure</code> program</h3>
+
+<p>If there is a <code>configure</code> program, skip to the next
+section.</p>
+
+<p>If there is no <tt>configure</tt> program, you can create it
+using the <tt>autogen.sh</tt> script, as long as you have the
+<a href="http://www.gnu.org/software/automake/automake.html">automake</a> and
+<a href="http://www.gnu.org/software/autoconf/autoconf.html">autoconf</a>
+tools. This is done by:
+</p>
+<pre>
+ ./autogen.sh
+</pre>
+<p>and you can also pass along arguments intended for configure (see
+below for what these are):
+</p>
+<pre>
+ ./autogen.sh --prefix=/usr/local/somewhere
+</pre>
+
+<blockquote>
+<p>On OSX you may have to explicitly set the <code>LIBTOOLIZE</code>
+variable for the <code>libtoolize</code> utility since on
+OSX <code>libtoolize</code> is a different program. The full
+path to the utility should be given:
+</p>
+<pre>
+ LIBTOOLIZE=/opt/local/bin/glibtoolize ./autogen.sh
+</pre>
+</blockquote>
+
+<p>Alternatively you can run them by hand with:
+</p>
+<pre>
+ aclocal; autoheader; automake --add-missing; autoconf
+</pre>
+
+<p>The automake and autoconf tools have many different versions and
+at present development is being done with automake 1.11.1 (minimum
+version 1.11), autoconf 2.65 (minimum version 2.62) and libtool 2.2.10
+(minimum version 2.2.0). These are only needed when compiling from
+GIT sources. autogen.sh enforces the requirements.
+</p>
+
+<p>Raptor also requires
+<a href="http://lex.sourceforge.net/">flex</a> version 2.5.31 or newer
+(2.5.4 will not work) and
+<a href="http://www.gnu.org/software/bison/bison.html">GNU Bison</a>
+to build lexers and parsers.
+These are only required when building from GIT.
+</p>
+
+
+<h3>2.2 Options for <tt>configure</tt></h3>
+
+<p>Raptor's configure supports the following options:
+</p>
+
+<dl>
+<dt><tt>--disable-nfc-check</tt><br /></dt>
+<dd><p>Disable Unicode Normal Form C (NFC) checking code.
+The code primarily consists of large tables plus some checking code
+which can be removed from the library with this option. All NFC
+checks will succeed when this is disabled.
+</p></dd>
+
+<dt><code>--enable-debug</code><br /></dt>
+<dd><p>Enable debug messages (default not enabled).
+Maintainer mode automatically enables this.
+</p>
+</dd>
+
+<dt><tt>--enable-parsers=PARSERS</tt><br /></dt>
+<dd><p>Pick the RDF parsers to build from the list:<br />
+<code>rdfxml ntriples turtle rss-tag-soup</code><br />
+The default when this option is omitted is to enable all parsers.
+<code>grddl</code> requires libxml2 and libxstl so may not always be
+available. If all parsers are not enabled, parts of the test suite
+will likely fail.
+</p>
+
+<p>The parsers that a built library supports can be found from the
+API level using functions such as
+<code>raptor_parsers_enumerate</code> and
+<code>raptor_syntaxes_enumerate</code> or from the
+<code>rapper</code> utility in the help message.
+</p></dd>
+
+<dt><tt>--enable-serializers=SERIALIZERS</tt><br /></dt>
+<dd><p>Pick the RDF serializers to build from the list:<br />
+<code>rdfxml ntriples rdfxml-abbrev</code><br />
+The default when this option is omitted is to enable all serializers.
+If all serializers are not enabled, parts of the test suite will
+likely fail.
+</p>
+
+<p>The serializers that a built library supports can be found from the
+API level using functions such as
+<code>raptor_serializers_enumerate</code> or from the
+<code>rapper</code> utility in the help message.
+</p></dd>
+
+<dt><tt>--with-memory-signing</tt><br /></dt>
+<dd><p>Enable signing of memory allocations so that when memory is
+allocated with malloc() and released free(), a check is made that the
+memory was allocated in the same library.
+</p></dd>
+
+<dt><tt>--with-www=NAME</tt><br /></dt>
+<dd><p>Pick a WWW library to use - either <tt>curl</tt>,
+<tt>xml</tt> (for libxml), <tt>libwww</tt> for W3C libwww or
+<tt>none</tt> to disable it.
+</p></dd>
+
+<dt><tt>--with-xml2-config=NAME</tt><br /></dt>
+<dd><p>Set the path to the libxml xml2-config program.
+The default is to look for this on the PATH.
+</p></dd>
+
+<dt><tt>--with-xslt-config=NAME</tt><br /></dt>
+<dd><p>Set the path to the libxslt xslt-config program.
+The default is to look for this on the PATH.
+</p></dd>
+
+<dt><tt>--with-curl-config=NAME</tt><br /></dt>
+<dd><p>Set the path to the <a
+href="http://curl.haxx.se/libcurl/">libcurl</a> curl-config program.
+The default is to look for this on the PATH.
+</p></dd>
+
+<dt><tt>--with-icu-config=NAME</tt><br /></dt>
+<dd><p>Set the path to the <a href="http://www.icu-project.org/">ICU</a>
+icu-config program. This will NOT be searched for on the PATH.
+</p></dd>
+
+<dt><tt>--with-libwww-config=NAME</tt><br /></dt>
+<dd><p>Legacy option that used to support the libwww library.
+</p></dd>
+
+<dt><tt>--with-yajl=DIR|no</tt><br /></dt>
+<dd><p>Build against <a href="http://lloyd.github.com/yajl/">YAJL</a>
+installed into directory <em>DIR</em> or with 'no', disable looking
+for YAJL. The default is to search a set of common installation directories
+such /opt/local, /usr/local and /usr.
+</p></dd>
+
+</dl>
+
+<h3>2.3 Configuring</h3>
+
+<p>The default configuration will install into /usr/local:
+</p>
+<pre>
+ ./configure
+</pre>
+
+<p>To install into the standard Unix / Linux (and also Cygwin) system
+directory, use:
+</p>
+<pre>
+ ./configure --prefix=/usr
+</pre>
+
+
+<p>Append to the line any additional options you need like this:
+</p>
+<pre>
+ ./configure --prefix=/usr --enable-parsers=rdfxml
+</pre>
+
+
+<h3>2.4 Compiling</h3>
+
+<p>Compile the library and the <tt>rapper</tt> utility with:
+</p>
+<pre>
+ make
+</pre>
+<p>Note: GNU make is probably required which may be called
+gmake or gnumake if your system has a different make available too.
+</p>
+
+
+<h3>2.5 Testing</h3>
+
+<p>Raptor has a built-in test suite that can be invoked with:
+</p>
+<pre>
+ make check
+</pre>
+
+<p>which should emit lots of exciting test messages to the screen but
+conclude with something like:<br />
+ <tt>All </tt><em>n</em><tt> tests passed</tt><br />
+if everything works correctly. There will be some Unicode NFC
+checking tests that give ignored failures in 1.3.2 or later as NFC
+checking has been temporarily removed.
+</p>
+
+
+<h3>2.6 Installing</h3>
+
+<p>Install the library and the <tt>rapper</tt> utility into the area
+configure with <code>--prefix</code> (or /usr/local if not given)
+with:</p>
+<pre>
+ make install
+</pre>
+<p>Note: This may require root access if the destination area is
+a system directory such as /usr. In that case you may have to do
+<code>sudo make install</code>.
+</p>
+
+
+<h2>3. Using the library</h2>
+
+<p>Raptor includes a full tutorial and reference manual
+for the library. These are installed into
+<em>PREFIX</em><code>/share/gtk-doc/html/raptor</code>
+and are also available from the
+<a href="http://librdf.org/raptor/api/">Raptor web site</a>.
+</p>
+
+<p>In addition, the examples in the tutorial as well as some other
+example programs are available in the <code>examples</code>
+sub-directory. These can be compiled with:
+</p>
+<pre>
+ cd examples
+
+ # Raptor GUI - only if you have the GTK libraries
+ make grapper
+
+ # If you have all requirements
+ make examples
+</pre>
+
+
+<h3>3.2 rapper utility</h3>
+
+<p>Raptor provides an RDF syntax utility program called
+<em>rapper</em> which can do a variety of parsing and serializing operations.
+</p>
+
+<p>rapper can be run over RDF/XML content like this:
+</p>
+
+<pre>
+ rapper http://librdf.org/raptor/raptor.rdf
+</pre>
+
+<p>Raptor can also extract RDF content inside general XML when the
+<tt>-f scanForRDF</tt> feature is enabled. For example if some
+RDF/XML is embedded inside some SVG, it could be extracted with:
+</p>
+
+<pre>
+ rapper -f scanForRDF /path/to/test/pic.svg
+</pre>
+
+<p>You can also run it on other syntaxes such as
+<a href="http://www.w3.org/TR/rdf-testcases/#ntriples">N-Triples</a>
+files with the <code>-i</code> option like this:
+</p>
+
+<pre>
+ rapper -i ntriples test.nt
+</pre>
+
+<p>The default output is a simple statement dump format, but it can
+be changed to write
+<a href="http://www.w3.org/TR/rdf-testcases/#ntriples">N-Triples</a>
+by using the <code>-o</code> option, like this:
+</p>
+
+<pre>
+ rapper -o ntriples dc.rdf
+</pre>
+
+
+<p>See the rapper manual page for full details using 'man rapper'
+or read the HTML version in docs/rapper.html or on the
+<a href="http://librdf.org/raptor/rapper.html">Raptor website</a>.
+</p>
+
+
+<hr />
+
+<p>Copyright 2000-2012 <a href="http://www.dajobe.org/">Dave Beckett</a><br />Copyright 2000-2005 <a href="http://www.bristol.ac.uk/">University of Bristol</a></p>
+
+</body>
+</html>
diff --git a/LICENSE-2.0.txt b/LICENSE-2.0.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/LICENSE-2.0.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/LICENSE.html b/LICENSE.html
new file mode 100644
index 0000000..dd272be
--- /dev/null
+++ b/LICENSE.html
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!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 Syntax Library - License</title>
+</head>
+<body>
+
+ <h1 style="text-align:center">Raptor RDF Syntax Library - License</h1>
+
+ <p>This package is Free Software available under any one of the
+ specified licenses below, or any newer version of those licenses.
+ All the licenses below are alternatives and if you select one
+ license, that one alone applies.
+ </p>
+
+ <h2>1. The GNU Lesser General Public License (LGPL) Version 2.1 or any newer version</h2>
+
+ <p>See <a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html</a> or <a href="COPYING.LIB">COPYING.LIB</a> for the full LGPL 2.1 license text.
+ </p>
+
+ <hr />
+
+ <blockquote>
+ <p>
+Copyright (C) 2000-2012 <a href="http://www.dajobe.org/">David Beckett</a><br />
+Copyright (C) 2000-2005 <a href="http://www.bristol.ac.uk/">University of Bristol</a>.
+All Rights Reserved.
+ </p>
+
+ <p>This package is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License Version 2.1 as published by the Free Software Foundation
+ or any newer version.
+ </p>
+
+ <p>This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License Version 2.1 for more details.
+ </p>
+
+ <p>You should have received a copy of the GNU Lesser General
+ Public License Version 2.1 along with this package; if not, write
+ to the Free Software Foundation, Inc., 51 Franklin St, Fifth
+ Floor, Boston, MA 02110-1301 USA</p>
+
+ </blockquote>
+
+ <hr />
+
+ <h2>2. GNU General Public License (GPL) V2 or any newer version</h2>
+
+ <p>Under Term 3 of the LGPL Version 2.1, you may choose
+ to license the entire package under the GPL. If that option is
+ chosen, then this package is licensed under the terms of the
+ <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GPL Version 2</a>
+ or alternatively, any newer version of the GPL.
+ See <a href="COPYING">COPYING</a> for the full GPL 2.0 license text.
+ </p>
+
+
+ <h2>3. The Apache License V2.0 or any newer version</h2>
+
+ <p>See <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a> or <a href="LICENSE-2.0.txt">LICENSE-2.0.txt</a> for the full ASL 2.0 license text.
+ </p>
+
+ <blockquote>
+
+ <p>
+ Copyright (C) 2000-2012 <a href="http://www.dajobe.org/">David Beckett</a><br />
+ Copyright (C) 2000-2005 <a href="http://www.bristol.ac.uk/">University of Bristol</a>.
+ </p>
+
+ <p>Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:</p>
+
+ <p><a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></p>
+
+ <p>Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ </p>
+ </blockquote>
+
+ <p>The <a href="NOTICE">NOTICE</a> file contains the notices that
+ must be applied according to section 4(d) of the Apache License,
+ Version 2.0.
+ </p>
+
+<hr />
+
+<p>Copyright (C) 2000-2012 <a href="http://www.dajobe.org/">David Beckett</a><br />Copyright (C) 2000-2005 <a href="http://www.bristol.ac.uk/">University of Bristol</a></p>
+
+</body>
+</html>
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..0610cb3
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,66 @@
+ Raptor RDF Syntax Library - License
+
+ This package is Free Software available under any one of the specified
+ licenses below, or any newer version of those licenses. All the
+ licenses below are alternatives and if you select one license, that one
+ alone applies.
+
+1. The GNU Lesser General Public License (LGPL) Version 2.1 or any newer version
+
+ See http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html or
+ COPYING.LIB for the full LGPL 2.1 license text.
+ __________________________________________________________________
+
+ Copyright (C) 2000-2012 David Beckett
+ Copyright (C) 2000-2005 University of Bristol. All Rights Reserved.
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License Version
+ 2.1 as published by the Free Software Foundation or any newer
+ version.
+
+ This package is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License Version 2.1 for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License Version 2.1 along with this package; if not, write to the
+ Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+ __________________________________________________________________
+
+2. GNU General Public License (GPL) V2 or any newer version
+
+ Under Term 3 of the LGPL Version 2.1, you may choose to license the
+ entire package under the GPL. If that option is chosen, then this
+ package is licensed under the terms of the GPL Version 2 or
+ alternatively, any newer version of the GPL. See COPYING for the full
+ GPL 2.0 license text.
+
+3. The Apache License V2.0 or any newer version
+
+ See http://www.apache.org/licenses/LICENSE-2.0 or LICENSE-2.0.txt for
+ the full ASL 2.0 license text.
+
+ Copyright (C) 2000-2012 David Beckett
+ Copyright (C) 2000-2005 University of Bristol.
+
+ Licensed under the Apache License, Version 2.0 (the "License"); you
+ may not use this file except in compliance with the License. You may
+ obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied. See the License for the specific language governing
+ permissions and limitations under the License.
+
+ The NOTICE file contains the notices that must be applied according to
+ section 4(d) of the Apache License, Version 2.0.
+ __________________________________________________________________
+
+ Copyright (C) 2000-2012 David Beckett
+ Copyright (C) 2000-2005 University of Bristol
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..8e42de7
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,66 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - top level automake file for Raptor
+#
+# Copyright (C) 2000-2012 David Beckett http://www.dajobe.org/
+# Copyright (C) 2000-2005 University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+
+SUBDIRS= src utils docs data tests win32 examples librdfa scripts
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = raptor2.pc
+
+EXTRA_DIST=\
+ChangeLog ChangeLog.1 ChangeLog.2 ChangeLog.3 ChangeLog.4 ChangeLog.5 \
+ChangeLog.6 ChangeLog.7 ChangeLog.8 ChangeLog.9 ChangeLog.10 ChangeLog.11 \
+ChangeLog.12 \
+README NEWS LICENSE.txt \
+README.html NEWS.html LICENSE.html INSTALL.html \
+RELEASE.html \
+LICENSE-2.0.txt NOTICE \
+UPGRADING.html \
+raptor2.rdf.in \
+autogen.sh \
+raptor2.spec.in \
+raptor2.pc.in
+
+if RELEASE_VERSION
+EXTRA_DIST += raptor2.spec
+endif
+
+DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
+
+# Create some text files from HTML sources
+LYNX=lynx
+HTML_TO_TEXT=TERM=vt100 $(LYNX) -dump -nolist
+
+SUFFIXES = .html .txt
+
+.html.txt:
+ $(HTML_TO_TEXT) $< > $@
+
+README: $(srcdir)/README.html
+ $(HTML_TO_TEXT) $< > $@
+
+NEWS: $(srcdir)/NEWS.html
+ $(HTML_TO_TEXT) $< > $@
+
+# Some people need a little help ;-)
+test: check
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..0a97ed1
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,906 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - top level automake file for Raptor
+#
+# Copyright (C) 2000-2012 David Beckett http://www.dajobe.org/
+# Copyright (C) 2000-2005 University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@RELEASE_VERSION_TRUE@am__append_1 = raptor2.spec
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/raptor2.pc.in \
+ $(srcdir)/raptor2.rdf.in $(srcdir)/raptor2.spec.in \
+ $(top_srcdir)/configure AUTHORS COPYING COPYING.LIB ChangeLog \
+ INSTALL NEWS build/ar-lib build/compile build/config.guess \
+ build/config.sub build/depcomp build/install-sh \
+ build/ltmain.sh build/missing mkinstalldirs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES = raptor2.spec raptor2.rdf raptor2.pc
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
+DATA = $(pkgconfig_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir dist dist-all distcheck
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = src utils docs data tests win32 examples librdfa scripts
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = raptor2.pc
+EXTRA_DIST = ChangeLog ChangeLog.1 ChangeLog.2 ChangeLog.3 ChangeLog.4 \
+ ChangeLog.5 ChangeLog.6 ChangeLog.7 ChangeLog.8 ChangeLog.9 \
+ ChangeLog.10 ChangeLog.11 ChangeLog.12 README NEWS LICENSE.txt \
+ README.html NEWS.html LICENSE.html INSTALL.html RELEASE.html \
+ LICENSE-2.0.txt NOTICE UPGRADING.html raptor2.rdf.in \
+ autogen.sh raptor2.spec.in raptor2.pc.in $(am__append_1)
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+
+# Create some text files from HTML sources
+LYNX = lynx
+HTML_TO_TEXT = TERM=vt100 $(LYNX) -dump -nolist
+SUFFIXES = .html .txt
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .html .txt
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+raptor2.spec: $(top_builddir)/config.status $(srcdir)/raptor2.spec.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+raptor2.rdf: $(top_builddir)/config.status $(srcdir)/raptor2.rdf.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+raptor2.pc: $(top_builddir)/config.status $(srcdir)/raptor2.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool config.lt
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @case `sed 15q $(srcdir)/NEWS` in \
+ *"$(VERSION)"*) : ;; \
+ *) \
+ echo "NEWS not updated; not releasing" 1>&2; \
+ exit 1;; \
+ esac
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__remove_distdir)
+
+dist-lzma: distdir
+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+ $(am__remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lzma*) \
+ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pkgconfigDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-pkgconfigDATA
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am am--refresh check check-am clean clean-generic \
+ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
+ dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \
+ dist-zip distcheck distclean distclean-generic \
+ distclean-libtool distclean-tags distcleancheck distdir \
+ distuninstallcheck dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-pkgconfigDATA install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-pkgconfigDATA
+
+
+.html.txt:
+ $(HTML_TO_TEXT) $< > $@
+
+README: $(srcdir)/README.html
+ $(HTML_TO_TEXT) $< > $@
+
+NEWS: $(srcdir)/NEWS.html
+ $(HTML_TO_TEXT) $< > $@
+
+# Some people need a little help ;-)
+test: check
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..a2a9655
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,659 @@
+ Raptor RDF Syntax Library - News
+
+2012-06-24 Raptor2 Version 2.0.8 Released
+
+ Added support for RDFa 1.1 via updated librdfa
+ Multiple portability fixes for Windows and Solarises. (Daniel Richard
+ G.)
+ Multiple minor fixes and improvements
+ Fixed reported issues: 0000381, 0000487, 0000505 and 0000507
+
+ See the Raptor2 2.0.8 Release Notes for the full details of the
+ changes.
+
+2012-03-22 Raptor2 Version 2.0.7 Released
+
+ CVE-2012-0037 fixed
+ Removed Expat support
+ Removed internal Unicode NFC code for better and optional ICU
+ Added options for denying file requests and XML entity loading
+ Added options for SSL certificate verifying
+ Fixed reported issues: 0000448 and 0000469
+
+ See the Raptor2 2.0.7 Release Notes for the full details of the
+ changes.
+
+2011-11-27 Raptor2 Version 2.0.6 Released
+
+ Fixed expat support which was broken in 2.0.5
+ Handle libCurl SSL options before 7.16.4 (2007)
+ Add a few sequence utility methods for sort, reverse and permute
+
+ See the Raptor2 2.0.6 Release Notes for the full details of the
+ changes.
+
+2011-11-14 Raptor2 Version 2.0.5 Released
+
+ All parsers and serializers use the W3C Format URIs as their primary
+ URI
+ N-Quads parser can now handle optional context/graph URI
+ Turtle serializer uses official text/turtle mime type
+ Added some additional UTF-8 and snprintf utility functions
+ No longer needs math functions trunc, lround and round.
+ Several internal code style fixes and cleanups
+ Fixed reported issues: 0000465, 0000476, 0000479 and 0000481.
+
+ See the Raptor2 2.0.5 Release Notes for the full details of the
+ changes.
+
+2011-07-25 Raptor2 Version 2.0.4 Released
+
+ RDF/JSON parser now supports YAJL V2
+ Support libcurl 7.21.7 that removed the curl/types.h header
+ TRiG parser now supports the optional ':' in 'uri : { }' syntax
+ WWW module now supports setting SSL client side certificates
+ Fixed reported issues: 0000308, 0000449, 0000451, 0000455, 0000456 and
+ 0000457
+
+ See the Raptor2 2.0.4 Release Notes for the full details of the
+ changes.
+
+2011-06-01 Raptor2 Version 2.0.3 Released
+
+ Added a raptor2.h header
+ Turtle / TRiG parser improvements for larger documents
+ Fixes from LLVM clang static code analyzer
+ Fixed reported issues: 0000437.
+
+ See the Raptor2 2.0.3 Release Notes for the full details of the
+ changes.
+
+2011-03-20 Raptor2 Version 2.0.2 Released
+
+ Fixed a too strict version checking bug in raptor_new_world()
+
+ See the Raptor2 2.0.2 Release Notes for the full details of the
+ changes.
+
+2011-03-20 Raptor Version 2.0.1 Released
+
+ DO NOT USE. Use 2.0.2 which fixes a too strict version checking bug in
+ raptor_new_world()
+ Some minor fixes:
+ The N-Quads serializer was fixed to output the graph name correctly
+ The RDFa parser built with librdfa can now be linked with the standard
+ librdfa
+ Fixed reported issues: 0000416.
+
+ See the Raptor 2.0.1 Release Notes for the full details of the changes.
+
+2011-01-03 Raptor Version 2.0.0 Released
+
+ Raptor 2 final release
+ Some minor API changes since the last beta.
+ Fixed reported issue: 0000405.
+
+ The Raptor 2 API reference manual section on Changes between raptor
+ 1.4.21 and 2.0.0 provides detailed function, macro, enum and type
+ changes. The upgrading document explains how to upgrade existing Raptor
+ V1 code to the new APIs.
+
+ See the Raptor 2.0.0 Release Notes for the full details of the changes.
+
+2010-12-01 Raptor Version 1.9.1 Released
+
+ Raptor 2 second beta release with some API changes. 2.0.0 final
+ expected next.
+ Improved the V1 to V2 upgrading script
+ raptor_new_world() checks Raptor header and library are consistent
+ Constructors now validate the world pointer is from Raptor V2
+ Added an N-Quads parser
+ Added and removed a few API calls
+ Fixed a few bugs including reported issue 0000402
+
+ The Raptor 2 API reference manual section on Changes between raptor
+ 1.4.21 and 1.9.1 provides detailed function, macro, enum and type
+ changes. The upgrading document explains how to upgrade existing Raptor
+ V1 code to the new APIs.
+
+ See the Raptor 1.9.1 Release Notes for the full details of the changes.
+
+2010-08-16 Raptor Version 1.9.0 Released
+
+ Raptor 2 first beta release. There may be changes before a stable 2.0.0
+ API
+ Removed all deprecated functions and typedefs.
+ Renamed all functions to the standard raptor_class_method form.
+ All constructors take a raptor_world argument.
+ URIs are interned and there is no longer a swappable implementation.
+ Statement is now an array of 3-4 RDF Terms to support triples and
+ quads.
+ World object owns logging, blank node ID generation and describing
+ syntaxes.
+ Features are now called options and have typed values.
+ GRDDL parser now saves and restores shared libxslt state.
+ Added serializers for HTML 'html' and N-Quads 'nquads'.
+ Added parser 'json' for JSON-Resource centric and JSON-Triples.
+ Switched to GIT version control hosted by GitHub.
+ Added memory-based AVL-Tree to the public API.
+ Fixed reported issues: 0000357, 0000361, 0000369, 0000370, 0000373 and
+ 0000379
+
+ The Raptor 2 API reference manual section on Changes between raptor
+ 1.4.21 and 1.9.0 provides detailed function and type changes. The
+ upgrading document explains how to upgrade existing Raptor V1 code to
+ the new APIs.
+
+ See the Raptor 1.9.0 Release Notes for the full details of the changes.
+
+2010-01-30 Raptor Version 1.4.21 Released
+
+ This is a bug fix only release with no new features. New development
+ has moved to raptor 2 where a planned ABI and API break is underway.
+ RDFa parser buffer management problems were fixed
+ Turtle parser and serializer now use QNames correctly against
+ specification
+ RDF/XML parser now resets correctly to detect duplicate rdf:IDs
+ Made a few other minor bug and build fixes
+ Fixed reported issues: 0000318, 0000319, 0000326, 0000331, 0000332 and
+ 0000337
+
+ See the Raptor 1.4.21 Release Notes for the full details of the
+ changes.
+
+2009-11-28 Raptor Version 1.4.20 Released
+
+ Turtle serializing performance improvement by Chris Cannam
+ librdfa RDFa parser updates to fix empty datatype, xml:lang and 1-char
+ prefixes by Manu Sporny
+ Fix a crash when the GRDDL parser reported errors
+ Enable large file support for 32-bit systems
+ Several resilience improvements by Lauri Aalto
+ Other minor portability and bug fixes
+ Fixed reported issues: 0000306 0000307 0000310 and 0000312.
+
+ See the Raptor 1.4.20 Release Notes for the full details of the
+ changes.
+
+2009-07-19 Raptor Version 1.4.19 Released
+
+ Many improvements to RSS tag soup (RSSes and Atom) parser and the RSS
+ 1.0 and Atom serializers
+ Several fixes and improvements to the N-Triples, RDFa and RDF/XML
+ parsers and Turtle serializer
+ Improved the use and configuration of static libxml functions for
+ better compatibility
+ Several Win32 portability fixes - Lou Sakey
+ Many internal changes for upcoming Raptor V2 - primarily by Lauri Aalto
+ Many other fixes and resilience improvements.
+ Fixed reported issues: 0000259, 0000262, 0000263, 0000266, 0000269,
+ 0000270, 0000276, 0000277, 0000287, 0000288, 0000289, 0000290, 0000293,
+ 0000296, 0000299 and 0000303.
+
+ WARNING: FUTURE ABI and API CHANGES. The next release of raptor 1.4.x
+ will include bug fixes only and no new features. New development will
+ move to raptor 2 where a planned ABI and API break will happen. There
+ may be preview releases of raptor 2 with 1.9.x numbering.
+
+ See the Raptor 1.4.19 Release Notes for the full details of the
+ changes.
+
+2008-06-25 Raptor Version 1.4.18 Released
+
+ Added an RDFa parser using an embedded version of librdfa by Manu
+ Sporny of Digital Bazaar.
+ Added an Atom 1.0 (RFC 4287) serializer with several output parameters.
+ Improved RSS 1.0 serializer functionality and resilience.
+ Added new API methods for qname, serializer, sequence and XML writer
+ classes.
+ Many other fixes and resilience improvements.
+ Fixed reported issues: 0000186 and 0000255.
+
+ See the Raptor 1.4.18 Release Notes for the full details of the
+ changes.
+
+2008-03-30 Raptor Version 1.4.17 Released
+
+ Added two new JSON serializers: resource-centric 'json' (Talis
+ RDF/JSON) and triple-centric 'json-triples'
+ Added a new public XML SAX2 API class
+ Added a new error handling structure
+ Made the I/O Stream class support reading
+ Added several new API methods.
+ Made several fixes, portability and resilience improvements.
+ Fixed reported issues: 0000252 and 0000245.
+
+ See the Raptor 1.4.17 Release Notes for the full details of the
+ changes.
+
+2007-10-01 Raptor Version 1.4.16 Released
+
+ 100% support for the GRDDL W3C Recommendation of 2007-09-11
+ Turtle parser and serializer were updated to support @base from Turtle
+ 2007-09-11.
+ Turtle and RDF/XML serializers had performance improvements for large
+ graphs.
+ Added a TRiG Parser based on Turtle with named graph support.
+ Several other API changes, fixed and improvements were made.
+ Fixed reported issues: 0000188, 0000192, 0000194, 0000195, 0000207,
+ 0000210, 0000214, 0000216, 0000217, 0000232, 0000237, 0000238 and
+ 0000239
+ Many other fixes and improvements.
+
+ See the Raptor 1.4.16 Release Notes for the full details of the
+ changes.
+
+2007-03-26 Raptor Version 1.4.15 Released
+
+ GRDDL parser substantially updated to support the GRDDL W3C Working
+ Draft 2 March 2007
+ Errors for XML parsing and URI 404s are reported much better
+ Fixed reported issues: 0000174, 0000177, 0000178, 0000180
+ Many other minor fixes and improvements.
+
+ See the Raptor 1.4.15 Release Notes for the full details of the
+ changes.
+
+2007-01-31 Raptor Version 1.4.14 Released
+
+ New Turtle serializer by Dave Robillard based on the existing
+ RDF/XML-Abbrev serializer.
+ New GraphViz DOT format serializer by Evan Nemerson.
+ GRDDL parser now does namespace and profile URI recursion and has other
+ improvements and fixes.
+ Fixed reported issues: 0000032, 0000141, 0000143, 0000148, 0000155 and
+ 0000157
+ Many other fixes and improvements.
+
+ See the Raptor 1.4.14 Release Notes for the full details of the
+ changes.
+
+2006-10-22 Raptor Version 1.4.13 Released
+
+ Fixed a memory leak in reusing the XML writer
+ Fixed reported issues: 0000134
+ Minor updates and fixes to tutorial, configuration and build
+
+ See the Raptor 1.4.13 Release Notes for the full details of the
+ changes.
+
+2006-08-27 Raptor Version 1.4.12 Released
+
+ Restore serializer enumeration ordering back to that of 1.4.10 which
+ was causing Redland problems when writing type 'application/rdf+xml'.
+
+ See the Raptor 1.4.12 Release Notes for the gory details.
+
+2006-08-26 Raptor Version 1.4.11 Released
+
+ Added network request filtering for parsers
+ Improved the GRDDL parser to read Embedded RDF and HCalendar
+ The Guess parser can now be reused to do multiple guesses
+ The RSS 1.0 Serializer now works again
+ Fixed reported issues: 0000014, 0000041, 0000089, 0000091 , 0000110 and
+ 0000112
+ Made several other changes, fixes and improvements.
+
+ See the Raptor 1.4.11 Release Notes for the full details of the
+ changes.
+
+2006-07-14 Raptor Version 1.4.10 Released
+
+ Fixed a crash with RSS Tag Soup parser generating triples too late
+ Fixed a crash with the RDF/XML parser and serializer if a comment was
+ seen outside an element
+ Parsers no longer generate any triple parts of type
+ RAPTOR_IDENTIFIER_TYPE_ORDINAL
+
+ See the Raptor 1.4.10 Release Notes for the full details of the
+ changes.
+
+2006-04-22 Raptor Version 1.4.9 Released
+
+ Raptor Tutorial added covering parsing and serializing with examples
+ Raptor Reference Manual now covers 100% of the public API
+ rapper can now pretty-print RDF using namespaces as hints
+ Turtle parser gains boolean literals
+ Requests for content now send appropriate Accept: headers
+ No longer require libxml for rss-tag-soup parser
+ Various Win32 fixes and VC build files updates (John Barstow)
+ Many other bug fixes and changes were made.
+
+ NOTE: Generation of RAPTOR_IDENTIFIER_TYPE_PREDICATE was removed as
+ deprecated in 1.4.8.
+
+ See the Raptor 1.4.9 Release Notes for the full details of the changes.
+
+2006-01-03 Raptor Version 1.4.8 Released
+
+ RSS Tag Soup parser now reads Atom 1.0 and rewrites old Atom 0.3 terms
+ Added a guess parser that picks the parser to use based on protocol
+ information such as HTTP Content-Type
+ Created an enhanced API reference manual with gtk-doc
+ Serializers to build can now be selected at configure time
+ Parsers can now return the namespace prefix/URIs seen in parsing
+ Turtle parser update to version 2006-01-02 (announcement)
+ Fix for URI resolution bugs (win32 fix by John Barstow)
+ Several parser bug fixes for RDF/XML, RSS and GRDDL
+ RDF/XML serializers and XML writer can write XML 1.0 or XML 1.1
+ Added an alpha Atom 1.0 serializer
+ Added an Adobe XMP (RDF/XML profile) serializer
+ Internal source reorganisation
+ Many other changes, fixes and improvements.
+
+ NOTE: Raptor will be switching to use Subversion for version control
+ after the 1.4.8 release. See the Redland Subversion site or the online
+ Raptor installation notes for the latest information.
+
+ See the Raptor 1.4.8 Release Notes for the full details of the changes.
+
+2005-06-08 Raptor Version 1.4.7 Released
+
+ Fix crashes in the RSS tag soup parser / serializer (Suzan Foster)
+ Fix a crash in the RDF/XML serializers with bad URI predicates.
+
+ See the Raptor 1.4.7 Release Notes for the full details of the changes.
+
+2005-05-19 Raptor Version 1.4.6 Released
+
+ Added a Gleaning Resource Descriptions from Dialects of Languages
+ (GRDDL) parser for reading XHTML and XML as RDF triples
+ Updated RSS enclosures support in RSS tag soup parser and RSS 1.0
+ serializer (Suzan Foster)
+ Fixed several crashes with RSS tag soup parser, RDF/XML-abbrev
+ serializer.
+ The turtle parser now accepts """long literals"""
+
+ See the Raptor 1.4.6 Release Notes for the full details of the changes.
+
+2005-02-06 Raptor Version 1.4.5 Released
+
+ Added an RDF/XML with abbreviations serializer (Steve Shepard)
+ Handle RSS 1.1 in RSS tag soup parser
+ More fixes for broken OSX libxml2
+
+ See the Raptor 1.4.5 Release Notes for the full details of the changes.
+
+2005-01-15 Raptor Version 1.4.4 Released
+
+ Fixed crashes in RSS tag soup parser and RSS 1.0 serializer
+ Handle RSS 0.9 namespace in RSS tag soup parser
+ Portability fixes for Win32 (Dave Viner)
+
+ See the Raptor 1.4.4 Release Notes for the full details of the changes.
+
+2005-01-03 Raptor Version 1.4.3 Released
+
+ New XML Writer API
+ Improved RDF/XML serializer allowing user namespace declarations and
+ writing relative URIs where possible
+ New RSS 1.0 serializer
+ Updated RSS tag soup parser
+ URI class can write relative URIs (Patch from Rene Puls)
+ Many other API changes
+
+ See the Raptor 1.4.3 Release Notes for the full details of the changes.
+
+2004-11-01 Raptor Version 1.4.2 Released
+
+ Fix raptor_xml_escape_string error return.
+
+ See the Raptor 1.4.2 Release Notes for the full details of the changes.
+
+2004-10-29 Raptor Version 1.4.1 Released
+
+ Fixed crashes in URI decoding and RSS enclosures.
+
+ See the Raptor 1.4.1 Release Notes for the full details of the changes.
+
+2004-10-24 Raptor Version 1.4.0 Released
+
+ Added a serializing class for writing RDF triples as a syntax
+ Added serializers for RDF/XML and N-Triples
+ Added an I/O stream class for aiding writing
+ Added RSS enclosure support to RSS Tag Soup parser (Suzan Foster)
+
+ See the Raptor 1.4.0 Release Notes for the full details of the changes.
+
+2004-09-20 Raptor Version 1.3.3 Released
+
+ License changed to LGPL 2.1/Apache 2
+ Added a new Unicode NFC checker
+ Rewritten URI parsing and resolving code
+ Added configure selection of RDF parsers
+ Updated the RSS Tag Soup parser to handle Atom 0.3
+ Updated the Turtle parser to handle large documents (Geoff Chappell)
+ Added a parser feature to disable rdf:ID duplicate checking
+ Updated rdf:ID duplicate value checking implementation
+ Portability fixes for building on win32 (Chris Pointon)
+
+ See the Raptor 1.3.3 Release Notes for the full details of the changes.
+
+2004-07-21 Raptor Version 1.3.2 Released
+
+ Added support for compiling against expat source trees (Mark Smith)
+ Added raptor_alloc_memory to allocate memory in raptor, typically
+ needed by handler routines on win32.
+ Make errors in fetching WWW content pass to the main error handler.
+ Added accessor functions for parts of the raptor_locator structure (Edd
+ Dumbill)
+ Disabled the broken Unicode NFC checking via GNOME glib for this
+ release.
+
+ See the Raptor 1.3.2 Release Notes for the full details of the changes.
+
+2004-06-12 Raptor Version 1.3.1 Released
+
+ Correct raptor_print_statement declaration argument statement to have
+ one less 'const', to match the code.
+ raptor.h now includes stdarg.h
+ Portability fixes for win32
+ Updates to Turtle parser to only allow language with non-datatyped
+ literals; allow a '_' immediately after a ':' in qnames and make bare
+ ':' work.
+ Added a warning for unknown rdf:parseType values, when parsing in lax
+ mode. This is controlled by a new parser feature warn_other_parsetypes
+ The Turtle parser was fixed to re-initialise correctly when performing
+ multiple parsings
+ Fixes to the file: URI support for %-escaping and for Win32 filenames
+
+ See the Raptor 1.3.1 Release Notes for the full details of the changes.
+
+2004-05-11 Raptor Version 1.3.0 Released
+
+ Updated Turtle parser to fix the collections syntax, add integer
+ literals and allow - in names.
+ Added support for guessing a parser from content or identifiers
+ Completed parser feature support
+ Added sending HTTP Accept: headers for WWW retrieval when possible
+ Added new utility sequence and stringbuffer classes
+ Several other functions added and improvements made.
+
+ See the Raptor 1.3.0 Release Notes for the full details of the changes.
+
+2004-01-24 Raptor Version 1.2.0 Released
+
+ Added a Turtle parser (was N-Triples Plus) now with collections.
+ Added raptor_syntaxes_enumerate to get syntax name, label, mime_type or
+ uri_string of all known parsers.
+ Added WWW access via BSD libfetch if available.
+ Updated the GNOME GUI grapper program to report errors and warnings
+
+2003-12-31 Raptor Version 1.1.0 Released
+
+ Added an N-Triples Plus parser
+ Updated for RDF/XML Revised Working Draft (10 October 2003) allowing
+ rdf:RDF to be optional by default. No further changes were needed for
+ RDF/XML Revised Proposed Recommendation (15 December 2003)
+ Made URI class constructors, methods and factory methods as well as
+ some other utility functions using or returning URIs or literals take
+ unsigned char* rather than char*.
+ Added the XML namespace, XML namespace stack and XML qname classes to
+ the public API.
+ Added a function to discover supported parsers.
+ Fixes for line number counting in N-Triples
+ Added support for libxml2 SAX2 API for 2.6.0 and later.
+ The N-Triples parser now uses the generate ID code.
+ Added configure options for XML 1.1 names and disabling NFC check code.
+
+2003-09-08 Raptor Version 1.0.0 Released
+
+ Several long-deprecated functions were removed and consequently the
+ library shared version number was increased to 1
+ Fixed scanning for rdf:RDF so that RDF/XML in other XML works, such as
+ in SVG
+ raptor-config --libs now works, added --libtool-libs and
+ --version-decimal
+ Check N-Triples legal Unicode character range #x0-#x10FFFF
+ Normalize RDF/XML xml:lang and N-Triples language to lowercase on input
+ Worked around libxml2 bug causing a crash on some error reporting
+ Added raptor_parse_file_stream for parsing a C FILE*
+ Tidied rapper utility argument handling, added --version
+
+2003-08-25 Raptor Version 0.9.12 Released
+
+ Fix some XML memory leaks in Exclusive XML Canonicalization.
+ Stop parsing RSS tag soup after a user abort
+ Improved N-Triples syntax checking.
+ Crash fixes for 64 bit Alpha/Sparc Linux/Solaris (varargs, size_t)
+ Fixed some other minor memory leaks with rdf:datatype and rdf:ID
+ attributes.
+
+2003-07-29 Raptor Version 0.9.11 Released
+
+ Completely handles the revised RDF/XML syntax (including post W3C Last
+ Call changes)
+ Added Unicode Normal Form C (NFC) checking for literals (requires GNOME
+ glib 2.0 at present)
+ Added Exclusive XML Canonicalization for XML Literals
+ Added many more checks for bad syntax (mostly illegal property
+ attributes)
+ Updated parseType="Collection" triples after RDF Core WG change
+ Added an experimental RSS Tag Soup parser to read any pile of XML that
+ has elements such as channel, image, item tags with title, description
+ etc inside them into coherent RSS 1.0 RDF triples. (Requires libxml
+ 2.5.0 or newer)
+ API: Added new methods raptor_get_name, raptor_get_label.
+ API: Added new methods raptor_set_default_generate_id_parameters and
+ raptor_set_generate_id_handler to control generation of IDs.
+ API: Modified utility function raptor_xml_escape_string arguments.
+ Ripped out ISO 3166 country code parts since commercial use might be
+ subject to a license fee.
+ Improvements to GTK example 'grapper'.
+ Several internal reorganisations for pulling out a SAX2 API, XML C14N.
+ Other minor bug fixes.
+
+2003-04-17 Raptor Version 0.9.10 Released
+
+ Added parser lax / strict modes. lax is the default.
+ rdf:bagID now generates a warning in lax mode, an error in strict
+ Added raptor_www_no_www_library_init_finish to allow disabling of WWW
+ library startup/shutdown.
+ Added raptor_parse_abort to abort parsing inside a callback.
+ Added a GTK GUI example program grapper
+ Other minor bug fixes.
+
+2003-03-28 Raptor Version 0.9.9 Released
+
+ Performance improvements - uses less memory, less repeated small
+ malloc/free sequences, faster for larger files.
+ Added WWW retrieval - can parse from an URI as well as files, given
+ either libcurl or libxml2 is available.
+ Minor bug fixes.
+ Various Win32 configure, building patches
+ Sources updated to use autoconf 1.6+, automake 2.52+
+ More debian packaging updates.
+
+2003-02-13 Raptor Version 0.9.8 Released
+
+ Minor bug fixes (synchronising with Redland 0.9.12 release).
+ Fixed crashing on empty files
+ Fixed accepting illegal xmlns:prefix="" (prefix without URI not
+ allowed)
+ N-Triples bnodeIDs can now have '0's
+ Utility program rdfdump renamed to rapper; name conflicted with a
+ common Linux utility.
+
+2002-12-20 Raptor Version 0.9.7 Released
+
+ Passes about 90% of RDF Core WG Test Cases
+ All memory leaks fixed
+ Portability fixes - compilers, scripts, auto* tools, libxml2 version
+ rdf:ID syntax and duplicates checked
+ rdf:bagID supported
+ Added more conformance tests, errors and warnings.
+
+2002-11-02 Raptor Version 0.9.6 Released
+
+ Calling API changed to provide a common interface to the RDF parsers.
+ The libraptor.3 manual page describes the changes.
+ Added support for RDF datatyped literals in RDF/XML with rdf:datatype
+ attribute on property elements and N-Triples with the
+ "string"^^<datatypeURIref>.
+ Added support for rdf:parseType="Collection" for RDF Collections
+ URI class allows swappable implementation by applications.
+ URI class now handles file: URIs for Win32 and Unix conventions.
+ Fixes to enable it to work on Apple OSX 10.1, 10.2 (also tested working
+ on Linux/x86, Solaris/sparc, FreeBSD/x86)
+ Many internal changes to support API changes, allow it to work with
+ Redland when compiled as a separate library
+ Reorganised source into separate modules - URI, xml parser, ntriples
+ parser, XML namespaces, XML qnames, locator.
+ More resilience with XML errors and XML parser errors - none of
+ libxml2's XML test suite examples crash raptor.
+ N-Triples parser recovers gracefully from errors in content
+ Packing for debian included
+ Added manual pages libraptor.3 and rapper.1
+ Added raptor-config script for compiling with the library.
+
+2002-06-08 Raptor Version 0.9.5 Released
+
+ Many bugs fixed
+ Added full relative URI resolving
+ Work around bugs in libxml and expat (older versions)
+ Support libxml with the use of entities in the document
+ Support xml:lang passing to application
+
+2002-03-27 Raptor Version 0.9.4 Released
+
+ XML Base support (xml:base) added
+ xml:lang support added with N-Triples lang-string support
+ All N-Triples string escapes implemented
+ N-Triples support with XML literals - xml("<foo/>") and plain "foo"
+ removed all special code for containers; treated as regular typedNodes
+ rdf:parseType="Literal" now working
+ Builds as shared and static libraries
+ Conformance test suite added
+
+2001-08-21 Raptor Version 0.9.3 Released
+
+ N-Triples parser added
+ rdf:parseType="Literal" works much better (Aaron Michal and me)
+ DAML collections support added (Aaron Michal)
+ Win32 patch added - I can't confirm my merge didn't break this (Aaron
+ Michal)
+ N-Triples updated to support CR, LF and CR LF endings
+ Make parser generated ids appear distinguised from regular URIs
+ Added N-Triples output
+ Made rdf:type, rdf:value as property attributes work
+ Made empty typed nodes work
+ GNOME xml / libxml error location (line, column) values corrected.
+
+2001-07-03 Raptor Version 0.9.2 Released
+
+ Now called Raptor
+
+2001-06-06 Raptor Version 0.9.1 Released
+
+ Many bug fixes
+ Updates for Redland API changes
+ Fixed rdf:parsetype="Literal" buffer overrun
+ Added better XML parser auto-detection for various expats and libxml
+
+2001-01-22 Raptor Version 0.9.0 Released
+
+ First release
+ __________________________________________________________________
+
+ Copyright (C) 2001-2012 Dave Beckett
+ Copyright (C) 2001-2005 University of Bristol
diff --git a/NEWS.html b/NEWS.html
new file mode 100644
index 0000000..ab2b3c4
--- /dev/null
+++ b/NEWS.html
@@ -0,0 +1,801 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!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">
+<head>
+ <title>Raptor RDF Syntax Library - News</title>
+</head>
+<body>
+
+<h1 style="text-align:center">Raptor RDF Syntax Library - News</h1>
+
+<h2 id="D2012-06-24-V2.0.8">2012-06-24 Raptor2 Version 2.0.8 Released</h2>
+
+<p>
+Added support for <a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">RDFa 1.1</a> via updated <a href="https://github.com/rdfa/librdfa">librdfa</a><br />
+Multiple portability fixes for Windows and Solarises. (Daniel Richard G.)<br />
+Multiple minor fixes and improvements<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>:
+<a href="http://bugs.librdf.org/mantis/view.php?id=381">0000381</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=487">0000487</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=505">0000505</a> and
+<a href="http://bugs.librdf.org/mantis/view.php?id=507">0000507</a>
+</p>
+
+<p>See the <a href="RELEASE.html#rel2_0_8">Raptor2 2.0.8 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2012-03-22-V2.0.7">2012-03-22 Raptor2 Version 2.0.7 Released</h2>
+
+<p>CVE-2012-0037 fixed<br />
+Removed Expat support<br />
+Removed internal Unicode NFC code for better and optional <a href="http://www.icu-project.org/">ICU</a><br />
+Added options for denying file requests and XML entity loading<br />
+Added options for SSL certificate verifying<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>:
+<a href="http://bugs.librdf.org/mantis/view.php?id=448">0000448</a> and
+<a href="http://bugs.librdf.org/mantis/view.php?id=469">0000469</a>
+</p>
+
+<p>See the <a href="RELEASE.html#rel2_0_7">Raptor2 2.0.7 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2011-11-27-V2.0.6">2011-11-27 Raptor2 Version 2.0.6 Released</h2>
+
+<p>
+Fixed expat support which was broken in 2.0.5<br />
+Handle libCurl SSL options before 7.16.4 (2007)<br />
+Add a few sequence utility methods for sort, reverse and permute<br />
+</p>
+
+<p>See the <a href="RELEASE.html#rel2_0_6">Raptor2 2.0.6 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2011-11-14-V2.0.5">2011-11-14 Raptor2 Version 2.0.5 Released</h2>
+
+<p>All parsers and serializers use the <a href="http://www.w3.org/ns/formats/">W3C Format URIs</a> as their primary URI<br />
+N-Quads parser can now handle optional context/graph URI<br />
+Turtle serializer uses official <em>text/turtle</em> mime type<br />
+Added some additional UTF-8 and snprintf utility functions<br />
+No longer needs math functions trunc, lround and round.<br />
+Several internal code style fixes and cleanups<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>:
+<a href="http://bugs.librdf.org/mantis/view.php?id=465">0000465</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=476">0000476</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=479">0000479</a> and
+<a href="http://bugs.librdf.org/mantis/view.php?id=481">0000481</a>.
+</p>
+
+<p>See the <a href="RELEASE.html#rel2_0_5">Raptor2 2.0.5 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2011-07-25-V2.0.4">2011-07-25 Raptor2 Version 2.0.4 Released</h2>
+
+<p>RDF/JSON parser now supports <a href="http://lloyd.github.com/yajl/">YAJL</a> V2<br />
+Support libcurl 7.21.7 that removed the curl/types.h header<br />
+TRiG parser now supports the optional ':' in 'uri : { }' syntax<br />
+WWW module now supports setting SSL client side certificates<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>:
+<a href="http://bugs.librdf.org/mantis/view.php?id=308">0000308</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=449">0000449</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=451">0000451</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=455">0000455</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=456">0000456</a> and
+<a href="http://bugs.librdf.org/mantis/view.php?id=457">0000457</a>
+</p>
+
+
+<p>See the <a href="RELEASE.html#rel2_0_4">Raptor2 2.0.4 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2011-06-01-V2.0.3">2011-06-01 Raptor2 Version 2.0.3 Released</h2>
+
+<p>Added a <code>raptor2.h</code> header<br />
+Turtle / TRiG parser improvements for larger documents<br />
+Fixes from LLVM <a href="http://clang-analyzer.llvm.org/">clang</a> static code analyzer<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>:
+<a href="http://bugs.librdf.org/mantis/view.php?id=437">0000437</a>.
+</p>
+
+<p>See the <a href="RELEASE.html#rel2_0_3">Raptor2 2.0.3 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2011-03-20-V2.0.2">2011-03-20 Raptor2 Version 2.0.2 Released</h2>
+
+<p>Fixed a too strict version checking bug in <code>raptor_new_world()</code>
+</p>
+
+<p>See the <a href="RELEASE.html#rel2_0_2">Raptor2 2.0.2 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2011-03-20-V2.0.1">2011-03-20 Raptor Version 2.0.1 Released</h2>
+
+<p><b>DO NOT USE</b>. Use 2.0.2 which fixes a too strict version
+checking bug in <code>raptor_new_world()</code><br />
+Some minor fixes:<br />
+The N-Quads serializer was fixed to output the graph name correctly<br />
+The RDFa parser built with librdfa can now be linked with the standard librdfa<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>:
+<a href="http://bugs.librdf.org/mantis/view.php?id=416">0000416</a>.
+</p>
+
+<p>See the <a href="RELEASE.html#rel2_0_1">Raptor 2.0.1 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2011-01-03-V2.0.0">2011-01-03 Raptor Version 2.0.0 Released</h2>
+
+<p>Raptor 2 final release<br />
+Some minor API changes since the last beta.<br />
+Fixed reported <a href="http://bugs.librdf.org/">issue</a>:
+<a href="http://bugs.librdf.org/mantis/view.php?id=405">0000405</a>.
+</p>
+
+<p>The <a href="http://librdf.org/raptor/api/">Raptor 2 API reference manual</a>
+section on
+<a href="http://librdf.org/raptor/api/raptor-changes.html">Changes between raptor 1.4.21 and 2.0.0</a>
+provides detailed function, macro, enum and type changes.
+The <a href="UPGRADING.html">upgrading document</a>
+explains how to upgrade existing Raptor V1 code to the new APIs.
+</p>
+
+
+<p>See the <a href="RELEASE.html#rel2_0_0">Raptor 2.0.0 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2010-12-01-V1.9.1">2010-12-01 Raptor Version 1.9.1 Released</h2>
+
+<p>Raptor 2 second beta release with some API changes. 2.0.0 final expected next.<br />
+Improved the V1 to V2 upgrading script<br />
+raptor_new_world() checks Raptor header and library are consistent<br />
+Constructors now validate the world pointer is from Raptor V2<br />
+Added an N-Quads parser<br />
+Added and removed a few API calls<br />
+Fixed a few bugs including reported issue
+<a href="http://bugs.librdf.org/mantis/view.php?id=402">0000402</a>
+</p>
+
+<p>The <a href="http://librdf.org/raptor/api/">Raptor 2 API reference manual</a>
+section on
+<a href="http://librdf.org/raptor/api/raptor-changes.html">Changes between raptor 1.4.21 and 1.9.1</a>
+provides detailed function, macro, enum and type changes.
+The <a href="UPGRADING.html">upgrading document</a>
+explains how to upgrade existing Raptor V1 code to the new APIs.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_9_1">Raptor 1.9.1 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2010-08-16-V1.9.0">2010-08-16 Raptor Version 1.9.0 Released</h2>
+
+<p>Raptor 2 first beta release. There may be changes before a stable 2.0.0 API<br />
+Removed all deprecated functions and typedefs.<br />
+Renamed all functions to the standard <code>raptor_</code><em>class</em><code>_</code><em>method</em> form.<br />
+All constructors take a <code>raptor_world</code> argument.<br />
+URIs are interned and there is no longer a swappable implementation.<br />
+Statement is now an array of 3-4 RDF Terms to support triples and quads.<br />
+World object owns logging, blank node ID generation and describing syntaxes.<br />
+Features are now called options and have typed values.<br />
+GRDDL parser now saves and restores shared libxslt state.<br />
+Added serializers for HTML 'html' and N-Quads 'nquads'.<br />
+Added parser 'json' for JSON-Resource centric and JSON-Triples.<br />
+Switched to GIT version control <a href="http://github.com/dajobe/raptor">hosted by GitHub</a>.<br />
+Added memory-based AVL-Tree to the public API.<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>:
+<a href="http://bugs.librdf.org/mantis/view.php?id=357">0000357</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=361">0000361</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=369">0000369</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=370">0000370</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=373">0000373</a> and
+<a href="http://bugs.librdf.org/mantis/view.php?id=379">0000379</a>
+</p>
+
+<p>The <a href="http://librdf.org/raptor/api/">Raptor 2 API reference manual</a>
+section on
+<a href="http://librdf.org/raptor/api/raptor-changes.html">Changes between raptor 1.4.21 and 1.9.0</a>
+provides detailed function and type changes.
+The <a href="UPGRADING.html">upgrading document</a>
+explains how to upgrade existing Raptor V1 code to the new APIs.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_9_0">Raptor 1.9.0 Release Notes</a>
+for the full details of the changes.</p>
+
+
+
+<h2 id="D2010-01-30-V1.4.21">2010-01-30 Raptor Version 1.4.21 Released</h2>
+
+<p>This is a bug fix only release with no new features. New development has moved to raptor 2 where a planned ABI and API break is underway.<br />
+RDFa parser buffer management problems were fixed<br />
+Turtle parser and serializer now use QNames correctly against specification<br />
+RDF/XML parser now resets correctly to detect duplicate rdf:IDs<br />
+Made a few other minor bug and build fixes<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>:
+<a href="http://bugs.librdf.org/mantis/view.php?id=318">0000318</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=319">0000319</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=326">0000326</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=331">0000331</a>,
+<a href="http://bugs.librdf.org/mantis/view.php?id=332">0000332</a> and
+<a href="http://bugs.librdf.org/mantis/view.php?id=337">0000337</a>
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_21">Raptor 1.4.21 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2009-11-28-V1.4.20">2009-11-28 Raptor Version 1.4.20 Released</h2>
+
+<p>
+Turtle serializing performance improvement by Chris Cannam<br />
+librdfa RDFa parser updates to fix empty <code>datatype</code>, <code>xml:lang</code> and 1-char prefixes by Manu Sporny<br />
+Fix a crash when the GRDDL parser reported errors<br />
+Enable large file support for 32-bit systems<br />
+Several resilience improvements by Lauri Aalto<br />
+Other minor portability and bug fixes<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>:
+<a href="http://bugs.librdf.org/mantis/view.php?id=305">0000306</a>
+<a href="http://bugs.librdf.org/mantis/view.php?id=307">0000307</a>
+<a href="http://bugs.librdf.org/mantis/view.php?id=310">0000310</a>
+and <a href="http://bugs.librdf.org/mantis/view.php?id=312">0000312</a>.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_20">Raptor 1.4.20 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2009-07-19-V1.4.19">2009-07-19 Raptor Version 1.4.19 Released</h2>
+
+<p>
+Many improvements to RSS tag soup (RSSes and Atom) parser and the RSS 1.0 and Atom serializers<br />
+Several fixes and improvements to the N-Triples, RDFa and RDF/XML parsers and Turtle serializer<br />
+Improved the use and configuration of static libxml functions for better compatibility<br />
+Several Win32 portability fixes - Lou Sakey<br />
+Many internal changes for upcoming Raptor V2 - primarily by Lauri Aalto<br />
+Many other fixes and resilience improvements.<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>: <a href="http://bugs.librdf.org/mantis/view.php?id=259">0000259</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=262">0000262</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=263">0000263</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=266">0000266</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=269">0000269</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=270">0000270</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=276">0000276</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=277">0000277</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=287">0000287</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=288">0000288</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=289">0000289</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=290">0000290</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=293">0000293</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=296">0000296</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=299">0000299</a> and <a href="http://bugs.librdf.org/mantis/view.php?id=303">0000303</a>.
+</p>
+
+<p><strong>WARNING: FUTURE ABI and API CHANGES.</strong> The next
+release of raptor 1.4.x will include bug fixes only and no new
+features. New development will move to raptor 2 where a planned ABI
+and API break will happen. There may be preview releases of raptor 2
+with 1.9.x numbering.</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_19">Raptor 1.4.19 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2008-06-25-V1.4.18">2008-06-25 Raptor Version 1.4.18 Released</h2>
+
+<p>
+Added an <a href="http://www.w3.org/TR/2008/CR-rdfa-syntax-20080620/">RDFa</a> parser using an embedded version of <a href="http://rdfa.digitalbazaar.com/librdfa/">librdfa</a> by Manu Sporny of <a href="http://www.digitalbazaar.com/">Digital Bazaar</a>.<br />
+Added an Atom 1.0 (<a href="http://www.ietf.org/rfc/rfc4287.txt">RFC 4287</a>) serializer with several output parameters.<br />
+Improved RSS 1.0 serializer functionality and resilience.<br />
+Added new API methods for qname, serializer, sequence and XML writer classes.<br />
+Many other fixes and resilience improvements.<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>: <a href="http://bugs.librdf.org/mantis/view.php?id=186">0000186</a> and <a href="http://bugs.librdf.org/mantis/view.php?id=255">0000255</a>.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_18">Raptor 1.4.18 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2008-03-30-V1.4.17">2008-03-30 Raptor Version 1.4.17 Released</h2>
+
+<p>Added two new JSON serializers: resource-centric 'json'
+(Talis <a href="http://n2.talis.com/wiki/RDF_JSON_Specification">RDF/JSON</a>)
+and triple-centric 'json-triples'<br />
+Added a new public XML <a href="http://librdf.org/raptor/api/raptor-section-sax2.html">SAX2 API class</a><br />
+Added a new error handling structure<br />
+Made the <a href="http://librdf.org/raptor/api/raptor-section-iostream.html">I/O Stream class</a> support reading<br />
+Added several new API methods.<br />
+Made several fixes, portability and resilience improvements.<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>: <a href="http://bugs.librdf.org/mantis/view.php?id=252">0000252</a> and <a href="http://bugs.librdf.org/mantis/view.php?id=245">0000245</a>.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_17">Raptor 1.4.17 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2007-10-01-V1.4.16">2007-10-01 Raptor Version 1.4.16 Released</h2>
+
+<p>100% support for the <a href="http://www.w3.org/TR/2007/REC-grddl-20070911/">GRDDL W3C Recommendation of 2007-09-11</a><br />
+<a href="http://www.dajobe.org/2004/01/turtle/">Turtle</a> parser and serializer were updated to support <code>@base</code> from Turtle 2007-09-11.<br />
+Turtle and RDF/XML serializers had performance improvements for large graphs.<br />
+Added a TRiG Parser based on Turtle with named graph support.<br />
+Several other API changes, fixed and improvements were made.<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>: <a href="http://bugs.librdf.org/mantis/view.php?id=0000188">0000188</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000192">0000192</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000194">0000194</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000195">0000195</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000207">0000207</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000210">0000210</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000214">0000214</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000216">0000216</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000217">0000217</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000232">0000232</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000237">0000237</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000238">0000238</a> and <a href="http://bugs.librdf.org/mantis/view.php?id=0000239">0000239</a><br />
+Many other fixes and improvements.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_16">Raptor 1.4.16 Release Notes</a>
+for the full details of the changes.</p>
+
+
+
+<h2 id="D2007-03-26-V1.4.15">2007-03-26 Raptor Version 1.4.15 Released</h2>
+
+<p>GRDDL parser substantially updated to support the
+<a href="http://www.w3.org/TR/2007/WD-grddl-20070302/">GRDDL W3C Working Draft 2 March 2007</a><br />
+Errors for XML parsing and URI 404s are reported much better<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>: <a href="http://bugs.librdf.org/mantis/view.php?id=0000174">0000174</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000177">0000177</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000178">0000178</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000180">0000180</a><br />
+Many other minor fixes and improvements.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_15">Raptor 1.4.15 Release Notes</a>
+for the full details of the changes.</p>
+
+
+
+<h2 id="D2007-01-31-V1.4.14">2007-01-31 Raptor Version 1.4.14 Released</h2>
+
+<p>New <a href="http://www.dajobe.org/2004/01/turtle/">Turtle</a>
+serializer by <a href="http://codeson.net/">Dave Robillard</a> based on the existing RDF/XML-Abbrev serializer.<br />
+New GraphViz <a href="http://www.graphviz.org/doc/info/lang.html">DOT format</a>
+serializer by Evan Nemerson.<br />
+GRDDL parser now does namespace and profile URI recursion and
+has other improvements and fixes.<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>: <a href="http://bugs.librdf.org/mantis/view.php?id=32">0000032</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=141">0000141</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=143">0000143</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=148">0000148</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=155">0000155</a> and <a href="http://bugs.librdf.org/mantis/view.php?id=157">0000157</a><br />
+Many other fixes and improvements.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_14">Raptor 1.4.14 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2006-10-22-V1.4.13">2006-10-22 Raptor Version 1.4.13 Released</h2>
+
+<p>Fixed a memory leak in reusing the XML writer<br />
+Fixed reported issues: <a href="http://bugs.librdf.org/mantis/view.php?id=134">0000134</a><br />
+Minor updates and fixes to tutorial, configuration and build
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_13">Raptor 1.4.13 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2006-08-27-V1.4.12">2006-08-27 Raptor Version 1.4.12 Released</h2>
+
+<p>Restore serializer enumeration ordering back to that of 1.4.10
+which was causing Redland problems when writing type 'application/rdf+xml'.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_12">Raptor 1.4.12 Release Notes</a>
+for the gory details.</p>
+
+
+<h2 id="D2006-08-26-V1.4.11">2006-08-26 Raptor Version 1.4.11 Released</h2>
+
+<p>
+Added network request filtering for parsers<br />
+Improved the GRDDL parser to read <a href="http://research.talis.com/2005/erdf/wiki/Main/RdfInHtml">Embedded RDF</a> and <a href="http://microformats.org/wiki/hcalendar">HCalendar</a><br />
+The Guess parser can now be reused to do multiple guesses<br />
+The RSS 1.0 Serializer now works again<br />
+Fixed reported <a href="http://bugs.librdf.org/">issues</a>: <a href="http://bugs.librdf.org/mantis/view.php?id=0000014">0000014</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000041">0000041</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000089">0000089</a>, <a href="http://bugs.librdf.org/mantis/view.php?id=0000091">0000091</a> , <a href="http://bugs.librdf.org/mantis/view.php?id=0000110">0000110</a> and <a href="http://bugs.librdf.org/mantis/view.php?id=0000112">0000112</a><br />
+Made several other changes, fixes and improvements.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_11">Raptor 1.4.11 Release Notes</a>
+for the full details of the changes.</p>
+
+
+
+<h2 id="D2006-07-14-V1.4.10">2006-07-14 Raptor Version 1.4.10 Released</h2>
+
+<p>
+Fixed a crash with RSS Tag Soup parser generating triples too late<br />
+Fixed a crash with the RDF/XML parser and serializer if a comment was seen outside an element<br />
+Parsers no longer generate any triple parts of type <code>RAPTOR_IDENTIFIER_TYPE_ORDINAL</code><br />
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_10">Raptor 1.4.10 Release Notes</a>
+for the full details of the changes.</p>
+
+
+
+<h2 id="D2006-04-22-V1.4.9">2006-04-22 Raptor Version 1.4.9 Released</h2>
+
+<p>
+<a href="http://librdf.org/raptor/api/tutorial.html">Raptor Tutorial</a> added covering parsing and serializing with examples<br />
+<a href="http://librdf.org/raptor/api/reference-manual.html">Raptor Reference Manual</a> now covers 100% of the public API<br />
+<code>rapper</code> can now pretty-print RDF using namespaces as hints<br />
+<a href="http://www.dajobe.org/2004/01/turtle/">Turtle</a> parser gains boolean literals<br />
+Requests for content now send appropriate <code>Accept:</code> headers<br />
+No longer require libxml for rss-tag-soup parser<br />
+Various Win32 fixes and VC build files updates (John Barstow)<br />
+Many other bug fixes and changes were made.
+</p>
+
+<p>NOTE:
+Generation of <code>RAPTOR_IDENTIFIER_TYPE_PREDICATE</code>
+was removed as deprecated in 1.4.8.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_9">Raptor 1.4.9 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2006-01-03-V1.4.8">2006-01-03 Raptor Version 1.4.8 Released</h2>
+
+<p>RSS Tag Soup parser now reads Atom 1.0 and rewrites old Atom 0.3 terms<br />
+Added a <em>guess</em> parser that picks the parser to use based on protocol information such as HTTP <code>Content-Type</code><br />
+Created an enhanced API reference manual with <code>gtk-doc</code><br />
+Serializers to build can now be selected at configure time<br />
+Parsers can now return the namespace prefix/URIs seen in parsing<br />
+Turtle parser update to version 2006-01-02
+(<a href="http://www.dajobe.org/2004/01/turtle/">announcement</a>)<br />
+Fix for URI resolution bugs (win32 fix by John Barstow)<br />
+Several parser bug fixes for RDF/XML, RSS and GRDDL<br />
+RDF/XML serializers and XML writer can write XML 1.0 or XML 1.1<br />
+Added an alpha Atom 1.0 serializer<br />
+Added an Adobe XMP (RDF/XML profile) serializer<br />
+Internal source reorganisation<br />
+Many other changes, fixes and improvements.
+</p>
+
+<p><strong>NOTE</strong>: Raptor will be switching to use
+<a href="http://subversion.tigris.org/">Subversion</a>
+for version control after the 1.4.8 release.
+See the <a href="http://svn.librdf.org/">Redland Subversion site</a>
+or the online
+<a href="http://librdf.org/raptor/INSTALL.html">Raptor installation notes</a>
+for the latest information.
+</p>
+
+
+<p>See the <a href="RELEASE.html#rel1_4_8">Raptor 1.4.8 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2005-06-08-V1.4.7">2005-06-08 Raptor Version 1.4.7 Released</h2>
+
+<p>Fix crashes in the RSS tag soup parser / serializer (Suzan Foster)<br />
+Fix a crash in the RDF/XML serializers with bad URI predicates.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_7">Raptor 1.4.7 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2005-05-19-V1.4.6">2005-05-19 Raptor Version 1.4.6 Released</h2>
+
+<p>Added a <a href="http://www.w3.org/2004/01/rdxh/spec">Gleaning Resource Descriptions from Dialects of Languages (GRDDL)</a> parser for reading XHTML and XML as RDF triples<br />
+Updated RSS enclosures support in RSS tag soup parser and RSS 1.0 serializer (Suzan Foster)<br />
+Fixed several crashes with RSS tag soup parser, RDF/XML-abbrev serializer.<br />
+The turtle parser now accepts """long literals"""
+</p>
+
+
+<p>See the <a href="RELEASE.html#rel1_4_6">Raptor 1.4.6 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2005-02-06-V1.4.5">2005-02-06 Raptor Version 1.4.5 Released</h2>
+
+<p>Added an <em>RDF/XML with abbreviations</em> serializer (Steve Shepard)<br />
+Handle <a href="http://inamidst.com/rss1.1/">RSS 1.1</a> in RSS tag soup parser<br />
+More fixes for broken OSX libxml2
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_5">Raptor 1.4.5 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2005-01-15-V1.4.4">2005-01-15 Raptor Version 1.4.4 Released</h2>
+
+<p>Fixed crashes in RSS tag soup parser and RSS 1.0 serializer<br />
+Handle RSS 0.9 namespace in RSS tag soup parser<br />
+Portability fixes for Win32 (Dave Viner)
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_4">Raptor 1.4.4 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2005-01-03-V1.4.3">2005-01-03 Raptor Version 1.4.3 Released</h2>
+<p>New XML Writer API<br />
+Improved RDF/XML serializer allowing user namespace declarations
+and writing relative URIs where possible<br />
+New <a href="http://purl.org/rss/1.0/spec">RSS 1.0</a> serializer<br />
+Updated RSS tag soup parser<br />
+URI class can write relative URIs (Patch from René Puls)<br />
+Many other API changes
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_3">Raptor 1.4.3 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2004-11-01-V1.4.2">2004-11-01 Raptor Version 1.4.2 Released</h2>
+<p>Fix <code>raptor_xml_escape_string</code> error return.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_2">Raptor 1.4.2 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2004-10-29-V1.4.1">2004-10-29 Raptor Version 1.4.1 Released</h2>
+<p>
+Fixed crashes in URI decoding and RSS enclosures.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_1">Raptor 1.4.1 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2004-10-24-V1.4.0">2004-10-24 Raptor Version 1.4.0 Released</h2>
+<p>
+Added a serializing class for writing RDF triples as a syntax<br />
+Added serializers for RDF/XML and N-Triples<br />
+Added an I/O stream class for aiding writing<br />
+Added RSS enclosure support to RSS Tag Soup parser (Suzan Foster)
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_4_0">Raptor 1.4.0 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2004-09-20-V1.3.3">2004-09-20 Raptor Version 1.3.3 Released</h2>
+<p>
+License changed to LGPL 2.1/Apache 2<br />
+Added a new Unicode NFC checker<br />
+Rewritten URI parsing and resolving code<br />
+Added configure selection of RDF parsers<br />
+Updated the RSS Tag Soup parser to handle Atom 0.3<br />
+Updated the Turtle parser to handle large documents (Geoff Chappell)<br />
+Added a parser feature to disable rdf:ID duplicate checking<br />
+Updated rdf:ID duplicate value checking implementation<br />
+Portability fixes for building on win32 (Chris Pointon)<br />
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_3_3">Raptor 1.3.3 Release Notes</a>
+for the full details of the changes.</p>
+
+<h2 id="D2004-07-21-V1.3.2">2004-07-21 Raptor Version 1.3.2 Released</h2>
+<p>Added support for compiling against expat source trees (Mark Smith)<br />
+Added <code>raptor_alloc_memory</code> to allocate memory in raptor,
+typically needed by handler routines on win32.<br />
+Make errors in fetching WWW content pass to the main error handler.<br />
+Added accessor functions for parts of the raptor_locator structure (Edd Dumbill)<br />
+Disabled the broken Unicode NFC checking via GNOME glib for this release.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_3_2">Raptor 1.3.2 Release Notes</a>
+for the full details of the changes.</p>
+
+<h2 id="D2004-06-12-V1.3.1">2004-06-12 Raptor Version 1.3.1 Released</h2>
+<p>
+Correct <code>raptor_print_statement</code> declaration argument
+statement to have one less 'const', to match the code.<br />
+raptor.h now includes stdarg.h<br />
+Portability fixes for win32<br />
+Updates to
+<a href="http://www.dajobe.org/2004/01/turtle/">Turtle</a>
+parser to only allow language with non-datatyped literals;
+allow a '_' immediately after a ':' in qnames and make
+bare ':' work.<br />
+Added a warning for unknown <code>rdf:parseType</code> values, when
+parsing in lax mode. This is controlled by a new parser feature
+warn_other_parsetypes<br />
+The Turtle parser was fixed to re-initialise correctly when performing
+multiple parsings<br />
+Fixes to the file: URI support for %-escaping and for Win32 filenames
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_3_1">Raptor 1.3.1 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2004-05-11-V1.3.0">2004-05-11 Raptor Version 1.3.0 Released</h2>
+<p>
+Updated <a href="http://www.dajobe.org/2004/01/turtle/">Turtle</a> parser to fix the collections syntax, add integer literals and allow - in names.<br />
+Added support for guessing a parser from content or identifiers<br />
+Completed parser feature support<br />
+Added sending HTTP Accept: headers for WWW retrieval when possible<br />
+Added new utility sequence and stringbuffer classes<br />
+Several other functions added and improvements made.
+</p>
+
+<p>See the <a href="RELEASE.html#rel1_3_0">Raptor 1.3.0 Release Notes</a>
+for the full details of the changes.</p>
+
+
+<h2 id="D2004-01-24-V1.2.0">2004-01-24 Raptor Version 1.2.0 Released</h2>
+<p>Added a
+<a href="http://www.dajobe.org/2004/01/turtle/">Turtle</a> parser (was N-Triples Plus) now with collections.<br />
+Added raptor_syntaxes_enumerate to get syntax name, label,
+mime_type or uri_string of all known parsers.<br />
+Added WWW access via BSD libfetch if available.<br />
+Updated the GNOME GUI grapper program to report errors and warnings<br />
+</p>
+
+<h2 id="D2003-12-31-V1.1.0">2003-12-31 Raptor Version 1.1.0 Released</h2>
+<p>Added an
+<a href="http://www.dajobe.org/2003/11/ntriplesplus/">N-Triples Plus</a> parser<br />
+Updated for <a href="http://www.w3.org/TR/2003/WD-rdf-syntax-grammar-20031010/">RDF/XML Revised Working Draft</a> (10 October 2003) allowing <code>rdf:RDF</code> to be optional by default. No further changes were needed for <a href="http://www.w3.org/TR/2003/PR-rdf-syntax-grammar-20031215/">RDF/XML Revised Proposed Recommendation</a> (15 December 2003)<br />
+Made URI class constructors, methods and factory methods as
+well as some other utility functions using or returning URIs or
+literals take <code>unsigned char*</code> rather than <code>char*</code>.<br />
+Added the XML namespace, XML namespace stack and XML qname classes to
+the public API.<br />
+Added a function to discover supported parsers.<br />
+Fixes for line number counting in N-Triples<br />
+Added support for libxml2 SAX2 API for 2.6.0 and later.<br />
+The N-Triples parser now uses the generate ID code.<br />
+Added configure options for XML 1.1 names and disabling NFC check code.
+</p>
+
+<h2 id="D2003-09-08-V1.0.0">2003-09-08 Raptor Version 1.0.0 Released</h2>
+<p>
+Several long-deprecated functions were removed and consequently the
+library shared version number was increased to 1<br />
+Fixed scanning for <code>rdf:RDF</code> so that RDF/XML in other
+XML works, such as in SVG<br />
+<code>raptor-config --libs</code> now works, added <code>--libtool-libs</code>
+and <code>--version-decimal</code><br />
+Check N-Triples legal Unicode character range #x0-#x10FFFF<br />
+Normalize RDF/XML <code>xml:lang</code> and N-Triples language to lowercase
+on input<br />
+Worked around libxml2 bug causing a crash on some error reporting<br />
+Added raptor_parse_file_stream for parsing a C FILE*<br />
+Tidied rapper utility argument handling, added --version
+</p>
+
+<h2 id="D2003-08-25-V0.9.12">2003-08-25 Raptor Version 0.9.12 Released</h2>
+<p>Fix some XML memory leaks in Exclusive XML Canonicalization.<br />
+Stop parsing RSS tag soup after a user abort<br />
+Improved N-Triples syntax checking.<br />
+Crash fixes for 64 bit Alpha/Sparc Linux/Solaris (varargs, size_t)<br />
+Fixed some other minor memory leaks with <tt>rdf:datatype</tt> and <tt>rdf:ID</tt> attributes.
+</p>
+
+<h2 id="D2003-07-29-V0.9.11">2003-07-29 Raptor Version 0.9.11 Released</h2>
+<p>Completely handles the <a href="http://www.w3.org/TR/rdf-syntax-grammar">revised RDF/XML syntax</a>
+(including post W3C Last Call changes)<br />
+Added Unicode Normal Form C (NFC) checking for literals (requires
+GNOME glib 2.0 at present)<br />
+Added Exclusive XML Canonicalization for XML Literals<br />
+Added many more checks for bad syntax (mostly illegal property
+attributes)<br />
+Updated <tt>parseType="Collection"</tt> triples after RDF Core WG change<br />
+Added an experimental RSS Tag Soup parser to read any pile of XML that has
+elements such as channel, image, item tags with title, description
+etc inside them into coherent RSS 1.0 RDF triples.
+(Requires libxml 2.5.0 or newer)<br />
+API: Added new methods raptor_get_name, raptor_get_label.<br />
+API: Added new methods raptor_set_default_generate_id_parameters and
+raptor_set_generate_id_handler to control generation of IDs.<br />
+API: Modified utility function raptor_xml_escape_string arguments.<br />
+Ripped out ISO 3166 country code parts since commercial use might be
+subject to a license fee.<br />
+Improvements to GTK example 'grapper'.<br />
+Several internal reorganisations for pulling out a SAX2 API, XML C14N.<br />
+Other minor bug fixes.
+</p>
+
+<h2 id="D2003-04-17-V0.9.10">2003-04-17 Raptor Version 0.9.10 Released</h2>
+<p>Added parser lax / strict modes. lax is the default.<br />
+<tt>rdf:bagID</tt> now generates a warning in lax mode, an error in strict<br />
+Added raptor_www_no_www_library_init_finish to allow disabling of
+WWW library startup/shutdown.<br />
+Added raptor_parse_abort to abort parsing inside a callback.<br />
+Added a GTK GUI example program grapper<br />
+Other minor bug fixes.<br />
+</p>
+
+<h2 id="D2003-03-28-V0.9.9">2003-03-28 Raptor Version 0.9.9 Released</h2>
+<p>Performance improvements - uses less memory,
+less repeated small malloc/free sequences, faster for larger files.<br />
+Added WWW retrieval - can parse from an URI as well as files, given
+either <a href="http://curl.haxx.se/libcurl/">libcurl</a> or <a href="http://xmlsoft.org/">libxml2</a> is available.<br />
+Minor bug fixes.<br />
+Various Win32 configure, building patches<br />
+Sources updated to use autoconf 1.6+, automake 2.52+<br />
+More debian packaging updates.
+</p>
+
+<h2 id="D2003-02-13-V0.9.8">2003-02-13 Raptor Version 0.9.8 Released</h2>
+<p>Minor bug fixes (synchronising with Redland 0.9.12 release).<br />
+Fixed crashing on empty files<br />
+Fixed accepting illegal <tt>xmlns:prefix=""</tt> (prefix without URI not allowed)<br />
+N-Triples bnodeIDs can now have '0's<br />
+Utility program rdfdump renamed to rapper; name conflicted with a common
+Linux utility.
+</p>
+
+<h2 id="D2002-12-20-V0.9.7">2002-12-20 Raptor Version 0.9.7 Released</h2>
+<p>Passes about 90% of <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/">RDF Core WG Test Cases</a><br />
+All memory leaks fixed<br />
+Portability fixes - compilers, scripts, auto* tools, libxml2 version<br />
+<tt>rdf:ID</tt> syntax and duplicates checked<br />
+<tt>rdf:bagID</tt> supported<br />
+Added more conformance tests, errors and warnings.
+</p>
+
+<h2 id="D2002-11-02-V0.9.6">2002-11-02 Raptor Version 0.9.6 Released</h2>
+<p><b>Calling API changed</b> to provide a common interface to
+the RDF parsers. The libraptor.3 manual page describes the changes.<br />
+Added support for RDF datatyped literals in
+<a href="http://www.w3.org/TR/rdf-syntax-grammar">RDF/XML</a> with
+<tt>rdf:datatype</tt> attribute on property elements and
+<a href="http://www.w3.org/2001/08/rdf-test/#ntriples">N-Triples</a>
+with the <tt>"string"^^&lt;datatypeURIref&gt;</tt>.<br />
+Added support for <tt>rdf:parseType="Collection"</tt> for RDF Collections<br />
+URI class allows swappable implementation by applications.<br />
+URI class now handles file: URIs for Win32 and Unix conventions.<br />
+Fixes to enable it to work on Apple OSX 10.1, 10.2
+(also tested working on Linux/x86, Solaris/sparc, FreeBSD/x86)<br />
+Many internal changes to support API changes, allow it to work
+with Redland when compiled as a separate library<br />
+Reorganised source into separate modules - URI, xml parser,
+ntriples parser, XML namespaces, XML qnames, locator.<br />
+More resilience with XML errors and XML parser errors - none of
+libxml2's XML test suite examples crash raptor.<br />
+<a href="http://www.w3.org/2001/08/rdf-test/#ntriples">N-Triples</a>
+parser recovers gracefully from errors in content<br />
+Packing for debian included<br />
+Added manual pages libraptor.3 and rapper.1<br />
+Added raptor-config script for compiling with the library.
+</p>
+
+
+<h2 id="D2002-06-08-V0.9.5">2002-06-08 Raptor Version 0.9.5 Released</h2>
+<p>Many bugs fixed<br />
+Added full relative URI resolving<br />
+Work around bugs in libxml and expat (older versions)<br />
+Support libxml with the use of entities in the document<br />
+Support <tt>xml:lang</tt> passing to application
+</p>
+
+<h2 id="D2002-03-27-V0.9.4">2002-03-27 Raptor Version 0.9.4 Released</h2>
+<p>XML Base support (xml:base) added<br />
+xml:lang support added with <a href="http://www.w3.org/2001/08/rdf-test/#langString">N-Triples lang-string</a> support<br />
+All <a href="http://www.w3.org/2001/08/rdf-test/#ntrip_strings">N-Triples string escapes</a> implemented<br />
+<a href="http://www.w3.org/2001/08/rdf-test/#ntriples">N-Triples</a> support with <a href="http://www.w3.org/2001/08/rdf-test/#xmlString">XML literals</a> - xml("&lt;foo/&gt;") and plain "foo"<br />
+removed all special code for containers; treated as regular typedNodes<br />
+<tt>rdf:parseType="Literal"</tt> now working<br />
+Builds as shared and static libraries<br />
+Conformance test suite added
+</p>
+
+<h2 id="D2001-08-21-V0.9.3">2001-08-21 Raptor Version 0.9.3 Released</h2>
+<p><a href="http://www.w3.org/TR/rdf-testcases/#ntriples">N-Triples</a>
+parser added<br />
+<tt>rdf:parseType="Literal"</tt> works much better (Aaron Michal and me)<br />
+DAML collections support added (Aaron Michal)<br />
+Win32 patch added - I can't confirm my merge didn't break this (Aaron Michal)<br />
+<a href="http://www.w3.org/TR/rdf-testcases/#ntriples">N-Triples</a> updated to support CR, LF and CR LF endings<br />
+Make parser generated ids appear distinguised from regular URIs<br />
+Added <a href="http://www.w3.org/TR/rdf-testcases/#ntriples">N-Triples</a> output<br />
+Made rdf:type, rdf:value as property attributes work<br />
+Made empty typed nodes work<br />
+GNOME xml / libxml error location (line, column) values corrected.
+</p>
+
+<h2 id="D2001-07-03-V0.9.2">2001-07-03 Raptor Version 0.9.2 Released</h2>
+<p>Now called Raptor</p>
+
+<h2 id="D2001-06-06-V0.9.1">2001-06-06 Raptor Version 0.9.1 Released</h2>
+<p>Many bug fixes<br />
+Updates for Redland API changes<br />
+Fixed <tt>rdf:parsetype="Literal"</tt> buffer overrun<br />
+Added better XML parser auto-detection for various expats and libxml
+</p>
+
+<h2 id="D2001-01-22-V0.9.0">2001-01-22 Raptor Version 0.9.0 Released</h2>
+<p>First release</p>
+
+<hr />
+
+<p>Copyright (C) 2001-2012 <a href="http://www.dajobe.org/">Dave Beckett</a><br />Copyright (C) 2001-2005 <a href="http://www.bristol.ac.uk/">University of Bristol</a></p>
+
+</body>
+</html>
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..8c90e22
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,3 @@
+This product includes Redland software (http://librdf.org/)
+developed at the Institute for Learning and Research Technology,
+University of Bristol, UK (http://www.bristol.ac.uk/).
diff --git a/README b/README
new file mode 100644
index 0000000..027d299
--- /dev/null
+++ b/README
@@ -0,0 +1,195 @@
+ #DOAP
+
+ Raptor RDF Syntax Library
+
+Dave Beckett
+
+Overview
+
+ Raptor is a free software / Open Source C library that provides a set
+ of parsers and serializers that generate Resource Description Framework
+ (RDF) triples by parsing syntaxes or serialize the triples into a
+ syntax. The supported parsing syntaxes are RDF/XML, N-Quads, N-Triples,
+ TRiG, Turtle, RDFa 1.0 and 1.1, RSS tag soup including all versions of
+ RSS, Atom 1.0 and 0.3, GRDDL and microformats for HTML, XHTML and XML.
+ The serializing syntaxes are RDF/XML (regular, and abbreviated), Atom
+ 1.0, GraphViz, JSON, N-Quads, N-Triples, RSS 1.0 and XMP.
+
+ Raptor was designed to work closely with the Redland RDF library (RDF
+ Parser Toolkit for Redland) but is entirely separate. It is a portable
+ library that works across many POSIX systems (Unix, GNU/Linux, BSDs,
+ OSX, cygwin, win32).
+
+ A summary of the changes can be found in the NEWS file, detailed API
+ changes in the release notes and file-by-file changes in the ChangeLog.
+
+ Details of upgrading from Raptor 1 as described in the Upgrading
+ document.
+ * Designed to integrate well with Redland
+ * Parses content on the web if libcurl, libxml2 or BSD libfetch is
+ available.
+ * Supports all RDF terms including datatyped and XML literals
+ * Optional features including parsers and serialisers can be selected
+ at configure time.
+ * Language bindings to Perl, PHP, Python and Ruby when used via
+ Redland
+ * No memory leaks
+ * Fast
+ * Standalone rapper RDF parser utility program
+
+ Known bugs and issues are recorded in the Redland issue tracker.
+
+Parsers
+
+ RDF/XML Parser
+
+ A Parser for the standard RDF/XML syntax.
+ * Fully handles the RDF/XML syntax updates for XML Base, xml:lang,
+ RDF datatyping and Collections.
+ * Handles all RDF vocabularies such as FOAF, RSS 1.0, Dublin Core,
+ OWL, DOAP
+ * Handles rdf:resource / resource attributes
+ * Uses libxml XML parser
+
+ N-Quads Parser
+
+ A parser for the N-Quads extension to N-Triples, providing an optional
+ 4th context graph term at the end of the line when a triple is
+ associated with a named graph.
+
+ N-Triples Parser
+
+ A parser for the N-Triples syntax as defined by the W3C RDF Core
+ working group for the RDF Test Cases.
+
+ Turtle Parser
+
+ A parser for the Turtle Terse RDF Triple Language syntax, designed as a
+ useful subset of Notation 3.
+
+ TRiG Parser
+
+ A parser for the TriG - Turtle with Named Graphs syntax.
+
+ The parser is alpha quality and may not support the entire TRiG
+ specification.
+
+ RSS "tag soup" parser
+
+ A parser for the multiple XML RSS formats that use the elements such as
+ channel, item, title, description in different ways. Attempts to turn
+ the input into RSS 1.0 RDF triples. True RSS 1.0, as a full RDF
+ vocabulary, is best parsed by the RDF/XML parser. It also generates
+ triples for RSS enclosures.
+
+ This parser also provides support for the Atom 1.0 syndication format
+ defined in IETF RFC 4287
+
+ GRDDL and microformats parser
+
+ A parser/processor for Gleaning Resource Descriptions from Dialects of
+ Languages (GRDDL) syntax, W3C Recommendation of 2007-09-11 which allows
+ reading XHTML and XML as RDF triples by using profiles in the document
+ that declare XSLT transforms from the XHTML or XML content into RDF/XML
+ or other RDF syntax which can then be parsed. It uses either an XML or
+ a lax HTML parser to allow HTML tag soup to be read.
+
+ The parser passes the all the GRDDL tests as of Raptor 1.4.16.
+
+ The parser also handles hCard and hReview using public XSL sheets.
+
+ RDFa parser
+
+ A parser for RDFa 1.0 (W3C Recommendation 14 October 2008) and RDFa 1.1
+ (W3C Recommendation 07 June 2012) implemented via librdfa linked inside
+ Raptor. librdfa was, written primarily by Manu Sporny of Digital Bazaar
+ and is licensed with the same license as Raptor.
+
+ As of Raptor 2.0.8 the RDFa parser passes all of the RDFa 1.0 test
+ suite except for 4 tests and all of the RDFa 1.1 test suite except for
+ 30 tests.
+
+Serializers
+
+ RDF/XML Serializer
+
+ A serializer to the standard RDF/XML syntax as revised by the W3C RDF
+ Core working group in 2004. This writes a plain triple-based RDF/XML
+ serialization with no optimisation or pretty-printing.
+
+ A second serializer is provided using several of the RDF/XML
+ abbreviations to provide a more compact readable format, at the cost of
+ some pre-processing. This is suitable for small documents.
+
+ N-Quads Serializer
+
+ A serializer to the N-Quads extension to N-Triples, providing an
+ optional 4th context graph term at the end of the line when a triple is
+ associated with a named graph.
+
+ N-Triples Serializer
+
+ A serializer to the N-Triples syntax as used by the W3C RDF Core
+ working group for the RDF Test Cases.
+
+ Atom 1.0 Serializer
+
+ A serializer to the Atom 1.0 syndication format defined in IETF RFC
+ 4287.
+
+ JSON Serializers
+
+ Two serializers for to write triples encoded in JSON, one (json) in a
+ resource-centric abbreviated form RDF/JSON like Turtle or
+ RDF/XML-Abbreviated; the other a triple-centric format (json-triples)
+ based on the SPARQL results in JSON format.
+
+ GraphViz DOT Serializer
+
+ An serializer to the GraphViz DOT format which aids visualising RDF
+ graphs.
+
+ RSS 1.0 Serializer
+
+ A serializer to the RDF Site Summary (RSS) 1.0 format.
+
+ Turtle Serializer
+
+ A serializer for the Turtle Terse RDF Triple Language syntax.
+
+ XMP Serializer
+
+ An alpha quality serializer to the Adobe XMP profile of RDF/XML
+ suitable for embedding inside an external document.
+
+Documentation
+
+ The public API is described in the libraptor.3 UNIX manual page. It is
+ demonstrated in the rapper utility program which shows how to call the
+ parser and write the triples in a serialization. When Raptor is used
+ inside Redland, the Redland documentation explains how to call the
+ parser and contains several example programs. There are also further
+ examples in the example directory of the distribution.
+
+ To install Raptor see the Installation document.
+
+Sources
+
+ The packaged sources are available from
+ http://download.librdf.org/source/ (master site) and also from the
+ SourceForge site. The development GIT sources can also be browsed at
+ GitHub or checked out at git://github.com/dajobe/raptor.git
+
+License
+
+ This library is free software / open source software released under the
+ LGPL (GPL) or Apache 2.0 licenses. See LICENSE.html for full details.
+
+Mailing Lists
+
+ The Redland mailing lists discusses the development and use of Raptor
+ and Redland as well as future plans and announcement of releases.
+ __________________________________________________________________
+
+ Copyright (C) 2000-2012 Dave Beckett
+ Copyright (C) 2000-2005 University of Bristol
diff --git a/README.html b/README.html
new file mode 100644
index 0000000..dd01025
--- /dev/null
+++ b/README.html
@@ -0,0 +1,307 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!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">
+<head>
+ <title>Raptor RDF Syntax Library</title>
+ <link rel="meta" type="application/rdf+xml" title="DOAP" href="raptor.rdf" />
+</head>
+<body>
+
+<h1 style="text-align:center">Raptor RDF Syntax Library</h1>
+<h2 style="text-align:center"><a href="http://www.dajobe.org/">Dave Beckett</a></h2>
+
+
+<h2>Overview</h2>
+
+<p><a href="http://librdf.org/raptor/">Raptor</a>
+is a free software / Open Source C library that provides
+a set of parsers and serializers that
+generate Resource Description Framework (RDF) triples
+by parsing syntaxes or serialize the triples into a syntax.
+The supported parsing syntaxes are RDF/XML, N-Quads, N-Triples, TRiG,
+Turtle, RDFa 1.0 and 1.1, RSS tag soup including all versions of RSS,
+Atom 1.0 and 0.3, GRDDL and microformats for HTML, XHTML and XML.
+The serializing syntaxes are RDF/XML (regular, and abbreviated), Atom
+1.0, GraphViz, JSON, N-Quads, N-Triples, RSS 1.0 and XMP.
+</p>
+
+<p>Raptor was designed to work closely with the
+<a href="http://librdf.org/">Redland RDF library</a>
+(<b>R</b>DF <b>P</b>arser <b>T</b>oolkit f<b>o</b>r <b>R</b>edland)
+but is entirely separate. It is a portable library that works
+across many POSIX systems (Unix, GNU/Linux, BSDs, OSX, cygwin, win32).
+</p>
+
+<p>A summary of the changes can be found in the
+<a href="NEWS.html">NEWS</a> file,
+detailed API changes in the <a href="RELEASE.html">release notes</a>
+and file-by-file changes in the <a href="ChangeLog">ChangeLog</a>.
+</p>
+
+<p>Details of upgrading from Raptor 1 as described in the
+<a href="UPGRADING.html">Upgrading document</a>.
+</p>
+
+<ul>
+<li>Designed to integrate well with <a href="http://librdf.org/">Redland</a></li>
+<li>Parses content on the web if <a href="http://curl.haxx.se/libcurl/">libcurl</a>, <a href="http://xmlsoft.org/">libxml2</a> or BSD libfetch is available.</li>
+<li>Supports all RDF terms including datatyped and XML literals</li>
+<li>Optional features including parsers and serialisers can be selected at configure time.</li>
+<li>Language bindings to Perl, PHP, Python and Ruby when used via Redland</li>
+<li>No memory leaks</li>
+<li>Fast</li>
+<li>Standalone <a href="rapper.html">rapper</a> RDF parser utility program</li>
+</ul>
+
+<p>Known bugs and issues are recorded in the
+<a href="http://bugs.librdf.org/">Redland issue tracker</a>.
+</p>
+
+
+
+<h2>Parsers</h2>
+
+<h3>RDF/XML Parser</h3>
+
+<p>A Parser for the standard
+<a href="http://www.w3.org/TR/rdf-syntax-grammar/">RDF/XML syntax</a>.
+</p>
+<ul>
+<li>Fully handles the <a href="http://www.w3.org/TR/rdf-syntax-grammar/">RDF/XML syntax updates</a> for <a href="http://www.w3.org/TR/xmlbase/">XML Base</a>, <code>xml:lang</code>, RDF datatyping and Collections.</li>
+<li>Handles all RDF vocabularies such as <a href="http://www.foaf-project.org/">FOAF</a>, <a href="http://www.purl.org/rss/1.0/">RSS 1.0</a>, <a href="http://dublincore.org/">Dublin Core</a>, <a href="http://www.w3.org/TR/owl-features/">OWL</a>, <a href="http://usefulinc.com/doap">DOAP</a></li>
+<li>Handles <code>rdf:resource</code> / <code>resource</code> attributes</li>
+<li>Uses <a href="http://xmlsoft.org/">libxml</a> XML parser</li>
+</ul>
+
+
+<h3>N-Quads Parser</h3>
+
+<p>A parser for the
+<a href="http://sw.deri.org/2008/07/n-quads/">N-Quads</a>
+extension to N-Triples, providing an optional 4th context graph term
+at the end of the line when a triple is associated with a named graph.
+</p>
+
+
+<h3>N-Triples Parser</h3>
+
+<p>A parser for the
+<a href="http://www.w3.org/TR/rdf-testcases/#ntriples">N-Triples</a>
+syntax as defined by the
+<a href="http://www.w3.org/2001/sw/RDFCore/">W3C RDF Core working group</a>
+for the <a href="http://www.w3.org/TR/rdf-testcases/">RDF Test Cases</a>.
+</p>
+
+
+<h3>Turtle Parser</h3>
+
+<p>A parser for the
+<a href="http://www.dajobe.org/2004/01/turtle/">Turtle Terse RDF Triple Language</a>
+syntax, designed as a useful subset of
+<a href="http://www.w3.org/DesignIssues/Notation3">Notation 3</a>.
+</p>
+
+
+<h3>TRiG Parser</h3>
+
+<p>A parser for the
+<a href="http://www.wiwiss.fu-berlin.de/suhl/bizer/TriG/Spec/">TriG - Turtle with Named Graphs</a>
+syntax.
+</p>
+
+<p>The parser is alpha quality and may not support the entire TRiG
+specification.
+</p>
+
+
+<h3>RSS "tag soup" parser</h3>
+
+<p>A parser for the multiple XML RSS formats that use the elements
+such as channel, item, title, description in different ways.
+Attempts to turn the input into
+<a href="http://www.purl.org/rss/1.0/">RSS 1.0</a>
+RDF triples. True <a href="http://www.purl.org/rss/1.0/">RSS 1.0</a>,
+as a full RDF vocabulary, is best parsed by the RDF/XML parser.
+It also generates triples for RSS enclosures.
+</p>
+
+<p>This parser also provides support for the Atom 1.0 syndication
+format defined in IETF
+<a href="http://www.ietf.org/rfc/rfc4287.txt">RFC 4287</a>
+</p>
+
+
+<h3>GRDDL and microformats parser</h3>
+
+<p>A parser/processor for
+<a href="http://www.w3.org/TR/2007/REC-grddl-20070911/">Gleaning Resource Descriptions from Dialects of Languages (GRDDL)</a>
+syntax, W3C Recommendation of 2007-09-11 which allows reading XHTML
+and XML as RDF triples by using profiles in the document that declare
+XSLT transforms from the XHTML or XML content into RDF/XML or other
+RDF syntax which can then be parsed. It uses either an XML or
+a lax HTML parser to allow HTML tag soup to be read.
+</p>
+
+<p>The parser passes the all the GRDDL tests as of Raptor 1.4.16.
+</p>
+
+<p>The parser also handles hCard and hReview using public XSL sheets.
+</p>
+
+
+<h3>RDFa parser</h3>
+
+<p>A parser for
+<a href="http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014/">RDFa 1.0</a>
+(W3C Recommendation 14 October 2008) and
+<a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">RDFa 1.1</a>
+(W3C Recommendation 07 June 2012)
+implemented via <a href="https://github.com/rdfa/librdfa">librdfa</a>
+linked inside Raptor. librdfa was, written primarily by Manu Sporny
+of Digital Bazaar and is licensed with the same license as Raptor.
+</p>
+
+<p>As of Raptor 2.0.8 the RDFa parser passes all of the
+<a href="http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/">RDFa 1.0 test suite</a>
+except for 4 tests and all of the
+<a href="http://rdfa.info/dev/">RDFa 1.1 test suite</a>
+except for 30 tests.
+</p>
+
+
+<h2>Serializers</h2>
+
+<h3>RDF/XML Serializer</h3>
+
+<p>A serializer to the standard
+<a href="http://www.w3.org/TR/rdf-syntax-grammar/">RDF/XML syntax</a>
+as revised by the
+<a href="http://www.w3.org/2001/sw/RDFCore/">W3C RDF Core working group</a>
+in 2004. This writes a plain triple-based RDF/XML serialization with
+no optimisation or pretty-printing.
+</p>
+
+<p>A second serializer is provided using several of the RDF/XML
+abbreviations to provide a more compact readable format, at the cost
+of some pre-processing. This is suitable for small documents.
+</p>
+
+
+<h3>N-Quads Serializer</h3>
+
+<p>A serializer to the
+<a href="http://sw.deri.org/2008/07/n-quads/">N-Quads</a>
+extension to N-Triples, providing an optional 4th context graph term
+at the end of the line when a triple is associated with a named graph.
+</p>
+
+
+<h3>N-Triples Serializer</h3>
+
+<p>A serializer to the
+<a href="http://www.w3.org/TR/rdf-testcases/#ntriples">N-Triples</a>
+syntax as used by the
+<a href="http://www.w3.org/2001/sw/RDFCore/">W3C RDF Core working group</a>
+for the <a href="http://www.w3.org/TR/rdf-testcases/">RDF Test Cases</a>.
+</p>
+
+
+<h3>Atom 1.0 Serializer</h3>
+
+<p>A serializer to the Atom 1.0 syndication format defined in IETF
+<a href="http://www.ietf.org/rfc/rfc4287.txt">RFC 4287</a>.
+</p>
+
+
+<h3>JSON Serializers</h3>
+
+<p>Two serializers for to write triples encoded in JSON, one
+(<code>json</code>) in a resource-centric abbreviated form <a
+href="http://n2.talis.com/wiki/RDF_JSON_Specification">RDF/JSON</a>
+like Turtle or RDF/XML-Abbreviated; the other a triple-centric format
+(<code>json-triples</code>) based on the SPARQL results in JSON format.
+</p>
+
+
+<h3>GraphViz DOT Serializer</h3>
+
+<p>An serializer to the GraphViz
+<a href="http://www.graphviz.org/doc/info/lang.html">DOT format</a>
+which aids visualising RDF graphs.
+</p>
+
+
+<h3>RSS 1.0 Serializer</h3>
+
+<p>A serializer to the
+<a href="http://purl.org/rss/1.0/spec">RDF Site Summary (RSS) 1.0</a>
+format.
+</p>
+
+
+<h3>Turtle Serializer</h3>
+
+<p>A serializer for the
+<a href="http://www.dajobe.org/2004/01/turtle/">Turtle Terse RDF Triple Language</a>
+syntax.
+</p>
+
+<h3>XMP Serializer</h3>
+
+<p>An alpha quality serializer to the Adobe XMP profile of RDF/XML
+suitable for embedding inside an external document.
+</p>
+
+
+<h2>Documentation</h2>
+
+<p>The public API is described in the
+<a href="libraptor.html">libraptor.3</a> UNIX manual page.
+It is demonstrated in the
+<a href="rapper.html">rapper</a>
+utility program which shows how to call the parser and write
+the triples in a serialization. When Raptor is used inside
+<a href="http://librdf.org/">Redland</a>,
+the Redland documentation explains
+how to call the parser and contains several example programs.
+There are also further examples in the <tt>example</tt> directory
+of the distribution.
+</p>
+
+<p>To install Raptor see the <a href="INSTALL.html">Installation document</a>.
+</p>
+
+
+<h2>Sources</h2>
+
+<p>The packaged sources are available from
+<a href="http://download.librdf.org/source/">http://download.librdf.org/source/</a> (master site) and also from the
+<a href="http://sourceforge.net/projects/librdf/">SourceForge site</a>.
+The development GIT sources can also be
+<a href="http://github.com/dajobe/raptor">browsed at GitHub</a>
+or checked out at git://github.com/dajobe/raptor.git
+
+</p>
+
+
+<h2>License</h2>
+
+<p>This library is free software / open source software released
+under the LGPL (GPL) or Apache 2.0 licenses. See
+<a href="LICENSE.html">LICENSE.html</a> for full details.
+</p>
+
+
+<h2>Mailing Lists</h2>
+
+<p>The <a href="http://librdf.org/lists/">Redland mailing lists</a>
+discusses the development and use of Raptor and Redland as well as
+future plans and announcement of releases.
+</p>
+
+<hr />
+
+<p>Copyright (C) 2000-2012 <a href="http://www.dajobe.org/">Dave Beckett</a><br />Copyright (C) 2000-2005 <a href="http://www.bristol.ac.uk/">University of Bristol</a></p>
+
+</body>
+</html>
diff --git a/RELEASE.html b/RELEASE.html
new file mode 100644
index 0000000..3cc1932
--- /dev/null
+++ b/RELEASE.html
@@ -0,0 +1,4206 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!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 Syntax Library - Release Notes</title>
+</head>
+<body>
+
+<h1 style="text-align:center">Raptor RDF Syntax Library - Release Notes</h1>
+
+
+<h2 id="rel2_0_8"><a name="rel2_0_8">Raptor2 2.0.8 changes</a></h2>
+
+<p>Issues Fixed:</p>
+<ul>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=381">0000381</a>: Raptor incorrectly serializes turtle lists when list nodes are URIs.</li>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=487">0000487</a>: Does raptor_world_guess_parser_name [librdf_parser_guess_name2] ever return NULL?</li>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=505">0000505</a>: Parsing certain escaped unicode strings in Turtle cases an error</li>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=507">0000507</a>: Turtle parse error causes fatal error</li>
+</ul>
+
+<h3>Parser class changes</h3>
+
+<p>Guessing a parser with
+<code>raptor_world_guess_parser_name()</code> now returns NULL failure
+when the guess is very poor, rather just return the first bad result.
+Fixes
+<a href="http://bugs.librdf.org/mantis/view.php?id=487">Issue #0000487</a>
+which was reported in <a href="http://librdf.org/">Redland librdf</a> but
+is implemented here.
+</p>
+
+<p>Guess parser: now returns error file and line location information
+from the guessed parser.</p>
+
+<p>RDFa parser: Updated <a href="https://github.com/rdfa/librdfa">librdfa</a>
+to the latest GIT supporting
+<a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">RDFa 1.1</a>
+with 30 tests still not passing - mostly issues in the core librdfa.
+Made several resilience and crash fixes. Updated the RDFa 1.0 test
+suite to latest tests and made fixes. The RDFa parser now accepts
+aliases 'rdfa10', 'rdfa11' and the default 'rdfa' is RDFa 1.1
+</p>
+
+<p>RSS tag soup parser: Use <code>time()</code> when
+<code>gettimeofday()</code> is not available. Fix several reference
+leaks.
+</p>
+
+<p>RDF/XML parser: The range of RDF/XML entity recognizing heuristic was
+broadened to allow recognition of documents produced by Stanford's
+Protege software (and possibly others). Fixed some parser memory
+leaks / double frees.
+</p>
+
+<p>Turtle parser: Do not report multiple errors for Turtle string decoding
+problems. When a Turtle qname cannot be found, a fatal error is no
+longer generated but a regular error message giving information on
+the qname that failed (usually due to unknown prefix).
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=507">Issue #0000507</a>
+</p>
+
+
+<h3>SAX2 API changes</h3>
+
+<p><code>raptor_sax2_inscope_xml_language()</code> will now return ""
+for explicit no language (<code>xml:lang=""</code>) as well as NULL
+for undefined language (no <code>xml:lang</code> present).
+</p>
+
+
+<h3>Serializer class changes</h3>
+
+<p>Turtle: Do not emit a Turtle <code>(...)</code> collection if the
+list item is a URI. This fixes
+<a href="http://bugs.librdf.org/mantis/view.php?id=381">Issue #0000381</a>.
+</p>
+
+
+<h3>Term class changes</h3>
+
+<p>Added <code>raptor_term_to_turtle_counted_string()</code> counted
+string form of <code>raptor_term_to_turtle_string</code>.
+</p>
+
+
+<h3>Unicode class changes</h3>
+
+<p><code>raptor_unicode_utf8_string_put_char()</code> and
+<code>raptor_unicode_utf8_string_get_char()</code>
+now allow reading / writing U+D800 to U+DFFF (UTF-16 surrogates).
+rather than returning failure. BOMs remain forbidden - definitely not UTF-8.
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=505">Issue #0000505</a>
+</p>
+
+
+<h3>URI class changes</h3>
+
+<p>Fixed URI resolving with reference (relative) URIs that are bare
+queries like '?y' with no path. Now matches the specification
+RFC3986 section 5.4.1 Normal Examples.
+</p>
+
+<p>Added <code>raptor_new_uri_relative_to_base_counted()</code>
+to construct URI relative to current base.
+</p>
+
+<p>Added <code>raptor_uri_to_turtle_counted_string()</code> counted
+string form of <code>raptor_uri_to_turtle_string</code>.
+</p>
+
+
+<h3>WWW class changes</h3>
+
+<p>The Curl WWW implementation now interprets
+<code>Content-Location</code>code> header as absolute or relative URI.
+</p>
+
+
+<h3>Configuration and build changes</h3>
+
+<p>All configure --with-foo options now handle --without-foo (and
+--with-foo=no) to disable attempting to find the value in the PATH.
+This can be used with --with-xml2-config, --with-xslt-config,
+--with-curl-config, --with-icu-config and --with-libwww-config where
+the value 'no' or --without-foo can be used to disable it and prevent
+automatic searches for the config script in the PATH.
+</p>
+
+<p>The <code>-DRAPTOR_DEBUG</code> and <code>-DMAINTAINER_MODE</code>
+flags are now written to the config header instead of added to
+CPPFLAGS.
+</p>
+
+<p>The <code>-g</code> flag is no longer added to CFLAGS or CPPFLAGS
+with <code>--enable-debug</code>.</p>
+
+<p>The existing <code>--disable-release</code> (default) now
+correctly removes -O options in flag variables for the maintainer.
+</p>
+
+<p><code>autogen.sh</code> now looks for the environment variable
+<code>NOCONFIGURE</code> to prevent it running configure at the end
+of the auto generation run.
+</p>
+
+<p>The <code>configure</code> vsnprintf() check was made more
+comprehensive.
+</p>
+
+
+<h3>Other changes</h3>
+
+<p>Multiple portability improvements to vsnprintf code and macros.
+Also fixed uninitialized variable problems in non-c99 variant of
+raptor_vsnprintf2(). Thanks to John Emmas for reporting.
+</p>
+
+<p>Multiple portability fixes for building out of the source tree.
+Out of source tree 'make check' and 'make dist' should both work.
+Thanks to Daniel Richard G. for the patches.
+</p>
+
+<p>Multiple portability fixes for building on old Solaris versions.
+Thanks to Daniel Richard G. for the patches.
+</p>
+
+<p>Multiple portability fixes for building on Windows including
+strcasecmp(), windows headers, configuration fixes, parsedate code,
+URI test builds, vsnprintf building. Thanks to Daniel Richard G.
+for the patches.
+</p>
+
+<p>Updated the example <code>rdfguess</code> to accept a file called
+or no arguments to read from stdin.</p>
+
+
+<h2 id="rel2_0_7"><a name="rel2_0_7">Raptor2 2.0.7 changes</a></h2>
+
+<p>CVE-2012-0037 fixed</p>
+
+<p>Issues Fixed:</p>
+<ul>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=448">0000448</a>: Turtle parser does not return error status from turtle_parse_chunk()</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=469">0000469</a>: Allow rapper to bypass server SSL certs checks in libcurl</li>
+</ul>
+
+<p>Removed Expat support since expat has not had a release in years
+and libxml2 works well. This allows some code simplification.
+Updated <code>configure</code> so that if Raptor is configured with
+no parser that requires an XML parser, libxml2 will not be required.
+</p>
+
+<p>Removed internal Unicode NFC checking code used for checking
+RDF/XML literals conformance which was expensive to check and a large
+of compiled-in static dataset that was rather out of date. Replaced
+with optional compiled use of <a href="http://www.icu-project.org/">ICU</a>.
+If ICU is not explicitly configured, no literal checking is done.</p>
+
+<h3>Options changes</h3>
+
+<p>Added new options:</p>
+<dl>
+ <dt><code>RAPTOR_OPTION_NO_FILE</code><br/></dt>
+ <dd>Deny file requests during parsing. Enabled by default.</dd>
+
+ <dt><code>RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES</code><br/></dt>
+ <dd>Allow loading of XML external entity loading. Disabled by
+ default.</dd>
+
+ <dt><code>RAPTOR_OPTION_WWW_SSL_VERIFY_PEER</code><br/></dt>
+ <dd>Controls verifying an SSL peer during parsing / WWW. Takes an
+ integer value: non-0 to verify peer SSL certificate (default
+ 1).</dd>
+
+ <dt><code>RAPTOR_OPTION_WWW_SSL_VERIFY_HOST</code><br/></dt>
+ <dd>Controls verifying an SSL host during parsing / WWW. Takes an
+ integer value: 0 none, 1 CN match, 2 host match (default). Other
+ values are ignored.</dd>
+</dl>
+
+
+<h3>Parser class changes</h3>
+
+<p>The RDF/XML, RSS Tag Soup and RDFa parsers now pass on network,
+file and entity loading parser options to the internal SAX2 to enable
+enforcing of network, file and entity loading policy.</p>
+
+<p>RDF/JSON parser handles an API change between YAJL V1 and V2.
+</p>
+
+<p>Turtle parser now returns parser errors to
+<code>raptor_parse_chunk()</code>.
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=488">Issue #0000488</a>
+</p>
+
+
+<h3>SAX2 class changes</h3>
+
+<p>Added <code>raptor_sax2_set_uri_filter()</code> to set a URI
+filter for any SAX2 calls that do internal lookups of URIs.
+</p>
+
+<p>Control file and network loading inside SAX2. Option
+<code>RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES</code> now enforces
+loading external XML entities and is by default enabled. If enabled,
+<code>RAPTOR_OPTION_NO_FILE</code> and
+<code>RAPTOR_OPTION_NO_NET</code> are also checked. All URIs loaded
+are also passed through any URI filter, if set by
+<code>raptor_sax2_set_uri_filter()</code>.
+</p>
+
+<h3>URI class changes</h3>
+
+<p>Added new URI constructor
+<code>raptor_new_uri_from_uri_or_file_string()</code>
+to build a URI from a URI string or a filename string, normalizing
+the result to a <code>file:</code> URI.
+</p>
+
+<p>Added
+<code>raptor_uri_uri_string_to_counted_filename_fragment()</code> to
+turn a URI string to a filename and URI fragment along with string
+output string counts.
+</p>
+
+<p>Added utility methods for checking if a file: URI or filename is a
+file that exists:
+<code>raptor_uri_file_exists()</code> and
+<code>raptor_uri_filename_exists()</code>
+</p>
+
+
+<h3>WWW class changes</h3>
+
+<p>Added <code>raptor_www_set_ssl_verify_options()</code> to set SSL
+verify options.
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=469">Issue# 0000469</a>.
+</p>
+
+<p>The <code>raptor_www_fetch()</code> call now returns the status
+from any URI filter that returns a non-0 response.
+</p>
+
+
+<h3>Build changes</h3>
+
+<p>Added <code>--with-icu-config=</code><em>PATH</em> option
+to enable use of ICU for NFC checking.</p>
+
+<p>Requires automake 1.11.2+ for <code>-Wextra-portability</code></p>
+
+<p><code>configure</code> uses <code>AM_PROG_AR</code> to make
+automake <code>-Wextra-portability</code> happy.
+</p>
+
+
+<h2 id="rel2_0_6"><a name="rel2_0_6">Raptor2 2.0.6 changes</a></h2>
+
+<p>Fixed expat support which was broken in 2.0.5</p>
+
+<p>Handle libCurl SSL options before 7.16.4 (that's 2007) since old
+libcurl is still around on Enterprise (that means old) linux systems.
+</p>
+
+<h3>Sequence Changes</h3>
+
+<p>Added utility functions to swap elements, reverse the sequence and
+generate permuations:</p>
+<pre>
+ int raptor_sequence_swap(raptor_sequence* seq,
+ int i, int j);
+
+ int raptor_sequence_reverse(raptor_sequence* seq,
+ int start_index, int length);
+
+ int raptor_sequence_next_permutation(raptor_sequence *seq,
+ raptor_data_compare_handler compare);
+</pre>
+
+
+<h2 id="rel2_0_5"><a name="rel2_0_5">Raptor2 2.0.5 changes</a></h2>
+
+<p>Issues Fixed:</p>
+<ul>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=465">0000465</a>: c99 snprintf usage</li>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=476">0000476</a>: Add Format URIs to raptor_syntax_descriptions</li>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=479">0000479</a>: raptor 2.0.4 : -i nquads fails to treat the context term as optional bugs.librdf.org</li>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=481">0000481</a>: Invalid unicode characters cause raptor to emit infinite output while converting n-quads to n-triples</li>
+</ul>
+
+
+<h3>Parser class changes</h3>
+
+<p>Updated all parser URIs to use the
+<a href="http://www.w3.org/ns/formats/">W3C Format URIs</a>
+as the primary URIs. Existing URIs become aliases. (Nicholas J Humfrey)
+</p>
+
+<p>GRDDL parser: Correctly set the base_uri when resolving the
+sheet URI.</p>
+
+<p>N-Quads parser: Make context optional. (Lauri Aalto)
+Fixes
+<a href="http://bugs.librdf.org/mantis/view.php?id=479">Issue #0000479</a>.
+<br />
+When guessing formats, make N-Quads always beat N-Triples since
+since now all ntriples parse fine with the nquads parser. (Lauri Aalto)
+</p>
+
+<p>RDFA parser: fix when building with 64-bit systems to prevent
+value truncation.</p>
+
+<p>Turtle parser: now uses the official <em>text/turtle</em> mime
+type in the syntax recognizing code.
+</p>
+
+
+<h3>Serializer class changes</h3>
+
+<p>Updated all serializer URIs to use the
+<a href="http://www.w3.org/ns/formats/">W3C Format URIs</a>
+as the primary URIs. Existing URIs become aliases. (Nicholas J Humfrey)
+</p>
+
+<p>Turtle serializer now uses the official <em>text/turtle</em> mime
+type in the syntax recognizing code.
+
+Do not generate infinite output when the input Unicode UTF-8 encoding
+is bad.
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=481">Issue #000481</a>.
+</p>
+
+<h3>Unicode class changes</h3>
+
+<p>Added new utility functions for calculating number of Unicode
+characters in a UTF-8
+string <code>raptor_unicode_utf8_strlen()</code> and getting a subset
+of a UTF-8 string <code>raptor_unicode_utf8_substr()</code>:
+</p>
+<pre>
+ int raptor_unicode_utf8_strlen(const unsigned char *string,
+ size_t length);
+
+ size_t raptor_unicode_utf8_substr(
+ unsigned char* dest, size_t* dest_length_p,
+ const unsigned char* src, size_t src_length,
+ int startingLoc, int length);
+</pre>
+
+
+<h3>URI class changes</h3>
+
+<p><code>raptor_uri_string_to_relative_uri_string()</code> now
+compares URI paths not files. (Joe Presbrey)
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=472">Issue #0000472</a>
+</p>
+
+
+<h3>Build changes</h3>
+
+<p>The library no longer needs <code>trunc()</code>,
+<code>lround()</code>, <code>round()</code> or anything else from
+libm. Removed the checks for these functions from
+<code>configure</code>.
+</p>
+
+<p><code>configure</code> no longer enables debug messages by default
+for <code>--enable-maintainer-mode</code> but now requires the
+<code>--enable-debug</code> option to be given.
+</p>
+
+<h3>Other changes</h3>
+
+<p>Records GIT version in the version string when building from GIT
+sources with <code>--enable-maintainer-mode</code>. This makes it
+clearer when an non-released version is being used.
+</p>
+
+<p>Added internal <code>raptor_format_integer()</code> which enabled
+the removal of all internal use of <code>snprintf()</code>.
+</p>
+
+<p>Added <code>raptor_vsnprintf2()</code> deprecating
+<code>raptor_vsnprintf()</code> which does not actually have the
+vsnprintf() calling contention. Added <code>raptor_snprintf()</code>
+with snprintf() calling convention. Added
+<code>raptor_vasprintf()</code> with vasprintf() (GNU) calling
+convention.
+</p>
+<pre>
+ int raptor_vsnprintf2(char *buffer, size_t size,
+ const char *format, va_list arguments);
+ int raptor_snprintf(char *buffer, size_t size, const char *format, ...);
+
+ int raptor_vasprintf(char **ret, const char *format, va_list arguments);
+</pre>
+
+<p><code>raptor_locator_format()</code> now picks a large enough
+buffer size if <code>snprintf()</code> is likely not portable, when
+HAVE_C99_VSNPRINTF is not defined.
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=465">Issue #0000465</a>
+</p>
+
+<p>Internal code style changes for how allocation is done and casting
+with new macros.</p>
+<blockquote>
+ <p>RAPTOR_GOOD_CAST: code checks or logic ensures cast will not
+ truncate</p>
+
+ <p>RAPTOR_BAD_CAST: value may be truncated; may require API
+ change/break. Might be unrealistic e.g. a >4G error message,
+ qname prefix.</p>
+
+ <p>Some good uses:</p>
+ <ul>
+ <li>narrowing a known, checked unicode char to a U16</li>
+ </ul>
+
+ <p>Some 'bad' uses:</p>
+ <ul>
+ <li>only handing error messages, literal language, qname prefixes of
+ a max len constrained by int</li>
+ <li>passing in data to libxml constrained by int max len</li>
+ <li>locator column field constrained to int size</li>
+ </ul>
+
+ <p>Some bad uses:</p>
+ <ul>
+ <li>iostream read_bytes and write-bytes methods return int but could
+ easily return a lot more in the size_t range (compare to fread).
+ API change needed.</li>
+ <li>locator byte field constrained to int size. should be size_t</li>
+ <li>raptor_nfc_check returns int offset into a buffer that could
+ be larger</li>
+ <li>raptor_ntriples_parser_context changed line_length and offset
+ to size_t</li>
+ <li>raptor_turtle_parser changed buffer_length to size_t</li>
+ </ul>
+</blockquote>
+
+<p>Updated code to use <code>size_t</code> for sizes such as those
+from <code>strlen()</code> and <code>ptrdiff_t</code> for pointer
+differences so that on 64-bit architectures, values are not
+potentially truncated to size of int.
+</p>
+
+
+<h2 id="rel2_0_4"><a name="rel2_0_4">Raptor2 2.0.4 changes</a></h2>
+
+<p>Issues Fixed:</p>
+<ul>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=308">0000308</a>: undefined reference to round and trunc while cross compiling for mipsel</li>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=449">0000449</a>: ntriples serializer and parser inconsistent w.r.t. _ in name tokens</li>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=451">0000451</a>: Incorrect qname definition in TRiG parser</li>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=455">0000455</a>: Incorrect AVL tree operations. [ with fix ]</li>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=456">0000456</a>: raptor-2.0.3 fails to build against yajl-2.0.2 API</li>
+<li><a href="http://bugs.librdf.org/mantis/view.php?id=457">0000457</a>: raptor-2.0.3 fails to build with curl-7.21.7</li>
+</ul>
+
+<h3>Parser class changes</h3>
+
+<p>The <code>raptor_option</code> enumeration gains values for
+setting SSL client side certificates:
+<code>RAPTOR_OPTION_WWW_CERT_FILENAME</code> for the certificate
+filename, <code>RAPTOR_OPTION_WWW_CERT_TYPE</code> for the
+certificate type and <code>RAPTOR_OPTION_WWW_CERT_PASSPHRASE</code>
+for the certificate passphrase.
+</p>
+
+<p><code>raptor_parser_parse_uri_with_connection()</code> (which is
+called by <code>raptor_parse_uri()</code>) now uses
+<code>raptor_www_set_ssl_cert_options()</code> to turn the parser
+options above into settings on the WWW object.
+</p>
+
+<p>RDF/JSON parser: Gains support for building with
+<a href="http://lloyd.github.com/yajl/">YAJL</a> V2. Note that YAJL
+V1 and V2 both install the same library name 'libyajl' even though
+they have different ABI and APIs.</p>
+
+<p>TRiG parser: Fixed to support the legal <em>uri</em> <code>:
+{</code> ... <code>}</code> syntax naming a graph where the
+'<code>:</code>' is optional.
+</p>
+
+<p>Turtle parser: Modified to not include the internal
+<code>input()</code> function in the lexer which is never needed.
+</p>
+
+<h3>Serializer class changes</h3>
+
+<p>N-Triples and Turtle serializers: Now
+use <code>raptor_bnodeid_ntriples_write()</code> to always write
+legal blank node IDs.
+</p>
+
+<h3>WWW class changes</h3>
+
+<p>Added support for <code>raptor_www</code> to handle setting SSL
+client certificate options during WWW retrieval.
+</p>
+
+<p>Added <code>raptor_www_set_ssl_cert_options()</code> method to set
+the SSL client certificates on a WWW object.
+</p>
+
+<h3>Other changes</h3>
+
+<p>Make Raptor build against Curl 7.21.7 which removed a header file
+that was made an empty file in the libcurl source code on April 26
+2004 around version 7.12.0 which is now the minimum version Raptor
+supports..
+</p>
+
+<p>Fixed an AVL Tree issue during deletion that messes up some pointers.
+Patch from 'v-for-vandal'. Thanks.
+</p>
+
+<p>Added a utility function
+<code>raptor_bnodeid_ntriples_write()</code> to write a N-Triples
+blank node ID in legal form, replacing any letters not in the allowed
+set.</p>
+
+<p>Expanded GCC warnings and corrected a few internal uses
+of <code>int</code> when <code>size_t</code> was meant. Others
+remain.
+</p>
+
+<p>Reduced stack use of <code>raptor_www_file_handle_fetch()</code>
+and <code>raptor_parser_parse_iostream()</code> by moving I/O buffer
+to the www or parser objects respectively.
+</p>
+
+
+<h2 id="rel2_0_3"><a name="rel2_0_3">Raptor2 2.0.3 changes</a></h2>
+
+<p>The main change is to add the new main header file
+<code>raptor2.h</code>. The new header has been added to allow
+applications to be sure they have got the raptor V2 header
+(with <code>#include &lt;raptor2.h&gt;</code> and not the raptor V1
+header file (<code>#include &lt;raptor.h&gt;</code>).
+The <code>raptor.h</code> header will NOT be removed until the next
+major raptor release (V3).
+</p>
+
+
+<h3>Turtle / TRiG parser changes</h3>
+
+<p>Alter the parser to not use a large token stack when parsing TRiG
+graphs, enabling the parser to handle much larger files. The parser
+still gathers all input into a single memory segment so the maximum
+amount of input is probably memory size/3.
+</p>
+
+<p>TRiG parser now allows a QName for the graph name.
+</p>
+
+<p>Attempted to make the parser handle streaming lexing and parsing
+but only partially successful; bison could be made to stream parse
+but flex could not be made to stream lex. This meant it could not
+be convinced to return a "need more input" response at the end of a
+chunk of data and continue lexing later.
+</p>
+
+<p>Fix value ownership fix graph name.
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=437">Issue #0000437</a>
+</p>
+
+<h3>Other Changes</h3>
+
+<p>Raptor was ran through the
+LLVM <a href="http://clang-analyzer.llvm.org/">clang</a> static code
+analyzer and several issues fixed, mostly in unused variables and in
+unlikely error recovery conditions. Some actual potential crash bugs
+were found:</p>
+<ol>
+ <li>The workaround for
+ ancient <a href="http://xmlsoft.org/">libxml2</a> error handling
+ in <code>raptor_libxml_xmlStructuredError_handler_parsing()</code>
+ was broken for some time, so that probably means nobody uses old
+ libxml2.</li>
+ <li><a href="http://github.com/msporny/librdfa/">librdfa</a> URI
+ resolving in <code>rdfa_resolve_uri()</code> used unallocated
+ memory in some relative URI cases.</li>
+</ol>
+
+<p>Bison 2.4 is required to build Raptor from GIT source with
+no pregenerated files.
+</p>
+
+
+<h2 id="rel2_0_2"><a name="rel2_0_2">Raptor2 2.0.2 changes</a></h2>
+
+<p>Fixed a too strict version checking bug in <code>raptor_new_world()</code>
+</p>
+
+
+<h2 id="rel2_0_1"><a name="rel2_0_1">Raptor 2.0.1 Changes</a></h2>
+
+<p><b>DO NOT USE</b>. Use 2.0.2 which fixes a too strict version
+checking bug in <code>raptor_new_world()</code>
+</p>
+
+<h3>Parser class changes</h3>
+
+<p>The internal librdfa parser that uses Raptor internals now exports
+symbols prefixed with raptor_librdfa so that Raptor can be linked
+with the standard librdfa in applications without symbol clashes.
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=416">Issue #0000416</a>
+</p>
+
+<h3>Serializer class changes</h3>
+
+<p>The N-Quads serializer was fixed to output the graph name in the
+fourth column, instead of repeating the object.
+</p>
+
+<h3>Internal changes</h3>
+
+<p>Replaced all internal fatal errors that went to
+an <code>abort()</code> with regular logged error.
+</p>
+
+
+<h2 id="rel2_0_0"><a name="rel2_0_0">Raptor 2.0.0 Changes</a></h2>
+
+<p>Raptor V2 final release. See the release notes for 1.9.0 and
+1.9.1 for the major changes in Raptor V2.</p>
+
+<h3>API changes since 1.9.1 beta</h3>
+
+<p>Added <code>raptor_syntax_description_validate()</code> to public
+API to validate and compute counts for syntax descriptions.
+Primarily this is for use by Rasqal.
+</p>
+
+<p>The <code>raptor_syntax_description</code> now has an array of URI
+strings instead of a single one, to allow URI aliasing. This is
+primarily for use by Rasqal.</p>
+
+<p>Fixed guessing by URI in
+<code>raptor_world_guess_parser_name()</code> which was not
+working.</p>
+
+<p>Fixed Issues:</p>
+<ul>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=405">0000405</a>: RDFa parser does not handle base href with single quoted value</li>
+</ul>
+
+
+<h2 id="rel1_9_1"><a name="rel1_9_1">Raptor 1.9.1 Changes</a></h2>
+
+<p>1.9.1 is the second beta release of Raptor 2 and intended to be
+the last release before 2.0.0.
+</p>
+
+<h3>Raptor V1 to V2 upgrading changes</h3>
+
+<p>Improved the <code>upgrade-script.pl</code> raptor V1 to V2
+upgrade script to handle changes to enums and macros as well as
+handle statement field renaming. Updated the generated documentation
+to also include enum and macro changes.
+</p>
+
+<p>Added defensive code in each constructor to check the passed-in
+raptor world object is a valid Raptor V2 world rather than V1. It
+generates a warning once per run of the program.
+</p>
+
+<p>The <code>raptor_new_world()</code> function is now a macro that
+calls an internal function <code>raptor_check_world_internal()</code>
+with a version macro argument to detect when Raptor V2 is invoked with
+an inconsistent header and library.
+</p>
+
+
+<h3>AVLTree class changes</h3>
+
+<p>Free the iterator at the end of debug method
+<code>raptor_avltree_print()</code>.
+</p>
+
+
+<h3>I/O Stream class changes</h3>
+
+<p>Fix major copying too much error in the internal
+<code>raptor_read_string_iostream_read_bytes()</code> memcpy that
+could cause crashes - the function always copied the maximum amount
+the user requested in the read method even if the string was
+smaller.</p>
+
+
+<h3>Parser class changes</h3>
+<p>JSON parser: Made relative URIs option work.
+</p>
+
+<p>N-Quads parser: Added. The serializer already existed.</p>
+
+<p>librdfa parser: Updated to latest librdfa GIT
+1a1a08c790b7649a7f6c12fb9e40c0d3dbe70481</p>
+
+
+<h3>Serializer class changes</h3>
+
+<p>Fix <code>raptor_serializer_start_to_iostream()</code> to prevent
+crash when this method is used more than once on the same
+serializer.</p>
+
+<p>RSS/Atom serializer: Fix crashes with feeds containing entries
+with blank node items.
+</p>
+
+
+<h3>Stringbuffer class changes</h3>
+
+<p>Added utility methods
+<code>raptor_stringbuffer_append_uri_escaped_counted_string()</code>
+and <code>raptor_stringbuffer_append_hexadecimal()</code>.
+</p>
+
+
+<h3>Term class changes</h3>
+
+<p>Deleted <code>raptor_term_as_counted_string()</code> and
+<code>raptor_term_as_string()</code>. Since 1.9.0 was an unstable
+API, this is allowed.
+</p>
+
+<p>Added <code>raptor_term_to_counted_string()</code> replacing
+deleted <code>raptor_term_as_counted_string()</code>.</p>
+
+<p>Added <code>raptor_term_to_string()</code> replacing
+deleted <code>raptor_term_as_string()</code>.</p>
+
+
+
+<h3>URI class changes</h3>
+
+<p>Added convenience methods for constructing URI terms from strings:
+<code>raptor_new_term_from_counted_uri_string()</code> and
+<code>raptor_new_term_from_uri_string()</code>.
+</p>
+
+<p>Use string lengths in equals and comparisons for faster checking.
+Use <code>memcmp()</code> instead of <code>strncmp()</code> when
+lengths are known and the same.
+</p>
+
+
+<h3>WWW class changes</h3>
+
+<p>The CURL WWW module now looks for and uses the HTTP response
+<code>Content-Location:</code> header to get the base URI for content
+retrievals. This allows these base URIs to be used in parsing
+content retrived from URIs.
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=402">Issue #0000402</a>
+</p>
+
+
+<h2 id="rel1_9_0"><a name="rel1_9_0">Raptor 1.9.0 Changes</a></h2>
+
+<p>1.9.0 is the first beta release of Raptor 2. There may be changes
+and additional releases before version 2.0.0 with the final stable API.
+</p>
+
+<p>This is a major update and cleanup to the Raptor API and ABI with
+additions, removals and changes. There are also major restructurings
+of the internal code and cleanups. There are also some new features
+in the form of additional APIs, new serializers and parsers.
+</p>
+
+<p>The details of the additions, removals and changes of functions,
+structures, typedefs and enums are listed in the
+<a href="http://librdf.org/raptor/api/">Raptor 2 API reference manual</a>
+section on
+<a href="http://librdf.org/raptor/api/raptor-changes.html">Changes between raptor 1.4.21 and 1.9.0</a>.
+The <a href="UPGRADING.html">upgrading document</a>
+explains how to upgrade existing code that uses the V1 APIs to use
+the new APIs.
+</p>
+
+<p>The major changes in this release are:</p>
+<ul>
+<li>Removed all deprecated functions and typedefs.</li>
+<li>Renamed all functions to the standard <code>raptor_</code><em>class</em><code>_</code><em>method</em> form.</li>
+<li>All constructors take a <code>raptor_world</code> argument.</li>
+<li>URIs are interned and there is no longer a swappable implementation.</li>
+<li>Statement is now an array of 3-4 RDF Terms to support triples and quads.</li>
+<li>World object owns logging, blank node ID generation and describing syntaxes.</li>
+<li>Features are now called options and have typed values.</li>
+<li>GRDDL parser now saves and restores shared libxslt state.</li>
+<li>Added serializers for HTML 'html' and N-Quads 'nquads'.</li>
+<li>Added parser 'json' for JSON-Resource centric and JSON-Triples.</li>
+<li>Switched to GIT version control <a href="http://github.com/dajobe/raptor">hosted by GitHub</a>.</li>
+<li>Added memory-based AVL-Tree to the public API.</li>
+</ul>
+
+
+<p>Fixed Issues:</p>
+<ul>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=357">0000357</a>: raptor_term_as_string does not return N-Triples escaped string, although API says so</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=361">0000361</a>: HTML Table serializer</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=369">0000369</a>: Unescaped quotes in long literals (Turtle/N3) cause parser failure if at the end of the literal</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=370">0000370</a>: Odd behaviour regarding the parsing of Trig files</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=373">0000373</a>: Remove deprecated GTK symbols</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=379">0000379</a>: raptor libxslt security policy conflicts with apps that also use libxslt and set security policy</li>
+</ul>
+
+
+<!-- updated to 2010-08-15 ChangeLog changes -->
+
+<h3>General changes</h3>
+
+<p>Renamed the library name and package tarball name to a new
+separate names (libraptor2, raptor2-X.tar.gz) so they can be
+distinguished and installed into the same system as raptor 1 without
+file clashes. Note: This does not apply to the
+<code>rapper(1)</code> utility and it's manual page which are in both
+packages. Packagers should stop packaging the <code>rapper(1)</code>
+binary and the rapper manual page from raptor 1, in preference to the
+raptor 2 version.
+</p>
+
+<p>Nicholas J Humfrey is a new committer.
+</p>
+
+<p>A utility script <code>docs/upgrade-script.pl</code> is
+automatically generated from the changes data to aid migrating from
+Raptor 1 to Raptor 2 APIs. If it is not a simple rename, the script
+annotates the change as a comment near the code.
+</p>
+
+<p>Raptor's Statement, Term and URI classes can fully replace
+librdf's <code>librdf_statement</code>, <code>librdf_node</code> and
+<code>librdf_uri</code> classes. This has been tested with GIT
+versions when both Rasqal and librdf are configured with
+<code>--with-raptor2</code>. When raptor 2 is stable, Rasqal and
+librdf will default to use these..
+</p>
+
+
+<h3>Documentation changes</h3>
+
+<p>The API reference manual now includes an automatically generated
+reference section on the
+<a href="http://librdf.org/raptor/api/raptor-formats.html">functions and types that were added, removed and changed between raptor 1 and raptor 2 APIs</a>.
+
+It also includes an automatically generated section on the
+<a href="http://librdf.org/raptor/api/raptor-formats.html">parser and serializers with their names, mime types and Q values.</a>
+</p>
+
+<p>The tutorial examples were updated to the Raptor 2 APIs.
+</p>
+
+<p>NOTE: At this time, the descriptive parts of the tutorial have NOT
+been updated to use the Raptor 2 API.
+</p>
+
+
+<h3>World class changes</h3>
+
+<p>A log handler function for receiving warnings and errors (fatal or
+other) are now all sent to a single log handler of type
+<code>raptor_log_handler</code> registered to the world class with
+<code>raptor_world_set_log_handler()</code>, rather than handlers set
+for each parser, sax2, serializer or www instance. Several
+constructors lose error handler and error data parameters
+consequently.
+</p>
+
+<p>The enumerating approach for listing the known parsers and
+serializers and writing into variables passed in, was replaced with
+methods that return pointers to static
+<code>raptor_syntax_description</code> objects to allow more
+parameters to be returned. This allowed the removal of multiple
+older calls that kept having to gain new return arguments.
+The description also returns a list of (mime type, qname) pairs
+using a new typedef <code>raptor_type_q</code>. It includes a set
+of bitflags for some simple information such as
+<code>RAPTOR_SYNTAX_NEED_BASE_URI</code> to describe when
+a syntax requires a base URI passed in, otherwise is not needed
+or optional.
+</p>
+
+<p><code>raptor_world_set_libxml_flags()</code> is replaced with
+<code>raptor_world_set_flag()</code> which are simple flags that
+require no initialisation of the world since they are used before it
+is opened. This means that it cannot use the Options module for
+world flags. New flag
+<code>RAPTOR_WORLD_FLAGS_URI_INTERNING</code> allows disabling of
+the URI interning using an AVL-Tree which can use up memory.
+</p>
+
+<p><code>raptor_world_set_libxslt_security_preferences()</code> and
+<code>raptor_world_set_log_handler()</code> gains an int return value
+to report failure if world is already opened.
+</p>
+
+<p>Moved the generation of blank node IDs from the parsers (many
+objects) to the world class (1 object). Cannot think of good reasons
+why the blank node ID generation policy needs to be different
+per-parser. Enumeration <code>raptor_genid_type</code> was deleted
+since only the blank node type was ever used.
+</p>
+
+
+<h3>AVL Tree changes</h3>
+
+<p>The internal memory-based AVL Tree implementation is exposed as a
+public API.
+</p>
+
+
+<h3>Features changes</h3>
+
+<p>Replaced with <code>raptor_options</code></p>
+
+
+<h3>Identifier class changes</h3>
+
+<p>Replaced with Term class.
+</p>
+
+<p><code>raptor_identifier_type</code> enum was removed and replaced
+with enum <code>raptor_term_type</code> and a smaller set of 3
+possible term types. The enum values match the int values used
+in <code>librdf_node_type</code>.
+</p>
+
+
+<h3>I/O Stream class changes</h3>
+
+<p>Constructors all gain a world argument.
+</p>
+
+<p>Some methods now return an int error status such as
+<code>raptor_iostream_write_end()</code>
+</p>
+
+<p>Many classes iostream writing methods and methods of the iostream
+class itself were changed to follow the standard
+<code>raptor_</code><em>CLASS</em><code>_write</code> naming
+convention and to put the iostream argument at the end.
+</p>
+
+<p>Deprecated typedef <code>raptor_iostream_handler</code> was removed</p>
+
+<p>Deprecated functions were removed:
+<code>raptor_new_iostream_from_handler()</code>,
+<code>raptor_iostream_get_bytes_written_count()</code> and
+<code>raptor_iostream_write_string_turtle()</code>
+</p>
+
+
+<h3>Locator changes</h3>
+
+<p>Renamed some methods to follow the
+<code>raptor_locator_</code><em>method</em> standard.
+</p>
+
+
+<h3>Namespaces and namespace stack classes changes</h3>
+
+<p>Constructors all gain a world argument and lose error handler,
+error data arguments.
+</p>
+
+
+<h3>Options</h3>
+
+<p>A new name for what were called features in Raptor 1 and this was
+expanded to allow use of values types string, integer and boolean.
+Options can be set on multiple classes such as parser, serializer but
+are centrally described using the new
+<code>raptor_option_description</code> structure.
+</p>
+
+<p>The option get / set operations were reduced from multiple methods
+per class for getting / setting an int, int / string to just one get
+and one set, with optional parameters. It can also handle adding new
+types later, which will be passed in as strings and converted
+internally.
+</p>
+
+<p>The options code
+introduces a new enum <code>raptor_domain</code> which essentially is
+for describing a class such as parser.
+For example options listed
+for domain <code>RAPTOR_DOMAIN_PARSER</code> will be usable with the
+parser option get and set methods
+<code>raptor_parser_get_option(parser, ...)</code> and
+<code>raptor_parser_set_option(parser, ...)</code>.
+</p>
+
+
+<h3>Parser class changes</h3>
+
+<p><code>raptor_parser_set_strict()</code> was removed and replaced
+with a new parser option <code>RAPTOR_OPTION_STRICT</code>.
+</p>
+
+<p>Parser object methods to return information about the parser class
+were removed since they can be done instead via fields of the static
+object returned from
+<code>raptor_world_get_parser_description()</code>. Deleted
+functions include <code>raptor_parser_get_label()</code>,
+<code>raptor_parser_get_mime_type()</code>, and
+<code>raptor_parser_get_need_base_uri()</code>.
+</p>
+
+<p>Parsing may generate start graph and end graph events for syntaxes
+that return graph names such as TRiG. These are returned by the handler
+of typedef <code>raptor_graph_mark_handler</code>
+set by new function <code>raptor_parser_set_graph_mark_handler()</code>
+which returns a start or end event of type enum
+<code>raptor_graph_mark_flags</code>.
+</p>
+
+<p><code>raptor_parser_get_accept_header()</code> fixed length of
+static string to ensure NUL is copied.
+</p>
+
+<p>Many functions were renamed to match the
+<code>raptor_parser_</code><em>method</em> naming standard. Some of
+these get a long longer, but are at least consistent. For example
+<code>raptor_parse_uri()</code> becomes
+<code>raptor_parser_parse_uri()</code>.
+</p>
+
+<p>Deprecated typedef <code>raptor_ntriples_parser</code> was removed.
+</p>
+
+<p>Deprecated functions were removed:
+<code>raptor_ntriples_term_as_string()</code>, and
+<code>raptor_ntriples_string_as_utf8_string()</code>
+</p>
+
+<p>The librdfa parser was updated with the latest updates to the RDFa
+syntax (first, rel/rev, whitespace, xml:lang) and fixes issues with
+non-terminated strings.
+</p>
+
+
+<p>The GRDDL parser now saves and restores the libxslt global state
+(handlers, security preferences) so that it does not affect other
+applications in the same memory space. Part of this can be
+overridden with
+<code>raptor_world_set_libxslt_security_preferences()</code> which
+allows user code to disable raptor touching the security preferences
+entirely.
+Fixes
+<a href="http://bugs.librdf.org/mantis/view.php?id=379">Issue #0000379</a>
+</p>
+
+
+<p>The RDF/XML parser never generated special names for bag IDs
+(bagidNNN), so all support for that has been removed.
+</p>
+
+<p>The RDF/XML parser uses the new reference-counted URIs and raptor
+terms to prevent a lot of malloc/free for temporary uses.
+</p>
+
+<p>Removed RDF/XML parser feature
+<code>RAPTOR_FEATURE_ASSUME_IS_RDF</code> since it did nothing since
+at least 2003, maybe earlier.
+</p>
+
+<p>Added a JSON parser (name 'json') that can read both the
+resource-centric and triples JSON RDF formats. Requires the YAJL
+JSON parser library. Contributed by Nicholas J Humfrey.
+</p>
+
+<p>Moved the generation of blank node IDs from the parsers (many
+objects) to the world class (1 object). Cannot think of good reasons
+why the blank node ID generation policy needs to be different
+per-parser.
+</p>
+
+
+<h3>QName class changes</h3>
+
+<p>Constructors all gain a world argument and lose error handler,
+error data arguments.
+</p>
+
+
+<h3>Sequence changes</h3>
+
+<p>Use new generic <code>raptor_data_free_handler</code>,
+<code>raptor_data_print_handler</code>,
+<code>raptor_data_context_free_handler</code>,
+<code>raptor_data_context_print_handler</code>
+data-focused handlers which are shared with the AVL Tree.
+</p>
+
+
+<h3>Serializer class changes</h3>
+
+<p>Added <code>raptor_serializer_flush()</code> for user code to
+indicate to a serializer to flush state since the application knows a
+block has been ended, or it needs to save memory. No serializer
+currently implements this, but it is expected the abbreviated
+serializers that use a lot of state - Turtle, RDF/XML-Abbrev - would
+benefit from this.
+</p>
+
+<p>Added an HTML Table serializer with name 'table' contributed by
+Nicholas J Humfrey.
+</p>
+
+<p>Removed the obsolete 'simple' serializer from the source code.
+N-Triples is an appropriate simple (and well-defined) replacement
+syntax.
+</p>
+
+
+<h3>Statement class changes</h3>
+
+<p>This was made a more regular class that can be created, copied and
+freed using reference counting. The structure changed to be an
+array of 4 raptor terms rather than a complex union focused on
+the allowed RDF Statements. This change allows representing
+non-RDF triples as well as triples with named graphs (also known as
+quads).
+</p>
+
+<p><code>raptor_statement_part_as_counted_string()</code> turns into
+a method of the new Term class, as a "statement part" is now
+represented as a Term.
+</p>
+
+
+<h3>Term class changes</h3>
+
+<p>This new class with an open structure replaces
+<code>raptor_identifier</code> and was created to represent an RDF
+Term: literal, URI or blank node and is reference counted and
+dynamic. It is a union of fields for three types.
+</p>
+
+<p>This class can fully replace librdf's librdf_node when both Rasqal
+and librdf are built with <code>--with-raptor2</code>. The
+semantics of comparison (ordering) and equality are the same.
+</p>
+
+
+<h3>Unicode changes</h3>
+
+<p>Several utility functions were renamed to match their
+functionality more accurately and be associated with the Unicode
+module set of functions. For example <code>raptor_utf8_check()</code>
+was renamed to <code>raptor_unicode_check_utf8_string()</code>
+</p>
+
+
+<h3>URI class changes</h3>
+
+<p>The whole concept of URI handlers was removed, there is no longer
+a way to replace the implementation of the URI class. The
+implementation built in now interns URIs string so that a single URIs
+for a string is only ever in memory once, but reference counted. This
+is what Redland librdf has done for many years, and librdf can fully
+use this.
+</p>
+
+<p>Deprecated functions were removed:
+<code>raptor_uri_is_file_uri()</code>.
+</p>
+
+<p>The <code>raptor_uri_resolve_uri_reference()</code> now returns the
+length of the URI written into the buffer.
+</p>
+
+
+<h3>WWW class changes</h3>
+
+<p>Rename several of the functions to the standard constructor,
+destructor and method naming format.
+</p>
+
+
+<h3>XML Writer class changes</h3>
+
+<p>Constructors all gain a world argument and lose error handler,
+error data arguments.
+</p>
+
+
+<h3>Configuration changes</h3>
+
+<p>Added configure argument <code>--with-yajl=DIR</code> (or 'no') to
+set the prefix where YAJL libraries and headers are installed.
+</p>
+
+<p>Raptor headers are now installed in a sub-directory of
+<em>PREFIX</em><code>/include</code>.
+</p>
+
+<p><code>raptor-config</code> was removed. Building against raptor 2
+should be done only using <code>pkg-config</code> with either
+<code>--cflags</code> or <code>--libs</code> arguments like this:</p>
+<pre>
+ cc -o prog prog.c `pkg-config raptor2 --cflags` `pkg-config raptor2 --libs`
+</pre>
+
+
+<h3>Internal changes</h3>
+
+<p>Code style: lots of changes mostly adding lots more whitespace
+such as to show control change (if, while) or early function exit
+(return).
+</p>
+
+<p>All <code>strcpy()</code> with known lengths and
+<code>strncpy()</code> were replaced with <code>memcpy()</code> which
+is quicker and compilers optimize better.
+</p>
+
+<p>Code style:
+use <code>TYPE* var_name = RAPTOR_CALLOC(TYPE, 1, sizeof(*var_name))</code>
+rather than repeat the type name which can be error-prone.
+</p>
+
+<p>Code style: put whitespace round assignment and operators i.e.
+use <code>c = a + b</code> rather than <code>c=a+b</code>.
+</p>
+
+<p>Code style: removed some <code>strdup()</code>s.
+</p>
+
+<p>Code style: try to remove un-necessary <code>strlen()</code> by
+tending to pass around a string with it's length, a counted string.
+This meant adding a few new constructors such as for the URI and Term
+classes.
+</p>
+
+<p>Code style: methods called with a NULL object return failure
+and destructors called with a NULL object return silently rather than
+the former mix of crashing or <code>abort()</code>ing.
+</p>
+
+<p>Code style: copy constructor is now called
+<code>raptor_</code><em>class</em><code>_copy()</code> rather than
+<code>raptor_new_</code><em>class</em><code>_from_</code><em>class</em><code>()</code>
+for brevity.
+</p>
+
+<p>Code style: print methods return an int return status indicating
+success.
+</p>
+
+
+<h3>rapper Utility changes</h3>
+
+<p>Print out the option types next to the description in the <code>-f
+help</code> usage message.
+</p>
+
+<p>Removed unused <code>-a</code> flag from code.
+</p>
+
+<p>Did NOT rename <code>-f</code> option to match the renaming of
+features to options in the API. Not needed.
+</p>
+
+<p>Removed long deprecated <code>-n</code> flag which was shortcut for
+selecting the N-Triples parser and can be done with <code>-i ntriples</code>
+</p>
+
+<p>Removed <code>-s/--scan</code> flag since it is an option of a
+single parser (RDF/XML) which can be done with <code>-f/--feature
+scanForRDF</code>.
+</p>
+
+
+<h3>Other changes</h3>
+
+<p>Removed support for building raptor with dmalloc debugging
+(removing <code>--with-dmalloc</code> configure argument). Valgrind
+wins.
+</p>
+
+<p>The example 'grapper' GNOME GUI utility for raptor was updated
+to the latest GTK APIs (2.5.0+ but still quite old) so that it
+builds with all the GTK 'disable deprecated' flags set. The
+UI is not quite correct though - the preferences menu is broken.
+</p>
+
+<p>Switched to GIT version control, hosted by GitHub. The latest
+raptor 1 code is available on branch 'raptor1' as well as from the
+release tags for specific versions.
+</p>
+
+
+
+<!-- *************** 1.4.X Series ******************************** -->
+
+
+<h2 id="rel1_4_21"><a name="rel1_4_21">Raptor 1.4.21 Changes</a></h2>
+
+<p>This is a bug fix only release with no new features. New
+development has moved to raptor 2 where a planned ABI and API break
+is underway.
+</p>
+
+<p>Fixed Issues:</p>
+<ul>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=318">0000318</a>: Cannot end a Turtle literal with \\ inside triple-quotes</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=319">0000319</a>: ntriples parser does not register that it accepts ntriples mime type - text/plain</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=326">0000326</a>: Turtle parser allows '.' in qnames which is not-to-spec</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=331">0000331</a>: Turtle long literals with raw newlines do not count line numbers correctly</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=332">0000332</a>: RDFXML parser finds duplicates and misbehaves (when it shouldn't)</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=337">0000337</a>: raptor/turtle outputs invalid qnames which cause syntax errors on parsing</li>
+</ul>
+
+<h3>Parser changes</h3>
+
+<p>N-Triples parser: Declare acceptance of text/plain mime type with
+q=0.1
+</p>
+
+<p>RDFA parser (via librdfa): Updated to fix some buffer management
+problems when it was passed large blocks (4096 bytes or more), a few
+memory leaks and some other minor bugs.
+</p>
+
+<p>RDF/XML parser: Properly reset the ID-checking set at the start of
+each parse.
+</p>
+
+<p>Turtle parser: Allow \\ at the end of triple-quoted literals.
+Forbid '.'s in prefixes and qnames (follow specification).
+Properly count newlines inside the literals for error reporting.
+</p>
+
+<h3>Serializer changes</h3>
+
+<p>Turtle serializer: Forbid '.'s in prefixes and qnames (follow
+specification).
+</p>
+
+<h3>Other Changes</h3>
+
+<p>Updated <code>configure</code> and the build system to use silent
+rules for the maintainer (by default), or when
+<code>--enable-silent-rules</code> is passed to
+<code>configure</code>. This feature requires building with automake
+1.11 which requires autoconf 2.62 or newer when building from GIT.
+</p>
+
+<p><code>autogen.sh</code> script was updated to enforce the
+autotools versions above.
+</p>
+
+
+
+<h2 id="rel1_4_20"><a name="rel1_4_20">Raptor 1.4.20 Changes</a></h2>
+
+<p>This is a bug fix only release with no new features. New
+development has moved to raptor 2 where a planned ABI and API break
+will happen. There may be preview releases of raptor 2 with 1.9.x
+numbering.
+</p>
+
+<p>Fixed Issues:</p>
+<ul>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=306">0000306</a>: rapper doesn't handle datatype=""and xml:lang="" properly with RDFa</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=307">0000307</a>: configure fails at vnsprintf test when cross compiling</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=310">0000310</a>: Raptor does not like single character namespaces with RDFa</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=312">0000312</a>: Ununitialized pointer in example rdfserialize.c causes crash</li>
+</ul>
+
+<h3>Parser Changes</h3>
+
+<p>
+GRDDL parser: Fix XML parser context resource leak if
+<code>raptor_grddl_fetch_uri()</code> fails. Save and restore error
+handlers properly to prevent crashes when an error is reported during
+parsing.
+</p>
+
+<p>
+RDFA parser (via librdfa): Update to latest librdfa GIT sources with head
+a438ce68a40e04b399ec2b2c613d0c867d9315c7 <br />
+now moved to
+<a href="http://github.com/msporny/librdfa">http://github.com/msporny/librdfa</a>
+to fix handling single character namespaces
+(<a href="http://bugs.librdf.org/mantis/view.php?id=310">Issue #0000310</a>),
+empty datatype attribute and empty xml:lang attributes
+(<a href="http://bugs.librdf.org/mantis/view.php?id=306">Issue #0000306</a>)
+</p>
+
+<p>Added three unapproved RDFa tests 0172, 0173 and 0174 to cover the
+fixes above.
+</p>
+
+<h3>Serializer Changes</h3>
+
+<p>
+Turtle serializer:
+Applied scalability patch from Chris Cannam.
+This switches the serializer to use a <code>raptor_avltree</code>
+instead of a <code>raptor_sequence</code> for the subject and blanks
+used with <code>raptor_abbrev_node_lookup()</code>. This fixes a
+performance problem in the serializing and moves lookups from O(N) to
+O(log N) - from list to balanced tree.
+</p>
+
+<h3>Other Changes</h3>
+
+<p>If cross compiling, check for <code>vsnprintf()</code> C99 compatible at
+runtime by setting define <code>CHECK_VSNPRINTF_RUNTIME</code> during
+configuration.
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=307">Issue #0000307</a>
+</p>
+
+<p>Use <code>calloc()</code> for allocating a <code>raptor_statement</code> in
+rdfserializer.c example code to properly initialise state.
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=312">Issue #0000312</a>
+</p>
+
+<p>Use <code>AC_SYS_LARGEFILE</code> to get large file IO checks which
+allows 32-bit systems to read multi-gigabyte files.
+</p>
+
+<p><code>autogen.sh</code> script fix for if test when uname is not in
+standard OSX dir.
+</p>
+
+
+
+<h2 id="rel1_4_19"><a name="rel1_4_19">Raptor 1.4.19 Changes</a></h2>
+
+<blockquote>
+<p><strong>WARNING: FUTURE ABI and API CHANGES.</strong> The next
+release of raptor 1.4.x will include bug fixes only and no new
+features. New development will move to raptor 2 where a planned ABI
+and API break will happen. There may be preview releases of raptor 2
+with 1.9.x numbering.</p>
+</blockquote>
+
+<p>Fixed Issues:</p>
+<ul>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=259">0000259</a>: Fix NFC check for legal combiner sequence</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=262">0000262</a>: Error when <code>raptor_new_uri()</code> fails in Turtle parser</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=263">0000263</a>: Invalid turtle output syntax on empty integer/double/decimal literals </li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=266">0000266</a>: Default/atom namespace in atom serializer output</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=269">0000269</a>: strstr is called in <code>raptor_parse_chunk()</code> on a buffer string, where it should be called on a null-terminating string.</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=270">0000270</a>: RSS serializer fixes for g++</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=276">0000276</a>: Fix <code>raptor_sequence_set_at()</code> when setting beyond end</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=277">0000277</a>: broken collection abbreviation in turtle serialization</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=287">0000287</a>: Fix <code>raptor_sax2_parse_chunk()</code> calling <code>raptor_log_error_to_handlers()</code> with expat</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=288">0000288</a>: raptor_get_feature function does not return feature value</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=289">0000289</a>: Fix RDFa parser problem when there is a subject and predicate specified on an element, but no child nodes for the object literal</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=290">0000290</a>: Fix performance problems when turtle parsing with lots of namespaces</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=293">0000293</a>: Fix RDF/XML Parser problem with legacy ordinal predicates</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=296">0000296</a>: Avoid calling <code>xsltSetDefaultSecurityPrefs()</code></li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=299">0000299</a>: Avoid calling <code>xmlSetStructuredErrorFunc()</code> and <code>xmlSetGenericErrorFunc()</code></li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=303">0000303</a>: rdfa parser does not parse content as RDFa which librdfa+expat alone handles</li>
+</ul>
+
+
+<h3>Parser Changes</h3>
+
+<p><code>raptor_get_feature()</code> now returns the integer value rather than
+just 1 or 0.<br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=288">Issue #0000288</a>
+</p>
+
+<p>Guess parser: return name of guessed parser not 'guess'.
+</p>
+
+<p>N-Triples parser:
+Produce error messages when raptor_new_uri() fails. <br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=262">Issue #0000262</a>
+</p>
+
+<p>RDFa parser:
+Fix problem when there is a subject and predicate specified on an
+element, but no child nodes for the object literal using
+latest librdfa GIT source with head
+2ddcb3f9e010d0b3d9ee546e807539be5da1b14a <br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=289">Issue #0000289</a>
+</p>
+
+<p>RSS tag soup parser:
+Huge internal changes:<br />
+Recording more atom core structures in triples (such as author, contributor -
+person) rather than only channels and items<br />
+Introduced a new 'blocks' concept to record single element structured
+items such as atom category, link and rss enclosure<br />
+Added itunes namespace and container.<br />
+</p>
+
+<p>RDF/XML Parser:
+Adjust predicate_type when removing ordinal identifier type from predicate. <br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=293">Issue #0000293</a>
+</p>
+
+
+<h3>Serializer Changes</h3>
+
+<p>Atom 1.0 serializer:
+Now tested and takes more care to try to generate valid Atom 1.0
+</p>
+
+<p>Turtle serializer:
+Validate XSD integer, decimal and double literal
+output. Emit special short forms only if the whole literal value is
+consumed by <code>strtol()</code> (for integers) or
+<code>strtod()</code> (for decimals and doubles). Otherwise produce a
+warning and emit literal in the normal
+<code>"value"^^&lt;datatype_uri&gt;</code> format. <br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=263">Issue #0000263</a><br />
+Fix broken collection abbreviation<br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=277">Issue #0000277</a><br />
+</p>
+
+<p>RSS serializer:
+Fixes for g++ <br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=270 ">Issue #0000270</a>
+<br />
+Added a new serializer feature
+<code>RAPTOR_FEATURE_PREFIX_ELEMENTS</code> (short name
+prefixElements) for atom and rss 1.0 serializers to decide whether
+core elements in the default namespace are declared with the prefix
+or without a prefix.<br />
+Removed generation of deprecated predicate ordinals of type
+<code>RAPTOR_IDENTIFIER_TYPE_ORDINAL</code> and replace with resource type URIs
+</p>
+
+
+<h3>XML Support Changes</h3>
+
+<p>Removed generic calls to <code>xmlSetStructuredErrorFunc()</code>
+and <code>xmlSetGenericErrorFunc()</code> which can be a problem when
+libxml is shared with other code in memory. They may be called
+optionally but will do a save/restore of the existing functions.
+This protection is enabled by the new API call
+<code>raptor_set_libxml_flags()</code> to set the flags from values
+in enum <code>raptor_libxml_flags</code>. <br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=299">Issue #0000299</a>
+</p>
+
+<p>Use context-specific libslt security configuration to avoid
+calling generic call <code>xsltSetDefaultSecurityPrefs()</code> which
+can be a problem when libxslt is shared with other code in memory.
+Allow the user to set the policy for raptor globally with new API
+function <code>raptor_set_libxslt_security_preferences()</code>. <br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=296">Issue #0000296</a>
+</p>
+
+<p>Make libxml SAX2 structured errors register parser-specific
+handler function <code>raptor_libxml_xmlStructuredErrorFunc()</code>
+instead of libxml global structured error handler. The libxml flag
+method above can still enable registerding the global error handlers.
+</p>
+
+<p>In <code>raptor_sax2_parse_chunk()</code> fixed calls to
+<code>raptor_log_error_to_handlers()</code> when built with expat. <br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=287">Issue #0000287</a>
+</p>
+
+
+<h3>Other Changes</h3>
+
+<p>Win32 portability fixes from Lou Sakey:</p>
+<ul>
+ <li>Handle absence of <code>gettimeofday()</code></li>
+ <li>Call <code>xmlCleanupParser()</code> libxml call last to avoid an access
+violation on windows.</li>
+ <li>Windows <code>vsnprintf()</code> portability patch</li>
+ <li><code>raptor_sequence_set_at()</code> fixed to maintain the design
+contract: provide "size" consecutive items in "sequence" starting from
+"start" even when setting items more than +1 offset beyond the end of
+sequence. <br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=276">Issue #0000276</a>
+ </li>
+</ul>
+
+<p><code>rapper(1)</code> utility changes: if counting, do not use a
+serializer at all.
+</p>
+
+
+<h3>Internal Changes</h3>
+
+<p>More internal changes to be more resiliant after allocation failure
+(Lauri Aalto)
+</p>
+
+<p>Reorganised tests in source tree to pull out specific directories
+for RDF/XML, Turtle, etc.
+</p>
+
+<p>Use a DJ Bernstein hash to replace a linked list for storing a
+stack of namespaces. This makes turtle parsing with lots of
+namespaces (100s) much faster. Based on the initial patch in the bug. <br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=290">Issue #0000290</a>
+</p>
+
+<p>Use new internal <code>raptor_memstr()</code> function to compare
+a string against a buffer that may not be NUL terminated. <br />
+<a href="http://bugs.librdf.org/mantis/view.php?id=269">Issue #0000269</a>
+</p>
+
+<p><code>raptor_error_handlers</code>: API structure gains world
+field. BINARY COMPATIBILITY BREAK: sizeof(raptor_error_handlers)
+changed. Source compatibility not broken.
+</p>
+
+<p><code>raptor_identifier</code>: API structure gains world
+field. BINARY COMPATIBILITY BREAK: sizeof(raptor_identifier)
+changed. Source compatibility not broken.
+</p>
+
+<p>More fixes for compiling with C++
+</p>
+
+<p>Move some more static data as constant to enable more efficient
+compilation - moves to data segment of object binary.</p>
+
+<p>Use memmove for overlapping copy, not memcpy when doing relative
+URI resolving.
+</p>
+
+
+<h3>Raptor V2 Preparation Changes</h3>
+
+<p>Lots of internal changes were made by Lauri Aalto preparing for
+Raptor V2 to fully attach all static data and config to a new
+<code>raptor_world</code> object. A new static instance of this
+class is now used internally behind the existing V1 API and will be
+required to be constructed by the library user for the V2 API with a
+new constructor/destructor.</p>
+
+<p><b>NOTE:</b> The method names here are illustrative of the final
+V2 names but are not confirmed - <strong>These functions are not
+supported in the 1.4.x series</strong>. Some methods will still be
+altered for fields and (<code>raptor_world</code>) parameters. All constructors
+should have it as a parameter. All methods will not have them (so
+for example, all the URI methods named _v2 will lose the world
+parameter and just have the URI parameter - but that is also because
+the URI handler/context part will go into raptor_world in V2)</p>
+
+<p>To use the <strong>unsupported and experimental</strong> V2
+functions, define <code>-DRAPTOR_V2_EXPERIMENTAL=1</code> when
+building with raptor.
+</p>
+
+<p>Added <code>raptor_world</code> typedef.</p>
+
+<p>Added raptor world class constructor
+<code>raptor_world* raptor_new_world(void)</code> and initializer:
+<code>int raptor_world_open(raptor_world* world)</code>
+</p>
+
+<p>Added world class destructor:
+<code>void raptor_free_world(raptor_world* world)</code>
+</p>
+
+<p>Added new V2 methods:</p>
+<pre>
+ void raptor_world_set_libxslt_security_preferences(raptor_world *world,
+ void *security_preferences)
+
+ void raptor_world_set_libxml_flags(raptor_world *world, int flags)
+
+ void raptor_error_handlers_init_v2(raptor_world* world,
+ raptor_error_handlers* error_handlers);
+</pre>
+
+
+<p>Added V2 methods that are versions of existing methods, named with
+_v2 suffix:</p>
+<pre>
+ int raptor_parsers_enumerate_v2(raptor_world* world,
+ const unsigned int counter, const char **name, const char **label)
+
+ int raptor_syntax_name_check_v2(raptor_world* world, const char *name);
+
+ void raptor_print_locator_v2(raptor_world* world, FILE *stream,
+ raptor_locator* locator);
+
+ const char *raptor_locator_uri_v2(raptor_world* world,
+ raptor_locator *locator);
+
+ int raptor_features_enumerate_v2(raptor_world* world,
+ const raptor_feature feature, const char **name,
+ raptor_uri **uri, const char **label);
+
+ int raptor_serializers_enumerate_v2(raptor_world* world,
+ const unsigned int counter, const char **name, const char **label,
+ const char **mime_type, const unsigned char **uri_string);
+
+ int raptor_serializer_syntax_name_check_v2(raptor_world* world,
+ const char *name);
+
+ int raptor_serializer_features_enumerate_v2(raptor_world* world,
+ const raptor_feature feature, const char **name, raptor_uri **uri,
+ const char **label);
+</pre>
+
+<p>Added world pointer to raptor_identifier object</p>
+
+<p>Added V2 identifier class constructor:</p>
+<pre>
+ raptor_identifier* raptor_new_identifier_v2(raptor_world* world,
+ raptor_identifier_type type, raptor_uri *uri,
+ raptor_uri_source uri_source, const unsigned char *id,
+ const unsigned char *literal, raptor_uri *literal_datatype,
+ const unsigned char *literal_language);
+</pre>
+
+<p>Added V2 parser class method:</p>
+<pre>
+ raptor_parser* raptor_new_parser_for_content_v2(raptor_world* world,
+ raptor_uri *uri, const char *mime_type, const unsigned char *buffer,
+ size_t len, const unsigned char *identifier)
+ raptor_world* raptor_parser_get_world(raptor_parser* rdf_parser);
+</pre>
+
+<p>Added V2 serializer class constructor and method:</p>
+<pre>
+ raptor_serializer* raptor_new_serializer_v2(raptor_world* world,
+ const char *name)
+ raptor_world* raptor_serializer_get_world(raptor_serializer* rdf_serializer)
+</pre>
+
+<p>Added V2 statement class <code>raptor_statement_v2</code> typdef
+for future replacing of <code>raptor_statement</code></p>
+
+<p>Added V2 statement class methods:</p>
+<pre>
+ void raptor_print_statement_v2(const raptor_statement_v2 * statement,
+ FILE *stream);
+
+ unsigned char* raptor_statement_part_as_counted_string_v2(raptor_world* world,
+ const void *term, raptor_identifier_type type,
+ raptor_uri* literal_datatype, const unsigned char *literal_language,
+ size_t* len_p);
+
+ unsigned char* raptor_statement_part_as_string_v2(raptor_world* world,
+ const void *term, raptor_identifier_type type,
+ raptor_uri* literal_datatype, const unsigned char *literal_language);
+
+ int raptor_statement_compare_v2(const raptor_statement_v2 *s1,
+ const raptor_statement_v2 *s2);
+</pre>
+
+<p>Added V2 uri class methods:</p>
+<pre>
+ unsigned char* raptor_uri_as_counted_string(raptor_uri *uri, size_t* len_p);
+
+ raptor_uri* raptor_new_uri_v2(raptor_world* world,
+ const unsigned char *uri_string);
+
+ raptor_uri* raptor_new_uri_from_uri_local_name_v2(raptor_world* world,
+ raptor_uri *uri, const unsigned char *local_name);
+
+ raptor_uri* raptor_new_uri_relative_to_base_v2(raptor_world* world,
+ raptor_uri *base_uri, const unsigned char *uri_string);
+
+ raptor_uri* raptor_new_uri_from_id_v2(raptor_world* world,
+ raptor_uri *base_uri, const unsigned char *id);
+
+ raptor_uri* raptor_new_uri_for_rdf_concept_v2(raptor_world* world,
+ const char *name);
+
+ void raptor_free_uri_v2(raptor_world* world, raptor_uri *uri);
+
+ int raptor_uri_equals_v2(raptor_world* world, raptor_uri* uri1,
+ raptor_uri* uri2);
+
+ int raptor_uri_compare_v2(raptor_world* world, raptor_uri* uri1,
+ raptor_uri* uri2);
+
+ raptor_uri* raptor_uri_copy_v2(raptor_world* world, raptor_uri *uri);
+
+ unsigned char* raptor_uri_as_string_v2(raptor_world* world, raptor_uri *uri);
+
+ unsigned char* raptor_uri_as_counted_string_v2(raptor_world* world,
+ raptor_uri *uri, size_t* len_p);
+
+ raptor_uri* raptor_new_uri_for_xmlbase_v2(raptor_world* world,
+ raptor_uri* old_uri);
+
+ raptor_uri* raptor_new_uri_for_retrieval(raptor_uri* old_uri);
+
+ raptor_uri* raptor_new_uri_for_retrieval_v2(raptor_world* world,
+ raptor_uri* old_uri);
+
+ raptor_uri* raptor_new_uri_for_xmlbase_v2(raptor_world* world,
+ raptor_uri* old_uri);
+
+ raptor_uri* raptor_new_uri_for_retrieval_v2(raptor_world* world,
+ raptor_uri* old_uri);
+
+ unsigned char* raptor_uri_to_relative_counted_uri_string_v2(raptor_world* world,
+ raptor_uri *base_uri, raptor_uri *reference_uri, size_t *length_p);
+
+ unsigned char* raptor_uri_to_relative_uri_string_v2(raptor_world* world,
+ raptor_uri *base_uri, raptor_uri *reference_uri);
+
+ void raptor_uri_print_v2(raptor_world* world,
+ const raptor_uri* uri, FILE *stream);
+
+ unsigned char* raptor_uri_to_counted_string_v2(raptor_world* world,
+ raptor_uri *uri, size_t *len_p);
+
+ void raptor_uri_set_handler_v2(raptor_world* world,
+ const raptor_uri_handler *handler, void *context);
+
+ void raptor_uri_get_handler_v2(raptor_world* world,
+ const raptor_uri_handler **handler, void **context);
+</pre>
+
+<p>Added V2 www class methods:</p>
+<pre>
+ raptor_www *raptor_www_new_with_connection_v2(raptor_world* world,
+ void* connection);
+</pre>
+
+<p>Added V2 qname class methods:</p>
+<pre>
+ raptor_qname* raptor_new_qname_from_namespace_local_name_v2(raptor_world* world,
+ raptor_namespace *ns, const unsigned char *local_name,
+ const unsigned char *value);
+</pre>
+
+<p>Added V2 namespace class methods:</p>
+<pre>
+ raptor_namespace_stack* raptor_new_namespaces_v2(raptor_world* world,
+ raptor_simple_message_handler error_handler, void *error_data, int defaults);
+
+ int raptor_namespaces_init_v2(raptor_world* world,
+ raptor_namespace_stack *nstack,
+ raptor_simple_message_handler error_handler, void *error_data,
+ int defaults);
+</pre>
+
+<p>Added V2 sequence class typedefs and methods:</p>
+<pre>
+ typedef void (raptor_sequence_free_handler_v2(void* context, void* object));
+
+ typedef void (raptor_sequence_print_handler_v2(void *context, void *object,
+ FILE *fh));
+
+ raptor_sequence* raptor_new_sequence_v2(raptor_sequence_free_handler_v2* free_handler,
+ raptor_sequence_print_handler_v2* print_handler, void* handler_context);
+
+ void raptor_sequence_set_print_handler_v2(raptor_sequence *seq,
+ raptor_sequence_print_handler_v2 *print_handler);
+</pre>
+
+<p>Added V2 iostream class methods:</p>
+<pre>
+ int raptor_iostream_write_uri_v2(raptor_world* world,
+ raptor_iostream *iostr, raptor_uri *uri);
+
+ void raptor_iostream_write_statement_ntriples_v2(raptor_world* world,
+ raptor_iostream* iostr, const raptor_statement *statement);
+</pre>
+
+<p>Added V2 xml writer class methods:</p>
+<pre>
+ raptor_xml_writer* raptor_new_xml_writer_v2(raptor_world* world,
+ raptor_namespace_stack *nstack, raptor_iostream* iostr,
+ raptor_simple_message_handler error_handler, void *error_data,
+ int canonicalize);
+
+ int raptor_xml_writer_features_enumerate_v2(raptor_world* world,
+ const raptor_feature feature, const char **name, raptor_uri **uri,
+ const char **label);
+</pre>
+
+
+<h2 id="rel1_4_18"><a name="rel1_4_18">Raptor 1.4.18 Changes</a></h2>
+
+<p>Fixed Issues:</p>
+<ul>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=186">0000186</a>: Add RDFa support to Raptor</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=255">0000255</a>: rss-tag-soup serializer does not generate namespaces so re-serializing in rdf/xml looks wierd for atom</li>
+</ul>
+
+
+<h3>Parser Changes</h3>
+
+<p>A new
+<a href="http://www.w3.org/TR/2008/CR-rdfa-syntax-20080620/">RDFa</a>
+parser was added (name <code>rdfa</code>) using
+<a href="http://rdfa.digitalbazaar.com/librdfa/">librdfa</a> to
+implement it. librdfa is linked as part of Raptor and
+written by Manu Sporny of Digital Bazaar, licensed with the
+same license as Raptor.</p>
+
+<p>The RDFa
+<a href="http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/">test suite</a>
+was added to the test and (via librdfa) Raptor passes all but 4 tests
+which fail due to different output xmlns attribute ordering (which
+does not matter to XML parsers).</p>
+
+
+<h3>Serializer Changes</h3>
+
+<p>Added new function
+<code>raptor_serialize_start_to_iostream()</code> to have the new
+semantics of not owning and destroying the passed-in iostream. This
+allows the caller to serialize to an existing iostream and then
+to continue to write to it. <code>raptor_serialize_start()</code>
+owns and then closes the iostream that is passed in.
+</p>
+
+<p>A new Atom Syndication Format 1.0 (<a href="http://www.ietf.org/rfc/rfc4287.txt">RFC 4287</a>) serializer was added (name <code>atom</code>)
+using the RSS 1.0 RDF triple model with mapping to atom terms
+and consideration of atom output format conditions.
+</p>
+
+<p>RSS 1.0 serializer</p>
+<ul>
+<li>Allow setting output namespaces for the serializer</li>
+<li>Allow writing extra RDF triples as RDF/XML attached to RSS items.</li>
+<li>Recognize predicates with XML Literal and emit as
+<code>parseType="Literal"</code> or when <code>content:encoded</code>,
+as a CDATA block, by RSS 1.0 convention.</li>
+<li>Removed code assumptions about triples appearing in a certain order.</li>
+<li>Free namespaces and stack in correct order</li>
+</ul>
+
+<p>Turtle serializer now respects the <code>writeBaseURI</code>
+feature to control generating the <code>@base</code> directive.
+</p>
+
+<p>Abbreviated serializers (RDF/XML Abbrev and Turtle) now remove
+duplicate triples.
+</p>
+
+<p>Added feature <code>RAPTOR_FEATURE_RSS_TRIPLES</code> to add RDF
+triples to RSS 1.0 or Atom serializer output with values 'rdfxml' or
+'atom-triples'. Atom triples writes <code>at:map</code> sections for
+the <code>atom:entry</code> elements and at:feedmap and
+<code>at:entrymap</code> sections to the <code>atom:feed</code>
+elements. <code>at:contentType</code> is used to provide a
+<code>type</code> attribute value for an <code>atom:content</code>
+that has a URI value.
+</p>
+
+<p>Added <code>RAPTOR_FEATURE_ATOM_ENTRY_URI</code> for the Atom
+serializer to set the URI of an atom entry. If the URI matches the
+URI of an entry item in the RDF mode of the channel, then an Atom
+Entry document is generated rather than an Atom Feed document.
+</p>
+
+
+<h3>QName Class Changes</h3>
+
+<p>Added <code>raptor_qname_to_counted_name()</code> to get
+a formatted qname for a name.
+</p>
+
+<p><code>raptor_new_qname_from_namespace_local_name()</code> will
+accept a NULL namespace to construct a namespace-less qname.
+</p>
+
+<h3>Sequence Class Changes</h3>
+
+<p><code>raptor_sequence_set_at()</code> now handles
+setting an item at an index in the sequence beyond capacity+1
+to automatically extend.
+</p>
+
+<p>Added <code>raptor_sequence_delete_at()</code> to delete an item
+at a position in a sequence and return it.
+</p>
+
+<h3>URI Class Changes</h3>
+
+<p><code>raptor_uri_to_relative_counted_uri_string()</code> now
+has support for a base URI with scheme and authority but no path,
+so the result can be a relative URI starting with '/'.
+</p>
+
+<h3>XML Writer Class Changes</h3>
+
+<p>XML Writer allows adding newlines via
+<code>raptor_xml_writer_newline()</code> which
+requires use of <code>raptor_xml_writer_flush()</code> to indicate
+when XML writer output is finished.
+</p>
+
+<p>Added <code>raptor_xml_writer_get_depth()</code> to get the current
+XML writer element stack depth.
+</p>
+
+<h3>Other Changes</h3>
+
+<p>Many more resiliance checks were added.
+</p>
+
+<p>Removed all calls to abort() in code on fatal errors. This
+requires using setjmp and longjmp inside parsers built with
+flex and bison.
+</p>
+
+<p>The Turtle writer may optionally generate @base depending on
+flags. (This is used by Turtle serializer to handle the writeBaseURI
+feature)
+</p>
+
+<p>Tidied error messages for <code>rapper(1)</code> when parsing stdin.
+</p>
+
+<p>raptor_init() and raptor_finish() use a reference count to ensure
+initialising and terminating happen at most once each.
+</p>
+
+
+
+
+<h2 id="rel1_4_17"><a name="rel1_4_17">Raptor 1.4.17 Changes</a></h2>
+
+<p>The main changes to this release are:</p>
+
+<p>Added two new JSON serializers: resource-centric 'json'
+(Talis <a href="http://n2.talis.com/wiki/RDF_JSON_Specification">RDF/JSON</a>)
+and triple-centric 'json-triples'.
+</p>
+
+<p>Made I/O Stream class <code>raptor_iostream</code> support
+reading as well as writing with new constructors and
+new methods.</p>
+
+<p>Added a new public SAX2 API class <code>raptor_sax2</code>
+exposing the existing internal API which has been around since the
+first release of Raptor 8 years ago and runs on top of either expat
+or libxml2.</p>
+
+<p>Added new public error handlers structure
+<code>raptor_error_handlers</code> containing a set of
+(function, data pointers) pairs called <code>raptor_handler_closure</code>
+for each error log level.
+Added <code>raptor_log_level</code> enum for the error log level.
+Added an initialization function for the structure,
+<code>raptor_error_handlers_init()</code>.
+</p>
+
+<p>Several other API changes, fixes and improvements were made.</p>
+
+<p>Fixed Issues:</p>
+<ul>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=252">0000252</a>: Allow controlling of cache headers in Raptor</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=245">0000245</a>: Extra classes added to an OWL object</li>
+</ul>
+
+
+<h3>I/O Stream class changes</h3>
+
+<p>Made I/O Stream class <code>raptor_iostream</code> support
+reading data in addition to writing. (Dave B):</p>
+<ul>
+<li>Deprecated <code>raptor_iostream_handler</code> structure for new
+<code>raptor_iostream_handler2</code> structure which contains the
+new factory functions for reading.</li>
+<li>Added new read I/O stream factory handler typedefs
+<code>raptor_iostream_read_bytes_func</code> and
+<code>raptor_iostream_read_eof_func</code>.
+</li>
+<li>Added new <code>raptor_new_iostream_from_handler2()</code> I/O
+stream constructor to allow building of read and write iostreams
+deprecating <code>raptor_new_iostream_from_handler()</code>.
+</li>
+<li>Added new <code>raptor_iostream_tell()</code> deprecating
+<code>raptor_iostream_get_bytes_written_count</code>.
+</li>
+<li>Added new read I/O Stream constructors:
+<code>raptor_new_iostream_from_sink</code>(),
+<code>raptor_new_iostream_from_filename()</code>
+<code>raptor_new_iostream_from_file_handle()</code> and
+<code>raptor_new_iostream_from_string()</code>
+</li>
+<li>Added new read I/O Stream methods
+<code>raptor_iostream_read_bytes()</code> and
+and <code>raptor_iostream_read_eof()</code>.
+</li>
+</ul>
+
+<p>Added new write I/O Stream method
+<code>raptor_iostream_write_string_python()</code> to write an
+encoded string to an I/O stream using python / JSON / Turtle /
+N-Triples / SPARQL escaping rules. (Dave B)
+</p>
+
+
+<h3>Serializer Class Changes</h3>
+<p>Added two new JSON serializers (Dave B):</p>
+<ol>
+<li>Resource-centric serializer named <code>json</code> based on
+<a href="http://n2.talis.com/wiki/RDF_JSON_Specification">Talis RDF/JSON Specification</a></li>
+<li>Triple-centric serializer named <code>json-triples</code> based on the SPARQL results in JSON format.</li>
+</ol>
+
+<p>Added new serializer features for the JSON serializers (DaveB):</p>
+<ul>
+<li><code>RAPTOR_FEATURE_JSON_CALLBACK</code> (name 'jsonCallback') to
+set the top-level callback function name wrapper above the outer object.</li>
+<li><code>RAPTOR_FEATURE_JSON_EXTRA_DATA</code> (name 'jsonExtraData') to
+add extra top-level JSON object data.</li>
+</ul>
+
+<p>Example of using the resource-centric serializer while defining a
+callback:</p>
+<pre>
+$ rapper -q -o json -f jsonCallback=foo http://librdf.org/raptor/raptor.rdf
+foo(
+{
+ "http://librdf.org/raptor/#raptor" : {
+ "http://usefulinc.com/ns/doap#description" : [ {
+...
+</pre>
+
+
+<h3>Statement Class Changes</h3>
+
+<p>Added <code>raptor_statement_compare()</code> to provide an
+ordering between <code>raptor_statement</code> objects. (Dave B)
+</p>
+
+
+<h3>Parser Class Changes</h3>
+
+<p>Added new parser features to control HTTP headers in
+web requests (Dave B, based on a patch in the bug):<br />
+Also never <code>Pragma:</code> header with libcurl ever.<br />
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=252">Issue #0000252</a>
+</p>
+<ul>
+<li><code>RAPTOR_FEATURE_WWW_HTTP_CACHE_CONTROL</code> to control
+sending <code>Cache-Control</code> (default: none)</li>
+<li><code>RAPTOR_FEATURE_WWW_HTTP_USER_AGENT</code> to control
+sending <code>User-Agent</code> (default: none)</li>
+</ul>
+
+<p>Turtle parser:</p>
+<ul>
+<li>Added tests to forbid <code>'</code> and
+<code>'''</code>-quoted strings and to forbid <code>()</code> in
+triple predicate position following the updated Turtle spec. (Dave B)</li>
+<li>Write ';' statement terminators with a leading
+space for consistency with '.' terminator. (Dave R)</li>
+<li>Remove canonicalisation of integer and double
+to match Turtle latest spec. (Dave B)</li>
+</ul>
+
+
+<h3>QName Class Changes</h3>
+
+<p>Added new methods <code>raptor_qname_get_local_name()</code>,
+<code>raptor_qname_get_value()</code> and
+<code>raptor_qname_get_counted_value()</code>. (Dave B)
+</p>
+
+
+<h3>SAX2 Class Changes</h3>
+
+<p>Added new public SAX2 API class <code>raptor_sax2</code> exposind
+th existing internal one which has been around since the first
+release of Raptor 8 years ago and runs on top of either expat or
+libxml2. (Dave B)</p>
+
+<ul>
+<li>Constructor: <code>raptor_new_sax2()</code></li>
+<li>Destructor: <code>raptor_free_sax2()</code></li>
+<li>XML handler methods:
+ <code>raptor_sax2_set_start_element_handler()</code>,
+ <code>raptor_sax2_set_end_element_handler()</code>,
+ <code>raptor_sax2_set_characters_handler()</code>,
+ <code>raptor_sax2_set_cdata_handler()</code>,
+ <code>raptor_sax2_set_comment_handler()</code>,
+ <code>raptor_sax2_set_unparsed_entity_decl_handler()</code> and
+ <code>raptor_sax2_set_external_entity_ref_handler()</code>.
+</li>
+<li>XML handler factory typedefs:
+ <code>raptor_sax2_start_element_handler</code>,
+ <code>raptor_sax2_end_element_handler</code>,
+ <code>raptor_sax2_characters_handler</code>,
+ <code>raptor_sax2_cdata_handler</code>,
+ <code>raptor_sax2_comment_handler</code>,
+ <code>raptor_sax2_unparsed_entity_decl_handler</code> and
+ <code>raptor_sax2_external_entity_ref_handler</code>.
+</li>
+<li>Set XML Namespace handler method:
+<code>raptor_sax2_set_namespace_handler()</code>
+</li>
+<li>Parsing methods:
+ <code>raptor_sax2_parse_start()</code> and
+ <code>raptor_sax2_parse_chunk()</code>
+</li>
+<li>Other methods:
+ <code>raptor_sax2_inscope_xml_language()</code> and
+ <code>raptor_sax2_inscope_base_uri()</code>
+</li>
+</ul>
+
+
+<h3>Serializer Class Changes</h3>
+
+<p>Abbreviated serializers (RDF/XML-Abbrev and Turtle):</p>
+<ul>
+<li>Switched from using a sequence to using an AVL Tree with a cursor
+to more efficiently (faster) group/sort triples by subject. This
+changes the previous syntax output order but has no semantic
+difference. (Dave B)
+</li>
+<li>Use the AVL Tree to remove duplicate triples. (Dave B)<br />
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=245">Issue #0000245</a>
+</li>
+</ul>
+
+<p>Turtle serializer:</p>
+<ul>
+<li>Feature <code>RAPTOR_FEATURE_WRITE_BASE_URI</code>
+added to control writing <code>@base</code> directive to Turtle. (Dave R)</li>
+<li>Remove canonicalisation of integer and double
+to match Turtle latest spec. (Dave B)</li>
+</ul>
+
+
+<h3>URI Class Changes</h3>
+
+<p>Update URI resolving for RFC3986 changes (Dave B)
+</p>
+
+
+<h3>WWW Class Changes</h3>
+
+<p>Added new method <code>raptor_www_set_http_cache_control()</code>
+to set the HTTP <code>Cache-Control:</code> header in requests.
+(Dave B, based on a patch in the bug) <br />
+Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=252">Issue #0000252</a>
+</p>
+
+
+<h3>XML Class Changes</h3>
+
+<p>Added new method <code>raptor_xml_element_get_language()</code>
+to get the language associated with an element. (Dave B)
+</p>
+
+
+<h3>Portability and Resilience Changes</h3>
+
+<p>Pass on error failures in parser and serializer factory
+construction. (Lauri)
+</p>
+
+<p>Abbreviated serializers (RDF/XML-abbrev and Turtle): low memory
+and allocation failure fixes. (Lauri)
+</p>
+
+<p>Altered API function signatures of
+<code>raptor_uri_set_handler()</code>,
+<code>raptor_uri_get_handler()</code>,
+<code>raptor_new_namespaces(),</code>
+<code>raptor_namespaces_init()</code> and
+<code>raptor_new_xml_writer()</code> to add appropriate
+<code>const</code>s. (Lauri)
+</p>
+
+<p>Portability fixes for RAPTOR_API and other macros. (Lauri)
+</p>
+
+<p>Removal of many sets of writable static data in N-Triples parser, URI
+class, Unicode NFC code, libxml support, Turtle writer and XML
+writer. (Lauri)
+</p>
+
+<p>Portability fixes for <code>round()</code> and
+<code>trunc()</code> that are not always available in libc but might
+be in libm. (Dave B)
+</p>
+
+<p>Turtle/N3 parsers and serializers, RDF/XML_Abbrev serializer: many
+low memory fixes and better out of memory errors. (Lauri)
+</p>
+
+
+<h3>Other Changes</h3>
+
+<p>Rewrote internal error log functions to use new error handlers
+structures and simplify the calls. (Dave B)
+</p>
+
+<p>Expanded internal <code>raptor_avltree</code> datatype support to
+add a cursor, allowing it to be used for creating large ordered
+sequences that need to be walked. (Dave B)
+</p>
+
+<p>Updated <code>rdfdiff</code> utility to handle duplicate triples
+in inputs. (Dave B)
+</p>
+
+<p><code>raptor_sequence_shift()</code> and
+<code>raptor_sequence_unshift()</code> are now as efficient as the
+sequence push and pop operations: O(1). (Lauri)
+</p>
+
+<p><code>autogen.sh</code> was updated.
+</p>
+
+<p><code>rapper</code> utility can now accept multiple
+<code>-f</code> / <code>--feature</code> options; previously
+only one parser and one serializer feature was possible.
+</p>
+
+
+<h2 id="rel1_4_16"><a name="rel1_4_16">Raptor 1.4.16 Changes</a></h2>
+
+<p>The main changes to this release are:</p>
+
+<p>Provide 100% support for the
+<a href="http://www.w3.org/TR/2007/REC-grddl-20070911/">GRDDL W3C Recommendation of 2007-09-11</a>.
+</p>
+
+<p>The
+<a href="http://www.dajobe.org/2004/01/turtle/">Turtle</a>
+parser and serializer were updated to support
+<code>@base</code> for specifying a base URI, following
+Turtle of 2007-09-11.
+</p>
+
+<p>The Turtle and RDF/XML serializers had performance improvements
+for large graphs.
+</p>
+
+<p>Added a TRiG Parser based on Turtle with named graph support.</p>
+
+<p>Several other API changes, fixes and improvements were made.</p>
+
+<p>Fixed Issues:</p>
+<ul>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000188">0000188</a>: Wrong RAPTOR_API definition for mingw</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000192">0000192</a>: raptor_uri_filename_to_uri_string() - getcwd() loop error</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000194">0000194</a>: parser and serializer don't recognize the same mime types</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000195">0000195</a>: Compile error in raptor_serialize.c debug code</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000207">0000207</a>: RDF file can be parsed, but not then serialised.</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000210">0000210</a>: RAPTOR_FEATURE_WRITER_XML_DECLARATION broken in Ruby</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000214">0000214</a>: Empty rdf:about, plus base-uri, produces incorrect turtle output</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000216">0000216</a>: flickrdf segfaults at raptor_serialize_end!</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000217">0000217</a>: flickrdf segfaults at raptor_serialize_end!</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000232">0000232</a>: libraptor does not correctly free up libxml error handler, causing crashes in subsequent calls to libxml error handlers</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000237">0000237</a>: raptor_sequence robustness: item ownership on insert error</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000238">0000238</a>: GRDDL parser in SVN overwrites blank nodes when merging graphs</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000239">0000239</a>: GRDDL parser in SVN returns 60 less triples with http://www.w3.org/</li>
+</ul>
+
+
+<h3>Namespaces Class Changes</h3>
+
+<p><code>raptor_namespaces_init()</code> now returns an integer
+status.
+</p>
+
+<h3>Parser Class Changes</h3>
+
+<p>
+Added <code>raptor_graph_handler</code> typedef and
+<code>raptor_set_graph_handler()</code> to return named graph
+identifiers during parsing, initially for the TRiG parser.
+</p>
+
+<p>These were added the GRDDL parser:</p>
+<ul>
+ <li><code>RAPTOR_FEATURE_MICROFORMATS</code> (microformats) to enable
+ hCard and hCal microformats</li>
+ <li><code>RAPTOR_FEATURE_HTML_TAG_SOUP</code> (htmlTagSoup) to use
+ the HTML tag soup parser if the XML parsing fails</li>
+ <li><code>RAPTOR_FEATURE_HTML_LINK</code> (htmlLink) to enable html
+ &lt;link&gt;</li>
+ <li><code>RAPTOR_FEATURE_WWW_TIMEOUT</code> (wwwTimeout) for setting
+ URI retrieval timeouts during processing</li>
+</ul>
+
+
+<h3>XML Element Class Changes</h3>
+
+<p>Added
+<code>raptor_new_xml_element_from_namespace_local_name()</code>
+constructor to make an XML element from a local name relative
+to a <code>raptor_namespace</code>.
+</p>
+
+<h3>Unicode Class Changes</h3>
+
+<p>Defined a new <code>raptor_unichar</code> typedef for a Unicode
+codepoint defined as <code>unsigned long</code> which was the
+previous type used. Altered the Unicode function to take it as a
+parameter. <code>raptor_unicode_char_to_utf8()</code>,
+<code>raptor_utf8_to_unicode_char()</code>,
+<code>raptor_unicode_is_xml11_namestartchar()</code>,
+<code>raptor_unicode_is_xml10_namestartchar()</code>,
+<code>raptor_unicode_is_xml11_namechar()</code> and
+<code>raptor_unicode_is_xml10_namechar()</code>.
+</p>
+
+<h3>URI Class Changes</h3>
+
+<p>Added <code>raptor_uri_compare()</code> and
+<code>raptor_uri_compare_func</code> function pointer for
+implementing it in the <code>raptor_uri_handler</code>. The handler
+now has a version field <code>initialised</code> to trigger the new
+factory method for uri compare when the version is 2 or more.
+</p>
+
+<h3>WWW Class Changes</h3>
+<p>
+Added <code>raptor_www_set_connection_timeout()</code>
+to set the WWW retrieval connection timeout in seconds.
+</p>
+
+<p>
+Added <code>raptor_www_final_uri_handler</code> typedef and
+<code>raptor_www_set_final_uri_handler()</code> to return
+the final URI seen <em>during</em> WWW retrieval such as after
+redirects.
+</p>
+
+<p>
+Added <code>raptor_www_get_final_uri()</code> to return the final URI
+<em>after</em> a WWW retrieval which might include redirects.
+</p>
+
+
+<h3>Parser Changes</h3>
+
+<p>The GRDDL parser/processor was substantially updated and now
+supports 100% of the
+<a href="http://www.w3.org/TR/2007/REC-grddl-20070911/">Gleaning Resource Descriptions from Dialects of Languages (GRDDL)</a>
+syntax, W3C Recommendation of 2007-09-11:
+</p>
+<ul>
+ <li>Transforming XML with XSLT 1.0</li>
+ <li>Processing XML namespaces.</li>
+ <li>Transforming XHTML with XSLT 1.0</li>
+ <li>Processing HTML profiles.</li>
+ <li>Handling of base URIs and URI redirects.</li>
+ <li>XInclude processing.</li>
+ <li>Parsing as RDF/XML when it is recognised after a transform.</li>
+</ul>
+
+<p>it also:</p>
+<ul>
+ <li>Handles hCard and hCal microformats when feature
+ <code>RAPTOR_FEATURE_MICROFORMATS</code> is enabled (default
+ enabled).</li>
+ <li>Handles &lt;link type="application/rdf+xml" href="URI" /&gt; to
+ RDF/XML content when feature <code>RAPTOR_FEATURE_HTML_LINK</code> is
+ enabled (default enabled).</li>
+ <li>Attempts parsing with libxml's HTML parser if XML parsing fails,
+ when feature <code>RAPTOR_FEATURE_HTML_TAG_SOUP</code> is enabled
+ (default enabled).</li>
+ <li>Discards errors during recursive processing such as 404s,
+ failure to parse, failure of XSLT processing.</li>
+ <li>Uses XSLT security - denies reading, writing to files,
+ directories or writing to network.</li>
+ <li>Accepts the <code>RAPTOR_FEATURE_NO_NET</code> feature to prevent
+ all networking.</li>
+ <li>Allows fine-grained URI filtering with
+ <code>raptor_parser_set_uri_filter()</code>.</li>
+</ul>
+
+<p>RDF/XML parser recognising was updated to just the start of the
+document for guessing if it should handle content and to try
+to avoid html URLs.
+</p>
+
+<p>RSS Tag soup parser recognising was updated to accept with the
+string 'feed' in the identifier.
+</p>
+
+<p>TRiG Parser was added based on the Turtle parser, adding named
+graphs. It returns name graph URis via a callback set with new API
+call <code>raptor_set_graph_handler()</code>
+</p>
+
+<p>Turtle parser added <code>@base</code> support, fixed turtle
+escapes to URIs. Recognising was updated to look for
+<code>@prefix</code> early in the document.
+</p>
+
+<h3>Serializer Changes</h3>
+
+<p>Turtle serialiser changes:</p>
+<ul>
+<li>Generate <code>@base</code> when an output base URI is given.</li>
+<li>Properly format Turtle XSD doubles using new snprintf code.</li>
+<li>Fix unwanted blank line at end of Turtle list abbreviation.</li>
+<li>Use AVL Tree rather than sequence for significant performance
+improvement for large serialisations.</li>
+</ul>
+
+<p>RDF/XML serialiser was changed to emit a legal empty RDF/XML
+document when no triples are serialised and to skip emitting
+statements with bad predicate uris rather than returning an error.
+</p>
+
+<p>RDF/XML Abbrev serialiser was changed to use an AVL tree rather
+than sequence for significant performance improvement for large
+serialisations.
+</p>
+
+<h3><code>rapper</code> Utility Changes</h3>
+
+<p>Added an <code>--show-graphs</code> option to print named graph
+URIs as seen (such as with TRiG).
+</p>
+
+<p>Added <code>-I</code> / <code>--input-uri</code> and
+<code>-O</code> / <code>--output-uri</code> options to set the
+input / parsing and output / serializing base URIs
+separately. Defaults remain the same - the serializer base URI
+defaults to the input base URI, however it was set.
+</p>
+
+
+<h3>Portability Changes</h3>
+
+<p>Fixes for when building from Subversion on cygwin (EOL issues,
+Makefiles).</p>
+
+<p>Remove unused semicolons for prevention of compiler warnings.</p>
+
+<p>Fix some uninitialized variables that some compilers complain about.</p>
+
+<p>Allow <code>RAPTOR_ASSERT_DIE</code> to be externally defined.</p>
+
+<p>Allow <code>RAPTOR_WWW_BUFFER_SIZE</code> to be externally defined.</p>
+
+
+<h3>Other Changes</h3>
+
+<p><code>autogen.sh</code> was updated to handle program versions
+better using an inline perl helper.
+</p>
+
+<p>Start to add resiliance to memory allocation failures
+and errors inside the library.
+</p>
+
+<p>Added AVL Tree code to make much faster key:value lookups. This
+is used for RDF/XML parser XML ID checks and in the 'abbrev'
+serializers - Turtle and RDF/XML-Abbrev for looking up nodes.
+</p>
+
+<p>Better libxml error messages are now returned, mentioning
+some of the names and values that caused the error.
+</p>
+
+
+
+<h2 id="rel1_4_15"><a name="rel1_4_15">Raptor 1.4.15 Changes</a></h2>
+
+<h3>General Changes</h3>
+
+<p>GRDDL parser now passes the (unapproved) test suite for the
+<a href="http://www.w3.org/TR/2007/WD-grddl-20070302/">GRDDL W3C Working Draft 2 March 2007</a>
+except for two tests that have been reported as having errors.
+</p>
+
+<p>When using libcurl as the WWW retrieval library, errors in
+resolving a URI such as not found (404) are now reported as proper
+errors and cause parsing to fail rather than just return no triples.
+</p>
+
+<p>Some improvments where made to guessing for a parser to match some
+content. Firstly, any mime type with Q &lt;10 is added to the score,
+don't lose the influence of the mime type entirely. The consequence of
+this is that Turtle can pretend to be a partial N3 parser. Secondly,
+the XHTML mime type is now correctly recognised by the GRDDL parser
+rather than the RSS Tag Soup parser.</p>
+
+
+<p>Fixed Issues:</p>
+<ul>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000174">#0000174</a>: Serializing to rdfxml* with a base_uri doesn't set the <code>xml:base</code> attribute, but does truncate <code>rdf:about</code> and <code>rdf:resource</code> values</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000177">#0000177</a>: Some URI references mis-resolved</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000178">#0000178</a>: No errors from accessing 404 URIs</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=0000180">#0000180</a>: messages garble output to stdout</li>
+</ul>
+
+
+<h3>Parser and Serializer Changes</h3>
+
+<p>Added better error reporting for XML errors using the
+libxml structured error reporing api. From
+</p>
+<pre>
+$ rapper -i grddl http://librdf.org/LICENSE.txt
+rapper: Parsing URI http://librdf.org/LICENSE.txt
+rapper: Error - URI http://librdf.org/LICENSE.txt - XML error - http://librdf.org/LICENSE.txt:2:
+rapper: Error - URI http://librdf.org/LICENSE.txt - XML error - parser
+rapper: Error - URI http://librdf.org/LICENSE.txt - XML error - error :
+rapper: Error - URI http://librdf.org/LICENSE.txt - XML error - Document is empty
+rapper: Error - URI http://librdf.org/LICENSE.txt - XML error - Redland RDF Application Framework - License
+rapper: Error - URI http://librdf.org/LICENSE.txt - XML error - ^
+rapper: Failed to parse URI http://librdf.org/LICENSE.txt grddl content
+rapper: Parsing returned 0 triples
+</pre>
+<p>To this:</p>
+<pre>
+$ rapper -i grddl http://librdf.org/LICENSE.txt
+rapper: Parsing URI http://librdf.org/LICENSE.txt
+rapper: Error - URI http://librdf.org/LICENSE.txt:1 - XML parser error: Document is empty
+rapper: Error - URI http://librdf.org/LICENSE.txt:1 - XInclude processing failed for GRDDL document
+rapper: Failed to parse URI http://librdf.org/LICENSE.txt grddl content
+rapper: Parsing returned 0 triples
+</pre>
+
+
+<p>GRDDL parser updated to support the
+<a href="http://www.w3.org/TR/2007/WD-grddl-20070302/">GRDDL W3C Working Draft 2 March 2007</a>:
+</p>
+<ul>
+<li>Namespace and profile URI handling now works.</li>
+<li>Run XML Include processing</li>
+<li>Throw away XML validation errors</li>
+<li>When a namespace URI is seen that was RDF/XML Mime type, run
+the RDF/XML parser on the content.</li>
+<li>Look for substrings inside rel attributes when looking for profiles.</li>
+<li>Return a warning and do not fail if XSLT sheet is not found</li>
+<li>Use libxml structured errors for better reporting</li>
+<li>Removed old hard-coded xslt scripts</li>
+</ul>
+
+<p>Turtle parser was changed to accept the N3 mime
+type <code>text/rdf+n3</code> at low Q(quality)
+so it might work for N3 that is the RDF subset - quite common.
+</p>
+
+<p>Changed the RSS Tag Soup parser and RSS 1.0 serializer to stop
+sharing use of the declared namespaces so that when using both at the
+same time, there is no double-free of the same objects.
+</p>
+
+<p>Correct the content: namespace URI in the RSS parser and
+serializers.
+</p>
+
+
+<h3>Other Changes</h3>
+
+<p><code>rapper</code> gains a <code>-t/--trace</code> option to show
+URIs traversed. Handy for GRDDL.
+</p>
+
+<p><code>raptor_uri_resolve_uri_reference()</code> no longer goes
+past the end of buffer when the relative URI is <code>,/</code>
+</p>
+
+
+<p>Added an internal API for capturing parsed data as it is seen.
+Use by GRDDL parser but with no public API.
+</p>
+
+<p>Added an internal API for structured error reporting. Updates
+made throughout the library but with no public API.
+</p>
+
+<p>Internal API <code>raptor_new_sax2()</code> signature changed to
+just have an <code>error_handlers</code> pointer argument rather than
+multiple function / user_data pairs.
+</p>
+
+
+
+
+<h2 id="rel1_4_14"><a name="rel1_4_14">Raptor 1.4.14 Changes</a></h2>
+
+<h3>General Changes</h3>
+
+<p>Added a
+<a href="http://www.dajobe.org/2004/01/turtle/">Turtle Terse RDF Triple Language</a> serialiser by <a href="http://codeson.net/">Dave Robillard</a> based on the existing RDF/XML-Abbrev
+serialiser.
+</p>
+
+<p>Added a GraphViz
+<a href="http://www.graphviz.org/doc/info/lang.html">DOT format</a> serialiser
+by Evan Nemerson.
+</p>
+
+<p>The GRDDL parser now does namespace and profile URI recursion and
+has other improvements and fixes.
+</p>
+
+<p>Fixed Issues:</p>
+<ul>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=32">#0000032</a>: GRDDL indirection feature request</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=141">#0000141</a>: Crash when GRDDL parser is used with a used-generated blank node ID prefix.</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=143">#0000143</a>: Crash when GRDDL parser fails to retrieve URI.</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=148">#0000148</a>: A public function to generate a blank ID would be nice though.</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=155">#0000155</a>: entity processing in literal property elements (with libxml)</li>
+ <li><a href="http://bugs.librdf.org/mantis/view.php?id=157">#0000157</a>: Crash when RDF/XML Abbrev serializer sees a <code>rdf:type</code> predicate with a literal object.</li>
+</ul>
+
+<h3>Configuration Changes</h3>
+
+<p><code>raptor-config</code> gains a <code>--private-libs</code>
+for the internal libraries used in building raptor, with the public
+ones only emitted with <code>--libs</code>.
+</p>
+
+<p><code>raptor.pc</code> now uses <code>Libs.private</code> for
+internal dynamically linked libraries.
+</p>
+
+<p>The libxml minimum version is now 2.6.8 since 2.6.7 crashes on
+PPC64 Linux. 2.6.8 was released March 2004 so this should be no
+burden.</p>
+
+<p>Do not use <code>PATH_MAX</code> so raptor can build on Hurd.
+</p>
+
+<h3>Parser Changes</h3>
+
+<p>RDF/XML parser now looks for the RDF/XML root element and
+namespace declaration in the initial bytes of content when guessing.
+This allows content that is in other mime types such as
+<code>application/xml</code> to be more likely guessed as RDF/XML.
+</p>
+
+<p>When guessing a parser to use, if an an exact match is found for
+the mime type (q=10), then that parser is used.
+</p>
+
+<p>The GRDDL parser has several changes:</p>
+<ul>
+ <li>Recurses through the root element's namespace URI and the profile
+ URIs. It excludes several common namespace URIs from processing
+ (XHTML, RDF/XML, XML Schema) and does not traverse the GRDDL profile
+ URI itself.
+ </li>
+ <li>Tries to guess which of the RDF/XML or Turtle parser is wanted
+ from an XSLT result. Guessing is performed because not all the XSLT
+ sheets used in the demonstrations set the mime type to match Turtle's
+ unregistered type, or because the return no mime type, or return an
+ XML one, when it was expected RDF/XML would be received.
+ </li>
+ <li>Watches the processed URIs and never visits the same URI more
+ than once in a session.
+ </li>
+ <li>Passes on general XSLT errors to raptor rather than letting the
+ default (printing to stderr) work.
+ </li>
+ <li>Declares XSLT 'base' and 'Base' parameters to allow some XSLT
+ sheets to work - pragmatism.
+ </li>
+</ul>
+
+<h3>Serializer Changes</h3>
+
+<p>Added a new
+<a href="http://www.dajobe.org/2004/01/turtle/">Turtle Terse RDF Triple Language</a>
+serializer and two new internal APIs based on the existing RDF/XML-Abbrev
+serialiser, written by <a href="http://codeson.net/">Dave Robillard</a>:
+</p>
+<ul>
+ <li><code>turtle_writer</code> for serializing triples to Turtle This
+ may be moved to the public API in a future release.</li>
+ <li><code>raptor_abbrev</code> for the common 'abbreviated
+ serializer' core that is shared between the RDF/XML-Abbrev and Turtle
+ serializer.</li>
+</ul>
+
+<p>Added a new GraphViz
+<a href="http://www.graphviz.org/doc/info/lang.html">DOT format</a> serialiser
+writen by Evan Nemerson.
+</p>
+
+<p>Note that testing the turtle serializing (<code>make test</code>)
+requires the <code>rdfdiff -u</code> and a few of the tests take some
+time to run.</p>
+
+
+<h3>Other Changes</h3>
+
+<p>Added <code>raptor_home_url_string</code>
+and <code>raptor_license_string</code> exported strings.
+</p>
+
+<p>Added <code>raptor_parser_generate_id()</code> as a public function
+to generate an identifier for a parser.
+</p>
+
+<p><code>rdfdiff</code> gains the -u/--base-uri option to specify the
+from file base URI so that if the from file is a local file or
+relative URI, it can be given an absolute base.</p>
+
+<p>Failures to retrieve content from a URI using
+the <code>raptor_www</code> class implementations now return a
+failure as well as setting the HTTP status code to 403 or 404 as
+appropriate. Previously success may have been returned with no
+bytes.</p>
+
+
+<h2 id="rel1_4_13"><a name="rel1_4_13">Raptor 1.4.13 Changes</a></h2>
+
+<h3>General Changes</h3>
+
+<p>Prevent losing memory for a <code>raptor_xml_writer</code> when a
+serializer is reused several times.</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=134">Issue #0000134</a>: Check for equal scheme and authority during construction of relative URIs from two absolute URIs.</li>
+</ul>
+
+
+<h3>Configuration Changes</h3>
+
+<p>In maintainer mode, add all the supported compiler <code>-W</code>
+warning flags to the CFLAGS.
+</p>
+
+<p>Allow <code>LEX</code> to be set to things that aren't exactly
+'flex'.</p>
+
+<h3>Documentation Changes</h3>
+
+<p>Added single triple serializing example to the tutorial to
+demonstrate serializing without parsing and building
+a <code>raptor_statement</code>.</p>
+
+<h3>Other Changes</h3>
+
+
+<p>Declare several raptor functions with GCC printf-formatting
+attributes when using a new enough GCC.</p>
+
+<p>RDF/XML parser now creates literals with
+<code>raptor_stringbuffer</code> so that it does a lot less copying
+when constructing longer literals.
+</p>
+
+<p>Added single <code>raptor_statement</code> serializing example
+to demonstrate serializing alone without parsing.</p>
+
+
+
+<h2 id="rel1_4_12"><a name="rel1_4_12">Raptor 1.4.12 Changes</a></h2>
+
+<p>Restored the order of serialized syntaxes back to the same as in
+Raptor 1.4.10 which Redland was relying on - asking to serialize to
+mime type 'application/rdf+xml' without specifying a parser name in
+Redland with Raptor 1.4.11 wrote it in XMP instead of RDF/XML as
+it used to. This happened more often with language bindings.
+That problem will be fixed in a future release of Redland but for now,
+this stops wierd things like that happening.
+</p>
+
+
+<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>&lt;guid isPermaLink="true"&gt;val&lt;/guid&gt;</code>
+into RDF/XML form <code>&lt;guid rdf:resource="val"/&gt;</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 &lt;= character &lt;= 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>&lt;enclosure&gt;</code> element</p>
+
+<p><code>raptor_xml_escape_string</code> return value has changed to
+be an int, returning &lt;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
+<code>FILE*</code> handles and to strings especially for
+cross-language use. A <code>raptor_iostream_handler</code> can
+be used to construct a user-defined iostream.
+</p>
+
+<p>The new raptor_iostream class functions added are:
+<code>raptor_new_iostream_from_handler</code>,
+<code>raptor_new_iostream_to_sink</code>,
+<code>raptor_new_iostream_to_filename</code>,
+<code>raptor_new_iostream_to_file_handle</code>,
+<code>raptor_new_iostream_to_string</code>,
+<code>raptor_free_iostream</code>,
+<code>raptor_iostream_write_bytes</code>,
+<code>raptor_iostream_write_byte</code>,
+<code>raptor_iostream_write_end</code>,
+<code>raptor_iostream_write_string</code>,
+<code>raptor_iostream_write_counted_string</code>,
+<code>raptor_iostream_get_bytes_written_count</code>,
+<code>raptor_iostream_write_decimal</code> and
+<code>raptor_iostream_format_hexadecimal</code>.
+</p>
+
+
+<p>The <code>rapper</code> utility was modified to use serializer
+class so that the output formats supported are now N-Triples
+(<code>-o ntriples</code>) - the default, and RDF/XML (<code>-o
+rdfxml</code>).</p>
+
+
+<p>Raptor now exports more static namespace URI strings for
+general application use:
+<code>raptor_xml_namespace_uri</code>,
+<code>raptor_rdf_namespace_uri</code>,
+<code>raptor_rdf_schema_namespace_uri</code>,
+<code>raptor_xmlschema_datatypes_namespace_uri</code>,
+<code>raptor_owl_namespace_uri</code>,
+and the length
+<code>raptor_rdf_namespace_uri_len</code>.
+</p>
+
+<p>The raptor_stringbuffer class gained a new method
+<code>raptor_stringbuffer_copy_to_string</code>
+which allows efficient copy-out of a constructed string.
+</p>
+
+<p>The raptor_www class gained a new method
+<code>raptor_www_fetch_to_string</code> to allow retrieving of
+web content as a single string.
+</p>
+
+<p>RSS tag soup parser gained support for generating triples for
+enclosures, after a patch from Suzan Foster. Changes made include
+correcting the enclosures namespace and tidying some memory leaks.
+</p>
+
+
+<h2 id="rel1_3_3"><a name="rel1_3_3">Raptor 1.3.3 Changes</a></h2>
+
+<p>A release with major improvements along with several minor fixes.</p>
+
+<p>Raptor's License was changed from LGPL 2.1/MPL 1.1 to
+LGPL 2.1/Apache 2</p>
+
+<p>Thanks to Chris Pointon for several patches to make Raptor
+easier to build under Win32 which were applied, with some slight
+modifications.</p>
+
+<p>Increased WWW content retrieval buffer size from 256 bytes to 4K
+since this was causing problems for even moderate size documents.</p>
+
+<p>After testing raptor on a very large RDF/XML file with many
+<code>rdf:ID</code> values, the check for duplicate values was found
+to be inefficient in memory and slow. The implementation was
+improved to be more memory efficient and a new parser feature
+<code>check_rdf_id</code> was added to disable checking (default is
+enabled).</p>
+
+<p>Added a new Unicode NFC checker to replace the functionality
+formally available by calling the GNOME glib function
+g_utf8_normalize. This new checker is done via several tables and
+adds approximately 50K to the object size of the library when
+compiled on x86. This code and tables can be disabled with configure
+option <code>--disable-nfc-check</code> causing all checks to
+succeed.</p>
+
+<p>Fix the exporting of
+<code>raptor_xml_literal_datatype_uri_string</code> and
+<code>raptor_xml_literal_datatype_uri_string_len</code> as constants
+for use by applications. Previously raptor.h wasn't doing this
+correctly.</p>
+
+<p>Added <code>raptor_calloc_memory</code> for allocating zeroed
+memory inside raptor, for use by applications passing memory in/out
+of raptor.</p>
+
+<p>Added a new configure option <code>--enable-parsers</code> to
+allow the selection of the required RDF parsers from any of those
+supported (RDF/XML, Turtle, N-Triples, RSS tag soup).
+</p>
+
+<p>Reorganised the sources to split parsing support from RDF/XML
+to support compiling without this parser.</p>
+
+<p>Updated the RSS Tag Soup parser to start to handle the Atom 0.3
+currently being standardised by the
+<a href="http://www.ietf.org/html.charters/atompub-charter.html">IETF Atom Publishing Format and Protocol</a>
+working group.
+</p>
+
+<p>Altered the Turtle parser to work with large source documents that
+exceeded bison limits. Thanks to Geoff Chappell for providing a fix for
+this.</p>
+
+<p>Rewrote the URI parsing to create an internal structure and
+improved the relative URI resolving in preparation for future work
+such as potentially supporting URI canonicalisation such as proposed
+to be used by Atom.</p>
+
+
+<h2 id="rel1_3_2"><a name="rel1_3_2">Raptor 1.3.2 Changes</a></h2>
+
+<p>A release with some minor fixes.</p>
+
+<p>Added a new configure option
+<code>--with-expat-source=</code><em>DIR</em>
+to allow the use of external expat source trees in either the old or
+newer directory structure style. (Patch from Mark Smith).</p>
+
+<p>Added <code>raptor_alloc_memory</code> for handlers that need to
+allocate memory in the same heap as raptor uses for
+<code>raptor_free_memory</code>. This is mostly useful for allocating
+memory that is freed by raptor in error, ID and statement handlers
+on win32 which has separate heaps for different DLLs.</p>
+
+<p>A bug was fixed where errors which happened when fetching WWW
+content were always printed to stderr. They are now passed to the
+main error routines which allows applications to retrieve them.</p>
+
+<p>Accessor functions were added for parts of the public
+<code>raptor_locator</code> structure which makes it possible to get
+structured error information from language bindings via Redland
+(Patch from Edd Dumbill). The new functions are:</p>
+
+<ul>
+<li><code>int raptor_locator_line(raptor_locator *locator);</code></li>
+<li><code>int raptor_locator_column(raptor_locator *locator);</code></li>
+<li><code>int raptor_locator_byte(raptor_locator *locator);</code></li>
+<li><code>const char * raptor_locator_file(raptor_locator *locator);</code></li>
+<li><code>const char * raptor_locator_uri(raptor_locator *locator);</code></li>
+</ul>
+
+<p>The Unicode Normal Form C (NFC) checking via the GNOME glib
+library function <code>g_utf8_normalize</code> is broken, comparing
+the data it says is failed against other NFC checkers. It is also
+slower than need be since it is doing full normalizing rather than
+just checking for NFC, and adds a rather large dependency for just
+one function. A new portable checker will be added in a later
+release.</p>
+
+
+
+
+<h2 id="rel1_3_1"><a name="rel1_3_1">Raptor 1.3.1 Changes</a></h2>
+
+<p>A release primarily to fix some win32 and portability issues.</p>
+
+<p>raptor.h now includes stdarg.h</p>
+
+<p>Corrected the <code>raptor_print_statement</code> declaration in
+raptor.h for the argument statement to have one less 'const' which
+matches the actual code.</p>
+
+<p>Made several portability fixes for compiling natively on win32
+which doesn't quite do POSIX or C99.</p>
+
+<p>Changed the support for file: URIs and converting to and from
+filenames. It now %-escapes spaces and % characters on conversion
+to and from filenames with
+<code>raptor_uri_uri_string_to_filename</code>,
+<code>raptor_uri_uri_string_to_filename_fragment</code>
+and
+<code>raptor_uri_filename_to_uri_string</code>.
+For Win32, more tests were added and the
+format of URIs supported corrected to use the <code>file:///c:</code>
+form rather than <code>file://c|/</code></p>
+
+<p>URIs that resolve to directories now return an error when lstat is
+available to check.</p>
+
+
+
+<h3>Parser Changes</h3>
+
+<p>The
+<a href="http://www.dajobe.org/2004/01/turtle/">Turtle</a>
+parser was updated to only allow language with non-datatyped literals,
+allow a '_' immediately after a ':' in qnames and to make a bare ':'
+qname work correctly.
+</p>
+
+<p>The Turtle parser was fixed to re-initialise correctly when
+performing multiple parsings. The other parsers already did this
+correctly.</p>
+
+<p>Added a warning to the RDF/XML parser for unknown
+<code>rdf:parseType</code> values, when parsing in lax mode - which
+is the default. It now tells the user when the parsing is working as
+'Literal' mode by finding an unknown value. This is controlled by a
+new parser feature warn_other_parsetypes which is default set true
+in lax mode. Parser modes are controlled by the
+<code>raptor_set_parser_strict</code> method.</p>
+
+
+
+<h2 id="rel1_3_0"><a name="rel1_3_0">Raptor 1.3.0 Changes</a></h2>
+
+<p>A release primarily to provide support for
+the new <a href="http://librdf.org/rasqal/">Rasqal</a>
+RDF query library but with some new features and fixes.</p>
+
+
+<h3>Parser Changes</h3>
+
+<p>Added a new constructor
+ <code>raptor_new_parser_for_content</code> to guess the parser to use
+from hints in URIs or content, using a new utility function
+<code>raptor_guess_parser_name</code>.</p>
+
+<p>Additional checks were added to the RDF/XML parser for
+RDF-namespaced names in element and attributes and if they are
+forbidden giving an error otherwise if unknown, giving a warning.</p>
+
+<p>The
+<a href="http://www.dajobe.org/2004/01/turtle/">Turtle</a>
+parser was updated to correct the collections syntax, allow '-' in
+names and QNames and to add integer literals. This parser now correctly
+uses <code>raptor_generate_id</code> when a blank identifier name is
+needed.</p>
+
+<p>Completed parser feature support by adding <code>raptor_get_feature</code>,
+<code>raptor_feature_from_uri</code>, and
+<code>raptor_features_enumerate</code> to get values and enable
+discovery of supported features at run time.
+<code>raptor_set_feature</code> was changed to give return a success
+value</p>
+
+<p>Added a new method <code>raptor_get_mime_type</code> to get the
+MIME type of the syntax for a parser</p>
+
+<p><code>raptor_parse_uri_with_connection</code> (which is called by
+<code>raptor_parse_uri</code>) now sets the HTTP <code>Accept:</code>
+header to the MIME type of the parser in WWW requests using the new
+<code>raptor_www_set_http_accept()</code>.
+</p>
+
+
+<h3><code>rapper</code> changes</h3>
+
+<p>Added options <code>-f</code>/<code>--feature</code> for setting
+features and <code>-g</code>/<code>--guess</code> for guessing syntax
+from some content or identifiers. See <a href="rapper.html">rapper(1)</a>
+for all rapper options.</p>
+
+
+<h3>Utility function changes</h3>
+
+<p>Added <code>raptor_syntax_name_check</code> to check for valid
+syntax language names.<br />
+</p>
+
+<p>Added <code>raptor_free_memory</code> to free memory returned by
+raptor functions.</p>
+
+<p>Added Unicode utility functions <code>raptor_unicode_char_to_utf8</code> and
+<code>raptor_utf8_to_unicode_char</code>.</p>
+
+<p>Exported URI string <code>raptor_xml_literal_datatype_uri_string</code>.</p>
+
+<p>Deprecated <code>raptor_print_statement_detailed</code> always
+intended to be internal.</p>
+
+
+<h3>WWW Class changes</h3>
+
+<p>Added support to set the HTTP <code>Accept:</code> header for curl
+and libxml2 when retrieving HTTP content by the new
+<code>raptor_www_set_http_accept</code> method.
+</p>
+
+
+<h3>New classes - Sequence and Stringbuffer</h3>
+
+<p>Added a utility class <code>raptor_sequence</code> providing
+simple sequences that can handle stacks and queues</p>
+
+<p>Added a utility class <code>raptor_stringbuffer</code>
+for constructing strings from substrings appended or prepended.</p>
+
+
+
+<h2 id="rel_older"><a name="rel_older">Raptor 0.9.0 - Raptor 1.2.0 Changes</a></h2>
+
+<p>Release notes for 1.2.0 and earlier are in the
+<a href="NEWS.html">NEWS page</a> or
+<a href="ChangeLog">ChangeLog</a>
+</p>
+
+
+
+<hr />
+
+<p>Copyright (C) 2003-2012 <a href="http://www.dajobe.org/">Dave Beckett</a><br />Copyright (C) 2003-2005 <a href="http://www.bristol.ac.uk/">University of Bristol</a></p>
+
+</body>
+</html>
diff --git a/UPGRADING.html b/UPGRADING.html
new file mode 100644
index 0000000..38ba3dd
--- /dev/null
+++ b/UPGRADING.html
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!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">
+<head>
+ <title>Raptor RDF Syntax Library - Upgrading to the Raptor V2 API</title>
+</head>
+<body>
+
+ <h1>Raptor RDF Syntax Library - Upgrading to the Raptor V2 API</h1>
+
+<p>Raptor V2 is a major new version of the Raptor V1 API with many
+cleanups and changes that include adding, removing and re-ordering
+parameters, adding and removing return types as well as renaming the
+functions.
+</p>
+
+<p>The headers and libraries install to different places or names so
+that Raptor V1 and Raptor V2 can both be present (including headers)
+on the same system without clashing. However, if you do try linking
+the same binary with both libraries, the symbols will clash and the
+program will fail in mysterious ways if it runs at all. There are
+only two installed files that overlap - the <code>rapper</code>
+utility and it's manual page.
+</p>
+
+
+<h2>Configuration and compiling changes</h2>
+
+<p>Raptor V2 uses <code>pkg-config(1)</code> to provide the compile
+and link parameters whereas Raptor V1 supports that as well as a
+script <code>raptor-config</code>. The recommended linking approach
+is now as follows:
+</p>
+<pre>
+ cc -o prog prog.c `pkg-config raptor2 --cflags` `pkg-config raptor2 --libs`
+</pre>
+<p>Shown here as a compile in link all in one line but you typically
+split that into two stages.
+</p>
+<pre>
+ cc -c `pkg-config raptor2 --cflags` raptor-module.c
+ ...
+ cc -o prog raptor-module.c ... other modules ... `pkg-config raptor2 --libs`
+</pre>
+
+
+<h2>Code changes</h2>
+
+<p>There are significant API changes, which are described in the
+<a href="RELEASE.html">Release Notes</a> in long summary form with
+some background to why, in the <a href="ChangeLog">ChangeLog</a> in
+very long form. The reference manual contains
+<a href="http://librdf.org/raptor/api/raptor-changes.html">a section</a>
+describing what was added, deleted, renamed and otherwise changed for
+both the functions exported from the library, as well as the
+typedefs and enum values.
+</p>
+
+<p>There is no fully automatic way to handle updating the code
+however there is a perl script provided in the docs directory that
+renames what it can, and otherwise inserts a WARNING comment near
+code that needs manual updating. This cannot be automated in some
+places such as when the fields of the raptor_statement object were
+replaced with raptor_term pointers. The script is used like
+<code>perl docs/upgrade-script.pl</code> <em>source files</em> for example</p>
+<pre>
+ $ perl docs/upgrade-script.pl prog.c
+</pre>
+
+<p>and then edit the file prog.c and search for <code>WARNING:</code>
+for any places that manual editing is needed.
+</p>
+
+
+<h2>Handling Raptor V1 or Raptor V2 in the same code</h2>
+
+<p>If you need to handle both APIs in the same codebase as
+alternatives, it is recommended that you use the following approach.
+</p>
+
+<p>
+Create an application <code>#define</code> that records the choice of
+which API you want to use. You can do this triggered on whichever
+<code>raptor.h</code> is in the include path by <code>#ifdef
+RAPTOR_V2_AVAILABLE</code> but that may be dangerous if both
+libraries and headers are present. A better choice is an application
+specific define that is determined by a configuration step.
+</p>
+
+<p>Once the choice is made, it is recommended you convert the
+code to the Raptor V2 API and then add backwards-compatible macros
+for the changed functions:
+</p>
+
+<pre>
+#ifdef APP_WANTS_RAPTOR_V2
+/* nop */
+
+#else
+#define raptor_v2_function(arg1, arg2, arg3) raptor_v1_function(arg2, arg3)
+
+#endif
+</pre>
+
+<p>Where the code cannot be done by simple expansion such as use of
+<code>raptor_init()</code> and <code>raptor_finish()</code> in V1
+that are replaced by the functions around the world object in V2, use
+an <code>#ifdef</code> that provides the two code paths.
+</p>
+
+<p><a href="http://librdf.org/rasqal/">rasqal</a>
+in GIT (will be 0.9.20) uses this approach.
+</p>
+
+<p>Another approach if the Raptor V1 code is in a separate module /
+source file is to copy it and make a V2 version and then choose the
+file to use at configure or build time.
+</p>
+
+<p><a href="http://librdf.org/">librdf</a> 1.0.11 uses this approach.
+</p>
+
+<p>Either way, basing the interface on the V2 APIs makes it clear
+what to remove when V1 is no longer supported.
+</p>
+
+
+<h2>Packaging recommendations for distributors</h2>
+
+<p>Since Raptor V2 probably needs to be installed in parallel with V1
+for some time, at least for the different libraries and headers, both
+need to be packaged such that no files clash.
+</p>
+
+<p>There are, however, two files that are shared after a 'make install':
+<code>rapper(1)</code> and <code>rapper.1</code> the manual page.
+</p>
+
+<p>For packaging systems that split the installation into multiple
+packages (libraries, headers, docs, debug files), these two files
+should be in a package of their own that replace and conflict with
+the earlier files. (This is what I have done with the Debian
+packages raptor-utils and raptor2-utils). For packaging systems that
+do not use multiple packages, you will have to either leave these
+files out of the V2 package or migrate them from the V1 package to
+the V2 package using dependencies to ensure there are no conflicts.
+</p>
+
+<p>The advantage of making the V2 version of rapper is that it means
+the command-line utility under the well known name uses the latest
+Raptor code.
+</p>
+
+<hr />
+
+<p>Copyright 2010-2012 <a href="http://www.dajobe.org/">Dave Beckett</a></p>
+
+</body>
+</html>
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..55597bf
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,10010 @@
+# generated automatically by aclocal 1.11.5 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
+# Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+
+ dnl check for tools we added during development
+ AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check])
+ AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
+ AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
+
+ dnl for overriding the documentation installation directory
+ AC_ARG_WITH([html-dir],
+ AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+ [with_html_dir='${datadir}/gtk-doc/html'])
+ HTML_DIR="$with_html_dir"
+ AC_SUBST([HTML_DIR])
+
+ dnl enable/disable documentation building
+ AC_ARG_ENABLE([gtk-doc],
+ AS_HELP_STRING([--enable-gtk-doc],
+ [use gtk-doc to build documentation [[default=no]]]),,
+ [enable_gtk_doc=no])
+
+ if test x$enable_gtk_doc = xyes; then
+ ifelse([$1],[],
+ [PKG_CHECK_EXISTS([gtk-doc],,
+ AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
+ [PKG_CHECK_EXISTS([gtk-doc >= $1],,
+ AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))])
+ dnl don't check for glib if we build glib
+ if test "x$PACKAGE_NAME" != "xglib"; then
+ dnl don't fail if someone does not have glib
+ PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,)
+ fi
+ fi
+
+ AC_MSG_CHECKING([whether to build gtk-doc documentation])
+ AC_MSG_RESULT($enable_gtk_doc)
+
+ dnl enable/disable output formats
+ AC_ARG_ENABLE([gtk-doc-html],
+ AS_HELP_STRING([--enable-gtk-doc-html],
+ [build documentation in html format [[default=yes]]]),,
+ [enable_gtk_doc_html=yes])
+ AC_ARG_ENABLE([gtk-doc-pdf],
+ AS_HELP_STRING([--enable-gtk-doc-pdf],
+ [build documentation in pdf format [[default=no]]]),,
+ [enable_gtk_doc_pdf=no])
+
+ if test -z "$GTKDOC_MKPDF"; then
+ enable_gtk_doc_pdf=no
+ fi
+
+
+ AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
+ AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes])
+ AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes])
+ AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
+ AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"])
+])
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 57 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+ [m4_default([$3],
+ [m4_fatal([Libtool version $1 or higher is required],
+ 63)])],
+ [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+ *\ * | *\ *)
+ AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ _LT_PATH_MAGIC
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+ [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME. Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+ [m4_ifval([$1], [$1], [$2])])
+ lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+ m4_ifval([$4],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+ lt_dict_add_subkey([lt_decl_dict], [$2],
+ [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+ [0], [m4_fatal([$0: too few arguments: $#])],
+ [1], [m4_fatal([$0: too few arguments: $#: $1])],
+ [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+ [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+ [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+ m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_if([$2], [],
+ m4_quote(lt_decl_varnames),
+ m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+ lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'. VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly. In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+ [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+# # Some comment about what VAR is for.
+# visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+ [description])))[]dnl
+m4_pushdef([_libtool_name],
+ m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+ [0], [_libtool_name=[$]$1],
+ [1], [_libtool_name=$lt_[]$1],
+ [2], [_libtool_name=$lt_[]$1],
+ [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+ m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'. Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+ dnl If the libtool generation code has been placed in $CONFIG_LT,
+ dnl instead of duplicating it all over again into config.status,
+ dnl then we will have config.status run $CONFIG_LT later, so it
+ dnl needs to know what name is stored there:
+ [AC_CONFIG_COMMANDS([libtool],
+ [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+ dnl If the libtool generation code is destined for config.status,
+ dnl expand the accumulated commands and init code now:
+ [AC_CONFIG_COMMANDS([libtool],
+ [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable. If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins. After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script. The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test $lt_write_fail = 0 && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+ echo
+ AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+ case $[1] in
+ --version | --v* | -V )
+ echo "$lt_cl_version"; exit 0 ;;
+ --help | --h* | -h )
+ echo "$lt_cl_help"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --quiet | --q* | --silent | --s* | -q )
+ lt_cl_silent=: ;;
+
+ -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+ *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+ esac
+ shift
+done
+
+if $lt_cl_silent; then
+ exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure. Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+ lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars. Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+ m4_if(_LT_TAG, [C], [
+ # See if we are running on zsh, and set the options which allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+ _LT_PROG_LTMAIN
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ _LT_PROG_REPLACE_SHELLFNS
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+# autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+ [C], [_LT_LANG(C)],
+ [C++], [_LT_LANG(CXX)],
+ [Go], [_LT_LANG(GO)],
+ [Java], [_LT_LANG(GCJ)],
+ [Fortran 77], [_LT_LANG(F77)],
+ [Fortran], [_LT_LANG(FC)],
+ [Windows Resource], [_LT_LANG(RC)],
+ [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+ [_LT_LANG($1)],
+ [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+ [LT_SUPPORTED_TAG([$1])dnl
+ m4_append([_LT_TAGS], [$1 ])dnl
+ m4_define([_LT_LANG_]$1[_enabled], [])dnl
+ _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+m4_ifndef([AC_PROG_GO], [
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_GO. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC], [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+ fi
+fi
+if test -z "$GOC"; then
+ AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [LT_LANG(CXX)],
+ [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [LT_LANG(F77)],
+ [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+ [LT_LANG(FC)],
+ [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [m4_ifdef([AC_PROG_GCJ],
+ [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([A][M_PROG_GCJ],
+ [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([LT_PROG_GCJ],
+ [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+ [LT_LANG(GO)],
+ [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+ [LT_LANG(RC)],
+ [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+ case $host_os in
+ rhapsody* | darwin*)
+ AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+ AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+ AC_CHECK_TOOL([LIPO], [lipo], [:])
+ AC_CHECK_TOOL([OTOOL], [otool], [:])
+ AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+ _LT_DECL([], [DSYMUTIL], [1],
+ [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+ _LT_DECL([], [NMEDIT], [1],
+ [Tool to change global to local symbols on Mac OS X])
+ _LT_DECL([], [LIPO], [1],
+ [Tool to manipulate fat objects and archives on Mac OS X])
+ _LT_DECL([], [OTOOL], [1],
+ [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+ _LT_DECL([], [OTOOL64], [1],
+ [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+ [lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ # Otherwise, if the output was created with a 0 exit code from
+ # the compiler, it worked.
+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi])
+
+ AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+ [lt_cv_ld_exported_symbols_list],
+ [lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [lt_cv_ld_exported_symbols_list=yes],
+ [lt_cv_ld_exported_symbols_list=no])
+ LDFLAGS="$save_LDFLAGS"
+ ])
+
+ AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+ [lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+ echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+ $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+ echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -s conftest.err && $GREP force_load conftest.err; then
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+ ])
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[[012]]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+ m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ if test "$lt_cv_ld_force_load" = "yes"; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+ [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes])
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=func_echo_all
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ m4_if([$1], [CXX],
+[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+ fi
+],[])
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+ lt_aix_libpath_sed='[
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }]'
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi],[])
+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+ fi
+ ])
+ aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
+else
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO "$*"
+}
+
+case "$ECHO" in
+ printf*) AC_MSG_RESULT([printf]) ;;
+ print*) AC_MSG_RESULT([print -r]) ;;
+ *) AC_MSG_RESULT([cat]) ;;
+esac
+
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test "X`printf %s $ECHO`" = "X$ECHO" \
+ || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
+
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[ --with-sysroot[=DIR] Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted. We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+ AC_MSG_RESULT([${with_sysroot}])
+ AC_MSG_ERROR([The sysroot must be an absolute path.])
+ ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AS_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*)
+ case $host in
+ i?86-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+ LD="${LD-ld}_sol2"
+ fi
+ ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+ [lt_cv_ar_at_file=no
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+ [echo conftest.$ac_objext > conftest.lst
+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+ AC_TRY_EVAL([lt_ar_try])
+ if test "$ac_status" -eq 0; then
+ # Ensure the archiver fails upon bogus file names.
+ rm -f conftest.$ac_objext libconftest.a
+ AC_TRY_EVAL([lt_ar_try])
+ if test "$ac_status" -ne 0; then
+ lt_cv_ar_at_file=@
+ fi
+ fi
+ rm -f conftest.* libconftest.a
+ ])
+ ])
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+ [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[_LT_PROG_AR
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+ [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+ [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+ [Whether to use a lock for old archive extraction])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$5], , :, [$5])
+else
+ m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$4], , :, [$4])
+else
+ m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+ [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+[#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}]
+_LT_EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_dlunknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+ [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+ [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+ [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w . 2>&AS_MESSAGE_LOG_FD
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+ [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test "$hard_links" = no; then
+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+ [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+ [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+ test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+ test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+ test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+ [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+ [], [
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ case $host_os in
+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
+ *) lt_sed_strip_eq="s,=/,/,g" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+ case $lt_search_path_spec in
+ *\;*)
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+ ;;
+ *)
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ esac
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+ if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+ # AWK program above erroneously prepends '/' to C:/dos/paths
+ # for these hosts.
+ case $host_os in
+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+ esac
+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[[4-9]]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$cc_basename in
+ yes,*)
+ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ ;;
+
+ *,cl*)
+ # Native MSVC
+ libname_spec='$name'
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='${libname}.dll.lib'
+
+ case $build_os in
+ mingw*)
+ sys_lib_search_path_spec=
+ lt_save_ifs=$IFS
+ IFS=';'
+ for lt_path in $LIB
+ do
+ IFS=$lt_save_ifs
+ # Let DOS variable expansion print the short 8.3 style file name.
+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+ done
+ IFS=$lt_save_ifs
+ # Convert to MSYS style.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+ ;;
+ cygwin*)
+ # Convert to unix form, then to dos form, then back to unix form
+ # but this time dos style (no spaces!) so that the unix form looks
+ # like /cygdrive/c/PROGRA~1:/cygdr...
+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ *)
+ sys_lib_search_path_spec="$LIB"
+ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # FIXME: find the short name or the path components, as spaces are
+ # common. (e.g. "Program Files" -> "PROGRA~1")
+ ;;
+ esac
+
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
+ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[[23]].*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2.*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+haiku*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+ postinstall_cmds='chmod 555 $lib'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[[3-9]]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+ [lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+ [lt_cv_shlibpath_overrides_runpath=yes])])
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+ ])
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsdelf*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='NetBSD ld.elf_so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+ [Variables whose values should be saved in libtool wrapper scripts and
+ restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+ [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+ [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+ [[List of archive names. First name is the real one, the rest are links.
+ The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+ [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+ [Permission mode override for installation of shared libraries])
+_LT_DECL([], [postinstall_cmds], [2],
+ [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+ [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+ [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+ [[As "finish_cmds", except a single script fragment to be evaled but
+ not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+ [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+ [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+ [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="m4_if([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+ [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+ [AS_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ if test "$GCC" != yes; then
+ reload_cmds=false
+ fi
+ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ # Keep this pattern in sync with the one in func_win32_libid.
+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc*)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+haiku*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[[3-9]]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+ case $host_os in
+ mingw* | pw32*)
+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+ want_nocaseglob=yes
+ else
+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+ fi
+ ;;
+ esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+ [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+ [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+ [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+ [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+ AC_SUBST([DUMPBIN])
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+ [lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+ cat conftest.out >&AS_MESSAGE_LOG_FD
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+ # two different shell functions defined in ltmain.sh
+ # decide which to use based on capabilities of $DLLTOOL
+ case `$DLLTOOL --help 2>&1` in
+ *--identify-strict*)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+ ;;
+ *)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+ ;;
+ esac
+ ;;
+*)
+ # fallback: assume linklib IS sharedlib
+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+ [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+ [lt_cv_path_mainfest_tool=no
+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+ lt_cv_path_mainfest_tool=yes
+ fi
+ rm -f conftest*])
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+ MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ case $cc_basename in
+ nvcc*)
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+ esac
+
+ _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+ [Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris*)
+ symcode='[[BDRT]]'
+ ;;
+sco3.2v5*)
+ symcode='[[DT]]'
+ ;;
+sysv4.2uw2*)
+ symcode='[[DT]]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[[ABDT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK ['"\
+" {last_section=section; section=\$ 3};"\
+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx]"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT@&t@_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data. */
+# define LT@&t@_DLSYM_CONST
+#else
+# define LT@&t@_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+LT@&t@_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_globsym_save_LIBS=$LIBS
+ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS=$lt_globsym_save_LIBS
+ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+ nm_file_list_spec='@'
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+ [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+ [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+ [lt_cv_sys_global_symbol_to_c_name_address], [1],
+ [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+ [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+ [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([], [nm_file_list_spec], [1],
+ [Specify filename containing input files for $NM])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+m4_if([$1], [CXX], [
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)=
+ ;;
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix[[4-9]]*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ ecpc* )
+ # old Intel C++ for x86_64 which still supported -KPIC.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ icpc* )
+ # Intel C++, used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+ # IBM XL 8.0, 9.0 on PPC and BlueGene
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd* | netbsdelf*-gnu)
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)=
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+
+ case $cc_basename in
+ nvcc*) # Cuda Compiler Driver 2.2
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+ if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+ fi
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+ ;;
+ nagfor*)
+ # NAG Fortran compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+ ;;
+ *Sun\ F* | *Sun*Fortran*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ *Sun\ C*)
+ # Sun C 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ *Intel*\ [[CF]]*Compiler*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ *Portland\ Group*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ rdos*)
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ unicos*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+ [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+ [Additional compiler flags for building library objects])
+
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+ [How to pass a linker flag through the compiler])
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+ [Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ case $host_os in
+ aix[[4-9]]*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ # Also, AIX nm treats weak defined symbols like other global defined
+ # symbols, whereas GNU nm marks them as "W".
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw* | cegcc*)
+ case $cc_basename in
+ cl*)
+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu | gnu*)
+ _LT_TAGVAR(link_all_deplibs, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+], [
+ runpath_var=
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(archive_cmds, $1)=
+ _LT_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_TAGVAR(compiler_needs_object, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(hardcode_automatic, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_TAGVAR(inherit_rpath, $1)=no
+ _LT_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_TAGVAR(module_cmds, $1)=
+ _LT_TAGVAR(module_expsym_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ linux* | k*bsd*-gnu | gnu*)
+ _LT_TAGVAR(link_all_deplibs, $1)=no
+ ;;
+ esac
+
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+
+ # On some targets, GNU ld is compatible enough with the native linker
+ # that we're better off using the native interface for both.
+ lt_use_gnu_ld_interface=no
+ if test "$with_gnu_ld" = yes; then
+ case $host_os in
+ aix*)
+ # The AIX port of GNU ld has always aspired to compatibility
+ # with the native linker. However, as the warning in the GNU ld
+ # block says, versions before 2.19.5* couldn't really create working
+ # shared libraries, regardless of the interface used.
+ case `$LD -v 2>&1` in
+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+ *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+ *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ fi
+
+ if test "$lt_use_gnu_ld_interface" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[[3-9]]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ haiku*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group f77 and f90 compilers
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ tmp_sharedflag='--shared' ;;
+ xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ nvcc*) # Cuda Compiler Driver 2.2
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf* | bgf* | bgxlf* | mpixlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ # Also, AIX nm treats weak defined symbols like other global
+ # defined symbols, whereas GNU nm marks them as "W".
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=no
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[[45]]*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ case $cc_basename in
+ cl*)
+ # Native MSVC
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+ else
+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+ # Don't use ranlib
+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile="$lt_outputfile.exe"
+ lt_tool_outputfile="$lt_tool_outputfile.exe"
+ ;;
+ esac~
+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # Assume MSVC wrapper
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+ esac
+ ;;
+
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2.*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ m4_if($1, [], [
+ # Older versions of the 11.00 compiler do not understand -b yet
+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+ _LT_LINKER_OPTION([if $CC understands -b],
+ _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+ [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ # This should be the same for all languages, so no per-tag cache variable.
+ AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+ [lt_cv_irix_exported_symbol],
+ [save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ AC_LINK_IFELSE(
+ [AC_LANG_SOURCE(
+ [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+ [C++], [[int foo (void) { return 0; }]],
+ [Fortran 77], [[
+ subroutine foo
+ end]],
+ [Fortran], [[
+ subroutine foo
+ end]])])],
+ [lt_cv_irix_exported_symbol=yes],
+ [lt_cv_irix_exported_symbol=no])
+ LDFLAGS="$save_LDFLAGS"])
+ if test "$lt_cv_irix_exported_symbol" = yes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ fi
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ os2*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+ [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_CACHE_CHECK([whether -lc should be explicitly linked in],
+ [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+ [$RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+ pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+ then
+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ ])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+ [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+ [enable_shared_with_static_runtimes], [0],
+ [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+ [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+ [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+ [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+ [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+ [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+ [Commands used to build a loadable module if different from building
+ a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+ [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+ [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+ [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+ [Flag to hardcode $libdir into a binary during linking.
+ This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+ [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary and the resulting library dependency is
+ "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+ library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+ [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+ [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+ [Set to "yes" if building a shared library automatically hardcodes DIR
+ into the library and all subsequent libraries and executables linked
+ against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+ [Set to yes if linker adds runtime paths of dependent libraries
+ to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+ [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [always_export_symbols], [0],
+ [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+ [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+ [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+ [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+ [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+ [Commands necessary for finishing linking programs])
+_LT_TAGDECL([], [file_list_spec], [1],
+ [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+ LT_SYS_DLOPEN_SELF
+ _LT_CMD_STRIPLIB
+
+ # Report which library types will actually be built
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_PROG_CXXCPP
+else
+ _lt_caught_CXX_error=yes
+fi
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="int some_variable = 0;"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_CFLAGS=$CFLAGS
+ lt_save_LD=$LD
+ lt_save_GCC=$GCC
+ GCC=$GXX
+ lt_save_with_gnu_ld=$with_gnu_ld
+ lt_save_path_LD=$lt_cv_path_LD
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+ $as_unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+ $as_unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ CFLAGS=$CXXFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ # We don't want -fno-exception when compiling C++ code, so set the
+ # no_builtin_flag separately
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+ else
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+ fi
+
+ if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ LT_PATH_LD
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+ $GREP 'no-whole-archive' > /dev/null; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+ else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+ fi
+
+ # PORTME: fill in a description of your system's C++ link characteristics
+ AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to
+ # export.
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty
+ # executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared
+ # libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ case $GXX,$cc_basename in
+ ,cl* | no,cl*)
+ # Native MSVC
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+ else
+ $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ # Don't use ranlib
+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile="$lt_outputfile.exe"
+ lt_tool_outputfile="$lt_tool_outputfile.exe"
+ ;;
+ esac~
+ func_to_tool_file "$lt_outputfile"~
+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # g++
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ freebsd2.*)
+ # C++ shared libraries reported to be fairly broken before
+ # switch to ELF
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ freebsd-elf*)
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+
+ freebsd* | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ gnu*)
+ ;;
+
+ haiku*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ hpux9*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+ fi
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc* | ecpc* )
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ case `$CC -V` in
+ *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
+ _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+ _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+ $RANLIB $oldlib'
+ _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ *) # Version 6 and above use weak symbols
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+ ;;
+ xl* | mpixl* | bgxl*)
+ # IBM XL 8.0 on PPC, with GNU ld
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+ # Not sure whether something based on
+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+ # would be better.
+ output_verbose_link_cmd='func_echo_all'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+
+ *nto* | *qnx*)
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd=func_echo_all
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ case $host in
+ osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+ *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+ esac
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ case $host in
+ osf3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+ $RM $lib.exp'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ case $host in
+ osf3*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='func_echo_all'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ fi
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+ '"$_LT_TAGVAR(old_archive_cmds, $1)"
+ _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+ '"$_LT_TAGVAR(reload_cmds, $1)"
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+ test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+ _LT_TAGVAR(GCC, $1)="$GXX"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+ with_gnu_ld=$lt_save_with_gnu_ld
+ lt_cv_path_LDCXX=$lt_cv_path_LD
+ lt_cv_path_LD=$lt_save_path_LD
+ lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+_LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
+])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ for p in `eval "$output_verbose_link_cmd"`; do
+ case ${prev}${p} in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" ||
+ test $p = "-R"; then
+ prev=$p
+ continue
+ fi
+
+ # Expand the sysroot to ease extracting the directories later.
+ if test -z "$prev"; then
+ case $p in
+ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+ esac
+ fi
+ case $p in
+ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+ esac
+ if test "$pre_test_object_deps_done" = no; then
+ case ${prev} in
+ -L | -R)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+ _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ prev=
+ ;;
+
+ *.lto.$objext) ;; # Ignore GCC LTO objects
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+ _LT_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+ _LT_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ _LT_TAGVAR(predep_objects,$1)=
+ _LT_TAGVAR(postdep_objects,$1)=
+ _LT_TAGVAR(postdeps,$1)=
+ ;;
+
+linux*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+ [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+ [Dependencies to place before and after the objects being linked to
+ create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+ [The library search path used internally by the compiler when linking
+ a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test "X$F77" = "Xno"; then
+ _lt_disable_F77=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ lt_save_CFLAGS=$CFLAGS
+ CC=${F77-"f77"}
+ CFLAGS=$FFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+ GCC=$G77
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)="$G77"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
+ CFLAGS="$lt_save_CFLAGS"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test "X$FC" = "Xno"; then
+ _lt_disable_FC=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ lt_save_CFLAGS=$CFLAGS
+ CC=${FC-"f95"}
+ CFLAGS=$FCFLAGS
+ compiler=$CC
+ GCC=$ac_cv_fc_compiler_gnu
+
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+CFLAGS=
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+ :
+ _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+ [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+ [AC_CHECK_TOOL(GCJ, gcj,)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+ [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
+# ------------------------------------------------------
+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
+m4_defun([_LT_PROG_FUNCTION_REPLACE],
+[dnl {
+sed -e '/^$1 ()$/,/^} # $1 /c\
+$1 ()\
+{\
+m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1])
+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+])
+
+
+# _LT_PROG_REPLACE_SHELLFNS
+# -------------------------
+# Replace existing portable implementations of several shell functions with
+# equivalent extended shell implementations where those features are available..
+m4_defun([_LT_PROG_REPLACE_SHELLFNS],
+[if test x"$xsi_shell" = xyes; then
+ _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac])
+
+ _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
+ func_basename_result="${1##*/}"])
+
+ _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+ func_basename_result="${1##*/}"])
+
+ _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary parameter first.
+ func_stripname_result=${3}
+ func_stripname_result=${func_stripname_result#"${1}"}
+ func_stripname_result=${func_stripname_result%"${2}"}])
+
+ _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
+ func_split_long_opt_name=${1%%=*}
+ func_split_long_opt_arg=${1#*=}])
+
+ _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
+ func_split_short_opt_arg=${1#??}
+ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
+
+ _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
+ case ${1} in
+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+ *) func_lo2o_result=${1} ;;
+ esac])
+
+ _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo])
+
+ _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))])
+
+ _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}])
+fi
+
+if test x"$lt_shell_append" = xyes; then
+ _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"])
+
+ _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
+ func_quote_for_eval "${2}"
+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
+ eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
+
+ # Save a `func_append' function call where possible by direct use of '+='
+ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+else
+ # Save a `func_append' function call even when '+=' is not available
+ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+ AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
+fi
+])
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine which file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path). These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+ ;;
+ esac
+ ;;
+ *-*-cygwin* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+ ;;
+ esac
+ ;;
+ * ) # unhandled hosts (and "normal" native builds)
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+ [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ esac
+ ;;
+esac
+])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+ [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
+
+# Helper functions for option handling. -*- Autoconf -*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 7 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it. Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+ _LT_MANGLE_DEFUN([$1], [$2]),
+ [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+ [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME. If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+ dnl
+ dnl Simply set some default values (i.e off) if boolean options were not
+ dnl specified:
+ _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+ ])
+ _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+ ])
+ dnl
+ dnl If no reference was made to various pairs of opposing options, then
+ dnl we run the default mode handler for the pair. For example, if neither
+ dnl `shared' nor `disable-shared' was passed, we enable building of shared
+ dnl archives by default:
+ _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+ _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+ [_LT_ENABLE_FAST_INSTALL])
+ ])
+])# _LT_SET_OPTIONS
+
+
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS], [1], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+ [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+ _LT_DECL([build_libtool_libs], [enable_shared], [0],
+ [Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+ [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+ _LT_DECL([build_old_libs], [enable_static], [0],
+ [Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+ [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+ [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+ [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for lt_pkg in $withval; do
+ IFS="$lt_save_ifs"
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+ [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+ [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+ [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+ [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+ [m4_define([_LTDL_TYPE], [convenience])])
+
+# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+ [$#], [2], [[$2]],
+ [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+ [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+ [$#], 1, [],
+ [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+ m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+ [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+ [m4_foreach([_Lt_suffix],
+ ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+ [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+ [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+ [lt_append([$1], [$2], [$3])$4],
+ [$5])],
+ [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+ m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+ m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+ [$5],
+ [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+ [lt_join(m4_quote(m4_default([$4], [[, ]])),
+ lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+ [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
+
+# ltversion.m4 -- version numbers -*- Autoconf -*-
+#
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# @configure_input@
+
+# serial 3337 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.4.2'
+macro_revision='1.3337'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
+
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 5 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else. This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
+
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+# serial 1 (pkg-config-0.24)
+#
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists. Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+# only at the first occurence in configure.ac, so if the first place
+# it's called might be skipped (such as if it is within an "if", you
+# have to call PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_default([$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes ],
+ [pkg_failed=yes])
+ else
+ pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ AC_MSG_RESULT([no])
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+ ])
+elif test $pkg_failed = untried; then
+ AC_MSG_RESULT([no])
+ m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+ ])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ $3
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11.5], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.5])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_AR([ACT-IF-FAIL])
+# -------------------------
+# Try to determine the archiver interface, and trigger the ar-lib wrapper
+# if it is needed. If the detection of archiver interface fails, run
+# ACT-IF-FAIL (default is to abort configure with a proper error message).
+AC_DEFUN([AM_PROG_AR],
+[AC_BEFORE([$0], [LT_INIT])dnl
+AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([ar-lib])dnl
+AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
+: ${AR=ar}
+
+AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
+ [am_cv_ar_interface=ar
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
+ [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+ AC_TRY_EVAL([am_ar_try])
+ if test "$ac_status" -eq 0; then
+ am_cv_ar_interface=ar
+ else
+ am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+ AC_TRY_EVAL([am_ar_try])
+ if test "$ac_status" -eq 0; then
+ am_cv_ar_interface=lib
+ else
+ am_cv_ar_interface=unknown
+ fi
+ fi
+ rm -f conftest.lib libconftest.a
+ ])
+ ])
+
+case $am_cv_ar_interface in
+ar)
+ ;;
+lib)
+ # Microsoft lib, so override with the ar-lib wrapper script.
+ # FIXME: It is wrong to rewrite AR.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__AR in this case,
+ # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
+ # similar.
+ AR="$am_aux_dir/ar-lib $AR"
+ ;;
+unknown)
+ m4_default([$1],
+ [AC_MSG_ERROR([could not determine $AR interface])])
+ ;;
+esac
+AC_SUBST([AR])dnl
+])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
+# 2010, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 12
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
+# Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
+# 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well. Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+ [enable], [m4_define([am_maintainer_other], [disable])],
+ [disable], [m4_define([am_maintainer_other], [enable])],
+ [m4_define([am_maintainer_other], [enable])
+ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+ AC_ARG_ENABLE([maintainer-mode],
+[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+ [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
+# Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2009, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# (`yes' being less verbose, `no' or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules],
+[ --enable-silent-rules less verbose build output (undo: `make V=1')
+ --disable-silent-rules verbose build output (undo: `make V=0')])
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no) AM_DEFAULT_VERBOSITY=1;;
+*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few `make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+ [am_cv_make_support_nested_variables],
+ [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using `$V' instead of `$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..6728452
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,392 @@
+#!/bin/sh
+#
+# autogen.sh - Generates initial makefiles from a pristine CVS tree
+#
+# USAGE:
+# autogen.sh [configure options]
+#
+# Configuration is affected by environment variables as follows:
+#
+# DRYRUN
+# If set to any value it will do no configuring but will emit the
+# programs that would be run.
+# e.g. DRYRUN=1 ./autogen.sh
+#
+# NOCONFIGURE
+# If set to any value it will generate all files but not invoke the
+# generated configure script.
+# e.g. NOCONFIGURE=1 ./autogen.sh
+#
+# AUTOMAKE ACLOCAL AUTOCONF AUTOHEADER LIBTOOLIZE GTKDOCIZE
+# If set (named after program) then this overrides any searching for
+# the programs on the current PATH.
+# e.g. AUTOMAKE=automake-1.7 ACLOCAL=aclocal-1.7 ./autogen.sh
+#
+# CONFIG_DIR (default ../config)
+# The directory where fresh GNU config.guess and config.sub can be
+# found for automatic copying in-place.
+#
+# PATH
+# Where the programs are searched for
+#
+# SRCDIR (default .)
+# Source directory
+#
+# This script is based on similar scripts used in various tools
+# commonly made available via CVS and used with GNU automake.
+# Try 'locate autogen.sh' on your system and see what you get.
+#
+# This script is in the public domain
+#
+
+# Directory for the sources
+SRCDIR=${SRCDIR-.}
+
+# Where the GNU config.sub, config.guess might be found
+CONFIG_DIR=${CONFIG_DIR-../config}
+
+# GIT sub modules file
+GITMODULES='.gitmodules'
+
+# The programs required for configuring which will be searched for
+# in the current PATH.
+# Set an envariable of the same name in uppercase, to override scan
+#
+programs="automake aclocal autoconf autoheader libtoolize"
+confs=`find . -name configure.ac -print | grep -v /releases/`
+
+gtkdoc_args=
+if grep "^GTK_DOC_CHECK" $confs >/dev/null; then
+ programs="$programs gtkdocize"
+ gtkdoc_args="--enable-gtk-doc"
+fi
+if grep "^AC_CHECK_PROGS.SWIG" $confs >/dev/null; then
+ programs="$programs swig"
+fi
+ltdl_args=
+if grep "^AC_LIBLTDL_" $confs >/dev/null; then
+ ltdl_args="--ltdl"
+fi
+silent_args=
+if grep "^AM_SILENT_RULES" $confs >/dev/null; then
+ silent_args="--enable-silent-rules"
+fi
+
+# Some dependencies for autotools:
+# automake 1.11 requires autoconf 2.62 (needed for AM_SILENT_RULES)
+automake_min_vers=011102
+aclocal_min_vers=$automake_min_vers
+autoconf_min_vers=026200
+autoheader_min_vers=$autoconf_min_vers
+libtoolize_min_vers=020200
+gtkdocize_min_vers=010300
+swig_min_vers=010324
+
+# Default program arguments
+automake_args="--gnu --add-missing --force --copy -Wall"
+aclocal_args=
+autoconf_args=
+libtoolize_args="--force --copy --automake $ltdl_args"
+gtkdocize_args="--copy"
+# --enable-gtk-doc does no harm if it's not available
+configure_args="--enable-maintainer-mode $gtkdoc_args $silent_args"
+
+
+# You should not need to edit below here
+######################################################################
+
+
+# number comparisons may need a C locale
+LANG=C
+LC_NUMERIC=C
+
+
+program=`basename $0`
+
+if test "X$DRYRUN" != X; then
+ DRYRUN=echo
+fi
+
+cat > autogen-get-version.pl <<EOF
+use File::Basename;
+my \$prog=basename \$0;
+die "\$prog: USAGE PATH PROGRAM-NAME\n e.g. \$prog /usr/bin/foo-123 foo\n"
+ unless @ARGV==2;
+
+my(\$path,\$name)=@ARGV;
+exit 0 if !-f \$path;
+die "\$prog: \$path not found\n" if !-r \$path;
+
+my \$mname=\$name; \$mname =~ s/^g(libtoolize)\$/\$1/;
+
+my(@vnums);
+for my \$varg (qw(--version -version)) {
+ my \$cmd="\$path \$varg";
+ open(PIPE, "\$cmd 2>&1 |") || next;
+ while(<PIPE>) {
+ chomp;
+ next if @vnums; # drain pipe if we got a vnums
+ next unless /^\$mname/i;
+ my(\$v)=/(\S+)\$/i; \$v =~ s/-.*\$//;
+ @vnums=grep { defined \$_ && !/^\s*\$/} map { s/\D//g; \$_; } split(/\./, \$v);
+ }
+ close(PIPE);
+ last if @vnums;
+}
+
+@vnums=(@vnums, 0, 0, 0)[0..2];
+\$vn=join('', map { sprintf('%02d', \$_) } @vnums);
+print "\$vn\n";
+exit 0;
+EOF
+
+autogen_get_version="`pwd`/autogen-get-version.pl"
+
+trap "rm -f $autogen_get_version" 0 1 9 15
+
+
+update_prog_version() {
+ dir=$1
+ prog=$2
+
+ # If there exists an envariable PROG in uppercase, use that and do not scan
+ ucprog=`echo $prog | tr 'a-z' 'A-Z' `
+ eval env=\$${ucprog}
+ if test X$env != X; then
+ prog_name=$env
+ prog_vers=`perl $autogen_get_version $prog_name $prog`
+
+ if test X$prog_vers = X; then
+ prog_vers=0
+ fi
+ eval ${prog}_name=${prog_name}
+ eval ${prog}_vers=${prog_vers}
+ eval ${prog}_dir=environment
+ return
+ fi
+
+ eval prog_name=\$${prog}_name
+ eval prog_vers=\$${prog}_vers
+ eval prog_dir=\$${prog}_dir
+ if test X$prog_vers = X; then
+ prog_vers=0
+ fi
+
+ save_PATH="$PATH"
+
+ cd "$dir"
+ PATH=".:$PATH"
+
+ nameglob="$prog*"
+ if [ -x /usr/bin/uname ]; then
+ if [ `/usr/bin/uname` = 'Darwin' -a $prog = 'libtoolize' ] ; then
+ nameglob="g$nameglob"
+ fi
+ fi
+ names=`ls $nameglob 2>/dev/null`
+ if [ "X$names" != "X" ]; then
+ for name in $names; do
+ vers=`perl $autogen_get_version $dir/$name $prog`
+ if [ "X$vers" = "X" ]; then
+ continue
+ fi
+
+ if expr $vers '>' $prog_vers >/dev/null; then
+ prog_name=$name
+ prog_vers=$vers
+ prog_dir="$dir"
+ fi
+ done
+ fi
+
+ eval ${prog}_name=${prog_name}
+ eval ${prog}_vers=${prog_vers}
+ eval ${prog}_dir=${prog_dir}
+
+ PATH="$save_PATH"
+}
+
+
+check_prog_version() {
+ prog=$1
+
+ eval min=\$${prog}_min_vers
+
+ eval prog_name=\$${prog}_name
+ eval prog_vers=\$${prog}_vers
+ eval prog_dir=\$${prog}_dir
+
+ echo "$program: $prog program '$prog_name' V $prog_vers (min $min) in $prog_dir" 1>&2
+
+ rc=1
+ if test $prog_vers != 0; then
+ if expr $prog_vers '<' $min >/dev/null; then
+ echo "$program: ERROR: \`$prog' version $prog_vers in $prog_dir is too old."
+ echo " (version $min or newer is required)"
+ rc=0
+ else
+ # Things are ok, so set the ${prog} name
+ eval ${prog}=${prog_name}
+ fi
+ else
+ echo "$program: ERROR: You must have \`$prog' installed to compile this package."
+ echo " (version $min or newer is required)"
+ rc=0
+ fi
+
+ return $rc
+}
+
+
+# Find newest version of programs in the current PATH
+save_args=${1+"$*"}
+save_ifs="$IFS"
+IFS=":"
+set - $PATH
+IFS="$save_ifs"
+
+echo "$program: Looking for programs: $programs"
+
+here=`pwd`
+while [ $# -ne 0 ] ; do
+ dir=$1
+ shift
+ if [ ! -d "$dir" ]; then
+ continue
+ fi
+
+ for prog in $programs; do
+ update_prog_version "$dir" $prog
+ done
+done
+cd $here
+
+set - $save_args
+# END Find programs
+
+
+# Check the versions meet the requirements
+for prog in $programs; do
+ if check_prog_version $prog; then
+ exit 1
+ fi
+done
+
+echo "$program: Dependencies satisfied"
+
+if test -d $SRCDIR/libltdl; then
+ touch $SRCDIR/libltdl/NO-AUTO-GEN
+fi
+
+config_dir=
+if test -d $CONFIG_DIR; then
+ config_dir=`cd $CONFIG_DIR; pwd`
+fi
+
+
+# Initialise and/or update GIT submodules
+if test -f $GITMODULES ; then
+ echo " "
+ modules=`sed -n -e 's/^.*path = \(.*\)/\1/p' $GITMODULES`
+ for module in $modules; do
+ if test `ls -1 $module | wc -l` -eq 0; then
+ echo "$program: Initializing git submodule in $module"
+ $DRYRUN git submodule init $module
+ fi
+ done
+ echo "$program: Updating git submodules: $modules"
+ $DRYRUN git submodule update
+fi
+
+
+for coin in `find $SRCDIR -name configure.ac -print | grep -v /releases/`
+do
+ dir=`dirname $coin`
+ if test -f "$dir/NO-AUTO-GEN"; then
+ echo $program: Skipping $dir -- flagged as no auto-gen
+ else
+ echo " "
+ echo $program: Processing directory $dir
+ ( cd "$dir"
+
+ # Ensure that these are created by the versions on this system
+ # (indirectly via automake)
+ $DRYRUN rm -f ltconfig ltmain.sh libtool stamp-h*
+ # Made by automake
+ $DRYRUN rm -f missing depcomp
+ # automake junk
+ $DRYRUN rm -rf autom4te*.cache
+
+ config_macro_dir=`sed -ne 's/^AC_CONFIG_MACRO_DIR(\([^)]*\).*/\1/p' configure.ac`
+ if test "X$config_macro_dir" = X; then
+ config_macro_dir=.
+ else
+ aclocal_args="$aclocal_args -I $config_macro_dir "
+ fi
+
+ config_aux_dir=`sed -ne 's/^AC_CONFIG_AUX_DIR(\([^)]*\).*/\1/p' configure.ac`
+ if test "X$config_aux_dir" = X; then
+ config_aux_dir=.
+ fi
+
+ if test "X$config_dir" != X; then
+ echo "$program: Updating config.guess and config.sub"
+ for file in config.guess config.sub; do
+ cfile=$config_dir/$file
+ xfile=$config_aux_dir/$file
+ if test -f $cfile; then
+ $DRYRUN rm -f $xfile
+ $DRYRUN cp -p $cfile $xfile
+ fi
+ done
+ fi
+
+ echo "$program: Running $libtoolize $libtoolize_args"
+ $DRYRUN rm -f ltmain.sh libtool
+ eval $DRYRUN $libtoolize $libtoolize_args
+
+ if grep "^GTK_DOC_CHECK" configure.ac >/dev/null; then
+ # gtkdocize junk
+ $DRYRUN rm -rf gtk-doc.make
+ echo "$program: Running $gtkdocize $gtkdocize_args"
+ $DRYRUN $gtkdocize $gtkdocize_args
+ fi
+
+ echo "$program: Running $aclocal $aclocal_args"
+ $DRYRUN $aclocal $aclocal_args
+ if grep "^AM_CONFIG_HEADER" configure.ac >/dev/null; then
+ echo "$program: Running $autoheader"
+ $DRYRUN $autoheader
+ fi
+ echo "$program: Running $automake $automake_args"
+ $DRYRUN $automake $automake_args $automake_args
+ echo "$program: Running $autoconf"
+ $DRYRUN $autoconf $autoconf_args
+ )
+ fi
+done
+
+
+rm -f config.cache
+
+AUTOMAKE=$automake
+AUTOCONF=$autoconf
+ACLOCAL=$aclocal
+export AUTOMAKE AUTOCONF ACLOCAL
+
+if test "X$NOCONFIGURE" = X; then
+ echo " "
+ if test -z "$*"; then
+ echo "$program: WARNING: Running \`configure' with no arguments."
+ echo "If you wish to pass any to it, please specify them on the"
+ echo "\`$program' command line."
+ fi
+
+ echo "$program: Running ./configure $configure_args $@"
+ if test "X$DRYRUN" = X; then
+ $DRYRUN ./configure $configure_args "$@" \
+ && echo "$program: Now type \`make' to compile this package" || exit 1
+ else
+ $DRYRUN ./configure $configure_args "$@"
+ fi
+fi
diff --git a/build/ar-lib b/build/ar-lib
new file mode 100755
index 0000000..0f62c6f
--- /dev/null
+++ b/build/ar-lib
@@ -0,0 +1,270 @@
+#! /bin/sh
+# Wrapper for Microsoft lib.exe
+
+me=ar-lib
+scriptversion=2012-03-01.08; # UTC
+
+# Copyright (C) 2010, 2012 Free Software Foundation, Inc.
+# Written by Peter Rosin <peda@lysator.liu.se>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+
+# func_error message
+func_error ()
+{
+ echo "$me: $1" 1>&2
+ exit 1
+}
+
+file_conv=
+
+# func_file_conv build_file
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv in
+ mingw)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_at_file at_file operation archive
+# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
+# for each of them.
+# When interpreting the content of the @FILE, do NOT use func_file_conv,
+# since the user would need to supply preconverted file names to
+# binutils ar, at least for MinGW.
+func_at_file ()
+{
+ operation=$2
+ archive=$3
+ at_file_contents=`cat "$1"`
+ eval set x "$at_file_contents"
+ shift
+
+ for member
+ do
+ $AR -NOLOGO $operation:"$member" "$archive" || exit $?
+ done
+}
+
+case $1 in
+ '')
+ func_error "no command. Try '$0 --help' for more information."
+ ;;
+ -h | --h*)
+ cat <<EOF
+Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
+
+Members may be specified in a file named with @FILE.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "$me, version $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test $# -lt 3; then
+ func_error "you must specify a program, an action and an archive"
+fi
+
+AR=$1
+shift
+while :
+do
+ if test $# -lt 2; then
+ func_error "you must specify a program, an action and an archive"
+ fi
+ case $1 in
+ -lib | -LIB \
+ | -ltcg | -LTCG \
+ | -machine* | -MACHINE* \
+ | -subsystem* | -SUBSYSTEM* \
+ | -verbose | -VERBOSE \
+ | -wx* | -WX* )
+ AR="$AR $1"
+ shift
+ ;;
+ *)
+ action=$1
+ shift
+ break
+ ;;
+ esac
+done
+orig_archive=$1
+shift
+func_file_conv "$orig_archive"
+archive=$file
+
+# strip leading dash in $action
+action=${action#-}
+
+delete=
+extract=
+list=
+quick=
+replace=
+index=
+create=
+
+while test -n "$action"
+do
+ case $action in
+ d*) delete=yes ;;
+ x*) extract=yes ;;
+ t*) list=yes ;;
+ q*) quick=yes ;;
+ r*) replace=yes ;;
+ s*) index=yes ;;
+ S*) ;; # the index is always updated implicitly
+ c*) create=yes ;;
+ u*) ;; # TODO: don't ignore the update modifier
+ v*) ;; # TODO: don't ignore the verbose modifier
+ *)
+ func_error "unknown action specified"
+ ;;
+ esac
+ action=${action#?}
+done
+
+case $delete$extract$list$quick$replace,$index in
+ yes,* | ,yes)
+ ;;
+ yesyes*)
+ func_error "more than one action specified"
+ ;;
+ *)
+ func_error "no action specified"
+ ;;
+esac
+
+if test -n "$delete"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ for member
+ do
+ case $1 in
+ @*)
+ func_at_file "${1#@}" -REMOVE "$archive"
+ ;;
+ *)
+ func_file_conv "$1"
+ $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
+ ;;
+ esac
+ done
+
+elif test -n "$extract"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ if test $# -gt 0; then
+ for member
+ do
+ case $1 in
+ @*)
+ func_at_file "${1#@}" -EXTRACT "$archive"
+ ;;
+ *)
+ func_file_conv "$1"
+ $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
+ ;;
+ esac
+ done
+ else
+ $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
+ do
+ $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
+ done
+ fi
+
+elif test -n "$quick$replace"; then
+ if test ! -f "$orig_archive"; then
+ if test -z "$create"; then
+ echo "$me: creating $orig_archive"
+ fi
+ orig_archive=
+ else
+ orig_archive=$archive
+ fi
+
+ for member
+ do
+ case $1 in
+ @*)
+ func_file_conv "${1#@}"
+ set x "$@" "@$file"
+ ;;
+ *)
+ func_file_conv "$1"
+ set x "$@" "$file"
+ ;;
+ esac
+ shift
+ shift
+ done
+
+ if test -n "$orig_archive"; then
+ $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
+ else
+ $AR -NOLOGO -OUT:"$archive" "$@" || exit $?
+ fi
+
+elif test -n "$list"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ $AR -NOLOGO -LIST "$archive" || exit $?
+fi
diff --git a/build/compile b/build/compile
new file mode 100755
index 0000000..862a14e
--- /dev/null
+++ b/build/compile
@@ -0,0 +1,343 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-03-05.13; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
+# Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" "" $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv/,$2, in
+ *,$file_conv,*)
+ ;;
+ mingw/*)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin/*)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine/*)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ found=no
+ save_IFS=$IFS
+ IFS=';'
+ for dir in $lib_path $LIB
+ do
+ IFS=$save_IFS
+ if $shared && test -f "$dir/$lib.dll.lib"; then
+ found=yes
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+ # Assume a capable shell
+ lib_path=
+ shared=:
+ linker_opts=
+ for arg
+ do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ eat=1
+ case $2 in
+ *.o | *.[oO][bB][jJ])
+ func_file_conv "$2"
+ set x "$@" -Fo"$file"
+ shift
+ ;;
+ *)
+ func_file_conv "$2"
+ set x "$@" -Fe"$file"
+ shift
+ ;;
+ esac
+ ;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -I*)
+ func_file_conv "${1#-I}" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -l*)
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
+ -L*)
+ func_cl_dashL "${1#-L}"
+ ;;
+ -static)
+ shared=false
+ ;;
+ -Wl,*)
+ arg=${1#-Wl,}
+ save_ifs="$IFS"; IFS=','
+ for flag in $arg; do
+ IFS="$save_ifs"
+ linker_opts="$linker_opts $flag"
+ done
+ IFS="$save_ifs"
+ ;;
+ -Xlinker)
+ eat=1
+ linker_opts="$linker_opts $2"
+ ;;
+ -*)
+ set x "$@" "$1"
+ shift
+ ;;
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+ func_file_conv "$1"
+ set x "$@" -Tp"$file"
+ shift
+ ;;
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+ func_file_conv "$1" mingw
+ set x "$@" "$file"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+ done
+ if test -n "$linker_opts"; then
+ linker_opts="-link$linker_opts"
+ fi
+ exec "$@" $linker_opts
+ exit 1
+}
+
+eat=
+
+case $1 in
+ '')
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ func_cl_wrapper "$@" # Doesn't return...
+ ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ # So we strip '-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no '-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # '.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build/config.guess b/build/config.guess
new file mode 100755
index 0000000..d622a44
--- /dev/null
+++ b/build/config.guess
@@ -0,0 +1,1530 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
+
+timestamp='2012-02-10'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner. Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ELF__
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[4567])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ *:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ *:Interix*:*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ authenticamd | genuineintel | EM64T)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ arm*:Linux:*:*)
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ else
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ fi
+ fi
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ cris:Linux:*:*)
+ echo ${UNAME_MACHINE}-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo ${UNAME_MACHINE}-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ LIBC=gnu
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=${UNAME_MACHINE}el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=${UNAME_MACHINE}
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-gnu
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ i386)
+ eval $set_cc_for_build
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ UNAME_PROCESSOR="x86_64"
+ fi
+ fi ;;
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ c34*)
+ echo c34-convex-bsd
+ exit ;;
+ c38*)
+ echo c38-convex-bsd
+ exit ;;
+ c4*)
+ echo c4-convex-bsd
+ exit ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build/config.sub b/build/config.sub
new file mode 100755
index 0000000..c894da4
--- /dev/null
+++ b/build/config.sub
@@ -0,0 +1,1773 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
+
+timestamp='2012-02-10'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
+ kopensolaris*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray | -microblaze)
+ os=
+ basic_machine=$1
+ ;;
+ -bluegene*)
+ os=-cnk
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | aarch64 | aarch64_be \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | be32 | be64 \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | epiphany \
+ | fido | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | le32 | le64 \
+ | lm32 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | mcore | mep | metag \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nios | nios2 \
+ | ns16k | ns32k \
+ | open8 \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
+ | pyramid \
+ | rl78 | rx \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | ubicom32 \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+ | we32k \
+ | x86 | xc16x | xstormy16 | xtensa \
+ | z8k | z80)
+ basic_machine=$basic_machine-unknown
+ ;;
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | aarch64-* | aarch64_be-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | be32-* | be64-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | le32-* | le64-* \
+ | lm32-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64octeon-* | mips64octeonel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nds32-* | nds32le-* | nds32be-* \
+ | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+ | pyramid-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile*-* \
+ | tron-* \
+ | ubicom32-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
+ | xstormy16-* | xtensa*-* \
+ | ymp-* \
+ | z8k-* | z80-*)
+ ;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16 | cr16-*)
+ basic_machine=cr16-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ microblaze)
+ basic_machine=microblaze-xilinx
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ msys)
+ basic_machine=i386-pc
+ os=-msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc | ppcbe) basic_machine=powerpc-unknown
+ ;;
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tile*)
+ basic_machine=$basic_machine-unknown
+ os=-linux-gnu
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ z80-*-coff)
+ basic_machine=z80-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* | -aros* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* | -cegcc* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -dicos*)
+ os=-dicos
+ ;;
+ -nacl*)
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mep-*)
+ os=-elf
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -cnk*|-aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build/depcomp b/build/depcomp
new file mode 100755
index 0000000..25a39e6
--- /dev/null
+++ b/build/depcomp
@@ -0,0 +1,708 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2012-03-27.16; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by 'PROGRAMS ARGS'.
+ object Object file output by 'PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputting dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit $?
+ ;;
+esac
+
+# A tabulation character.
+tab=' '
+# A newline character.
+nl='
+'
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the "deleted header file" problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+ tr ' ' "$nl" < "$tmpdepfile" |
+## Some versions of gcc put a space before the ':'. On the theory
+## that the space means something, we add a space to the output as
+## well. hp depmode also adds that space, but also prefixes the VPATH
+## to the object. Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like '#:fec' to the end of the
+ # dependency line.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr "$nl" ' ' >> "$depfile"
+ echo >> "$depfile"
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+xlc)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. In older versions, this file always lives in the
+ # current directory. Also, the AIX compiler puts '$object:' at the
+ # start of each line; $object doesn't have directory information.
+ # Version 6 uses the directory in both cases.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$base.u
+ tmpdepfile3=$dir.libs/$base.u
+ "$@" -Wc,-M
+ else
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$dir$base.u
+ tmpdepfile3=$dir$base.u
+ "$@" -M
+ fi
+ stat=$?
+
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form 'foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # '$object: dependent.h' and one to simply 'dependent.h:'.
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+icc)
+ # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
+ # However on
+ # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # ICC 7.0 will fill foo.d with something like
+ # foo.o: sub/foo.c
+ # foo.o: sub/foo.h
+ # which is wrong. We want
+ # sub/foo.o: sub/foo.c
+ # sub/foo.o: sub/foo.h
+ # sub/foo.c:
+ # sub/foo.h:
+ # ICC 7.1 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using '\':
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+ # tcc 0.9.26 (FIXME still under development at the moment of writing)
+ # will emit a similar output, but also prepend the continuation lines
+ # with horizontal tabulation characters.
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each line is of the form 'foo.o: dependent.h',
+ # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # '$object: dependent.h' and one to simply 'dependent.h:'.
+ sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \
+ < "$tmpdepfile" > "$depfile"
+ sed '
+ s/[ '"$tab"'][ '"$tab"']*/ /g
+ s/^ *//
+ s/ *\\*$//
+ s/^[^:]*: *//
+ /^$/d
+ /:$/d
+ s/$/ :/
+ ' < "$tmpdepfile" >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add 'dependent.h:' lines.
+ sed -ne '2,${
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in 'foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+ # With Tru64 cc, shared objects can also be used to make a
+ # static library. This mechanism is used in libtool 1.4 series to
+ # handle both shared and static libraries in a single compilation.
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+ #
+ # With libtool 1.5 this exception was removed, and libtool now
+ # generates 2 separate objects for the 2 libraries. These two
+ # compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+ tmpdepfile2=$dir$base.o.d # libtool 1.5
+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.o.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ tmpdepfile4=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+msvc7)
+ if test "$libtool" = yes; then
+ showIncludes=-Wc,-showIncludes
+ else
+ showIncludes=-showIncludes
+ fi
+ "$@" $showIncludes > "$tmpdepfile"
+ stat=$?
+ grep -v '^Note: including file: ' "$tmpdepfile"
+ if test "$stat" = 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ # The first sed program below extracts the file names and escapes
+ # backslashes for cygpath. The second sed program outputs the file
+ # name when reading, but also accumulates all include files in the
+ # hold buffer in order to output them again at the end. This only
+ # works with sed implementations that can handle large buffers.
+ sed < "$tmpdepfile" -n '
+/^Note: including file: *\(.*\)/ {
+ s//\1/
+ s/\\/\\\\/g
+ p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+ s/.*/'"$tab"'/
+ G
+ p
+}' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvc7msys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove '-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ test -z "$dashmflag" && dashmflag=-M
+ # Require at least two characters before searching for ':'
+ # in the target name. This is to cope with DOS-style filenames:
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+ "$@" $dashmflag |
+ sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' "$nl" < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ "$@" || exit $?
+ # Remove any Libtool call
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no eat=no
+ for arg
+ do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ if test $eat = yes; then
+ eat=no
+ continue
+ fi
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift ;;
+ # Strip any option that makedepend may not understand. Remove
+ # the object too, otherwise makedepend will parse it as a source file.
+ -arch)
+ eat=yes ;;
+ -*|$object)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift ;;
+ esac
+ done
+ obj_suffix=`echo "$object" | sed 's/^.*\././'`
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ rm -f "$depfile"
+ # makedepend may prepend the VPATH from the source file name to the object.
+ # No need to regex-escape $object, excess matching of '.' is harmless.
+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove '-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ "$@" -E |
+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E 2>/dev/null |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+ echo "$tab" >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvcmsys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build/install-sh b/build/install-sh
new file mode 100755
index 0000000..a9244eb
--- /dev/null
+++ b/build/install-sh
@@ -0,0 +1,527 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2011-01-19.21; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ # Protect names problematic for `test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ # Protect names problematic for `test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names problematic for `test' and other utilities.
+ case $src in
+ -* | [=\(\)!]) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+ dst=$dst_arg
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build/ltmain.sh b/build/ltmain.sh
new file mode 100644
index 0000000..c7d06c3
--- /dev/null
+++ b/build/ltmain.sh
@@ -0,0 +1,9661 @@
+
+# libtool (GNU libtool) 2.4.2
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# Provide generalized library-building support services.
+#
+# --config show all configuration variables
+# --debug enable verbose shell tracing
+# -n, --dry-run display commands without modifying any files
+# --features display basic configuration information and exit
+# --mode=MODE use operation mode MODE
+# --preserve-dup-deps don't remove duplicate dependency libraries
+# --quiet, --silent don't print informational messages
+# --no-quiet, --no-silent
+# print informational messages (default)
+# --no-warn don't display warning messages
+# --tag=TAG use configuration variables from tag TAG
+# -v, --verbose print more informational messages than default
+# --no-verbose don't print the extra informational messages
+# --version print version information
+# -h, --help, --help-all print short, long, or detailed help message
+#
+# MODE must be one of the following:
+#
+# clean remove files from the build directory
+# compile compile a source file into a libtool object
+# execute automatically set library path, then run a program
+# finish complete the installation of libtool libraries
+# install install libraries or executables
+# link create a library or an executable
+# uninstall remove libraries from an installed directory
+#
+# MODE-ARGS vary depending on the MODE. When passed as first option,
+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+# host-triplet: $host
+# shell: $SHELL
+# compiler: $LTCC
+# compiler flags: $LTCFLAGS
+# linker: $LD (gnu? $with_gnu_ld)
+# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1
+# automake: $automake_version
+# autoconf: $autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION="2.4.2 Debian-2.4.2-1"
+TIMESTAMP=""
+package_revision=1.3337
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# NLS nuisances: We save the old values to restore during execute mode.
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+ eval "if test \"\${$lt_var+set}\" = set; then
+ save_$lt_var=\$$lt_var
+ $lt_var=C
+ export $lt_var
+ lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+ fi"
+done
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
+
+$lt_unset CDPATH
+
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+
+
+: ${CP="cp -f"}
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+} # func_dirname may be replaced by extended shell implementation
+
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
+
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+ func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+} # func_dirname_and_basename may be replaced by extended shell implementation
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ esac
+} # func_stripname may be replaced by extended shell implementation
+
+
+# These SED scripts presuppose an absolute path with a trailing slash.
+pathcar='s,^/\([^/]*\).*$,\1,'
+pathcdr='s,^/[^/]*,,'
+removedotparts=':dotsl
+ s@/\./@/@g
+ t dotsl
+ s,/\.$,/,'
+collapseslashes='s@/\{1,\}@/@g'
+finalslash='s,/*$,/,'
+
+# func_normal_abspath PATH
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+# value returned in "$func_normal_abspath_result"
+func_normal_abspath ()
+{
+ # Start from root dir and reassemble the path.
+ func_normal_abspath_result=
+ func_normal_abspath_tpath=$1
+ func_normal_abspath_altnamespace=
+ case $func_normal_abspath_tpath in
+ "")
+ # Empty path, that just means $cwd.
+ func_stripname '' '/' "`pwd`"
+ func_normal_abspath_result=$func_stripname_result
+ return
+ ;;
+ # The next three entries are used to spot a run of precisely
+ # two leading slashes without using negated character classes;
+ # we take advantage of case's first-match behaviour.
+ ///*)
+ # Unusual form of absolute path, do nothing.
+ ;;
+ //*)
+ # Not necessarily an ordinary path; POSIX reserves leading '//'
+ # and for example Cygwin uses it to access remote file shares
+ # over CIFS/SMB, so we conserve a leading double slash if found.
+ func_normal_abspath_altnamespace=/
+ ;;
+ /*)
+ # Absolute path, do nothing.
+ ;;
+ *)
+ # Relative path, prepend $cwd.
+ func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+ ;;
+ esac
+ # Cancel out all the simple stuff to save iterations. We also want
+ # the path to end with a slash for ease of parsing, so make sure
+ # there is one (and only one) here.
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
+ while :; do
+ # Processed it all yet?
+ if test "$func_normal_abspath_tpath" = / ; then
+ # If we ascended to the root using ".." the result may be empty now.
+ if test -z "$func_normal_abspath_result" ; then
+ func_normal_abspath_result=/
+ fi
+ break
+ fi
+ func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$pathcar"`
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$pathcdr"`
+ # Figure out what to do with it
+ case $func_normal_abspath_tcomponent in
+ "")
+ # Trailing empty path component, ignore it.
+ ;;
+ ..)
+ # Parent dir; strip last assembled component from result.
+ func_dirname "$func_normal_abspath_result"
+ func_normal_abspath_result=$func_dirname_result
+ ;;
+ *)
+ # Actual path component, append it.
+ func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
+ ;;
+ esac
+ done
+ # Restore leading double-slash if one was found on entry.
+ func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+# func_relative_path SRCDIR DSTDIR
+# generates a relative path from SRCDIR to DSTDIR, with a trailing
+# slash if non-empty, suitable for immediately appending a filename
+# without needing to append a separator.
+# value returned in "$func_relative_path_result"
+func_relative_path ()
+{
+ func_relative_path_result=
+ func_normal_abspath "$1"
+ func_relative_path_tlibdir=$func_normal_abspath_result
+ func_normal_abspath "$2"
+ func_relative_path_tbindir=$func_normal_abspath_result
+
+ # Ascend the tree starting from libdir
+ while :; do
+ # check if we have found a prefix of bindir
+ case $func_relative_path_tbindir in
+ $func_relative_path_tlibdir)
+ # found an exact match
+ func_relative_path_tcancelled=
+ break
+ ;;
+ $func_relative_path_tlibdir*)
+ # found a matching prefix
+ func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+ func_relative_path_tcancelled=$func_stripname_result
+ if test -z "$func_relative_path_result"; then
+ func_relative_path_result=.
+ fi
+ break
+ ;;
+ *)
+ func_dirname $func_relative_path_tlibdir
+ func_relative_path_tlibdir=${func_dirname_result}
+ if test "x$func_relative_path_tlibdir" = x ; then
+ # Have to descend all the way to the root!
+ func_relative_path_result=../$func_relative_path_result
+ func_relative_path_tcancelled=$func_relative_path_tbindir
+ break
+ fi
+ func_relative_path_result=../$func_relative_path_result
+ ;;
+ esac
+ done
+
+ # Now calculate path; take care to avoid doubling-up slashes.
+ func_stripname '' '/' "$func_relative_path_result"
+ func_relative_path_result=$func_stripname_result
+ func_stripname '/' '/' "$func_relative_path_tcancelled"
+ if test "x$func_stripname_result" != x ; then
+ func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
+ fi
+
+ # Normalisation. If bindir is libdir, return empty string,
+ # else relative path ending with a slash; either way, target
+ # file name can be directly appended.
+ if test ! -z "$func_relative_path_result"; then
+ func_stripname './' '' "$func_relative_path_result/"
+ func_relative_path_result=$func_stripname_result
+ fi
+}
+
+# The name of this program:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+ [\\/]*|[A-Za-z]:\\*) ;;
+ *[\\/]*)
+ progdir=$func_dirname_result
+ progdir=`cd "$progdir" && pwd`
+ progpath="$progdir/$progname"
+ ;;
+ *)
+ save_IFS="$IFS"
+ IFS=${PATH_SEPARATOR-:}
+ for progdir in $PATH; do
+ IFS="$save_IFS"
+ test -x "$progdir/$progname" && break
+ done
+ IFS="$save_IFS"
+ test -n "$progdir" || progdir=`pwd`
+ progpath="$progdir/$progname"
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
+
+# Sed substitution that converts a w32 file name or path
+# which contains forward slashes, into one that contains
+# (escaped) backslashes. A very naive implementation.
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+ s/$bs4/&\\
+/g
+ s/^$bs2$dollar/$bs&/
+ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+ s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+ $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+ $opt_verbose && func_echo ${1+"$@"}
+
+ # A bug in bash halts the script if the last line of a function
+ # fails when set -e is in force, so we need another command to
+ # work around that:
+ :
+}
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO "$*"
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+ $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+ $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+
+ # bash bug again:
+ :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+ func_error ${1+"$@"}
+ exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+ func_error ${1+"$@"}
+ func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information." ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+ $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+ my_directory_path="$1"
+ my_dir_list=
+
+ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+ # Protect directory names starting with `-'
+ case $my_directory_path in
+ -*) my_directory_path="./$my_directory_path" ;;
+ esac
+
+ # While some portion of DIR does not yet exist...
+ while test ! -d "$my_directory_path"; do
+ # ...make a list in topmost first order. Use a colon delimited
+ # list incase some portion of path contains whitespace.
+ my_dir_list="$my_directory_path:$my_dir_list"
+
+ # If the last portion added has no slash in it, the list is done
+ case $my_directory_path in */*) ;; *) break ;; esac
+
+ # ...otherwise throw away the child directory and loop
+ my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
+ done
+ my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
+
+ save_mkdir_p_IFS="$IFS"; IFS=':'
+ for my_dir in $my_dir_list; do
+ IFS="$save_mkdir_p_IFS"
+ # mkdir can fail with a `File exist' error if two processes
+ # try to create one of the directories concurrently. Don't
+ # stop in that case!
+ $MKDIR "$my_dir" 2>/dev/null || :
+ done
+ IFS="$save_mkdir_p_IFS"
+
+ # Bail out if we (or some other process) failed to create a directory.
+ test -d "$my_directory_path" || \
+ func_fatal_error "Failed to create \`$1'"
+ fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible. If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+ my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+ if test "$opt_dry_run" = ":"; then
+ # Return a directory name, but don't create it in dry-run mode
+ my_tmpdir="${my_template}-$$"
+ else
+
+ # If mktemp works, use that first and foremost
+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+ if test ! -d "$my_tmpdir"; then
+ # Failing that, at least try and use $RANDOM to avoid a race
+ my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+ save_mktempdir_umask=`umask`
+ umask 0077
+ $MKDIR "$my_tmpdir"
+ umask $save_mktempdir_umask
+ fi
+
+ # If we're not in dry-run mode, bomb out on failure
+ test -d "$my_tmpdir" || \
+ func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+ fi
+
+ $ECHO "$my_tmpdir"
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+ case $1 in
+ *[\\\`\"\$]*)
+ func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
+ *)
+ func_quote_for_eval_unquoted_result="$1" ;;
+ esac
+
+ case $func_quote_for_eval_unquoted_result in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting, command substitution and and variable
+ # expansion for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+ ;;
+ *)
+ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+ esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+ case $1 in
+ *[\\\`\"]*)
+ my_arg=`$ECHO "$1" | $SED \
+ -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+ *)
+ my_arg="$1" ;;
+ esac
+
+ case $my_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting and command substitution for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ my_arg="\"$my_arg\""
+ ;;
+ esac
+
+ func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$my_cmd"
+ my_status=$?
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it. Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$lt_user_locale
+ $my_cmd"
+ my_status=$?
+ eval "$lt_safe_locale"
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+# func_tr_sh
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result. All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+ case $1 in
+ [0-9]* | *[!a-zA-Z0-9_]*)
+ func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
+ ;;
+ * )
+ func_tr_sh_result=$1
+ ;;
+ esac
+}
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+ $opt_debug
+
+ $SED -n '/(C)/!b go
+ :more
+ /\./!{
+ N
+ s/\n# / /
+ b more
+ }
+ :go
+ /^# '$PROGRAM' (GNU /,/# warranty; / {
+ s/^# //
+ s/^# *$//
+ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+ p
+ }' < "$progpath"
+ exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+ $opt_debug
+
+ $SED -n '/^# Usage:/,/^# *.*--help/ {
+ s/^# //
+ s/^# *$//
+ s/\$progname/'$progname'/
+ p
+ }' < "$progpath"
+ echo
+ $ECHO "run \`$progname --help | more' for full usage"
+ exit $?
+}
+
+# func_help [NOEXIT]
+# Echo long help message to standard output and exit,
+# unless 'noexit' is passed as argument.
+func_help ()
+{
+ $opt_debug
+
+ $SED -n '/^# Usage:/,/# Report bugs to/ {
+ :print
+ s/^# //
+ s/^# *$//
+ s*\$progname*'$progname'*
+ s*\$host*'"$host"'*
+ s*\$SHELL*'"$SHELL"'*
+ s*\$LTCC*'"$LTCC"'*
+ s*\$LTCFLAGS*'"$LTCFLAGS"'*
+ s*\$LD*'"$LD"'*
+ s/\$with_gnu_ld/'"$with_gnu_ld"'/
+ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
+ p
+ d
+ }
+ /^# .* home page:/b print
+ /^# General help using/b print
+ ' < "$progpath"
+ ret=$?
+ if test -z "$1"; then
+ exit $ret
+ fi
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+ $opt_debug
+
+ func_error "missing argument for $1."
+ exit_cmd=exit
+}
+
+
+# func_split_short_opt shortopt
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+func_split_short_opt ()
+{
+ my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+ my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+
+ func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
+ func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
+} # func_split_short_opt may be replaced by extended shell implementation
+
+
+# func_split_long_opt longopt
+# Set func_split_long_opt_name and func_split_long_opt_arg shell
+# variables after splitting LONGOPT at the `=' sign.
+func_split_long_opt ()
+{
+ my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+ my_sed_long_arg='1s/^--[^=]*=//'
+
+ func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
+ func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
+} # func_split_long_opt may be replaced by extended shell implementation
+
+exit_cmd=:
+
+
+
+
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+nonopt=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end. This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
+
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
+{
+ func_quote_for_eval "${2}"
+ eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
+} # func_append_quoted may be replaced by extended shell implementation
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
+
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
+
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
+
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
+
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+ func_error ${1+"$@"}
+ func_error "See the $PACKAGE documentation for more information."
+ func_fatal_error "Fatal configuration error."
+}
+
+
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+ re_begincf='^# ### BEGIN LIBTOOL'
+ re_endcf='^# ### END LIBTOOL'
+
+ # Default configuration.
+ $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+ done
+
+ exit $?
+}
+
+# func_features
+# Display the features supported by this script.
+func_features ()
+{
+ echo "host: $host"
+ if test "$build_libtool_libs" = yes; then
+ echo "enable shared libraries"
+ else
+ echo "disable shared libraries"
+ fi
+ if test "$build_old_libs" = yes; then
+ echo "enable static libraries"
+ else
+ echo "disable static libraries"
+ fi
+
+ exit $?
+}
+
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+ # Global variable:
+ tagname="$1"
+
+ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+ sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+ # Validate tagname.
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ func_fatal_error "invalid tag name: $tagname"
+ ;;
+ esac
+
+ # Don't test for the "default" C tag, as we know it's
+ # there but not specially marked.
+ case $tagname in
+ CC) ;;
+ *)
+ if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+ taglist="$taglist $tagname"
+
+ # Evaluate the configuration. Be careful to quote the path
+ # and the sed script, to avoid splitting on whitespace, but
+ # also don't use non-portable quotes within backquotes within
+ # quotes we have to do it in 2 steps:
+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+ eval "$extractedcf"
+ else
+ func_error "ignoring unknown tag $tagname"
+ fi
+ ;;
+ esac
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+ if test "$package_revision" != "$macro_revision"; then
+ if test "$VERSION" != "$macro_version"; then
+ if test -z "$macro_version"; then
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ fi
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+ fi
+
+ exit $EXIT_MISMATCH
+ fi
+}
+
+
+# Shorthand for --mode=foo, only valid as the first argument
+case $1 in
+clean|clea|cle|cl)
+ shift; set dummy --mode clean ${1+"$@"}; shift
+ ;;
+compile|compil|compi|comp|com|co|c)
+ shift; set dummy --mode compile ${1+"$@"}; shift
+ ;;
+execute|execut|execu|exec|exe|ex|e)
+ shift; set dummy --mode execute ${1+"$@"}; shift
+ ;;
+finish|finis|fini|fin|fi|f)
+ shift; set dummy --mode finish ${1+"$@"}; shift
+ ;;
+install|instal|insta|inst|ins|in|i)
+ shift; set dummy --mode install ${1+"$@"}; shift
+ ;;
+link|lin|li|l)
+ shift; set dummy --mode link ${1+"$@"}; shift
+ ;;
+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+ shift; set dummy --mode uninstall ${1+"$@"}; shift
+ ;;
+esac
+
+
+
+# Option defaults:
+opt_debug=:
+opt_dry_run=false
+opt_config=false
+opt_preserve_dup_deps=false
+opt_features=false
+opt_finish=false
+opt_help=false
+opt_help_all=false
+opt_silent=:
+opt_warning=:
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
+
+
+# Parse options once, thoroughly. This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
+{
+ # this just eases exit handling
+ while test $# -gt 0; do
+ opt="$1"
+ shift
+ case $opt in
+ --debug|-x) opt_debug='set -x'
+ func_echo "enabling shell trace mode"
+ $opt_debug
+ ;;
+ --dry-run|--dryrun|-n)
+ opt_dry_run=:
+ ;;
+ --config)
+ opt_config=:
+func_config
+ ;;
+ --dlopen|-dlopen)
+ optarg="$1"
+ opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
+ shift
+ ;;
+ --preserve-dup-deps)
+ opt_preserve_dup_deps=:
+ ;;
+ --features)
+ opt_features=:
+func_features
+ ;;
+ --finish)
+ opt_finish=:
+set dummy --mode finish ${1+"$@"}; shift
+ ;;
+ --help)
+ opt_help=:
+ ;;
+ --help-all)
+ opt_help_all=:
+opt_help=': help-all'
+ ;;
+ --mode)
+ test $# = 0 && func_missing_arg $opt && break
+ optarg="$1"
+ opt_mode="$optarg"
+case $optarg in
+ # Valid mode arguments:
+ clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+ # Catch anything else as an error
+ *) func_error "invalid argument for $opt"
+ exit_cmd=exit
+ break
+ ;;
+esac
+ shift
+ ;;
+ --no-silent|--no-quiet)
+ opt_silent=false
+func_append preserve_args " $opt"
+ ;;
+ --no-warning|--no-warn)
+ opt_warning=false
+func_append preserve_args " $opt"
+ ;;
+ --no-verbose)
+ opt_verbose=false
+func_append preserve_args " $opt"
+ ;;
+ --silent|--quiet)
+ opt_silent=:
+func_append preserve_args " $opt"
+ opt_verbose=false
+ ;;
+ --verbose|-v)
+ opt_verbose=:
+func_append preserve_args " $opt"
+opt_silent=false
+ ;;
+ --tag)
+ test $# = 0 && func_missing_arg $opt && break
+ optarg="$1"
+ opt_tag="$optarg"
+func_append preserve_args " $opt $optarg"
+func_enable_tag "$optarg"
+ shift
+ ;;
+
+ -\?|-h) func_usage ;;
+ --help) func_help ;;
+ --version) func_version ;;
+
+ # Separate optargs to long options:
+ --*=*)
+ func_split_long_opt "$opt"
+ set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+ # Separate non-argument short options:
+ -\?*|-h*|-n*|-v*)
+ func_split_short_opt "$opt"
+ set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+ --) break ;;
+ -*) func_fatal_help "unrecognized option \`$opt'" ;;
+ *) set dummy "$opt" ${1+"$@"}; shift; break ;;
+ esac
+ done
+
+ # Validate options:
+
+ # save first non-option argument
+ if test "$#" -gt 0; then
+ nonopt="$opt"
+ shift
+ fi
+
+ # preserve --debug
+ test "$opt_debug" = : || func_append preserve_args " --debug"
+
+ case $host in
+ *cygwin* | *mingw* | *pw32* | *cegcc*)
+ # don't eliminate duplications in $postdeps and $predeps
+ opt_duplicate_compiler_generated_deps=:
+ ;;
+ *)
+ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+ ;;
+ esac
+
+ $opt_help || {
+ # Sanity checks first:
+ func_check_version_match
+
+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ func_fatal_configuration "not configured to build any kind of library"
+ fi
+
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
+ func_error "unrecognized option \`-dlopen'"
+ $ECHO "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$progname --help --mode=$opt_mode' for more information."
+ }
+
+
+ # Bail if the options were screwed
+ $exit_cmd $EXIT_FAILURE
+}
+
+
+
+
+## ----------- ##
+## Main. ##
+## ----------- ##
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+ test -f "$1" &&
+ $SED -e 4q "$1" 2>/dev/null \
+ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs. To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway. Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+ lalib_p=no
+ if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+ for lalib_p_l in 1 2 3 4
+ do
+ read lalib_p_line
+ case "$lalib_p_line" in
+ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+ esac
+ done
+ exec 0<&5 5<&-
+ fi
+ test "$lalib_p" = yes
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+ func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+ func_ltwrapper_exec_suffix=
+ case $1 in
+ *.exe) ;;
+ *) func_ltwrapper_exec_suffix=.exe ;;
+ esac
+ $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+ func_dirname_and_basename "$1" "" "."
+ func_stripname '' '.exe' "$func_basename_result"
+ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+ func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+ $opt_debug
+ save_ifs=$IFS; IFS='~'
+ for cmd in $1; do
+ IFS=$save_ifs
+ eval cmd=\"$cmd\"
+ func_show_eval "$cmd" "${2-:}"
+ done
+ IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)! Also, sourcing
+# `FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+ $opt_debug
+ case $1 in
+ */* | *\\*) . "$1" ;;
+ *) . "./$1" ;;
+ esac
+}
+
+
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot. Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+ func_resolve_sysroot_result=$1
+ case $func_resolve_sysroot_result in
+ =*)
+ func_stripname '=' '' "$func_resolve_sysroot_result"
+ func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+ ;;
+ esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+ case "$lt_sysroot:$1" in
+ ?*:"$lt_sysroot"*)
+ func_stripname "$lt_sysroot" '' "$1"
+ func_replace_sysroot_result="=$func_stripname_result"
+ ;;
+ *)
+ # Including no sysroot.
+ func_replace_sysroot_result=$1
+ ;;
+ esac
+}
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+ $opt_debug
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ func_append_quoted CC_quoted "$arg"
+ done
+ CC_expanded=`func_echo_all $CC`
+ CC_quoted_expanded=`func_echo_all $CC_quoted`
+ case $@ in
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when configure was run.
+ " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
+ # Blanks at the start of $base_compile will cause this to fail
+ # if we don't check for them as well.
+ *)
+ for z in $available_tags; do
+ if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+ func_append_quoted CC_quoted "$arg"
+ done
+ CC_expanded=`func_echo_all $CC`
+ CC_quoted_expanded=`func_echo_all $CC_quoted`
+ case "$@ " in
+ " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
+ # The compiler in the base compile command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ func_echo "unable to infer tagged configuration"
+ func_fatal_error "specify a tag with \`--tag'"
+# else
+# func_verbose "using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+ write_libobj=${1}
+ if test "$build_libtool_libs" = yes; then
+ write_lobj=\'${2}\'
+ else
+ write_lobj=none
+ fi
+
+ if test "$build_old_libs" = yes; then
+ write_oldobj=\'${3}\'
+ else
+ write_oldobj=none
+ fi
+
+ $opt_dry_run || {
+ cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+ $MV "${write_libobj}T" "${write_libobj}"
+ }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+ $opt_debug
+ func_convert_core_file_wine_to_w32_result="$1"
+ if test -n "$1"; then
+ # Unfortunately, winepath does not exit with a non-zero error code, so we
+ # are forced to check the contents of stdout. On the other hand, if the
+ # command is not found, the shell will set an exit code of 127 and print
+ # *an error message* to stdout. So we must check for both error code of
+ # zero AND non-empty stdout, which explains the odd construction:
+ func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+ if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+ func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+ $SED -e "$lt_sed_naive_backslashify"`
+ else
+ func_convert_core_file_wine_to_w32_result=
+ fi
+ fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+ $opt_debug
+ # unfortunately, winepath doesn't convert paths, only file names
+ func_convert_core_path_wine_to_w32_result=""
+ if test -n "$1"; then
+ oldIFS=$IFS
+ IFS=:
+ for func_convert_core_path_wine_to_w32_f in $1; do
+ IFS=$oldIFS
+ func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+ if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+ if test -z "$func_convert_core_path_wine_to_w32_result"; then
+ func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+ else
+ func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+ fi
+ fi
+ done
+ IFS=$oldIFS
+ fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+ $opt_debug
+ if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+ func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+ if test "$?" -ne 0; then
+ # on failure, ensure result is empty
+ func_cygpath_result=
+ fi
+ else
+ func_cygpath_result=
+ func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+ fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format. Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+ $opt_debug
+ # awkward: cmd appends spaces to result
+ func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+ $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+ $opt_debug
+ if test -z "$2" && test -n "$1" ; then
+ func_error "Could not determine host file name corresponding to"
+ func_error " \`$1'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback:
+ func_to_host_file_result="$1"
+ fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+ $opt_debug
+ if test -z "$4" && test -n "$3"; then
+ func_error "Could not determine the host path corresponding to"
+ func_error " \`$3'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback. This is a deliberately simplistic "conversion" and
+ # should not be "improved". See libtool.info.
+ if test "x$1" != "x$2"; then
+ lt_replace_pathsep_chars="s|$1|$2|g"
+ func_to_host_path_result=`echo "$3" |
+ $SED -e "$lt_replace_pathsep_chars"`
+ else
+ func_to_host_path_result="$3"
+ fi
+ fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+ $opt_debug
+ case $4 in
+ $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+ ;;
+ esac
+ case $4 in
+ $2 ) func_append func_to_host_path_result "$3"
+ ;;
+ esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via `$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+ $opt_debug
+ $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result. If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+ $opt_debug
+ case ,$2, in
+ *,"$to_tool_file_cmd",*)
+ func_to_tool_file_result=$1
+ ;;
+ *)
+ $to_tool_file_cmd "$1"
+ func_to_tool_file_result=$func_to_host_file_result
+ ;;
+ esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+ func_to_host_file_result="$1"
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper. Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ func_convert_core_msys_to_w32 "$1"
+ func_to_host_file_result="$func_convert_core_msys_to_w32_result"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format. Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+ # LT_CYGPATH in this case.
+ func_to_host_file_result=`cygpath -m "$1"`
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format. Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ func_convert_core_file_wine_to_w32 "$1"
+ func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ func_convert_core_msys_to_w32 "$1"
+ func_cygpath -u "$func_convert_core_msys_to_w32_result"
+ func_to_host_file_result="$func_cygpath_result"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set. Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+ func_convert_core_file_wine_to_w32 "$1"
+ func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+ func_to_host_file_result="$func_cygpath_result"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via `$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format. If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+# file name conversion function : func_convert_file_X_to_Y ()
+# path conversion function : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same. If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+ $opt_debug
+ if test -z "$to_host_path_cmd"; then
+ func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+ to_host_path_cmd="func_convert_path_${func_stripname_result}"
+ fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+ $opt_debug
+ func_init_to_host_path_cmd
+ $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+ func_to_host_path_result="$1"
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper. Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # Remove leading and trailing path separator characters from ARG. MSYS
+ # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+ # and winepath ignores them completely.
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+ func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format. Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # See func_convert_path_msys_to_w32:
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format. Requires a wine environment and
+# a working winepath. Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # See func_convert_path_msys_to_w32:
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+ func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # See func_convert_path_msys_to_w32:
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+ func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+ func_to_host_path_result="$func_cygpath_result"
+ func_convert_path_check : : \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+ fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set. Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # Remove leading and trailing path separator characters from
+ # ARG. msys behavior is inconsistent here, cygpath turns them
+ # into '.;' and ';.', and winepath ignores them completely.
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+ func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+ func_to_host_path_result="$func_cygpath_result"
+ func_convert_path_check : : \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+ fi
+}
+# end func_convert_path_nix_to_cygwin
+
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+ $opt_debug
+ # Get the compilation command and the source file.
+ base_compile=
+ srcfile="$nonopt" # always keep a non-empty value in "srcfile"
+ suppress_opt=yes
+ suppress_output=
+ arg_mode=normal
+ libobj=
+ later=
+ pie_flag=
+
+ for arg
+ do
+ case $arg_mode in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg="$arg"
+ arg_mode=normal
+ ;;
+
+ target )
+ libobj="$arg"
+ arg_mode=normal
+ continue
+ ;;
+
+ normal )
+ # Accept any command-line options.
+ case $arg in
+ -o)
+ test -n "$libobj" && \
+ func_fatal_error "you cannot specify \`-o' more than once"
+ arg_mode=target
+ continue
+ ;;
+
+ -pie | -fpie | -fPIE)
+ func_append pie_flag " $arg"
+ continue
+ ;;
+
+ -shared | -static | -prefer-pic | -prefer-non-pic)
+ func_append later " $arg"
+ continue
+ ;;
+
+ -no-suppress)
+ suppress_opt=no
+ continue
+ ;;
+
+ -Xcompiler)
+ arg_mode=arg # the next one goes into the "base_compile" arg list
+ continue # The current "srcfile" will either be retained or
+ ;; # replaced later. I would guess that would be a bug.
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+ func_append_quoted lastarg "$arg"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$lastarg"
+ lastarg=$func_stripname_result
+
+ # Add the arguments to base_compile.
+ func_append base_compile " $lastarg"
+ continue
+ ;;
+
+ *)
+ # Accept the current argument as the source file.
+ # The previous "srcfile" becomes the current argument.
+ #
+ lastarg="$srcfile"
+ srcfile="$arg"
+ ;;
+ esac # case $arg
+ ;;
+ esac # case $arg_mode
+
+ # Aesthetically quote the previous argument.
+ func_append_quoted base_compile "$lastarg"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ func_fatal_error "you must specify an argument for -Xcompile"
+ ;;
+ target)
+ func_fatal_error "you must specify a target with \`-o'"
+ ;;
+ *)
+ # Get the name of the library object.
+ test -z "$libobj" && {
+ func_basename "$srcfile"
+ libobj="$func_basename_result"
+ }
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ case $libobj in
+ *.[cCFSifmso] | \
+ *.ada | *.adb | *.ads | *.asm | \
+ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
+ func_xform "$libobj"
+ libobj=$func_xform_result
+ ;;
+ esac
+
+ case $libobj in
+ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+ *)
+ func_fatal_error "cannot determine name of library object from \`$libobj'"
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ continue
+ ;;
+
+ -static)
+ build_libtool_libs=no
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ func_quote_for_eval "$libobj"
+ test "X$libobj" != "X$func_quote_for_eval_result" \
+ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && func_warning "libobj name \`$libobj' may not contain shell special characters."
+ func_dirname_and_basename "$obj" "/" ""
+ objname="$func_basename_result"
+ xdir="$func_dirname_result"
+ lobj=${xdir}$objdir/$objname
+
+ test -z "$base_compile" && \
+ func_fatal_help "you must specify a compilation command"
+
+ # Delete any leftover library objects.
+ if test "$build_old_libs" = yes; then
+ removelist="$obj $lobj $libobj ${libobj}T"
+ else
+ removelist="$lobj $libobj ${libobj}T"
+ fi
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2* | cegcc*)
+ pic_mode=default
+ ;;
+ esac
+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+ # non-PIC code in shared libraries is not supported
+ pic_mode=default
+ fi
+
+ # Calculate the filename of the output object if compiler does
+ # not support -o with -c
+ if test "$compiler_c_o" = no; then
+ output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ else
+ output_obj=
+ need_locks=no
+ lockfile=
+ fi
+
+ # Lock this critical section if it is needed
+ # We use this script file to make the link, it avoids creating a new file
+ if test "$need_locks" = yes; then
+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+ func_echo "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ elif test "$need_locks" = warn; then
+ if test -f "$lockfile"; then
+ $ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+ func_append removelist " $output_obj"
+ $ECHO "$srcfile" > "$lockfile"
+ fi
+
+ $opt_dry_run || $RM $removelist
+ func_append removelist " $lockfile"
+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+ func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+ srcfile=$func_to_tool_file_result
+ func_quote_for_eval "$srcfile"
+ qsrcfile=$func_quote_for_eval_result
+
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+ command="$base_compile $qsrcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ fi
+
+ func_mkdir_p "$xdir$objdir"
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ func_append command " -o $lobj"
+ fi
+
+ func_show_eval_locale "$command" \
+ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed, then go on to compile the next one
+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+ func_show_eval '$MV "$output_obj" "$lobj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ fi
+
+ # Only build a position-dependent object if we build old libraries.
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $qsrcfile$pie_flag"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ func_append command " -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ func_append command "$suppress_output"
+ func_show_eval_locale "$command" \
+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed
+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+ func_show_eval '$MV "$output_obj" "$obj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+ fi
+
+ $opt_dry_run || {
+ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ removelist=$lockfile
+ $RM "$lockfile"
+ fi
+ }
+
+ exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+ test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+ # We need to display help for each of the modes.
+ case $opt_mode in
+ "")
+ # Generic help is extracted from the usage comments
+ # at the start of this file.
+ func_help
+ ;;
+
+ clean)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+ compile)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+ -no-suppress do not suppress compiler output for multiple passes
+ -prefer-pic try to build PIC objects only
+ -prefer-non-pic try to build non-PIC objects only
+ -shared do not build a \`.o' file suitable for static linking
+ -static only build a \`.o' file suitable for static linking
+ -Wc,FLAG pass FLAG directly to the compiler
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+ ;;
+
+ execute)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+ -dlopen FILE add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+ ;;
+
+ finish)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges. Use
+the \`--dry-run' option if you just want to see what would be executed."
+ ;;
+
+ install)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command. The first component should be
+either the \`install' or \`cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+ -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+ link)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+ -all-static do not do any dynamic linking at all
+ -avoid-version do not add a version suffix if possible
+ -bindir BINDIR specify path to binaries directory (for systems where
+ libraries must be found in the PATH setting at runtime)
+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+ -export-symbols SYMFILE
+ try to export only the symbols listed in SYMFILE
+ -export-symbols-regex REGEX
+ try to export only the symbols matching REGEX
+ -LLIBDIR search LIBDIR for required installed libraries
+ -lNAME OUTPUT-FILE requires the installed library libNAME
+ -module build a library that can dlopened
+ -no-fast-install disable the fast-install mode
+ -no-install link a not-installable executable
+ -no-undefined declare that a library does not refer to external symbols
+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
+ -objectlist FILE Use a list of object files found in FILE to specify objects
+ -precious-files-regex REGEX
+ don't remove output files matching REGEX
+ -release RELEASE specify package release information
+ -rpath LIBDIR the created library will eventually be installed in LIBDIR
+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+ -shared only do dynamic linking of libtool libraries
+ -shrext SUFFIX override the standard shared library file extension
+ -static do not do any dynamic linking of uninstalled libtool libraries
+ -static-libtool-libs
+ do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+ -weak LIBNAME declare that the target provides the LIBNAME interface
+ -Wc,FLAG
+ -Xcompiler FLAG pass linker-specific FLAG directly to the compiler
+ -Wl,FLAG
+ -Xlinker FLAG pass linker-specific FLAG directly to the linker
+ -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename. Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+ ;;
+
+ uninstall)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+ *)
+ func_fatal_help "invalid operation mode \`$opt_mode'"
+ ;;
+ esac
+
+ echo
+ $ECHO "Try \`$progname --help' for more information about other modes."
+}
+
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+ if test "$opt_help" = :; then
+ func_mode_help
+ else
+ {
+ func_help noexit
+ for opt_mode in compile link execute install finish uninstall clean; do
+ func_mode_help
+ done
+ } | sed -n '1p; 2,$s/^Usage:/ or: /p'
+ {
+ func_help noexit
+ for opt_mode in compile link execute install finish uninstall clean; do
+ echo
+ func_mode_help
+ done
+ } |
+ sed '1d
+ /^When reporting/,/^Report/{
+ H
+ d
+ }
+ $x
+ /information about other modes/d
+ /more detailed .*MODE/d
+ s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+ fi
+ exit $?
+fi
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+ $opt_debug
+ # The first argument is the command name.
+ cmd="$nonopt"
+ test -z "$cmd" && \
+ func_fatal_help "you must specify a COMMAND"
+
+ # Handle -dlopen flags immediately.
+ for file in $opt_dlopen; do
+ test -f "$file" \
+ || func_fatal_help "\`$file' is not a file"
+
+ dir=
+ case $file in
+ *.la)
+ func_resolve_sysroot "$file"
+ file=$func_resolve_sysroot_result
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+ func_source "$file"
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && \
+ func_warning "\`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+
+ if test -f "$dir/$objdir/$dlname"; then
+ func_append dir "/$objdir"
+ else
+ if test ! -f "$dir/$dlname"; then
+ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+ fi
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ ;;
+
+ *)
+ func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+ continue
+ ;;
+ esac
+
+ # Get the absolute pathname.
+ absdir=`cd "$dir" && pwd`
+ test -n "$absdir" && dir="$absdir"
+
+ # Now add the directory to shlibpath_var.
+ if eval "test -z \"\$$shlibpath_var\""; then
+ eval "$shlibpath_var=\"\$dir\""
+ else
+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+ fi
+ done
+
+ # This variable tells wrapper scripts just to set shlibpath_var
+ # rather than running their programs.
+ libtool_execute_magic="$magic"
+
+ # Check if any of the arguments is a wrapper script.
+ args=
+ for file
+ do
+ case $file in
+ -* | *.la | *.lo ) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if func_ltwrapper_script_p "$file"; then
+ func_source "$file"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ elif func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ func_source "$func_ltwrapper_scriptname_result"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ func_append_quoted args "$file"
+ done
+
+ if test "X$opt_dry_run" = Xfalse; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+ do
+ eval "if test \"\${save_$lt_var+set}\" = set; then
+ $lt_var=\$save_$lt_var; export $lt_var
+ else
+ $lt_unset $lt_var
+ fi"
+ done
+
+ # Now prepare to actually exec the command.
+ exec_cmd="\$cmd$args"
+ else
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+ echo "export $shlibpath_var"
+ fi
+ $ECHO "$cmd$args"
+ exit $EXIT_SUCCESS
+ fi
+}
+
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+ $opt_debug
+ libs=
+ libdirs=
+ admincmds=
+
+ for opt in "$nonopt" ${1+"$@"}
+ do
+ if test -d "$opt"; then
+ func_append libdirs " $opt"
+
+ elif test -f "$opt"; then
+ if func_lalib_unsafe_p "$opt"; then
+ func_append libs " $opt"
+ else
+ func_warning "\`$opt' is not a valid libtool archive"
+ fi
+
+ else
+ func_fatal_error "invalid argument \`$opt'"
+ fi
+ done
+
+ if test -n "$libs"; then
+ if test -n "$lt_sysroot"; then
+ sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+ sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+ else
+ sysroot_cmd=
+ fi
+
+ # Remove sysroot references
+ if $opt_dry_run; then
+ for lib in $libs; do
+ echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+ done
+ else
+ tmpdir=`func_mktempdir`
+ for lib in $libs; do
+ sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+ > $tmpdir/tmp-la
+ mv -f $tmpdir/tmp-la $lib
+ done
+ ${RM}r "$tmpdir"
+ fi
+ fi
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $opt_dry_run || eval "$cmds" || func_append admincmds "
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ $opt_silent && exit $EXIT_SUCCESS
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ echo "----------------------------------------------------------------------"
+ echo "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $ECHO " $libdir"
+ done
+ echo
+ echo "If you ever happen to want to link against installed libraries"
+ echo "in a given directory, LIBDIR, you must either use libtool, and"
+ echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+ echo "flag during linking and do at least one of the following:"
+ if test -n "$shlibpath_var"; then
+ echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
+ echo " during execution"
+ fi
+ if test -n "$runpath_var"; then
+ echo " - add LIBDIR to the \`$runpath_var' environment variable"
+ echo " during linking"
+ fi
+ if test -n "$hardcode_libdir_flag_spec"; then
+ libdir=LIBDIR
+ eval flag=\"$hardcode_libdir_flag_spec\"
+
+ $ECHO " - use the \`$flag' linker flag"
+ fi
+ if test -n "$admincmds"; then
+ $ECHO " - have your system administrator run these commands:$admincmds"
+ fi
+ if test -f /etc/ld.so.conf; then
+ echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+ fi
+ echo
+
+ echo "See any operating system documentation about shared libraries for"
+ case $host in
+ solaris2.[6789]|solaris2.1[0-9])
+ echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+ echo "pages."
+ ;;
+ *)
+ echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ ;;
+ esac
+ echo "----------------------------------------------------------------------"
+ fi
+ exit $EXIT_SUCCESS
+}
+
+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+ $opt_debug
+ # There may be an optional sh(1) argument at the beginning of
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+ case $nonopt in *shtool*) :;; *) false;; esac; then
+ # Aesthetically quote it.
+ func_quote_for_eval "$nonopt"
+ install_prog="$func_quote_for_eval_result "
+ arg=$1
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ func_quote_for_eval "$arg"
+ func_append install_prog "$func_quote_for_eval_result"
+ install_shared_prog=$install_prog
+ case " $install_prog " in
+ *[\\\ /]cp\ *) install_cp=: ;;
+ *) install_cp=false ;;
+ esac
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ no_mode=:
+ for arg
+ do
+ arg2=
+ if test -n "$dest"; then
+ func_append files " $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ if $install_cp; then :; else
+ prev=$arg
+ fi
+ ;;
+ -g | -m | -o)
+ prev=$arg
+ ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ if test "x$prev" = x-m && test -n "$install_override_mode"; then
+ arg2=$install_override_mode
+ no_mode=false
+ fi
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ func_quote_for_eval "$arg"
+ func_append install_prog " $func_quote_for_eval_result"
+ if test -n "$arg2"; then
+ func_quote_for_eval "$arg2"
+ fi
+ func_append install_shared_prog " $func_quote_for_eval_result"
+ done
+
+ test -z "$install_prog" && \
+ func_fatal_help "you must specify an install program"
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prev' option requires an argument"
+
+ if test -n "$install_override_mode" && $no_mode; then
+ if $install_cp; then :; else
+ func_quote_for_eval "$install_override_mode"
+ func_append install_shared_prog " -m $func_quote_for_eval_result"
+ fi
+ fi
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ func_fatal_help "no file or destination specified"
+ else
+ func_fatal_help "you must specify a destination"
+ fi
+ fi
+
+ # Strip any trailing slash from the destination.
+ func_stripname '' '/' "$dest"
+ dest=$func_stripname_result
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ func_dirname_and_basename "$dest" "" "."
+ destdir="$func_dirname_result"
+ destname="$func_basename_result"
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files; shift
+ test "$#" -gt 1 && \
+ func_fatal_help "\`$dest' is not a directory"
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ func_fatal_help "\`$destdir' must be an absolute directory name"
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ staticlibs=
+ future_libdirs=
+ current_libdirs=
+ for file in $files; do
+
+ # Do each installation.
+ case $file in
+ *.$libext)
+ # Do the static libraries later.
+ func_append staticlibs " $file"
+ ;;
+
+ *.la)
+ func_resolve_sysroot "$file"
+ file=$func_resolve_sysroot_result
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$file' is not a valid libtool archive"
+
+ library_names=
+ old_library=
+ relink_command=
+ func_source "$file"
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) func_append current_libdirs " $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) func_append future_libdirs " $libdir" ;;
+ esac
+ fi
+
+ func_dirname "$file" "/" ""
+ dir="$func_dirname_result"
+ func_append dir "$objdir"
+
+ if test -n "$relink_command"; then
+ # Determine the prefix the user has applied to our future dir.
+ inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
+
+ # Don't allow the user to place us outside of our expected
+ # location b/c this prevents finding dependent libraries that
+ # are installed to the same prefix.
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+ test "$inst_prefix_dir" = "$destdir" && \
+ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
+ relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+ else
+ relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+ fi
+
+ func_warning "relinking \`$file'"
+ func_show_eval "$relink_command" \
+ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names; shift
+ if test -n "$1"; then
+ realname="$1"
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
+ 'exit $?'
+ tstripme="$stripme"
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ case $realname in
+ *.dll.a)
+ tstripme=""
+ ;;
+ esac
+ ;;
+ esac
+ if test -n "$tstripme" && test -n "$striplib"; then
+ func_show_eval "$striplib $destdir/$realname" 'exit $?'
+ fi
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+ # Try `ln -sf' first, because the `ln' binary might depend on
+ # the symlink we replace! Solaris /bin/ln does not understand -f,
+ # so we also need to try rm && ln -s.
+ for linkname
+ do
+ test "$linkname" != "$realname" \
+ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ func_execute_cmds "$postinstall_cmds" 'exit $?'
+ fi
+
+ # Install the pseudo-library for information purposes.
+ func_basename "$file"
+ name="$func_basename_result"
+ instname="$dir/$name"i
+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && func_append staticlibs " $dir/$old_library"
+ ;;
+
+ *.lo)
+ # Install (i.e. copy) a libtool object.
+
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ func_basename "$file"
+ destfile="$func_basename_result"
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ func_lo2o "$destfile"
+ staticdest=$func_lo2o_result
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ func_fatal_help "cannot copy a libtool object to \`$destfile'"
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ test -n "$destfile" && \
+ func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ func_lo2o "$file"
+ staticobj=$func_lo2o_result
+ func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ *)
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ func_basename "$file"
+ destfile="$func_basename_result"
+ destfile="$destdir/$destfile"
+ fi
+
+ # If the file is missing, and there is a .exe on the end, strip it
+ # because it is most likely a libtool script we actually want to
+ # install
+ stripped_ext=""
+ case $file in
+ *.exe)
+ if test ! -f "$file"; then
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin* | *mingw*)
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ wrapper=$func_ltwrapper_scriptname_result
+ else
+ func_stripname '' '.exe' "$file"
+ wrapper=$func_stripname_result
+ fi
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if func_ltwrapper_script_p "$wrapper"; then
+ notinst_deplibs=
+ relink_command=
+
+ func_source "$wrapper"
+
+ # Check the variables that should have been set.
+ test -z "$generated_by_libtool_version" && \
+ func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ func_source "$lib"
+ fi
+ libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ func_warning "\`$lib' has not been installed in \`$libdir'"
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ func_source "$wrapper"
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ $opt_dry_run || {
+ if test "$finalize" = yes; then
+ tmpdir=`func_mktempdir`
+ func_basename "$file$stripped_ext"
+ file="$func_basename_result"
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $opt_silent || {
+ func_quote_for_expand "$relink_command"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ if eval "$relink_command"; then :
+ else
+ func_error "error: relink \`$file' with the above command before installing it"
+ $opt_dry_run || ${RM}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ func_warning "cannot relink \`$file'"
+ fi
+ }
+ else
+ # Install the binary that we compiled earlier.
+ file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
+ fi
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+ # one anyway
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+ *.exe:*.exe)
+ # this is ok
+ ;;
+ *.exe:*)
+ destfile=$destfile.exe
+ ;;
+ *:*.exe)
+ func_stripname '' '.exe' "$destfile"
+ destfile=$func_stripname_result
+ ;;
+ esac
+ ;;
+ esac
+ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+ $opt_dry_run || if test -n "$outputname"; then
+ ${RM}r "$tmpdir"
+ fi
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ func_basename "$file"
+ name="$func_basename_result"
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+ tool_oldlib=$func_to_tool_file_result
+
+ func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
+ fi
+
+ # Do each command in the postinstall commands.
+ func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+ done
+
+ test -n "$future_libdirs" && \
+ func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ $opt_dry_run && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+}
+
+test "$opt_mode" = install && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+ $opt_debug
+ my_outputname="$1"
+ my_originator="$2"
+ my_pic_p="${3-no}"
+ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+ my_dlsyms=
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ my_dlsyms="${my_outputname}S.c"
+ else
+ func_error "not configured to extract global symbols from dlpreopened files"
+ fi
+ fi
+
+ if test -n "$my_dlsyms"; then
+ case $my_dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${my_outputname}.nm"
+
+ func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+ # Parse the name list into a source file.
+ func_verbose "creating $output_objdir/$my_dlsyms"
+
+ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data. */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ func_verbose "generating symbol list for \`$output'"
+
+ $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ for progfile in $progfiles; do
+ func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+ func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+ $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $opt_dry_run || {
+ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $opt_dry_run || {
+ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$outputname.exp"
+ $opt_dry_run || {
+ $RM $export_symbols
+ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ else
+ $opt_dry_run || {
+ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ fi
+ fi
+
+ for dlprefile in $dlprefiles; do
+ func_verbose "extracting global C symbols from \`$dlprefile'"
+ func_basename "$dlprefile"
+ name="$func_basename_result"
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ # if an import library, we need to obtain dlname
+ if func_win32_import_lib_p "$dlprefile"; then
+ func_tr_sh "$dlprefile"
+ eval "curr_lafile=\$libfile_$func_tr_sh_result"
+ dlprefile_dlbasename=""
+ if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+ # Use subshell, to avoid clobbering current variable values
+ dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+ if test -n "$dlprefile_dlname" ; then
+ func_basename "$dlprefile_dlname"
+ dlprefile_dlbasename="$func_basename_result"
+ else
+ # no lafile. user explicitly requested -dlpreopen <import library>.
+ $sharedlib_from_linklib_cmd "$dlprefile"
+ dlprefile_dlbasename=$sharedlib_from_linklib_result
+ fi
+ fi
+ $opt_dry_run || {
+ if test -n "$dlprefile_dlbasename" ; then
+ eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+ else
+ func_warning "Could not compute DLL name from $name"
+ eval '$ECHO ": $name " >> "$nlist"'
+ fi
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+ $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+ }
+ else # not an import lib
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ fi
+ ;;
+ *)
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ ;;
+ esac
+ done
+
+ $opt_dry_run || {
+ # Make sure we have at least an empty file.
+ test -f "$nlist" || : > "$nlist"
+
+ if test -n "$exclude_expsyms"; then
+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+ $MV "$nlist"T "$nlist"
+ fi
+
+ # Try sorting and uniquifying the output.
+ if $GREP -v "^: " < "$nlist" |
+ if sort -k 3 </dev/null >/dev/null 2>&1; then
+ sort -k 3
+ else
+ sort +2
+ fi |
+ uniq > "$nlist"S; then
+ :
+ else
+ $GREP -v "^: " < "$nlist" > "$nlist"S
+ fi
+
+ if test -f "$nlist"S; then
+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+ else
+ echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+ fi
+
+ echo >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols. */
+typedef struct {
+ const char *name;
+ void *address;
+} lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+ { \"$my_originator\", (void *) 0 },"
+
+ case $need_lib_prefix in
+ no)
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ *)
+ eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ esac
+ echo >> "$output_objdir/$my_dlsyms" "\
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ } # !$opt_dry_run
+
+ pic_flag_for_symtable=
+ case "$compile_command " in
+ *" -static "*) ;;
+ *)
+ case $host in
+ # compiling the symbol table file with pic_flag works around
+ # a FreeBSD bug that causes programs to crash when -lm is
+ # linked before any other PIC object. But we must not use
+ # pic_flag when linking with -static. The problem exists in
+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+ *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+ *-*-hpux*)
+ pic_flag_for_symtable=" $pic_flag" ;;
+ *)
+ if test "X$my_pic_p" != Xno; then
+ pic_flag_for_symtable=" $pic_flag"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ symtab_cflags=
+ for arg in $LTCFLAGS; do
+ case $arg in
+ -pie | -fpie | -fPIE) ;;
+ *) func_append symtab_cflags " $arg" ;;
+ esac
+ done
+
+ # Now compile the dynamic symbol file.
+ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+ # Clean up the generated files.
+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+ # Transform the symbol file into the correct name.
+ symfileobj="$output_objdir/${my_outputname}S.$objext"
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ if test -f "$output_objdir/$my_outputname.def"; then
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ else
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ fi
+ ;;
+ *)
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ ;;
+ esac
+ ;;
+ *)
+ func_fatal_error "unknown suffix for \`$my_dlsyms'"
+ ;;
+ esac
+ else
+ # We keep going just in case the user didn't refer to
+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
+ # really was required.
+
+ # Nullify the symbol file.
+ compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
+ fi
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
+func_win32_libid ()
+{
+ $opt_debug
+ win32_libid_type="unknown"
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+ *ar\ archive\ import\ library*) # definitely import
+ win32_libid_type="x86 archive import"
+ ;;
+ *ar\ archive*) # could be an import, or static
+ # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+ $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+ $SED -n -e '
+ 1,100{
+ / I /{
+ s,.*,import,
+ p
+ q
+ }
+ }'`
+ case $win32_nmres in
+ import*) win32_libid_type="x86 archive import";;
+ *) win32_libid_type="x86 archive static";;
+ esac
+ fi
+ ;;
+ *DLL*)
+ win32_libid_type="x86 DLL"
+ ;;
+ *executable*) # but shell scripts are "executable" too...
+ case $win32_fileres in
+ *MS\ Windows\ PE\ Intel*)
+ win32_libid_type="x86 DLL"
+ ;;
+ esac
+ ;;
+ esac
+ $ECHO "$win32_libid_type"
+}
+
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+# $sharedlib_from_linklib_cmd
+# Result is available in the variable
+# $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+ $opt_debug
+ sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+ $opt_debug
+ match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+ $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+ $SED '/^Contents of section '"$match_literal"':/{
+ # Place marker at beginning of archive member dllname section
+ s/.*/====MARK====/
+ p
+ d
+ }
+ # These lines can sometimes be longer than 43 characters, but
+ # are always uninteresting
+ /:[ ]*file format pe[i]\{,1\}-/d
+ /^In archive [^:]*:/d
+ # Ensure marker is printed
+ /^====MARK====/p
+ # Remove all lines with less than 43 characters
+ /^.\{43\}/!d
+ # From remaining lines, remove first 43 characters
+ s/^.\{43\}//' |
+ $SED -n '
+ # Join marker and all lines until next marker into a single line
+ /^====MARK====/ b para
+ H
+ $ b para
+ b
+ :para
+ x
+ s/\n//g
+ # Remove the marker
+ s/^====MARK====//
+ # Remove trailing dots and whitespace
+ s/[\. \t]*$//
+ # Print
+ /./p' |
+ # we now have a list, one entry per line, of the stringified
+ # contents of the appropriate section of all members of the
+ # archive which possess that section. Heuristic: eliminate
+ # all those which have a first or second character that is
+ # a '.' (that is, objdump's representation of an unprintable
+ # character.) This should work for all archives with less than
+ # 0x302f exports -- but will fail for DLLs whose name actually
+ # begins with a literal '.' or a single character followed by
+ # a '.'.
+ #
+ # Of those that remain, print the first one.
+ $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+ $opt_debug
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+ test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+ $opt_debug
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+ test -n "$func_cygming_ms_implib_tmp"
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+# $sharedlib_from_linklib_cmd
+# Result is available in the variable
+# $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+ $opt_debug
+ if func_cygming_gnu_implib_p "$1" ; then
+ # binutils import library
+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+ elif func_cygming_ms_implib_p "$1" ; then
+ # ms-generated import library
+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+ else
+ # unknown
+ sharedlib_from_linklib_result=""
+ fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ $opt_debug
+ f_ex_an_ar_dir="$1"; shift
+ f_ex_an_ar_oldlib="$1"
+ if test "$lock_old_archive_extraction" = yes; then
+ lockfile=$f_ex_an_ar_oldlib.lock
+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+ func_echo "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ fi
+ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+ 'stat=$?; rm -f "$lockfile"; exit $stat'
+ if test "$lock_old_archive_extraction" = yes; then
+ $opt_dry_run || rm -f "$lockfile"
+ fi
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+ fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ $opt_debug
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+
+ for my_xlib in $my_oldlibs; do
+ # Extract the objects.
+ case $my_xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+ *) my_xabs=`pwd`"/$my_xlib" ;;
+ esac
+ func_basename "$my_xlib"
+ my_xlib="$func_basename_result"
+ my_xlib_u=$my_xlib
+ while :; do
+ case " $extracted_archives " in
+ *" $my_xlib_u "*)
+ func_arith $extracted_serial + 1
+ extracted_serial=$func_arith_result
+ my_xlib_u=lt$extracted_serial-$my_xlib ;;
+ *) break ;;
+ esac
+ done
+ extracted_archives="$extracted_archives $my_xlib_u"
+ my_xdir="$my_gentop/$my_xlib_u"
+
+ func_mkdir_p "$my_xdir"
+
+ case $host in
+ *-darwin*)
+ func_verbose "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ $opt_dry_run || {
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`basename "$darwin_archive"`
+ darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+ cd "$darwin_curdir"
+ $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+ done # $darwin_arches
+ ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+ $LIPO -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ $RM -rf unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd $darwin_orig_dir
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ } # !$opt_dry_run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+ done
+
+ func_extract_archives_result="$my_oldobjs"
+}
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable. Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take. If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory. This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+ func_emit_wrapper_arg1=${1-no}
+
+ $ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+ # install mode needs the following variables:
+ generated_by_libtool_version='$macro_version'
+ notinst_deplibs='$notinst_deplibs'
+else
+ # When we are sourced in execute mode, \$file and \$ECHO are already set.
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ file=\"\$0\""
+
+ qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+ $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+ ECHO=\"$qECHO\"
+ fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ which is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options which match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+ lt_script_arg0=\$0
+ shift
+ for lt_opt
+ do
+ case \"\$lt_opt\" in
+ --lt-debug) lt_option_debug=1 ;;
+ --lt-dump-script)
+ lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+ test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+ lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+ cat \"\$lt_dump_D/\$lt_dump_F\"
+ exit 0
+ ;;
+ --lt-*)
+ \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+ exit 1
+ ;;
+ esac
+ done
+
+ # Print the debug banner immediately:
+ if test -n \"\$lt_option_debug\"; then
+ echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+ fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+ lt_dump_args_N=1;
+ for lt_arg
+ do
+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+ lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+ done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2* | *-cegcc*)
+ $ECHO "\
+ if test -n \"\$lt_option_debug\"; then
+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+ func_lt_dump_args \${1+\"\$@\"} 1>&2
+ fi
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $ECHO "\
+ if test -n \"\$lt_option_debug\"; then
+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+ func_lt_dump_args \${1+\"\$@\"} 1>&2
+ fi
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $ECHO "\
+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+ exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+ case \" \$* \" in
+ *\\ --lt-*)
+ for lt_wr_arg
+ do
+ case \$lt_wr_arg in
+ --lt-*) ;;
+ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+ esac
+ shift
+ done ;;
+ esac
+ func_exec_program_core \${1+\"\$@\"}
+}
+
+ # Parse options
+ func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
+ test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+ # Follow symbolic links until we get to the real thisdir.
+ file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
+ while test -n \"\$file\"; do
+ destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
+
+ # If there was a directory component, then change thisdir.
+ if test \"x\$destdir\" != \"x\$file\"; then
+ case \"\$destdir\" in
+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+ *) thisdir=\"\$thisdir/\$destdir\" ;;
+ esac
+ fi
+
+ file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
+ done
+
+ # Usually 'no', except on cygwin/mingw when embedded into
+ # the cwrapper.
+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
+ if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+ # special case for '.'
+ if test \"\$thisdir\" = \".\"; then
+ thisdir=\`pwd\`
+ fi
+ # remove .libs from thisdir
+ case \"\$thisdir\" in
+ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
+ $objdir ) thisdir=. ;;
+ esac
+ fi
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $ECHO "\
+ program=lt-'$outputname'$exeext
+ progdir=\"\$thisdir/$objdir\"
+
+ if test ! -f \"\$progdir/\$program\" ||
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+ file=\"\$\$-\$program\"
+
+ if test ! -d \"\$progdir\"; then
+ $MKDIR \"\$progdir\"
+ else
+ $RM \"\$progdir/\$file\"
+ fi"
+
+ $ECHO "\
+
+ # relink executable if necessary
+ if test -n \"\$relink_command\"; then
+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+ else
+ $ECHO \"\$relink_command_output\" >&2
+ $RM \"\$progdir/\$file\"
+ exit 1
+ fi
+ fi
+
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $RM \"\$progdir/\$program\";
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $RM \"\$progdir/\$file\"
+ fi"
+ else
+ $ECHO "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $ECHO "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # fixup the dll searchpath if we need to.
+ #
+ # Fix the DLL searchpath if we need to. Do this before prepending
+ # to shlibpath, because on Windows, both are PATH and uninstalled
+ # libraries must come first.
+ if test -n "$dllsearchpath"; then
+ $ECHO "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $ECHO "\
+ # Add our own library path to $shlibpath_var
+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+ # Some systems cannot cope with colon-terminated $shlibpath_var
+ # The second colon is a workaround for a bug in BeOS R4 sed
+ $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ $ECHO "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+ func_exec_program \${1+\"\$@\"}
+ fi
+ else
+ # The program doesn't exist.
+ \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+ \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+ \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+ exit 1
+ fi
+fi\
+"
+}
+
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+ cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+*/
+EOF
+ cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+# include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+/* declarations of non-ANSI functions */
+#if defined(__MINGW32__)
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined(__CYGWIN__)
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined (other platforms) ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined(_MSC_VER)
+# define setmode _setmode
+# define stat _stat
+# define chmod _chmod
+# define getcwd _getcwd
+# define putenv _putenv
+# define S_IXUSR _S_IEXEC
+# ifndef _INTPTR_T_DEFINED
+# define _INTPTR_T_DEFINED
+# define intptr_t int
+# endif
+#elif defined(__MINGW32__)
+# define setmode _setmode
+# define stat _stat
+# define chmod _chmod
+# define getcwd _getcwd
+# define putenv _putenv
+#elif defined(__CYGWIN__)
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined (other platforms) ... */
+#endif
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+/* path handling portability macros */
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+# define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+# define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#if defined(LT_DEBUGWRAPPER)
+static int lt_debug = 1;
+#else
+static int lt_debug = 0;
+#endif
+
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
+EOF
+
+ cat <<EOF
+volatile const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ func_to_host_path "$temp_rpath"
+ cat <<EOF
+const char * LIB_PATH_VALUE = "$func_to_host_path_result";
+EOF
+ else
+ cat <<"EOF"
+const char * LIB_PATH_VALUE = "";
+EOF
+ fi
+
+ if test -n "$dllsearchpath"; then
+ func_to_host_path "$dllsearchpath:"
+ cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE = "$func_to_host_path_result";
+EOF
+ else
+ cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE = "";
+EOF
+ fi
+
+ if test "$fast_install" = yes; then
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+ else
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+ fi
+
+
+ cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int newargc;
+ char *tmp_pathspec;
+ char *actual_cwrapper_path;
+ char *actual_cwrapper_name;
+ char *target_name;
+ char *lt_argv_zero;
+ intptr_t rval = 127;
+
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ newargz = XMALLOC (char *, argc + 1);
+
+ /* very simple arg parsing; don't want to rely on getopt
+ * also, copy all non cwrapper options to newargz, except
+ * argz[0], which is handled differently
+ */
+ newargc=0;
+ for (i = 1; i < argc; i++)
+ {
+ if (strcmp (argv[i], dumpscript_opt) == 0)
+ {
+EOF
+ case "$host" in
+ *mingw* | *cygwin* )
+ # make stdout use "unix" line endings
+ echo " setmode(1,_O_BINARY);"
+ ;;
+ esac
+
+ cat <<"EOF"
+ lt_dump_script (stdout);
+ return 0;
+ }
+ if (strcmp (argv[i], debug_opt) == 0)
+ {
+ lt_debug = 1;
+ continue;
+ }
+ if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+ {
+ /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+ namespace, but it is not one of the ones we know about and
+ have already dealt with, above (inluding dump-script), then
+ report an error. Otherwise, targets might begin to believe
+ they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+ namespace. The first time any user complains about this, we'll
+ need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+ or a configure.ac-settable value.
+ */
+ lt_fatal (__FILE__, __LINE__,
+ "unrecognized %s option: '%s'",
+ ltwrapper_option_prefix, argv[i]);
+ }
+ /* otherwise ... */
+ newargz[++newargc] = xstrdup (argv[i]);
+ }
+ newargz[++newargc] = NULL;
+
+EOF
+ cat <<EOF
+ /* The GNU banner must be the first non-error debug message */
+ lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+EOF
+ cat <<"EOF"
+ lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+ lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+ tmp_pathspec = find_executable (argv[0]);
+ if (tmp_pathspec == NULL)
+ lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) found exe (before symlink chase) at: %s\n",
+ tmp_pathspec);
+
+ actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) found exe (after symlink chase) at: %s\n",
+ actual_cwrapper_path);
+ XFREE (tmp_pathspec);
+
+ actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+ strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+ /* wrapper name transforms */
+ strendzap (actual_cwrapper_name, ".exe");
+ tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+ XFREE (actual_cwrapper_name);
+ actual_cwrapper_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ /* target_name transforms -- use actual target program name; might have lt- prefix */
+ target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+ strendzap (target_name, ".exe");
+ tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+ XFREE (target_name);
+ target_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) libtool target name: %s\n",
+ target_name);
+EOF
+
+ cat <<EOF
+ newargz[0] =
+ XMALLOC (char, (strlen (actual_cwrapper_path) +
+ strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+ strcpy (newargz[0], actual_cwrapper_path);
+ strcat (newargz[0], "$objdir");
+ strcat (newargz[0], "/");
+EOF
+
+ cat <<"EOF"
+ /* stop here, and copy so we don't have to do this twice */
+ tmp_pathspec = xstrdup (newargz[0]);
+
+ /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+ strcat (newargz[0], actual_cwrapper_name);
+
+ /* DO want the lt- prefix here if it exists, so use target_name */
+ lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+ XFREE (tmp_pathspec);
+ tmp_pathspec = NULL;
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ {
+ char* p;
+ while ((p = strchr (newargz[0], '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ }
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+ XFREE (target_name);
+ XFREE (actual_cwrapper_path);
+ XFREE (actual_cwrapper_name);
+
+ lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+ lt_setenv ("DUALCASE", "1"); /* for MSK sh */
+ /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
+ be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+ because on Windows, both *_VARNAMEs are PATH but uninstalled
+ libraries must come first. */
+ lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+ lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+ lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+ nonnull (lt_argv_zero));
+ for (i = 0; i < newargc; i++)
+ {
+ lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+ i, nonnull (newargz[i]));
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ /* execv doesn't actually work on mingw as expected on unix */
+ newargz = prepare_spawn (newargz);
+ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+ if (rval == -1)
+ {
+ /* failed to start process */
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) failed to launch target \"%s\": %s\n",
+ lt_argv_zero, nonnull (strerror (errno)));
+ return 127;
+ }
+ return rval;
+EOF
+ ;;
+ *)
+ cat <<"EOF"
+ execv (lt_argv_zero, newargz);
+ return rval; /* =127, but avoids unused variable warning */
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+ void *p = (void *) malloc (num);
+ if (!p)
+ lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+ string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+ const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return base;
+}
+
+int
+check_executable (const char *path)
+{
+ struct stat st;
+
+ lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+ nonempty (path));
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0)
+ && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+ return 1;
+ else
+ return 0;
+}
+
+int
+make_executable (const char *path)
+{
+ int rval = 0;
+ struct stat st;
+
+ lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+ nonempty (path));
+ if ((!path) || (!*path))
+ return 0;
+
+ if (stat (path, &st) >= 0)
+ {
+ rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+ }
+ return rval;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise
+ Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+ int has_slash = 0;
+ const char *p;
+ const char *p_next;
+ /* static buffer for getcwd */
+ char tmp[LT_PATHMAX + 1];
+ int tmp_len;
+ char *concat_name;
+
+ lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+ nonempty (wrapper));
+
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
+
+ /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+ else
+ {
+#endif
+ if (IS_DIR_SEPARATOR (wrapper[0]))
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ }
+#endif
+
+ for (p = wrapper; *p; p++)
+ if (*p == '/')
+ {
+ has_slash = 1;
+ break;
+ }
+ if (!has_slash)
+ {
+ /* no slashes; search PATH */
+ const char *path = getenv ("PATH");
+ if (path != NULL)
+ {
+ for (p = path; *p; p = p_next)
+ {
+ const char *q;
+ size_t p_len;
+ for (q = p; *q; q++)
+ if (IS_PATH_SEPARATOR (*q))
+ break;
+ p_len = q - p;
+ p_next = (*q == '\0' ? q : q + 1);
+ if (p_len == 0)
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+ nonnull (strerror (errno)));
+ tmp_len = strlen (tmp);
+ concat_name =
+ XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+ }
+ else
+ {
+ concat_name =
+ XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, p, p_len);
+ concat_name[p_len] = '/';
+ strcpy (concat_name + p_len + 1, wrapper);
+ }
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+ }
+ /* not found in PATH; assume curdir */
+ }
+ /* Relative path | not found in path: prepend cwd */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+ nonnull (strerror (errno)));
+ tmp_len = strlen (tmp);
+ concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+ return xstrdup (pathspec);
+#else
+ char buf[LT_PATHMAX];
+ struct stat s;
+ char *tmp_pathspec = xstrdup (pathspec);
+ char *p;
+ int has_symlinks = 0;
+ while (strlen (tmp_pathspec) && !has_symlinks)
+ {
+ lt_debugprintf (__FILE__, __LINE__,
+ "checking path component for symlinks: %s\n",
+ tmp_pathspec);
+ if (lstat (tmp_pathspec, &s) == 0)
+ {
+ if (S_ISLNK (s.st_mode) != 0)
+ {
+ has_symlinks = 1;
+ break;
+ }
+
+ /* search backwards for last DIR_SEPARATOR */
+ p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+ while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ p--;
+ if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ {
+ /* no more DIR_SEPARATORS left */
+ break;
+ }
+ *p = '\0';
+ }
+ else
+ {
+ lt_fatal (__FILE__, __LINE__,
+ "error accessing file \"%s\": %s",
+ tmp_pathspec, nonnull (strerror (errno)));
+ }
+ }
+ XFREE (tmp_pathspec);
+
+ if (!has_symlinks)
+ {
+ return xstrdup (pathspec);
+ }
+
+ tmp_pathspec = realpath (pathspec, buf);
+ if (tmp_pathspec == 0)
+ {
+ lt_fatal (__FILE__, __LINE__,
+ "could not follow symlinks for %s", pathspec);
+ }
+ return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+ size_t len, patlen;
+
+ assert (str != NULL);
+ assert (pat != NULL);
+
+ len = strlen (str);
+ patlen = strlen (pat);
+
+ if (patlen <= len)
+ {
+ str += len - patlen;
+ if (strcmp (str, pat) == 0)
+ *str = '\0';
+ }
+ return str;
+}
+
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+ va_list args;
+ if (lt_debug)
+ {
+ (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+ va_start (args, fmt);
+ (void) vfprintf (stderr, fmt, args);
+ va_end (args);
+ }
+}
+
+static void
+lt_error_core (int exit_status, const char *file,
+ int line, const char *mode,
+ const char *message, va_list ap)
+{
+ fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *file, int line, const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+ va_end (ap);
+}
+
+static const char *
+nonnull (const char *s)
+{
+ return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+ return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+ lt_debugprintf (__FILE__, __LINE__,
+ "(lt_setenv) setting '%s' to '%s'\n",
+ nonnull (name), nonnull (value));
+ {
+#ifdef HAVE_SETENV
+ /* always make a copy, for consistency with !HAVE_SETENV */
+ char *str = xstrdup (value);
+ setenv (name, str, 1);
+#else
+ int len = strlen (name) + 1 + strlen (value) + 1;
+ char *str = XMALLOC (char, len);
+ sprintf (str, "%s=%s", name, value);
+ if (putenv (str) != EXIT_SUCCESS)
+ {
+ XFREE (str);
+ }
+#endif
+ }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+ char *new_value;
+ if (orig_value && *orig_value)
+ {
+ int orig_value_len = strlen (orig_value);
+ int add_len = strlen (add);
+ new_value = XMALLOC (char, add_len + orig_value_len + 1);
+ if (to_end)
+ {
+ strcpy (new_value, orig_value);
+ strcpy (new_value + orig_value_len, add);
+ }
+ else
+ {
+ strcpy (new_value, add);
+ strcpy (new_value + add_len, orig_value);
+ }
+ }
+ else
+ {
+ new_value = xstrdup (add);
+ }
+ return new_value;
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+ lt_debugprintf (__FILE__, __LINE__,
+ "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+ nonnull (name), nonnull (value));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ /* some systems can't cope with a ':'-terminated path #' */
+ int len = strlen (new_value);
+ while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+ {
+ new_value[len-1] = '\0';
+ }
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+ lt_debugprintf (__FILE__, __LINE__,
+ "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+ nonnull (name), nonnull (value));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+EOF
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+ Note that spawn() does not by itself call the command interpreter
+ (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+ ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+ GetVersionEx(&v);
+ v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+ }) ? "cmd.exe" : "command.com").
+ Instead it simply concatenates the arguments, separated by ' ', and calls
+ CreateProcess(). We must quote the arguments since Win32 CreateProcess()
+ interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+ special way:
+ - Space and tab are interpreted as delimiters. They are not treated as
+ delimiters if they are surrounded by double quotes: "...".
+ - Unescaped double quotes are removed from the input. Their only effect is
+ that within double quotes, space and tab are treated like normal
+ characters.
+ - Backslashes not followed by double quotes are not special.
+ - But 2*n+1 backslashes followed by a double quote become
+ n backslashes followed by a double quote (n >= 0):
+ \" -> "
+ \\\" -> \"
+ \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+ size_t argc;
+ char **new_argv;
+ size_t i;
+
+ /* Count number of arguments. */
+ for (argc = 0; argv[argc] != NULL; argc++)
+ ;
+
+ /* Allocate new argument vector. */
+ new_argv = XMALLOC (char *, argc + 1);
+
+ /* Put quoted arguments into the new argument vector. */
+ for (i = 0; i < argc; i++)
+ {
+ const char *string = argv[i];
+
+ if (string[0] == '\0')
+ new_argv[i] = xstrdup ("\"\"");
+ else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+ {
+ int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+ size_t length;
+ unsigned int backslashes;
+ const char *s;
+ char *quoted_string;
+ char *p;
+
+ length = 0;
+ backslashes = 0;
+ if (quote_around)
+ length++;
+ for (s = string; *s != '\0'; s++)
+ {
+ char c = *s;
+ if (c == '"')
+ length += backslashes + 1;
+ length++;
+ if (c == '\\')
+ backslashes++;
+ else
+ backslashes = 0;
+ }
+ if (quote_around)
+ length += backslashes + 1;
+
+ quoted_string = XMALLOC (char, length + 1);
+
+ p = quoted_string;
+ backslashes = 0;
+ if (quote_around)
+ *p++ = '"';
+ for (s = string; *s != '\0'; s++)
+ {
+ char c = *s;
+ if (c == '"')
+ {
+ unsigned int j;
+ for (j = backslashes + 1; j > 0; j--)
+ *p++ = '\\';
+ }
+ *p++ = c;
+ if (c == '\\')
+ backslashes++;
+ else
+ backslashes = 0;
+ }
+ if (quote_around)
+ {
+ unsigned int j;
+ for (j = backslashes; j > 0; j--)
+ *p++ = '\\';
+ *p++ = '"';
+ }
+ *p = '\0';
+
+ new_argv[i] = quoted_string;
+ }
+ else
+ new_argv[i] = (char *) string;
+ }
+ new_argv[argc] = NULL;
+
+ return new_argv;
+}
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+ func_emit_wrapper yes |
+ $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/ fputs ("\1", f);/p
+g
+D'
+ cat <<"EOF"
+}
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+ $opt_debug
+ case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+ *import*) : ;;
+ *) false ;;
+ esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+ $opt_debug
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # which system we are compiling for in order to pass an extra
+ # flag for every libtool invocation.
+ # allow_undefined=no
+
+ # FIXME: Unfortunately, there are problems with the above when trying
+ # to make a dll which has undefined symbols, in which case not
+ # even a static library is built. For now, we need to specify
+ # -no-undefined on the libtool link line when we can be certain
+ # that all symbols are satisfied, otherwise we get a static library.
+ allow_undefined=yes
+ ;;
+ *)
+ allow_undefined=yes
+ ;;
+ esac
+ libtool_args=$nonopt
+ base_compile="$nonopt $@"
+ compile_command=$nonopt
+ finalize_command=$nonopt
+
+ compile_rpath=
+ finalize_rpath=
+ compile_shlibpath=
+ finalize_shlibpath=
+ convenience=
+ old_convenience=
+ deplibs=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
+ inst_prefix_dir=
+ new_inherited_linker_flags=
+
+ avoid_version=no
+ bindir=
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+ weak_libs=
+ single_module="${wl}-single_module"
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ break
+ ;;
+ -all-static | -static | -static-libtool-libs)
+ case $arg in
+ -all-static)
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ func_warning "complete static linking is impossible in this configuration"
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ -static)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ ;;
+ -static-libtool-libs)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ esac
+ build_libtool_libs=no
+ build_old_libs=yes
+ break
+ ;;
+ esac
+ done
+
+ # See if our shared archives depend on static archives.
+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+ # Go through the arguments, transforming them on the way.
+ while test "$#" -gt 0; do
+ arg="$1"
+ shift
+ func_quote_for_eval "$arg"
+ qarg=$func_quote_for_eval_unquoted_result
+ func_append libtool_args " $func_quote_for_eval_result"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ func_append compile_command " @OUTPUT@"
+ func_append finalize_command " @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ bindir)
+ bindir="$arg"
+ prev=
+ continue
+ ;;
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ func_append compile_command " @SYMFILE@"
+ func_append finalize_command " @SYMFILE@"
+ preload=yes
+ fi
+ case $arg in
+ *.la | *.lo) ;; # We handle these cases below.
+ force)
+ if test "$dlself" = no; then
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ self)
+ if test "$prev" = dlprefiles; then
+ dlself=yes
+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+ dlself=yes
+ else
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+ func_append dlfiles " $arg"
+ else
+ func_append dlprefiles " $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ test -f "$arg" \
+ || func_fatal_error "symbol file \`$arg' does not exist"
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ framework)
+ case $host in
+ *-*-darwin*)
+ case "$deplibs " in
+ *" $qarg.ltframework "*) ;;
+ *) func_append deplibs " $qarg.ltframework" # this is fixed later
+ ;;
+ esac
+ ;;
+ esac
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat "$save_arg"`
+ do
+# func_append moreargs " $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ func_append dlfiles " $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ func_append dlprefiles " $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append libobjs " $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
+ fi
+ done
+ else
+ func_fatal_error "link input file \`$arg' does not exist"
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) func_append rpath " $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) func_append xrpath " $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ weak)
+ func_append weak_libs " $arg"
+ prev=
+ continue
+ ;;
+ xcclinker)
+ func_append linker_flags " $qarg"
+ func_append compiler_flags " $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xcompiler)
+ func_append compiler_flags " $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xlinker)
+ func_append linker_flags " $qarg"
+ func_append compiler_flags " $wl$qarg"
+ prev=
+ func_append compile_command " $wl$qarg"
+ func_append finalize_command " $wl$qarg"
+ continue
+ ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+ continue
+ ;;
+ esac
+ fi # test -n "$prev"
+
+ prevarg="$arg"
+
+ case $arg in
+ -all-static)
+ if test -n "$link_static_flag"; then
+ # See comment for -static flag below, for more details.
+ func_append compile_command " $link_static_flag"
+ func_append finalize_command " $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ continue
+ ;;
+
+ -bindir)
+ prev=bindir
+ continue
+ ;;
+
+ -dlopen)
+ prev=dlfiles
+ continue
+ ;;
+
+ -dlpreopen)
+ prev=dlprefiles
+ continue
+ ;;
+
+ -export-dynamic)
+ export_dynamic=yes
+ continue
+ ;;
+
+ -export-symbols | -export-symbols-regex)
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ func_fatal_error "more than one -exported-symbols argument is not allowed"
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework)
+ prev=framework
+ continue
+ ;;
+
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+ ;;
+
+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+ # so, if we see these flags be careful not to treat them like -L
+ -L[A-Z][A-Z]*:*)
+ case $with_gcc/$host in
+ no/*-*-irix* | /*-*-irix*)
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ func_stripname "-L" '' "$arg"
+ if test -z "$func_stripname_result"; then
+ if test "$#" -gt 0; then
+ func_fatal_error "require no space between \`-L' and \`$1'"
+ else
+ func_fatal_error "need path for \`-L' option"
+ fi
+ fi
+ func_resolve_sysroot "$func_stripname_result"
+ dir=$func_resolve_sysroot_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ test -z "$absdir" && \
+ func_fatal_error "cannot determine absolute directory name of \`$dir'"
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "* | *" $arg "*)
+ # Will only happen for absolute or sysroot arguments
+ ;;
+ *)
+ # Preserve sysroot, but never include relative directories
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+ *) func_append deplibs " -L$dir" ;;
+ esac
+ func_append lib_search_path " $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ ::) dllsearchpath=$dir;;
+ *) func_append dllsearchpath ":$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) func_append dllsearchpath ":$testbindir";;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+ *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+ func_append deplibs " System.ltframework"
+ continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ test "X$arg" = "X-lc" && continue
+ ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+ esac
+ fi
+ func_append deplibs " $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ # Darwin uses the -arch flag to determine output architecture.
+ -model|-arch|-isysroot|--sysroot)
+ func_append compiler_flags " $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+ func_append compiler_flags " $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ case "$new_inherited_linker_flags " in
+ *" $arg "*) ;;
+ * ) func_append new_inherited_linker_flags " $arg" ;;
+ esac
+ continue
+ ;;
+
+ -multi_module)
+ single_module="${wl}-multi_module"
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # and Darwin in order for the loader to find any dlls it needs.
+ func_warning "\`-no-install' is ignored for $host"
+ func_warning "assuming \`-no-fast-install' instead"
+ fast_install=no
+ ;;
+ *) no_install=yes ;;
+ esac
+ continue
+ ;;
+
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
+ -objectlist)
+ prev=objectlist
+ continue
+ ;;
+
+ -o) prev=output ;;
+
+ -precious-files-regex)
+ prev=precious_regex
+ continue
+ ;;
+
+ -release)
+ prev=release
+ continue
+ ;;
+
+ -rpath)
+ prev=rpath
+ continue
+ ;;
+
+ -R)
+ prev=xrpath
+ continue
+ ;;
+
+ -R*)
+ func_stripname '-R' '' "$arg"
+ dir=$func_stripname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ =*)
+ func_stripname '=' '' "$dir"
+ dir=$lt_sysroot$func_stripname_result
+ ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) func_append xrpath " $dir" ;;
+ esac
+ continue
+ ;;
+
+ -shared)
+ # The effects of -shared are defined in a previous loop.
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -static | -static-libtool-libs)
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+ # would be equivalent was wrong. It would break on at least
+ # Digital Unix and AIX.
+ continue
+ ;;
+
+ -thread-safe)
+ thread_safe=yes
+ continue
+ ;;
+
+ -version-info)
+ prev=vinfo
+ continue
+ ;;
+
+ -version-number)
+ prev=vinfo
+ vinfo_number=yes
+ continue
+ ;;
+
+ -weak)
+ prev=weak
+ continue
+ ;;
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ func_append arg " $func_quote_for_eval_result"
+ func_append compiler_flags " $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Wl,*)
+ func_stripname '-Wl,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ func_append arg " $wl$func_quote_for_eval_result"
+ func_append compiler_flags " $wl$func_quote_for_eval_result"
+ func_append linker_flags " $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # -msg_* for osf cc
+ -msg_*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ # Flags to be passed through unchanged, with rationale:
+ # -64, -mips[0-9] enable 64-bit mode for the SGI compiler
+ # -r[0-9][0-9]* specify processor for the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+ # +DA*, +DD* enable 64-bit mode for the HP compiler
+ # -q* compiler args for the IBM compiler
+ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+ # -F/path path to uninstalled frameworks, gcc on darwin
+ # -p, -pg, --coverage, -fprofile-* profiling flags for GCC
+ # @file GCC response files
+ # -tp=* Portland pgcc target processor selection
+ # --sysroot=* for sysroot support
+ # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+ -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ func_append compiler_flags " $arg"
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ *.$objext)
+ # A standard object.
+ func_append objs " $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ func_append dlfiles " $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ func_append dlprefiles " $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append libobjs " $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ func_append deplibs " $arg"
+ func_append old_deplibs " $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ func_resolve_sysroot "$arg"
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ func_append dlfiles " $func_resolve_sysroot_result"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ func_append dlprefiles " $func_resolve_sysroot_result"
+ prev=
+ else
+ func_append deplibs " $func_resolve_sysroot_result"
+ fi
+ continue
+ ;;
+
+ # Some other compiler argument.
+ *)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+ done # argument parsing loop
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prevarg' option requires an argument"
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ func_basename "$output"
+ outputname="$func_basename_result"
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
+ else
+ shlib_search_path=
+ fi
+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+ func_dirname "$output" "/" ""
+ output_objdir="$func_dirname_result$objdir"
+ func_to_tool_file "$output_objdir/"
+ tool_output_objdir=$func_to_tool_file_result
+ # Create the object directory.
+ func_mkdir_p "$output_objdir"
+
+ # Determine the type of output
+ case $output in
+ "")
+ func_fatal_help "you must specify an output file"
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ specialdeplibs=
+
+ libs=
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+ if $opt_preserve_dup_deps ; then
+ case "$libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append libs " $deplib"
+ done
+
+ if test "$linkmode" = lib; then
+ libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+ # Compute libraries that are listed more than once in $predeps
+ # $postdeps and mark them as special (i.e., whose duplicates are
+ # not to be eliminated).
+ pre_post_deps=
+ if $opt_duplicate_compiler_generated_deps; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+ esac
+ func_append pre_post_deps " $pre_post_dep"
+ done
+ fi
+ pre_post_deps=
+ fi
+
+ deplibs=
+ newdependency_libs=
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
+ notinst_path= # paths that contain not-installed libtool libraries
+
+ case $linkmode in
+ lib)
+ passes="conv dlpreopen link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+ ;;
+ esac
+ done
+ ;;
+ prog)
+ compile_deplibs=
+ finalize_deplibs=
+ alldeplibs=no
+ newdlfiles=
+ newdlprefiles=
+ passes="conv scan dlopen dlpreopen link"
+ ;;
+ *) passes="conv"
+ ;;
+ esac
+
+ for pass in $passes; do
+ # The preopen pass in lib mode reverses $deplibs; put it back here
+ # so that -L comes before libs that need it for instance...
+ if test "$linkmode,$pass" = "lib,link"; then
+ ## FIXME: Find the place where the list is rebuilt in the wrong
+ ## order, and fix it there properly
+ tmp_deplibs=
+ for deplib in $deplibs; do
+ tmp_deplibs="$deplib $tmp_deplibs"
+ done
+ deplibs="$tmp_deplibs"
+ fi
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan"; then
+ libs="$deplibs"
+ deplibs=
+ fi
+ if test "$linkmode" = prog; then
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+ link)
+ libs="$deplibs %DEPLIBS%"
+ test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+ ;;
+ esac
+ fi
+ if test "$linkmode,$pass" = "lib,dlpreopen"; then
+ # Collect and forward deplibs of preopened libtool libs
+ for lib in $dlprefiles; do
+ # Ignore non-libtool-libs
+ dependency_libs=
+ func_resolve_sysroot "$lib"
+ case $lib in
+ *.la) func_source "$func_resolve_sysroot_result" ;;
+ esac
+
+ # Collect preopened libtool deplibs, except any this library
+ # has declared as weak libs
+ for deplib in $dependency_libs; do
+ func_basename "$deplib"
+ deplib_base=$func_basename_result
+ case " $weak_libs " in
+ *" $deplib_base "*) ;;
+ *) func_append deplibs " $deplib" ;;
+ esac
+ done
+ done
+ libs="$dlprefiles"
+ fi
+ if test "$pass" = dlopen; then
+ # Collect dlpreopened libraries
+ save_deplibs="$deplibs"
+ deplibs=
+ fi
+
+ for deplib in $libs; do
+ lib=
+ found=no
+ case $deplib in
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ func_append compiler_flags " $deplib"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) func_append new_inherited_linker_flags " $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ func_warning "\`-l' is ignored for archives/objects"
+ continue
+ fi
+ func_stripname '-l' '' "$deplib"
+ name=$func_stripname_result
+ if test "$linkmode" = lib; then
+ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+ else
+ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+ fi
+ for searchdir in $searchdirs; do
+ for search_ext in .la $std_shrext .so .a; do
+ # Search the libtool library
+ lib="$searchdir/lib${name}${search_ext}"
+ if test -f "$lib"; then
+ if test "$search_ext" = ".la"; then
+ found=yes
+ else
+ found=no
+ fi
+ break 2
+ fi
+ done
+ done
+ if test "$found" != yes; then
+ # deplib doesn't seem to be a libtool library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ else # deplib is a libtool library
+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+ # We need to do some special things here, and not later.
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $deplib "*)
+ if func_lalib_p "$lib"; then
+ library_names=
+ old_library=
+ func_source "$lib"
+ for l in $old_library $library_names; do
+ ll="$l"
+ done
+ if test "X$ll" = "X$old_library" ; then # only static version available
+ found=no
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+ lib=$ladir/$old_library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ fi
+ ;;
+ *) ;;
+ esac
+ fi
+ fi
+ ;; # -l
+ *.ltframework)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) func_append new_inherited_linker_flags " $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ prog)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test "$pass" = scan; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ *)
+ func_warning "\`-L' is ignored for archives/objects"
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ func_stripname '-R' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ dir=$func_resolve_sysroot_result
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) func_append xrpath " $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la)
+ func_resolve_sysroot "$deplib"
+ lib=$func_resolve_sysroot_result
+ ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ # Linking convenience modules into shared libraries is allowed,
+ # but linking other static libraries is non-portable.
+ case " $dlpreconveniencelibs " in
+ *" $deplib "*) ;;
+ *)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ valid_a_lib=yes
+ fi
+ ;;
+ pass_all)
+ valid_a_lib=yes
+ ;;
+ esac
+ if test "$valid_a_lib" != yes; then
+ echo
+ $ECHO "*** Warning: Trying to link with static lib archive $deplib."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because the file extensions .$libext of this argument makes me believe"
+ echo "*** that it is just a static archive that I should not use here."
+ else
+ echo
+ $ECHO "*** Warning: Linking the shared library $output against the"
+ $ECHO "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ ;;
+ esac
+ continue
+ ;;
+ prog)
+ if test "$pass" != link; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ continue
+ ;;
+ esac # linkmode
+ ;; # *.$libext
+ *.lo | *.$objext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ elif test "$linkmode" = prog; then
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+ func_append newdlprefiles " $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ func_append newdlfiles " $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+ fi
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$lib" \
+ || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ inherited_linker_flags=
+ # If the library was installed with an old release of libtool,
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+ avoidtemprpath=
+
+
+ # Read the .la file
+ func_source "$lib"
+
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+ *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+ esac
+ done
+ fi
+ dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && func_append dlfiles " $dlopen"
+ test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+ fi
+
+ if test "$pass" = conv; then
+ # Only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ func_append convenience " $ladir/$objdir/$old_library"
+ func_append old_convenience " $ladir/$objdir/$old_library"
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append tmp_libs " $deplib"
+ done
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ func_fatal_error "\`$lib' is not a convenience library"
+ fi
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ if test -n "$old_library" &&
+ { test "$prefer_static_libs" = yes ||
+ test "$prefer_static_libs,$installed" = "built,no"; }; then
+ linklib=$old_library
+ else
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ fi
+ if test -z "$linklib"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+ fi
+ if test -z "$dlname" ||
+ test "$dlopen_support" != yes ||
+ test "$build_libtool_libs" = no; then
+ # If there is no dlname, no dlopen support or we're linking
+ # statically, we need to preload. We also need to preload any
+ # dependent libraries so libltdl's deplib preloader doesn't
+ # bomb out in the load deplibs phase.
+ func_append dlprefiles " $lib $dependency_libs"
+ else
+ func_append newdlfiles " $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+
+ # We need an absolute path.
+ case $ladir in
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+ *)
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+ func_warning "cannot determine absolute directory name of \`$ladir'"
+ func_warning "passing it literally to the linker, although it might fail"
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ func_basename "$lib"
+ laname="$func_basename_result"
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ func_warning "library \`$lib' was moved."
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$lt_sysroot$libdir"
+ absdir="$lt_sysroot$libdir"
+ fi
+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ dir="$ladir"
+ absdir="$abs_ladir"
+ # Remove this search path later
+ func_append notinst_path " $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ func_append notinst_path " $abs_ladir"
+ fi
+ fi # $installed = yes
+ func_stripname 'lib' '.la' "$laname"
+ name=$func_stripname_result
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir" && test "$linkmode" = prog; then
+ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+ fi
+ case "$host" in
+ # special handling for platforms with PE-DLLs.
+ *cygwin* | *mingw* | *cegcc* )
+ # Linker will automatically link against shared library if both
+ # static and shared are present. Therefore, ensure we extract
+ # symbols from the import library if a shared library is present
+ # (otherwise, the dlopen module name will be incorrect). We do
+ # this by putting the import library name into $newdlprefiles.
+ # We recover the dlopen module name by 'saving' the la file
+ # name in a special purpose variable, and (later) extracting the
+ # dlname from the la file.
+ if test -n "$dlname"; then
+ func_tr_sh "$dir/$linklib"
+ eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+ func_append newdlprefiles " $dir/$linklib"
+ else
+ func_append newdlprefiles " $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ func_append dlpreconveniencelibs " $dir/$old_library"
+ fi
+ ;;
+ * )
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ func_append newdlprefiles " $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ func_append dlpreconveniencelibs " $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ func_append newdlprefiles " $dir/$dlname"
+ else
+ func_append newdlprefiles " $dir/$linklib"
+ fi
+ ;;
+ esac
+ fi # $pass = dlpreopen
+
+ if test -z "$libdir"; then
+ # Link the convenience library
+ if test "$linkmode" = lib; then
+ deplibs="$dir/$old_library $deplibs"
+ elif test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$dir/$old_library $compile_deplibs"
+ finalize_deplibs="$dir/$old_library $finalize_deplibs"
+ else
+ deplibs="$lib $deplibs" # used for prog,scan pass
+ fi
+ continue
+ fi
+
+
+ if test "$linkmode" = prog && test "$pass" != link; then
+ func_append newlib_search_path " $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+ if test "$link_all_deplibs" != no || test -z "$library_names" ||
+ test "$build_libtool_libs" = no; then
+ linkalldeplibs=yes
+ fi
+
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ esac
+ # Need to link against all dependency_libs?
+ if test "$linkalldeplibs" = yes; then
+ deplibs="$deplib $deplibs"
+ else
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append tmp_libs " $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+ { { test "$prefer_static_libs" = no ||
+ test "$prefer_static_libs,$installed" = "built,yes"; } ||
+ test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath:" in
+ *"$absdir:"*) ;;
+ *) func_append temp_rpath "$absdir:" ;;
+ esac
+ fi
+
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ ;;
+ esac
+ fi # $linkmode,$pass = prog,link...
+
+ if test "$alldeplibs" = yes &&
+ { test "$deplibs_check_method" = pass_all ||
+ { test "$build_libtool_libs" = yes &&
+ test -n "$library_names"; }; }; then
+ # We only need to search for static libraries
+ continue
+ fi
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+ use_static_libs=$prefer_static_libs
+ if test "$use_static_libs" = built && test "$installed" = yes; then
+ use_static_libs=no
+ fi
+ if test -n "$library_names" &&
+ { test "$use_static_libs" = no || test -z "$old_library"; }; then
+ case $host in
+ *cygwin* | *mingw* | *cegcc*)
+ # No point in relinking DLLs because paths are not encoded
+ func_append notinst_deplibs " $lib"
+ need_relink=no
+ ;;
+ *)
+ if test "$installed" = no; then
+ func_append notinst_deplibs " $lib"
+ need_relink=yes
+ fi
+ ;;
+ esac
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on some
+ # systems (darwin). Don't bleat about dlopened modules though!
+ dlopenmodule=""
+ for dlpremoduletest in $dlprefiles; do
+ if test "X$dlpremoduletest" = "X$lib"; then
+ dlopenmodule="$dlpremoduletest"
+ break
+ fi
+ done
+ if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+ echo
+ if test "$linkmode" = prog; then
+ $ECHO "*** Warning: Linking the executable $output against the loadable module"
+ else
+ $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+ fi
+ $ECHO "*** $linklib is not portable!"
+ fi
+ if test "$linkmode" = lib &&
+ test "$hardcode_into_libs" = yes; then
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname="$dlname"
+ elif test -n "$soname_spec"; then
+ # bleh windows
+ case $host in
+ *cygwin* | mingw* | *cegcc*)
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ func_basename "$soroot"
+ soname="$func_basename_result"
+ func_stripname 'lib' '.dll' "$soname"
+ newlib=libimp-$func_stripname_result.a
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ func_verbose "extracting exported symbol list from \`$soname'"
+ func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ func_verbose "generating import library for \`$soname'"
+ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+ fi
+ # make sure the library variables are pointing to the new library
+ dir=$output_objdir
+ linklib=$newlib
+ fi # test -n "$old_archive_from_expsyms_cmds"
+
+ if test "$linkmode" = prog || test "$opt_mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case $hardcode_action in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+ *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+ *-*-unixware7*) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a (non-dlopened) module then we can not
+ # link against it, someone is ignoring the earlier warnings
+ if /usr/bin/file -L $add 2> /dev/null |
+ $GREP ": [^:]* bundle" >/dev/null ; then
+ if test "X$dlopenmodule" != "X$lib"; then
+ $ECHO "*** Warning: lib $linklib is a module, not a shared library"
+ if test -z "$old_library" ; then
+ echo
+ echo "*** And there doesn't seem to be a static archive available"
+ echo "*** The link will probably fail, sorry"
+ else
+ add="$dir/$old_library"
+ fi
+ elif test -n "$old_library"; then
+ add="$dir/$old_library"
+ fi
+ fi
+ esac
+ elif test "$hardcode_minus_L" = no; then
+ case $host in
+ *-*-sunos*) add_shlibpath="$dir" ;;
+ esac
+ add_dir="-L$dir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = no; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ relink)
+ if test "$hardcode_direct" = yes &&
+ test "$hardcode_direct_absolute" = no; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$absdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ func_append add_dir " -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ *) lib_linked=no ;;
+ esac
+
+ if test "$lib_linked" != yes; then
+ func_fatal_configuration "unsupported hardcode properties"
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) func_append compile_shlibpath "$add_shlibpath:" ;;
+ esac
+ fi
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+ test -n "$add" && compile_deplibs="$add $compile_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ if test "$hardcode_direct" != yes &&
+ test "$hardcode_minus_L" != yes &&
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) func_append finalize_shlibpath "$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$opt_mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes &&
+ test "$hardcode_direct_absolute" = no; then
+ add="$libdir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$libdir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) func_append finalize_shlibpath "$libdir:" ;;
+ esac
+ add="-l$name"
+ elif test "$hardcode_automatic" = yes; then
+ if test -n "$inst_prefix_dir" &&
+ test -f "$inst_prefix_dir$libdir/$linklib" ; then
+ add="$inst_prefix_dir$libdir/$linklib"
+ else
+ add="$libdir/$linklib"
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+ add_dir="-L$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ func_append add_dir " -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ fi
+
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ fi
+ fi
+ elif test "$linkmode" = prog; then
+ # Here we assume that one of hardcode_direct or hardcode_minus_L
+ # is not unsupported. This is valid on all known static and
+ # shared platforms.
+ if test "$hardcode_direct" != unsupported; then
+ test -n "$old_library" && linklib="$old_library"
+ compile_deplibs="$dir/$linklib $compile_deplibs"
+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
+ else
+ compile_deplibs="-l$name -L$dir $compile_deplibs"
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+ fi
+ elif test "$build_libtool_libs" = yes; then
+ # Not a shared library
+ if test "$deplibs_check_method" != pass_all; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
+ echo
+ $ECHO "*** Warning: This system can not link to static lib archive $lib."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have."
+ if test "$module" = yes; then
+ echo "*** But as you try to build a module library, libtool will still create "
+ echo "*** a static module, that should work as long as the dlopening application"
+ echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+ if test -z "$global_symbol_pipe"; then
+ echo
+ echo "*** However, this would only work if libtool was able to extract symbol"
+ echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ echo "*** not find such a program. So, this module is probably useless."
+ echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ else
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+ fi # link shared/static library?
+
+ if test "$linkmode" = lib; then
+ if test -n "$dependency_libs" &&
+ { test "$hardcode_into_libs" != yes ||
+ test "$build_old_libs" = yes ||
+ test "$link_static" = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+ -R*) func_stripname '-R' '' "$libdir"
+ temp_xrpath=$func_stripname_result
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) func_append xrpath " $temp_xrpath";;
+ esac;;
+ *) func_append temp_deplibs " $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ func_append newlib_search_path " $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result";;
+ *) func_resolve_sysroot "$deplib" ;;
+ esac
+ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+ *" $func_resolve_sysroot_result "*)
+ func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+ esac
+ fi
+ func_append tmp_libs " $func_resolve_sysroot_result"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ path=
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ func_resolve_sysroot "$deplib"
+ deplib=$func_resolve_sysroot_result
+ func_dirname "$deplib" "" "."
+ dir=$func_dirname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ func_warning "cannot determine absolute directory name of \`$dir'"
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if $GREP "^installed=no" $deplib > /dev/null; then
+ case $host in
+ *-*-darwin*)
+ depdepl=
+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names" ; then
+ for tmp in $deplibrary_names ; do
+ depdepl=$tmp
+ done
+ if test -f "$absdir/$objdir/$depdepl" ; then
+ depdepl="$absdir/$objdir/$depdepl"
+ darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ if test -z "$darwin_install_name"; then
+ darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ fi
+ func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+ func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+ path=
+ fi
+ fi
+ ;;
+ *)
+ path="-L$absdir/$objdir"
+ ;;
+ esac
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ test "$absdir" != "$libdir" && \
+ func_warning "\`$deplib' seems to be moved"
+
+ path="-L$absdir"
+ fi
+ ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ if test "$pass" = link; then
+ if test "$linkmode" = "prog"; then
+ compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ fi
+ fi
+ dependency_libs="$newdependency_libs"
+ if test "$pass" = dlpreopen; then
+ # Link the dlpreopened libraries before other libraries
+ for deplib in $save_deplibs; do
+ deplibs="$deplib $deplibs"
+ done
+ fi
+ if test "$pass" != dlopen; then
+ if test "$pass" != conv; then
+ # Make sure lib_search_path contains only unique directories.
+ lib_search_path=
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+ *) func_append lib_search_path " $dir" ;;
+ esac
+ done
+ newlib_search_path=
+ fi
+
+ if test "$linkmode,$pass" != "prog,link"; then
+ vars="deplibs"
+ else
+ vars="compile_deplibs finalize_deplibs"
+ fi
+ for var in $vars dependency_libs; do
+ # Add libraries to $var in reverse order
+ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ # FIXME: Pedantically, this is the right thing to do, so
+ # that some nasty dependency loop isn't accidentally
+ # broken:
+ #new_libs="$deplib $new_libs"
+ # Pragmatically, this seems to cause very few problems in
+ # practice:
+ case $deplib in
+ -L*) new_libs="$deplib $new_libs" ;;
+ -R*) ;;
+ *)
+ # And here is the reason: when a library appears more
+ # than once as an explicit dependence of a library, or
+ # is implicitly linked in more than once by the
+ # compiler, it is considered special, and multiple
+ # occurrences thereof are not removed. Compare this
+ # with having the same library being listed as a
+ # dependency of multiple other libraries: in this case,
+ # we know (pedantically, we assume) the library does not
+ # need to be listed more than once, so we keep only the
+ # last copy. This is not always right, but it is rare
+ # enough that we require users that really mean to play
+ # such unportable linking tricks to link the library
+ # using -Wl,-lname, so that libtool does not consider it
+ # for duplicate removal.
+ case " $specialdeplibs " in
+ *" $deplib "*) new_libs="$deplib $new_libs" ;;
+ *)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$deplib $new_libs" ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+ done
+ tmp_libs=
+ for deplib in $new_libs; do
+ case $deplib in
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+ *) func_append tmp_libs " $deplib" ;;
+ esac
+ ;;
+ *) func_append tmp_libs " $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # Last step: remove runtime libs from dependency_libs
+ # (they stay in deplibs)
+ tmp_libs=
+ for i in $dependency_libs ; do
+ case " $predeps $postdeps $compiler_lib_search_path " in
+ *" $i "*)
+ i=""
+ ;;
+ esac
+ if test -n "$i" ; then
+ func_append tmp_libs " $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ fi
+ if test "$linkmode" = prog || test "$linkmode" = lib; then
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for archives"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "\`-l' and \`-L' are ignored for archives" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for archives"
+
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for archives"
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for archives"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for archives"
+
+ test -n "$export_symbols$export_symbols_regex" && \
+ func_warning "\`-export-symbols' is ignored for archives"
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ func_append objs "$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ func_stripname 'lib' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ test "$module" = no && \
+ func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ func_stripname '' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ func_stripname '' '.la' "$outputname"
+ libname=$func_stripname_result
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+ else
+ echo
+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+ $ECHO "*** objects $objs is not portable!"
+ func_append libobjs " $objs"
+ fi
+ fi
+
+ test "$dlself" != no && \
+ func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+ set dummy $rpath
+ shift
+ test "$#" -gt 1 && \
+ func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+ install_libdir="$1"
+
+ oldlibs=
+ if test -z "$rpath"; then
+ if test "$build_libtool_libs" = yes; then
+ # Building a libtool convenience library.
+ # Some compilers have problems with a `.al' extension so
+ # convenience libraries should have the same extension an
+ # archive normally would.
+ oldlibs="$output_objdir/$libname.$libext $oldlibs"
+ build_libtool_libs=convenience
+ build_old_libs=yes
+ fi
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for convenience libraries"
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ shift
+ IFS="$save_ifs"
+
+ test -n "$7" && \
+ func_fatal_help "too many parameters to \`-version-info'"
+
+ # convert absolute version numbers to libtool ages
+ # this retains compatibility with .la files and attempts
+ # to make the code below a bit more comprehensible
+
+ case $vinfo_number in
+ yes)
+ number_major="$1"
+ number_minor="$2"
+ number_revision="$3"
+ #
+ # There are really only two kinds -- those that
+ # use the current revision as the major version
+ # and those that subtract age and use age as
+ # a minor version. But, then there is irix
+ # which has an extra 1 added just for fun
+ #
+ case $version_type in
+ # correct linux to gnu/linux during the next big refactor
+ darwin|linux|osf|windows|none)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|qnx|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_minor"
+ lt_irix_increment=no
+ ;;
+ *)
+ func_fatal_configuration "$modename: unknown library version type \`$version_type'"
+ ;;
+ esac
+ ;;
+ no)
+ current="$1"
+ revision="$2"
+ age="$3"
+ ;;
+ esac
+
+ # Check that each of the things are valid numbers.
+ case $current in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "CURRENT \`$current' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ case $revision in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "REVISION \`$revision' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ case $age in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "AGE \`$age' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ func_error "AGE \`$age' is greater than the current interface number \`$current'"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ fi
+
+ # Calculate the version variables.
+ major=
+ versuffix=
+ verstring=
+ case $version_type in
+ none) ;;
+
+ darwin)
+ # Like Linux, but with the current version available in
+ # verstring for coding it into the library header
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ func_arith $current + 1
+ minor_current=$func_arith_result
+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current"
+ ;;
+
+ irix | nonstopux)
+ if test "X$lt_irix_increment" = "Xno"; then
+ func_arith $current - $age
+ else
+ func_arith $current - $age + 1
+ fi
+ major=$func_arith_result
+
+ case $version_type in
+ nonstopux) verstring_prefix=nonstopux ;;
+ *) verstring_prefix=sgi ;;
+ esac
+ verstring="$verstring_prefix$major.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$revision
+ while test "$loop" -ne 0; do
+ func_arith $revision - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux) # correct to gnu/linux during the next big refactor
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix=".$current.$age.$revision"
+ verstring="$current.$age.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$age
+ while test "$loop" -ne 0; do
+ func_arith $current - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ func_append verstring ":${current}.0"
+ ;;
+
+ qnx)
+ major=".$current"
+ versuffix=".$current"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+
+ *)
+ func_fatal_configuration "unknown library version type \`$version_type'"
+ ;;
+ esac
+
+ # Clear the version info if we defaulted, and they specified a release.
+ if test -z "$vinfo" && test -n "$release"; then
+ major=
+ case $version_type in
+ darwin)
+ # we can't check for "0.0" in archive_cmds due to quoting
+ # problems, so we reset it completely
+ verstring=
+ ;;
+ *)
+ verstring="0.0"
+ ;;
+ esac
+ if test "$need_version" = no; then
+ versuffix=
+ else
+ versuffix=".0.0"
+ fi
+ fi
+
+ # Remove version info from name if versioning should be avoided
+ if test "$avoid_version" = yes && test "$need_version" = no; then
+ major=
+ versuffix=
+ verstring=""
+ fi
+
+ # Check to see if the archive will have undefined symbols.
+ if test "$allow_undefined" = yes; then
+ if test "$allow_undefined_flag" = unsupported; then
+ func_warning "undefined symbols not allowed in $host shared libraries"
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+
+ fi
+
+ func_generate_dlsyms "$libname" "$libname" "yes"
+ func_append libobjs " $symfileobj"
+ test "X$libobjs" = "X " && libobjs=
+
+ if test "$opt_mode" != relink; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+ tempremovelist=`$ECHO "$output_objdir/*"`
+ for p in $tempremovelist; do
+ case $p in
+ *.$objext | *.gcno)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+ if test "X$precious_files_regex" != "X"; then
+ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+ then
+ continue
+ fi
+ fi
+ func_append removelist " $p"
+ ;;
+ *) ;;
+ esac
+ done
+ test -n "$removelist" && \
+ func_show_eval "${RM}r \$removelist"
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ func_append oldlibs " $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ #for path in $notinst_path; do
+ # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+ # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+ # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
+ #done
+
+ if test -n "$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+ func_replace_sysroot "$libdir"
+ func_append temp_xrpath " -R$func_replace_sysroot_result"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ done
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+ dependency_libs="$temp_xrpath $dependency_libs"
+ fi
+ fi
+
+ # Make sure dlfiles contains only unique files that won't be dlpreopened
+ old_dlfiles="$dlfiles"
+ dlfiles=
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+ *) func_append dlfiles " $lib" ;;
+ esac
+ done
+
+ # Make sure dlprefiles contains only unique files
+ old_dlprefiles="$dlprefiles"
+ dlprefiles=
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+ *) func_append dlprefiles " $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ func_append deplibs " System.ltframework"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+ func_append deplibs " -lc"
+ fi
+ ;;
+ esac
+ fi
+
+ # Transform deplibs into only deplibs that can be linked in shared.
+ name_save=$name
+ libname_save=$libname
+ release_save=$release
+ versuffix_save=$versuffix
+ major_save=$major
+ # I'm not sure if I'm treating the release correctly. I think
+ # release should show up in the -l (ie -lgmp5) so we don't want to
+ # add it in twice. Is that correct?
+ release=""
+ versuffix=""
+ major=""
+ newdeplibs=
+ droppeddeps=no
+ case $deplibs_check_method in
+ pass_all)
+ # Don't check for shared/static. Everything works.
+ # This might be a little naive. We might want to check
+ # whether the library exists or not. But this is on
+ # osf3 & osf4 and I'm not really sure... Just
+ # implementing what was already the behavior.
+ newdeplibs=$deplibs
+ ;;
+ test_compile)
+ # This code stresses the "libraries are programs" paradigm to its
+ # limits. Maybe even breaks it. We compile a program, linking it
+ # against the deplibs as a proxy for the library. Then we can check
+ # whether they linked in statically or dynamically with ldd.
+ $opt_dry_run || $RM conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ func_append newdeplibs " $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ func_append newdeplibs " $i"
+ else
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which I believe you do not have"
+ echo "*** because a test_compile did reveal that the linker did not use it for"
+ echo "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ ;;
+ *)
+ func_append newdeplibs " $i"
+ ;;
+ esac
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ func_append newdeplibs " $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ func_append newdeplibs " $i"
+ else
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because a test_compile did reveal that the linker did not use this one"
+ echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
+ echo "*** make it link in! You will probably need to install it or some"
+ echo "*** library that it depends on before this library will be fully"
+ echo "*** functional. Installing it before continuing would be even better."
+ fi
+ ;;
+ *)
+ func_append newdeplibs " $i"
+ ;;
+ esac
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method; shift
+ file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ if test -n "$file_magic_glob"; then
+ libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+ else
+ libnameglob=$libname
+ fi
+ test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ if test "$want_nocaseglob" = yes; then
+ shopt -s nocaseglob
+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+ $nocaseglob
+ else
+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+ fi
+ for potent_lib in $potential_libs; do
+ # Follow soft links.
+ if ls -lLd "$potent_lib" 2>/dev/null |
+ $GREP " -> " >/dev/null; then
+ continue
+ fi
+ # The statement above tries to avoid entering an
+ # endless loop below, in case of cyclic links.
+ # We might still enter an endless loop, since a link
+ # loop can be closed while we follow links,
+ # but so what?
+ potlib="$potent_lib"
+ while test -h "$potlib" 2>/dev/null; do
+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+ case $potliblink in
+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+ *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+ $SED -e 10q |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+ else
+ $ECHO "*** with $libname and none of the candidates passed a file format test"
+ $ECHO "*** using a file magic. Last file checked: $potlib"
+ fi
+ fi
+ ;;
+ *)
+ # Add a -L argument.
+ func_append newdeplibs " $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ potlib="$potent_lib" # see symlink-check above in file_magic test
+ if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
+ $EGREP "$match_pattern_regex" > /dev/null; then
+ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+ else
+ $ECHO "*** with $libname and none of the candidates passed a file format test"
+ $ECHO "*** using a regex pattern. Last file checked: $potlib"
+ fi
+ fi
+ ;;
+ *)
+ # Add a -L argument.
+ func_append newdeplibs " $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ for i in $predeps $postdeps ; do
+ # can't use Xsed below, because $i might contain '/'
+ tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
+ done
+ fi
+ case $tmp_deplibs in
+ *[!\ \ ]*)
+ echo
+ if test "X$deplibs_check_method" = "Xnone"; then
+ echo "*** Warning: inter-library dependencies are not supported in this platform."
+ else
+ echo "*** Warning: inter-library dependencies are not known to be supported."
+ fi
+ echo "*** All declared inter-library dependencies are being dropped."
+ droppeddeps=yes
+ ;;
+ esac
+ ;;
+ esac
+ versuffix=$versuffix_save
+ major=$major_save
+ release=$release_save
+ libname=$libname_save
+ name=$name_save
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library with the System framework
+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
+ ;;
+ esac
+
+ if test "$droppeddeps" = yes; then
+ if test "$module" = yes; then
+ echo
+ echo "*** Warning: libtool could not satisfy all declared inter-library"
+ $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
+ echo "*** a static module, that should work as long as the dlopening"
+ echo "*** application is linked with the -dlopen flag."
+ if test -z "$global_symbol_pipe"; then
+ echo
+ echo "*** However, this would only work if libtool was able to extract symbol"
+ echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ echo "*** not find such a program. So, this module is probably useless."
+ echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ else
+ echo "*** The inter-library dependencies that have been dropped here will be"
+ echo "*** automatically added whenever a program is linked with this library"
+ echo "*** or is declared to -dlopen it."
+
+ if test "$allow_undefined" = no; then
+ echo
+ echo "*** Since this library must not contain undefined symbols,"
+ echo "*** because either the platform does not support them or"
+ echo "*** it was explicitly requested with -no-undefined,"
+ echo "*** libtool will only create a static version of it."
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ fi
+ fi
+ # Done checking deplibs!
+ deplibs=$newdeplibs
+ fi
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ case $host in
+ *-*-darwin*)
+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ esac
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+ func_append new_libs " -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ done
+ deplibs="$new_libs"
+
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+ dlname=
+
+ # Test again, we may have decided not to build it any more
+ if test "$build_libtool_libs" = yes; then
+ # Remove ${wl} instances when linking with ld.
+ # FIXME: should test the right _cmds variable.
+ case $archive_cmds in
+ *\$LD\ *) wl= ;;
+ esac
+ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+ test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ func_replace_sysroot "$libdir"
+ libdir=$func_replace_sysroot_result
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append dep_rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) func_append perm_rpath " $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ func_append rpath "$dir:"
+ done
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
+
+ shlibpath="$finalize_shlibpath"
+ test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
+ # Get the real and link names of the library.
+ eval shared_ext=\"$shrext_cmds\"
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
+
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+ if test -z "$dlname"; then
+ dlname=$soname
+ fi
+
+ lib="$output_objdir/$realname"
+ linknames=
+ for link
+ do
+ func_append linknames " $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ test "X$libobjs" = "X " && libobjs=
+
+ delfiles=
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+ export_symbols="$output_objdir/$libname.uexp"
+ func_append delfiles " $export_symbols"
+ fi
+
+ orig_export_symbols=
+ case $host_os in
+ cygwin* | mingw* | cegcc*)
+ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+ # exporting using user supplied symfile
+ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+ # and it's NOT already a .def file. Must figure out
+ # which of the given symbols are data symbols and tag
+ # them as such. So, trigger use of export_symbols_cmds.
+ # export_symbols gets reassigned inside the "prepare
+ # the list of exported symbols" if statement, so the
+ # include_expsyms logic still works.
+ orig_export_symbols="$export_symbols"
+ export_symbols=
+ always_export_symbols=yes
+ fi
+ fi
+ ;;
+ esac
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd1 in $cmds; do
+ IFS="$save_ifs"
+ # Take the normal branch if the nm_file_list_spec branch
+ # doesn't work or if tool conversion is not needed.
+ case $nm_file_list_spec~$to_tool_file_cmd in
+ *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+ try_normal_branch=yes
+ eval cmd=\"$cmd1\"
+ func_len " $cmd"
+ len=$func_len_result
+ ;;
+ *)
+ try_normal_branch=no
+ ;;
+ esac
+ if test "$try_normal_branch" = yes \
+ && { test "$len" -lt "$max_cmd_len" \
+ || test "$max_cmd_len" -le -1; }
+ then
+ func_show_eval "$cmd" 'exit $?'
+ skipped_export=false
+ elif test -n "$nm_file_list_spec"; then
+ func_basename "$output"
+ output_la=$func_basename_result
+ save_libobjs=$libobjs
+ save_output=$output
+ output=${output_objdir}/${output_la}.nm
+ func_to_tool_file "$output"
+ libobjs=$nm_file_list_spec$func_to_tool_file_result
+ func_append delfiles " $output"
+ func_verbose "creating $NM input file list: $output"
+ for obj in $save_libobjs; do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result"
+ done > "$output"
+ eval cmd=\"$cmd1\"
+ func_show_eval "$cmd" 'exit $?'
+ output=$save_output
+ libobjs=$save_libobjs
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ func_verbose "using reloadable object file for export list..."
+ skipped_export=:
+ # Break out early, otherwise skipped_export may be
+ # set to false by a later but shorter cmd.
+ break
+ fi
+ done
+ IFS="$save_ifs"
+ if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ func_append tmp_deplibs " $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec" &&
+ test "$compiler_needs_object" = yes &&
+ test -z "$libobjs"; then
+ # extract the archives, so we have objects to list.
+ # TODO: could optimize this to just extract one archive.
+ whole_archive_flag_spec=
+ fi
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ else
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $convenience
+ func_append libobjs " $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ func_append linker_flags " $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$opt_mode" = relink; then
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ eval test_cmds=\"$module_expsym_cmds\"
+ cmds=$module_expsym_cmds
+ else
+ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
+ fi
+
+ if test "X$skipped_export" != "X:" &&
+ func_len " $test_cmds" &&
+ len=$func_len_result &&
+ test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise
+ # or, if using GNU ld and skipped_export is not :, use a linker
+ # script.
+
+ # Save the value of $output and $libobjs because we want to
+ # use them later. If we have whole_archive_flag_spec, we
+ # want to use save_libobjs as it was before
+ # whole_archive_flag_spec was expanded, because we can't
+ # assume the linker understands whole_archive_flag_spec.
+ # This may have to be revisited, in case too many
+ # convenience libraries get linked in and end up exceeding
+ # the spec.
+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+ func_basename "$output"
+ output_la=$func_basename_result
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ last_robj=
+ k=1
+
+ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+ output=${output_objdir}/${output_la}.lnkscript
+ func_verbose "creating GNU ld script: $output"
+ echo 'INPUT (' > $output
+ for obj in $save_libobjs
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result" >> $output
+ done
+ echo ')' >> $output
+ func_append delfiles " $output"
+ func_to_tool_file "$output"
+ output=$func_to_tool_file_result
+ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+ output=${output_objdir}/${output_la}.lnk
+ func_verbose "creating linker input file list: $output"
+ : > $output
+ set x $save_libobjs
+ shift
+ firstobj=
+ if test "$compiler_needs_object" = yes; then
+ firstobj="$1 "
+ shift
+ fi
+ for obj
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result" >> $output
+ done
+ func_append delfiles " $output"
+ func_to_tool_file "$output"
+ output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+ else
+ if test -n "$save_libobjs"; then
+ func_verbose "creating reloadable object files..."
+ output=$output_objdir/$output_la-${k}.$objext
+ eval test_cmds=\"$reload_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ if test "X$objlist" = X ||
+ test "$len" -lt "$max_cmd_len"; then
+ func_append objlist " $obj"
+ else
+ # The command $test_cmds is almost too long, add a
+ # command to the queue.
+ if test "$k" -eq 1 ; then
+ # The first file doesn't have a previous command to add.
+ reload_objs=$objlist
+ eval concat_cmds=\"$reload_cmds\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ reload_objs="$objlist $last_robj"
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ func_arith $k + 1
+ k=$func_arith_result
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=" $obj"
+ func_len " $last_robj"
+ func_arith $len0 + $func_len_result
+ len=$func_arith_result
+ fi
+ done
+ # Handle the remaining objects by creating one last
+ # reloadable object file. All subsequent reloadable object
+ # files will link in the last one created.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ reload_objs="$objlist $last_robj"
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+ fi
+ func_append delfiles " $output"
+
+ else
+ output=
+ fi
+
+ if ${skipped_export-false}; then
+ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+ fi
+ fi
+
+ test -n "$save_libobjs" &&
+ func_verbose "creating a temporary reloadable object file: $output"
+
+ # Loop through the commands generated above and execute them.
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $concat_cmds; do
+ IFS="$save_ifs"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$opt_mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+
+ if ${skipped_export-false}; then
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+ fi
+
+ libobjs=$output
+ # Restore the value of output.
+ output=$save_output
+
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ # Expand the library linking commands again to reset the
+ # value of $libobjs for piecewise linking.
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ cmds=$module_expsym_cmds
+ else
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ cmds=$archive_expsym_cmds
+ else
+ cmds=$archive_cmds
+ fi
+ fi
+ fi
+
+ if test -n "$delfiles"; then
+ # Append the command to remove temporary files to $cmds.
+ eval cmds=\"\$cmds~\$RM $delfiles\"
+ fi
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ func_append libobjs " $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$opt_mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$opt_mode" = relink; then
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+ fi
+ done
+
+ # If -module or -export-dynamic was specified, set the dlname.
+ if test "$module" = yes || test "$export_dynamic" = yes; then
+ # On all known operating systems, these are identical.
+ dlname="$soname"
+ fi
+ fi
+ ;;
+
+ obj)
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for objects"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "\`-l' and \`-L' are ignored for objects" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for objects"
+
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for objects"
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for objects"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for objects"
+
+ case $output in
+ *.lo)
+ test -n "$objs$old_deplibs" && \
+ func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+
+ libobj=$output
+ func_lo2o "$libobj"
+ obj=$func_lo2o_result
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $opt_dry_run || $RM $obj $libobj
+
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+ # different ones for PIC/non-PIC, this we'll have to duplicate
+ # the extraction.
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+ # -Wl from whole_archive_flag_spec and hope we can get by with
+ # turning comma into space..
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+ reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+ else
+ gentop="$output_objdir/${obj}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # If we're not building shared, we need to use non_pic_objs
+ test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ # $show "echo timestamp > $libobj"
+ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test -n "$pic_flag" || test "$pic_mode" != default; then
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs $reload_conv_objs"
+ output="$libobj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+ fi
+
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result.exe;;
+ esac
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for programs"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for programs"
+
+ test "$preload" = yes \
+ && test "$dlopen_support" = unknown \
+ && test "$dlopen_self" = unknown \
+ && test "$dlopen_self_static" = unknown && \
+ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
+ ;;
+ esac
+
+ case $host in
+ *-*-darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ # But is supposedly fixed on 10.4 or later (yay!).
+ if test "$tagname" = CXX ; then
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+ 10.[0123])
+ func_append compile_command " ${wl}-bind_at_load"
+ func_append finalize_command " ${wl}-bind_at_load"
+ ;;
+ esac
+ fi
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ esac
+
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+ func_append new_libs " -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+ func_append compile_command " $compile_deplibs"
+ func_append finalize_command " $finalize_deplibs"
+
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ for libdir in $rpath $xrpath; do
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ done
+ fi
+
+ # Now hardcode the library paths
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) func_append perm_rpath " $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ ::) dllsearchpath=$libdir;;
+ *) func_append dllsearchpath ":$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) func_append dllsearchpath ":$testbindir";;
+ esac
+ ;;
+ esac
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_perm_rpath " $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath="$rpath"
+
+ if test -n "$libobjs" && test "$build_old_libs" = yes; then
+ # Transform all the library objects into standard objects.
+ compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ fi
+
+ func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+
+ # template prelinking step
+ if test -n "$prelink_cmds"; then
+ func_execute_cmds "$prelink_cmds" 'exit $?'
+ fi
+
+ wrappers_required=yes
+ case $host in
+ *cegcc* | *mingw32ce*)
+ # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+ wrappers_required=no
+ ;;
+ *cygwin* | *mingw* )
+ if test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ *)
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ esac
+ if test "$wrappers_required" = no; then
+ # Replace the output file specification.
+ compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ exit_status=0
+ func_show_eval "$link_command" 'exit_status=$?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
+ # Delete the generated files.
+ if test -f "$output_objdir/${outputname}S.${objext}"; then
+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+ fi
+
+ exit $exit_status
+ fi
+
+ if test -n "$compile_shlibpath$finalize_shlibpath"; then
+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+ fi
+ if test -n "$finalize_shlibpath"; then
+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+ fi
+
+ compile_var=
+ finalize_var=
+ if test -n "$runpath_var"; then
+ if test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ func_append rpath "$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ if test -n "$finalize_perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+ func_append rpath "$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ fi
+
+ if test "$no_install" = yes; then
+ # We don't need to create a wrapper script.
+ link_command="$compile_var$compile_command$compile_rpath"
+ # Replace the output file specification.
+ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $opt_dry_run || $RM $output
+ # Link the executable and exit
+ func_show_eval "$link_command" 'exit $?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+ func_warning "this platform does not like uninstalled shared libraries"
+ func_warning "\`$output' will be relinked during installation"
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+ else
+ # fast_install is set to needless
+ relink_command=
+ fi
+ else
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+ fi
+ fi
+
+ # Replace the output file specification.
+ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ func_show_eval "$link_command" 'exit $?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output_objdir/$outputname"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
+ # Now create the wrapper script.
+ func_verbose "creating $output"
+
+ # Quote the relink command for shipping.
+ if test -n "$relink_command"; then
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if not in dry run mode.
+ $opt_dry_run || {
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ func_stripname '' '.exe' "$outputname"
+ outputname=$func_stripname_result ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ func_dirname_and_basename "$output" "" "."
+ output_name=$func_basename_result
+ output_path=$func_dirname_result
+ cwrappersource="$output_path/$objdir/lt-$output_name.c"
+ cwrapper="$output_path/$output_name.exe"
+ $RM $cwrappersource $cwrapper
+ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_cwrapperexe_src > $cwrappersource
+
+ # The wrapper executable is built using the $host compiler,
+ # because it contains $host paths and files. If cross-
+ # compiling, it, like the target executable, must be
+ # executed on the $host or under an emulation environment.
+ $opt_dry_run || {
+ $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+ $STRIP $cwrapper
+ }
+
+ # Now, create the wrapper script for func_source use:
+ func_ltwrapper_scriptname $cwrapper
+ $RM $func_ltwrapper_scriptname_result
+ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+ $opt_dry_run || {
+ # note: this script will not be executed, so do not chmod.
+ if test "x$build" = "x$host" ; then
+ $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+ else
+ func_emit_wrapper no > $func_ltwrapper_scriptname_result
+ fi
+ }
+ ;;
+ * )
+ $RM $output
+ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_wrapper no > $output
+ chmod +x $output
+ ;;
+ esac
+ }
+ exit $EXIT_SUCCESS
+ ;;
+ esac
+
+ # See if we need to build an old-fashioned archive.
+ for oldlib in $oldlibs; do
+
+ if test "$build_libtool_libs" = convenience; then
+ oldobjs="$libobjs_save $symfileobj"
+ addlibs="$convenience"
+ build_libtool_libs=no
+ else
+ if test "$build_libtool_libs" = module; then
+ oldobjs="$libobjs_save"
+ build_libtool_libs=no
+ else
+ oldobjs="$old_deplibs $non_pic_objects"
+ if test "$preload" = yes && test -f "$symfileobj"; then
+ func_append oldobjs " $symfileobj"
+ fi
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $addlibs
+ func_append oldobjs " $func_extract_archives_result"
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ func_append oldobjs " $func_extract_archives_result"
+ fi
+
+ # POSIX demands no paths to be encoded in archives. We have
+ # to avoid creating archives with duplicate basenames if we
+ # might have to extract them afterwards, e.g., when creating a
+ # static archive out of a convenience library, or when linking
+ # the entirety of a libtool archive into another (currently
+ # not supported by libtool).
+ if (for obj in $oldobjs
+ do
+ func_basename "$obj"
+ $ECHO "$func_basename_result"
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ echo "copying selected object files to avoid basename conflicts..."
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+ func_mkdir_p "$gentop"
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ func_basename "$obj"
+ objbase="$func_basename_result"
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ func_arith $counter + 1
+ counter=$func_arith_result
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ func_append oldobjs " $gentop/$newobj"
+ ;;
+ *) func_append oldobjs " $obj" ;;
+ esac
+ done
+ fi
+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+ tool_oldlib=$func_to_tool_file_result
+ eval cmds=\"$old_archive_cmds\"
+
+ func_len " $cmds"
+ len=$func_len_result
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ elif test -n "$archiver_list_spec"; then
+ func_verbose "using command file archive linking..."
+ for obj in $oldobjs
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result"
+ done > $output_objdir/$libname.libcmd
+ func_to_tool_file "$output_objdir/$libname.libcmd"
+ oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ func_verbose "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+ oldobjs=
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+ last_oldobj=$obj
+ done
+ eval test_cmds=\"$old_archive_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+ for obj in $save_oldobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ func_append objlist " $obj"
+ if test "$len" -lt "$max_cmd_len"; then
+ :
+ else
+ # the above command should be used before it gets too long
+ oldobjs=$objlist
+ if test "$obj" = "$last_oldobj" ; then
+ RANLIB=$save_RANLIB
+ fi
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ objlist=
+ len=$len0
+ fi
+ done
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test "X$oldobjs" = "X" ; then
+ eval cmds=\"\$concat_cmds\"
+ else
+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+ func_execute_cmds "$cmds" 'exit $?'
+ done
+
+ test -n "$generated" && \
+ func_show_eval "${RM}r$generated"
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ func_verbose "creating $output"
+
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ # Quote the link command for shipping.
+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+ # Only create the output if not a dry run.
+ $opt_dry_run || {
+ for installed in no yes; do
+ if test "$installed" = yes; then
+ if test -z "$install_libdir"; then
+ break
+ fi
+ output="$output_objdir/$outputname"i
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ *.la)
+ func_basename "$deplib"
+ name="$func_basename_result"
+ func_resolve_sysroot "$deplib"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ -L*)
+ func_stripname -L '' "$deplib"
+ func_replace_sysroot "$func_stripname_result"
+ func_append newdependency_libs " -L$func_replace_sysroot_result"
+ ;;
+ -R*)
+ func_stripname -R '' "$deplib"
+ func_replace_sysroot "$func_stripname_result"
+ func_append newdependency_libs " -R$func_replace_sysroot_result"
+ ;;
+ *) func_append newdependency_libs " $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+
+ for lib in $dlfiles; do
+ case $lib in
+ *.la)
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ *) func_append newdlfiles " $lib" ;;
+ esac
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ *.la)
+ # Only pass preopened files to the pseudo-archive (for
+ # eventual linking with the app. that links it) if we
+ # didn't already link the preopened objects directly into
+ # the library:
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ esac
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ func_append newdlfiles " $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ func_append newdlprefiles " $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $RM $output
+ # place dlname in correct position for cygwin
+ # In fact, it would be nice if we could use this code for all target
+ # systems that can't hard-code library paths into their executables
+ # and that have no shared library path variable independent of PATH,
+ # but it turns out we can't easily determine that from inspecting
+ # libtool variables, so we have to hard-code the OSs to which it
+ # applies here; at the moment, that means platforms that use the PE
+ # object format with DLL files. See the long comment at the top of
+ # tests/bindir.at for full details.
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+ # If a -bindir argument was supplied, place the dll there.
+ if test "x$bindir" != x ;
+ then
+ func_relative_path "$install_libdir" "$bindir"
+ tdlname=$func_relative_path_result$dlname
+ else
+ # Otherwise fall back on heuristic.
+ tdlname=../bin/$dlname
+ fi
+ ;;
+ esac
+ $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+ if test "$installed" = no && test "$need_relink" = yes; then
+ $ECHO >> $output "\
+relink_command=\"$relink_command\""
+ fi
+ done
+ }
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+}
+
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+ func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+ $opt_debug
+ RM="$nonopt"
+ files=
+ rmforce=
+ exit_status=0
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ for arg
+ do
+ case $arg in
+ -f) func_append RM " $arg"; rmforce=yes ;;
+ -*) func_append RM " $arg" ;;
+ *) func_append files " $arg" ;;
+ esac
+ done
+
+ test -z "$RM" && \
+ func_fatal_help "you must specify an RM program"
+
+ rmdirs=
+
+ for file in $files; do
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ if test "X$dir" = X.; then
+ odir="$objdir"
+ else
+ odir="$dir/$objdir"
+ fi
+ func_basename "$file"
+ name="$func_basename_result"
+ test "$opt_mode" = uninstall && odir="$dir"
+
+ # Remember odir for removal later, being careful to avoid duplicates
+ if test "$opt_mode" = clean; then
+ case " $rmdirs " in
+ *" $odir "*) ;;
+ *) func_append rmdirs " $odir" ;;
+ esac
+ fi
+
+ # Don't error if the file doesn't exist and rm -f was used.
+ if { test -L "$file"; } >/dev/null 2>&1 ||
+ { test -h "$file"; } >/dev/null 2>&1 ||
+ test -f "$file"; then
+ :
+ elif test -d "$file"; then
+ exit_status=1
+ continue
+ elif test "$rmforce" = yes; then
+ continue
+ fi
+
+ rmfiles="$file"
+
+ case $name in
+ *.la)
+ # Possibly a libtool archive, so verify it.
+ if func_lalib_p "$file"; then
+ func_source $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ func_append rmfiles " $odir/$n"
+ done
+ test -n "$old_library" && func_append rmfiles " $odir/$old_library"
+
+ case "$opt_mode" in
+ clean)
+ case " $library_names " in
+ *" $dlname "*) ;;
+ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
+ esac
+ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if func_lalib_p "$file"; then
+
+ # Read the .lo file
+ func_source $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" &&
+ test "$pic_object" != none; then
+ func_append rmfiles " $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" &&
+ test "$non_pic_object" != none; then
+ func_append rmfiles " $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$opt_mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ func_stripname '' '.exe' "$name"
+ noexename=$func_stripname_result
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ func_append rmfiles " $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if func_ltwrapper_p "$file"; then
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ relink_command=
+ func_source $func_ltwrapper_scriptname_result
+ func_append rmfiles " $func_ltwrapper_scriptname_result"
+ else
+ relink_command=
+ func_source $dir/$noexename
+ fi
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ func_append rmfiles " $odir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ func_append rmfiles " $odir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ func_show_eval "$RM $rmfiles" 'exit_status=1'
+ done
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ func_show_eval "rmdir $dir >/dev/null 2>&1"
+ fi
+ done
+
+ exit $exit_status
+}
+
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+ func_mode_uninstall ${1+"$@"}
+
+test -z "$opt_mode" && {
+ help="$generic_help"
+ func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+ func_fatal_help "invalid operation mode \`$opt_mode'"
+
+if test -n "$exec_cmd"; then
+ eval exec "$exec_cmd"
+ exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries. Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them. This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration. But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
+# vi:sw=2
+
diff --git a/build/missing b/build/missing
new file mode 100755
index 0000000..86a8fc3
--- /dev/null
+++ b/build/missing
@@ -0,0 +1,331 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2012-01-06.13; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program). This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+ lex*|yacc*)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case $f in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te*)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison*|yacc*)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if test $# -ne 1; then
+ eval LASTARG=\${$#}
+ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+ if test ! -f y.tab.c; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex*|flex*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if test $# -ne 1; then
+ eval LASTARG=\${$#}
+ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f lex.yy.c; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit $?
+ fi
+ ;;
+
+ makeinfo*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+ # If the file does not exist, the user really needs makeinfo;
+ # let's fail without touching anything.
+ test -f $file || exit 1
+ touch $file
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/configure b/configure
new file mode 100755
index 0000000..6a5cad6
--- /dev/null
+++ b/configure
@@ -0,0 +1,18836 @@
+#! /bin/sh
+# From configure.ac Revision: .
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for Raptor RDF Parser and Serializer library 2.0.8.
+#
+# Report bugs to <http://bugs.librdf.org/>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+
+ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: http://bugs.librdf.org/ about your system, including
+$0: any error possibly output before this message. Then
+$0: install a modern shell, or manually run the script
+$0: under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='Raptor RDF Parser and Serializer library'
+PACKAGE_TARNAME='raptor2'
+PACKAGE_VERSION='2.0.8'
+PACKAGE_STRING='Raptor RDF Parser and Serializer library 2.0.8'
+PACKAGE_BUGREPORT='http://bugs.librdf.org/'
+PACKAGE_URL=''
+
+ac_unique_file="src/raptor_general.c"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+GTK_DOC_USE_REBASE_FALSE
+GTK_DOC_USE_REBASE_TRUE
+GTK_DOC_USE_LIBTOOL_FALSE
+GTK_DOC_USE_LIBTOOL_TRUE
+GTK_DOC_BUILD_PDF_FALSE
+GTK_DOC_BUILD_PDF_TRUE
+GTK_DOC_BUILD_HTML_FALSE
+GTK_DOC_BUILD_HTML_TRUE
+ENABLE_GTK_DOC_FALSE
+ENABLE_GTK_DOC_TRUE
+GTKDOC_DEPS_LIBS
+GTKDOC_DEPS_CFLAGS
+HTML_DIR
+GTKDOC_MKPDF
+GTKDOC_REBASE
+GTKDOC_CHECK
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+abs_top_builddir
+abs_top_srcdir
+RAPTOR_XML_PARSER
+RAPTOR_WWW_LIBRARY
+RAPTOR_SERIALIZERS
+RAPTOR_PARSERS
+RECHO_C
+RECHO_N
+MEM_LIBS
+MEM
+RAPTOR_LDFLAGS
+RAPTOR_LIBTOOLLIBS
+RAPTOR_XML_LIBXML_FALSE
+RAPTOR_XML_LIBXML_TRUE
+PARSEDATE_FALSE
+PARSEDATE_TRUE
+LIBOBJS
+RAPTOR_ICU_NFC_FALSE
+RAPTOR_ICU_NFC_TRUE
+RAPTOR_RSS_COMMON_FALSE
+RAPTOR_RSS_COMMON_TRUE
+RAPTOR_SERIALIZER_NQUADS_FALSE
+RAPTOR_SERIALIZER_NQUADS_TRUE
+RAPTOR_SERIALIZER_JSON_FALSE
+RAPTOR_SERIALIZER_JSON_TRUE
+RAPTOR_SERIALIZER_HTML_FALSE
+RAPTOR_SERIALIZER_HTML_TRUE
+RAPTOR_SERIALIZER_DOT_FALSE
+RAPTOR_SERIALIZER_DOT_TRUE
+RAPTOR_SERIALIZER_ATOM_FALSE
+RAPTOR_SERIALIZER_ATOM_TRUE
+RAPTOR_SERIALIZER_RSS_1_0_FALSE
+RAPTOR_SERIALIZER_RSS_1_0_TRUE
+RAPTOR_SERIALIZER_TURTLE_FALSE
+RAPTOR_SERIALIZER_TURTLE_TRUE
+RAPTOR_SERIALIZER_RDFXML_ABBREV_FALSE
+RAPTOR_SERIALIZER_RDFXML_ABBREV_TRUE
+RAPTOR_SERIALIZER_NTRIPLES_FALSE
+RAPTOR_SERIALIZER_NTRIPLES_TRUE
+RAPTOR_SERIALIZER_RDFXML_FALSE
+RAPTOR_SERIALIZER_RDFXML_TRUE
+LIBRDFA_FALSE
+LIBRDFA_TRUE
+RAPTOR_PARSER_NQUADS_FALSE
+RAPTOR_PARSER_NQUADS_TRUE
+RAPTOR_PARSER_JSON_FALSE
+RAPTOR_PARSER_JSON_TRUE
+RAPTOR_PARSER_RDFA_FALSE
+RAPTOR_PARSER_RDFA_TRUE
+RAPTOR_PARSER_GUESS_FALSE
+RAPTOR_PARSER_GUESS_TRUE
+RAPTOR_PARSER_GRDDL_FALSE
+RAPTOR_PARSER_GRDDL_TRUE
+RAPTOR_PARSER_RSS_FALSE
+RAPTOR_PARSER_RSS_TRUE
+RAPTOR_PARSER_TRIG_FALSE
+RAPTOR_PARSER_TRIG_TRUE
+RAPTOR_PARSER_TURTLE_FALSE
+RAPTOR_PARSER_TURTLE_TRUE
+RAPTOR_PARSER_NTRIPLES_FALSE
+RAPTOR_PARSER_NTRIPLES_TRUE
+RAPTOR_PARSER_RDFXML_FALSE
+RAPTOR_PARSER_RDFXML_TRUE
+CURL_CONFIG
+XSLT_CONFIG
+XML_CONFIG
+GETOPT_FALSE
+GETOPT_TRUE
+STRCASECMP_FALSE
+STRCASECMP_TRUE
+NEED_STRTOK_R_FALSE
+NEED_STRTOK_R_TRUE
+RAPTOR_LIBTOOL_VERSION
+RAPTOR_VERSION_DECIMAL
+RAPTOR_VERSION_RELEASE
+RAPTOR_VERSION_MINOR
+RAPTOR_VERSION_MAJOR
+RAPTOR_VERSION
+RECHO
+PERL
+TAR
+YFLAGS
+YACC
+LEXLIB
+LEX_OUTPUT_ROOT
+LEX
+CPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+RANLIB
+DLLTOOL
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+EGREP
+GREP
+SED
+LIBTOOL
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+ac_ct_AR
+AR
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+RPM_RELEASE
+RELEASE_VERSION_FALSE
+RELEASE_VERSION_TRUE
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_maintainer_mode
+enable_release
+enable_dependency_tracking
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+enable_largefile
+with_xml2_config
+with_xslt_config
+with_curl_config
+with_icu_config
+with_www_config
+with_yajl
+enable_parsers
+enable_serializers
+with_xml_names
+with_www
+with_memory_signing
+enable_debug
+enable_silent_rules
+with_html_dir
+enable_gtk_doc
+enable_gtk_doc_html
+enable_gtk_doc_pdf
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+YACC
+YFLAGS
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+GTKDOC_DEPS_CFLAGS
+GTKDOC_DEPS_LIBS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures Raptor RDF Parser and Serializer library 2.0.8 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/raptor2]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of Raptor RDF Parser and Serializer library 2.0.8:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+ --enable-release Turn on optimizations (for maintainer).
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-shared[=PKGS] build shared libraries [default=yes]
+ --enable-static[=PKGS] build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+ --disable-largefile omit support for large files
+ --enable-parsers=LIST Use RDF parsers (default=all)
+ --enable-serializers=LIST Use RDF serializers (default=all)
+ --enable-debug Enable debug messages (default no).
+ --enable-silent-rules less verbose build output (undo: `make V=1')
+ --disable-silent-rules verbose build output (undo: `make V=0')
+ --enable-gtk-doc use gtk-doc to build documentation [[default=no]]
+ --enable-gtk-doc-html build documentation in html format [[default=yes]]
+ --enable-gtk-doc-pdf build documentation in pdf format [[default=no]]
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+ --with-xml2-config=PATH Location of libxml xml2-config
+ --with-xslt-config=PATH Location of libxslt xslt-config
+ --with-curl-config=PATH Location of libcurl curl-config
+ --with-icu-config=PATH Location of ICU icu-config
+ --with-libwww-config=PATH Location of W3C libwww libwww-config
+ --with-yajl=DIR YAJL installation directory or 'no' to disable (default=auto)
+ --with-xml-names=1.1|1.0 Select XML version name checking (default=1.0)
+ --with-www=NAME Use WWW library - curl (default), xml, libfetch, none
+ --with-memory-signing Sign allocated memory (default=no)
+ --with-html-dir=PATH path to installed docs
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ YACC The `Yet Another Compiler Compiler' implementation to use.
+ Defaults to the first program found out of: `bison -y', `byacc',
+ `yacc'.
+ YFLAGS The list of arguments that will be passed by default to $YACC.
+ This script will default YFLAGS to the empty string to avoid a
+ default value of `-d' given by some make applications.
+ PKG_CONFIG path to pkg-config utility
+ PKG_CONFIG_PATH
+ directories to add to pkg-config's search path
+ PKG_CONFIG_LIBDIR
+ path overriding pkg-config's built-in search path
+ GTKDOC_DEPS_CFLAGS
+ C compiler flags for GTKDOC_DEPS, overriding pkg-config
+ GTKDOC_DEPS_LIBS
+ linker flags for GTKDOC_DEPS, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <http://bugs.librdf.org/>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+Raptor RDF Parser and Serializer library configure 2.0.8
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if eval \${$3+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## -------------------------------------- ##
+## Report this to http://bugs.librdf.org/ ##
+## -------------------------------------- ##"
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by Raptor RDF Parser and Serializer library $as_me 2.0.8, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_config_headers="$ac_config_headers src/raptor_config.h"
+
+ac_aux_dir=
+for ac_dir in build "$srcdir"/build; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in build \"$srcdir\"/build" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+
+am__api_version='1.11'
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='raptor2'
+ VERSION='2.0.8'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+libxml_min_version=2.6.8
+
+libxslt_min_version=1.0.18
+
+libcurl_min_version=7.12.0
+libcurl_min_vernum=071200
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+release_version=no
+# Check whether --enable-release was given.
+if test "${enable_release+set}" = set; then :
+ enableval=$enable_release; \
+ if test "$enableval" = "yes"; then \
+ release_version=yes
+fi;
+fi
+
+
+ if test $release_version = yes; then
+ RELEASE_VERSION_TRUE=
+ RELEASE_VERSION_FALSE='#'
+else
+ RELEASE_VERSION_TRUE='#'
+ RELEASE_VERSION_FALSE=
+fi
+
+if test "$USE_MAINTAINER_MODE" = yes -a $release_version = no; then
+ CFLAGS=`echo $CFLAGS | sed -e "s/-O[A-Za-z0-9]*//"`
+ CXXFLAGS=`echo $CXXFLAGS | sed -e "s/-O[A-Za-z0-9]*//"`
+ CPPFLAGS=`echo $CPPFLAGS | sed -e "s/-O[A-Za-z0-9]*//"`
+ fi
+RPM_RELEASE=SNAP
+if test "$release_version" = "yes"; then
+ RPM_RELEASE=1
+fi
+
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar lib "link -lib"
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AR" && break
+ done
+fi
+if test -z "$AR"; then
+ ac_ct_AR=$AR
+ for ac_prog in ar lib "link -lib"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_AR" && break
+done
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+fi
+
+: ${AR=ar}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5
+$as_echo_n "checking the archiver ($AR) interface... " >&6; }
+if ${am_cv_ar_interface+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ am_cv_ar_interface=ar
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int some_variable = 0;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
+ (eval $am_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -eq 0; then
+ am_cv_ar_interface=ar
+ else
+ am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
+ (eval $am_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -eq 0; then
+ am_cv_ar_interface=lib
+ else
+ am_cv_ar_interface=unknown
+ fi
+ fi
+ rm -f conftest.lib libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5
+$as_echo "$am_cv_ar_interface" >&6; }
+
+case $am_cv_ar_interface in
+ar)
+ ;;
+lib)
+ # Microsoft lib, so override with the ar-lib wrapper script.
+ # FIXME: It is wrong to rewrite AR.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__AR in this case,
+ # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
+ # similar.
+ AR="$am_aux_dir/ar-lib $AR"
+ ;;
+unknown)
+ as_fn_error $? "could not determine $AR interface" "$LINENO" 5
+ ;;
+esac
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+if test "x$CC" != xcc; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+then
+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+ if test "x$CC" != xcc; then
+ # Test first that cc exists at all.
+ if { ac_try='cc -c conftest.$ac_ext >&5'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+ rm -f conftest2.*
+ if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+ then
+ # cc works too.
+ :
+ else
+ # cc exists but doesn't like -o.
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+ fi
+ fi
+ fi
+else
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+
+
+
+
+
+
+
+case `pwd` in
+ *\ * | *\ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4.2'
+macro_revision='1.3337'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
+else
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO ""
+}
+
+case "$ECHO" in
+ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in fgrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_FGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_FGREP"; then
+ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_FGREP=$FGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in dumpbin "link -dump"
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DUMPBIN"; then
+ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DUMPBIN" && break
+ done
+fi
+if test -z "$DUMPBIN"; then
+ ac_ct_DUMPBIN=$DUMPBIN
+ for ac_prog in dumpbin "link -dump"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DUMPBIN"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_DUMPBIN" && break
+done
+
+ if test "x$ac_ct_DUMPBIN" = x; then
+ DUMPBIN=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DUMPBIN=$ac_ct_DUMPBIN
+ fi
+fi
+
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+ cat conftest.out >&5
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+ ;;
+ esac
+ ;;
+ *-*-cygwin* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+ ;;
+ esac
+ ;;
+ * ) # unhandled hosts (and "normal" native builds)
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ esac
+ ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ if test "$GCC" != yes; then
+ reload_cmds=false
+ fi
+ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ # Keep this pattern in sync with the one in func_win32_libid.
+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc*)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+haiku*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[3-9]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+ case $host_os in
+ mingw* | pw32*)
+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+ want_nocaseglob=yes
+ else
+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+ fi
+ ;;
+ esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+ ac_ct_DLLTOOL=$DLLTOOL
+ # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DLLTOOL" = x; then
+ DLLTOOL="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DLLTOOL=$ac_ct_DLLTOOL
+ fi
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+ # two different shell functions defined in ltmain.sh
+ # decide which to use based on capabilities of $DLLTOOL
+ case `$DLLTOOL --help 2>&1` in
+ *--identify-strict*)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+ ;;
+ *)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+ ;;
+ esac
+ ;;
+*)
+ # fallback: assume linklib IS sharedlib
+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AR" && break
+ done
+fi
+if test -z "$AR"; then
+ ac_ct_AR=$AR
+ for ac_prog in ar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_AR" && break
+done
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ar_at_file=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ echo conftest.$ac_objext > conftest.lst
+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+ (eval $lt_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -eq 0; then
+ # Ensure the archiver fails upon bogus file names.
+ rm -f conftest.$ac_objext libconftest.a
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+ (eval $lt_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -ne 0; then
+ lt_cv_ar_at_file=@
+ fi
+ fi
+ rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris*)
+ symcode='[BDRT]'
+ ;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK '"\
+" {last_section=section; section=\$ 3};"\
+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+ (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data. */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_globsym_save_LIBS=$LIBS
+ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS=$lt_globsym_save_LIBS
+ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+ nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+ withval=$with_sysroot;
+else
+ with_sysroot=no
+fi
+
+
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+$as_echo "${with_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_cc_needs_belf=yes
+else
+ lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*)
+ case $host in
+ i?86-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+ LD="${LD-ld}_sol2"
+ fi
+ ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+ # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
+ MANIFEST_TOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+ fi
+else
+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+ cat conftest.err >&5
+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+ lt_cv_path_mainfest_tool=yes
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+ MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+ case $host_os in
+ rhapsody* | darwin*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DSYMUTIL"; then
+ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+ ac_ct_DSYMUTIL=$DSYMUTIL
+ # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DSYMUTIL"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DSYMUTIL" = x; then
+ DSYMUTIL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DSYMUTIL=$ac_ct_DSYMUTIL
+ fi
+else
+ DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NMEDIT"; then
+ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+ ac_ct_NMEDIT=$NMEDIT
+ # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NMEDIT"; then
+ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_NMEDIT="nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_NMEDIT" = x; then
+ NMEDIT=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NMEDIT=$ac_ct_NMEDIT
+ fi
+else
+ NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LIPO"; then
+ ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+ ac_ct_LIPO=$LIPO
+ # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_LIPO"; then
+ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_LIPO="lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_LIPO" = x; then
+ LIPO=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LIPO=$ac_ct_LIPO
+ fi
+else
+ LIPO="$ac_cv_prog_LIPO"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL"; then
+ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+ ac_ct_OTOOL=$OTOOL
+ # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL"; then
+ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OTOOL="otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL" = x; then
+ OTOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL=$ac_ct_OTOOL
+ fi
+else
+ OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL64"; then
+ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+ ac_ct_OTOOL64=$OTOOL64
+ # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL64"; then
+ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OTOOL64="otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL64" = x; then
+ OTOOL64=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL64=$ac_ct_OTOOL64
+ fi
+else
+ OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ cat conftest.err >&5
+ # Otherwise, if the output was created with a 0 exit code from
+ # the compiler, it worked.
+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_ld_exported_symbols_list=yes
+else
+ lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
+ echo "$RANLIB libconftest.a" >&5
+ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -s conftest.err && $GREP force_load conftest.err; then
+ cat conftest.err >&5
+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[012]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if ${ac_cv_prog_CPP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in dlfcn.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Set options
+
+
+
+ enable_dlopen=no
+
+
+ enable_win32_dll=no
+
+
+ # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+ # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+ withval=$with_pic; lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for lt_pkg in $withval; do
+ IFS="$lt_save_ifs"
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+ # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ case $cc_basename in
+ nvcc*)
+ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+ *)
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+ esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+
+
+
+
+
+ lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ lt_prog_compiler_static=
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+
+ case $cc_basename in
+ nvcc*) # Cuda Compiler Driver 2.2
+ lt_prog_compiler_wl='-Xlinker '
+ if test -n "$lt_prog_compiler_pic"; then
+ lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+ fi
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
+ nagfor*)
+ # NAG Fortran compiler
+ lt_prog_compiler_wl='-Wl,-Wl,,'
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-qpic'
+ lt_prog_compiler_static='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl=''
+ ;;
+ *Sun\ F* | *Sun*Fortran*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Qoption ld '
+ ;;
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ *Intel*\ [CF]*Compiler*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ *Portland\ Group*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ rdos*)
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_pic_works=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ runpath_var=
+ allow_undefined_flag=
+ always_export_symbols=no
+ archive_cmds=
+ archive_expsym_cmds=
+ compiler_needs_object=no
+ enable_shared_with_static_runtimes=no
+ export_dynamic_flag_spec=
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ hardcode_automatic=no
+ hardcode_direct=no
+ hardcode_direct_absolute=no
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_separator=
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ inherit_rpath=no
+ link_all_deplibs=unknown
+ module_cmds=
+ module_expsym_cmds=
+ old_archive_from_new_cmds=
+ old_archive_from_expsyms_cmds=
+ thread_safe_flag_spec=
+ whole_archive_flag_spec=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ linux* | k*bsd*-gnu | gnu*)
+ link_all_deplibs=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+
+ # On some targets, GNU ld is compatible enough with the native linker
+ # that we're better off using the native interface for both.
+ lt_use_gnu_ld_interface=no
+ if test "$with_gnu_ld" = yes; then
+ case $host_os in
+ aix*)
+ # The AIX port of GNU ld has always aspired to compatibility
+ # with the native linker. However, as the warning in the GNU ld
+ # block says, versions before 2.19.5* couldn't really create working
+ # shared libraries, regardless of the interface used.
+ case `$LD -v 2>&1` in
+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+ *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ fi
+
+ if test "$lt_use_gnu_ld_interface" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ export_dynamic_flag_spec='${wl}--export-all-symbols'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ haiku*)
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ link_all_deplibs=yes
+ ;;
+
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ nvcc*) # Cuda Compiler Driver 2.2
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf* | bgf* | bgxlf* | mpixlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ # Also, AIX nm treats weak defined symbols like other global
+ # defined symbols, whereas GNU nm marks them as "W".
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ file_list_spec='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ link_all_deplibs=no
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ export_dynamic_flag_spec='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_="/usr/lib:/lib"
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath_
+fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_="/usr/lib:/lib"
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath_
+fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ fi
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ case $cc_basename in
+ cl*)
+ # Native MSVC
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ file_list_spec='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+ else
+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+ enable_shared_with_static_runtimes=yes
+ exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+ # Don't use ranlib
+ old_postinstall_cmds='chmod 644 $oldlib'
+ postlink_cmds='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile="$lt_outputfile.exe"
+ lt_tool_outputfile="$lt_tool_outputfile.exe"
+ ;;
+ esac~
+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # Assume MSVC wrapper
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_from_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ enable_shared_with_static_runtimes=yes
+ ;;
+ esac
+ ;;
+
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ if test "$lt_cv_ld_force_load" = "yes"; then
+ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+ else
+ whole_archive_flag_spec=''
+ fi
+ link_all_deplibs=yes
+ allow_undefined_flag="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=func_echo_all
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+ else
+ ld_shlibs=no
+ fi
+
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2.*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+
+ # Older versions of the 11.00 compiler do not understand -b yet
+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler__b=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -b"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler__b=yes
+ fi
+ else
+ lt_cv_prog_compiler__b=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ # This should be the same for all languages, so no per-tag cache variable.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_irix_exported_symbol=yes
+else
+ lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+ if test "$lt_cv_irix_exported_symbol" = yes; then
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ fi
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ inherit_rpath=yes
+ link_all_deplibs=yes
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ hardcode_direct_absolute=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag='${wl}-z,text'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='${wl}-z,text'
+ allow_undefined_flag='${wl}-z,nodefs'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-R,$libdir'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ then
+ lt_cv_archive_cmds_need_lc=no
+ else
+ lt_cv_archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ case $host_os in
+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+ *) lt_sed_strip_eq="s,=/,/,g" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+ case $lt_search_path_spec in
+ *\;*)
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+ ;;
+ *)
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ esac
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[lt_foo]++; }
+ if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+ # AWK program above erroneously prepends '/' to C:/dos/paths
+ # for these hosts.
+ case $host_os in
+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+ esac
+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[4-9]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$cc_basename in
+ yes,*)
+ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ ;;
+
+ *,cl*)
+ # Native MSVC
+ libname_spec='$name'
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='${libname}.dll.lib'
+
+ case $build_os in
+ mingw*)
+ sys_lib_search_path_spec=
+ lt_save_ifs=$IFS
+ IFS=';'
+ for lt_path in $LIB
+ do
+ IFS=$lt_save_ifs
+ # Let DOS variable expansion print the short 8.3 style file name.
+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+ done
+ IFS=$lt_save_ifs
+ # Convert to MSYS style.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+ ;;
+ cygwin*)
+ # Convert to unix form, then to dos form, then back to unix form
+ # but this time dos style (no spaces!) so that the unix form looks
+ # like /cygdrive/c/PROGRA~1:/cygdr...
+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ *)
+ sys_lib_search_path_spec="$LIB"
+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # FIXME: find the short name or the path components, as spaces are
+ # common. (e.g. "Program Files" -> "PROGRA~1")
+ ;;
+ esac
+
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
+ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[23].*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2.*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+haiku*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+ postinstall_cmds='chmod 555 $lib'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[3-9]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+ lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+fi
+
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsdelf*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='NetBSD ld.elf_so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+ test -n "$runpath_var" ||
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$hardcode_direct" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+ test "$inherit_rpath" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+
+
+
+
+ if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+ lt_cv_dlopen="shl_load"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_shl_load=yes
+else
+ ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_svld_dlopen=yes
+else
+ ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_dld_link=yes
+else
+ ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ ;;
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+ # Report which library types will actually be built
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
+for ac_prog in flex lex
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LEX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LEX"; then
+ ac_cv_prog_LEX="$LEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LEX="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LEX=$ac_cv_prog_LEX
+if test -n "$LEX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5
+$as_echo "$LEX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LEX" && break
+done
+test -n "$LEX" || LEX=":"
+
+if test "x$LEX" != "x:"; then
+ cat >conftest.l <<_ACEOF
+%%
+a { ECHO; }
+b { REJECT; }
+c { yymore (); }
+d { yyless (1); }
+e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */
+ yyless ((input () != 0)); }
+f { unput (yytext[0]); }
+. { BEGIN INITIAL; }
+%%
+#ifdef YYTEXT_POINTER
+extern char *yytext;
+#endif
+int
+main (void)
+{
+ return ! yylex () + ! yywrap ();
+}
+_ACEOF
+{ { ac_try="$LEX conftest.l"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$LEX conftest.l") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5
+$as_echo_n "checking lex output file root... " >&6; }
+if ${ac_cv_prog_lex_root+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+if test -f lex.yy.c; then
+ ac_cv_prog_lex_root=lex.yy
+elif test -f lexyy.c; then
+ ac_cv_prog_lex_root=lexyy
+else
+ as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5
+$as_echo "$ac_cv_prog_lex_root" >&6; }
+LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
+
+if test -z "${LEXLIB+set}"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5
+$as_echo_n "checking lex library... " >&6; }
+if ${ac_cv_lib_lex+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ac_save_LIBS=$LIBS
+ ac_cv_lib_lex='none needed'
+ for ac_lib in '' -lfl -ll; do
+ LIBS="$ac_lib $ac_save_LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+`cat $LEX_OUTPUT_ROOT.c`
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_lex=$ac_lib
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ test "$ac_cv_lib_lex" != 'none needed' && break
+ done
+ LIBS=$ac_save_LIBS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5
+$as_echo "$ac_cv_lib_lex" >&6; }
+ test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5
+$as_echo_n "checking whether yytext is a pointer... " >&6; }
+if ${ac_cv_prog_lex_yytext_pointer+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # POSIX says lex can declare yytext either as a pointer or an array; the
+# default is implementation-dependent. Figure out which it is, since
+# not all implementations provide the %pointer and %array declarations.
+ac_cv_prog_lex_yytext_pointer=no
+ac_save_LIBS=$LIBS
+LIBS="$LEXLIB $ac_save_LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #define YYTEXT_POINTER 1
+`cat $LEX_OUTPUT_ROOT.c`
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_prog_lex_yytext_pointer=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_save_LIBS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5
+$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; }
+if test $ac_cv_prog_lex_yytext_pointer = yes; then
+
+$as_echo "#define YYTEXT_POINTER 1" >>confdefs.h
+
+fi
+rm -f conftest.l $LEX_OUTPUT_ROOT.c
+
+fi
+if test "X$LEX" != "X:" ; then
+ if echo "$LEX" | grep flex >/dev/null 2>&1; then
+ :
+ else
+ LEX="$SHELL $missing_dir/missing flex"
+ LEX_OUTPUT_ROOT=lex.yy
+
+ LEXLIB=''
+
+ fi
+fi
+
+if test "$USE_MAINTAINER_MODE" = yes; then
+ FLEX_MIN_VERSION=2.5.19
+ FLEX_REC_VERSION=2.5.33
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking flex version" >&5
+$as_echo_n "checking flex version... " >&6; }
+ if test "X$LEX" != "X:"; then
+ FLEX_VERSION=`$LEX -V 2>&1 | $AWK '{print $NF}'`
+ FLEX_VERSION_DEC=`echo $FLEX_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+
+ FLEX_MIN_VERSION_DEC=`echo $FLEX_MIN_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+
+ if test $FLEX_VERSION_DEC -ge $FLEX_MIN_VERSION_DEC; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FLEX_VERSION - OK" >&5
+$as_echo "$FLEX_VERSION - OK" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: version $FLEX_VERSION - too old" >&5
+$as_echo "version $FLEX_VERSION - too old" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please get flex from http://flex.sourceforge.net/" >&5
+$as_echo "$as_me: WARNING: Please get flex from http://flex.sourceforge.net/" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: version $FLEX_MIN_VERSION ($FLEX_REC_VERSION recommended)" >&5
+$as_echo "$as_me: WARNING: version $FLEX_MIN_VERSION ($FLEX_REC_VERSION recommended)" >&2;}
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "flex too old
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not present" >&5
+$as_echo "not present" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please get flex from http://flex.sourceforge.net/" >&5
+$as_echo "$as_me: WARNING: Please get flex from http://flex.sourceforge.net/" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: version $FLEX_MIN_VERSION ($FLEX_REC_VERSION recommended)" >&5
+$as_echo "$as_me: WARNING: version $FLEX_MIN_VERSION ($FLEX_REC_VERSION recommended)" >&2;}
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "flex not present
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+fi
+
+BISON_MIN_VERSION=2.4
+for ac_prog in 'bison -y' byacc
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_YACC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$YACC"; then
+ ac_cv_prog_YACC="$YACC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_YACC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+YACC=$ac_cv_prog_YACC
+if test -n "$YACC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
+$as_echo "$YACC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$YACC" && break
+done
+test -n "$YACC" || YACC="yacc"
+
+if test "$USE_MAINTAINER_MODE" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU bison" >&5
+$as_echo_n "checking for GNU bison... " >&6; }
+ # Match these styles of versions
+ # GNU Bison version 1.28
+ # bison (GNU Bison) 1.875
+ BISON_VERSION=`$YACC --version 2>&1 | sed -ne 's/^.*GNU Bison[^0-9]*//p'`
+ if test "X$BISON_VERSION" != X; then
+ BISON_VERSION_DEC=`echo $BISON_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+
+ BISON_MIN_VERSION_DEC=`echo $BISON_MIN_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+
+ if test $BISON_VERSION_DEC -ge $BISON_MIN_VERSION_DEC; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON_VERSION - OK" >&5
+$as_echo "$BISON_VERSION - OK" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: version $BISON_VERSION is too old" >&5
+$as_echo "version $BISON_VERSION is too old" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please get GNU Bison from http://www.gnu.org/software/bison/" >&5
+$as_echo "$as_me: WARNING: Please get GNU Bison from http://www.gnu.org/software/bison/" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: version $BISON_MIN_VERSION or newer" >&5
+$as_echo "$as_me: WARNING: version $BISON_MIN_VERSION or newer" >&2;}
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "GNU Bison too old
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "$YACC is not GNU bison
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+fi
+
+
+# Find a tar command for 'make dist'
+for ac_prog in gnutar gtar tar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_TAR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$TAR"; then
+ ac_cv_prog_TAR="$TAR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_TAR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+TAR=$ac_cv_prog_TAR
+if test -n "$TAR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR" >&5
+$as_echo "$TAR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TAR" && break
+done
+
+for ac_prog in perl
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PERL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$PERL"; then
+ ac_cv_prog_PERL="$PERL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_PERL="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+PERL=$ac_cv_prog_PERL
+if test -n "$PERL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$PERL" && break
+done
+
+
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+for ac_prog in echo
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RECHO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RECHO"; then
+ ac_cv_prog_RECHO="$RECHO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RECHO="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RECHO=$ac_cv_prog_RECHO
+if test -n "$RECHO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RECHO" >&5
+$as_echo "$RECHO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$RECHO" && break
+done
+
+RECHO_C=
+RECHO_N=
+case `$RECHO -n x` in
+ -n*)
+ case `$RECHO 'xy\c'` in
+ *c*)
+ ;;
+ xy)
+ RECHO_C='\c'
+ ;;
+ esac;;
+ *)
+ RECHO_N='-n'
+ ;;
+esac
+
+
+
+
+
+
+# GCC warning options
+# http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
+#
+# Too noisy:
+# -Wconversion
+# -Wunused-parameter : variables can be marked __attribute__('unused')
+# -Wmissing-noreturn : functions can be marked with __attribute__((__noreturn__))
+# -Wformat-nonliteral : variables are used in raptor_rdfxml.c for format strings: fixable with code change
+# -Wsign-conversion: : many int / unsigned int / size_t
+#
+# Apple gcc specific (probably): -Wshorten-64-to-32
+possible_warnings="\
+-Wall \
+-Wc++-compat \
+-Wextra \
+-Wunused \
+\
+-Waggregate-return \
+-Wbad-function-cast \
+-Wcast-align \
+-Wdeclaration-after-statement \
+-Wdisabled-optimization \
+-Wdiv-by-zero \
+-Wendif-labels \
+-Werror-implicit-function-declaration \
+-Wfloat-equal \
+-Wformat-security \
+-Wframe-larger-than=4096 \
+-Winit-self \
+-Winline \
+-Wmissing-declarations \
+-Wmissing-format-attribute \
+-Wmissing-noreturn \
+-Wmissing-prototypes \
+-Wnested-externs \
+-Wold-style-definition \
+-Wpacked \
+-Wpointer-arith \
+-Wredundant-decls \
+-Wshadow \
+-Wsign-compare \
+-Wstrict-prototypes \
+-Wswitch-enum \
+-Wundef \
+-Wunsafe-loop-optimizations \
+-Wwrite-strings \
+\
+-Wshorten-64-to-32
+\
+-Wno-conversion \
+-Wno-sign-conversion \
+-Wno-missing-field-initializers \
+-Wno-system-headers \
+-Wno-unused-parameter \
+"
+
+warning_cflags=
+if test "$USE_MAINTAINER_MODE" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for supported $CC warning flags" >&5
+$as_echo_n "checking for supported $CC warning flags... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $warning_cflags" >&5
+$as_echo "$warning_cflags" >&6; }
+ for warning in $possible_warnings; do
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports $warning" >&5
+$as_echo_n "checking whether $CC supports $warning... " >&6; }
+ redland_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $warning"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ redland_cc_flag=yes
+else
+ redland_cc_flag=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$redland_save_CFLAGS"
+ if test "X$redland_cc_flag" = "Xyes"; then
+ warning_cflags="$warning_cflags $warning"
+ else
+ :
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $redland_cc_flag" >&5
+$as_echo "$redland_cc_flag" >&6; }
+
+ done
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking $CC supports warning flags" >&5
+$as_echo_n "checking $CC supports warning flags... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $warning_cflags" >&5
+$as_echo "$warning_cflags" >&6; }
+fi
+
+MAINTAINER_CPPFLAGS="$warning_cflags"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+for ac_header in errno.h fcntl.h stdlib.h stddef.h unistd.h string.h limits.h math.h getopt.h sys/stat.h sys/param.h sys/stat.h sys/time.h setjmp.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+for ac_func in stat
+do :
+ ac_fn_c_check_func "$LINENO" "stat" "ac_cv_func_stat"
+if test "x$ac_cv_func_stat" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_STAT 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
+$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
+if ${ac_cv_header_time+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+
+int
+main ()
+{
+if ((struct tm *) 0)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_time=yes
+else
+ ac_cv_header_time=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
+$as_echo "$ac_cv_header_time" >&6; }
+if test $ac_cv_header_time = yes; then
+
+$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
+
+fi
+
+for ac_header in fetch.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "fetch.h" "ac_cv_header_fetch_h" "#include <stdio.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+
+"
+if test "x$ac_cv_header_fetch_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_FETCH_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if ${ac_cv_c_const+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+#ifndef __cplusplus
+ /* Ultrix mips cc rejects this sort of thing. */
+ typedef int charset[2];
+ const charset cs = { 0, 0 };
+ /* SunOS 4.1.1 cc rejects this. */
+ char const *const *pcpcc;
+ char **ppc;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+ /* AIX XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+ pcpcc = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+ ++pcpcc;
+ ppc = (char**) pcpcc;
+ pcpcc = (char const *const *) ppc;
+ { /* SCO 3.2v4 cc rejects this sort of thing. */
+ char tx;
+ char *t = &tx;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+ if (s) return 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+ }
+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
+ }
+ { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; } bx;
+ struct s *b = &bx; b->j = 5;
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+ if (!foo) return 0;
+ }
+ return !cs[0] && !zero.x;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_const=yes
+else
+ ac_cv_c_const=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+$as_echo "#define const /**/" >>confdefs.h
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_bigendian=unknown
+ # See if we're dealing with a universal compiler.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+ # Check for potential -arch flags. It is not universal unless
+ # there are at least two -arch flags with different values.
+ ac_arch=
+ ac_prev=
+ for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+ if test -n "$ac_prev"; then
+ case $ac_word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+ ac_arch=$ac_word
+ else
+ ac_cv_c_bigendian=universal
+ break
+ fi
+ ;;
+ esac
+ ac_prev=
+ elif test "x$ac_word" = "x-arch"; then
+ ac_prev=arch
+ fi
+ done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if sys/param.h defines the BYTE_ORDER macro.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+ && LITTLE_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_bigendian=yes
+else
+ ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # It does; now see whether it defined to _BIG_ENDIAN or not.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_bigendian=yes
+else
+ ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # Compile a test program.
+ if test "$cross_compiling" = yes; then :
+ # Try to guess by grepping values from an object file.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+short int ascii_mm[] =
+ { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+ short int ascii_ii[] =
+ { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+ int use_ascii (int i) {
+ return ascii_mm[i] + ascii_ii[i];
+ }
+ short int ebcdic_ii[] =
+ { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+ short int ebcdic_mm[] =
+ { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+ int use_ebcdic (int i) {
+ return ebcdic_mm[i] + ebcdic_ii[i];
+ }
+ extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+ ac_cv_c_bigendian=yes
+ fi
+ if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+ if test "$ac_cv_c_bigendian" = unknown; then
+ ac_cv_c_bigendian=no
+ else
+ # finding both strings is unlikely to happen, but who knows?
+ ac_cv_c_bigendian=unknown
+ fi
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long int l;
+ char c[sizeof (long int)];
+ } u;
+ u.l = 1;
+ return u.c[sizeof (long int) - 1] == 1;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_c_bigendian=no
+else
+ ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+ yes)
+ $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+ no)
+ ;; #(
+ universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+ ;; #(
+ *)
+ as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+ inline | yes) ;;
+ *)
+ case $ac_cv_c_inline in
+ no) ac_val=;;
+ *) ac_val=$ac_cv_c_inline;;
+ esac
+ cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+ ;;
+esac
+
+
+version_major=`echo $VERSION | sed -e 's/^\([^\.]*\)\.\([^\.]*\)\.\(.*\)$/\1/'`
+version_minor=`echo $VERSION | sed -e 's/^\([^\.]*\)\.\([^\.]*\)\.\(.*\)$/\2/'`
+version_release=`echo $VERSION | sed -e 's/^\([^\.]*\)\.\([^\.]*\)\.\(.*\)$/\3/'`
+
+version_decimal=`expr $version_major \* 10000 + $version_minor \* 100 + $version_release`
+
+# The minimum runtime API version that is supported. MUST be updated at
+# an API break as well as changing the libtool version
+min_version_decimal=20000
+
+
+cat >>confdefs.h <<_ACEOF
+#define RAPTOR_VERSION_MAJOR $version_major
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define RAPTOR_VERSION_MINOR $version_minor
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define RAPTOR_VERSION_RELEASE $version_release
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define RAPTOR_VERSION_DECIMAL $version_decimal
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define RAPTOR_MIN_VERSION_DECIMAL $min_version_decimal
+_ACEOF
+
+
+# for raptor-config.in
+RAPTOR_VERSION_MAJOR=$version_major
+RAPTOR_VERSION_MINOR=$version_minor
+RAPTOR_VERSION_RELEASE=$version_release
+RAPTOR_VERSION_DECIMAL=$version_decimal
+
+
+
+
+
+
+# Libtool versioning
+#
+# CURRENT
+# The most recent interface number that this library implements.
+#
+# REVISION
+# The implementation number of the CURRENT interface.
+#
+# AGE
+# The difference between the newest and oldest interfaces that this
+# library implements. In other words, the library implements all the
+# interface numbers in the range from number `CURRENT - AGE' to
+# `CURRENT'.
+#
+# Rules:
+# 1. Start with version information of `0:0:0' for each libtool library.
+#
+# 2. Update the version information only immediately before a public
+# release of your software. More frequent updates are unnecessary,
+# and only guarantee that the current interface number gets larger
+# faster.
+#
+# 3. If the library source code has changed at all since the last
+# update, then increment REVISION (`C:R:A' becomes `C:r+1:A').
+#
+# 4. If any interfaces have been added, removed, or changed since the
+# last update, increment CURRENT, and set REVISION to 0.
+#
+# 5. If any interfaces have been added since the last public release,
+# then increment AGE.
+#
+# 6. If any interfaces have been removed since the last public release,
+# then set AGE to 0.
+#
+# syntax: CURRENT[:REVISION[:AGE]]
+RAPTOR_LIBTOOL_VERSION=0:0:0
+
+
+
+for ac_func in gettimeofday getopt getopt_long stricmp strcasecmp vsnprintf isascii setjmp strtok_r
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ if test "$ac_cv_func_strtok_r" = "no"; then
+ NEED_STRTOK_R_TRUE=
+ NEED_STRTOK_R_FALSE='#'
+else
+ NEED_STRTOK_R_TRUE='#'
+ NEED_STRTOK_R_FALSE=
+fi
+
+
+oCPPFLAGS="$CPPFLAGS"
+CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS"
+for ac_func in vasprintf
+do :
+ ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf"
+if test "x$ac_cv_func_vasprintf" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_VASPRINTF 1
+_ACEOF
+
+fi
+done
+
+CPPFLAGS="$oCPPFLAGS"
+
+
+ if test $ac_cv_func_strcasecmp = no -a $ac_cv_func_stricmp = no; then
+ STRCASECMP_TRUE=
+ STRCASECMP_FALSE='#'
+else
+ STRCASECMP_TRUE='#'
+ STRCASECMP_FALSE=
+fi
+
+ if test $ac_cv_func_getopt = no -a $ac_cv_func_getopt_long = no; then
+ GETOPT_TRUE=
+ GETOPT_FALSE='#'
+else
+ GETOPT_TRUE='#'
+ GETOPT_FALSE=
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether need to declare optind" >&5
+$as_echo_n "checking whether need to declare optind... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#endif
+int
+main ()
+{
+int x=optind;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+else
+
+$as_echo "#define NEED_OPTIND_DECLARATION 1" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+
+
+if test $ac_cv_func_vsnprintf = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vsnprintf has C99 compatible return value" >&5
+$as_echo_n "checking whether vsnprintf has C99 compatible return value... " >&6; }
+ if test "$cross_compiling" = yes; then :
+
+$as_echo "#define CHECK_VSNPRINTF_RUNTIME 1" >>confdefs.h
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#include <stdarg.h>
+
+static int is_c99(char *buf, char *s, ...) {
+ va_list args;
+ int r;
+ va_start(args, s);
+ r = vsnprintf(buf, buf ? 5 : 0, s, args);
+ va_end(args);
+
+ return (r == 7);
+}
+
+int main(void) {
+ char buffer[32];
+ return (is_c99(NULL, "1234567") ? 0 : 10)
+ + (is_c99(buffer, "1234567") ? 0 : 1);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+$as_echo "#define HAVE_C99_VSNPRINTF 1" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+
+# Save LIBS
+oLIBS="$LIBS"
+
+RAPTOR_LDFLAGS=
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+ enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if ${ac_cv_sys_file_offset_bits+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_file_offset_bits=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if ${ac_cv_sys_large_files+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ fi
+
+
+fi
+
+
+
+
+
+# Check whether --with-xml2-config was given.
+if test "${with_xml2_config+set}" = set; then :
+ withval=$with_xml2_config; xml2_config="$withval"
+else
+ xml2_config=""
+fi
+
+
+if test "X$xml2_config" != "Xno" ; then
+ if test "X$xml2_config" != "X" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $xml2_config" >&5
+$as_echo_n "checking for $xml2_config... " >&6; }
+
+ if test -f $xml2_config ; then
+ XML_CONFIG=$xml2_config
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no - searching PATH" >&5
+$as_echo "no - searching PATH" >&6; }
+ fi
+ fi
+ if test "X$XML_CONFIG" = "X" ; then
+ for ac_prog in xml2-config
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_XML_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$XML_CONFIG"; then
+ ac_cv_prog_XML_CONFIG="$XML_CONFIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_XML_CONFIG="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+XML_CONFIG=$ac_cv_prog_XML_CONFIG
+if test -n "$XML_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XML_CONFIG" >&5
+$as_echo "$XML_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$XML_CONFIG" && break
+done
+
+ fi
+fi
+
+
+# Check whether --with-xslt-config was given.
+if test "${with_xslt_config+set}" = set; then :
+ withval=$with_xslt_config; xslt_config="$withval"
+else
+ xslt_config=""
+fi
+
+
+if test "X$xslt_config" != "Xno" ; then
+ if test "X$xslt_config" != "X" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $xslt_config" >&5
+$as_echo_n "checking for $xslt_config... " >&6; }
+
+ if test -f $xslt_config ; then
+ XSLT_CONFIG=$xslt_config
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no - searching PATH" >&5
+$as_echo "no - searching PATH" >&6; }
+ fi
+ fi
+ if test "X$XSLT_CONFIG" = "X" ; then
+ for ac_prog in xslt-config
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_XSLT_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$XSLT_CONFIG"; then
+ ac_cv_prog_XSLT_CONFIG="$XSLT_CONFIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_XSLT_CONFIG="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+XSLT_CONFIG=$ac_cv_prog_XSLT_CONFIG
+if test -n "$XSLT_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSLT_CONFIG" >&5
+$as_echo "$XSLT_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$XSLT_CONFIG" && break
+done
+
+ fi
+fi
+
+
+# Check whether --with-curl-config was given.
+if test "${with_curl_config+set}" = set; then :
+ withval=$with_curl_config; curl_config="$withval"
+else
+ curl_config=""
+fi
+
+
+if test "X$curl_config" != "Xno" ; then
+ if test "X$curl_config" != "X" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $curl_config" >&5
+$as_echo_n "checking for $curl_config... " >&6; }
+
+ if test -f $curl_config ; then
+ CURL_CONFIG=$curl_config
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no - searching PATH" >&5
+$as_echo "no - searching PATH" >&6; }
+ fi
+ fi
+ if test "X$CURL_CONFIG" = "X" ; then
+ for ac_prog in curl-config
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CURL_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CURL_CONFIG"; then
+ ac_cv_prog_CURL_CONFIG="$CURL_CONFIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CURL_CONFIG="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CURL_CONFIG=$ac_cv_prog_CURL_CONFIG
+if test -n "$CURL_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CURL_CONFIG" >&5
+$as_echo "$CURL_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CURL_CONFIG" && break
+done
+
+ fi
+fi
+
+
+
+
+# Check whether --with-icu-config was given.
+if test "${with_icu_config+set}" = set; then :
+ withval=$with_icu_config; icu_config="$withval"
+else
+ icu_config=""
+fi
+
+
+have_icu=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ICU" >&5
+$as_echo_n "checking for ICU... " >&6; }
+if test "X$icu_config" != "Xno" -a "X$icu_config" != "X" ; then
+ ICU_CONFIG=$icu_config
+ ICU_VERSION=`$ICU_CONFIG --version`
+ have_icu=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes - version $ICU_VERSION" >&5
+$as_echo "yes - version $ICU_VERSION" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+# Check whether --with-www-config was given.
+if test "${with_www_config+set}" = set; then :
+ withval=$with_www_config; libwww_config="$withval"
+else
+ libwww_config=""
+fi
+
+
+if test "X$libwww_config" != "Xno" -a "X$libwww_config" != "X" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libwww is no longer supported" >&5
+$as_echo "$as_me: WARNING: libwww is no longer supported" >&2;}
+fi
+
+
+have_libxml=0
+need_libxml=0
+
+oCPPFLAGS="$CPPFLAGS"
+if test "X$XML_CONFIG" != X; then
+ CPPFLAGS="`$XML_CONFIG --cflags` $CPPFLAGS"
+ LIBS="$LIBS `$XML_CONFIG --libs`"
+ ac_fn_c_check_func "$LINENO" "xmlCreatePushParserCtxt" "ac_cv_func_xmlCreatePushParserCtxt"
+if test "x$ac_cv_func_xmlCreatePushParserCtxt" = xyes; then :
+ have_xmlCreatePushParserCtxt=yes
+else
+ have_xmlCreatePushParserCtxt=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for system (GNOME) libxml library" >&5
+$as_echo_n "checking for system (GNOME) libxml library... " >&6; }
+ if test $have_xmlCreatePushParserCtxt = yes; then
+ have_libxml=1
+ LIBXML_VERSION=`$XML_CONFIG --version`
+ libxml_version_dec=`echo $LIBXML_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+ libxml_min_version_dec=`echo $libxml_min_version | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes - version $LIBXML_VERSION" >&5
+$as_echo "yes - version $LIBXML_VERSION" >&6; }
+ if test $libxml_version_dec -lt $libxml_min_version_dec; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Using libxml $LIBXML_VERSION is unsupported - $libxml_min_version or newer required." >&5
+$as_echo "$as_me: WARNING: Using libxml $LIBXML_VERSION is unsupported - $libxml_min_version or newer required." >&2;}
+ have_libxml=0
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+
+ for ac_header in libxml/nanohttp.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "libxml/nanohttp.h" "ac_cv_header_libxml_nanohttp_h" "$ac_includes_default"
+if test "x$ac_cv_header_libxml_nanohttp_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBXML_NANOHTTP_H 1
+_ACEOF
+
+fi
+
+done
+
+ for ac_header in libxml/parser.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "libxml/parser.h" "ac_cv_header_libxml_parser_h" "$ac_includes_default"
+if test "x$ac_cv_header_libxml_parser_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBXML_PARSER_H 1
+_ACEOF
+
+fi
+
+done
+
+ for ac_header in libxml/hash.h libxml/SAX2.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#ifdef HAVE_LIBXML_PARSER_H
+#include <libxml/parser.h>
+#endif
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ if test "$ac_cv_header_libxml_parser_h" = no -a "$ac_cv_header_gnome_xml_parser_h" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libxml library found but not headers - disabling" >&5
+$as_echo "$as_me: WARNING: libxml library found but not headers - disabling" >&2;}
+ have_libxml=0
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libxml xmlEntity has name_length field" >&5
+$as_echo_n "checking if libxml xmlEntity has name_length field... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef HAVE_LIBXML_PARSER_H
+#include <libxml/parser.h>
+#endif
+
+int
+main ()
+{
+xmlEntity foo; foo.name_length=0
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define RAPTOR_LIBXML_ENTITY_NAME_LENGTH 1" >>confdefs.h
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libxml xmlEntity has etype field" >&5
+$as_echo_n "checking if libxml xmlEntity has etype field... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef HAVE_LIBXML_PARSER_H
+#include <libxml/parser.h>
+#endif
+
+int
+main ()
+{
+xmlEntity foo; foo.etype=0
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define RAPTOR_LIBXML_ENTITY_ETYPE 1" >>confdefs.h
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libxml xmlSAXHandler has initialized field" >&5
+$as_echo_n "checking if libxml xmlSAXHandler has initialized field... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef HAVE_LIBXML_PARSER_H
+#include <libxml/parser.h>
+#endif
+
+int
+main ()
+{
+xmlSAXHandler foo; foo.initialized=0
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define RAPTOR_LIBXML_XMLSAXHANDLER_INITIALIZED 1" >>confdefs.h
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libxml xmlSAXHandler has externalSubset field" >&5
+$as_echo_n "checking if libxml xmlSAXHandler has externalSubset field... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef HAVE_LIBXML_PARSER_H
+#include <libxml/parser.h>
+#endif
+
+int
+main ()
+{
+xmlSAXHandler foo; foo.externalSubset=NULL
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define RAPTOR_LIBXML_XMLSAXHANDLER_EXTERNALSUBSET 1" >>confdefs.h
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+ for ac_func in xmlSAX2InternalSubset xmlCtxtUseOptions
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libxml has parser option XML_PARSE_NONET" >&5
+$as_echo_n "checking if libxml has parser option XML_PARSE_NONET... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef HAVE_LIBXML_PARSER_H
+#include <libxml/parser.h>
+#endif
+
+int
+main ()
+{
+xmlParserOption foo; foo = XML_PARSE_NONET
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define RAPTOR_LIBXML_XML_PARSE_NONET 1" >>confdefs.h
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ for ac_header in libxml/HTMLparser.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "libxml/HTMLparser.h" "ac_cv_header_libxml_HTMLparser_h" "$ac_includes_default"
+if test "x$ac_cv_header_libxml_HTMLparser_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBXML_HTMLPARSER_H 1
+_ACEOF
+
+fi
+
+done
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libxml has parser option HTML_PARSE_NONET" >&5
+$as_echo_n "checking if libxml has parser option HTML_PARSE_NONET... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef HAVE_LIBXML_HTMLPARSER_H
+#include <libxml/HTMLparser.h>
+#endif
+
+int
+main ()
+{
+htmlParserOption foo; foo = HTML_PARSE_NONET
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define RAPTOR_LIBXML_HTML_PARSE_NONET 1" >>confdefs.h
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+
+fi
+CPPFLAGS="$oCPPFLAGS"
+LIBS="$oLIBS"
+
+
+have_libxslt=0
+
+oCPPFLAGS="$CPPFLAGS"
+if test "X$XSLT_CONFIG" != X; then
+ CPPFLAGS="`$XSLT_CONFIG --cflags` $CPPFLAGS"
+ LIBS="$LIBS `$XSLT_CONFIG --libs`"
+ ac_fn_c_check_func "$LINENO" "xsltSaveResultToString" "ac_cv_func_xsltSaveResultToString"
+if test "x$ac_cv_func_xsltSaveResultToString" = xyes; then :
+ have_xsltSaveResultToString=yes
+else
+ have_xsltSaveResultToString=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for system libxslt library" >&5
+$as_echo_n "checking for system libxslt library... " >&6; }
+ if test $have_xsltSaveResultToString = yes; then
+ have_libxslt=1
+ LIBXSLT_VERSION=`$XSLT_CONFIG --version`
+ libxslt_version_dec=`echo $LIBXSLT_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+ libxslt_min_version_dec=`echo $libxslt_min_version | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes - version $LIBXSLT_VERSION" >&5
+$as_echo "yes - version $LIBXSLT_VERSION" >&6; }
+ if test $libxslt_version_dec -lt $libxslt_min_version_dec; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Using libxslt $LIBXSLT_VERSION is unsupported - $libxslt_min_version or newer required." >&5
+$as_echo "$as_me: WARNING: Using libxslt $LIBXSLT_VERSION is unsupported - $libxslt_min_version or newer required." >&2;}
+ have_libxslt=0
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+
+ ac_fn_c_check_func "$LINENO" "xsltInit" "ac_cv_func_xsltInit"
+if test "x$ac_cv_func_xsltInit" = xyes; then :
+
+fi
+
+
+ for ac_header in libxslt/xslt.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "libxslt/xslt.h" "ac_cv_header_libxslt_xslt_h" "$ac_includes_default"
+if test "x$ac_cv_header_libxslt_xslt_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBXSLT_XSLT_H 1
+_ACEOF
+
+fi
+
+done
+
+ if test "$ac_cv_header_libxslt_xslt_h" = no ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libxslt library found but not headers - disabling" >&5
+$as_echo "$as_me: WARNING: libxslt library found but not headers - disabling" >&2;}
+ have_libxslt_lib=0
+ have_libxslt=0
+ fi
+fi
+CPPFLAGS="$oCPPFLAGS"
+LIBS="$oLIBS"
+
+
+
+
+# Check whether --with-yajl was given.
+if test "${with_yajl+set}" = set; then :
+ withval=$with_yajl; yajl_prefix="$withval"
+else
+ yajl_prefix="none"
+fi
+
+
+if test "x$yajl_prefix" != "xno" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for yajl installation" >&5
+$as_echo_n "checking for yajl installation... " >&6; }
+
+ if test "x$yajl_prefix" = "xyes" ; then
+ yajl_prefix="none"
+ fi
+
+ # Nothing given - search
+ if test "X$yajl_prefix" = "Xnone" ; then
+ for dir in /opt/local /usr/local /usr; do
+ if test -r $dir/include/yajl/yajl_parse.h; then
+ yajl_prefix=$dir
+ break
+ fi
+ done
+ fi
+
+ if test "X$yajl_prefix" = "Xnone" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found. Get it from http://lloyd.github.com/yajl/ and use --with-yajl=DIR if necessary to configure the installation directory." >&5
+$as_echo "not found. Get it from http://lloyd.github.com/yajl/ and use --with-yajl=DIR if necessary to configure the installation directory." >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $yajl_prefix" >&5
+$as_echo "$yajl_prefix" >&6; }
+ CPPFLAGS="$oCPPFLAGS"
+ LIBS="$oLIBS"
+
+ if test "$yajl_prefix" = "/usr"; then
+ yajl_prefix=
+ else
+ LDFLAGS="-L$yajl_prefix/lib $LDFLAGS"
+ CPPFLAGS="-I$yajl_prefix/include $CPPFLAGS"
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for yajl_parse in -lyajl" >&5
+$as_echo_n "checking for yajl_parse in -lyajl... " >&6; }
+if ${ac_cv_lib_yajl_yajl_parse+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lyajl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char yajl_parse ();
+int
+main ()
+{
+return yajl_parse ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_yajl_yajl_parse=yes
+else
+ ac_cv_lib_yajl_yajl_parse=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_yajl_yajl_parse" >&5
+$as_echo "$ac_cv_lib_yajl_yajl_parse" >&6; }
+if test "x$ac_cv_lib_yajl_yajl_parse" = xyes; then :
+ libyajl=1
+else
+ libyajl=0
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for yajl_tree_parse in -lyajl" >&5
+$as_echo_n "checking for yajl_tree_parse in -lyajl... " >&6; }
+if ${ac_cv_lib_yajl_yajl_tree_parse+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lyajl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char yajl_tree_parse ();
+int
+main ()
+{
+return yajl_tree_parse ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_yajl_yajl_tree_parse=yes
+else
+ ac_cv_lib_yajl_yajl_tree_parse=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_yajl_yajl_tree_parse" >&5
+$as_echo "$ac_cv_lib_yajl_yajl_tree_parse" >&6; }
+if test "x$ac_cv_lib_yajl_yajl_tree_parse" = xyes; then :
+ yajl_api_version=2
+else
+ yajl_api_version=1
+fi
+
+ for ac_header in yajl/yajl_parse.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "yajl/yajl_parse.h" "ac_cv_header_yajl_yajl_parse_h" "$ac_includes_default"
+if test "x$ac_cv_header_yajl_yajl_parse_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_YAJL_YAJL_PARSE_H 1
+_ACEOF
+
+fi
+
+done
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking YAJL API version" >&5
+$as_echo_n "checking YAJL API version... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $yajl_api_version" >&5
+$as_echo "$yajl_api_version" >&6; }
+ if test $yajl_api_version = 2; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_YAJL2 1
+_ACEOF
+
+ fi
+
+ CPPFLAGS="$oCPPFLAGS"
+ LIBS="$oLIBS"
+ fi
+fi
+
+
+rdfxml_parser=no
+ntriples_parser=no
+turtle_parser=no
+trig_parser=no
+rss_parser=no
+grddl_parser=no
+guess_parser=yes
+rdfa_parser=no
+json_parser=no
+nquads_parser=no
+
+rdf_parsers_available="rdfxml ntriples turtle trig guess rss-tag-soup rdfa nquads"
+rdf_parsers_enabled=
+
+
+grddl_parser_ok=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking GRDDL parser requirements" >&5
+$as_echo_n "checking GRDDL parser requirements... " >&6; }
+if test $have_libxml = 1 -a $have_libxslt = 1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ grddl_parser_ok=yes
+ rdf_parsers_available="$rdf_parsers_available grddl"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no - libxml2 and libxslt are both not available" >&5
+$as_echo "no - libxml2 and libxslt are both not available" >&6; }
+fi
+
+json_parser_ok=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking JSON parser requirements" >&5
+$as_echo_n "checking JSON parser requirements... " >&6; }
+if test "X$ac_cv_header_yajl_yajl_parse_h" = Xyes -a "X$ac_cv_lib_yajl_yajl_parse" = Xyes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ json_parser_ok=yes
+ rdf_parsers_available="$rdf_parsers_available json"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no - libyajl is not available" >&5
+$as_echo "no - libyajl is not available" >&6; }
+fi
+
+
+
+# This is needed because autoheader can't work out which computed
+# symbols must be pulled from acconfig.h into config.h.in
+if test "x" = "y"; then
+
+$as_echo "#define RAPTOR_PARSER_RDFXML 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_PARSER_NTRIPLES 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_PARSER_TURTLE 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_PARSER_TRIG 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_PARSER_RSS 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_PARSER_GRDDL 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_PARSER_GUESS 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_PARSER_RDFA 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_PARSER_JSON 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_PARSER_NQUADS 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking RDF parsers required" >&5
+$as_echo_n "checking RDF parsers required... " >&6; }
+# Check whether --enable-parsers was given.
+if test "${enable_parsers+set}" = set; then :
+ enableval=$enable_parsers; parsers="$enableval"
+fi
+
+if test "X$parsers" = Xall -o "X$parsers" = X; then
+ parsers="$rdf_parsers_available"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: all" >&5
+$as_echo "all" >&6; }
+elif test "X$parsers" = Xnone; then
+ parsers=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $parsers" >&5
+$as_echo "$parsers" >&6; }
+fi
+
+for parser in $parsers; do
+ p=$parser
+ if test $p = rss-tag-soup; then
+ p=rss
+ fi
+
+ if test $p = grddl; then
+ if test $grddl_parser_ok != yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GRDDL parser is not available" >&5
+$as_echo "$as_me: WARNING: GRDDL parser is not available" >&2;}
+ continue
+ fi
+ fi
+
+ if test $p = json; then
+ if test $json_parser_ok != yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: YAJL is not available" >&5
+$as_echo "$as_me: WARNING: YAJL is not available" >&2;}
+ continue
+ fi
+ fi
+
+ eval $p'_parser=yes'
+ NAME=`echo $p | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ n=RAPTOR_PARSER_${NAME}
+ cat >>confdefs.h <<_ACEOF
+#define $n 1
+_ACEOF
+
+ rdf_parsers_enabled="$rdf_parsers_enabled $parser"
+done
+
+use_nfc=no
+if test $rdfxml_parser = yes; then
+ need_libxml=1
+ use_nfc=yes
+fi
+
+if test $rss_parser = yes; then
+ need_libxml=1
+fi
+
+need_libxslt=0
+if test $grddl_parser = yes; then
+ need_libxml=1
+ need_libxslt=1
+fi
+
+need_librdfa=no
+if test $rdfa_parser = yes; then
+ need_libxml=1
+ need_librdfa=yes
+fi
+
+need_libyajl=0
+if test $json_parser = yes; then
+ need_libyajl=1
+fi
+
+ if test $rdfxml_parser = yes; then
+ RAPTOR_PARSER_RDFXML_TRUE=
+ RAPTOR_PARSER_RDFXML_FALSE='#'
+else
+ RAPTOR_PARSER_RDFXML_TRUE='#'
+ RAPTOR_PARSER_RDFXML_FALSE=
+fi
+
+ if test $ntriples_parser = yes; then
+ RAPTOR_PARSER_NTRIPLES_TRUE=
+ RAPTOR_PARSER_NTRIPLES_FALSE='#'
+else
+ RAPTOR_PARSER_NTRIPLES_TRUE='#'
+ RAPTOR_PARSER_NTRIPLES_FALSE=
+fi
+
+ if test $turtle_parser = yes; then
+ RAPTOR_PARSER_TURTLE_TRUE=
+ RAPTOR_PARSER_TURTLE_FALSE='#'
+else
+ RAPTOR_PARSER_TURTLE_TRUE='#'
+ RAPTOR_PARSER_TURTLE_FALSE=
+fi
+
+ if test $trig_parser = yes; then
+ RAPTOR_PARSER_TRIG_TRUE=
+ RAPTOR_PARSER_TRIG_FALSE='#'
+else
+ RAPTOR_PARSER_TRIG_TRUE='#'
+ RAPTOR_PARSER_TRIG_FALSE=
+fi
+
+ if test $rss_parser = yes; then
+ RAPTOR_PARSER_RSS_TRUE=
+ RAPTOR_PARSER_RSS_FALSE='#'
+else
+ RAPTOR_PARSER_RSS_TRUE='#'
+ RAPTOR_PARSER_RSS_FALSE=
+fi
+
+ if test $grddl_parser = yes; then
+ RAPTOR_PARSER_GRDDL_TRUE=
+ RAPTOR_PARSER_GRDDL_FALSE='#'
+else
+ RAPTOR_PARSER_GRDDL_TRUE='#'
+ RAPTOR_PARSER_GRDDL_FALSE=
+fi
+
+ if test $guess_parser = yes; then
+ RAPTOR_PARSER_GUESS_TRUE=
+ RAPTOR_PARSER_GUESS_FALSE='#'
+else
+ RAPTOR_PARSER_GUESS_TRUE='#'
+ RAPTOR_PARSER_GUESS_FALSE=
+fi
+
+ if test $rdfa_parser = yes; then
+ RAPTOR_PARSER_RDFA_TRUE=
+ RAPTOR_PARSER_RDFA_FALSE='#'
+else
+ RAPTOR_PARSER_RDFA_TRUE='#'
+ RAPTOR_PARSER_RDFA_FALSE=
+fi
+
+ if test $json_parser = yes; then
+ RAPTOR_PARSER_JSON_TRUE=
+ RAPTOR_PARSER_JSON_FALSE='#'
+else
+ RAPTOR_PARSER_JSON_TRUE='#'
+ RAPTOR_PARSER_JSON_FALSE=
+fi
+
+ if test $nquads_parser = yes; then
+ RAPTOR_PARSER_NQUADS_TRUE=
+ RAPTOR_PARSER_NQUADS_FALSE='#'
+else
+ RAPTOR_PARSER_NQUADS_TRUE='#'
+ RAPTOR_PARSER_NQUADS_FALSE=
+fi
+
+
+ if test $need_librdfa = yes; then
+ LIBRDFA_TRUE=
+ LIBRDFA_FALSE='#'
+else
+ LIBRDFA_TRUE='#'
+ LIBRDFA_FALSE=
+fi
+
+
+
+rdfxml_serializer=no
+ntriples_serializer=no
+rdfxml_abbrev_serializer=no
+turtle_serializer=no
+rss_1_0_serializer=no
+atom_serializer=no
+dot_serializer=no
+html_serializer=no
+json_serializer=no
+nquads_serializer=no
+
+rdf_serializers_available="rdfxml rdfxml-abbrev turtle ntriples rss-1.0 dot html json atom nquads"
+
+# This is needed because autoheader can't work out which computed
+# symbols must be pulled from acconfig.h into config.h.in
+if test "x" = "y"; then
+
+$as_echo "#define RAPTOR_SERIALIZER_RDFXML 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_SERIALIZER_NTRIPLES 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_SERIALIZER_RDFXML_ABBREV 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_SERIALIZER_TURTLE 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_SERIALIZER_RSS_1_0 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_SERIALIZER_ATOM 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_SERIALIZER_DOT 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_SERIALIZER_HTML 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_SERIALIZER_JSON 1" >>confdefs.h
+
+
+$as_echo "#define RAPTOR_SERIALIZER_NQUADS 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking RDF serializers required" >&5
+$as_echo_n "checking RDF serializers required... " >&6; }
+# Check whether --enable-serializers was given.
+if test "${enable_serializers+set}" = set; then :
+ enableval=$enable_serializers; serializers="$enableval"
+fi
+
+if test "X$serializers" = Xall -o "X$serializers" = X; then
+ serializers="$rdf_serializers_available"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: all" >&5
+$as_echo "all" >&6; }
+elif test "X$serializers" = Xnone; then
+ serializers=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $serializers" >&5
+$as_echo "$serializers" >&6; }
+fi
+
+for serializer in $serializers; do
+ s=`echo $serializer | tr '.-' '__'`
+ eval $s'_serializer=yes'
+ NAME=`echo $s | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ n=RAPTOR_SERIALIZER_${NAME}
+ cat >>confdefs.h <<_ACEOF
+#define $n 1
+_ACEOF
+
+ rdf_serializers_enabled="$rdf_serializers_enabled $serializer"
+done
+
+ if test $rdfxml_serializer = yes; then
+ RAPTOR_SERIALIZER_RDFXML_TRUE=
+ RAPTOR_SERIALIZER_RDFXML_FALSE='#'
+else
+ RAPTOR_SERIALIZER_RDFXML_TRUE='#'
+ RAPTOR_SERIALIZER_RDFXML_FALSE=
+fi
+
+ if test $ntriples_serializer = yes; then
+ RAPTOR_SERIALIZER_NTRIPLES_TRUE=
+ RAPTOR_SERIALIZER_NTRIPLES_FALSE='#'
+else
+ RAPTOR_SERIALIZER_NTRIPLES_TRUE='#'
+ RAPTOR_SERIALIZER_NTRIPLES_FALSE=
+fi
+
+ if test $rdfxml_abbrev_serializer = yes; then
+ RAPTOR_SERIALIZER_RDFXML_ABBREV_TRUE=
+ RAPTOR_SERIALIZER_RDFXML_ABBREV_FALSE='#'
+else
+ RAPTOR_SERIALIZER_RDFXML_ABBREV_TRUE='#'
+ RAPTOR_SERIALIZER_RDFXML_ABBREV_FALSE=
+fi
+
+ if test $turtle_serializer = yes; then
+ RAPTOR_SERIALIZER_TURTLE_TRUE=
+ RAPTOR_SERIALIZER_TURTLE_FALSE='#'
+else
+ RAPTOR_SERIALIZER_TURTLE_TRUE='#'
+ RAPTOR_SERIALIZER_TURTLE_FALSE=
+fi
+
+ if test $rss_1_0_serializer = yes; then
+ RAPTOR_SERIALIZER_RSS_1_0_TRUE=
+ RAPTOR_SERIALIZER_RSS_1_0_FALSE='#'
+else
+ RAPTOR_SERIALIZER_RSS_1_0_TRUE='#'
+ RAPTOR_SERIALIZER_RSS_1_0_FALSE=
+fi
+
+ if test $atom_serializer = yes; then
+ RAPTOR_SERIALIZER_ATOM_TRUE=
+ RAPTOR_SERIALIZER_ATOM_FALSE='#'
+else
+ RAPTOR_SERIALIZER_ATOM_TRUE='#'
+ RAPTOR_SERIALIZER_ATOM_FALSE=
+fi
+
+ if test $dot_serializer = yes; then
+ RAPTOR_SERIALIZER_DOT_TRUE=
+ RAPTOR_SERIALIZER_DOT_FALSE='#'
+else
+ RAPTOR_SERIALIZER_DOT_TRUE='#'
+ RAPTOR_SERIALIZER_DOT_FALSE=
+fi
+
+ if test $html_serializer = yes; then
+ RAPTOR_SERIALIZER_HTML_TRUE=
+ RAPTOR_SERIALIZER_HTML_FALSE='#'
+else
+ RAPTOR_SERIALIZER_HTML_TRUE='#'
+ RAPTOR_SERIALIZER_HTML_FALSE=
+fi
+
+ if test $json_serializer = yes; then
+ RAPTOR_SERIALIZER_JSON_TRUE=
+ RAPTOR_SERIALIZER_JSON_FALSE='#'
+else
+ RAPTOR_SERIALIZER_JSON_TRUE='#'
+ RAPTOR_SERIALIZER_JSON_FALSE=
+fi
+
+ if test $nquads_serializer = yes; then
+ RAPTOR_SERIALIZER_NQUADS_TRUE=
+ RAPTOR_SERIALIZER_NQUADS_FALSE='#'
+else
+ RAPTOR_SERIALIZER_NQUADS_TRUE='#'
+ RAPTOR_SERIALIZER_NQUADS_FALSE=
+fi
+
+
+ if test $rss_1_0_serializer = yes -o $rss_parser = yes; then
+ RAPTOR_RSS_COMMON_TRUE=
+ RAPTOR_RSS_COMMON_FALSE='#'
+else
+ RAPTOR_RSS_COMMON_TRUE='#'
+ RAPTOR_RSS_COMMON_FALSE=
+fi
+
+
+need_icu=no
+if test $use_nfc = yes -a $have_icu = yes; then
+ need_icu=yes
+
+$as_echo "#define RAPTOR_ICU_NFC 1" >>confdefs.h
+
+fi
+ if test $need_icu = yes; then
+ RAPTOR_ICU_NFC_TRUE=
+ RAPTOR_ICU_NFC_FALSE='#'
+else
+ RAPTOR_ICU_NFC_TRUE='#'
+ RAPTOR_ICU_NFC_FALSE=
+fi
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking XML names version" >&5
+$as_echo_n "checking XML names version... " >&6; }
+
+# Check whether --with-xml-names was given.
+if test "${with_xml_names+set}" = set; then :
+ withval=$with_xml_names; xml_names="$withval"
+else
+ xml_names="1.0"
+fi
+
+if test $xml_names = 1.1; then
+
+$as_echo "#define RAPTOR_XML_1_1 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xml_names" >&5
+$as_echo "$xml_names" >&6; }
+
+
+have_libcurl=0
+have_libfetch=0
+need_libcurl=0
+need_libxml_www=0
+need_libfetch=0
+
+oCPPFLAGS="$CPPFLAGS"
+if test "X$CURL_CONFIG" != X; then
+ CPPFLAGS="$CPPFLAGS `$CURL_CONFIG --cflags`"
+ LIBS="$LIBS `$CURL_CONFIG --libs`"
+ ac_fn_c_check_header_mongrel "$LINENO" "curl/curl.h" "ac_cv_header_curl_curl_h" "$ac_includes_default"
+if test "x$ac_cv_header_curl_curl_h" = xyes; then :
+
+fi
+
+
+ ac_fn_c_check_func "$LINENO" "curl_easy_init" "ac_cv_func_curl_easy_init"
+if test "x$ac_cv_func_curl_easy_init" = xyes; then :
+ have_curl_easy_init=yes
+else
+ have_curl_easy_init=no
+fi
+
+ LIBS="$oLIBS"
+ CPPFLAGS="$oCPPFLAGS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcurl library" >&5
+$as_echo_n "checking for libcurl library... " >&6; }
+ if test $have_curl_easy_init = yes -a "$ac_cv_header_curl_curl_h" = yes; then
+ LIBCURL_VERSION=`$CURL_CONFIG --version | sed -e 's/^libcurl *//'`
+ libcurl_vernum=`$CURL_CONFIG --vernum`
+ if test $libcurl_vernum '<' $libcurl_min_vernum; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Using libcurl $LIBCURL_VERSION is unsupported - $libcurl_min_version or newer required." >&5
+$as_echo "$as_me: WARNING: Using libcurl $LIBCURL_VERSION is unsupported - $libcurl_min_version or newer required." >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no - version $LIBCURL_VERSION is too old" >&5
+$as_echo "no - version $LIBCURL_VERSION is too old" >&6; }
+ else
+ have_libcurl=1
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes - version $LIBCURL_VERSION" >&5
+$as_echo "yes - version $LIBCURL_VERSION" >&6; }
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+fi
+
+
+if test "X$ac_cv_header_curl_curl_h" = Xyes; then
+
+$as_echo "#define HAVE_CURL_CURL_H 1" >>confdefs.h
+
+fi
+
+if test $ac_cv_header_fetch_h = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fetchXGetURL in -lfetch" >&5
+$as_echo_n "checking for fetchXGetURL in -lfetch... " >&6; }
+if ${ac_cv_lib_fetch_fetchXGetURL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lfetch $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char fetchXGetURL ();
+int
+main ()
+{
+return fetchXGetURL ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_fetch_fetchXGetURL=yes
+else
+ ac_cv_lib_fetch_fetchXGetURL=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fetch_fetchXGetURL" >&5
+$as_echo "$ac_cv_lib_fetch_fetchXGetURL" >&6; }
+if test "x$ac_cv_lib_fetch_fetchXGetURL" = xyes; then :
+ have_libfetch=1
+fi
+
+ LIBS="$oLIBS"
+fi
+
+
+
+# Check whether --with-www was given.
+if test "${with_www+set}" = set; then :
+ withval=$with_www; www="$withval"
+else
+ www="curl"
+fi
+
+
+for www_name in $www curl xml libfetch none; do
+ case $www_name in
+ curl)
+ if test $have_libcurl = 1; then
+ need_libcurl=1
+
+$as_echo "#define RAPTOR_WWW_LIBCURL 1" >>confdefs.h
+
+ break
+ fi
+ ;;
+
+ xml)
+ if test $have_libxml = 1; then
+ need_libxml=1
+ need_libxml_www=1
+
+$as_echo "#define RAPTOR_WWW_LIBXML 1" >>confdefs.h
+
+ break
+ fi
+ ;;
+
+ libfetch)
+ if test $have_libfetch = 1; then
+ need_libfetch=1
+
+$as_echo "#define RAPTOR_WWW_LIBFETCH 1" >>confdefs.h
+
+ break
+ fi
+ ;;
+
+ none|no)
+ need_libcurl=0
+ need_libxml_www=0
+
+$as_echo "#define RAPTOR_WWW_NONE 1" >>confdefs.h
+
+ break
+ ;;
+
+ *)
+ as_fn_error $? "No such WWW library $www_name" "$LINENO" 5
+ ;;
+esac
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking WWW libraries available" >&5
+$as_echo_n "checking WWW libraries available... " >&6; }
+www_libraries_available=
+if test $have_libcurl = 1; then
+ www_libraries_available="$www_libraries_available libcurl $LIBCURL_VERSION"
+fi
+if test $have_libxml = 1; then
+ www_libraries_available="$www_libraries_available libxml $LIBXML_VERSION"
+fi
+if test $have_libfetch = 1; then
+ www_libraries_available="$www_libraries_available libfetch"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $www_libraries_available" >&5
+$as_echo "$www_libraries_available" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking WWW library to use" >&5
+$as_echo_n "checking WWW library to use... " >&6; }
+www_library=
+RAPTOR_WWW_LIBRARY=none
+if test $need_libcurl = 1; then
+ www_library="libcurl $LIBCURL_VERSION"
+ RAPTOR_WWW_LIBRARY=libcurl
+elif test $need_libxml_www = 1; then
+ www_library="libxml $LIBXML_VERSION"
+ RAPTOR_WWW_LIBRARY=libxml
+elif test $need_libfetch = 1; then
+ www_library="libfetch"
+ RAPTOR_WWW_LIBRARY=libfetch
+else
+ www_library=none
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $www_library" >&5
+$as_echo "$www_library" >&6; }
+if test "X$www_library" = Xnone; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No WWW library in use - only file: URLs will work" >&5
+$as_echo "$as_me: WARNING: No WWW library in use - only file: URLs will work" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Install libcurl, libxml2 or BSD libfetch for WWW access" >&5
+$as_echo "$as_me: WARNING: Install libcurl, libxml2 or BSD libfetch for WWW access" >&2;}
+fi
+
+if test $need_libcurl = 1; then
+ CPPFLAGS="$CPPFLAGS `$CURL_CONFIG --cflags`"
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS `$CURL_CONFIG --libs`"
+ case " $LIBOBJS " in
+ *" raptor_www_curl.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS raptor_www_curl.$ac_objext"
+ ;;
+esac
+
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking NFC library to use" >&5
+$as_echo_n "checking NFC library to use... " >&6; }
+nfc_library=none
+if test $need_icu = yes; then
+ CPPFLAGS="$CPPFLAGS `$ICU_CONFIG --cppflags-searchpath`"
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS `$ICU_CONFIG --ldflags-searchpath` -licuuc"
+ case " $LIBOBJS " in
+ *" raptor_nfc_icu.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS raptor_nfc_icu.$ac_objext"
+ ;;
+esac
+
+ nfc_library="ICU $ICU_VERSION"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $nfc_library" >&5
+$as_echo "$nfc_library" >&6; }
+
+
+have_lininn=no
+have_inn_parsedate=no
+
+oCPPFLAGS="$CPPFLAGS"
+if test -d /usr/include/inn; then
+ CPPFLAGS="$CPPFLAGS -I/usr/include/inn"
+fi
+ac_fn_c_check_header_mongrel "$LINENO" "libinn.h" "ac_cv_header_libinn_h" "$ac_includes_default"
+if test "x$ac_cv_header_libinn_h" = xyes; then :
+
+fi
+
+
+CPPFLAGS="$oCPPFLAGS"
+
+oCPPFLAGS="$CPPFLAGS"
+if test $ac_cv_header_libinn_h = yes; then
+ CPPFLAGS="$CPPFLAGS -I/usr/include/inn"
+ LIBS="$LIBS -L/usr/lib/news -linn"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HashMessageID in -linn" >&5
+$as_echo_n "checking for HashMessageID in -linn... " >&6; }
+if ${ac_cv_lib_inn_HashMessageID+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-linn $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char HashMessageID ();
+int
+main ()
+{
+return HashMessageID ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_inn_HashMessageID=yes
+else
+ ac_cv_lib_inn_HashMessageID=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inn_HashMessageID" >&5
+$as_echo "$ac_cv_lib_inn_HashMessageID" >&6; }
+if test "x$ac_cv_lib_inn_HashMessageID" = xyes; then :
+ have_libinn=yes
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking parsedate in libinn" >&5
+$as_echo_n "checking parsedate in libinn... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# include <time.h>
+# endif
+#endif
+#include <libinn.h>
+
+int
+main ()
+{
+ parsedate("Sun Jun 12 00:04:09 BST 2005", NULL)
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+$as_echo "#define HAVE_INN_PARSEDATE 1" >>confdefs.h
+
+ have_inn_parsedate=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+CPPFLAGS="$oCPPFLAGS"
+LIBS="$oLIBS"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking date parsing source" >&5
+$as_echo_n "checking date parsing source... " >&6; }
+raptor_parsedate_needed=no
+if test $have_inn_parsedate = yes; then
+ CPPFLAGS="$CPPFLAGS -I/usr/include/inn"
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS -L/usr/lib/news -linn"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: INN parsedate" >&5
+$as_echo "INN parsedate" >&6; }
+else
+ if test $need_libcurl = 1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: libcurl curl_getdate" >&5
+$as_echo "libcurl curl_getdate" >&6; }
+ else
+ raptor_parsedate_needed=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: raptor parsedate" >&5
+$as_echo "raptor parsedate" >&6; }
+ fi
+fi
+
+ if test $raptor_parsedate_needed = yes; then
+ PARSEDATE_TRUE=
+ PARSEDATE_FALSE='#'
+else
+ PARSEDATE_TRUE='#'
+ PARSEDATE_FALSE=
+fi
+
+if test $raptor_parsedate_needed = yes; then
+
+$as_echo "#define HAVE_RAPTOR_PARSE_DATE 1" >>confdefs.h
+
+fi
+
+
+if test $need_libfetch = 1; then
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS -lfetch"
+ case " $LIBOBJS " in
+ *" raptor_www_libfetch.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS raptor_www_libfetch.$ac_objext"
+ ;;
+esac
+
+fi
+
+
+RAPTOR_XML_PARSER=none
+if test $need_libxml = 1; then
+ if test $have_libxml = 1; then
+
+$as_echo "#define RAPTOR_XML_LIBXML 1" >>confdefs.h
+
+ else
+ as_fn_error $? "libxml2 is not available - please get it from http://xmlsoft.org/" "$LINENO" 5
+ fi
+ if test $need_libxml_www = 1; then
+ case " $LIBOBJS " in
+ *" raptor_www_libxml.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS raptor_www_libxml.$ac_objext"
+ ;;
+esac
+
+ fi
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS `$XML_CONFIG --libs`"
+ CPPFLAGS="`$XML_CONFIG --cflags` $CPPFLAGS"
+ RAPTOR_XML_PARSER=libxml
+fi
+ if test $need_libxml = 1; then
+ RAPTOR_XML_LIBXML_TRUE=
+ RAPTOR_XML_LIBXML_FALSE='#'
+else
+ RAPTOR_XML_LIBXML_TRUE='#'
+ RAPTOR_XML_LIBXML_FALSE=
+fi
+
+
+
+if test $need_libxslt = 1; then
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS `$XSLT_CONFIG --libs`"
+ CPPFLAGS="`$XSLT_CONFIG --cflags` $CPPFLAGS"
+fi
+
+if test $need_libyajl = 1; then
+ if test "x$yajl_prefix" != "x"; then
+ CPPFLAGS="-I$yajl_prefix/include $CPPFLAGS"
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS -L$yajl_prefix/lib"
+ fi
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS -lyajl"
+fi
+
+RAPTOR_LIBTOOLLIBS=libraptor2.la
+
+
+
+xml_parser="none needed"
+if test $need_libxml = 1; then
+ xml_parser="libxml $LIBXML_VERSION"
+fi
+
+
+# Restore LIBS
+LIBS="$oLIBS"
+
+# Make final changes to cflags
+MEM=
+MEM_LIBS=
+CPPFLAGS="-DRAPTOR_INTERNAL=1 $CPPFLAGS"
+
+
+# Check whether --with-memory-signing was given.
+if test "${with_memory_signing+set}" = set; then :
+ withval=$with_memory_signing; use_memory_signing="$withval"
+else
+ use_memory_signing="no"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking using memory signing" >&5
+$as_echo_n "checking using memory signing... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_memory_signing" >&5
+$as_echo "$use_memory_signing" >&6; };
+if test "$use_memory_signing" = yes; then
+ MEM=-DRAPTOR_MEMORY_SIGN=1
+ MEM_LIBS=
+fi
+
+debug_messages=no
+
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+ enableval=$enable_debug; debug_messages=$enableval
+fi
+
+if test "$debug_messages" = "yes"; then
+
+$as_echo "#define RAPTOR_DEBUG 1" >>confdefs.h
+
+fi
+
+if test "$USE_MAINTAINER_MODE" = yes; then
+
+$as_echo "#define MAINTAINER_MODE 1" >>confdefs.h
+
+ CPPFLAGS="$MAINTAINER_CPPFLAGS $CPPFLAGS"
+fi
+
+
+
+
+
+
+
+
+
+
+
+# Features
+# lists
+RAPTOR_PARSERS=$rdf_parsers_enabled
+
+RAPTOR_SERIALIZERS=$rdf_serializers_enabled
+
+# single values or none
+
+
+
+abs_top_srcdir=`cd $srcdir; pwd`
+
+abs_top_builddir=`pwd`
+
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no) AM_DEFAULT_VERBOSITY=1;;
+*) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+
+ac_config_files="$ac_config_files Makefile raptor2.spec raptor2.rdf data/Makefile docs/Makefile docs/version.xml examples/Makefile scripts/Makefile src/raptor2.h src/win32_raptor_config.h src/Makefile tests/Makefile tests/feeds/Makefile tests/grddl/Makefile tests/ntriples/Makefile tests/rdfa/Makefile tests/rdfa11/Makefile tests/json/Makefile tests/rdfxml/Makefile tests/turtle/Makefile tests/trig/Makefile utils/Makefile win32/Makefile librdfa/Makefile raptor2.pc"
+
+
+
+
+
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+ fi
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ PKG_CONFIG=""
+ fi
+fi
+
+
+
+ # Extract the first word of "gtkdoc-check", so it can be a program name with args.
+set dummy gtkdoc-check; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GTKDOC_CHECK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GTKDOC_CHECK in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GTKDOC_CHECK="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GTKDOC_CHECK=$ac_cv_path_GTKDOC_CHECK
+if test -n "$GTKDOC_CHECK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5
+$as_echo "$GTKDOC_CHECK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ for ac_prog in gtkdoc-rebase
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GTKDOC_REBASE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GTKDOC_REBASE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GTKDOC_REBASE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE
+if test -n "$GTKDOC_REBASE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5
+$as_echo "$GTKDOC_REBASE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$GTKDOC_REBASE" && break
+done
+test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true"
+
+ # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args.
+set dummy gtkdoc-mkpdf; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GTKDOC_MKPDF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GTKDOC_MKPDF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GTKDOC_MKPDF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF
+if test -n "$GTKDOC_MKPDF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5
+$as_echo "$GTKDOC_MKPDF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+# Check whether --with-html-dir was given.
+if test "${with_html_dir+set}" = set; then :
+ withval=$with_html_dir;
+else
+ with_html_dir='${datadir}/gtk-doc/html'
+fi
+
+ HTML_DIR="$with_html_dir"
+
+
+ # Check whether --enable-gtk-doc was given.
+if test "${enable_gtk_doc+set}" = set; then :
+ enableval=$enable_gtk_doc;
+else
+ enable_gtk_doc=no
+fi
+
+
+ if test x$enable_gtk_doc = xyes; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.3\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.3") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ :
+else
+ as_fn_error $? "You need to have gtk-doc >= 1.3 installed to build $PACKAGE_NAME" "$LINENO" 5
+fi
+ if test "x$PACKAGE_NAME" != "xglib"; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKDOC_DEPS" >&5
+$as_echo_n "checking for GTKDOC_DEPS... " >&6; }
+
+if test -n "$GTKDOC_DEPS_CFLAGS"; then
+ pkg_cv_GTKDOC_DEPS_CFLAGS="$GTKDOC_DEPS_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTKDOC_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$GTKDOC_DEPS_LIBS"; then
+ pkg_cv_GTKDOC_DEPS_LIBS="$GTKDOC_DEPS_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTKDOC_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1`
+ else
+ GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GTKDOC_DEPS_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0) were not met:
+
+$GTKDOC_DEPS_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GTKDOC_DEPS_CFLAGS
+and GTKDOC_DEPS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GTKDOC_DEPS_CFLAGS
+and GTKDOC_DEPS_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ GTKDOC_DEPS_CFLAGS=$pkg_cv_GTKDOC_DEPS_CFLAGS
+ GTKDOC_DEPS_LIBS=$pkg_cv_GTKDOC_DEPS_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5
+$as_echo_n "checking whether to build gtk-doc documentation... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5
+$as_echo "$enable_gtk_doc" >&6; }
+
+ # Check whether --enable-gtk-doc-html was given.
+if test "${enable_gtk_doc_html+set}" = set; then :
+ enableval=$enable_gtk_doc_html;
+else
+ enable_gtk_doc_html=yes
+fi
+
+ # Check whether --enable-gtk-doc-pdf was given.
+if test "${enable_gtk_doc_pdf+set}" = set; then :
+ enableval=$enable_gtk_doc_pdf;
+else
+ enable_gtk_doc_pdf=no
+fi
+
+
+ if test -z "$GTKDOC_MKPDF"; then
+ enable_gtk_doc_pdf=no
+ fi
+
+
+ if test x$enable_gtk_doc = xyes; then
+ ENABLE_GTK_DOC_TRUE=
+ ENABLE_GTK_DOC_FALSE='#'
+else
+ ENABLE_GTK_DOC_TRUE='#'
+ ENABLE_GTK_DOC_FALSE=
+fi
+
+ if test x$enable_gtk_doc_html = xyes; then
+ GTK_DOC_BUILD_HTML_TRUE=
+ GTK_DOC_BUILD_HTML_FALSE='#'
+else
+ GTK_DOC_BUILD_HTML_TRUE='#'
+ GTK_DOC_BUILD_HTML_FALSE=
+fi
+
+ if test x$enable_gtk_doc_pdf = xyes; then
+ GTK_DOC_BUILD_PDF_TRUE=
+ GTK_DOC_BUILD_PDF_FALSE='#'
+else
+ GTK_DOC_BUILD_PDF_TRUE='#'
+ GTK_DOC_BUILD_PDF_FALSE=
+fi
+
+ if test -n "$LIBTOOL"; then
+ GTK_DOC_USE_LIBTOOL_TRUE=
+ GTK_DOC_USE_LIBTOOL_FALSE='#'
+else
+ GTK_DOC_USE_LIBTOOL_TRUE='#'
+ GTK_DOC_USE_LIBTOOL_FALSE=
+fi
+
+ if test -n "$GTKDOC_REBASE"; then
+ GTK_DOC_USE_REBASE_TRUE=
+ GTK_DOC_USE_REBASE_FALSE='#'
+else
+ GTK_DOC_USE_REBASE_TRUE='#'
+ GTK_DOC_USE_REBASE_FALSE=
+fi
+
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RELEASE_VERSION_TRUE}" && test -z "${RELEASE_VERSION_FALSE}"; then
+ as_fn_error $? "conditional \"RELEASE_VERSION\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+if test -z "${NEED_STRTOK_R_TRUE}" && test -z "${NEED_STRTOK_R_FALSE}"; then
+ as_fn_error $? "conditional \"NEED_STRTOK_R\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${STRCASECMP_TRUE}" && test -z "${STRCASECMP_FALSE}"; then
+ as_fn_error $? "conditional \"STRCASECMP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GETOPT_TRUE}" && test -z "${GETOPT_FALSE}"; then
+ as_fn_error $? "conditional \"GETOPT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_PARSER_RDFXML_TRUE}" && test -z "${RAPTOR_PARSER_RDFXML_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_PARSER_RDFXML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_PARSER_NTRIPLES_TRUE}" && test -z "${RAPTOR_PARSER_NTRIPLES_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_PARSER_NTRIPLES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_PARSER_TURTLE_TRUE}" && test -z "${RAPTOR_PARSER_TURTLE_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_PARSER_TURTLE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_PARSER_TRIG_TRUE}" && test -z "${RAPTOR_PARSER_TRIG_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_PARSER_TRIG\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_PARSER_RSS_TRUE}" && test -z "${RAPTOR_PARSER_RSS_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_PARSER_RSS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_PARSER_GRDDL_TRUE}" && test -z "${RAPTOR_PARSER_GRDDL_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_PARSER_GRDDL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_PARSER_GUESS_TRUE}" && test -z "${RAPTOR_PARSER_GUESS_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_PARSER_GUESS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_PARSER_RDFA_TRUE}" && test -z "${RAPTOR_PARSER_RDFA_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_PARSER_RDFA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_PARSER_JSON_TRUE}" && test -z "${RAPTOR_PARSER_JSON_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_PARSER_JSON\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_PARSER_NQUADS_TRUE}" && test -z "${RAPTOR_PARSER_NQUADS_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_PARSER_NQUADS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${LIBRDFA_TRUE}" && test -z "${LIBRDFA_FALSE}"; then
+ as_fn_error $? "conditional \"LIBRDFA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_SERIALIZER_RDFXML_TRUE}" && test -z "${RAPTOR_SERIALIZER_RDFXML_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_SERIALIZER_RDFXML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_SERIALIZER_NTRIPLES_TRUE}" && test -z "${RAPTOR_SERIALIZER_NTRIPLES_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_SERIALIZER_NTRIPLES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_SERIALIZER_RDFXML_ABBREV_TRUE}" && test -z "${RAPTOR_SERIALIZER_RDFXML_ABBREV_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_SERIALIZER_RDFXML_ABBREV\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_SERIALIZER_TURTLE_TRUE}" && test -z "${RAPTOR_SERIALIZER_TURTLE_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_SERIALIZER_TURTLE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_SERIALIZER_RSS_1_0_TRUE}" && test -z "${RAPTOR_SERIALIZER_RSS_1_0_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_SERIALIZER_RSS_1_0\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_SERIALIZER_ATOM_TRUE}" && test -z "${RAPTOR_SERIALIZER_ATOM_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_SERIALIZER_ATOM\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_SERIALIZER_DOT_TRUE}" && test -z "${RAPTOR_SERIALIZER_DOT_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_SERIALIZER_DOT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_SERIALIZER_HTML_TRUE}" && test -z "${RAPTOR_SERIALIZER_HTML_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_SERIALIZER_HTML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_SERIALIZER_JSON_TRUE}" && test -z "${RAPTOR_SERIALIZER_JSON_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_SERIALIZER_JSON\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_SERIALIZER_NQUADS_TRUE}" && test -z "${RAPTOR_SERIALIZER_NQUADS_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_SERIALIZER_NQUADS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_RSS_COMMON_TRUE}" && test -z "${RAPTOR_RSS_COMMON_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_RSS_COMMON\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_ICU_NFC_TRUE}" && test -z "${RAPTOR_ICU_NFC_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_ICU_NFC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${PARSEDATE_TRUE}" && test -z "${PARSEDATE_FALSE}"; then
+ as_fn_error $? "conditional \"PARSEDATE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${RAPTOR_XML_LIBXML_TRUE}" && test -z "${RAPTOR_XML_LIBXML_FALSE}"; then
+ as_fn_error $? "conditional \"RAPTOR_XML_LIBXML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then
+ as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then
+ as_fn_error $? "conditional \"GTK_DOC_BUILD_HTML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then
+ as_fn_error $? "conditional \"GTK_DOC_BUILD_PDF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then
+ as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then
+ as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by Raptor RDF Parser and Serializer library $as_me 2.0.8, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <http://bugs.librdf.org/>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+Raptor RDF Parser and Serializer library config.status 2.0.8
+configured by $0, generated by GNU Autoconf 2.69,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+ --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+DLLTOOL \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+nm_file_list_spec \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'
+
+
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "src/raptor_config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/raptor_config.h" ;;
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "raptor2.spec") CONFIG_FILES="$CONFIG_FILES raptor2.spec" ;;
+ "raptor2.rdf") CONFIG_FILES="$CONFIG_FILES raptor2.rdf" ;;
+ "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
+ "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
+ "docs/version.xml") CONFIG_FILES="$CONFIG_FILES docs/version.xml" ;;
+ "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+ "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
+ "src/raptor2.h") CONFIG_FILES="$CONFIG_FILES src/raptor2.h" ;;
+ "src/win32_raptor_config.h") CONFIG_FILES="$CONFIG_FILES src/win32_raptor_config.h" ;;
+ "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+ "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+ "tests/feeds/Makefile") CONFIG_FILES="$CONFIG_FILES tests/feeds/Makefile" ;;
+ "tests/grddl/Makefile") CONFIG_FILES="$CONFIG_FILES tests/grddl/Makefile" ;;
+ "tests/ntriples/Makefile") CONFIG_FILES="$CONFIG_FILES tests/ntriples/Makefile" ;;
+ "tests/rdfa/Makefile") CONFIG_FILES="$CONFIG_FILES tests/rdfa/Makefile" ;;
+ "tests/rdfa11/Makefile") CONFIG_FILES="$CONFIG_FILES tests/rdfa11/Makefile" ;;
+ "tests/json/Makefile") CONFIG_FILES="$CONFIG_FILES tests/json/Makefile" ;;
+ "tests/rdfxml/Makefile") CONFIG_FILES="$CONFIG_FILES tests/rdfxml/Makefile" ;;
+ "tests/turtle/Makefile") CONFIG_FILES="$CONFIG_FILES tests/turtle/Makefile" ;;
+ "tests/trig/Makefile") CONFIG_FILES="$CONFIG_FILES tests/trig/Makefile" ;;
+ "utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;;
+ "win32/Makefile") CONFIG_FILES="$CONFIG_FILES win32/Makefile" ;;
+ "librdfa/Makefile") CONFIG_FILES="$CONFIG_FILES librdfa/Makefile" ;;
+ "raptor2.pc") CONFIG_FILES="$CONFIG_FILES raptor2.pc" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_tt"; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #undef with comments. This is necessary, for example,
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+ if test x"$ac_file" != x-; then
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+ } >"$ac_tmp/config.h" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f "$ac_file"
+ mv "$ac_tmp/config.h" "$ac_file" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ fi
+ else
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+ || as_fn_error $? "could not create -" "$LINENO" 5
+ fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+ "libtool":C)
+
+ # See if we are running on zsh, and set the options which allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags=""
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and in which our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ if test x"$xsi_shell" = xyes; then
+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
+func_dirname ()\
+{\
+\ case ${1} in\
+\ */*) func_dirname_result="${1%/*}${2}" ;;\
+\ * ) func_dirname_result="${3}" ;;\
+\ esac\
+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_basename ()$/,/^} # func_basename /c\
+func_basename ()\
+{\
+\ func_basename_result="${1##*/}"\
+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
+func_dirname_and_basename ()\
+{\
+\ case ${1} in\
+\ */*) func_dirname_result="${1%/*}${2}" ;;\
+\ * ) func_dirname_result="${3}" ;;\
+\ esac\
+\ func_basename_result="${1##*/}"\
+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
+func_stripname ()\
+{\
+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
+\ # positional parameters, so assign one to ordinary parameter first.\
+\ func_stripname_result=${3}\
+\ func_stripname_result=${func_stripname_result#"${1}"}\
+\ func_stripname_result=${func_stripname_result%"${2}"}\
+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
+func_split_long_opt ()\
+{\
+\ func_split_long_opt_name=${1%%=*}\
+\ func_split_long_opt_arg=${1#*=}\
+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
+func_split_short_opt ()\
+{\
+\ func_split_short_opt_arg=${1#??}\
+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
+func_lo2o ()\
+{\
+\ case ${1} in\
+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
+\ *) func_lo2o_result=${1} ;;\
+\ esac\
+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_xform ()$/,/^} # func_xform /c\
+func_xform ()\
+{\
+ func_xform_result=${1%.*}.lo\
+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_arith ()$/,/^} # func_arith /c\
+func_arith ()\
+{\
+ func_arith_result=$(( $* ))\
+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_len ()$/,/^} # func_len /c\
+func_len ()\
+{\
+ func_len_result=${#1}\
+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+fi
+
+if test x"$lt_shell_append" = xyes; then
+ sed -e '/^func_append ()$/,/^} # func_append /c\
+func_append ()\
+{\
+ eval "${1}+=\\${2}"\
+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
+func_append_quoted ()\
+{\
+\ func_quote_for_eval "${2}"\
+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ # Save a `func_append' function call where possible by direct use of '+='
+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+else
+ # Save a `func_append' function call even when '+=' is not available
+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
+fi
+
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
+Raptor build summary:
+ RDF parsers available : $rdf_parsers_available
+ RDF parsers enabled :$rdf_parsers_enabled
+ RDF serializers available : $rdf_serializers_available
+ RDF serializers enabled :$rdf_serializers_enabled
+ XML parser : $xml_parser
+ WWW library : $www_library
+ NFC check library : $nfc_library
+" >&5
+$as_echo "
+Raptor build summary:
+ RDF parsers available : $rdf_parsers_available
+ RDF parsers enabled :$rdf_parsers_enabled
+ RDF serializers available : $rdf_serializers_available
+ RDF serializers enabled :$rdf_serializers_enabled
+ XML parser : $xml_parser
+ WWW library : $www_library
+ NFC check library : $nfc_library
+" >&6; }
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..94f438d
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,1239 @@
+dnl -*- Mode: autoconf -*-
+dnl
+dnl configure.ac - autoconf file for Raptor
+dnl (Process this file with autoconf to produce a configure script.)
+dnl
+dnl Copyright (C) 2000-2011 David Beckett http://www.dajobe.org/
+dnl Copyright (C) 2000-2005 University of Bristol, UK http://www.bristol.ac.uk/
+dnl
+dnl This package is Free Software and part of Redland http://librdf.org/
+dnl
+dnl It is licensed under the following three licenses as alternatives:
+dnl 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+dnl 2. GNU General Public License (GPL) V2 or any newer version
+dnl 3. Apache License, V2.0 or any newer version
+dnl
+dnl You may not use this file except in compliance with at least one of
+dnl the above three licenses.
+dnl
+dnl See LICENSE.html or LICENSE.txt at the top of this package for the
+dnl complete terms and further detail along with the license texts for
+dnl the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+dnl
+dnl
+
+
+AC_PREREQ(2.62)
+AC_INIT(Raptor RDF Parser and Serializer library, 2.0.8, http://bugs.librdf.org/, raptor2)
+AC_CONFIG_SRCDIR([src/raptor_general.c])
+AM_CONFIG_HEADER([src/raptor_config.h])
+AC_CONFIG_AUX_DIR(build)
+AC_CONFIG_MACRO_DIR(build)
+AM_INIT_AUTOMAKE([1.11 check-news std-options -Wall -Wextra-portability])
+
+libxml_min_version=2.6.8
+
+libxslt_min_version=1.0.18
+
+libcurl_min_version=7.12.0
+libcurl_min_vernum=071200
+
+AC_REVISION($Revision: $)dnl
+
+AM_MAINTAINER_MODE
+
+release_version=no
+AC_ARG_ENABLE(release, [ --enable-release Turn on optimizations (for maintainer). ], \
+ if test "$enableval" = "yes"; then \
+ release_version=yes
+fi;)
+
+AM_CONDITIONAL(RELEASE_VERSION, test $release_version = yes)
+if test "$USE_MAINTAINER_MODE" = yes -a $release_version = no; then
+ dnl need to change quotes to allow square brackets
+ changequote(<<, >>)dnl
+ CFLAGS=`echo $CFLAGS | sed -e "s/-O[A-Za-z0-9]*//"`
+ CXXFLAGS=`echo $CXXFLAGS | sed -e "s/-O[A-Za-z0-9]*//"`
+ CPPFLAGS=`echo $CPPFLAGS | sed -e "s/-O[A-Za-z0-9]*//"`
+ changequote([, ])dnl
+fi
+RPM_RELEASE=SNAP
+if test "$release_version" = "yes"; then
+ RPM_RELEASE=1
+fi
+AC_SUBST(RPM_RELEASE)
+
+
+dnl Checks for programs.
+AC_CANONICAL_HOST
+AM_SANITY_CHECK
+AM_PROG_AR
+AC_PROG_CC
+AM_PROG_CC_C_O
+
+m4_undefine([AC_PROG_CXX])
+m4_defun([AC_PROG_CXX],[])
+m4_undefine([AC_PROG_F77])
+m4_defun([AC_PROG_F77],[])
+AC_PROG_LIBTOOL
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+
+AC_PROG_LEX
+if test "X$LEX" != "X:" ; then
+ if echo "$LEX" | grep flex >/dev/null 2>&1; then
+ :
+ else
+ LEX="$SHELL $missing_dir/missing flex"
+ AC_SUBST(LEX_OUTPUT_ROOT, lex.yy)
+ AC_SUBST(LEXLIB, '')
+ fi
+fi
+
+if test "$USE_MAINTAINER_MODE" = yes; then
+ FLEX_MIN_VERSION=2.5.19
+ FLEX_REC_VERSION=2.5.33
+ AC_MSG_CHECKING(flex version)
+ if test "X$LEX" != "X:"; then
+ FLEX_VERSION=`$LEX -V 2>&1 | $AWK '{print $NF}'`
+ FLEX_VERSION_DEC=`echo $FLEX_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+
+ FLEX_MIN_VERSION_DEC=`echo $FLEX_MIN_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+
+ if test $FLEX_VERSION_DEC -ge $FLEX_MIN_VERSION_DEC; then
+ AC_MSG_RESULT($FLEX_VERSION - OK)
+ else
+ AC_MSG_RESULT(version $FLEX_VERSION - too old)
+ AC_MSG_WARN(Please get flex from http://flex.sourceforge.net/)
+ AC_MSG_WARN(version $FLEX_MIN_VERSION ($FLEX_REC_VERSION recommended))
+ AC_MSG_FAILURE(flex too old)
+ fi
+ else
+ AC_MSG_RESULT(not present)
+ AC_MSG_WARN(Please get flex from http://flex.sourceforge.net/)
+ AC_MSG_WARN(version $FLEX_MIN_VERSION ($FLEX_REC_VERSION recommended))
+ AC_MSG_FAILURE(flex not present)
+ fi
+fi
+
+BISON_MIN_VERSION=2.4
+AC_PROG_YACC
+if test "$USE_MAINTAINER_MODE" = yes; then
+ AC_MSG_CHECKING(for GNU bison)
+ # Match these styles of versions
+ # GNU Bison version 1.28
+ # bison (GNU Bison) 1.875
+dnl need to change quotes to allow square brackets
+changequote(<<, >>)dnl
+ BISON_VERSION=`$YACC --version 2>&1 | sed -ne 's/^.*GNU Bison[^0-9]*//p'`
+changequote([, ])dnl
+ if test "X$BISON_VERSION" != X; then
+ BISON_VERSION_DEC=`echo $BISON_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+
+ BISON_MIN_VERSION_DEC=`echo $BISON_MIN_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+
+ if test $BISON_VERSION_DEC -ge $BISON_MIN_VERSION_DEC; then
+ AC_MSG_RESULT($BISON_VERSION - OK)
+ else
+ AC_MSG_RESULT(version $BISON_VERSION is too old)
+ AC_MSG_WARN(Please get GNU Bison from http://www.gnu.org/software/bison/)
+ AC_MSG_WARN(version $BISON_MIN_VERSION or newer)
+ AC_MSG_FAILURE(GNU Bison too old)
+ fi
+ else
+ AC_MSG_FAILURE($YACC is not GNU bison)
+ fi
+fi
+
+
+# Find a tar command for 'make dist'
+AC_CHECK_PROGS(TAR, gnutar gtar tar)
+AC_CHECK_PROGS(PERL, perl)
+
+AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
+AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
+AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
+AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
+
+AC_CHECK_PROGS(RECHO, echo)
+RECHO_C=
+RECHO_N=
+case `$RECHO -n x` in
+ -n*)
+ case `$RECHO 'xy\c'` in
+ *c*)
+ ;;
+ xy)
+ RECHO_C='\c'
+ ;;
+ esac;;
+ *)
+ RECHO_N='-n'
+ ;;
+esac
+
+
+
+dnl compiler checks
+
+AC_DEFUN([REDLAND_CC_TRY_FLAG], [
+ AC_MSG_CHECKING([whether $CC supports $1])
+ redland_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([ ])], [redland_cc_flag=yes], [redland_cc_flag=no])
+ CFLAGS="$redland_save_CFLAGS"
+ if test "X$redland_cc_flag" = "Xyes"; then
+ ifelse([$2], , :, [$2])
+ else
+ ifelse([$3], , :, [$3])
+ fi
+ AC_MSG_RESULT($redland_cc_flag)
+])
+
+# GCC warning options
+# http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
+#
+# Too noisy:
+# -Wconversion
+# -Wunused-parameter : variables can be marked __attribute__('unused')
+# -Wmissing-noreturn : functions can be marked with __attribute__((__noreturn__))
+# -Wformat-nonliteral : variables are used in raptor_rdfxml.c for format strings: fixable with code change
+# -Wsign-conversion: : many int / unsigned int / size_t
+#
+# Apple gcc specific (probably): -Wshorten-64-to-32
+possible_warnings="\
+-Wall \
+-Wc++-compat \
+-Wextra \
+-Wunused \
+\
+-Waggregate-return \
+-Wbad-function-cast \
+-Wcast-align \
+-Wdeclaration-after-statement \
+-Wdisabled-optimization \
+-Wdiv-by-zero \
+-Wendif-labels \
+-Werror-implicit-function-declaration \
+-Wfloat-equal \
+-Wformat-security \
+-Wframe-larger-than=4096 \
+-Winit-self \
+-Winline \
+-Wmissing-declarations \
+-Wmissing-format-attribute \
+-Wmissing-noreturn \
+-Wmissing-prototypes \
+-Wnested-externs \
+-Wold-style-definition \
+-Wpacked \
+-Wpointer-arith \
+-Wredundant-decls \
+-Wshadow \
+-Wsign-compare \
+-Wstrict-prototypes \
+-Wswitch-enum \
+-Wundef \
+-Wunsafe-loop-optimizations \
+-Wwrite-strings \
+\
+-Wshorten-64-to-32
+\
+-Wno-conversion \
+-Wno-sign-conversion \
+-Wno-missing-field-initializers \
+-Wno-system-headers \
+-Wno-unused-parameter \
+"
+
+warning_cflags=
+if test "$USE_MAINTAINER_MODE" = yes; then
+ AC_MSG_CHECKING(for supported $CC warning flags)
+ AC_MSG_RESULT($warning_cflags)
+ for warning in $possible_warnings; do
+ REDLAND_CC_TRY_FLAG([$warning], [warning_cflags="$warning_cflags $warning"])
+ done
+ AC_MSG_CHECKING($CC supports warning flags)
+ AC_MSG_RESULT($warning_cflags)
+fi
+
+MAINTAINER_CPPFLAGS="$warning_cflags"
+
+
+dnl Checks for header files.
+AC_HEADER_STDC
+AC_CHECK_HEADERS(errno.h fcntl.h stdlib.h stddef.h unistd.h string.h limits.h math.h getopt.h sys/stat.h sys/param.h sys/stat.h sys/time.h setjmp.h)
+AC_CHECK_FUNCS(stat)
+AC_HEADER_TIME
+dnl FreeBSD fetch.h needs stdio.h and sys/param.h first
+AC_CHECK_HEADERS(fetch.h,,,
+ [#include <stdio.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+])
+
+
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_C_BIGENDIAN
+AC_C_INLINE
+
+dnl need to change quotes to allow square brackets
+changequote(<<, >>)dnl
+version_major=`echo $VERSION | sed -e 's/^\([^\.]*\)\.\([^\.]*\)\.\(.*\)$/\1/'`
+version_minor=`echo $VERSION | sed -e 's/^\([^\.]*\)\.\([^\.]*\)\.\(.*\)$/\2/'`
+version_release=`echo $VERSION | sed -e 's/^\([^\.]*\)\.\([^\.]*\)\.\(.*\)$/\3/'`
+changequote([, ])dnl
+
+version_decimal=`expr $version_major \* 10000 + $version_minor \* 100 + $version_release`
+
+# The minimum runtime API version that is supported. MUST be updated at
+# an API break as well as changing the libtool version
+min_version_decimal=20000
+
+AC_DEFINE_UNQUOTED(RAPTOR_VERSION_MAJOR, $version_major, [Major version number])
+AC_DEFINE_UNQUOTED(RAPTOR_VERSION_MINOR, $version_minor, [Minor version number])
+AC_DEFINE_UNQUOTED(RAPTOR_VERSION_RELEASE, $version_release, [Release version number])
+AC_DEFINE_UNQUOTED(RAPTOR_VERSION_DECIMAL, $version_decimal, [Release version as a decimal])
+AC_DEFINE_UNQUOTED(RAPTOR_MIN_VERSION_DECIMAL, $min_version_decimal, [Minimum supported package version])
+
+# for raptor-config.in
+RAPTOR_VERSION_MAJOR=$version_major
+RAPTOR_VERSION_MINOR=$version_minor
+RAPTOR_VERSION_RELEASE=$version_release
+RAPTOR_VERSION_DECIMAL=$version_decimal
+AC_SUBST(RAPTOR_VERSION)
+AC_SUBST(RAPTOR_VERSION_MAJOR)
+AC_SUBST(RAPTOR_VERSION_MINOR)
+AC_SUBST(RAPTOR_VERSION_RELEASE)
+AC_SUBST(RAPTOR_VERSION_DECIMAL)
+
+# Libtool versioning
+#
+# CURRENT
+# The most recent interface number that this library implements.
+#
+# REVISION
+# The implementation number of the CURRENT interface.
+#
+# AGE
+# The difference between the newest and oldest interfaces that this
+# library implements. In other words, the library implements all the
+# interface numbers in the range from number `CURRENT - AGE' to
+# `CURRENT'.
+#
+# Rules:
+# 1. Start with version information of `0:0:0' for each libtool library.
+#
+# 2. Update the version information only immediately before a public
+# release of your software. More frequent updates are unnecessary,
+# and only guarantee that the current interface number gets larger
+# faster.
+#
+# 3. If the library source code has changed at all since the last
+# update, then increment REVISION (`C:R:A' becomes `C:r+1:A').
+#
+# 4. If any interfaces have been added, removed, or changed since the
+# last update, increment CURRENT, and set REVISION to 0.
+#
+# 5. If any interfaces have been added since the last public release,
+# then increment AGE.
+#
+# 6. If any interfaces have been removed since the last public release,
+# then set AGE to 0.
+#
+# syntax: CURRENT[:REVISION[:AGE]]
+RAPTOR_LIBTOOL_VERSION=0:0:0
+AC_SUBST(RAPTOR_LIBTOOL_VERSION)
+
+
+dnl Checks for library functions.
+AC_CHECK_FUNCS(gettimeofday getopt getopt_long stricmp strcasecmp vsnprintf isascii setjmp strtok_r)
+
+dnl librdfa
+AM_CONDITIONAL([NEED_STRTOK_R], [test "$ac_cv_func_strtok_r" = "no"])
+
+dnl Check for GNU extension functions
+oCPPFLAGS="$CPPFLAGS"
+CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS"
+AC_CHECK_FUNCS(vasprintf)
+CPPFLAGS="$oCPPFLAGS"
+
+
+AM_CONDITIONAL(STRCASECMP, test $ac_cv_func_strcasecmp = no -a $ac_cv_func_stricmp = no)
+AM_CONDITIONAL(GETOPT, test $ac_cv_func_getopt = no -a $ac_cv_func_getopt_long = no)
+
+
+AC_MSG_CHECKING(whether need to declare optind)
+AC_TRY_LINK([#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#endif], [int x=optind;],
+ AC_MSG_RESULT(no),
+ AC_DEFINE(NEED_OPTIND_DECLARATION, 1, [need 'extern int optind' declaration?])
+ AC_MSG_RESULT(yes))
+
+
+
+if test $ac_cv_func_vsnprintf = yes; then
+ AC_MSG_CHECKING([whether vsnprintf has C99 compatible return value])
+ AC_TRY_RUN([#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#include <stdarg.h>
+
+static int is_c99(char *buf, char *s, ...) {
+ va_list args;
+ int r;
+ va_start(args, s);
+ r = vsnprintf(buf, buf ? 5 : 0, s, args);
+ va_end(args);
+
+ return (r == 7);
+}
+
+int main(void) {
+ char buffer[32];
+ return (is_c99(NULL, "1234567") ? 0 : 10)
+ + (is_c99(buffer, "1234567") ? 0 : 1);
+}], [AC_DEFINE([HAVE_C99_VSNPRINTF], [1], [vsnprintf has C99 compatible return value])
+ AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])],
+ [AC_DEFINE([CHECK_VSNPRINTF_RUNTIME], [1], [have to check C99 vsnprintf at runtime because cross compiling])])
+fi
+
+# Save LIBS
+oLIBS="$LIBS"
+
+RAPTOR_LDFLAGS=
+
+AC_SYS_LARGEFILE
+
+
+dnl Checks for XML parsers
+
+AC_ARG_WITH(xml2-config, [ --with-xml2-config=PATH Location of libxml xml2-config []], xml2_config="$withval", xml2_config="")
+
+if test "X$xml2_config" != "Xno" ; then
+ if test "X$xml2_config" != "X" ; then
+ AC_MSG_CHECKING(for $xml2_config)
+
+ if test -f $xml2_config ; then
+ XML_CONFIG=$xml2_config
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no - searching PATH)
+ fi
+ fi
+ if test "X$XML_CONFIG" = "X" ; then
+ AC_CHECK_PROGS(XML_CONFIG, xml2-config)
+ fi
+fi
+
+AC_ARG_WITH(xslt-config, [ --with-xslt-config=PATH Location of libxslt xslt-config []], xslt_config="$withval", xslt_config="")
+
+if test "X$xslt_config" != "Xno" ; then
+ if test "X$xslt_config" != "X" ; then
+ AC_MSG_CHECKING(for $xslt_config)
+
+ if test -f $xslt_config ; then
+ XSLT_CONFIG=$xslt_config
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no - searching PATH)
+ fi
+ fi
+ if test "X$XSLT_CONFIG" = "X" ; then
+ AC_CHECK_PROGS(XSLT_CONFIG, xslt-config)
+ fi
+fi
+
+AC_ARG_WITH(curl-config, [ --with-curl-config=PATH Location of libcurl curl-config []], curl_config="$withval", curl_config="")
+
+if test "X$curl_config" != "Xno" ; then
+ if test "X$curl_config" != "X" ; then
+ AC_MSG_CHECKING(for $curl_config)
+
+ if test -f $curl_config ; then
+ CURL_CONFIG=$curl_config
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no - searching PATH)
+ fi
+ fi
+ if test "X$CURL_CONFIG" = "X" ; then
+ AC_CHECK_PROGS(CURL_CONFIG, curl-config)
+ fi
+fi
+
+
+
+AC_ARG_WITH(icu-config, [ --with-icu-config=PATH Location of ICU icu-config []], icu_config="$withval", icu_config="")
+
+have_icu=no
+AC_MSG_CHECKING(for ICU)
+if test "X$icu_config" != "Xno" -a "X$icu_config" != "X" ; then
+ ICU_CONFIG=$icu_config
+ ICU_VERSION=`$ICU_CONFIG --version`
+ have_icu=yes
+ AC_MSG_RESULT(yes - version $ICU_VERSION)
+else
+ AC_MSG_RESULT(no)
+fi
+dnl Note there is NO automated searching for icu-config
+
+
+AC_ARG_WITH(www-config, [ --with-libwww-config=PATH Location of W3C libwww libwww-config []], libwww_config="$withval", libwww_config="")
+
+if test "X$libwww_config" != "Xno" -a "X$libwww_config" != "X" ; then
+ AC_MSG_WARN(libwww is no longer supported)
+fi
+
+
+have_libxml=0
+need_libxml=0
+
+oCPPFLAGS="$CPPFLAGS"
+if test "X$XML_CONFIG" != X; then
+ CPPFLAGS="`$XML_CONFIG --cflags` $CPPFLAGS"
+ LIBS="$LIBS `$XML_CONFIG --libs`"
+ AC_CHECK_FUNC(xmlCreatePushParserCtxt, have_xmlCreatePushParserCtxt=yes, have_xmlCreatePushParserCtxt=no)
+ AC_MSG_CHECKING(for system (GNOME) libxml library)
+ if test $have_xmlCreatePushParserCtxt = yes; then
+ have_libxml=1
+ LIBXML_VERSION=`$XML_CONFIG --version`
+ libxml_version_dec=`echo $LIBXML_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+ libxml_min_version_dec=`echo $libxml_min_version | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+ AC_MSG_RESULT(yes - version $LIBXML_VERSION)
+ if test $libxml_version_dec -lt $libxml_min_version_dec; then
+ AC_MSG_WARN(Using libxml $LIBXML_VERSION is unsupported - $libxml_min_version or newer required.)
+ have_libxml=0
+ fi
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_CHECK_HEADERS(libxml/nanohttp.h)
+ AC_CHECK_HEADERS(libxml/parser.h)
+ AC_CHECK_HEADERS(libxml/hash.h libxml/SAX2.h,,,
+ [#ifdef HAVE_LIBXML_PARSER_H
+#include <libxml/parser.h>
+#endif
+])
+
+ if test "$ac_cv_header_libxml_parser_h" = no -a "$ac_cv_header_gnome_xml_parser_h" = no; then
+ AC_MSG_WARN(libxml library found but not headers - disabling)
+ have_libxml=0
+ else
+ AC_MSG_CHECKING(if libxml xmlEntity has name_length field)
+ AC_TRY_LINK([
+#ifdef HAVE_LIBXML_PARSER_H
+#include <libxml/parser.h>
+#endif
+], [xmlEntity foo; foo.name_length=0],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(RAPTOR_LIBXML_ENTITY_NAME_LENGTH,1,[does libxml struct xmlEntity have a field name_length]),
+ AC_MSG_RESULT(no))
+
+ AC_MSG_CHECKING(if libxml xmlEntity has etype field)
+ AC_TRY_LINK([
+#ifdef HAVE_LIBXML_PARSER_H
+#include <libxml/parser.h>
+#endif
+], [xmlEntity foo; foo.etype=0],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(RAPTOR_LIBXML_ENTITY_ETYPE, 1, [does libxml struct xmlEntity have a field etype]),
+ AC_MSG_RESULT(no))
+
+ AC_MSG_CHECKING(if libxml xmlSAXHandler has initialized field)
+ AC_TRY_LINK([
+#ifdef HAVE_LIBXML_PARSER_H
+#include <libxml/parser.h>
+#endif
+], [xmlSAXHandler foo; foo.initialized=0],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(RAPTOR_LIBXML_XMLSAXHANDLER_INITIALIZED, 1, [does libxml xmlSAXHandler have initialized field]),
+ AC_MSG_RESULT(no))
+
+ AC_MSG_CHECKING(if libxml xmlSAXHandler has externalSubset field)
+ AC_TRY_LINK([
+#ifdef HAVE_LIBXML_PARSER_H
+#include <libxml/parser.h>
+#endif
+], [xmlSAXHandler foo; foo.externalSubset=NULL],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(RAPTOR_LIBXML_XMLSAXHANDLER_EXTERNALSUBSET, 1, [does libxml xmlSAXHandler have externalSubset field]),
+ AC_MSG_RESULT(no))
+
+ AC_CHECK_FUNCS(xmlSAX2InternalSubset xmlCtxtUseOptions)
+
+ AC_MSG_CHECKING(if libxml has parser option XML_PARSE_NONET)
+ AC_TRY_LINK([
+#ifdef HAVE_LIBXML_PARSER_H
+#include <libxml/parser.h>
+#endif
+], [xmlParserOption foo; foo = XML_PARSE_NONET],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(RAPTOR_LIBXML_XML_PARSE_NONET, 1, [does libxml have XML_PARSE_NONET]),
+ AC_MSG_RESULT(no))
+ AC_CHECK_HEADERS(libxml/HTMLparser.h)
+ AC_MSG_CHECKING(if libxml has parser option HTML_PARSE_NONET)
+ AC_TRY_LINK([
+#ifdef HAVE_LIBXML_HTMLPARSER_H
+#include <libxml/HTMLparser.h>
+#endif
+], [htmlParserOption foo; foo = HTML_PARSE_NONET],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(RAPTOR_LIBXML_HTML_PARSE_NONET, 1, [does libxml have HTML_PARSE_NONET]),
+ AC_MSG_RESULT(no))
+ fi
+
+fi
+CPPFLAGS="$oCPPFLAGS"
+LIBS="$oLIBS"
+
+
+have_libxslt=0
+
+oCPPFLAGS="$CPPFLAGS"
+if test "X$XSLT_CONFIG" != X; then
+ CPPFLAGS="`$XSLT_CONFIG --cflags` $CPPFLAGS"
+ LIBS="$LIBS `$XSLT_CONFIG --libs`"
+ AC_CHECK_FUNC(xsltSaveResultToString, have_xsltSaveResultToString=yes, have_xsltSaveResultToString=no)
+ AC_MSG_CHECKING(for system libxslt library)
+ if test $have_xsltSaveResultToString = yes; then
+ have_libxslt=1
+ LIBXSLT_VERSION=`$XSLT_CONFIG --version`
+ libxslt_version_dec=`echo $LIBXSLT_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+ libxslt_min_version_dec=`echo $libxslt_min_version | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+ AC_MSG_RESULT(yes - version $LIBXSLT_VERSION)
+ if test $libxslt_version_dec -lt $libxslt_min_version_dec; then
+ AC_MSG_WARN(Using libxslt $LIBXSLT_VERSION is unsupported - $libxslt_min_version or newer required.)
+ have_libxslt=0
+ fi
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_CHECK_FUNC(xsltInit)
+
+ AC_CHECK_HEADERS(libxslt/xslt.h)
+ if test "$ac_cv_header_libxslt_xslt_h" = no ; then
+ AC_MSG_WARN(libxslt library found but not headers - disabling)
+ have_libxslt_lib=0
+ have_libxslt=0
+ fi
+fi
+CPPFLAGS="$oCPPFLAGS"
+LIBS="$oLIBS"
+
+
+dnl Check for JSON library
+
+AC_ARG_WITH(yajl, [ --with-yajl=DIR YAJL installation directory or 'no' to disable (default=auto)], yajl_prefix="$withval", yajl_prefix="none")
+
+if test "x$yajl_prefix" != "xno" ; then
+ AC_MSG_CHECKING(for yajl installation)
+
+ if test "x$yajl_prefix" = "xyes" ; then
+ yajl_prefix="none"
+ fi
+
+ # Nothing given - search
+ if test "X$yajl_prefix" = "Xnone" ; then
+ for dir in /opt/local /usr/local /usr; do
+ if test -r $dir/include/yajl/yajl_parse.h; then
+ yajl_prefix=$dir
+ break
+ fi
+ done
+ fi
+
+ if test "X$yajl_prefix" = "Xnone" ; then
+ AC_MSG_RESULT(not found. Get it from http://lloyd.github.com/yajl/ and use --with-yajl=DIR if necessary to configure the installation directory.)
+ else
+ AC_MSG_RESULT($yajl_prefix)
+ CPPFLAGS="$oCPPFLAGS"
+ LIBS="$oLIBS"
+
+ if test "$yajl_prefix" = "/usr"; then
+ yajl_prefix=
+ else
+ LDFLAGS="-L$yajl_prefix/lib $LDFLAGS"
+ CPPFLAGS="-I$yajl_prefix/include $CPPFLAGS"
+ fi
+
+ AC_CHECK_LIB(yajl, yajl_parse, libyajl=1, libyajl=0)
+ AC_CHECK_LIB(yajl, yajl_tree_parse, yajl_api_version=2, yajl_api_version=1)
+ AC_CHECK_HEADERS(yajl/yajl_parse.h)
+
+ AC_MSG_CHECKING(YAJL API version)
+ AC_MSG_RESULT($yajl_api_version)
+ if test $yajl_api_version = 2; then
+ AC_DEFINE_UNQUOTED(HAVE_YAJL2, 1, [YAJL has API version 2])
+ fi
+
+ CPPFLAGS="$oCPPFLAGS"
+ LIBS="$oLIBS"
+ fi
+fi
+
+
+dnl RDF Parsers
+rdfxml_parser=no
+ntriples_parser=no
+turtle_parser=no
+trig_parser=no
+rss_parser=no
+grddl_parser=no
+guess_parser=yes
+rdfa_parser=no
+json_parser=no
+nquads_parser=no
+
+rdf_parsers_available="rdfxml ntriples turtle trig guess rss-tag-soup rdfa nquads"
+rdf_parsers_enabled=
+
+
+grddl_parser_ok=no
+AC_MSG_CHECKING(GRDDL parser requirements)
+if test $have_libxml = 1 -a $have_libxslt = 1; then
+ AC_MSG_RESULT(yes)
+ grddl_parser_ok=yes
+ rdf_parsers_available="$rdf_parsers_available grddl"
+else
+ AC_MSG_RESULT(no - libxml2 and libxslt are both not available)
+fi
+
+json_parser_ok=no
+AC_MSG_CHECKING(JSON parser requirements)
+if test "X$ac_cv_header_yajl_yajl_parse_h" = Xyes -a "X$ac_cv_lib_yajl_yajl_parse" = Xyes; then
+ AC_MSG_RESULT(yes)
+ json_parser_ok=yes
+ rdf_parsers_available="$rdf_parsers_available json"
+else
+ AC_MSG_RESULT(no - libyajl is not available)
+fi
+
+
+
+# This is needed because autoheader can't work out which computed
+# symbols must be pulled from acconfig.h into config.h.in
+if test "x" = "y"; then
+ AC_DEFINE(RAPTOR_PARSER_RDFXML, 1, [Building RDF/XML parser])
+ AC_DEFINE(RAPTOR_PARSER_NTRIPLES, 1, [Building N-Triples parser])
+ AC_DEFINE(RAPTOR_PARSER_TURTLE, 1, [Building Turtle parser])
+ AC_DEFINE(RAPTOR_PARSER_TRIG, 1, [Building TRiG parser])
+ AC_DEFINE(RAPTOR_PARSER_RSS, 1, [Building RSS Tag Soup parser])
+ AC_DEFINE(RAPTOR_PARSER_GRDDL, 1, [Building GRDDL parser])
+ AC_DEFINE(RAPTOR_PARSER_GUESS, 1, [Building guess parser])
+ AC_DEFINE(RAPTOR_PARSER_RDFA, 1, [Building RDFA parser])
+ AC_DEFINE(RAPTOR_PARSER_JSON, 1, [Building JSON parser])
+ AC_DEFINE(RAPTOR_PARSER_NQUADS, 1, [Building N-Quads parser])
+fi
+
+AC_MSG_CHECKING(RDF parsers required)
+AC_ARG_ENABLE(parsers, [ --enable-parsers=LIST Use RDF parsers (default=all)], parsers="$enableval")
+if test "X$parsers" = Xall -o "X$parsers" = X; then
+ parsers="$rdf_parsers_available"
+ AC_MSG_RESULT(all)
+elif test "X$parsers" = Xnone; then
+ parsers=
+ AC_MSG_RESULT(none)
+else
+ AC_MSG_RESULT($parsers)
+fi
+
+for parser in $parsers; do
+ p=$parser
+ if test $p = rss-tag-soup; then
+ p=rss
+ fi
+
+ if test $p = grddl; then
+ if test $grddl_parser_ok != yes; then
+ AC_MSG_WARN(GRDDL parser is not available)
+ continue
+ fi
+ fi
+
+ if test $p = json; then
+ if test $json_parser_ok != yes; then
+ AC_MSG_WARN(YAJL is not available)
+ continue
+ fi
+ fi
+
+ eval $p'_parser=yes'
+ NAME=`echo $p | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ n=RAPTOR_PARSER_${NAME}
+ AC_DEFINE_UNQUOTED($n)
+ rdf_parsers_enabled="$rdf_parsers_enabled $parser"
+done
+
+use_nfc=no
+if test $rdfxml_parser = yes; then
+ need_libxml=1
+ use_nfc=yes
+fi
+
+if test $rss_parser = yes; then
+ need_libxml=1
+fi
+
+need_libxslt=0
+if test $grddl_parser = yes; then
+ need_libxml=1
+ need_libxslt=1
+fi
+
+need_librdfa=no
+if test $rdfa_parser = yes; then
+ need_libxml=1
+ need_librdfa=yes
+fi
+
+need_libyajl=0
+if test $json_parser = yes; then
+ need_libyajl=1
+fi
+
+AM_CONDITIONAL(RAPTOR_PARSER_RDFXML, test $rdfxml_parser = yes)
+AM_CONDITIONAL(RAPTOR_PARSER_NTRIPLES, test $ntriples_parser = yes)
+AM_CONDITIONAL(RAPTOR_PARSER_TURTLE, test $turtle_parser = yes)
+AM_CONDITIONAL(RAPTOR_PARSER_TRIG, test $trig_parser = yes)
+AM_CONDITIONAL(RAPTOR_PARSER_RSS, test $rss_parser = yes)
+AM_CONDITIONAL(RAPTOR_PARSER_GRDDL, test $grddl_parser = yes)
+AM_CONDITIONAL(RAPTOR_PARSER_GUESS, test $guess_parser = yes)
+AM_CONDITIONAL(RAPTOR_PARSER_RDFA, test $rdfa_parser = yes)
+AM_CONDITIONAL(RAPTOR_PARSER_JSON, test $json_parser = yes)
+AM_CONDITIONAL(RAPTOR_PARSER_NQUADS, test $nquads_parser = yes)
+
+AM_CONDITIONAL(LIBRDFA, test $need_librdfa = yes)
+
+
+dnl RDF Serializers
+rdfxml_serializer=no
+ntriples_serializer=no
+rdfxml_abbrev_serializer=no
+turtle_serializer=no
+rss_1_0_serializer=no
+atom_serializer=no
+dot_serializer=no
+html_serializer=no
+json_serializer=no
+nquads_serializer=no
+
+rdf_serializers_available="rdfxml rdfxml-abbrev turtle ntriples rss-1.0 dot html json atom nquads"
+
+# This is needed because autoheader can't work out which computed
+# symbols must be pulled from acconfig.h into config.h.in
+if test "x" = "y"; then
+ AC_DEFINE(RAPTOR_SERIALIZER_RDFXML, 1, [Building RDF/XML serializer])
+ AC_DEFINE(RAPTOR_SERIALIZER_NTRIPLES, 1, [Building N-Triples serializer])
+ AC_DEFINE(RAPTOR_SERIALIZER_RDFXML_ABBREV, 1, [Building RDF/XML-abbreviated serializer])
+ AC_DEFINE(RAPTOR_SERIALIZER_TURTLE, 1, [Building Turtle serializer])
+ AC_DEFINE(RAPTOR_SERIALIZER_RSS_1_0, 1, [Building RSS 1.0 serializer])
+ AC_DEFINE(RAPTOR_SERIALIZER_ATOM, 1, [Building Atom 1.0 serializer])
+ AC_DEFINE(RAPTOR_SERIALIZER_DOT, 1, [Building GraphViz DOT serializer])
+ AC_DEFINE(RAPTOR_SERIALIZER_HTML, 1, [Building HTML Table serializer])
+ AC_DEFINE(RAPTOR_SERIALIZER_JSON, 1, [Building JSON serializer])
+ AC_DEFINE(RAPTOR_SERIALIZER_NQUADS, 1, [Building N-Quads serializer])
+fi
+
+AC_MSG_CHECKING(RDF serializers required)
+AC_ARG_ENABLE(serializers, [ --enable-serializers=LIST Use RDF serializers (default=all)], serializers="$enableval")
+if test "X$serializers" = Xall -o "X$serializers" = X; then
+ serializers="$rdf_serializers_available"
+ AC_MSG_RESULT(all)
+elif test "X$serializers" = Xnone; then
+ serializers=
+ AC_MSG_RESULT(none)
+else
+ AC_MSG_RESULT($serializers)
+fi
+
+for serializer in $serializers; do
+ s=`echo $serializer | tr '.-' '__'`
+ eval $s'_serializer=yes'
+ NAME=`echo $s | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ n=RAPTOR_SERIALIZER_${NAME}
+ AC_DEFINE_UNQUOTED($n)
+ rdf_serializers_enabled="$rdf_serializers_enabled $serializer"
+done
+
+AM_CONDITIONAL(RAPTOR_SERIALIZER_RDFXML, test $rdfxml_serializer = yes)
+AM_CONDITIONAL(RAPTOR_SERIALIZER_NTRIPLES, test $ntriples_serializer = yes)
+AM_CONDITIONAL(RAPTOR_SERIALIZER_RDFXML_ABBREV, test $rdfxml_abbrev_serializer = yes)
+AM_CONDITIONAL(RAPTOR_SERIALIZER_TURTLE, test $turtle_serializer = yes)
+AM_CONDITIONAL(RAPTOR_SERIALIZER_RSS_1_0, test $rss_1_0_serializer = yes)
+AM_CONDITIONAL(RAPTOR_SERIALIZER_ATOM, test $atom_serializer = yes)
+AM_CONDITIONAL(RAPTOR_SERIALIZER_DOT, test $dot_serializer = yes)
+AM_CONDITIONAL(RAPTOR_SERIALIZER_HTML, test $html_serializer = yes)
+AM_CONDITIONAL(RAPTOR_SERIALIZER_JSON, test $json_serializer = yes)
+AM_CONDITIONAL(RAPTOR_SERIALIZER_NQUADS, test $nquads_serializer = yes)
+
+AM_CONDITIONAL(RAPTOR_RSS_COMMON, test $rss_1_0_serializer = yes -o $rss_parser = yes)
+
+dnl Enable NFC code only if enabled and used (rdfxml)
+need_icu=no
+if test $use_nfc = yes -a $have_icu = yes; then
+ need_icu=yes
+ AC_DEFINE([RAPTOR_ICU_NFC], 1, [Use ICU for Unicode NFC check])
+fi
+AM_CONDITIONAL(RAPTOR_ICU_NFC, test $need_icu = yes)
+
+
+
+AC_MSG_CHECKING(XML names version)
+AC_ARG_WITH(xml-names, [ --with-xml-names=1.1|1.0 Select XML version name checking (default=1.0)], xml_names="$withval", xml_names="1.0")
+if test $xml_names = 1.1; then
+ AC_DEFINE(RAPTOR_XML_1_1, 1, [Check XML 1.1 Names])
+fi
+AC_MSG_RESULT($xml_names)
+
+
+have_libcurl=0
+have_libfetch=0
+need_libcurl=0
+need_libxml_www=0
+need_libfetch=0
+
+oCPPFLAGS="$CPPFLAGS"
+if test "X$CURL_CONFIG" != X; then
+ CPPFLAGS="$CPPFLAGS `$CURL_CONFIG --cflags`"
+ LIBS="$LIBS `$CURL_CONFIG --libs`"
+ AC_CHECK_HEADER(curl/curl.h)
+ AC_CHECK_FUNC(curl_easy_init, have_curl_easy_init=yes, have_curl_easy_init=no)
+ LIBS="$oLIBS"
+ CPPFLAGS="$oCPPFLAGS"
+ AC_MSG_CHECKING(for libcurl library)
+ if test $have_curl_easy_init = yes -a "$ac_cv_header_curl_curl_h" = yes; then
+ LIBCURL_VERSION=`$CURL_CONFIG --version | sed -e 's/^libcurl *//'`
+ libcurl_vernum=`$CURL_CONFIG --vernum`
+ if test $libcurl_vernum '<' $libcurl_min_vernum; then
+ AC_MSG_WARN(Using libcurl $LIBCURL_VERSION is unsupported - $libcurl_min_version or newer required.)
+ AC_MSG_RESULT(no - version $LIBCURL_VERSION is too old)
+ else
+ have_libcurl=1
+ AC_MSG_RESULT(yes - version $LIBCURL_VERSION)
+ fi
+ else
+ AC_MSG_RESULT(no)
+ fi
+fi
+
+
+if test "X$ac_cv_header_curl_curl_h" = Xyes; then
+ AC_DEFINE([HAVE_CURL_CURL_H], 1, [Have curl/curl.h])
+fi
+
+if test $ac_cv_header_fetch_h = yes; then
+ AC_CHECK_LIB(fetch, fetchXGetURL, have_libfetch=1)
+ LIBS="$oLIBS"
+fi
+
+
+AC_ARG_WITH(www, [ --with-www=NAME Use WWW library - curl (default), xml, libfetch, none], www="$withval", www="curl")
+
+for www_name in $www curl xml libfetch none; do
+ case $www_name in
+ curl)
+ if test $have_libcurl = 1; then
+ need_libcurl=1
+ AC_DEFINE([RAPTOR_WWW_LIBCURL], 1, [Have libcurl WWW library])
+ break
+ fi
+ ;;
+
+ xml)
+ if test $have_libxml = 1; then
+ need_libxml=1
+ need_libxml_www=1
+ AC_DEFINE([RAPTOR_WWW_LIBXML], 1, [Have libxml available as a WWW library])
+ break
+ fi
+ ;;
+
+ libfetch)
+ if test $have_libfetch = 1; then
+ need_libfetch=1
+ AC_DEFINE([RAPTOR_WWW_LIBFETCH], 1, [Have libfetch WWW library])
+ break
+ fi
+ ;;
+
+ none|no)
+ need_libcurl=0
+ need_libxml_www=0
+ AC_DEFINE([RAPTOR_WWW_NONE], 1, [No WWW library])
+ break
+ ;;
+
+ *)
+ AC_MSG_ERROR(No such WWW library $www_name)
+ ;;
+esac
+done
+
+AC_MSG_CHECKING(WWW libraries available)
+www_libraries_available=
+if test $have_libcurl = 1; then
+ www_libraries_available="$www_libraries_available libcurl $LIBCURL_VERSION"
+fi
+if test $have_libxml = 1; then
+ www_libraries_available="$www_libraries_available libxml $LIBXML_VERSION"
+fi
+if test $have_libfetch = 1; then
+ www_libraries_available="$www_libraries_available libfetch"
+fi
+AC_MSG_RESULT($www_libraries_available)
+
+
+AC_MSG_CHECKING(WWW library to use)
+www_library=
+RAPTOR_WWW_LIBRARY=none
+if test $need_libcurl = 1; then
+ www_library="libcurl $LIBCURL_VERSION"
+ RAPTOR_WWW_LIBRARY=libcurl
+elif test $need_libxml_www = 1; then
+ www_library="libxml $LIBXML_VERSION"
+ RAPTOR_WWW_LIBRARY=libxml
+elif test $need_libfetch = 1; then
+ www_library="libfetch"
+ RAPTOR_WWW_LIBRARY=libfetch
+else
+ www_library=none
+fi
+AC_MSG_RESULT($www_library)
+if test "X$www_library" = Xnone; then
+ AC_MSG_WARN([No WWW library in use - only file: URLs will work])
+ AC_MSG_WARN([Install libcurl, libxml2 or BSD libfetch for WWW access])
+fi
+
+if test $need_libcurl = 1; then
+ CPPFLAGS="$CPPFLAGS `$CURL_CONFIG --cflags`"
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS `$CURL_CONFIG --libs`"
+ AC_LIBOBJ(raptor_www_curl)
+
+fi
+
+
+dnl ICU for NFC check
+AC_MSG_CHECKING(NFC library to use)
+nfc_library=none
+if test $need_icu = yes; then
+ CPPFLAGS="$CPPFLAGS `$ICU_CONFIG --cppflags-searchpath`"
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS `$ICU_CONFIG --ldflags-searchpath` -licuuc"
+ AC_LIBOBJ(raptor_nfc_icu)
+ nfc_library="ICU $ICU_VERSION"
+fi
+AC_MSG_RESULT($nfc_library)
+
+
+have_lininn=no
+have_inn_parsedate=no
+
+oCPPFLAGS="$CPPFLAGS"
+if test -d /usr/include/inn; then
+ CPPFLAGS="$CPPFLAGS -I/usr/include/inn"
+fi
+AC_CHECK_HEADER(libinn.h)
+CPPFLAGS="$oCPPFLAGS"
+
+oCPPFLAGS="$CPPFLAGS"
+if test $ac_cv_header_libinn_h = yes; then
+ CPPFLAGS="$CPPFLAGS -I/usr/include/inn"
+ LIBS="$LIBS -L/usr/lib/news -linn"
+ AC_CHECK_LIB(inn, HashMessageID, have_libinn=yes)
+
+ AC_MSG_CHECKING(parsedate in libinn)
+ AC_TRY_LINK([
+#ifdef TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# include <time.h>
+# endif
+#endif
+#include <libinn.h>
+], [ parsedate("Sun Jun 12 00:04:09 BST 2005", NULL) ],
+ AC_DEFINE(HAVE_INN_PARSEDATE, 1, [INN parsedate function present])
+ have_inn_parsedate=yes
+ AC_MSG_RESULT(yes),
+ AC_MSG_RESULT(no))
+fi
+CPPFLAGS="$oCPPFLAGS"
+LIBS="$oLIBS"
+
+
+AC_MSG_CHECKING(date parsing source)
+raptor_parsedate_needed=no
+if test $have_inn_parsedate = yes; then
+ CPPFLAGS="$CPPFLAGS -I/usr/include/inn"
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS -L/usr/lib/news -linn"
+ AC_MSG_RESULT(INN parsedate)
+else
+ if test $need_libcurl = 1; then
+ AC_MSG_RESULT(libcurl curl_getdate)
+ else
+ raptor_parsedate_needed=yes
+ AC_MSG_RESULT(raptor parsedate)
+ fi
+fi
+
+AM_CONDITIONAL(PARSEDATE, test $raptor_parsedate_needed = yes)
+if test $raptor_parsedate_needed = yes; then
+ AC_DEFINE([HAVE_RAPTOR_PARSE_DATE], 1, [Raptor raptor_parse_date available])
+fi
+
+
+if test $need_libfetch = 1; then
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS -lfetch"
+ AC_LIBOBJ(raptor_www_libfetch)
+fi
+
+
+RAPTOR_XML_PARSER=none
+if test $need_libxml = 1; then
+ if test $have_libxml = 1; then
+ AC_DEFINE(RAPTOR_XML_LIBXML, 1, [Use libxml XML parser])
+ else
+ AC_MSG_ERROR(libxml2 is not available - please get it from http://xmlsoft.org/)
+ fi
+ if test $need_libxml_www = 1; then
+ AC_LIBOBJ(raptor_www_libxml)
+ fi
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS `$XML_CONFIG --libs`"
+ CPPFLAGS="`$XML_CONFIG --cflags` $CPPFLAGS"
+ RAPTOR_XML_PARSER=libxml
+fi
+AM_CONDITIONAL(RAPTOR_XML_LIBXML, test $need_libxml = 1)
+
+
+if test $need_libxslt = 1; then
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS `$XSLT_CONFIG --libs`"
+ CPPFLAGS="`$XSLT_CONFIG --cflags` $CPPFLAGS"
+fi
+
+if test $need_libyajl = 1; then
+ if test "x$yajl_prefix" != "x"; then
+ CPPFLAGS="-I$yajl_prefix/include $CPPFLAGS"
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS -L$yajl_prefix/lib"
+ fi
+ RAPTOR_LDFLAGS="$RAPTOR_LDFLAGS -lyajl"
+fi
+
+RAPTOR_LIBTOOLLIBS=libraptor2.la
+AC_SUBST(RAPTOR_LIBTOOLLIBS)
+
+
+xml_parser="none needed"
+if test $need_libxml = 1; then
+ xml_parser="libxml $LIBXML_VERSION"
+fi
+
+
+# Restore LIBS
+LIBS="$oLIBS"
+
+# Make final changes to cflags
+MEM=
+MEM_LIBS=
+CPPFLAGS="-DRAPTOR_INTERNAL=1 $CPPFLAGS"
+
+AC_ARG_WITH(memory-signing, [ --with-memory-signing Sign allocated memory (default=no)], use_memory_signing="$withval", use_memory_signing="no")
+AC_MSG_CHECKING(using memory signing)
+AC_MSG_RESULT($use_memory_signing);
+if test "$use_memory_signing" = yes; then
+ MEM=-DRAPTOR_MEMORY_SIGN=1
+ MEM_LIBS=
+fi
+
+debug_messages=no
+
+AC_ARG_ENABLE(debug, [ --enable-debug Enable debug messages (default no). ], debug_messages=$enableval)
+if test "$debug_messages" = "yes"; then
+ AC_DEFINE([RAPTOR_DEBUG], [1], [Define to 1 if debug messages are enabled.])
+fi
+
+if test "$USE_MAINTAINER_MODE" = yes; then
+ AC_DEFINE([MAINTAINER_MODE], [1], [Define to 1 if maintainer mode is enabled.])
+ CPPFLAGS="$MAINTAINER_CPPFLAGS $CPPFLAGS"
+fi
+
+
+AC_SUBST(RAPTOR_LDFLAGS)
+
+AC_SUBST(MEM)
+AC_SUBST(MEM_LIBS)
+
+AC_SUBST(RECHO)
+AC_SUBST(RECHO_N)
+AC_SUBST(RECHO_C)
+
+# Features
+# lists
+RAPTOR_PARSERS=$rdf_parsers_enabled
+AC_SUBST(RAPTOR_PARSERS)
+RAPTOR_SERIALIZERS=$rdf_serializers_enabled
+AC_SUBST(RAPTOR_SERIALIZERS)
+# single values or none
+AC_SUBST(RAPTOR_WWW_LIBRARY)
+AC_SUBST(RAPTOR_XML_PARSER)
+
+abs_top_srcdir=`cd $srcdir; pwd`
+AC_SUBST(abs_top_srcdir)
+abs_top_builddir=`pwd`
+AC_SUBST(abs_top_builddir)
+
+dnl automake 1.11
+AM_SILENT_RULES([no])
+
+AC_CONFIG_FILES([Makefile
+raptor2.spec
+raptor2.rdf
+data/Makefile
+docs/Makefile
+docs/version.xml
+examples/Makefile
+scripts/Makefile
+src/raptor2.h
+src/win32_raptor_config.h
+src/Makefile
+tests/Makefile
+tests/feeds/Makefile
+tests/grddl/Makefile
+tests/ntriples/Makefile
+tests/rdfa/Makefile
+tests/rdfa11/Makefile
+tests/json/Makefile
+tests/rdfxml/Makefile
+tests/turtle/Makefile
+tests/trig/Makefile
+utils/Makefile
+win32/Makefile
+librdfa/Makefile
+raptor2.pc])
+
+dnl Check for gtk-doc and docbook
+GTK_DOC_CHECK([1.3])
+
+AC_OUTPUT
+
+AC_MSG_RESULT([
+Raptor build summary:
+ RDF parsers available : $rdf_parsers_available
+ RDF parsers enabled :$rdf_parsers_enabled
+ RDF serializers available : $rdf_serializers_available
+ RDF serializers enabled :$rdf_serializers_enabled
+ XML parser : $xml_parser
+ WWW library : $www_library
+ NFC check library : $nfc_library
+])
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 0000000..508a53a
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1 @@
+EXTRA_DIST=dc.rdf
diff --git a/data/Makefile.in b/data/Makefile.in
new file mode 100644
index 0000000..7d33682
--- /dev/null
+++ b/data/Makefile.in
@@ -0,0 +1,422 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = data
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = dc.rdf
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu data/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/data/dc.rdf b/data/dc.rdf
new file mode 100644
index 0000000..d0799b6
--- /dev/null
+++ b/data/dc.rdf
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <rdf:Description rdf:about="http://purl.org/net/dajobe/">
+ <dc:title>Dave Beckett's Home Page</dc:title>
+ <dc:creator>Dave Beckett</dc:creator>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/docs/Makefile.am b/docs/Makefile.am
new file mode 100644
index 0000000..3feede3
--- /dev/null
+++ b/docs/Makefile.am
@@ -0,0 +1,158 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor docs
+#
+# Copyright (C) 2000-2010, David Beckett http://www.dajobe.org/
+# Copyright (C) 2000-2005, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+
+# The name of the module.
+DOC_MODULE=raptor2
+
+# The top-level SGML file.
+DOC_MAIN_SGML_FILE=raptor-docs.xml
+
+# Extra options to supply to gtkdoc-scan
+SCAN_OPTIONS= --deprecated-guards="RAPTOR_DISABLE_DEPRECATED"
+
+# The directory containing the source code. Relative to $(srcdir)
+DOC_SOURCE_DIR=../src
+
+# Used for dependencies
+HFILE_GLOB=$(builddir)/raptor-fake.h
+CFILE_GLOB=$(top_srcdir)/src/raptor_*.c
+
+IGNORE_CFILES= \
+n3_lexer.c \
+n3_parser.c \
+raptor_nfc_test.c \
+raptor_rss_common.c \
+raptor_xsd.c \
+turtle_lexer.c \
+turtle_parser.c \
+turtle_common.c \
+parsedate.c \
+strcasecmp.c
+
+# Use fixed version of raptor2.h
+EXTRA_HFILES=$(builddir)/raptor-fake.h
+
+# Headers to ignore: yes raptor2.h is intended to be in this list
+# since it is added as a fixed file raptor-fake.h by EXTRA_HFILES above
+IGNORE_HFILES= \
+ n3_common.h \
+ n3_lexer.h \
+ n3_parser.h \
+ parsedate.h \
+ raptor.h \
+ raptor2.h \
+ raptor_config.h \
+ raptor_internal.h \
+ raptor_nfc.h \
+ raptor_rss.h \
+ turtle_common.h \
+ turtle_lexer.h \
+ turtle_parser.h \
+ win32_raptor_config.h \
+ git-version.h
+
+# CFLAGS and LDFLAGS for compiling scan program. Only needed
+# if $(DOC_MODULE).types is non-empty.
+AM_CPPFLAGS =
+GTKDOC_LIBS =
+
+# Extra options to supply to gtkdoc-mkdb
+MKDB_OPTIONS=--sgml-mode --output-format=xml --ignore-files="$(IGNORE_CFILES)"
+
+# Extra options to supply to gtkdoc-mktmpl
+MKTMPL_OPTIONS=
+
+# Non-autogenerated (XML, other) files to be included in $(DOC_MAIN_SGML_FILE)
+content_files = \
+ raptor-changes.xml \
+ raptor-formats.xml \
+ raptor-parsers.xml \
+ raptor-serializers.xml \
+ raptor-tutorial-intro.xml \
+ raptor-tutorial-querying-functionality.xml \
+ raptor-tutorial-parsing.xml \
+ raptor-tutorial-serializing.xml \
+ version.xml \
+ rdfprint.c \
+ rdfcat.c \
+ rdfserialize.c
+
+# Images to copy into HTML directory
+HTML_IMAGES =
+
+# Extra options to supply to gtkdoc-fixref
+FIXXREF_OPTIONS=
+
+# gtkdoc might not define this
+DISTCLEANFILES=
+
+include $(top_srcdir)/gtk-doc.make
+
+man_MANS = libraptor2.3
+
+EXTRA_DIST+= \
+libraptor2.html \
+raptor1-eol.html \
+$(man_MANS) \
+version.xml.in \
+upgrade-script.pl
+
+DISTCLEANFILES+= \
+raptor-fake.h
+
+raptor-fake.h: $(top_builddir)/src/raptor2.h $(top_srcdir)/scripts/fix-gtkdoc-header.pl
+ $(PERL) $(top_srcdir)/scripts/fix-gtkdoc-header.pl < $< > $@
+
+if MAINTAINER_MODE
+libraptor2.html: $(srcdir)/libraptor2.3 $(top_srcdir)/scripts/fix-groff-xhtml
+ -groff -man -Thtml -P-l $< | tidy -asxml -wrap 1000 2>/dev/null | $(PERL) $(top_srcdir)/scripts/fix-groff-xhtml $@
+
+rdfcat.c: $(top_srcdir)/examples/rdfcat.c
+ $(install_sh_DATA) $? $@
+
+rdfprint.c: $(top_srcdir)/examples/rdfprint.c
+ $(install_sh_DATA) $? $@
+
+rdfserialize.c: $(top_srcdir)/examples/rdfserialize.c
+ $(install_sh_DATA) $? $@
+
+raptor-tutorial-parsing.xml: rdfcat.c
+
+raptor-tutorial-serializing.xml: rdfprint.c rdfserialize.c
+
+raptor-changes.xml: $(srcdir)/raptor-1-to-2-map.tsv $(top_srcdir)/scripts/process-changes.pl
+ $(PERL) $(top_srcdir)/scripts/process-changes.pl --docbook-xml $@ $(PACKAGE) $(srcdir)/raptor-1-to-2-map.tsv
+
+raptor-formats.xml: $(top_builddir)/scripts/build-formats
+ $(top_builddir)/scripts/build-formats > $@
+
+$(top_builddir)/scripts/build-formats:
+ cd $(top_builddir)/scripts && $(MAKE) build-formats
+
+upgrade-script.pl: $(top_srcdir)/scripts/process-changes.pl $(srcdir)/raptor-1-to-2-map.tsv
+ $(PERL) $(top_srcdir)/scripts/process-changes.pl --upgrade-script $@ $(PACKAGE) $(srcdir)/raptor-1-to-2-map.tsv
+
+endif
+
+dist-hook-local: docs
diff --git a/docs/Makefile.in b/docs/Makefile.in
new file mode 100644
index 0000000..083eae0
--- /dev/null
+++ b/docs/Makefile.in
@@ -0,0 +1,930 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor docs
+#
+# Copyright (C) 2000-2010, David Beckett http://www.dajobe.org/
+# Copyright (C) 2000-2005, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/version.xml.in $(top_srcdir)/gtk-doc.make
+subdir = docs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES = version.xml
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+man3dir = $(mandir)/man3
+am__installdirs = "$(DESTDIR)$(man3dir)"
+NROFF = nroff
+MANS = $(man_MANS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# The name of the module.
+DOC_MODULE = raptor2
+
+# The top-level SGML file.
+DOC_MAIN_SGML_FILE = raptor-docs.xml
+
+# Extra options to supply to gtkdoc-scan
+SCAN_OPTIONS = --deprecated-guards="RAPTOR_DISABLE_DEPRECATED"
+
+# The directory containing the source code. Relative to $(srcdir)
+DOC_SOURCE_DIR = ../src
+
+# Used for dependencies
+HFILE_GLOB = $(builddir)/raptor-fake.h
+CFILE_GLOB = $(top_srcdir)/src/raptor_*.c
+IGNORE_CFILES = \
+n3_lexer.c \
+n3_parser.c \
+raptor_nfc_test.c \
+raptor_rss_common.c \
+raptor_xsd.c \
+turtle_lexer.c \
+turtle_parser.c \
+turtle_common.c \
+parsedate.c \
+strcasecmp.c
+
+
+# Use fixed version of raptor2.h
+EXTRA_HFILES = $(builddir)/raptor-fake.h
+
+# Headers to ignore: yes raptor2.h is intended to be in this list
+# since it is added as a fixed file raptor-fake.h by EXTRA_HFILES above
+IGNORE_HFILES = \
+ n3_common.h \
+ n3_lexer.h \
+ n3_parser.h \
+ parsedate.h \
+ raptor.h \
+ raptor2.h \
+ raptor_config.h \
+ raptor_internal.h \
+ raptor_nfc.h \
+ raptor_rss.h \
+ turtle_common.h \
+ turtle_lexer.h \
+ turtle_parser.h \
+ win32_raptor_config.h \
+ git-version.h
+
+
+# CFLAGS and LDFLAGS for compiling scan program. Only needed
+# if $(DOC_MODULE).types is non-empty.
+AM_CPPFLAGS =
+GTKDOC_LIBS =
+
+# Extra options to supply to gtkdoc-mkdb
+MKDB_OPTIONS = --sgml-mode --output-format=xml --ignore-files="$(IGNORE_CFILES)"
+
+# Extra options to supply to gtkdoc-mktmpl
+MKTMPL_OPTIONS =
+
+# Non-autogenerated (XML, other) files to be included in $(DOC_MAIN_SGML_FILE)
+content_files = \
+ raptor-changes.xml \
+ raptor-formats.xml \
+ raptor-parsers.xml \
+ raptor-serializers.xml \
+ raptor-tutorial-intro.xml \
+ raptor-tutorial-querying-functionality.xml \
+ raptor-tutorial-parsing.xml \
+ raptor-tutorial-serializing.xml \
+ version.xml \
+ rdfprint.c \
+ rdfcat.c \
+ rdfserialize.c
+
+
+# Images to copy into HTML directory
+HTML_IMAGES =
+
+# Extra options to supply to gtkdoc-fixref
+FIXXREF_OPTIONS =
+
+# gtkdoc might not define this
+DISTCLEANFILES = raptor-fake.h
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN =
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE)
+SETUP_FILES = \
+ $(content_files) \
+ $(DOC_MAIN_SGML_FILE) \
+ $(DOC_MODULE)-sections.txt \
+ $(DOC_MODULE)-overrides.txt
+
+EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) libraptor2.html \
+ raptor1-eol.html $(man_MANS) version.xml.in upgrade-script.pl
+DOC_STAMPS = setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \
+ html-build.stamp pdf-build.stamp \
+ tmpl.stamp sgml.stamp html.stamp pdf.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+REPORT_FILES = \
+ $(DOC_MODULE)-undocumented.txt \
+ $(DOC_MODULE)-undeclared.txt \
+ $(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+@ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP =
+@ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp
+@ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP =
+@ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp
+man_MANS = libraptor2.3
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/gtk-doc.make:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-man3: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man3dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.3[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man3:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man3dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.3[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @list='$(MANS)'; if test -n "$$list"; then \
+ list=`for p in $$list; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+ if test -n "$$list" && \
+ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
+ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+ echo " typically \`make maintainer-clean' will remove them" >&2; \
+ exit 1; \
+ else :; fi; \
+ else :; fi
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile $(MANS) all-local
+installdirs:
+ for dir in "$(DESTDIR)$(man3dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-local
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man3
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-local uninstall-man
+
+uninstall-man: uninstall-man3
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+ clean-libtool clean-local dist-hook distclean \
+ distclean-generic distclean-libtool distclean-local distdir \
+ dvi dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-data-local install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-man3 install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ maintainer-clean-local mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-local uninstall-man uninstall-man3
+
+
+@ENABLE_GTK_DOC_TRUE@all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+@ENABLE_GTK_DOC_FALSE@all-local:
+
+docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+
+$(REPORT_FILES): sgml-build.stamp
+
+#### setup ####
+
+setup-build.stamp:
+ -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ echo ' DOC Preparing build'; \
+ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \
+ if test "x$$files" != "x" ; then \
+ for file in $$files ; do \
+ test -f $(abs_srcdir)/$$file && \
+ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \
+ done; \
+ fi; \
+ test -d $(abs_srcdir)/tmpl && \
+ { cp -rp $(abs_srcdir)/tmpl $(abs_builddir)/; \
+ chmod -R u+w $(abs_builddir)/tmpl; } \
+ fi
+ @touch setup-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+ @echo ' DOC Scanning header files'
+ @_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ echo " DOC Introspecting gobjects"; \
+ scanobj_options=""; \
+ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ scanobj_options="--verbose"; \
+ fi; \
+ fi; \
+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
+ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
+ else \
+ for i in $(SCANOBJ_FILES) ; do \
+ test -f $$i || touch $$i ; \
+ done \
+ fi
+ @touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+ @true
+
+#### templates ####
+
+tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ @echo ' DOC Rebuilding template files'
+ @gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ if test -w $(abs_srcdir) ; then \
+ cp -rp $(abs_builddir)/tmpl $(abs_srcdir)/; \
+ fi \
+ fi
+ @touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+ @true
+
+$(srcdir)/tmpl/*.sgml:
+ @true
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
+ @echo ' DOC Building XML'
+ @-chmod -R u+w $(srcdir)
+ @_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
+ @touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+ @true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ @echo ' DOC Building HTML'
+ @rm -rf html
+ @mkdir html
+ @mkhtml_options=""; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkhtml_options="$$mkhtml_options --verbose"; \
+ fi; \
+ fi; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
+ if test "$(?)" = "0"; then \
+ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
+ fi; \
+ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ -@test "x$(HTML_IMAGES)" = "x" || \
+ for file in $(HTML_IMAGES) ; do \
+ if test -f $(abs_srcdir)/$$file ; then \
+ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
+ fi; \
+ if test -f $(abs_builddir)/$$file ; then \
+ cp $(abs_builddir)/$$file $(abs_builddir)/html; \
+ fi; \
+ done;
+ @echo ' DOC Fixing cross-references'
+ @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ @touch html-build.stamp
+
+#### pdf ####
+
+pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ @echo ' DOC Building PDF'
+ @rm -f $(DOC_MODULE).pdf
+ @mkpdf_options=""; \
+ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkpdf_options="$$mkpdf_options --verbose"; \
+ fi; \
+ fi; \
+ if test "x$(HTML_IMAGES)" != "x"; then \
+ for img in $(HTML_IMAGES); do \
+ part=`dirname $$img`; \
+ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
+ if test $$? != 0; then \
+ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
+ fi; \
+ done; \
+ fi; \
+ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
+ @touch pdf-build.stamp
+
+##############
+
+clean-local:
+ @rm -f *~ *.bak
+ @rm -rf .libs
+
+distclean-local:
+ @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
+ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \
+ rm -rf tmpl; \
+ fi
+
+maintainer-clean-local: clean
+ @rm -rf xml html
+
+install-data-local:
+ @installfiles=`echo $(builddir)/html/*`; \
+ if test "$$installfiles" = '$(builddir)/html/*'; \
+ then echo 1>&2 'Nothing to install' ; \
+ else \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ $(mkinstalldirs) $${installdir} ; \
+ for i in $$installfiles; do \
+ echo ' $(INSTALL_DATA) '$$i ; \
+ $(INSTALL_DATA) $$i $${installdir}; \
+ done; \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
+ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
+ fi; \
+ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
+ fi
+
+uninstall-local:
+ @if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ rm -rf $${installdir}
+
+#
+# Require gtk-doc when making dist
+#
+@ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc:
+@ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc:
+@ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+@ENABLE_GTK_DOC_FALSE@ @false
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+ @mkdir $(distdir)/tmpl
+ @mkdir $(distdir)/html
+ @-cp ./tmpl/*.sgml $(distdir)/tmpl
+ @cp ./html/* $(distdir)/html
+ @-cp ./$(DOC_MODULE).pdf $(distdir)/
+ @-cp ./$(DOC_MODULE).types $(distdir)/
+ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
+ @cd $(distdir) && rm -f $(DISTCLEANFILES)
+ @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
+
+raptor-fake.h: $(top_builddir)/src/raptor2.h $(top_srcdir)/scripts/fix-gtkdoc-header.pl
+ $(PERL) $(top_srcdir)/scripts/fix-gtkdoc-header.pl < $< > $@
+
+@MAINTAINER_MODE_TRUE@libraptor2.html: $(srcdir)/libraptor2.3 $(top_srcdir)/scripts/fix-groff-xhtml
+@MAINTAINER_MODE_TRUE@ -groff -man -Thtml -P-l $< | tidy -asxml -wrap 1000 2>/dev/null | $(PERL) $(top_srcdir)/scripts/fix-groff-xhtml $@
+
+@MAINTAINER_MODE_TRUE@rdfcat.c: $(top_srcdir)/examples/rdfcat.c
+@MAINTAINER_MODE_TRUE@ $(install_sh_DATA) $? $@
+
+@MAINTAINER_MODE_TRUE@rdfprint.c: $(top_srcdir)/examples/rdfprint.c
+@MAINTAINER_MODE_TRUE@ $(install_sh_DATA) $? $@
+
+@MAINTAINER_MODE_TRUE@rdfserialize.c: $(top_srcdir)/examples/rdfserialize.c
+@MAINTAINER_MODE_TRUE@ $(install_sh_DATA) $? $@
+
+@MAINTAINER_MODE_TRUE@raptor-tutorial-parsing.xml: rdfcat.c
+
+@MAINTAINER_MODE_TRUE@raptor-tutorial-serializing.xml: rdfprint.c rdfserialize.c
+
+@MAINTAINER_MODE_TRUE@raptor-changes.xml: $(srcdir)/raptor-1-to-2-map.tsv $(top_srcdir)/scripts/process-changes.pl
+@MAINTAINER_MODE_TRUE@ $(PERL) $(top_srcdir)/scripts/process-changes.pl --docbook-xml $@ $(PACKAGE) $(srcdir)/raptor-1-to-2-map.tsv
+
+@MAINTAINER_MODE_TRUE@raptor-formats.xml: $(top_builddir)/scripts/build-formats
+@MAINTAINER_MODE_TRUE@ $(top_builddir)/scripts/build-formats > $@
+
+@MAINTAINER_MODE_TRUE@$(top_builddir)/scripts/build-formats:
+@MAINTAINER_MODE_TRUE@ cd $(top_builddir)/scripts && $(MAKE) build-formats
+
+@MAINTAINER_MODE_TRUE@upgrade-script.pl: $(top_srcdir)/scripts/process-changes.pl $(srcdir)/raptor-1-to-2-map.tsv
+@MAINTAINER_MODE_TRUE@ $(PERL) $(top_srcdir)/scripts/process-changes.pl --upgrade-script $@ $(PACKAGE) $(srcdir)/raptor-1-to-2-map.tsv
+
+dist-hook-local: docs
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/docs/html/home.png b/docs/html/home.png
new file mode 100644
index 0000000..1700361
--- /dev/null
+++ b/docs/html/home.png
Binary files differ
diff --git a/docs/html/index.html b/docs/html/index.html
new file mode 100644
index 0000000..7f2c426
--- /dev/null
+++ b/docs/html/index.html
@@ -0,0 +1,234 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Raptor RDF Syntax Library Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="next" href="introduction.html" title="Raptor Overview">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="book">
+<div class="titlepage">
+<div>
+<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">Raptor RDF Syntax Library Manual</p></th></tr></table></div>
+<div><div class="author">
+<h3 class="author">
+<span class="firstname">Dave</span> <span class="surname">Beckett</span>
+</h3>
+<div class="affiliation"><div class="address"><p><br>
+   <span class="otheraddr"><a class="ulink" href="http://www.dajobe.org/" target="_top">http://www.dajobe.org/</a></span><br>
+ </p></div></div>
+</div></div>
+<div><p class="releaseinfo">Manual for <a class="ulink" href="http://librdf.org/raptor/" target="_top">Raptor</a> 2.0.8
+</p></div>
+<div><p class="copyright">Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Dave Beckett</p></div>
+<div><p class="copyright">Copyright © 2001, 2002, 2003, 2004, 2005 University of Bristol</p></div>
+<div><div class="legalnotice">
+<a name="idp158800"></a><p>
+ This documentation is Free Software / Open Source - you can
+ redistribute it and/or modify it under the same licenses as
+ <a class="ulink" href="http://librdf.org/raptor/" target="_top">Raptor</a>.
+ It is licensed under the following three licenses as alternatives:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem"><p>GNU Lesser General Public License (LGPL) V2.1 or any newer version</p></li>
+<li class="listitem"><p>GNU General Public License (GPL) V2 or any newer version</p></li>
+<li class="listitem"><p>Apache License, V2.0 or any newer version</p></li>
+</ol></div>
+<p>
+ You may not use this documentation except in compliance with at
+ least one of the above three licenses. See the
+ <a class="ulink" href="http://librdf.org/raptor/" target="_top">Raptor</a>
+ site for the full license terms.
+ </p>
+</div></div>
+</div>
+<hr>
+</div>
+<div class="toc"><dl>
+<dt><span class="chapter"><a href="introduction.html">Raptor Overview</a></span></dt>
+<dt><span class="part"><a href="tutorial.html">I. Raptor Tutorial</a></span></dt>
+<dd><dl>
+<dt><span class="chapter"><a href="tutorial-initialising-finishing.html">Initialising and Finishing using the Library</a></span></dt>
+<dt><span class="chapter"><a href="tutorial-querying-functionality.html">Listing built-in functionality</a></span></dt>
+<dt><span class="chapter"><a href="tutorial-parsing.html">Parsing syntaxes to RDF Triples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="tutorial-parsing.html#tutorial-parsing-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-create.html">Create the Parser object</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-features.html">Parser options</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-set-triple-handler.html">Set RDF statement callback handler</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-set-error-warning-handlers.html">Set parsing log message handlers</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-set-id-handler.html">Set the identifier creator handler</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-set-namespace-handler.html">Set namespace declared handler</a></span></dt>
+<dt><span class="section"><a href="tutorial-parse-strictness.html">Set the parsing strictness</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html">Provide syntax content to parse</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-uri">Parse the content from a URI (<code class="function">raptor_parser_parse_uri()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-www">Parse the content of a URI using an existing WWW connection (<code class="function">raptor_parser_parse_uri_with_connection()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-filehandle">Parse the content of a C <code class="literal">FILE*</code> (<code class="function">raptor_parser_parse_file_stream()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-file-uri">Parse the content of a file URI (<code class="function">raptor_parser_parse_file()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-chunks">Parse chunks of syntax content provided by the application (<code class="function">raptor_parser_parse_start()</code> and <code class="function">raptor_parser_parse_chunk()</code>)</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="restrict-parser-network-access.html">Restrict parser network access</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="restrict-parser-network-access.html#tutorial-filter-network-with-feature">Filtering parser network requests with option <code class="literal">RAPTOR_OPTION_NO_NET</code></a></span></dt>
+<dt><span class="section"><a href="restrict-parser-network-access.html#tutorial-filter-network-www-uri-filter">Filtering parser network requests with <code class="function">raptor_www_set_uri_filter()</code></a></span></dt>
+<dt><span class="section"><a href="restrict-parser-network-access.html#tutorial-filter-network-parser-uri-filter">Filtering parser network requests with <code class="function">raptor_parser_set_uri_filter()</code></a></span></dt>
+<dt><span class="section"><a href="restrict-parser-network-access.html#tutorial-filter-network-parser-timeout">Setting timeout for parser network requests with option <code class="literal">RAPTOR_OPTION_WWW_TIMEOUT</code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="tutorial-parser-static-info.html">Querying parser static information</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-runtime-info.html">Querying parser run-time information</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-abort.html">Aborting parsing</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-destroy.html">Destroy the parser</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-example.html">Parsing example code</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="tutorial-serializing.html">Serializing RDF triples to a syntax</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="tutorial-serializing.html#tutorial-serializing-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-create.html">Create the Serializer object</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-features.html">Serializer options</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-declare-namespace.html">Declare namespaces</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-set-error-warning-handlers.html">Set error and warning handlers</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html">Provide a destination for the serialized syntax</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html#serialize-to-filename">Serialize to a filename (<code class="function">raptor_serializer_start_to_filename()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html#serialize-to-string">Serialize to a string (<code class="function">raptor_serializer_start_to_string()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html#serialize-to-filehandle">Serialize to a FILE* file handle (<code class="function">raptor_serializer_start_to_file_handle()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html#serialize-to-iostream">Serialize to an <span class="type">raptor_iostream</span> (<code class="function">raptor_serializer_start_to_iostream()</code>)</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="tutorial-serializer-get-triples.html">Get or construct RDF Statements (Triples)</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-send-triples.html">Send RDF Triples to serializer</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-runtime-info.html">Querying serializer run-time information</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-destroy.html">Destroy the serializer</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-example.html">Serializing example code</a></span></dt>
+</dl></dd>
+</dl></dd>
+<dt><span class="part"><a href="reference-manual.html">II. Raptor Reference Manual</a></span></dt>
+<dd><dl>
+<dt><span class="chapter"><a href="raptor-parsers.html">Parsers in Raptor (syntax to triples)</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="raptor-parsers.html#raptor-parsers-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="parser-grddl.html">GRDDL parser (name <code class="literal">grddl</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-guess.html">Guess parser (name <code class="literal">guess</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-json.html">JSON parser (name <code class="literal">json</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-ntriples.html">N-Triples parser (name <code class="literal">ntriples</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-rdfa.html">RDFa parser - (name <code class="literal">rdfa</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-rdfxml.html">RDF/XML parser - default (name <code class="literal">rdfxml</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-rss-tag-soup.html">RSS Tag Soup parser (name <code class="literal">rss-tag-soup</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-trig.html">TRiG parser (name <code class="literal">trig</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-turtle.html">Turtle Terse RDF Triple Language parser (name <code class="literal">turtle</code>)</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="raptor-serializers.html">Serializers in Raptor (triples to syntax)</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="raptor-serializers.html#raptor-serializers-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="serializer-atom.html">Atom 1.0 serializer (name <code class="literal">atom</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-json.html">JSON serializers (name <code class="literal">json</code> and name <code class="literal">json-triples</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-nquads.html">N-Quads serializer - default (name <code class="literal">nquads</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-ntriples.html">N-Triples serializer - default (name <code class="literal">ntriples</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-rdfxml.html">RDF/XML serializer (name <code class="literal">rdfxml</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-rdfxml-abbrev.html">RDF/XML (Abbreviated) serializer (name <code class="literal">rdfxml-abbrev</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-rdfxml-xmp.html">RDF/XML (XMP Profile) serializer (name <code class="literal">rdfxml-xmp</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-turtle.html">Turtle serializer (name <code class="literal">turtle</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-rss-1-0.html">RSS 1.0 serializer (name <code class="literal">rss-1.0</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-dot.html">GraphViz dot serializer (name <code class="literal">dot</code>)</a></span></dt>
+</dl></dd>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-world.html">Initialisation</a></span><span class="refpurpose"> — Library startup, shutdown and configuration.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-general.html">General</a></span><span class="refpurpose"> — General library constants and utility functions</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-memory.html">Memory</a></span><span class="refpurpose"> — Memory handling functions</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-avltree.html">AVL Trees</a></span><span class="refpurpose"> — AVL Trees</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-constants.html">Constants</a></span><span class="refpurpose"> — Constant values and strings</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-option.html">Options</a></span><span class="refpurpose"> — Class options</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-iostream.html">I/O Stream</a></span><span class="refpurpose"> — Providing streaming I/O writing to files, strings or user code.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-locator.html">Locator</a></span><span class="refpurpose"> — Location information for errors, warnings and messages.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-parser.html">Parser</a></span><span class="refpurpose"> — RDF parsers - from a syntax to RDF triples</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-sax2.html">SAX2</a></span><span class="refpurpose"> — SAX2 XML Parsing API with namespaces and base URI support.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-sequence.html">Sequence</a></span><span class="refpurpose"> — Ordered sequence of items.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-serializer.html">Serializer</a></span><span class="refpurpose"> — RDF serializers - from RDF triples to a syntax</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-stringbuffer.html">String buffer</a></span><span class="refpurpose"> — Append-only strings.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-triples.html">Triples</a></span><span class="refpurpose"> — RDF Triples</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-unicode.html">Unicode</a></span><span class="refpurpose"> — Unicode and UTF-8 utility functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-uri.html">URI</a></span><span class="refpurpose"> — URI class and relative URI computation</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-www.html">WWW</a></span><span class="refpurpose"> — Retrieval of URI content from the web.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-xml-namespace.html">XML Namespaces</a></span><span class="refpurpose"> — Namespaces in XML include stacks of Namespaces</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-xml-qname.html">XML QName</a></span><span class="refpurpose"> — XML Namespace-qualified names.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-xml.html">XML</a></span><span class="refpurpose"> — XML and XML Writer</span>
+</dt>
+<dt><span class="chapter"><a href="raptor-formats.html">Syntax Formats supported in Raptor</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="raptor-formats.html#raptor-formats-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="raptor-formats-types-by-parser.html">MIME Types by Parser</a></span></dt>
+<dt><span class="section"><a href="raptor-formats-types-by-serializer.html">MIME Types by Serializer</a></span></dt>
+<dt><span class="section"><a href="raptor-formats-types-index.html">MIME Types Index</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="raptor2-changes.html">API Changes</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="raptor2-changes.html#raptor2-changes-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="raptor2-changes-2-0-7-to-2-0-8.html">Changes between raptor2 2.0.7 and 2.0.8</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-7-to-2-0-8.html#raptor2-changes-new-2-0-7-to-2-0-8">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-2-0-6-to-2-0-7.html">Changes between raptor2 2.0.6 and 2.0.7</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-6-to-2-0-7.html#raptor2-changes-new-2-0-6-to-2-0-7">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-2-0-5-to-2-0-6.html">Changes between raptor2 2.0.5 and 2.0.6</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-5-to-2-0-6.html#raptor2-changes-new-2-0-5-to-2-0-6">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-2-0-4-to-2-0-5.html">Changes between raptor2 2.0.4 and 2.0.5</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-4-to-2-0-5.html#raptor2-changes-new-2-0-4-to-2-0-5">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-2-0-3-to-2-0-4.html">Changes between raptor2 2.0.3 and 2.0.4</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-3-to-2-0-4.html#raptor2-changes-new-2-0-3-to-2-0-4">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html">Changes between raptor2 1.4.21 and 2.0.0</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-new-1-4-21-to-2-0-0">New functions, types and enums</a></span></dt>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-deleted-1-4-21-to-2-0-0">Deleted functions, types and enums</a></span></dt>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-renamed-1-4-21-to-2-0-0">Renamed function and enums</a></span></dt>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-changed-1-4-21-to-2-0-0">Changed functions and types</a></span></dt>
+</dl></dd>
+</dl></dd>
+</dl></dd>
+<dt><span class="index"><a href="ix01.html">Index</a></span></dt>
+</dl></div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/index.sgml b/docs/html/index.sgml
new file mode 100644
index 0000000..8e7b139
--- /dev/null
+++ b/docs/html/index.sgml
@@ -0,0 +1,570 @@
+<ANCHOR id="raptor2-section-world" href="raptor2/raptor2-section-world.html">
+<ANCHOR id="raptor2-section-world.synopsis" href="raptor2/raptor2-section-world.html#raptor2-section-world.synopsis">
+<ANCHOR id="raptor2-section-world.description" href="raptor2/raptor2-section-world.html#raptor2-section-world.description">
+<ANCHOR id="raptor2-section-world.details" href="raptor2/raptor2-section-world.html#raptor2-section-world.details">
+<ANCHOR id="raptor-world" href="raptor2/raptor2-section-world.html#raptor-world">
+<ANCHOR id="raptor-new-world" href="raptor2/raptor2-section-world.html#raptor-new-world">
+<ANCHOR id="raptor-world-open" href="raptor2/raptor2-section-world.html#raptor-world-open">
+<ANCHOR id="raptor-free-world" href="raptor2/raptor2-section-world.html#raptor-free-world">
+<ANCHOR id="raptor-world-flag" href="raptor2/raptor2-section-world.html#raptor-world-flag">
+<ANCHOR id="RAPTOR-WORLD-FLAG-LIBXML-GENERIC-ERROR-SAVE:CAPS" href="raptor2/raptor2-section-world.html#RAPTOR-WORLD-FLAG-LIBXML-GENERIC-ERROR-SAVE:CAPS">
+<ANCHOR id="RAPTOR-WORLD-FLAG-LIBXML-STRUCTURED-ERROR-SAVE:CAPS" href="raptor2/raptor2-section-world.html#RAPTOR-WORLD-FLAG-LIBXML-STRUCTURED-ERROR-SAVE:CAPS">
+<ANCHOR id="RAPTOR-WORLD-FLAG-URI-INTERNING:CAPS" href="raptor2/raptor2-section-world.html#RAPTOR-WORLD-FLAG-URI-INTERNING:CAPS">
+<ANCHOR id="RAPTOR-WORLD-FLAG-WWW-SKIP-INIT-FINISH:CAPS" href="raptor2/raptor2-section-world.html#RAPTOR-WORLD-FLAG-WWW-SKIP-INIT-FINISH:CAPS">
+<ANCHOR id="raptor-world-set-flag" href="raptor2/raptor2-section-world.html#raptor-world-set-flag">
+<ANCHOR id="raptor-world-set-libxslt-security-preferences" href="raptor2/raptor2-section-world.html#raptor-world-set-libxslt-security-preferences">
+<ANCHOR id="raptor-world-set-log-handler" href="raptor2/raptor2-section-world.html#raptor-world-set-log-handler">
+<ANCHOR id="raptor-world-get-parser-description" href="raptor2/raptor2-section-world.html#raptor-world-get-parser-description">
+<ANCHOR id="raptor-world-is-parser-name" href="raptor2/raptor2-section-world.html#raptor-world-is-parser-name">
+<ANCHOR id="raptor-world-guess-parser-name" href="raptor2/raptor2-section-world.html#raptor-world-guess-parser-name">
+<ANCHOR id="raptor-world-get-serializer-description" href="raptor2/raptor2-section-world.html#raptor-world-get-serializer-description">
+<ANCHOR id="raptor-world-is-serializer-name" href="raptor2/raptor2-section-world.html#raptor-world-is-serializer-name">
+<ANCHOR id="raptor-world-generate-bnodeid" href="raptor2/raptor2-section-world.html#raptor-world-generate-bnodeid">
+<ANCHOR id="raptor-world-set-generate-bnodeid-handler" href="raptor2/raptor2-section-world.html#raptor-world-set-generate-bnodeid-handler">
+<ANCHOR id="raptor-world-set-generate-bnodeid-parameters" href="raptor2/raptor2-section-world.html#raptor-world-set-generate-bnodeid-parameters">
+<ANCHOR id="raptor2-section-general" href="raptor2/raptor2-section-general.html">
+<ANCHOR id="raptor2-section-general.synopsis" href="raptor2/raptor2-section-general.html#raptor2-section-general.synopsis">
+<ANCHOR id="raptor2-section-general.description" href="raptor2/raptor2-section-general.html#raptor2-section-general.description">
+<ANCHOR id="raptor2-section-general.details" href="raptor2/raptor2-section-general.html#raptor2-section-general.details">
+<ANCHOR id="RAPTOR-VERSION:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-VERSION:CAPS">
+<ANCHOR id="RAPTOR-VERSION-MAJOR:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-VERSION-MAJOR:CAPS">
+<ANCHOR id="RAPTOR-VERSION-MINOR:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-VERSION-MINOR:CAPS">
+<ANCHOR id="RAPTOR-VERSION-RELEASE:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-VERSION-RELEASE:CAPS">
+<ANCHOR id="RAPTOR-VERSION-STRING:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-VERSION-STRING:CAPS">
+<ANCHOR id="raptor-version-major" href="raptor2/raptor2-section-general.html#raptor-version-major">
+<ANCHOR id="raptor-version-minor" href="raptor2/raptor2-section-general.html#raptor-version-minor">
+<ANCHOR id="raptor-version-release" href="raptor2/raptor2-section-general.html#raptor-version-release">
+<ANCHOR id="raptor-version-decimal" href="raptor2/raptor2-section-general.html#raptor-version-decimal">
+<ANCHOR id="raptor-copyright-string" href="raptor2/raptor2-section-general.html#raptor-copyright-string">
+<ANCHOR id="raptor-home-url-string" href="raptor2/raptor2-section-general.html#raptor-home-url-string">
+<ANCHOR id="raptor-license-string" href="raptor2/raptor2-section-general.html#raptor-license-string">
+<ANCHOR id="raptor-short-copyright-string" href="raptor2/raptor2-section-general.html#raptor-short-copyright-string">
+<ANCHOR id="raptor-version-string" href="raptor2/raptor2-section-general.html#raptor-version-string">
+<ANCHOR id="raptor-owl-namespace-uri" href="raptor2/raptor2-section-general.html#raptor-owl-namespace-uri">
+<ANCHOR id="raptor-rdf-namespace-uri" href="raptor2/raptor2-section-general.html#raptor-rdf-namespace-uri">
+<ANCHOR id="raptor-rdf-schema-namespace-uri" href="raptor2/raptor2-section-general.html#raptor-rdf-schema-namespace-uri">
+<ANCHOR id="raptor-xml-literal-datatype-uri-string" href="raptor2/raptor2-section-general.html#raptor-xml-literal-datatype-uri-string">
+<ANCHOR id="raptor-xml-namespace-uri" href="raptor2/raptor2-section-general.html#raptor-xml-namespace-uri">
+<ANCHOR id="raptor-xmlschema-datatypes-namespace-uri" href="raptor2/raptor2-section-general.html#raptor-xmlschema-datatypes-namespace-uri">
+<ANCHOR id="raptor-statement-handler" href="raptor2/raptor2-section-general.html#raptor-statement-handler">
+<ANCHOR id="raptor-snprintf" href="raptor2/raptor2-section-general.html#raptor-snprintf">
+<ANCHOR id="raptor-vasprintf" href="raptor2/raptor2-section-general.html#raptor-vasprintf">
+<ANCHOR id="raptor-vsnprintf" href="raptor2/raptor2-section-general.html#raptor-vsnprintf">
+<ANCHOR id="raptor-vsnprintf2" href="raptor2/raptor2-section-general.html#raptor-vsnprintf2">
+<ANCHOR id="raptor-log-handler" href="raptor2/raptor2-section-general.html#raptor-log-handler">
+<ANCHOR id="raptor-log-message" href="raptor2/raptor2-section-general.html#raptor-log-message">
+<ANCHOR id="raptor-log-level" href="raptor2/raptor2-section-general.html#raptor-log-level">
+<ANCHOR id="RAPTOR-LOG-LEVEL-NONE:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-LOG-LEVEL-NONE:CAPS">
+<ANCHOR id="RAPTOR-LOG-LEVEL-TRACE:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-LOG-LEVEL-TRACE:CAPS">
+<ANCHOR id="RAPTOR-LOG-LEVEL-DEBUG:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-LOG-LEVEL-DEBUG:CAPS">
+<ANCHOR id="RAPTOR-LOG-LEVEL-INFO:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-LOG-LEVEL-INFO:CAPS">
+<ANCHOR id="RAPTOR-LOG-LEVEL-WARN:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-LOG-LEVEL-WARN:CAPS">
+<ANCHOR id="RAPTOR-LOG-LEVEL-ERROR:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-LOG-LEVEL-ERROR:CAPS">
+<ANCHOR id="RAPTOR-LOG-LEVEL-FATAL:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-LOG-LEVEL-FATAL:CAPS">
+<ANCHOR id="RAPTOR-LOG-LEVEL-LAST:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-LOG-LEVEL-LAST:CAPS">
+<ANCHOR id="raptor-log-level-get-label" href="raptor2/raptor2-section-general.html#raptor-log-level-get-label">
+<ANCHOR id="raptor-domain" href="raptor2/raptor2-section-general.html#raptor-domain">
+<ANCHOR id="RAPTOR-DOMAIN-NONE:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-NONE:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-IOSTREAM:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-IOSTREAM:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-NAMESPACE:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-NAMESPACE:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-PARSER:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-PARSER:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-QNAME:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-QNAME:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-SAX2:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-SAX2:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-SERIALIZER:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-SERIALIZER:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-TERM:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-TERM:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-TURTLE-WRITER:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-TURTLE-WRITER:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-URI:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-URI:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-WORLD:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-WORLD:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-WWW:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-WWW:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-XML-WRITER:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-XML-WRITER:CAPS">
+<ANCHOR id="RAPTOR-DOMAIN-LAST:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-DOMAIN-LAST:CAPS">
+<ANCHOR id="raptor-domain-get-label" href="raptor2/raptor2-section-general.html#raptor-domain-get-label">
+<ANCHOR id="raptor-data-compare-handler" href="raptor2/raptor2-section-general.html#raptor-data-compare-handler">
+<ANCHOR id="raptor-data-context-free-handler" href="raptor2/raptor2-section-general.html#raptor-data-context-free-handler">
+<ANCHOR id="raptor-data-context-print-handler" href="raptor2/raptor2-section-general.html#raptor-data-context-print-handler">
+<ANCHOR id="raptor-data-free-handler" href="raptor2/raptor2-section-general.html#raptor-data-free-handler">
+<ANCHOR id="raptor-data-malloc-handler" href="raptor2/raptor2-section-general.html#raptor-data-malloc-handler">
+<ANCHOR id="raptor-data-print-handler" href="raptor2/raptor2-section-general.html#raptor-data-print-handler">
+<ANCHOR id="raptor-syntax-bitflags" href="raptor2/raptor2-section-general.html#raptor-syntax-bitflags">
+<ANCHOR id="RAPTOR-SYNTAX-NEED-BASE-URI:CAPS" href="raptor2/raptor2-section-general.html#RAPTOR-SYNTAX-NEED-BASE-URI:CAPS">
+<ANCHOR id="raptor-syntax-description" href="raptor2/raptor2-section-general.html#raptor-syntax-description">
+<ANCHOR id="raptor-syntax-description-validate" href="raptor2/raptor2-section-general.html#raptor-syntax-description-validate">
+<ANCHOR id="raptor-type-q" href="raptor2/raptor2-section-general.html#raptor-type-q">
+<ANCHOR id="raptor2-section-memory" href="raptor2/raptor2-section-memory.html">
+<ANCHOR id="raptor2-section-memory.synopsis" href="raptor2/raptor2-section-memory.html#raptor2-section-memory.synopsis">
+<ANCHOR id="raptor2-section-memory.description" href="raptor2/raptor2-section-memory.html#raptor2-section-memory.description">
+<ANCHOR id="raptor2-section-memory.details" href="raptor2/raptor2-section-memory.html#raptor2-section-memory.details">
+<ANCHOR id="raptor-free-memory" href="raptor2/raptor2-section-memory.html#raptor-free-memory">
+<ANCHOR id="raptor-alloc-memory" href="raptor2/raptor2-section-memory.html#raptor-alloc-memory">
+<ANCHOR id="raptor-calloc-memory" href="raptor2/raptor2-section-memory.html#raptor-calloc-memory">
+<ANCHOR id="raptor2-section-avltree" href="raptor2/raptor2-section-avltree.html">
+<ANCHOR id="raptor2-section-avltree.synopsis" href="raptor2/raptor2-section-avltree.html#raptor2-section-avltree.synopsis">
+<ANCHOR id="raptor2-section-avltree.description" href="raptor2/raptor2-section-avltree.html#raptor2-section-avltree.description">
+<ANCHOR id="raptor2-section-avltree.details" href="raptor2/raptor2-section-avltree.html#raptor2-section-avltree.details">
+<ANCHOR id="raptor-avltree" href="raptor2/raptor2-section-avltree.html#raptor-avltree">
+<ANCHOR id="raptor-avltree-bitflags" href="raptor2/raptor2-section-avltree.html#raptor-avltree-bitflags">
+<ANCHOR id="RAPTOR-AVLTREE-FLAG-REPLACE-DUPLICATES:CAPS" href="raptor2/raptor2-section-avltree.html#RAPTOR-AVLTREE-FLAG-REPLACE-DUPLICATES:CAPS">
+<ANCHOR id="raptor-new-avltree" href="raptor2/raptor2-section-avltree.html#raptor-new-avltree">
+<ANCHOR id="raptor-free-avltree" href="raptor2/raptor2-section-avltree.html#raptor-free-avltree">
+<ANCHOR id="raptor-avltree-add" href="raptor2/raptor2-section-avltree.html#raptor-avltree-add">
+<ANCHOR id="raptor-avltree-delete" href="raptor2/raptor2-section-avltree.html#raptor-avltree-delete">
+<ANCHOR id="raptor-avltree-print" href="raptor2/raptor2-section-avltree.html#raptor-avltree-print">
+<ANCHOR id="raptor-avltree-remove" href="raptor2/raptor2-section-avltree.html#raptor-avltree-remove">
+<ANCHOR id="raptor-avltree-search" href="raptor2/raptor2-section-avltree.html#raptor-avltree-search">
+<ANCHOR id="raptor-avltree-set-print-handler" href="raptor2/raptor2-section-avltree.html#raptor-avltree-set-print-handler">
+<ANCHOR id="raptor-avltree-size" href="raptor2/raptor2-section-avltree.html#raptor-avltree-size">
+<ANCHOR id="raptor-avltree-visit" href="raptor2/raptor2-section-avltree.html#raptor-avltree-visit">
+<ANCHOR id="raptor-avltree-iterator" href="raptor2/raptor2-section-avltree.html#raptor-avltree-iterator">
+<ANCHOR id="raptor-new-avltree-iterator" href="raptor2/raptor2-section-avltree.html#raptor-new-avltree-iterator">
+<ANCHOR id="raptor-free-avltree-iterator" href="raptor2/raptor2-section-avltree.html#raptor-free-avltree-iterator">
+<ANCHOR id="raptor-avltree-iterator-get" href="raptor2/raptor2-section-avltree.html#raptor-avltree-iterator-get">
+<ANCHOR id="raptor-avltree-iterator-is-end" href="raptor2/raptor2-section-avltree.html#raptor-avltree-iterator-is-end">
+<ANCHOR id="raptor-avltree-iterator-next" href="raptor2/raptor2-section-avltree.html#raptor-avltree-iterator-next">
+<ANCHOR id="raptor-avltree-visit-handler" href="raptor2/raptor2-section-avltree.html#raptor-avltree-visit-handler">
+<ANCHOR id="raptor2-section-constants" href="raptor2/raptor2-section-constants.html">
+<ANCHOR id="raptor2-section-constants.synopsis" href="raptor2/raptor2-section-constants.html#raptor2-section-constants.synopsis">
+<ANCHOR id="raptor2-section-constants.description" href="raptor2/raptor2-section-constants.html#raptor2-section-constants.description">
+<ANCHOR id="raptor2-section-constants.details" href="raptor2/raptor2-section-constants.html#raptor2-section-constants.details">
+<ANCHOR id="raptor-rdf-namespace-uri-len" href="raptor2/raptor2-section-constants.html#raptor-rdf-namespace-uri-len">
+<ANCHOR id="raptor-xml-literal-datatype-uri-string-len" href="raptor2/raptor2-section-constants.html#raptor-xml-literal-datatype-uri-string-len">
+<ANCHOR id="RAPTOR-RDF-MS-URI:CAPS" href="raptor2/raptor2-section-constants.html#RAPTOR-RDF-MS-URI:CAPS">
+<ANCHOR id="RAPTOR-RDF-SCHEMA-URI:CAPS" href="raptor2/raptor2-section-constants.html#RAPTOR-RDF-SCHEMA-URI:CAPS">
+<ANCHOR id="RAPTOR-XMLSCHEMA-DATATYPES-URI:CAPS" href="raptor2/raptor2-section-constants.html#RAPTOR-XMLSCHEMA-DATATYPES-URI:CAPS">
+<ANCHOR id="RAPTOR-OWL-URI:CAPS" href="raptor2/raptor2-section-constants.html#RAPTOR-OWL-URI:CAPS">
+<ANCHOR id="raptor2-section-option" href="raptor2/raptor2-section-option.html">
+<ANCHOR id="raptor2-section-option.synopsis" href="raptor2/raptor2-section-option.html#raptor2-section-option.synopsis">
+<ANCHOR id="raptor2-section-option.description" href="raptor2/raptor2-section-option.html#raptor2-section-option.description">
+<ANCHOR id="raptor2-section-option.details" href="raptor2/raptor2-section-option.html#raptor2-section-option.details">
+<ANCHOR id="raptor-option" href="raptor2/raptor2-section-option.html#raptor-option">
+<ANCHOR id="RAPTOR-OPTION-SCANNING:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-SCANNING:CAPS">
+<ANCHOR id="RAPTOR-OPTION-ALLOW-NON-NS-ATTRIBUTES:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-ALLOW-NON-NS-ATTRIBUTES:CAPS">
+<ANCHOR id="RAPTOR-OPTION-ALLOW-OTHER-PARSETYPES:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-ALLOW-OTHER-PARSETYPES:CAPS">
+<ANCHOR id="RAPTOR-OPTION-ALLOW-BAGID:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-ALLOW-BAGID:CAPS">
+<ANCHOR id="RAPTOR-OPTION-ALLOW-RDF-TYPE-RDF-LIST:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-ALLOW-RDF-TYPE-RDF-LIST:CAPS">
+<ANCHOR id="RAPTOR-OPTION-NORMALIZE-LANGUAGE:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-NORMALIZE-LANGUAGE:CAPS">
+<ANCHOR id="RAPTOR-OPTION-NON-NFC-FATAL:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-NON-NFC-FATAL:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WARN-OTHER-PARSETYPES:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WARN-OTHER-PARSETYPES:CAPS">
+<ANCHOR id="RAPTOR-OPTION-CHECK-RDF-ID:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-CHECK-RDF-ID:CAPS">
+<ANCHOR id="RAPTOR-OPTION-RELATIVE-URIS:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-RELATIVE-URIS:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WRITER-AUTO-INDENT:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WRITER-AUTO-INDENT:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WRITER-AUTO-EMPTY:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WRITER-AUTO-EMPTY:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WRITER-INDENT-WIDTH:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WRITER-INDENT-WIDTH:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WRITER-XML-VERSION:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WRITER-XML-VERSION:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WRITER-XML-DECLARATION:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WRITER-XML-DECLARATION:CAPS">
+<ANCHOR id="RAPTOR-OPTION-NO-NET:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-NO-NET:CAPS">
+<ANCHOR id="RAPTOR-OPTION-RESOURCE-BORDER:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-RESOURCE-BORDER:CAPS">
+<ANCHOR id="RAPTOR-OPTION-LITERAL-BORDER:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-LITERAL-BORDER:CAPS">
+<ANCHOR id="RAPTOR-OPTION-BNODE-BORDER:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-BNODE-BORDER:CAPS">
+<ANCHOR id="RAPTOR-OPTION-RESOURCE-FILL:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-RESOURCE-FILL:CAPS">
+<ANCHOR id="RAPTOR-OPTION-LITERAL-FILL:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-LITERAL-FILL:CAPS">
+<ANCHOR id="RAPTOR-OPTION-BNODE-FILL:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-BNODE-FILL:CAPS">
+<ANCHOR id="RAPTOR-OPTION-HTML-TAG-SOUP:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-HTML-TAG-SOUP:CAPS">
+<ANCHOR id="RAPTOR-OPTION-MICROFORMATS:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-MICROFORMATS:CAPS">
+<ANCHOR id="RAPTOR-OPTION-HTML-LINK:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-HTML-LINK:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WWW-TIMEOUT:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WWW-TIMEOUT:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WRITE-BASE-URI:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WRITE-BASE-URI:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WWW-HTTP-CACHE-CONTROL:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WWW-HTTP-CACHE-CONTROL:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WWW-HTTP-USER-AGENT:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WWW-HTTP-USER-AGENT:CAPS">
+<ANCHOR id="RAPTOR-OPTION-JSON-CALLBACK:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-JSON-CALLBACK:CAPS">
+<ANCHOR id="RAPTOR-OPTION-JSON-EXTRA-DATA:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-JSON-EXTRA-DATA:CAPS">
+<ANCHOR id="RAPTOR-OPTION-RSS-TRIPLES:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-RSS-TRIPLES:CAPS">
+<ANCHOR id="RAPTOR-OPTION-ATOM-ENTRY-URI:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-ATOM-ENTRY-URI:CAPS">
+<ANCHOR id="RAPTOR-OPTION-PREFIX-ELEMENTS:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-PREFIX-ELEMENTS:CAPS">
+<ANCHOR id="RAPTOR-OPTION-STRICT:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-STRICT:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WWW-CERT-FILENAME:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WWW-CERT-FILENAME:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WWW-CERT-TYPE:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WWW-CERT-TYPE:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WWW-CERT-PASSPHRASE:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WWW-CERT-PASSPHRASE:CAPS">
+<ANCHOR id="RAPTOR-OPTION-NO-FILE:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-NO-FILE:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WWW-SSL-VERIFY-PEER:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WWW-SSL-VERIFY-PEER:CAPS">
+<ANCHOR id="RAPTOR-OPTION-WWW-SSL-VERIFY-HOST:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-WWW-SSL-VERIFY-HOST:CAPS">
+<ANCHOR id="RAPTOR-OPTION-LOAD-EXTERNAL-ENTITIES:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-LOAD-EXTERNAL-ENTITIES:CAPS">
+<ANCHOR id="RAPTOR-OPTION-LAST:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-LAST:CAPS">
+<ANCHOR id="raptor-option-description" href="raptor2/raptor2-section-option.html#raptor-option-description">
+<ANCHOR id="raptor-option-get-count" href="raptor2/raptor2-section-option.html#raptor-option-get-count">
+<ANCHOR id="raptor-option-value-type" href="raptor2/raptor2-section-option.html#raptor-option-value-type">
+<ANCHOR id="RAPTOR-OPTION-VALUE-TYPE-BOOL:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-BOOL:CAPS">
+<ANCHOR id="RAPTOR-OPTION-VALUE-TYPE-INT:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-INT:CAPS">
+<ANCHOR id="RAPTOR-OPTION-VALUE-TYPE-STRING:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-STRING:CAPS">
+<ANCHOR id="RAPTOR-OPTION-VALUE-TYPE-URI:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-URI:CAPS">
+<ANCHOR id="RAPTOR-OPTION-VALUE-TYPE-LAST:CAPS" href="raptor2/raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-LAST:CAPS">
+<ANCHOR id="raptor-option-get-value-type-label" href="raptor2/raptor2-section-option.html#raptor-option-get-value-type-label">
+<ANCHOR id="raptor-world-get-option-description" href="raptor2/raptor2-section-option.html#raptor-world-get-option-description">
+<ANCHOR id="raptor-free-option-description" href="raptor2/raptor2-section-option.html#raptor-free-option-description">
+<ANCHOR id="raptor-world-get-option-from-uri" href="raptor2/raptor2-section-option.html#raptor-world-get-option-from-uri">
+<ANCHOR id="raptor2-section-iostream" href="raptor2/raptor2-section-iostream.html">
+<ANCHOR id="raptor2-section-iostream.synopsis" href="raptor2/raptor2-section-iostream.html#raptor2-section-iostream.synopsis">
+<ANCHOR id="raptor2-section-iostream.description" href="raptor2/raptor2-section-iostream.html#raptor2-section-iostream.description">
+<ANCHOR id="raptor2-section-iostream.details" href="raptor2/raptor2-section-iostream.html#raptor2-section-iostream.details">
+<ANCHOR id="raptor-iostream" href="raptor2/raptor2-section-iostream.html#raptor-iostream">
+<ANCHOR id="raptor-iostream-init-func" href="raptor2/raptor2-section-iostream.html#raptor-iostream-init-func">
+<ANCHOR id="raptor-iostream-finish-func" href="raptor2/raptor2-section-iostream.html#raptor-iostream-finish-func">
+<ANCHOR id="raptor-iostream-write-byte-func" href="raptor2/raptor2-section-iostream.html#raptor-iostream-write-byte-func">
+<ANCHOR id="raptor-iostream-write-bytes-func" href="raptor2/raptor2-section-iostream.html#raptor-iostream-write-bytes-func">
+<ANCHOR id="raptor-iostream-write-end-func" href="raptor2/raptor2-section-iostream.html#raptor-iostream-write-end-func">
+<ANCHOR id="raptor-iostream-read-bytes-func" href="raptor2/raptor2-section-iostream.html#raptor-iostream-read-bytes-func">
+<ANCHOR id="raptor-iostream-read-eof-func" href="raptor2/raptor2-section-iostream.html#raptor-iostream-read-eof-func">
+<ANCHOR id="raptor-iostream-handler" href="raptor2/raptor2-section-iostream.html#raptor-iostream-handler">
+<ANCHOR id="raptor-new-iostream-from-handler" href="raptor2/raptor2-section-iostream.html#raptor-new-iostream-from-handler">
+<ANCHOR id="raptor-new-iostream-from-sink" href="raptor2/raptor2-section-iostream.html#raptor-new-iostream-from-sink">
+<ANCHOR id="raptor-new-iostream-from-filename" href="raptor2/raptor2-section-iostream.html#raptor-new-iostream-from-filename">
+<ANCHOR id="raptor-new-iostream-from-file-handle" href="raptor2/raptor2-section-iostream.html#raptor-new-iostream-from-file-handle">
+<ANCHOR id="raptor-new-iostream-from-string" href="raptor2/raptor2-section-iostream.html#raptor-new-iostream-from-string">
+<ANCHOR id="raptor-new-iostream-to-sink" href="raptor2/raptor2-section-iostream.html#raptor-new-iostream-to-sink">
+<ANCHOR id="raptor-new-iostream-to-filename" href="raptor2/raptor2-section-iostream.html#raptor-new-iostream-to-filename">
+<ANCHOR id="raptor-new-iostream-to-file-handle" href="raptor2/raptor2-section-iostream.html#raptor-new-iostream-to-file-handle">
+<ANCHOR id="raptor-new-iostream-to-string" href="raptor2/raptor2-section-iostream.html#raptor-new-iostream-to-string">
+<ANCHOR id="raptor-free-iostream" href="raptor2/raptor2-section-iostream.html#raptor-free-iostream">
+<ANCHOR id="raptor-iostream-hexadecimal-write" href="raptor2/raptor2-section-iostream.html#raptor-iostream-hexadecimal-write">
+<ANCHOR id="raptor-iostream-read-bytes" href="raptor2/raptor2-section-iostream.html#raptor-iostream-read-bytes">
+<ANCHOR id="raptor-iostream-read-eof" href="raptor2/raptor2-section-iostream.html#raptor-iostream-read-eof">
+<ANCHOR id="raptor-iostream-tell" href="raptor2/raptor2-section-iostream.html#raptor-iostream-tell">
+<ANCHOR id="raptor-iostream-counted-string-write" href="raptor2/raptor2-section-iostream.html#raptor-iostream-counted-string-write">
+<ANCHOR id="raptor-iostream-decimal-write" href="raptor2/raptor2-section-iostream.html#raptor-iostream-decimal-write">
+<ANCHOR id="raptor-iostream-string-write" href="raptor2/raptor2-section-iostream.html#raptor-iostream-string-write">
+<ANCHOR id="raptor-iostream-write-byte" href="raptor2/raptor2-section-iostream.html#raptor-iostream-write-byte">
+<ANCHOR id="raptor-iostream-write-bytes" href="raptor2/raptor2-section-iostream.html#raptor-iostream-write-bytes">
+<ANCHOR id="raptor-iostream-write-end" href="raptor2/raptor2-section-iostream.html#raptor-iostream-write-end">
+<ANCHOR id="raptor-bnodeid-ntriples-write" href="raptor2/raptor2-section-iostream.html#raptor-bnodeid-ntriples-write">
+<ANCHOR id="raptor-string-ntriples-write" href="raptor2/raptor2-section-iostream.html#raptor-string-ntriples-write">
+<ANCHOR id="raptor-string-python-write" href="raptor2/raptor2-section-iostream.html#raptor-string-python-write">
+<ANCHOR id="raptor2-section-locator" href="raptor2/raptor2-section-locator.html">
+<ANCHOR id="raptor2-section-locator.synopsis" href="raptor2/raptor2-section-locator.html#raptor2-section-locator.synopsis">
+<ANCHOR id="raptor2-section-locator.description" href="raptor2/raptor2-section-locator.html#raptor2-section-locator.description">
+<ANCHOR id="raptor2-section-locator.details" href="raptor2/raptor2-section-locator.html#raptor2-section-locator.details">
+<ANCHOR id="raptor-locator" href="raptor2/raptor2-section-locator.html#raptor-locator">
+<ANCHOR id="raptor-locator-print" href="raptor2/raptor2-section-locator.html#raptor-locator-print">
+<ANCHOR id="raptor-locator-format" href="raptor2/raptor2-section-locator.html#raptor-locator-format">
+<ANCHOR id="raptor-locator-line" href="raptor2/raptor2-section-locator.html#raptor-locator-line">
+<ANCHOR id="raptor-locator-column" href="raptor2/raptor2-section-locator.html#raptor-locator-column">
+<ANCHOR id="raptor-locator-byte" href="raptor2/raptor2-section-locator.html#raptor-locator-byte">
+<ANCHOR id="raptor-locator-file" href="raptor2/raptor2-section-locator.html#raptor-locator-file">
+<ANCHOR id="raptor-locator-uri" href="raptor2/raptor2-section-locator.html#raptor-locator-uri">
+<ANCHOR id="raptor2-section-parser" href="raptor2/raptor2-section-parser.html">
+<ANCHOR id="raptor2-section-parser.synopsis" href="raptor2/raptor2-section-parser.html#raptor2-section-parser.synopsis">
+<ANCHOR id="raptor2-section-parser.description" href="raptor2/raptor2-section-parser.html#raptor2-section-parser.description">
+<ANCHOR id="raptor2-section-parser.details" href="raptor2/raptor2-section-parser.html#raptor2-section-parser.details">
+<ANCHOR id="raptor-parser" href="raptor2/raptor2-section-parser.html#raptor-parser">
+<ANCHOR id="raptor-new-parser" href="raptor2/raptor2-section-parser.html#raptor-new-parser">
+<ANCHOR id="raptor-new-parser-for-content" href="raptor2/raptor2-section-parser.html#raptor-new-parser-for-content">
+<ANCHOR id="raptor-free-parser" href="raptor2/raptor2-section-parser.html#raptor-free-parser">
+<ANCHOR id="raptor-graph-mark-handler" href="raptor2/raptor2-section-parser.html#raptor-graph-mark-handler">
+<ANCHOR id="raptor-namespace-handler" href="raptor2/raptor2-section-parser.html#raptor-namespace-handler">
+<ANCHOR id="raptor-parser-set-statement-handler" href="raptor2/raptor2-section-parser.html#raptor-parser-set-statement-handler">
+<ANCHOR id="raptor-graph-mark-flags" href="raptor2/raptor2-section-parser.html#raptor-graph-mark-flags">
+<ANCHOR id="RAPTOR-GRAPH-MARK-START:CAPS" href="raptor2/raptor2-section-parser.html#RAPTOR-GRAPH-MARK-START:CAPS">
+<ANCHOR id="RAPTOR-GRAPH-MARK-DECLARED:CAPS" href="raptor2/raptor2-section-parser.html#RAPTOR-GRAPH-MARK-DECLARED:CAPS">
+<ANCHOR id="raptor-parser-set-graph-mark-handler" href="raptor2/raptor2-section-parser.html#raptor-parser-set-graph-mark-handler">
+<ANCHOR id="raptor-parser-set-namespace-handler" href="raptor2/raptor2-section-parser.html#raptor-parser-set-namespace-handler">
+<ANCHOR id="raptor-parser-get-description" href="raptor2/raptor2-section-parser.html#raptor-parser-get-description">
+<ANCHOR id="raptor-parser-get-locator" href="raptor2/raptor2-section-parser.html#raptor-parser-get-locator">
+<ANCHOR id="raptor-parser-parse-abort" href="raptor2/raptor2-section-parser.html#raptor-parser-parse-abort">
+<ANCHOR id="raptor-parser-parse-chunk" href="raptor2/raptor2-section-parser.html#raptor-parser-parse-chunk">
+<ANCHOR id="raptor-parser-parse-file" href="raptor2/raptor2-section-parser.html#raptor-parser-parse-file">
+<ANCHOR id="raptor-parser-parse-file-stream" href="raptor2/raptor2-section-parser.html#raptor-parser-parse-file-stream">
+<ANCHOR id="raptor-parser-parse-iostream" href="raptor2/raptor2-section-parser.html#raptor-parser-parse-iostream">
+<ANCHOR id="raptor-parser-parse-start" href="raptor2/raptor2-section-parser.html#raptor-parser-parse-start">
+<ANCHOR id="raptor-parser-parse-uri" href="raptor2/raptor2-section-parser.html#raptor-parser-parse-uri">
+<ANCHOR id="raptor-parser-parse-uri-with-connection" href="raptor2/raptor2-section-parser.html#raptor-parser-parse-uri-with-connection">
+<ANCHOR id="raptor-parser-get-graph" href="raptor2/raptor2-section-parser.html#raptor-parser-get-graph">
+<ANCHOR id="raptor-parser-get-name" href="raptor2/raptor2-section-parser.html#raptor-parser-get-name">
+<ANCHOR id="raptor-parser-set-option" href="raptor2/raptor2-section-parser.html#raptor-parser-set-option">
+<ANCHOR id="raptor-parser-get-option" href="raptor2/raptor2-section-parser.html#raptor-parser-get-option">
+<ANCHOR id="raptor-parser-get-accept-header" href="raptor2/raptor2-section-parser.html#raptor-parser-get-accept-header">
+<ANCHOR id="raptor-parser-set-uri-filter" href="raptor2/raptor2-section-parser.html#raptor-parser-set-uri-filter">
+<ANCHOR id="raptor-parser-get-world" href="raptor2/raptor2-section-parser.html#raptor-parser-get-world">
+<ANCHOR id="raptor2-section-sax2" href="raptor2/raptor2-section-sax2.html">
+<ANCHOR id="raptor2-section-sax2.synopsis" href="raptor2/raptor2-section-sax2.html#raptor2-section-sax2.synopsis">
+<ANCHOR id="raptor2-section-sax2.description" href="raptor2/raptor2-section-sax2.html#raptor2-section-sax2.description">
+<ANCHOR id="raptor2-section-sax2.details" href="raptor2/raptor2-section-sax2.html#raptor2-section-sax2.details">
+<ANCHOR id="raptor-sax2" href="raptor2/raptor2-section-sax2.html#raptor-sax2">
+<ANCHOR id="raptor-new-sax2" href="raptor2/raptor2-section-sax2.html#raptor-new-sax2">
+<ANCHOR id="raptor-free-sax2" href="raptor2/raptor2-section-sax2.html#raptor-free-sax2">
+<ANCHOR id="raptor-sax2-start-element-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-start-element-handler">
+<ANCHOR id="raptor-sax2-end-element-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-end-element-handler">
+<ANCHOR id="raptor-sax2-characters-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-characters-handler">
+<ANCHOR id="raptor-sax2-cdata-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-cdata-handler">
+<ANCHOR id="raptor-sax2-comment-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-comment-handler">
+<ANCHOR id="raptor-sax2-unparsed-entity-decl-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-unparsed-entity-decl-handler">
+<ANCHOR id="raptor-sax2-external-entity-ref-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-external-entity-ref-handler">
+<ANCHOR id="raptor-sax2-set-start-element-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-set-start-element-handler">
+<ANCHOR id="raptor-sax2-set-end-element-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-set-end-element-handler">
+<ANCHOR id="raptor-sax2-set-characters-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-set-characters-handler">
+<ANCHOR id="raptor-sax2-set-cdata-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-set-cdata-handler">
+<ANCHOR id="raptor-sax2-set-comment-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-set-comment-handler">
+<ANCHOR id="raptor-sax2-set-unparsed-entity-decl-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-set-unparsed-entity-decl-handler">
+<ANCHOR id="raptor-sax2-set-external-entity-ref-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-set-external-entity-ref-handler">
+<ANCHOR id="raptor-sax2-set-namespace-handler" href="raptor2/raptor2-section-sax2.html#raptor-sax2-set-namespace-handler">
+<ANCHOR id="raptor-sax2-set-uri-filter" href="raptor2/raptor2-section-sax2.html#raptor-sax2-set-uri-filter">
+<ANCHOR id="raptor-sax2-parse-start" href="raptor2/raptor2-section-sax2.html#raptor-sax2-parse-start">
+<ANCHOR id="raptor-sax2-parse-chunk" href="raptor2/raptor2-section-sax2.html#raptor-sax2-parse-chunk">
+<ANCHOR id="raptor-sax2-inscope-xml-language" href="raptor2/raptor2-section-sax2.html#raptor-sax2-inscope-xml-language">
+<ANCHOR id="raptor-sax2-inscope-base-uri" href="raptor2/raptor2-section-sax2.html#raptor-sax2-inscope-base-uri">
+<ANCHOR id="raptor2-section-sequence" href="raptor2/raptor2-section-sequence.html">
+<ANCHOR id="raptor2-section-sequence.synopsis" href="raptor2/raptor2-section-sequence.html#raptor2-section-sequence.synopsis">
+<ANCHOR id="raptor2-section-sequence.description" href="raptor2/raptor2-section-sequence.html#raptor2-section-sequence.description">
+<ANCHOR id="raptor2-section-sequence.details" href="raptor2/raptor2-section-sequence.html#raptor2-section-sequence.details">
+<ANCHOR id="raptor-sequence" href="raptor2/raptor2-section-sequence.html#raptor-sequence">
+<ANCHOR id="raptor-new-sequence" href="raptor2/raptor2-section-sequence.html#raptor-new-sequence">
+<ANCHOR id="raptor-new-sequence-with-context" href="raptor2/raptor2-section-sequence.html#raptor-new-sequence-with-context">
+<ANCHOR id="raptor-free-sequence" href="raptor2/raptor2-section-sequence.html#raptor-free-sequence">
+<ANCHOR id="raptor-sequence-delete-at" href="raptor2/raptor2-section-sequence.html#raptor-sequence-delete-at">
+<ANCHOR id="raptor-sequence-get-at" href="raptor2/raptor2-section-sequence.html#raptor-sequence-get-at">
+<ANCHOR id="raptor-sequence-join" href="raptor2/raptor2-section-sequence.html#raptor-sequence-join">
+<ANCHOR id="raptor-sequence-next-permutation" href="raptor2/raptor2-section-sequence.html#raptor-sequence-next-permutation">
+<ANCHOR id="raptor-sequence-pop" href="raptor2/raptor2-section-sequence.html#raptor-sequence-pop">
+<ANCHOR id="raptor-sequence-print" href="raptor2/raptor2-section-sequence.html#raptor-sequence-print">
+<ANCHOR id="raptor-sequence-push" href="raptor2/raptor2-section-sequence.html#raptor-sequence-push">
+<ANCHOR id="raptor-sequence-reverse" href="raptor2/raptor2-section-sequence.html#raptor-sequence-reverse">
+<ANCHOR id="raptor-sequence-set-at" href="raptor2/raptor2-section-sequence.html#raptor-sequence-set-at">
+<ANCHOR id="raptor-sequence-shift" href="raptor2/raptor2-section-sequence.html#raptor-sequence-shift">
+<ANCHOR id="raptor-sequence-size" href="raptor2/raptor2-section-sequence.html#raptor-sequence-size">
+<ANCHOR id="raptor-sequence-sort" href="raptor2/raptor2-section-sequence.html#raptor-sequence-sort">
+<ANCHOR id="raptor-sequence-swap" href="raptor2/raptor2-section-sequence.html#raptor-sequence-swap">
+<ANCHOR id="raptor-sequence-unshift" href="raptor2/raptor2-section-sequence.html#raptor-sequence-unshift">
+<ANCHOR id="raptor2-section-serializer" href="raptor2/raptor2-section-serializer.html">
+<ANCHOR id="raptor2-section-serializer.synopsis" href="raptor2/raptor2-section-serializer.html#raptor2-section-serializer.synopsis">
+<ANCHOR id="raptor2-section-serializer.description" href="raptor2/raptor2-section-serializer.html#raptor2-section-serializer.description">
+<ANCHOR id="raptor2-section-serializer.details" href="raptor2/raptor2-section-serializer.html#raptor2-section-serializer.details">
+<ANCHOR id="raptor-serializer" href="raptor2/raptor2-section-serializer.html#raptor-serializer">
+<ANCHOR id="raptor-new-serializer" href="raptor2/raptor2-section-serializer.html#raptor-new-serializer">
+<ANCHOR id="raptor-free-serializer" href="raptor2/raptor2-section-serializer.html#raptor-free-serializer">
+<ANCHOR id="raptor-serializer-start-to-iostream" href="raptor2/raptor2-section-serializer.html#raptor-serializer-start-to-iostream">
+<ANCHOR id="raptor-serializer-start-to-filename" href="raptor2/raptor2-section-serializer.html#raptor-serializer-start-to-filename">
+<ANCHOR id="raptor-serializer-start-to-string" href="raptor2/raptor2-section-serializer.html#raptor-serializer-start-to-string">
+<ANCHOR id="raptor-serializer-start-to-file-handle" href="raptor2/raptor2-section-serializer.html#raptor-serializer-start-to-file-handle">
+<ANCHOR id="raptor-serializer-set-namespace" href="raptor2/raptor2-section-serializer.html#raptor-serializer-set-namespace">
+<ANCHOR id="raptor-serializer-set-namespace-from-namespace" href="raptor2/raptor2-section-serializer.html#raptor-serializer-set-namespace-from-namespace">
+<ANCHOR id="raptor-serializer-serialize-statement" href="raptor2/raptor2-section-serializer.html#raptor-serializer-serialize-statement">
+<ANCHOR id="raptor-serializer-serialize-end" href="raptor2/raptor2-section-serializer.html#raptor-serializer-serialize-end">
+<ANCHOR id="raptor-serializer-flush" href="raptor2/raptor2-section-serializer.html#raptor-serializer-flush">
+<ANCHOR id="raptor-serializer-get-description" href="raptor2/raptor2-section-serializer.html#raptor-serializer-get-description">
+<ANCHOR id="raptor-serializer-get-iostream" href="raptor2/raptor2-section-serializer.html#raptor-serializer-get-iostream">
+<ANCHOR id="raptor-serializer-get-locator" href="raptor2/raptor2-section-serializer.html#raptor-serializer-get-locator">
+<ANCHOR id="raptor-serializer-set-option" href="raptor2/raptor2-section-serializer.html#raptor-serializer-set-option">
+<ANCHOR id="raptor-serializer-get-option" href="raptor2/raptor2-section-serializer.html#raptor-serializer-get-option">
+<ANCHOR id="raptor-serializer-get-world" href="raptor2/raptor2-section-serializer.html#raptor-serializer-get-world">
+<ANCHOR id="raptor2-section-stringbuffer" href="raptor2/raptor2-section-stringbuffer.html">
+<ANCHOR id="raptor2-section-stringbuffer.synopsis" href="raptor2/raptor2-section-stringbuffer.html#raptor2-section-stringbuffer.synopsis">
+<ANCHOR id="raptor2-section-stringbuffer.description" href="raptor2/raptor2-section-stringbuffer.html#raptor2-section-stringbuffer.description">
+<ANCHOR id="raptor2-section-stringbuffer.details" href="raptor2/raptor2-section-stringbuffer.html#raptor2-section-stringbuffer.details">
+<ANCHOR id="raptor-stringbuffer" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer">
+<ANCHOR id="raptor-new-stringbuffer" href="raptor2/raptor2-section-stringbuffer.html#raptor-new-stringbuffer">
+<ANCHOR id="raptor-free-stringbuffer" href="raptor2/raptor2-section-stringbuffer.html#raptor-free-stringbuffer">
+<ANCHOR id="raptor-stringbuffer-append-counted-string" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer-append-counted-string">
+<ANCHOR id="raptor-stringbuffer-append-decimal" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer-append-decimal">
+<ANCHOR id="raptor-stringbuffer-append-hexadecimal" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer-append-hexadecimal">
+<ANCHOR id="raptor-stringbuffer-append-string" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer-append-string">
+<ANCHOR id="raptor-stringbuffer-append-stringbuffer" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer-append-stringbuffer">
+<ANCHOR id="raptor-stringbuffer-append-uri-escaped-counted-string" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer-append-uri-escaped-counted-string">
+<ANCHOR id="raptor-stringbuffer-prepend-counted-string" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer-prepend-counted-string">
+<ANCHOR id="raptor-stringbuffer-prepend-string" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer-prepend-string">
+<ANCHOR id="raptor-stringbuffer-as-string" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer-as-string">
+<ANCHOR id="raptor-stringbuffer-length" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer-length">
+<ANCHOR id="raptor-stringbuffer-copy-to-string" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer-copy-to-string">
+<ANCHOR id="raptor-stringbuffer-write" href="raptor2/raptor2-section-stringbuffer.html#raptor-stringbuffer-write">
+<ANCHOR id="raptor2-section-triples" href="raptor2/raptor2-section-triples.html">
+<ANCHOR id="raptor2-section-triples.synopsis" href="raptor2/raptor2-section-triples.html#raptor2-section-triples.synopsis">
+<ANCHOR id="raptor2-section-triples.description" href="raptor2/raptor2-section-triples.html#raptor2-section-triples.description">
+<ANCHOR id="raptor2-section-triples.details" href="raptor2/raptor2-section-triples.html#raptor2-section-triples.details">
+<ANCHOR id="raptor-term-type" href="raptor2/raptor2-section-triples.html#raptor-term-type">
+<ANCHOR id="RAPTOR-TERM-TYPE-UNKNOWN:CAPS" href="raptor2/raptor2-section-triples.html#RAPTOR-TERM-TYPE-UNKNOWN:CAPS">
+<ANCHOR id="RAPTOR-TERM-TYPE-URI:CAPS" href="raptor2/raptor2-section-triples.html#RAPTOR-TERM-TYPE-URI:CAPS">
+<ANCHOR id="RAPTOR-TERM-TYPE-LITERAL:CAPS" href="raptor2/raptor2-section-triples.html#RAPTOR-TERM-TYPE-LITERAL:CAPS">
+<ANCHOR id="RAPTOR-TERM-TYPE-BLANK:CAPS" href="raptor2/raptor2-section-triples.html#RAPTOR-TERM-TYPE-BLANK:CAPS">
+<ANCHOR id="raptor-term" href="raptor2/raptor2-section-triples.html#raptor-term">
+<ANCHOR id="raptor-term-value" href="raptor2/raptor2-section-triples.html#raptor-term-value">
+<ANCHOR id="raptor-term-blank-value" href="raptor2/raptor2-section-triples.html#raptor-term-blank-value">
+<ANCHOR id="raptor-term-literal-value" href="raptor2/raptor2-section-triples.html#raptor-term-literal-value">
+<ANCHOR id="raptor-new-term-from-blank" href="raptor2/raptor2-section-triples.html#raptor-new-term-from-blank">
+<ANCHOR id="raptor-new-term-from-counted-blank" href="raptor2/raptor2-section-triples.html#raptor-new-term-from-counted-blank">
+<ANCHOR id="raptor-new-term-from-literal" href="raptor2/raptor2-section-triples.html#raptor-new-term-from-literal">
+<ANCHOR id="raptor-new-term-from-counted-literal" href="raptor2/raptor2-section-triples.html#raptor-new-term-from-counted-literal">
+<ANCHOR id="raptor-new-term-from-counted-uri-string" href="raptor2/raptor2-section-triples.html#raptor-new-term-from-counted-uri-string">
+<ANCHOR id="raptor-new-term-from-uri" href="raptor2/raptor2-section-triples.html#raptor-new-term-from-uri">
+<ANCHOR id="raptor-new-term-from-uri-string" href="raptor2/raptor2-section-triples.html#raptor-new-term-from-uri-string">
+<ANCHOR id="raptor-term-copy" href="raptor2/raptor2-section-triples.html#raptor-term-copy">
+<ANCHOR id="raptor-term-compare" href="raptor2/raptor2-section-triples.html#raptor-term-compare">
+<ANCHOR id="raptor-term-equals" href="raptor2/raptor2-section-triples.html#raptor-term-equals">
+<ANCHOR id="raptor-free-term" href="raptor2/raptor2-section-triples.html#raptor-free-term">
+<ANCHOR id="raptor-term-to-counted-string" href="raptor2/raptor2-section-triples.html#raptor-term-to-counted-string">
+<ANCHOR id="raptor-term-to-string" href="raptor2/raptor2-section-triples.html#raptor-term-to-string">
+<ANCHOR id="raptor-term-ntriples-write" href="raptor2/raptor2-section-triples.html#raptor-term-ntriples-write">
+<ANCHOR id="raptor-term-to-turtle-counted-string" href="raptor2/raptor2-section-triples.html#raptor-term-to-turtle-counted-string">
+<ANCHOR id="raptor-term-to-turtle-string" href="raptor2/raptor2-section-triples.html#raptor-term-to-turtle-string">
+<ANCHOR id="raptor-term-turtle-write" href="raptor2/raptor2-section-triples.html#raptor-term-turtle-write">
+<ANCHOR id="raptor-statement" href="raptor2/raptor2-section-triples.html#raptor-statement">
+<ANCHOR id="raptor-new-statement" href="raptor2/raptor2-section-triples.html#raptor-new-statement">
+<ANCHOR id="raptor-new-statement-from-nodes" href="raptor2/raptor2-section-triples.html#raptor-new-statement-from-nodes">
+<ANCHOR id="raptor-free-statement" href="raptor2/raptor2-section-triples.html#raptor-free-statement">
+<ANCHOR id="raptor-statement-copy" href="raptor2/raptor2-section-triples.html#raptor-statement-copy">
+<ANCHOR id="raptor-statement-compare" href="raptor2/raptor2-section-triples.html#raptor-statement-compare">
+<ANCHOR id="raptor-statement-equals" href="raptor2/raptor2-section-triples.html#raptor-statement-equals">
+<ANCHOR id="raptor-statement-init" href="raptor2/raptor2-section-triples.html#raptor-statement-init">
+<ANCHOR id="raptor-statement-clear" href="raptor2/raptor2-section-triples.html#raptor-statement-clear">
+<ANCHOR id="raptor-statement-print" href="raptor2/raptor2-section-triples.html#raptor-statement-print">
+<ANCHOR id="raptor-statement-print-as-ntriples" href="raptor2/raptor2-section-triples.html#raptor-statement-print-as-ntriples">
+<ANCHOR id="raptor-statement-ntriples-write" href="raptor2/raptor2-section-triples.html#raptor-statement-ntriples-write">
+<ANCHOR id="raptor2-section-unicode" href="raptor2/raptor2-section-unicode.html">
+<ANCHOR id="raptor2-section-unicode.synopsis" href="raptor2/raptor2-section-unicode.html#raptor2-section-unicode.synopsis">
+<ANCHOR id="raptor2-section-unicode.description" href="raptor2/raptor2-section-unicode.html#raptor2-section-unicode.description">
+<ANCHOR id="raptor2-section-unicode.details" href="raptor2/raptor2-section-unicode.html#raptor2-section-unicode.details">
+<ANCHOR id="raptor-unichar" href="raptor2/raptor2-section-unicode.html#raptor-unichar">
+<ANCHOR id="raptor-unicode-utf8-string-put-char" href="raptor2/raptor2-section-unicode.html#raptor-unicode-utf8-string-put-char">
+<ANCHOR id="raptor-unicode-utf8-string-get-char" href="raptor2/raptor2-section-unicode.html#raptor-unicode-utf8-string-get-char">
+<ANCHOR id="raptor-unicode-is-xml11-namestartchar" href="raptor2/raptor2-section-unicode.html#raptor-unicode-is-xml11-namestartchar">
+<ANCHOR id="raptor-unicode-is-xml10-namestartchar" href="raptor2/raptor2-section-unicode.html#raptor-unicode-is-xml10-namestartchar">
+<ANCHOR id="raptor-unicode-is-xml11-namechar" href="raptor2/raptor2-section-unicode.html#raptor-unicode-is-xml11-namechar">
+<ANCHOR id="raptor-unicode-is-xml10-namechar" href="raptor2/raptor2-section-unicode.html#raptor-unicode-is-xml10-namechar">
+<ANCHOR id="raptor-unicode-check-utf8-string" href="raptor2/raptor2-section-unicode.html#raptor-unicode-check-utf8-string">
+<ANCHOR id="raptor-unicode-utf8-strlen" href="raptor2/raptor2-section-unicode.html#raptor-unicode-utf8-strlen">
+<ANCHOR id="raptor-unicode-utf8-substr" href="raptor2/raptor2-section-unicode.html#raptor-unicode-utf8-substr">
+<ANCHOR id="raptor2-section-uri" href="raptor2/raptor2-section-uri.html">
+<ANCHOR id="raptor2-section-uri.synopsis" href="raptor2/raptor2-section-uri.html#raptor2-section-uri.synopsis">
+<ANCHOR id="raptor2-section-uri.description" href="raptor2/raptor2-section-uri.html#raptor2-section-uri.description">
+<ANCHOR id="raptor2-section-uri.details" href="raptor2/raptor2-section-uri.html#raptor2-section-uri.details">
+<ANCHOR id="raptor-uri" href="raptor2/raptor2-section-uri.html#raptor-uri">
+<ANCHOR id="raptor-new-uri" href="raptor2/raptor2-section-uri.html#raptor-new-uri">
+<ANCHOR id="raptor-new-uri-from-counted-string" href="raptor2/raptor2-section-uri.html#raptor-new-uri-from-counted-string">
+<ANCHOR id="raptor-new-uri-from-uri-local-name" href="raptor2/raptor2-section-uri.html#raptor-new-uri-from-uri-local-name">
+<ANCHOR id="raptor-new-uri-from-uri-or-file-string" href="raptor2/raptor2-section-uri.html#raptor-new-uri-from-uri-or-file-string">
+<ANCHOR id="raptor-new-uri-relative-to-base" href="raptor2/raptor2-section-uri.html#raptor-new-uri-relative-to-base">
+<ANCHOR id="raptor-new-uri-relative-to-base-counted" href="raptor2/raptor2-section-uri.html#raptor-new-uri-relative-to-base-counted">
+<ANCHOR id="raptor-new-uri-from-id" href="raptor2/raptor2-section-uri.html#raptor-new-uri-from-id">
+<ANCHOR id="raptor-new-uri-for-rdf-concept" href="raptor2/raptor2-section-uri.html#raptor-new-uri-for-rdf-concept">
+<ANCHOR id="raptor-new-uri-for-xmlbase" href="raptor2/raptor2-section-uri.html#raptor-new-uri-for-xmlbase">
+<ANCHOR id="raptor-new-uri-for-retrieval" href="raptor2/raptor2-section-uri.html#raptor-new-uri-for-retrieval">
+<ANCHOR id="raptor-free-uri" href="raptor2/raptor2-section-uri.html#raptor-free-uri">
+<ANCHOR id="raptor-uri-compare" href="raptor2/raptor2-section-uri.html#raptor-uri-compare">
+<ANCHOR id="raptor-uri-equals" href="raptor2/raptor2-section-uri.html#raptor-uri-equals">
+<ANCHOR id="raptor-uri-copy" href="raptor2/raptor2-section-uri.html#raptor-uri-copy">
+<ANCHOR id="raptor-uri-as-string" href="raptor2/raptor2-section-uri.html#raptor-uri-as-string">
+<ANCHOR id="raptor-uri-as-counted-string" href="raptor2/raptor2-section-uri.html#raptor-uri-as-counted-string">
+<ANCHOR id="raptor-uri-to-relative-counted-uri-string" href="raptor2/raptor2-section-uri.html#raptor-uri-to-relative-counted-uri-string">
+<ANCHOR id="raptor-uri-to-relative-uri-string" href="raptor2/raptor2-section-uri.html#raptor-uri-to-relative-uri-string">
+<ANCHOR id="raptor-uri-to-counted-string" href="raptor2/raptor2-section-uri.html#raptor-uri-to-counted-string">
+<ANCHOR id="raptor-uri-to-string" href="raptor2/raptor2-section-uri.html#raptor-uri-to-string">
+<ANCHOR id="raptor-uri-resolve-uri-reference" href="raptor2/raptor2-section-uri.html#raptor-uri-resolve-uri-reference">
+<ANCHOR id="raptor-uri-filename-to-uri-string" href="raptor2/raptor2-section-uri.html#raptor-uri-filename-to-uri-string">
+<ANCHOR id="raptor-uri-uri-string-to-filename" href="raptor2/raptor2-section-uri.html#raptor-uri-uri-string-to-filename">
+<ANCHOR id="raptor-uri-uri-string-to-filename-fragment" href="raptor2/raptor2-section-uri.html#raptor-uri-uri-string-to-filename-fragment">
+<ANCHOR id="raptor-uri-uri-string-to-counted-filename-fragment" href="raptor2/raptor2-section-uri.html#raptor-uri-uri-string-to-counted-filename-fragment">
+<ANCHOR id="raptor-uri-uri-string-is-file-uri" href="raptor2/raptor2-section-uri.html#raptor-uri-uri-string-is-file-uri">
+<ANCHOR id="raptor-uri-print" href="raptor2/raptor2-section-uri.html#raptor-uri-print">
+<ANCHOR id="raptor-uri-get-world" href="raptor2/raptor2-section-uri.html#raptor-uri-get-world">
+<ANCHOR id="raptor-uri-write" href="raptor2/raptor2-section-uri.html#raptor-uri-write">
+<ANCHOR id="raptor-uri-file-exists" href="raptor2/raptor2-section-uri.html#raptor-uri-file-exists">
+<ANCHOR id="raptor-uri-filename-exists" href="raptor2/raptor2-section-uri.html#raptor-uri-filename-exists">
+<ANCHOR id="raptor-uri-to-turtle-counted-string" href="raptor2/raptor2-section-uri.html#raptor-uri-to-turtle-counted-string">
+<ANCHOR id="raptor-uri-to-turtle-string" href="raptor2/raptor2-section-uri.html#raptor-uri-to-turtle-string">
+<ANCHOR id="raptor-uri-turtle-write" href="raptor2/raptor2-section-uri.html#raptor-uri-turtle-write">
+<ANCHOR id="raptor2-section-www" href="raptor2/raptor2-section-www.html">
+<ANCHOR id="raptor2-section-www.synopsis" href="raptor2/raptor2-section-www.html#raptor2-section-www.synopsis">
+<ANCHOR id="raptor2-section-www.description" href="raptor2/raptor2-section-www.html#raptor2-section-www.description">
+<ANCHOR id="raptor2-section-www.details" href="raptor2/raptor2-section-www.html#raptor2-section-www.details">
+<ANCHOR id="raptor-www" href="raptor2/raptor2-section-www.html#raptor-www">
+<ANCHOR id="raptor-new-www" href="raptor2/raptor2-section-www.html#raptor-new-www">
+<ANCHOR id="raptor-new-www-with-connection" href="raptor2/raptor2-section-www.html#raptor-new-www-with-connection">
+<ANCHOR id="raptor-free-www" href="raptor2/raptor2-section-www.html#raptor-free-www">
+<ANCHOR id="raptor-www-write-bytes-handler" href="raptor2/raptor2-section-www.html#raptor-www-write-bytes-handler">
+<ANCHOR id="raptor-www-content-type-handler" href="raptor2/raptor2-section-www.html#raptor-www-content-type-handler">
+<ANCHOR id="raptor-www-set-user-agent" href="raptor2/raptor2-section-www.html#raptor-www-set-user-agent">
+<ANCHOR id="raptor-www-set-proxy" href="raptor2/raptor2-section-www.html#raptor-www-set-proxy">
+<ANCHOR id="raptor-www-set-http-accept" href="raptor2/raptor2-section-www.html#raptor-www-set-http-accept">
+<ANCHOR id="raptor-www-set-http-cache-control" href="raptor2/raptor2-section-www.html#raptor-www-set-http-cache-control">
+<ANCHOR id="raptor-www-set-write-bytes-handler" href="raptor2/raptor2-section-www.html#raptor-www-set-write-bytes-handler">
+<ANCHOR id="raptor-www-set-connection-timeout" href="raptor2/raptor2-section-www.html#raptor-www-set-connection-timeout">
+<ANCHOR id="raptor-www-set-content-type-handler" href="raptor2/raptor2-section-www.html#raptor-www-set-content-type-handler">
+<ANCHOR id="raptor-uri-filter-func" href="raptor2/raptor2-section-www.html#raptor-uri-filter-func">
+<ANCHOR id="raptor-www-set-uri-filter" href="raptor2/raptor2-section-www.html#raptor-www-set-uri-filter">
+<ANCHOR id="raptor-www-final-uri-handler" href="raptor2/raptor2-section-www.html#raptor-www-final-uri-handler">
+<ANCHOR id="raptor-www-get-final-uri" href="raptor2/raptor2-section-www.html#raptor-www-get-final-uri">
+<ANCHOR id="raptor-www-set-final-uri-handler" href="raptor2/raptor2-section-www.html#raptor-www-set-final-uri-handler">
+<ANCHOR id="raptor-www-fetch" href="raptor2/raptor2-section-www.html#raptor-www-fetch">
+<ANCHOR id="raptor-www-fetch-to-string" href="raptor2/raptor2-section-www.html#raptor-www-fetch-to-string">
+<ANCHOR id="raptor-www-get-connection" href="raptor2/raptor2-section-www.html#raptor-www-get-connection">
+<ANCHOR id="raptor-www-set-ssl-cert-options" href="raptor2/raptor2-section-www.html#raptor-www-set-ssl-cert-options">
+<ANCHOR id="raptor-www-set-ssl-verify-options" href="raptor2/raptor2-section-www.html#raptor-www-set-ssl-verify-options">
+<ANCHOR id="raptor-www-abort" href="raptor2/raptor2-section-www.html#raptor-www-abort">
+<ANCHOR id="raptor2-section-xml-namespace" href="raptor2/raptor2-section-xml-namespace.html">
+<ANCHOR id="raptor2-section-xml-namespace.synopsis" href="raptor2/raptor2-section-xml-namespace.html#raptor2-section-xml-namespace.synopsis">
+<ANCHOR id="raptor2-section-xml-namespace.description" href="raptor2/raptor2-section-xml-namespace.html#raptor2-section-xml-namespace.description">
+<ANCHOR id="raptor2-section-xml-namespace.details" href="raptor2/raptor2-section-xml-namespace.html#raptor2-section-xml-namespace.details">
+<ANCHOR id="raptor-namespace" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespace">
+<ANCHOR id="raptor-new-namespace-from-uri" href="raptor2/raptor2-section-xml-namespace.html#raptor-new-namespace-from-uri">
+<ANCHOR id="raptor-new-namespaces" href="raptor2/raptor2-section-xml-namespace.html#raptor-new-namespaces">
+<ANCHOR id="raptor-namespaces-init" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespaces-init">
+<ANCHOR id="raptor-namespaces-clear" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespaces-clear">
+<ANCHOR id="raptor-free-namespaces" href="raptor2/raptor2-section-xml-namespace.html#raptor-free-namespaces">
+<ANCHOR id="raptor-namespaces-start-namespace" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespaces-start-namespace">
+<ANCHOR id="raptor-namespaces-start-namespace-full" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespaces-start-namespace-full">
+<ANCHOR id="raptor-namespaces-end-for-depth" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespaces-end-for-depth">
+<ANCHOR id="raptor-namespaces-get-default-namespace" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespaces-get-default-namespace">
+<ANCHOR id="raptor-namespaces-find-namespace" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespaces-find-namespace">
+<ANCHOR id="raptor-namespaces-find-namespace-by-uri" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespaces-find-namespace-by-uri">
+<ANCHOR id="raptor-namespaces-namespace-in-scope" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespaces-namespace-in-scope">
+<ANCHOR id="raptor-new-namespace" href="raptor2/raptor2-section-xml-namespace.html#raptor-new-namespace">
+<ANCHOR id="raptor-free-namespace" href="raptor2/raptor2-section-xml-namespace.html#raptor-free-namespace">
+<ANCHOR id="raptor-namespace-get-uri" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespace-get-uri">
+<ANCHOR id="raptor-namespace-get-prefix" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespace-get-prefix">
+<ANCHOR id="raptor-namespace-get-counted-prefix" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespace-get-counted-prefix">
+<ANCHOR id="raptor-namespace-write" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespace-write">
+<ANCHOR id="raptor-namespace-stack" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespace-stack">
+<ANCHOR id="raptor-namespace-stack-start-namespace" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespace-stack-start-namespace">
+<ANCHOR id="raptor-namespace-format-as-xml" href="raptor2/raptor2-section-xml-namespace.html#raptor-namespace-format-as-xml">
+<ANCHOR id="raptor-xml-namespace-string-parse" href="raptor2/raptor2-section-xml-namespace.html#raptor-xml-namespace-string-parse">
+<ANCHOR id="raptor2-section-xml-qname" href="raptor2/raptor2-section-xml-qname.html">
+<ANCHOR id="raptor2-section-xml-qname.synopsis" href="raptor2/raptor2-section-xml-qname.html#raptor2-section-xml-qname.synopsis">
+<ANCHOR id="raptor2-section-xml-qname.description" href="raptor2/raptor2-section-xml-qname.html#raptor2-section-xml-qname.description">
+<ANCHOR id="raptor2-section-xml-qname.details" href="raptor2/raptor2-section-xml-qname.html#raptor2-section-xml-qname.details">
+<ANCHOR id="raptor-qname" href="raptor2/raptor2-section-xml-qname.html#raptor-qname">
+<ANCHOR id="raptor-new-qname" href="raptor2/raptor2-section-xml-qname.html#raptor-new-qname">
+<ANCHOR id="raptor-new-qname-from-namespace-local-name" href="raptor2/raptor2-section-xml-qname.html#raptor-new-qname-from-namespace-local-name">
+<ANCHOR id="raptor-new-qname-from-namespace-uri" href="raptor2/raptor2-section-xml-qname.html#raptor-new-qname-from-namespace-uri">
+<ANCHOR id="raptor-qname-copy" href="raptor2/raptor2-section-xml-qname.html#raptor-qname-copy">
+<ANCHOR id="raptor-free-qname" href="raptor2/raptor2-section-xml-qname.html#raptor-free-qname">
+<ANCHOR id="raptor-qname-equal" href="raptor2/raptor2-section-xml-qname.html#raptor-qname-equal">
+<ANCHOR id="raptor-qname-string-to-uri" href="raptor2/raptor2-section-xml-qname.html#raptor-qname-string-to-uri">
+<ANCHOR id="raptor-qname-write" href="raptor2/raptor2-section-xml-qname.html#raptor-qname-write">
+<ANCHOR id="raptor-qname-get-counted-value" href="raptor2/raptor2-section-xml-qname.html#raptor-qname-get-counted-value">
+<ANCHOR id="raptor-qname-get-local-name" href="raptor2/raptor2-section-xml-qname.html#raptor-qname-get-local-name">
+<ANCHOR id="raptor-qname-get-namespace" href="raptor2/raptor2-section-xml-qname.html#raptor-qname-get-namespace">
+<ANCHOR id="raptor-qname-get-value" href="raptor2/raptor2-section-xml-qname.html#raptor-qname-get-value">
+<ANCHOR id="raptor-qname-to-counted-name" href="raptor2/raptor2-section-xml-qname.html#raptor-qname-to-counted-name">
+<ANCHOR id="raptor2-section-xml" href="raptor2/raptor2-section-xml.html">
+<ANCHOR id="raptor2-section-xml.synopsis" href="raptor2/raptor2-section-xml.html#raptor2-section-xml.synopsis">
+<ANCHOR id="raptor2-section-xml.description" href="raptor2/raptor2-section-xml.html#raptor2-section-xml.description">
+<ANCHOR id="raptor2-section-xml.details" href="raptor2/raptor2-section-xml.html#raptor2-section-xml.details">
+<ANCHOR id="raptor-xml-element" href="raptor2/raptor2-section-xml.html#raptor-xml-element">
+<ANCHOR id="raptor-new-xml-element" href="raptor2/raptor2-section-xml.html#raptor-new-xml-element">
+<ANCHOR id="raptor-new-xml-element-from-namespace-local-name" href="raptor2/raptor2-section-xml.html#raptor-new-xml-element-from-namespace-local-name">
+<ANCHOR id="raptor-free-xml-element" href="raptor2/raptor2-section-xml.html#raptor-free-xml-element">
+<ANCHOR id="raptor-xml-element-get-name" href="raptor2/raptor2-section-xml.html#raptor-xml-element-get-name">
+<ANCHOR id="raptor-xml-element-get-attributes" href="raptor2/raptor2-section-xml.html#raptor-xml-element-get-attributes">
+<ANCHOR id="raptor-xml-element-get-attributes-count" href="raptor2/raptor2-section-xml.html#raptor-xml-element-get-attributes-count">
+<ANCHOR id="raptor-xml-element-set-attributes" href="raptor2/raptor2-section-xml.html#raptor-xml-element-set-attributes">
+<ANCHOR id="raptor-xml-element-declare-namespace" href="raptor2/raptor2-section-xml.html#raptor-xml-element-declare-namespace">
+<ANCHOR id="raptor-xml-element-is-empty" href="raptor2/raptor2-section-xml.html#raptor-xml-element-is-empty">
+<ANCHOR id="raptor-xml-element-get-language" href="raptor2/raptor2-section-xml.html#raptor-xml-element-get-language">
+<ANCHOR id="raptor-xml-element-write" href="raptor2/raptor2-section-xml.html#raptor-xml-element-write">
+<ANCHOR id="raptor-new-xml-writer" href="raptor2/raptor2-section-xml.html#raptor-new-xml-writer">
+<ANCHOR id="raptor-free-xml-writer" href="raptor2/raptor2-section-xml.html#raptor-free-xml-writer">
+<ANCHOR id="raptor-xml-writer-empty-element" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-empty-element">
+<ANCHOR id="raptor-xml-writer-start-element" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-start-element">
+<ANCHOR id="raptor-xml-writer-end-element" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-end-element">
+<ANCHOR id="raptor-xml-writer-cdata" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-cdata">
+<ANCHOR id="raptor-xml-writer-cdata-counted" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-cdata-counted">
+<ANCHOR id="raptor-xml-writer-raw" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-raw">
+<ANCHOR id="raptor-xml-writer-raw-counted" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-raw-counted">
+<ANCHOR id="raptor-xml-writer-comment" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-comment">
+<ANCHOR id="raptor-xml-writer-comment-counted" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-comment-counted">
+<ANCHOR id="raptor-xml-writer-flush" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-flush">
+<ANCHOR id="raptor-xml-writer-newline" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-newline">
+<ANCHOR id="raptor-xml-writer-get-depth" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-get-depth">
+<ANCHOR id="raptor-xml-writer-set-option" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-set-option">
+<ANCHOR id="raptor-xml-writer-get-option" href="raptor2/raptor2-section-xml.html#raptor-xml-writer-get-option">
+<ANCHOR id="raptor-xml-writer" href="raptor2/raptor2-section-xml.html#raptor-xml-writer">
+<ANCHOR id="raptor-xml-escape-string-any" href="raptor2/raptor2-section-xml.html#raptor-xml-escape-string-any">
+<ANCHOR id="raptor-xml-escape-string-any-write" href="raptor2/raptor2-section-xml.html#raptor-xml-escape-string-any-write">
+<ANCHOR id="raptor-xml-escape-string" href="raptor2/raptor2-section-xml.html#raptor-xml-escape-string">
+<ANCHOR id="raptor-xml-escape-string-write" href="raptor2/raptor2-section-xml.html#raptor-xml-escape-string-write">
+<ANCHOR id="raptor-xml-name-check" href="raptor2/raptor2-section-xml.html#raptor-xml-name-check">
diff --git a/docs/html/introduction.html b/docs/html/introduction.html
new file mode 100644
index 0000000..906cb47
--- /dev/null
+++ b/docs/html/introduction.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Raptor Overview</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="prev" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="next" href="tutorial.html" title="Part I. Raptor Tutorial">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="introduction"></a>Raptor Overview</h2></div></div></div>
+<p>
+<a class="ulink" href="http://librdf.org/raptor/" target="_top">Raptor</a>
+is a free software / Open Source C library that provides
+a set of parsers and serializers that
+generate Resource Description Framework (RDF) triples
+by parsing syntaxes or serialize the triples into a syntax.
+It also includes supporting functionality for managing Unicode,
+UTF-8, URIs, retrieving from URIs and reading and writing XML.
+ </p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/ix01.html b/docs/html/ix01.html
new file mode 100644
index 0000000..d882b71
--- /dev/null
+++ b/docs/html/ix01.html
@@ -0,0 +1,850 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="prev" href="raptor2-changes-1-4-21-to-2-0-0.html" title="Changes between raptor2 1.4.21 and 2.0.0">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor2-changes-1-4-21-to-2-0-0.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td> </td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="idp1678768"></a>Index</h2></div></div></div>
+<div class="index"><div class="indexdiv">
+<h3>R</h3>
+<dl>
+<dt>raptor_alloc_memory, <a class="indexterm" href="raptor2-section-memory.html#raptor-alloc-memory">raptor_alloc_memory ()</a>
+</dt>
+<dt>raptor_avltree, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree">raptor_avltree</a>
+</dt>
+<dt>raptor_avltree_add, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-add">raptor_avltree_add ()</a>
+</dt>
+<dt>raptor_avltree_bitflags, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-bitflags">enum raptor_avltree_bitflags</a>
+</dt>
+<dt>raptor_avltree_delete, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-delete">raptor_avltree_delete ()</a>
+</dt>
+<dt>raptor_avltree_iterator, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-iterator">raptor_avltree_iterator</a>
+</dt>
+<dt>raptor_avltree_iterator_get, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-iterator-get">raptor_avltree_iterator_get ()</a>
+</dt>
+<dt>raptor_avltree_iterator_is_end, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-iterator-is-end">raptor_avltree_iterator_is_end ()</a>
+</dt>
+<dt>raptor_avltree_iterator_next, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-iterator-next">raptor_avltree_iterator_next ()</a>
+</dt>
+<dt>raptor_avltree_print, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-print">raptor_avltree_print ()</a>
+</dt>
+<dt>raptor_avltree_remove, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-remove">raptor_avltree_remove ()</a>
+</dt>
+<dt>raptor_avltree_search, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-search">raptor_avltree_search ()</a>
+</dt>
+<dt>raptor_avltree_set_print_handler, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-set-print-handler">raptor_avltree_set_print_handler ()</a>
+</dt>
+<dt>raptor_avltree_size, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-size">raptor_avltree_size ()</a>
+</dt>
+<dt>raptor_avltree_visit, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-visit">raptor_avltree_visit ()</a>
+</dt>
+<dt>raptor_avltree_visit_handler, <a class="indexterm" href="raptor2-section-avltree.html#raptor-avltree-visit-handler">raptor_avltree_visit_handler ()</a>
+</dt>
+<dt>raptor_bnodeid_ntriples_write, <a class="indexterm" href="raptor2-section-iostream.html#raptor-bnodeid-ntriples-write">raptor_bnodeid_ntriples_write ()</a>
+</dt>
+<dt>raptor_calloc_memory, <a class="indexterm" href="raptor2-section-memory.html#raptor-calloc-memory">raptor_calloc_memory ()</a>
+</dt>
+<dt>raptor_copyright_string, <a class="indexterm" href="raptor2-section-general.html#raptor-copyright-string">raptor_copyright_string</a>
+</dt>
+<dt>raptor_data_compare_handler, <a class="indexterm" href="raptor2-section-general.html#raptor-data-compare-handler">raptor_data_compare_handler ()</a>
+</dt>
+<dt>raptor_data_context_free_handler, <a class="indexterm" href="raptor2-section-general.html#raptor-data-context-free-handler">raptor_data_context_free_handler ()</a>
+</dt>
+<dt>raptor_data_context_print_handler, <a class="indexterm" href="raptor2-section-general.html#raptor-data-context-print-handler">raptor_data_context_print_handler ()</a>
+</dt>
+<dt>raptor_data_free_handler, <a class="indexterm" href="raptor2-section-general.html#raptor-data-free-handler">raptor_data_free_handler ()</a>
+</dt>
+<dt>raptor_data_malloc_handler, <a class="indexterm" href="raptor2-section-general.html#raptor-data-malloc-handler">raptor_data_malloc_handler ()</a>
+</dt>
+<dt>raptor_data_print_handler, <a class="indexterm" href="raptor2-section-general.html#raptor-data-print-handler">raptor_data_print_handler ()</a>
+</dt>
+<dt>raptor_domain, <a class="indexterm" href="raptor2-section-general.html#raptor-domain">enum raptor_domain</a>
+</dt>
+<dt>raptor_domain_get_label, <a class="indexterm" href="raptor2-section-general.html#raptor-domain-get-label">raptor_domain_get_label ()</a>
+</dt>
+<dt>raptor_free_avltree, <a class="indexterm" href="raptor2-section-avltree.html#raptor-free-avltree">raptor_free_avltree ()</a>
+</dt>
+<dt>raptor_free_avltree_iterator, <a class="indexterm" href="raptor2-section-avltree.html#raptor-free-avltree-iterator">raptor_free_avltree_iterator ()</a>
+</dt>
+<dt>raptor_free_iostream, <a class="indexterm" href="raptor2-section-iostream.html#raptor-free-iostream">raptor_free_iostream ()</a>
+</dt>
+<dt>raptor_free_memory, <a class="indexterm" href="raptor2-section-memory.html#raptor-free-memory">raptor_free_memory ()</a>
+</dt>
+<dt>raptor_free_namespace, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-free-namespace">raptor_free_namespace ()</a>
+</dt>
+<dt>raptor_free_namespaces, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-free-namespaces">raptor_free_namespaces ()</a>
+</dt>
+<dt>raptor_free_option_description, <a class="indexterm" href="raptor2-section-option.html#raptor-free-option-description">raptor_free_option_description ()</a>
+</dt>
+<dt>raptor_free_parser, <a class="indexterm" href="raptor2-section-parser.html#raptor-free-parser">raptor_free_parser ()</a>
+</dt>
+<dt>raptor_free_qname, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-free-qname">raptor_free_qname ()</a>
+</dt>
+<dt>raptor_free_sax2, <a class="indexterm" href="raptor2-section-sax2.html#raptor-free-sax2">raptor_free_sax2 ()</a>
+</dt>
+<dt>raptor_free_sequence, <a class="indexterm" href="raptor2-section-sequence.html#raptor-free-sequence">raptor_free_sequence ()</a>
+</dt>
+<dt>raptor_free_serializer, <a class="indexterm" href="raptor2-section-serializer.html#raptor-free-serializer">raptor_free_serializer ()</a>
+</dt>
+<dt>raptor_free_statement, <a class="indexterm" href="raptor2-section-triples.html#raptor-free-statement">raptor_free_statement ()</a>
+</dt>
+<dt>raptor_free_stringbuffer, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-free-stringbuffer">raptor_free_stringbuffer ()</a>
+</dt>
+<dt>raptor_free_term, <a class="indexterm" href="raptor2-section-triples.html#raptor-free-term">raptor_free_term ()</a>
+</dt>
+<dt>raptor_free_uri, <a class="indexterm" href="raptor2-section-uri.html#raptor-free-uri">raptor_free_uri ()</a>
+</dt>
+<dt>raptor_free_world, <a class="indexterm" href="raptor2-section-world.html#raptor-free-world">raptor_free_world ()</a>
+</dt>
+<dt>raptor_free_www, <a class="indexterm" href="raptor2-section-www.html#raptor-free-www">raptor_free_www ()</a>
+</dt>
+<dt>raptor_free_xml_element, <a class="indexterm" href="raptor2-section-xml.html#raptor-free-xml-element">raptor_free_xml_element ()</a>
+</dt>
+<dt>raptor_free_xml_writer, <a class="indexterm" href="raptor2-section-xml.html#raptor-free-xml-writer">raptor_free_xml_writer ()</a>
+</dt>
+<dt>raptor_graph_mark_flags, <a class="indexterm" href="raptor2-section-parser.html#raptor-graph-mark-flags">enum raptor_graph_mark_flags</a>
+</dt>
+<dt>raptor_graph_mark_handler, <a class="indexterm" href="raptor2-section-parser.html#raptor-graph-mark-handler">raptor_graph_mark_handler ()</a>
+</dt>
+<dt>raptor_home_url_string, <a class="indexterm" href="raptor2-section-general.html#raptor-home-url-string">raptor_home_url_string</a>
+</dt>
+<dt>raptor_iostream, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream">raptor_iostream</a>
+</dt>
+<dt>raptor_iostream_counted_string_write, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-counted-string-write">raptor_iostream_counted_string_write ()</a>
+</dt>
+<dt>raptor_iostream_decimal_write, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-decimal-write">raptor_iostream_decimal_write ()</a>
+</dt>
+<dt>raptor_iostream_finish_func, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-finish-func">raptor_iostream_finish_func ()</a>
+</dt>
+<dt>raptor_iostream_handler, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-handler">raptor_iostream_handler</a>
+</dt>
+<dt>raptor_iostream_hexadecimal_write, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-hexadecimal-write">raptor_iostream_hexadecimal_write ()</a>
+</dt>
+<dt>raptor_iostream_init_func, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-init-func">raptor_iostream_init_func ()</a>
+</dt>
+<dt>raptor_iostream_read_bytes, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-read-bytes">raptor_iostream_read_bytes ()</a>
+</dt>
+<dt>raptor_iostream_read_bytes_func, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-read-bytes-func">raptor_iostream_read_bytes_func ()</a>
+</dt>
+<dt>raptor_iostream_read_eof, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-read-eof">raptor_iostream_read_eof ()</a>
+</dt>
+<dt>raptor_iostream_read_eof_func, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-read-eof-func">raptor_iostream_read_eof_func ()</a>
+</dt>
+<dt>raptor_iostream_string_write, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-string-write">raptor_iostream_string_write ()</a>
+</dt>
+<dt>raptor_iostream_tell, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-tell">raptor_iostream_tell ()</a>
+</dt>
+<dt>raptor_iostream_write_byte, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-write-byte">raptor_iostream_write_byte ()</a>
+</dt>
+<dt>raptor_iostream_write_bytes, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-write-bytes">raptor_iostream_write_bytes ()</a>
+</dt>
+<dt>raptor_iostream_write_bytes_func, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-write-bytes-func">raptor_iostream_write_bytes_func ()</a>
+</dt>
+<dt>raptor_iostream_write_byte_func, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-write-byte-func">raptor_iostream_write_byte_func ()</a>
+</dt>
+<dt>raptor_iostream_write_end, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-write-end">raptor_iostream_write_end ()</a>
+</dt>
+<dt>raptor_iostream_write_end_func, <a class="indexterm" href="raptor2-section-iostream.html#raptor-iostream-write-end-func">raptor_iostream_write_end_func ()</a>
+</dt>
+<dt>raptor_license_string, <a class="indexterm" href="raptor2-section-general.html#raptor-license-string">raptor_license_string</a>
+</dt>
+<dt>raptor_locator, <a class="indexterm" href="raptor2-section-locator.html#raptor-locator">raptor_locator</a>
+</dt>
+<dt>raptor_locator_byte, <a class="indexterm" href="raptor2-section-locator.html#raptor-locator-byte">raptor_locator_byte ()</a>
+</dt>
+<dt>raptor_locator_column, <a class="indexterm" href="raptor2-section-locator.html#raptor-locator-column">raptor_locator_column ()</a>
+</dt>
+<dt>raptor_locator_file, <a class="indexterm" href="raptor2-section-locator.html#raptor-locator-file">raptor_locator_file ()</a>
+</dt>
+<dt>raptor_locator_format, <a class="indexterm" href="raptor2-section-locator.html#raptor-locator-format">raptor_locator_format ()</a>
+</dt>
+<dt>raptor_locator_line, <a class="indexterm" href="raptor2-section-locator.html#raptor-locator-line">raptor_locator_line ()</a>
+</dt>
+<dt>raptor_locator_print, <a class="indexterm" href="raptor2-section-locator.html#raptor-locator-print">raptor_locator_print ()</a>
+</dt>
+<dt>raptor_locator_uri, <a class="indexterm" href="raptor2-section-locator.html#raptor-locator-uri">raptor_locator_uri ()</a>
+</dt>
+<dt>raptor_log_handler, <a class="indexterm" href="raptor2-section-general.html#raptor-log-handler">raptor_log_handler ()</a>
+</dt>
+<dt>raptor_log_level, <a class="indexterm" href="raptor2-section-general.html#raptor-log-level">enum raptor_log_level</a>
+</dt>
+<dt>raptor_log_level_get_label, <a class="indexterm" href="raptor2-section-general.html#raptor-log-level-get-label">raptor_log_level_get_label ()</a>
+</dt>
+<dt>raptor_log_message, <a class="indexterm" href="raptor2-section-general.html#raptor-log-message">raptor_log_message</a>
+</dt>
+<dt>raptor_namespace, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespace">raptor_namespace</a>
+</dt>
+<dt>raptor_namespaces_clear, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespaces-clear">raptor_namespaces_clear ()</a>
+</dt>
+<dt>raptor_namespaces_end_for_depth, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespaces-end-for-depth">raptor_namespaces_end_for_depth ()</a>
+</dt>
+<dt>raptor_namespaces_find_namespace, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespaces-find-namespace">raptor_namespaces_find_namespace ()</a>
+</dt>
+<dt>raptor_namespaces_find_namespace_by_uri, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespaces-find-namespace-by-uri">raptor_namespaces_find_namespace_by_uri ()</a>
+</dt>
+<dt>raptor_namespaces_get_default_namespace, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespaces-get-default-namespace">raptor_namespaces_get_default_namespace ()</a>
+</dt>
+<dt>raptor_namespaces_init, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespaces-init">raptor_namespaces_init ()</a>
+</dt>
+<dt>raptor_namespaces_namespace_in_scope, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespaces-namespace-in-scope">raptor_namespaces_namespace_in_scope ()</a>
+</dt>
+<dt>raptor_namespaces_start_namespace, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespaces-start-namespace">raptor_namespaces_start_namespace ()</a>
+</dt>
+<dt>raptor_namespaces_start_namespace_full, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespaces-start-namespace-full">raptor_namespaces_start_namespace_full ()</a>
+</dt>
+<dt>raptor_namespace_format_as_xml, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespace-format-as-xml">raptor_namespace_format_as_xml ()</a>
+</dt>
+<dt>raptor_namespace_get_counted_prefix, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespace-get-counted-prefix">raptor_namespace_get_counted_prefix ()</a>
+</dt>
+<dt>raptor_namespace_get_prefix, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespace-get-prefix">raptor_namespace_get_prefix ()</a>
+</dt>
+<dt>raptor_namespace_get_uri, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespace-get-uri">raptor_namespace_get_uri ()</a>
+</dt>
+<dt>raptor_namespace_handler, <a class="indexterm" href="raptor2-section-parser.html#raptor-namespace-handler">raptor_namespace_handler ()</a>
+</dt>
+<dt>raptor_namespace_stack, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespace-stack">raptor_namespace_stack</a>
+</dt>
+<dt>raptor_namespace_stack_start_namespace, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespace-stack-start-namespace">raptor_namespace_stack_start_namespace ()</a>
+</dt>
+<dt>raptor_namespace_write, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-namespace-write">raptor_namespace_write ()</a>
+</dt>
+<dt>raptor_new_avltree, <a class="indexterm" href="raptor2-section-avltree.html#raptor-new-avltree">raptor_new_avltree ()</a>
+</dt>
+<dt>raptor_new_avltree_iterator, <a class="indexterm" href="raptor2-section-avltree.html#raptor-new-avltree-iterator">raptor_new_avltree_iterator ()</a>
+</dt>
+<dt>raptor_new_iostream_from_filename, <a class="indexterm" href="raptor2-section-iostream.html#raptor-new-iostream-from-filename">raptor_new_iostream_from_filename ()</a>
+</dt>
+<dt>raptor_new_iostream_from_file_handle, <a class="indexterm" href="raptor2-section-iostream.html#raptor-new-iostream-from-file-handle">raptor_new_iostream_from_file_handle ()</a>
+</dt>
+<dt>raptor_new_iostream_from_handler, <a class="indexterm" href="raptor2-section-iostream.html#raptor-new-iostream-from-handler">raptor_new_iostream_from_handler ()</a>
+</dt>
+<dt>raptor_new_iostream_from_sink, <a class="indexterm" href="raptor2-section-iostream.html#raptor-new-iostream-from-sink">raptor_new_iostream_from_sink ()</a>
+</dt>
+<dt>raptor_new_iostream_from_string, <a class="indexterm" href="raptor2-section-iostream.html#raptor-new-iostream-from-string">raptor_new_iostream_from_string ()</a>
+</dt>
+<dt>raptor_new_iostream_to_filename, <a class="indexterm" href="raptor2-section-iostream.html#raptor-new-iostream-to-filename">raptor_new_iostream_to_filename ()</a>
+</dt>
+<dt>raptor_new_iostream_to_file_handle, <a class="indexterm" href="raptor2-section-iostream.html#raptor-new-iostream-to-file-handle">raptor_new_iostream_to_file_handle ()</a>
+</dt>
+<dt>raptor_new_iostream_to_sink, <a class="indexterm" href="raptor2-section-iostream.html#raptor-new-iostream-to-sink">raptor_new_iostream_to_sink ()</a>
+</dt>
+<dt>raptor_new_iostream_to_string, <a class="indexterm" href="raptor2-section-iostream.html#raptor-new-iostream-to-string">raptor_new_iostream_to_string ()</a>
+</dt>
+<dt>raptor_new_namespace, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-new-namespace">raptor_new_namespace ()</a>
+</dt>
+<dt>raptor_new_namespaces, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-new-namespaces">raptor_new_namespaces ()</a>
+</dt>
+<dt>raptor_new_namespace_from_uri, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-new-namespace-from-uri">raptor_new_namespace_from_uri ()</a>
+</dt>
+<dt>raptor_new_parser, <a class="indexterm" href="raptor2-section-parser.html#raptor-new-parser">raptor_new_parser ()</a>
+</dt>
+<dt>raptor_new_parser_for_content, <a class="indexterm" href="raptor2-section-parser.html#raptor-new-parser-for-content">raptor_new_parser_for_content ()</a>
+</dt>
+<dt>raptor_new_qname, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-new-qname">raptor_new_qname ()</a>
+</dt>
+<dt>raptor_new_qname_from_namespace_local_name, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-new-qname-from-namespace-local-name">raptor_new_qname_from_namespace_local_name ()</a>
+</dt>
+<dt>raptor_new_qname_from_namespace_uri, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-new-qname-from-namespace-uri">raptor_new_qname_from_namespace_uri ()</a>
+</dt>
+<dt>raptor_new_sax2, <a class="indexterm" href="raptor2-section-sax2.html#raptor-new-sax2">raptor_new_sax2 ()</a>
+</dt>
+<dt>raptor_new_sequence, <a class="indexterm" href="raptor2-section-sequence.html#raptor-new-sequence">raptor_new_sequence ()</a>
+</dt>
+<dt>raptor_new_sequence_with_context, <a class="indexterm" href="raptor2-section-sequence.html#raptor-new-sequence-with-context">raptor_new_sequence_with_context ()</a>
+</dt>
+<dt>raptor_new_serializer, <a class="indexterm" href="raptor2-section-serializer.html#raptor-new-serializer">raptor_new_serializer ()</a>
+</dt>
+<dt>raptor_new_statement, <a class="indexterm" href="raptor2-section-triples.html#raptor-new-statement">raptor_new_statement ()</a>
+</dt>
+<dt>raptor_new_statement_from_nodes, <a class="indexterm" href="raptor2-section-triples.html#raptor-new-statement-from-nodes">raptor_new_statement_from_nodes ()</a>
+</dt>
+<dt>raptor_new_stringbuffer, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-new-stringbuffer">raptor_new_stringbuffer ()</a>
+</dt>
+<dt>raptor_new_term_from_blank, <a class="indexterm" href="raptor2-section-triples.html#raptor-new-term-from-blank">raptor_new_term_from_blank ()</a>
+</dt>
+<dt>raptor_new_term_from_counted_blank, <a class="indexterm" href="raptor2-section-triples.html#raptor-new-term-from-counted-blank">raptor_new_term_from_counted_blank ()</a>
+</dt>
+<dt>raptor_new_term_from_counted_literal, <a class="indexterm" href="raptor2-section-triples.html#raptor-new-term-from-counted-literal">raptor_new_term_from_counted_literal ()</a>
+</dt>
+<dt>raptor_new_term_from_counted_uri_string, <a class="indexterm" href="raptor2-section-triples.html#raptor-new-term-from-counted-uri-string">raptor_new_term_from_counted_uri_string ()</a>
+</dt>
+<dt>raptor_new_term_from_literal, <a class="indexterm" href="raptor2-section-triples.html#raptor-new-term-from-literal">raptor_new_term_from_literal ()</a>
+</dt>
+<dt>raptor_new_term_from_uri, <a class="indexterm" href="raptor2-section-triples.html#raptor-new-term-from-uri">raptor_new_term_from_uri ()</a>
+</dt>
+<dt>raptor_new_term_from_uri_string, <a class="indexterm" href="raptor2-section-triples.html#raptor-new-term-from-uri-string">raptor_new_term_from_uri_string ()</a>
+</dt>
+<dt>raptor_new_uri, <a class="indexterm" href="raptor2-section-uri.html#raptor-new-uri">raptor_new_uri ()</a>
+</dt>
+<dt>raptor_new_uri_for_rdf_concept, <a class="indexterm" href="raptor2-section-uri.html#raptor-new-uri-for-rdf-concept">raptor_new_uri_for_rdf_concept ()</a>
+</dt>
+<dt>raptor_new_uri_for_retrieval, <a class="indexterm" href="raptor2-section-uri.html#raptor-new-uri-for-retrieval">raptor_new_uri_for_retrieval ()</a>
+</dt>
+<dt>raptor_new_uri_for_xmlbase, <a class="indexterm" href="raptor2-section-uri.html#raptor-new-uri-for-xmlbase">raptor_new_uri_for_xmlbase ()</a>
+</dt>
+<dt>raptor_new_uri_from_counted_string, <a class="indexterm" href="raptor2-section-uri.html#raptor-new-uri-from-counted-string">raptor_new_uri_from_counted_string ()</a>
+</dt>
+<dt>raptor_new_uri_from_id, <a class="indexterm" href="raptor2-section-uri.html#raptor-new-uri-from-id">raptor_new_uri_from_id ()</a>
+</dt>
+<dt>raptor_new_uri_from_uri_local_name, <a class="indexterm" href="raptor2-section-uri.html#raptor-new-uri-from-uri-local-name">raptor_new_uri_from_uri_local_name ()</a>
+</dt>
+<dt>raptor_new_uri_from_uri_or_file_string, <a class="indexterm" href="raptor2-section-uri.html#raptor-new-uri-from-uri-or-file-string">raptor_new_uri_from_uri_or_file_string ()</a>
+</dt>
+<dt>raptor_new_uri_relative_to_base, <a class="indexterm" href="raptor2-section-uri.html#raptor-new-uri-relative-to-base">raptor_new_uri_relative_to_base ()</a>
+</dt>
+<dt>raptor_new_uri_relative_to_base_counted, <a class="indexterm" href="raptor2-section-uri.html#raptor-new-uri-relative-to-base-counted">raptor_new_uri_relative_to_base_counted ()</a>
+</dt>
+<dt>raptor_new_world, <a class="indexterm" href="raptor2-section-world.html#raptor-new-world">raptor_new_world</a>
+</dt>
+<dt>raptor_new_www, <a class="indexterm" href="raptor2-section-www.html#raptor-new-www">raptor_new_www ()</a>
+</dt>
+<dt>raptor_new_www_with_connection, <a class="indexterm" href="raptor2-section-www.html#raptor-new-www-with-connection">raptor_new_www_with_connection ()</a>
+</dt>
+<dt>raptor_new_xml_element, <a class="indexterm" href="raptor2-section-xml.html#raptor-new-xml-element">raptor_new_xml_element ()</a>
+</dt>
+<dt>raptor_new_xml_element_from_namespace_local_name, <a class="indexterm" href="raptor2-section-xml.html#raptor-new-xml-element-from-namespace-local-name">raptor_new_xml_element_from_namespace_local_name ()</a>
+</dt>
+<dt>raptor_new_xml_writer, <a class="indexterm" href="raptor2-section-xml.html#raptor-new-xml-writer">raptor_new_xml_writer ()</a>
+</dt>
+<dt>raptor_option, <a class="indexterm" href="raptor2-section-option.html#raptor-option">enum raptor_option</a>
+</dt>
+<dt>raptor_option_description, <a class="indexterm" href="raptor2-section-option.html#raptor-option-description">raptor_option_description</a>
+</dt>
+<dt>raptor_option_get_count, <a class="indexterm" href="raptor2-section-option.html#raptor-option-get-count">raptor_option_get_count ()</a>
+</dt>
+<dt>raptor_option_get_value_type_label, <a class="indexterm" href="raptor2-section-option.html#raptor-option-get-value-type-label">raptor_option_get_value_type_label ()</a>
+</dt>
+<dt>raptor_option_value_type, <a class="indexterm" href="raptor2-section-option.html#raptor-option-value-type">enum raptor_option_value_type</a>
+</dt>
+<dt>raptor_owl_namespace_uri, <a class="indexterm" href="raptor2-section-general.html#raptor-owl-namespace-uri">raptor_owl_namespace_uri</a>
+</dt>
+<dt>RAPTOR_OWL_URI, <a class="indexterm" href="raptor2-section-constants.html#RAPTOR-OWL-URI:CAPS">RAPTOR_OWL_URI</a>
+</dt>
+<dt>raptor_parser, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser">raptor_parser</a>
+</dt>
+<dt>raptor_parser_get_accept_header, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-get-accept-header">raptor_parser_get_accept_header ()</a>
+</dt>
+<dt>raptor_parser_get_description, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-get-description">raptor_parser_get_description ()</a>
+</dt>
+<dt>raptor_parser_get_graph, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-get-graph">raptor_parser_get_graph ()</a>
+</dt>
+<dt>raptor_parser_get_locator, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-get-locator">raptor_parser_get_locator ()</a>
+</dt>
+<dt>raptor_parser_get_name, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-get-name">raptor_parser_get_name ()</a>
+</dt>
+<dt>raptor_parser_get_option, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-get-option">raptor_parser_get_option ()</a>
+</dt>
+<dt>raptor_parser_get_world, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-get-world">raptor_parser_get_world ()</a>
+</dt>
+<dt>raptor_parser_parse_abort, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-parse-abort">raptor_parser_parse_abort ()</a>
+</dt>
+<dt>raptor_parser_parse_chunk, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-parse-chunk">raptor_parser_parse_chunk ()</a>
+</dt>
+<dt>raptor_parser_parse_file, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-parse-file">raptor_parser_parse_file ()</a>
+</dt>
+<dt>raptor_parser_parse_file_stream, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-parse-file-stream">raptor_parser_parse_file_stream ()</a>
+</dt>
+<dt>raptor_parser_parse_iostream, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-parse-iostream">raptor_parser_parse_iostream ()</a>
+</dt>
+<dt>raptor_parser_parse_start, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-parse-start">raptor_parser_parse_start ()</a>
+</dt>
+<dt>raptor_parser_parse_uri, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-parse-uri">raptor_parser_parse_uri ()</a>
+</dt>
+<dt>raptor_parser_parse_uri_with_connection, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-parse-uri-with-connection">raptor_parser_parse_uri_with_connection ()</a>
+</dt>
+<dt>raptor_parser_set_graph_mark_handler, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-set-graph-mark-handler">raptor_parser_set_graph_mark_handler ()</a>
+</dt>
+<dt>raptor_parser_set_namespace_handler, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-set-namespace-handler">raptor_parser_set_namespace_handler ()</a>
+</dt>
+<dt>raptor_parser_set_option, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-set-option">raptor_parser_set_option ()</a>
+</dt>
+<dt>raptor_parser_set_statement_handler, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-set-statement-handler">raptor_parser_set_statement_handler ()</a>
+</dt>
+<dt>raptor_parser_set_uri_filter, <a class="indexterm" href="raptor2-section-parser.html#raptor-parser-set-uri-filter">raptor_parser_set_uri_filter ()</a>
+</dt>
+<dt>raptor_qname, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-qname">raptor_qname</a>
+</dt>
+<dt>raptor_qname_copy, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-qname-copy">raptor_qname_copy ()</a>
+</dt>
+<dt>raptor_qname_equal, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-qname-equal">raptor_qname_equal ()</a>
+</dt>
+<dt>raptor_qname_get_counted_value, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-qname-get-counted-value">raptor_qname_get_counted_value ()</a>
+</dt>
+<dt>raptor_qname_get_local_name, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-qname-get-local-name">raptor_qname_get_local_name ()</a>
+</dt>
+<dt>raptor_qname_get_namespace, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-qname-get-namespace">raptor_qname_get_namespace ()</a>
+</dt>
+<dt>raptor_qname_get_value, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-qname-get-value">raptor_qname_get_value ()</a>
+</dt>
+<dt>raptor_qname_string_to_uri, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-qname-string-to-uri">raptor_qname_string_to_uri ()</a>
+</dt>
+<dt>raptor_qname_to_counted_name, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-qname-to-counted-name">raptor_qname_to_counted_name ()</a>
+</dt>
+<dt>raptor_qname_write, <a class="indexterm" href="raptor2-section-xml-qname.html#raptor-qname-write">raptor_qname_write ()</a>
+</dt>
+<dt>RAPTOR_RDF_MS_URI, <a class="indexterm" href="raptor2-section-constants.html#RAPTOR-RDF-MS-URI:CAPS">RAPTOR_RDF_MS_URI</a>
+</dt>
+<dt>raptor_rdf_namespace_uri, <a class="indexterm" href="raptor2-section-general.html#raptor-rdf-namespace-uri">raptor_rdf_namespace_uri</a>
+</dt>
+<dt>raptor_rdf_namespace_uri_len, <a class="indexterm" href="raptor2-section-constants.html#raptor-rdf-namespace-uri-len">raptor_rdf_namespace_uri_len</a>
+</dt>
+<dt>raptor_rdf_schema_namespace_uri, <a class="indexterm" href="raptor2-section-general.html#raptor-rdf-schema-namespace-uri">raptor_rdf_schema_namespace_uri</a>
+</dt>
+<dt>RAPTOR_RDF_SCHEMA_URI, <a class="indexterm" href="raptor2-section-constants.html#RAPTOR-RDF-SCHEMA-URI:CAPS">RAPTOR_RDF_SCHEMA_URI</a>
+</dt>
+<dt>raptor_sax2, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2">raptor_sax2</a>
+</dt>
+<dt>raptor_sax2_cdata_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-cdata-handler">raptor_sax2_cdata_handler ()</a>
+</dt>
+<dt>raptor_sax2_characters_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-characters-handler">raptor_sax2_characters_handler ()</a>
+</dt>
+<dt>raptor_sax2_comment_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-comment-handler">raptor_sax2_comment_handler ()</a>
+</dt>
+<dt>raptor_sax2_end_element_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-end-element-handler">raptor_sax2_end_element_handler ()</a>
+</dt>
+<dt>raptor_sax2_external_entity_ref_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-external-entity-ref-handler">raptor_sax2_external_entity_ref_handler ()</a>
+</dt>
+<dt>raptor_sax2_inscope_base_uri, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-inscope-base-uri">raptor_sax2_inscope_base_uri ()</a>
+</dt>
+<dt>raptor_sax2_inscope_xml_language, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-inscope-xml-language">raptor_sax2_inscope_xml_language ()</a>
+</dt>
+<dt>raptor_sax2_parse_chunk, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-parse-chunk">raptor_sax2_parse_chunk ()</a>
+</dt>
+<dt>raptor_sax2_parse_start, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-parse-start">raptor_sax2_parse_start ()</a>
+</dt>
+<dt>raptor_sax2_set_cdata_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-set-cdata-handler">raptor_sax2_set_cdata_handler ()</a>
+</dt>
+<dt>raptor_sax2_set_characters_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-set-characters-handler">raptor_sax2_set_characters_handler ()</a>
+</dt>
+<dt>raptor_sax2_set_comment_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-set-comment-handler">raptor_sax2_set_comment_handler ()</a>
+</dt>
+<dt>raptor_sax2_set_end_element_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-set-end-element-handler">raptor_sax2_set_end_element_handler ()</a>
+</dt>
+<dt>raptor_sax2_set_external_entity_ref_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-set-external-entity-ref-handler">raptor_sax2_set_external_entity_ref_handler ()</a>
+</dt>
+<dt>raptor_sax2_set_namespace_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-set-namespace-handler">raptor_sax2_set_namespace_handler ()</a>
+</dt>
+<dt>raptor_sax2_set_start_element_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-set-start-element-handler">raptor_sax2_set_start_element_handler ()</a>
+</dt>
+<dt>raptor_sax2_set_unparsed_entity_decl_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-set-unparsed-entity-decl-handler">raptor_sax2_set_unparsed_entity_decl_handler ()</a>
+</dt>
+<dt>raptor_sax2_set_uri_filter, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-set-uri-filter">raptor_sax2_set_uri_filter ()</a>
+</dt>
+<dt>raptor_sax2_start_element_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-start-element-handler">raptor_sax2_start_element_handler ()</a>
+</dt>
+<dt>raptor_sax2_unparsed_entity_decl_handler, <a class="indexterm" href="raptor2-section-sax2.html#raptor-sax2-unparsed-entity-decl-handler">raptor_sax2_unparsed_entity_decl_handler ()</a>
+</dt>
+<dt>raptor_sequence, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence">raptor_sequence</a>
+</dt>
+<dt>raptor_sequence_delete_at, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-delete-at">raptor_sequence_delete_at ()</a>
+</dt>
+<dt>raptor_sequence_get_at, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-get-at">raptor_sequence_get_at ()</a>
+</dt>
+<dt>raptor_sequence_join, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-join">raptor_sequence_join ()</a>
+</dt>
+<dt>raptor_sequence_next_permutation, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-next-permutation">raptor_sequence_next_permutation ()</a>
+</dt>
+<dt>raptor_sequence_pop, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-pop">raptor_sequence_pop ()</a>
+</dt>
+<dt>raptor_sequence_print, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-print">raptor_sequence_print ()</a>
+</dt>
+<dt>raptor_sequence_push, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-push">raptor_sequence_push ()</a>
+</dt>
+<dt>raptor_sequence_reverse, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-reverse">raptor_sequence_reverse ()</a>
+</dt>
+<dt>raptor_sequence_set_at, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-set-at">raptor_sequence_set_at ()</a>
+</dt>
+<dt>raptor_sequence_shift, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-shift">raptor_sequence_shift ()</a>
+</dt>
+<dt>raptor_sequence_size, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-size">raptor_sequence_size ()</a>
+</dt>
+<dt>raptor_sequence_sort, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-sort">raptor_sequence_sort ()</a>
+</dt>
+<dt>raptor_sequence_swap, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-swap">raptor_sequence_swap ()</a>
+</dt>
+<dt>raptor_sequence_unshift, <a class="indexterm" href="raptor2-section-sequence.html#raptor-sequence-unshift">raptor_sequence_unshift ()</a>
+</dt>
+<dt>raptor_serializer, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer">raptor_serializer</a>
+</dt>
+<dt>raptor_serializer_flush, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-flush">raptor_serializer_flush ()</a>
+</dt>
+<dt>raptor_serializer_get_description, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-get-description">raptor_serializer_get_description ()</a>
+</dt>
+<dt>raptor_serializer_get_iostream, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-get-iostream">raptor_serializer_get_iostream ()</a>
+</dt>
+<dt>raptor_serializer_get_locator, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-get-locator">raptor_serializer_get_locator ()</a>
+</dt>
+<dt>raptor_serializer_get_option, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-get-option">raptor_serializer_get_option ()</a>
+</dt>
+<dt>raptor_serializer_get_world, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-get-world">raptor_serializer_get_world ()</a>
+</dt>
+<dt>raptor_serializer_serialize_end, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-serialize-end">raptor_serializer_serialize_end ()</a>
+</dt>
+<dt>raptor_serializer_serialize_statement, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-serialize-statement">raptor_serializer_serialize_statement ()</a>
+</dt>
+<dt>raptor_serializer_set_namespace, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-set-namespace">raptor_serializer_set_namespace ()</a>
+</dt>
+<dt>raptor_serializer_set_namespace_from_namespace, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-set-namespace-from-namespace">raptor_serializer_set_namespace_from_namespace ()</a>
+</dt>
+<dt>raptor_serializer_set_option, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-set-option">raptor_serializer_set_option ()</a>
+</dt>
+<dt>raptor_serializer_start_to_filename, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-start-to-filename">raptor_serializer_start_to_filename ()</a>
+</dt>
+<dt>raptor_serializer_start_to_file_handle, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-start-to-file-handle">raptor_serializer_start_to_file_handle ()</a>
+</dt>
+<dt>raptor_serializer_start_to_iostream, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-start-to-iostream">raptor_serializer_start_to_iostream ()</a>
+</dt>
+<dt>raptor_serializer_start_to_string, <a class="indexterm" href="raptor2-section-serializer.html#raptor-serializer-start-to-string">raptor_serializer_start_to_string ()</a>
+</dt>
+<dt>raptor_short_copyright_string, <a class="indexterm" href="raptor2-section-general.html#raptor-short-copyright-string">raptor_short_copyright_string</a>
+</dt>
+<dt>raptor_snprintf, <a class="indexterm" href="raptor2-section-general.html#raptor-snprintf">raptor_snprintf ()</a>
+</dt>
+<dt>raptor_statement, <a class="indexterm" href="raptor2-section-triples.html#raptor-statement">raptor_statement</a>
+</dt>
+<dt>raptor_statement_clear, <a class="indexterm" href="raptor2-section-triples.html#raptor-statement-clear">raptor_statement_clear ()</a>
+</dt>
+<dt>raptor_statement_compare, <a class="indexterm" href="raptor2-section-triples.html#raptor-statement-compare">raptor_statement_compare ()</a>
+</dt>
+<dt>raptor_statement_copy, <a class="indexterm" href="raptor2-section-triples.html#raptor-statement-copy">raptor_statement_copy ()</a>
+</dt>
+<dt>raptor_statement_equals, <a class="indexterm" href="raptor2-section-triples.html#raptor-statement-equals">raptor_statement_equals ()</a>
+</dt>
+<dt>raptor_statement_handler, <a class="indexterm" href="raptor2-section-general.html#raptor-statement-handler">raptor_statement_handler ()</a>
+</dt>
+<dt>raptor_statement_init, <a class="indexterm" href="raptor2-section-triples.html#raptor-statement-init">raptor_statement_init ()</a>
+</dt>
+<dt>raptor_statement_ntriples_write, <a class="indexterm" href="raptor2-section-triples.html#raptor-statement-ntriples-write">raptor_statement_ntriples_write ()</a>
+</dt>
+<dt>raptor_statement_print, <a class="indexterm" href="raptor2-section-triples.html#raptor-statement-print">raptor_statement_print ()</a>
+</dt>
+<dt>raptor_statement_print_as_ntriples, <a class="indexterm" href="raptor2-section-triples.html#raptor-statement-print-as-ntriples">raptor_statement_print_as_ntriples ()</a>
+</dt>
+<dt>raptor_stringbuffer, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer">raptor_stringbuffer</a>
+</dt>
+<dt>raptor_stringbuffer_append_counted_string, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-counted-string">raptor_stringbuffer_append_counted_string ()</a>
+</dt>
+<dt>raptor_stringbuffer_append_decimal, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-decimal">raptor_stringbuffer_append_decimal ()</a>
+</dt>
+<dt>raptor_stringbuffer_append_hexadecimal, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-hexadecimal">raptor_stringbuffer_append_hexadecimal ()</a>
+</dt>
+<dt>raptor_stringbuffer_append_string, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-string">raptor_stringbuffer_append_string ()</a>
+</dt>
+<dt>raptor_stringbuffer_append_stringbuffer, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-stringbuffer">raptor_stringbuffer_append_stringbuffer ()</a>
+</dt>
+<dt>raptor_stringbuffer_append_uri_escaped_counted_string, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-uri-escaped-counted-string">raptor_stringbuffer_append_uri_escaped_counted_string ()</a>
+</dt>
+<dt>raptor_stringbuffer_as_string, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-as-string">raptor_stringbuffer_as_string ()</a>
+</dt>
+<dt>raptor_stringbuffer_copy_to_string, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-copy-to-string">raptor_stringbuffer_copy_to_string ()</a>
+</dt>
+<dt>raptor_stringbuffer_length, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-length">raptor_stringbuffer_length ()</a>
+</dt>
+<dt>raptor_stringbuffer_prepend_counted_string, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-prepend-counted-string">raptor_stringbuffer_prepend_counted_string ()</a>
+</dt>
+<dt>raptor_stringbuffer_prepend_string, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-prepend-string">raptor_stringbuffer_prepend_string ()</a>
+</dt>
+<dt>raptor_stringbuffer_write, <a class="indexterm" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-write">raptor_stringbuffer_write ()</a>
+</dt>
+<dt>raptor_string_ntriples_write, <a class="indexterm" href="raptor2-section-iostream.html#raptor-string-ntriples-write">raptor_string_ntriples_write ()</a>
+</dt>
+<dt>raptor_string_python_write, <a class="indexterm" href="raptor2-section-iostream.html#raptor-string-python-write">raptor_string_python_write ()</a>
+</dt>
+<dt>raptor_syntax_bitflags, <a class="indexterm" href="raptor2-section-general.html#raptor-syntax-bitflags">enum raptor_syntax_bitflags</a>
+</dt>
+<dt>raptor_syntax_description, <a class="indexterm" href="raptor2-section-general.html#raptor-syntax-description">raptor_syntax_description</a>
+</dt>
+<dt>raptor_syntax_description_validate, <a class="indexterm" href="raptor2-section-general.html#raptor-syntax-description-validate">raptor_syntax_description_validate ()</a>
+</dt>
+<dt>raptor_term, <a class="indexterm" href="raptor2-section-triples.html#raptor-term">raptor_term</a>
+</dt>
+<dt>raptor_term_blank_value, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-blank-value">raptor_term_blank_value</a>
+</dt>
+<dt>raptor_term_compare, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-compare">raptor_term_compare ()</a>
+</dt>
+<dt>raptor_term_copy, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-copy">raptor_term_copy ()</a>
+</dt>
+<dt>raptor_term_equals, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-equals">raptor_term_equals ()</a>
+</dt>
+<dt>raptor_term_literal_value, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-literal-value">raptor_term_literal_value</a>
+</dt>
+<dt>raptor_term_ntriples_write, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-ntriples-write">raptor_term_ntriples_write ()</a>
+</dt>
+<dt>raptor_term_to_counted_string, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-to-counted-string">raptor_term_to_counted_string ()</a>
+</dt>
+<dt>raptor_term_to_string, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-to-string">raptor_term_to_string ()</a>
+</dt>
+<dt>raptor_term_to_turtle_counted_string, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-to-turtle-counted-string">raptor_term_to_turtle_counted_string ()</a>
+</dt>
+<dt>raptor_term_to_turtle_string, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-to-turtle-string">raptor_term_to_turtle_string ()</a>
+</dt>
+<dt>raptor_term_turtle_write, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-turtle-write">raptor_term_turtle_write ()</a>
+</dt>
+<dt>raptor_term_type, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-type">enum raptor_term_type</a>
+</dt>
+<dt>raptor_term_value, <a class="indexterm" href="raptor2-section-triples.html#raptor-term-value">raptor_term_value</a>
+</dt>
+<dt>raptor_type_q, <a class="indexterm" href="raptor2-section-general.html#raptor-type-q">raptor_type_q</a>
+</dt>
+<dt>raptor_unichar, <a class="indexterm" href="raptor2-section-unicode.html#raptor-unichar">raptor_unichar</a>
+</dt>
+<dt>raptor_unicode_check_utf8_string, <a class="indexterm" href="raptor2-section-unicode.html#raptor-unicode-check-utf8-string">raptor_unicode_check_utf8_string ()</a>
+</dt>
+<dt>raptor_unicode_is_xml10_namechar, <a class="indexterm" href="raptor2-section-unicode.html#raptor-unicode-is-xml10-namechar">raptor_unicode_is_xml10_namechar ()</a>
+</dt>
+<dt>raptor_unicode_is_xml10_namestartchar, <a class="indexterm" href="raptor2-section-unicode.html#raptor-unicode-is-xml10-namestartchar">raptor_unicode_is_xml10_namestartchar ()</a>
+</dt>
+<dt>raptor_unicode_is_xml11_namechar, <a class="indexterm" href="raptor2-section-unicode.html#raptor-unicode-is-xml11-namechar">raptor_unicode_is_xml11_namechar ()</a>
+</dt>
+<dt>raptor_unicode_is_xml11_namestartchar, <a class="indexterm" href="raptor2-section-unicode.html#raptor-unicode-is-xml11-namestartchar">raptor_unicode_is_xml11_namestartchar ()</a>
+</dt>
+<dt>raptor_unicode_utf8_string_get_char, <a class="indexterm" href="raptor2-section-unicode.html#raptor-unicode-utf8-string-get-char">raptor_unicode_utf8_string_get_char ()</a>
+</dt>
+<dt>raptor_unicode_utf8_string_put_char, <a class="indexterm" href="raptor2-section-unicode.html#raptor-unicode-utf8-string-put-char">raptor_unicode_utf8_string_put_char ()</a>
+</dt>
+<dt>raptor_unicode_utf8_strlen, <a class="indexterm" href="raptor2-section-unicode.html#raptor-unicode-utf8-strlen">raptor_unicode_utf8_strlen ()</a>
+</dt>
+<dt>raptor_unicode_utf8_substr, <a class="indexterm" href="raptor2-section-unicode.html#raptor-unicode-utf8-substr">raptor_unicode_utf8_substr ()</a>
+</dt>
+<dt>raptor_uri, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri">raptor_uri</a>
+</dt>
+<dt>raptor_uri_as_counted_string, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-as-counted-string">raptor_uri_as_counted_string ()</a>
+</dt>
+<dt>raptor_uri_as_string, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-as-string">raptor_uri_as_string ()</a>
+</dt>
+<dt>raptor_uri_compare, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-compare">raptor_uri_compare ()</a>
+</dt>
+<dt>raptor_uri_copy, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-copy">raptor_uri_copy ()</a>
+</dt>
+<dt>raptor_uri_equals, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-equals">raptor_uri_equals ()</a>
+</dt>
+<dt>raptor_uri_filename_exists, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-filename-exists">raptor_uri_filename_exists ()</a>
+</dt>
+<dt>raptor_uri_filename_to_uri_string, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-filename-to-uri-string">raptor_uri_filename_to_uri_string ()</a>
+</dt>
+<dt>raptor_uri_file_exists, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-file-exists">raptor_uri_file_exists ()</a>
+</dt>
+<dt>raptor_uri_filter_func, <a class="indexterm" href="raptor2-section-www.html#raptor-uri-filter-func">raptor_uri_filter_func ()</a>
+</dt>
+<dt>raptor_uri_get_world, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-get-world">raptor_uri_get_world ()</a>
+</dt>
+<dt>raptor_uri_print, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-print">raptor_uri_print ()</a>
+</dt>
+<dt>raptor_uri_resolve_uri_reference, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-resolve-uri-reference">raptor_uri_resolve_uri_reference ()</a>
+</dt>
+<dt>raptor_uri_to_counted_string, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-to-counted-string">raptor_uri_to_counted_string ()</a>
+</dt>
+<dt>raptor_uri_to_relative_counted_uri_string, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-to-relative-counted-uri-string">raptor_uri_to_relative_counted_uri_string ()</a>
+</dt>
+<dt>raptor_uri_to_relative_uri_string, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-to-relative-uri-string">raptor_uri_to_relative_uri_string ()</a>
+</dt>
+<dt>raptor_uri_to_string, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-to-string">raptor_uri_to_string ()</a>
+</dt>
+<dt>raptor_uri_to_turtle_counted_string, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-to-turtle-counted-string">raptor_uri_to_turtle_counted_string ()</a>
+</dt>
+<dt>raptor_uri_to_turtle_string, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-to-turtle-string">raptor_uri_to_turtle_string ()</a>
+</dt>
+<dt>raptor_uri_turtle_write, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-turtle-write">raptor_uri_turtle_write ()</a>
+</dt>
+<dt>raptor_uri_uri_string_is_file_uri, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-uri-string-is-file-uri">raptor_uri_uri_string_is_file_uri ()</a>
+</dt>
+<dt>raptor_uri_uri_string_to_counted_filename_fragment, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-uri-string-to-counted-filename-fragment">raptor_uri_uri_string_to_counted_filename_fragment ()</a>
+</dt>
+<dt>raptor_uri_uri_string_to_filename, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-uri-string-to-filename">raptor_uri_uri_string_to_filename ()</a>
+</dt>
+<dt>raptor_uri_uri_string_to_filename_fragment, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-uri-string-to-filename-fragment">raptor_uri_uri_string_to_filename_fragment ()</a>
+</dt>
+<dt>raptor_uri_write, <a class="indexterm" href="raptor2-section-uri.html#raptor-uri-write">raptor_uri_write ()</a>
+</dt>
+<dt>raptor_vasprintf, <a class="indexterm" href="raptor2-section-general.html#raptor-vasprintf">raptor_vasprintf ()</a>
+</dt>
+<dt>RAPTOR_VERSION, <a class="indexterm" href="raptor2-section-general.html#RAPTOR-VERSION:CAPS">RAPTOR_VERSION</a>
+</dt>
+<dt>raptor_version_decimal, <a class="indexterm" href="raptor2-section-general.html#raptor-version-decimal">raptor_version_decimal</a>
+</dt>
+<dt>RAPTOR_VERSION_MAJOR, <a class="indexterm" href="raptor2-section-general.html#RAPTOR-VERSION-MAJOR:CAPS">RAPTOR_VERSION_MAJOR</a>
+</dt>
+<dt>raptor_version_major, <a class="indexterm" href="raptor2-section-general.html#raptor-version-major">raptor_version_major</a>
+</dt>
+<dt>RAPTOR_VERSION_MINOR, <a class="indexterm" href="raptor2-section-general.html#RAPTOR-VERSION-MINOR:CAPS">RAPTOR_VERSION_MINOR</a>
+</dt>
+<dt>raptor_version_minor, <a class="indexterm" href="raptor2-section-general.html#raptor-version-minor">raptor_version_minor</a>
+</dt>
+<dt>RAPTOR_VERSION_RELEASE, <a class="indexterm" href="raptor2-section-general.html#RAPTOR-VERSION-RELEASE:CAPS">RAPTOR_VERSION_RELEASE</a>
+</dt>
+<dt>raptor_version_release, <a class="indexterm" href="raptor2-section-general.html#raptor-version-release">raptor_version_release</a>
+</dt>
+<dt>RAPTOR_VERSION_STRING, <a class="indexterm" href="raptor2-section-general.html#RAPTOR-VERSION-STRING:CAPS">RAPTOR_VERSION_STRING</a>
+</dt>
+<dt>raptor_version_string, <a class="indexterm" href="raptor2-section-general.html#raptor-version-string">raptor_version_string</a>
+</dt>
+<dt>raptor_vsnprintf, <a class="indexterm" href="raptor2-section-general.html#raptor-vsnprintf">raptor_vsnprintf ()</a>
+</dt>
+<dt>raptor_vsnprintf2, <a class="indexterm" href="raptor2-section-general.html#raptor-vsnprintf2">raptor_vsnprintf2 ()</a>
+</dt>
+<dt>raptor_world, <a class="indexterm" href="raptor2-section-world.html#raptor-world">raptor_world</a>
+</dt>
+<dt>raptor_world_flag, <a class="indexterm" href="raptor2-section-world.html#raptor-world-flag">enum raptor_world_flag</a>
+</dt>
+<dt>raptor_world_generate_bnodeid, <a class="indexterm" href="raptor2-section-world.html#raptor-world-generate-bnodeid">raptor_world_generate_bnodeid ()</a>
+</dt>
+<dt>raptor_world_get_option_description, <a class="indexterm" href="raptor2-section-option.html#raptor-world-get-option-description">raptor_world_get_option_description ()</a>
+</dt>
+<dt>raptor_world_get_option_from_uri, <a class="indexterm" href="raptor2-section-option.html#raptor-world-get-option-from-uri">raptor_world_get_option_from_uri ()</a>
+</dt>
+<dt>raptor_world_get_parser_description, <a class="indexterm" href="raptor2-section-world.html#raptor-world-get-parser-description">raptor_world_get_parser_description ()</a>
+</dt>
+<dt>raptor_world_get_serializer_description, <a class="indexterm" href="raptor2-section-world.html#raptor-world-get-serializer-description">raptor_world_get_serializer_description ()</a>
+</dt>
+<dt>raptor_world_guess_parser_name, <a class="indexterm" href="raptor2-section-world.html#raptor-world-guess-parser-name">raptor_world_guess_parser_name ()</a>
+</dt>
+<dt>raptor_world_is_parser_name, <a class="indexterm" href="raptor2-section-world.html#raptor-world-is-parser-name">raptor_world_is_parser_name ()</a>
+</dt>
+<dt>raptor_world_is_serializer_name, <a class="indexterm" href="raptor2-section-world.html#raptor-world-is-serializer-name">raptor_world_is_serializer_name ()</a>
+</dt>
+<dt>raptor_world_open, <a class="indexterm" href="raptor2-section-world.html#raptor-world-open">raptor_world_open ()</a>
+</dt>
+<dt>raptor_world_set_flag, <a class="indexterm" href="raptor2-section-world.html#raptor-world-set-flag">raptor_world_set_flag ()</a>
+</dt>
+<dt>raptor_world_set_generate_bnodeid_handler, <a class="indexterm" href="raptor2-section-world.html#raptor-world-set-generate-bnodeid-handler">raptor_world_set_generate_bnodeid_handler ()</a>
+</dt>
+<dt>raptor_world_set_generate_bnodeid_parameters, <a class="indexterm" href="raptor2-section-world.html#raptor-world-set-generate-bnodeid-parameters">raptor_world_set_generate_bnodeid_parameters ()</a>
+</dt>
+<dt>raptor_world_set_libxslt_security_preferences, <a class="indexterm" href="raptor2-section-world.html#raptor-world-set-libxslt-security-preferences">raptor_world_set_libxslt_security_preferences ()</a>
+</dt>
+<dt>raptor_world_set_log_handler, <a class="indexterm" href="raptor2-section-world.html#raptor-world-set-log-handler">raptor_world_set_log_handler ()</a>
+</dt>
+<dt>raptor_www, <a class="indexterm" href="raptor2-section-www.html#raptor-www">raptor_www</a>
+</dt>
+<dt>raptor_www_abort, <a class="indexterm" href="raptor2-section-www.html#raptor-www-abort">raptor_www_abort ()</a>
+</dt>
+<dt>raptor_www_content_type_handler, <a class="indexterm" href="raptor2-section-www.html#raptor-www-content-type-handler">raptor_www_content_type_handler ()</a>
+</dt>
+<dt>raptor_www_fetch, <a class="indexterm" href="raptor2-section-www.html#raptor-www-fetch">raptor_www_fetch ()</a>
+</dt>
+<dt>raptor_www_fetch_to_string, <a class="indexterm" href="raptor2-section-www.html#raptor-www-fetch-to-string">raptor_www_fetch_to_string ()</a>
+</dt>
+<dt>raptor_www_final_uri_handler, <a class="indexterm" href="raptor2-section-www.html#raptor-www-final-uri-handler">raptor_www_final_uri_handler ()</a>
+</dt>
+<dt>raptor_www_get_connection, <a class="indexterm" href="raptor2-section-www.html#raptor-www-get-connection">raptor_www_get_connection ()</a>
+</dt>
+<dt>raptor_www_get_final_uri, <a class="indexterm" href="raptor2-section-www.html#raptor-www-get-final-uri">raptor_www_get_final_uri ()</a>
+</dt>
+<dt>raptor_www_set_connection_timeout, <a class="indexterm" href="raptor2-section-www.html#raptor-www-set-connection-timeout">raptor_www_set_connection_timeout ()</a>
+</dt>
+<dt>raptor_www_set_content_type_handler, <a class="indexterm" href="raptor2-section-www.html#raptor-www-set-content-type-handler">raptor_www_set_content_type_handler ()</a>
+</dt>
+<dt>raptor_www_set_final_uri_handler, <a class="indexterm" href="raptor2-section-www.html#raptor-www-set-final-uri-handler">raptor_www_set_final_uri_handler ()</a>
+</dt>
+<dt>raptor_www_set_http_accept, <a class="indexterm" href="raptor2-section-www.html#raptor-www-set-http-accept">raptor_www_set_http_accept ()</a>
+</dt>
+<dt>raptor_www_set_http_cache_control, <a class="indexterm" href="raptor2-section-www.html#raptor-www-set-http-cache-control">raptor_www_set_http_cache_control ()</a>
+</dt>
+<dt>raptor_www_set_proxy, <a class="indexterm" href="raptor2-section-www.html#raptor-www-set-proxy">raptor_www_set_proxy ()</a>
+</dt>
+<dt>raptor_www_set_ssl_cert_options, <a class="indexterm" href="raptor2-section-www.html#raptor-www-set-ssl-cert-options">raptor_www_set_ssl_cert_options ()</a>
+</dt>
+<dt>raptor_www_set_ssl_verify_options, <a class="indexterm" href="raptor2-section-www.html#raptor-www-set-ssl-verify-options">raptor_www_set_ssl_verify_options ()</a>
+</dt>
+<dt>raptor_www_set_uri_filter, <a class="indexterm" href="raptor2-section-www.html#raptor-www-set-uri-filter">raptor_www_set_uri_filter ()</a>
+</dt>
+<dt>raptor_www_set_user_agent, <a class="indexterm" href="raptor2-section-www.html#raptor-www-set-user-agent">raptor_www_set_user_agent ()</a>
+</dt>
+<dt>raptor_www_set_write_bytes_handler, <a class="indexterm" href="raptor2-section-www.html#raptor-www-set-write-bytes-handler">raptor_www_set_write_bytes_handler ()</a>
+</dt>
+<dt>raptor_www_write_bytes_handler, <a class="indexterm" href="raptor2-section-www.html#raptor-www-write-bytes-handler">raptor_www_write_bytes_handler ()</a>
+</dt>
+<dt>raptor_xmlschema_datatypes_namespace_uri, <a class="indexterm" href="raptor2-section-general.html#raptor-xmlschema-datatypes-namespace-uri">raptor_xmlschema_datatypes_namespace_uri</a>
+</dt>
+<dt>RAPTOR_XMLSCHEMA_DATATYPES_URI, <a class="indexterm" href="raptor2-section-constants.html#RAPTOR-XMLSCHEMA-DATATYPES-URI:CAPS">RAPTOR_XMLSCHEMA_DATATYPES_URI</a>
+</dt>
+<dt>raptor_xml_element, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-element">raptor_xml_element</a>
+</dt>
+<dt>raptor_xml_element_declare_namespace, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-element-declare-namespace">raptor_xml_element_declare_namespace ()</a>
+</dt>
+<dt>raptor_xml_element_get_attributes, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-element-get-attributes">raptor_xml_element_get_attributes ()</a>
+</dt>
+<dt>raptor_xml_element_get_attributes_count, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-element-get-attributes-count">raptor_xml_element_get_attributes_count ()</a>
+</dt>
+<dt>raptor_xml_element_get_language, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-element-get-language">raptor_xml_element_get_language ()</a>
+</dt>
+<dt>raptor_xml_element_get_name, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-element-get-name">raptor_xml_element_get_name ()</a>
+</dt>
+<dt>raptor_xml_element_is_empty, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-element-is-empty">raptor_xml_element_is_empty ()</a>
+</dt>
+<dt>raptor_xml_element_set_attributes, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-element-set-attributes">raptor_xml_element_set_attributes ()</a>
+</dt>
+<dt>raptor_xml_element_write, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-element-write">raptor_xml_element_write ()</a>
+</dt>
+<dt>raptor_xml_escape_string, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-escape-string">raptor_xml_escape_string ()</a>
+</dt>
+<dt>raptor_xml_escape_string_any, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-escape-string-any">raptor_xml_escape_string_any ()</a>
+</dt>
+<dt>raptor_xml_escape_string_any_write, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-escape-string-any-write">raptor_xml_escape_string_any_write ()</a>
+</dt>
+<dt>raptor_xml_escape_string_write, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-escape-string-write">raptor_xml_escape_string_write ()</a>
+</dt>
+<dt>raptor_xml_literal_datatype_uri_string, <a class="indexterm" href="raptor2-section-general.html#raptor-xml-literal-datatype-uri-string">raptor_xml_literal_datatype_uri_string</a>
+</dt>
+<dt>raptor_xml_literal_datatype_uri_string_len, <a class="indexterm" href="raptor2-section-constants.html#raptor-xml-literal-datatype-uri-string-len">raptor_xml_literal_datatype_uri_string_len</a>
+</dt>
+<dt>raptor_xml_namespace_string_parse, <a class="indexterm" href="raptor2-section-xml-namespace.html#raptor-xml-namespace-string-parse">raptor_xml_namespace_string_parse ()</a>
+</dt>
+<dt>raptor_xml_namespace_uri, <a class="indexterm" href="raptor2-section-general.html#raptor-xml-namespace-uri">raptor_xml_namespace_uri</a>
+</dt>
+<dt>raptor_xml_name_check, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-name-check">raptor_xml_name_check ()</a>
+</dt>
+<dt>raptor_xml_writer, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer">raptor_xml_writer</a>
+</dt>
+<dt>raptor_xml_writer_cdata, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-cdata">raptor_xml_writer_cdata ()</a>
+</dt>
+<dt>raptor_xml_writer_cdata_counted, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-cdata-counted">raptor_xml_writer_cdata_counted ()</a>
+</dt>
+<dt>raptor_xml_writer_comment, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-comment">raptor_xml_writer_comment ()</a>
+</dt>
+<dt>raptor_xml_writer_comment_counted, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-comment-counted">raptor_xml_writer_comment_counted ()</a>
+</dt>
+<dt>raptor_xml_writer_empty_element, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-empty-element">raptor_xml_writer_empty_element ()</a>
+</dt>
+<dt>raptor_xml_writer_end_element, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-end-element">raptor_xml_writer_end_element ()</a>
+</dt>
+<dt>raptor_xml_writer_flush, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-flush">raptor_xml_writer_flush ()</a>
+</dt>
+<dt>raptor_xml_writer_get_depth, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-get-depth">raptor_xml_writer_get_depth ()</a>
+</dt>
+<dt>raptor_xml_writer_get_option, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-get-option">raptor_xml_writer_get_option ()</a>
+</dt>
+<dt>raptor_xml_writer_newline, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-newline">raptor_xml_writer_newline ()</a>
+</dt>
+<dt>raptor_xml_writer_raw, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-raw">raptor_xml_writer_raw ()</a>
+</dt>
+<dt>raptor_xml_writer_raw_counted, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-raw-counted">raptor_xml_writer_raw_counted ()</a>
+</dt>
+<dt>raptor_xml_writer_set_option, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-set-option">raptor_xml_writer_set_option ()</a>
+</dt>
+<dt>raptor_xml_writer_start_element, <a class="indexterm" href="raptor2-section-xml.html#raptor-xml-writer-start-element">raptor_xml_writer_start_element ()</a>
+</dt>
+</dl>
+</div></div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/left.png b/docs/html/left.png
new file mode 100644
index 0000000..2d05b3d
--- /dev/null
+++ b/docs/html/left.png
Binary files differ
diff --git a/docs/html/parser-grddl.html b/docs/html/parser-grddl.html
new file mode 100644
index 0000000..e530c20
--- /dev/null
+++ b/docs/html/parser-grddl.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GRDDL parser (name grddl)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-parsers.html" title="Parsers in Raptor (syntax to triples)">
+<link rel="prev" href="raptor-parsers.html" title="Parsers in Raptor (syntax to triples)">
+<link rel="next" href="parser-guess.html" title="Guess parser (name guess)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor-parsers.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="parser-guess.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="parser-grddl"></a>GRDDL parser (name <code class="literal">grddl</code>)</h2></div></div></div>
+<p>A parser for the
+<a class="ulink" href="http://www.w3.org/TR/2007/PR-grddl-20070716/" target="_top">Gleaning Resource Descriptions from Dialects of Languages (GRDDL)</a>,
+W3C Proposed Recommendation of 2007-07-16 which allows reading XHTML
+and XML as RDF triples by using profiles in the document that declare
+XSLT transforms from the XHTML or XML content into RDF/XML or other
+RDF syntax which can then be parsed.</p>
+<p>The GRDDL parser is rather complex and different from the other
+parsers in that it retrieves URIs, reads HTML documents (possibly
+with errors), transforms the documents with XSLT and turns the result
+into a single graph. The default configuration of the GRDDL parser
+also reads microformats (hcard, hcalendar) and follows &lt;link&gt;
+tags that point to RDF/XML. Parts of the GRDDL process can be
+altered by configuration, which are describe below.
+</p>
+<p>The GRDDL parser defines 'base', 'Base' and 'url' XSLT parameters
+with the value of the base URI to allow some XSLT sheets to work. These
+set of parameters cannot be disabled.
+</p>
+<p>If the XSLT transform returns an empty string, no further
+processing of the result is done, and a warning is generated. The
+xsl:output method is mapped to result document mime types as follows:
+'text' to text/plain; 'xml' to application/xml and 'html' to text/html.
+Any result that is of type 'application/xml' or unknown mime type
+is assumed to be RDF/XML.
+</p>
+<p>The URIs that are processed during GRDDL operations can be checked
+and skipped if required using a handler set with the
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-uri-filter" title="raptor_parser_set_uri_filter ()"><code class="function">raptor_parser_set_uri_filter()</code></a>
+function. If the handler returns non-0, the URI is rejected.
+This uses
+<a class="link" href="raptor2-section-www.html#raptor-www-set-uri-filter" title="raptor_www_set_uri_filter ()"><code class="function">raptor_www_set_uri_filter()</code></a>
+internally.
+</p>
+<p>If the value of option
+<a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WWW-TIMEOUT:CAPS"><code class="literal">RAPTOR_OPTION_WWW_TIMEOUT</code></a>
+if set to a number &gt;0, it is used as the timeout in seconds
+for retrieving of URIs during GRDDL processing.
+This uses
+<a class="link" href="raptor2-section-www.html#raptor-www-set-connection-timeout" title="raptor_www_set_connection_timeout ()"><code class="function">raptor_www_set_connection_timeout()</code></a>
+internally.
+</p>
+<p>The hardcoded support for hcard and hcalendar
+microformats can be disabled by setting parser option
+<a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-MICROFORMATS:CAPS"><code class="literal">RAPTOR_OPTION_MICROFORMATS</code></a>
+to 0
+or using
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-option" title="raptor_parser_set_option ()"><code class="function">raptor_parser_set_option()</code></a>
+with option
+<a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-STRICT:CAPS"><code class="literal">RAPTOR_OPTION_STRICT</code></a>
+and a boolean value of 1.
+</p>
+<p>The GRDDL parser by default will try an XML parser on the
+content followed by a lax HTML parser. This can be disabled by
+setting parser option
+<a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-HTML-TAG-SOUP:CAPS"><code class="literal">RAPTOR_OPTION_HTML_TAG_SOUP</code></a>
+to 0
+or using
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-option" title="raptor_parser_set_option ()"><code class="function">raptor_parser_set_option()</code></a>
+with option
+<a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-STRICT:CAPS"><code class="literal">RAPTOR_OPTION_STRICT</code></a>
+and a boolean value of 1.
+</p>
+<p>The GRDDL parser by default will try to look for an HTML
+&lt;link&gt; tag that points to RDF/XML. This can be disabled by
+setting parser option
+<a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-HTML-LINK:CAPS"><code class="literal">RAPTOR_OPTION_HTML_LINK</code></a>
+to 0
+or using
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-option" title="raptor_parser_set_option ()"><code class="function">raptor_parser_set_option()</code></a>
+with option
+<a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-STRICT:CAPS"><code class="literal">RAPTOR_OPTION_STRICT</code></a>
+and a boolean value of 1.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/parser-guess.html b/docs/html/parser-guess.html
new file mode 100644
index 0000000..7198b01
--- /dev/null
+++ b/docs/html/parser-guess.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Guess parser (name guess)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-parsers.html" title="Parsers in Raptor (syntax to triples)">
+<link rel="prev" href="parser-grddl.html" title="GRDDL parser (name grddl)">
+<link rel="next" href="parser-json.html" title="JSON parser (name json)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="parser-grddl.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="parser-json.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="parser-guess"></a>Guess parser (name <code class="literal">guess</code>)</h2></div></div></div>
+<p>
+This is a special parser that picks the actual parser to use based
+on the content type, the content bytes or the content identifier. The
+content name can be either from a local file or from a URI.
+</p>
+<p>If the protocol that delivered the content (such as HTTP)
+provided a <span class="emphasis"><em>Content Type</em></span> (aka MIME Type) then
+this will be the primary means for identifying th ecotnent.
+</p>
+<p>The secondary means to identify the content are the bytes of
+the content (if available), otherwise the content identifier is used,
+which is the least reliable.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/parser-json.html b/docs/html/parser-json.html
new file mode 100644
index 0000000..84865ab
--- /dev/null
+++ b/docs/html/parser-json.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>JSON parser (name json)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-parsers.html" title="Parsers in Raptor (syntax to triples)">
+<link rel="prev" href="parser-guess.html" title="Guess parser (name guess)">
+<link rel="next" href="parser-ntriples.html" title="N-Triples parser (name ntriples)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="parser-guess.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="parser-ntriples.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="parser-json"></a>JSON parser (name <code class="literal">json</code>)</h2></div></div></div>
+<p>A parser for both the
+resource-centric RDF/JSON syntax as defined by Talis at
+<a class="ulink" href="http://n2.talis.com/wiki/RDF_JSON_Specification" target="_top">RDF/JSON Specification</a>
+and the triples-centric format based on the SPARQL results in JSON format.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/parser-ntriples.html b/docs/html/parser-ntriples.html
new file mode 100644
index 0000000..fda6d16
--- /dev/null
+++ b/docs/html/parser-ntriples.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>N-Triples parser (name ntriples)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-parsers.html" title="Parsers in Raptor (syntax to triples)">
+<link rel="prev" href="parser-json.html" title="JSON parser (name json)">
+<link rel="next" href="parser-rdfa.html" title="RDFa parser - (name rdfa)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="parser-json.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="parser-rdfa.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="parser-ntriples"></a>N-Triples parser (name <code class="literal">ntriples</code>)</h2></div></div></div>
+<p>A parser for the
+<a class="ulink" href="http://www.w3.org/TR/rdf-testcases/#ntriples" target="_top">N-Triples</a>
+syntax as used by the
+<a class="ulink" href="http://www.w3.org/2001/sw/RDFCore/" target="_top">W3C RDF Core working group</a>
+for the <a class="ulink" href="http://www.w3.org/TR/rdf-testcases/" target="_top">RDF Test Cases</a>.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/parser-rdfa.html b/docs/html/parser-rdfa.html
new file mode 100644
index 0000000..34bf434
--- /dev/null
+++ b/docs/html/parser-rdfa.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>RDFa parser - (name rdfa)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-parsers.html" title="Parsers in Raptor (syntax to triples)">
+<link rel="prev" href="parser-ntriples.html" title="N-Triples parser (name ntriples)">
+<link rel="next" href="parser-rdfxml.html" title="RDF/XML parser - default (name rdfxml)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="parser-ntriples.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="parser-rdfxml.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="parser-rdfa"></a>RDFa parser - (name <code class="literal">rdfa</code>)</h2></div></div></div>
+<p>
+A parser for the
+<a class="ulink" href="http://www.w3.org/TR/2008/CR-rdfa-syntax-20080620/" target="_top">RDFa</a>
+syntax, W3C Candidate Recommendation 20 June 2008 which allows reading XHTML
+and XML as RDF triples by interpreting attributes on elements to
+describe which ones have RDF semantics. This is implemented via
+<a class="ulink" href="http://rdfa.digitalbazaar.com/librdfa/" target="_top">librdfa</a>
+linked inside Raptor, written by Manu Sporny of Digital Bazaar,
+and licensed with the same license as Raptor.
+</p>
+<p>
+This parser is beta quality and passes all but 4 of the RDFa tests as
+of Raptor 1.4.18.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/parser-rdfxml.html b/docs/html/parser-rdfxml.html
new file mode 100644
index 0000000..54e0adf
--- /dev/null
+++ b/docs/html/parser-rdfxml.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>RDF/XML parser - default (name rdfxml)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-parsers.html" title="Parsers in Raptor (syntax to triples)">
+<link rel="prev" href="parser-rdfa.html" title="RDFa parser - (name rdfa)">
+<link rel="next" href="parser-rss-tag-soup.html" title="RSS Tag Soup parser (name rss-tag-soup)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="parser-rdfa.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="parser-rss-tag-soup.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="parser-rdfxml"></a>RDF/XML parser - default (name <code class="literal">rdfxml</code>)</h2></div></div></div>
+<p>
+A parser for the standard
+<a class="ulink" href="http://www.w3.org/TR/rdf-syntax-grammar/" target="_top">RDF/XML syntax</a>
+as revised by the
+<a class="ulink" href="http://www.w3.org/2001/sw/RDFCore/" target="_top">W3C RDF Core working group</a>.</p>
+<p>This is the default parser in Raptor.</p>
+<p>Features of this parser:</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>Fully handles the <a class="ulink" href="http://www.w3.org/TR/rdf-syntax-grammar/" target="_top">RDF/XML syntax updates</a> for <a class="ulink" href="http://www.w3.org/TR/xmlbase/" target="_top">XML Base</a>, <code class="literal">xml:lang</code>, RDF datatyping and Collections.</p></li>
+<li class="listitem"><p>Handles all RDF vocabularies such as <a class="ulink" href="http://www.foaf-project.org/" target="_top">FOAF</a>, <a class="ulink" href="http://www.purl.org/rss/1.0/" target="_top">RSS 1.0</a>, <a class="ulink" href="http://dublincore.org/" target="_top">Dublin Core</a>, <a class="ulink" href="http://www.w3.org/TR/owl-features/" target="_top">OWL</a>, <a class="ulink" href="http://usefulinc.com/doap" target="_top">DOAP</a></p></li>
+<li class="listitem"><p>Handles <code class="literal">rdf:resource</code> / <code class="literal">resource</code> attributes</p></li>
+<li class="listitem"><p>Uses <a class="ulink" href="http://expat.sourceforge.net/" target="_top">expat</a> and/or (GNOME) <a class="ulink" href="http://xmlsoft.org/" target="_top">libxml</a> XML parsers as available or required</p></li>
+</ul></div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/parser-rss-tag-soup.html b/docs/html/parser-rss-tag-soup.html
new file mode 100644
index 0000000..153ba95
--- /dev/null
+++ b/docs/html/parser-rss-tag-soup.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>RSS Tag Soup parser (name rss-tag-soup)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-parsers.html" title="Parsers in Raptor (syntax to triples)">
+<link rel="prev" href="parser-rdfxml.html" title="RDF/XML parser - default (name rdfxml)">
+<link rel="next" href="parser-trig.html" title="TRiG parser (name trig)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="parser-rdfxml.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="parser-trig.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="parser-rss-tag-soup"></a>RSS Tag Soup parser (name <code class="literal">rss-tag-soup</code>)</h2></div></div></div>
+<p>A parser for the multiple XML RSS formats that use the elements
+such as <code class="literal">channel</code>, <code class="literal">item</code>,
+<code class="literal">title</code>, <code class="literal">description</code>
+in different ways.
+This includes support for the Atom 1.0 syndication format defined in IETF
+<a class="ulink" href="http://www.ietf.org/rfc/rfc4287.txt" target="_top">RFC 4287</a>
+</p>
+<p>The parser attempts to turn the input into
+<a class="ulink" href="http://www.purl.org/rss/1.0/" target="_top">RSS 1.0</a>
+RDF triples in the RSS 1.0 model of a syndication feed.
+This includes triples for RSS Enclosures.
+</p>
+<p>
+True <a class="ulink" href="http://www.purl.org/rss/1.0/" target="_top">RSS 1.0</a> when
+wanted to be used as a full RDF vocabulary, is best parsed by the
+RDF/XML parser (name <code class="literal">rdfxml</code>).
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/parser-trig.html b/docs/html/parser-trig.html
new file mode 100644
index 0000000..eb6d4f3
--- /dev/null
+++ b/docs/html/parser-trig.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TRiG parser (name trig)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-parsers.html" title="Parsers in Raptor (syntax to triples)">
+<link rel="prev" href="parser-rss-tag-soup.html" title="RSS Tag Soup parser (name rss-tag-soup)">
+<link rel="next" href="parser-turtle.html" title="Turtle Terse RDF Triple Language parser (name turtle)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="parser-rss-tag-soup.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="parser-turtle.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="parser-trig"></a>TRiG parser (name <code class="literal">trig</code>)</h2></div></div></div>
+<p>A parser for the
+<a class="ulink" href="http://www.wiwiss.fu-berlin.de/suhl/bizer/TriG/Spec/" target="_top">TriG - Turtle with Named Graphs</a>
+syntax.
+</p>
+<p>The parser is alpha quality and may not support the entire TRiG
+specification.</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/parser-turtle.html b/docs/html/parser-turtle.html
new file mode 100644
index 0000000..3ce8d65
--- /dev/null
+++ b/docs/html/parser-turtle.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Turtle Terse RDF Triple Language parser (name turtle)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-parsers.html" title="Parsers in Raptor (syntax to triples)">
+<link rel="prev" href="parser-trig.html" title="TRiG parser (name trig)">
+<link rel="next" href="raptor-serializers.html" title="Serializers in Raptor (triples to syntax)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="parser-trig.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor-serializers.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="parser-turtle"></a>Turtle Terse RDF Triple Language parser (name <code class="literal">turtle</code>)</h2></div></div></div>
+<p>A parser for the
+<a class="ulink" href="http://www.dajobe.org/2004/01/turtle/" target="_top">Turtle Terse RDF Triple Language</a>
+syntax, designed as a useful subset of
+<a class="ulink" href="http://www.w3.org/DesignIssues/Notation3" target="_top">Notation 3</a>.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor-formats-types-by-parser.html b/docs/html/raptor-formats-types-by-parser.html
new file mode 100644
index 0000000..b21e56b
--- /dev/null
+++ b/docs/html/raptor-formats-types-by-parser.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>MIME Types by Parser</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-formats.html" title="Syntax Formats supported in Raptor">
+<link rel="prev" href="raptor-formats.html" title="Syntax Formats supported in Raptor">
+<link rel="next" href="raptor-formats-types-by-serializer.html" title="MIME Types by Serializer">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor-formats.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-formats.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor-formats-types-by-serializer.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor-formats-types-by-parser"></a>MIME Types by Parser</h2></div></div></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Gleaning Resource Descriptions from Dialects of Languages (<code class="literal">grddl</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="literal">text/html</code> with q 0.2</p></li>
+<li class="listitem"><p><code class="literal">application/xhtml+xml</code> with q 0.4</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">N-Quads (<code class="literal">nquads</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">text/x-nquads</code> with q 1.0</p></li></ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">N-Triples (<code class="literal">ntriples</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">text/plain</code> with q 0.1</p></li></ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">RDF/A via librdfa (<code class="literal">rdfa</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="literal">text/html</code> with q 0.6</p></li>
+<li class="listitem"><p><code class="literal">application/xhtml+xml</code> with q 0.8</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">RDF/JSON (either Triples or Resource-Centric) (<code class="literal">json</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="literal">application/json</code> with q 0.1</p></li>
+<li class="listitem"><p><code class="literal">text/json</code> with q 0.1</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">RDF/XML (<code class="literal">rdfxml</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="literal">application/rdf+xml</code> with q 1.0</p></li>
+<li class="listitem"><p><code class="literal">text/rdf</code> with q 0.6</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">RSS Tag Soup (<code class="literal">rss-tag-soup</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="literal">application/rss</code> with q 0.8</p></li>
+<li class="listitem"><p><code class="literal">application/rss+xml</code> with q 0.8</p></li>
+<li class="listitem"><p><code class="literal">text/rss</code> with q 0.8</p></li>
+<li class="listitem"><p><code class="literal">application/xml</code> with q 0.3</p></li>
+<li class="listitem"><p><code class="literal">text/xml</code> with q 0.3</p></li>
+<li class="listitem"><p><code class="literal">application/atom+xml</code> with q 0.3</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">TriG - Turtle with Named Graphs (<code class="literal">trig</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">application/x-trig</code> with q 1.0</p></li></ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">Turtle Terse RDF Triple Language (<code class="literal">turtle</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="literal">text/turtle</code> with q 1.0</p></li>
+<li class="listitem"><p><code class="literal">application/x-turtle</code> with q 1.0</p></li>
+<li class="listitem"><p><code class="literal">application/turtle</code> with q 1.0</p></li>
+<li class="listitem"><p><code class="literal">text/n3</code> with q 0.3</p></li>
+<li class="listitem"><p><code class="literal">text/rdf+n3</code> with q 0.3</p></li>
+<li class="listitem"><p><code class="literal">application/rdf+n3</code> with q 0.3</p></li>
+</ul></div></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor-formats-types-by-serializer.html b/docs/html/raptor-formats-types-by-serializer.html
new file mode 100644
index 0000000..fb6e491
--- /dev/null
+++ b/docs/html/raptor-formats-types-by-serializer.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>MIME Types by Serializer</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-formats.html" title="Syntax Formats supported in Raptor">
+<link rel="prev" href="raptor-formats-types-by-parser.html" title="MIME Types by Parser">
+<link rel="next" href="raptor-formats-types-index.html" title="MIME Types Index">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor-formats-types-by-parser.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-formats.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor-formats-types-index.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor-formats-types-by-serializer"></a>MIME Types by Serializer</h2></div></div></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Atom 1.0 (<code class="literal">atom</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">application/atom+xml</code> with q 1.0</p></li></ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">GraphViz DOT format (<code class="literal">dot</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">text/x-graphviz</code> with q 0.5</p></li></ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">HTML Table (<code class="literal">html</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="literal">application/xhtml+xml</code> with q 1.0</p></li>
+<li class="listitem"><p><code class="literal">text/html</code> with q 1.0</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">N-Quads (<code class="literal">nquads</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">text/x-nquads</code> with q 1.0</p></li></ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">N-Triples (<code class="literal">ntriples</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">text/plain</code> with q 0.1</p></li></ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">RDF/JSON Resource-Centric (<code class="literal">json</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="literal">application/json</code> with q 1.0</p></li>
+<li class="listitem"><p><code class="literal">text/json</code> with q 0.1</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">RDF/JSON Triples (<code class="literal">json-triples</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="literal">application/json</code> with q 0.0</p></li>
+<li class="listitem"><p><code class="literal">text/json</code> with q 0.1</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">RDF/XML (<code class="literal">rdfxml</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="literal">application/rdf+xml</code> with q 1.0</p></li>
+<li class="listitem"><p><code class="literal">text/rdf</code> with q 0.6</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">RDF/XML (Abbreviated) (<code class="literal">rdfxml-abbrev</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">application/rdf+xml</code> with q 0.0</p></li></ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">RDF/XML (XMP Profile) (<code class="literal">rdfxml-xmp</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="literal">application/rdf+xml</code> with q 0.0</p></li></ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">RSS 1.0 (<code class="literal">rss-1.0</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="literal">application/rss+xml</code> with q 1.0</p></li>
+<li class="listitem"><p><code class="literal">application/rss</code> with q 0.3</p></li>
+<li class="listitem"><p><code class="literal">text/rss</code> with q 0.3</p></li>
+<li class="listitem"><p><code class="literal">application/xml</code> with q 0.3</p></li>
+<li class="listitem"><p><code class="literal">text/xml</code> with q 0.3</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term">Turtle Terse RDF Triple Language (<code class="literal">turtle</code>)</span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p><code class="literal">text/turtle</code> with q 1.0</p></li>
+<li class="listitem"><p><code class="literal">application/turtle</code> with q 1.0</p></li>
+<li class="listitem"><p><code class="literal">application/x-turtle</code> with q 0.8</p></li>
+<li class="listitem"><p><code class="literal">text/n3</code> with q 0.3</p></li>
+<li class="listitem"><p><code class="literal">text/rdf+n3</code> with q 0.3</p></li>
+<li class="listitem"><p><code class="literal">application/rdf+n3</code> with q 0.3</p></li>
+</ul></div></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor-formats-types-index.html b/docs/html/raptor-formats-types-index.html
new file mode 100644
index 0000000..23d20e5
--- /dev/null
+++ b/docs/html/raptor-formats-types-index.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>MIME Types Index</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-formats.html" title="Syntax Formats supported in Raptor">
+<link rel="prev" href="raptor-formats-types-by-serializer.html" title="MIME Types by Serializer">
+<link rel="next" href="raptor2-changes.html" title="API Changes">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor-formats-types-by-serializer.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-formats.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-changes.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor-formats-types-index"></a>MIME Types Index</h2></div></div></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><code class="literal">application/atom+xml</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>Atom 1.0 Serializer (<code class="literal">atom</code>) with q 1.0</p></li>
+<li class="listitem"><p>RSS Tag Soup Parser (<code class="literal">rss-tag-soup</code>) with q 0.3</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">application/json</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>RDF/JSON Resource-Centric Serializer (<code class="literal">json</code>) with q 1.0</p></li>
+<li class="listitem"><p>RDF/JSON (either Triples or Resource-Centric) Parser (<code class="literal">json</code>) with q 0.1</p></li>
+<li class="listitem"><p>RDF/JSON Triples Serializer (<code class="literal">json-triples</code>) with q 0.0</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">application/rdf+n3</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>Turtle Terse RDF Triple Language Parser (<code class="literal">turtle</code>) with q 0.3</p></li>
+<li class="listitem"><p>Turtle Terse RDF Triple Language Serializer (<code class="literal">turtle</code>) with q 0.3</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">application/rdf+xml</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>RDF/XML Parser (<code class="literal">rdfxml</code>) with q 1.0</p></li>
+<li class="listitem"><p>RDF/XML Serializer (<code class="literal">rdfxml</code>) with q 1.0</p></li>
+<li class="listitem"><p>RDF/XML (XMP Profile) Serializer (<code class="literal">rdfxml-xmp</code>) with q 0.0</p></li>
+<li class="listitem"><p>RDF/XML (Abbreviated) Serializer (<code class="literal">rdfxml-abbrev</code>) with q 0.0</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">application/rss</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>RSS Tag Soup Parser (<code class="literal">rss-tag-soup</code>) with q 0.8</p></li>
+<li class="listitem"><p>RSS 1.0 Serializer (<code class="literal">rss-1.0</code>) with q 0.3</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">application/rss+xml</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>RSS 1.0 Serializer (<code class="literal">rss-1.0</code>) with q 1.0</p></li>
+<li class="listitem"><p>RSS Tag Soup Parser (<code class="literal">rss-tag-soup</code>) with q 0.8</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">application/turtle</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>Turtle Terse RDF Triple Language Parser (<code class="literal">turtle</code>) with q 1.0</p></li>
+<li class="listitem"><p>Turtle Terse RDF Triple Language Serializer (<code class="literal">turtle</code>) with q 1.0</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">application/x-trig</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>TriG - Turtle with Named Graphs Parser (<code class="literal">trig</code>) with q 1.0</p></li>
+<li class="listitem"><p>No serializer.</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">application/x-turtle</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>Turtle Terse RDF Triple Language Parser (<code class="literal">turtle</code>) with q 1.0</p></li>
+<li class="listitem"><p>Turtle Terse RDF Triple Language Serializer (<code class="literal">turtle</code>) with q 0.8</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">application/xhtml+xml</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>HTML Table Serializer (<code class="literal">html</code>) with q 1.0</p></li>
+<li class="listitem"><p>RDF/A via librdfa Parser (<code class="literal">rdfa</code>) with q 0.8</p></li>
+<li class="listitem"><p>Gleaning Resource Descriptions from Dialects of Languages Parser (<code class="literal">grddl</code>) with q 0.4</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">application/xml</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>RSS Tag Soup Parser (<code class="literal">rss-tag-soup</code>) with q 0.3</p></li>
+<li class="listitem"><p>RSS 1.0 Serializer (<code class="literal">rss-1.0</code>) with q 0.3</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">text/html</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>HTML Table Serializer (<code class="literal">html</code>) with q 1.0</p></li>
+<li class="listitem"><p>RDF/A via librdfa Parser (<code class="literal">rdfa</code>) with q 0.6</p></li>
+<li class="listitem"><p>Gleaning Resource Descriptions from Dialects of Languages Parser (<code class="literal">grddl</code>) with q 0.2</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">text/json</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>RDF/JSON (either Triples or Resource-Centric) Parser (<code class="literal">json</code>) with q 0.1</p></li>
+<li class="listitem"><p>RDF/JSON Triples Serializer (<code class="literal">json-triples</code>) with q 0.1</p></li>
+<li class="listitem"><p>RDF/JSON Resource-Centric Serializer (<code class="literal">json</code>) with q 0.1</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">text/n3</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>Turtle Terse RDF Triple Language Parser (<code class="literal">turtle</code>) with q 0.3</p></li>
+<li class="listitem"><p>Turtle Terse RDF Triple Language Serializer (<code class="literal">turtle</code>) with q 0.3</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">text/plain</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>N-Triples Parser (<code class="literal">ntriples</code>) with q 0.1</p></li>
+<li class="listitem"><p>N-Triples Serializer (<code class="literal">ntriples</code>) with q 0.1</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">text/rdf</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>RDF/XML Parser (<code class="literal">rdfxml</code>) with q 0.6</p></li>
+<li class="listitem"><p>RDF/XML Serializer (<code class="literal">rdfxml</code>) with q 0.6</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">text/rdf+n3</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>Turtle Terse RDF Triple Language Parser (<code class="literal">turtle</code>) with q 0.3</p></li>
+<li class="listitem"><p>Turtle Terse RDF Triple Language Serializer (<code class="literal">turtle</code>) with q 0.3</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">text/rss</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>RSS Tag Soup Parser (<code class="literal">rss-tag-soup</code>) with q 0.8</p></li>
+<li class="listitem"><p>RSS 1.0 Serializer (<code class="literal">rss-1.0</code>) with q 0.3</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">text/turtle</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>Turtle Terse RDF Triple Language Parser (<code class="literal">turtle</code>) with q 1.0</p></li>
+<li class="listitem"><p>Turtle Terse RDF Triple Language Serializer (<code class="literal">turtle</code>) with q 1.0</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">text/x-graphviz</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>GraphViz DOT format Serializer (<code class="literal">dot</code>) with q 0.5</p></li>
+<li class="listitem"><p>No parser.</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">text/x-nquads</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>N-Quads Parser (<code class="literal">nquads</code>) with q 1.0</p></li>
+<li class="listitem"><p>N-Quads Serializer (<code class="literal">nquads</code>) with q 1.0</p></li>
+</ul></div></td>
+</tr>
+<tr>
+<td><p><span class="term"><code class="literal">text/xml</code></span></p></td>
+<td><div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>RSS Tag Soup Parser (<code class="literal">rss-tag-soup</code>) with q 0.3</p></li>
+<li class="listitem"><p>RSS 1.0 Serializer (<code class="literal">rss-1.0</code>) with q 0.3</p></li>
+</ul></div></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor-formats.html b/docs/html/raptor-formats.html
new file mode 100644
index 0000000..795cfcf
--- /dev/null
+++ b/docs/html/raptor-formats.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Syntax Formats supported in Raptor</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-xml.html" title="XML">
+<link rel="next" href="raptor-formats-types-by-parser.html" title="MIME Types by Parser">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-xml.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor-formats-types-by-parser.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="raptor-formats"></a>Syntax Formats supported in Raptor</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="raptor-formats.html#raptor-formats-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="raptor-formats-types-by-parser.html">MIME Types by Parser</a></span></dt>
+<dt><span class="section"><a href="raptor-formats-types-by-serializer.html">MIME Types by Serializer</a></span></dt>
+<dt><span class="section"><a href="raptor-formats-types-index.html">MIME Types Index</a></span></dt>
+</dl></div>
+<p>This chapter describes the syntax formats supported
+by parsers and serializers in Raptor.
+</p>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor-formats-intro"></a>Introduction</h2></div></div></div>
+<p>
+The parsers and serializers in raptor can handle different MIME Types with different levels of quality (Q). A Q of 1.0 indicates that the parser or serializer will be able to read or write the full format with high quality, and it should be the prefered parser or serializer for that mime type. Lower Q values indicate either additional mime type support (for parsing) or less-preferred mime types (for serializing). A serializer typically has just 1 mime type of Q 1.0; the preferred type.</p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor-parsers.html b/docs/html/raptor-parsers.html
new file mode 100644
index 0000000..ace5789
--- /dev/null
+++ b/docs/html/raptor-parsers.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Parsers in Raptor (syntax to triples)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="next" href="parser-grddl.html" title="GRDDL parser (name grddl)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="reference-manual.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="parser-grddl.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="raptor-parsers"></a>Parsers in Raptor (syntax to triples)</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="raptor-parsers.html#raptor-parsers-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="parser-grddl.html">GRDDL parser (name <code class="literal">grddl</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-guess.html">Guess parser (name <code class="literal">guess</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-json.html">JSON parser (name <code class="literal">json</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-ntriples.html">N-Triples parser (name <code class="literal">ntriples</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-rdfa.html">RDFa parser - (name <code class="literal">rdfa</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-rdfxml.html">RDF/XML parser - default (name <code class="literal">rdfxml</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-rss-tag-soup.html">RSS Tag Soup parser (name <code class="literal">rss-tag-soup</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-trig.html">TRiG parser (name <code class="literal">trig</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-turtle.html">Turtle Terse RDF Triple Language parser (name <code class="literal">turtle</code>)</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor-parsers-intro"></a>Introduction</h2></div></div></div>
+<p>This section describes the parsers that can be compiled into
+Raptor and their options. The exact parsers supported may vary
+by different builds of raptor and can be queried at run-time by
+use of the
+<a class="link" href="raptor2-section-world.html#raptor-world-get-parser-description" title="raptor_world_get_parser_description ()"><code class="function">raptor_world_get_parser_description</code></a>
+function</p>
+<p>The options that may be set on parsers can also
+be queried at run-time with the
+<a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description</code></a>
+function.</p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor-serializers.html b/docs/html/raptor-serializers.html
new file mode 100644
index 0000000..b8ce2e2
--- /dev/null
+++ b/docs/html/raptor-serializers.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Serializers in Raptor (triples to syntax)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="parser-turtle.html" title="Turtle Terse RDF Triple Language parser (name turtle)">
+<link rel="next" href="serializer-atom.html" title="Atom 1.0 serializer (name atom)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="parser-turtle.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="serializer-atom.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="raptor-serializers"></a>Serializers in Raptor (triples to syntax)</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="raptor-serializers.html#raptor-serializers-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="serializer-atom.html">Atom 1.0 serializer (name <code class="literal">atom</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-json.html">JSON serializers (name <code class="literal">json</code> and name <code class="literal">json-triples</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-nquads.html">N-Quads serializer - default (name <code class="literal">nquads</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-ntriples.html">N-Triples serializer - default (name <code class="literal">ntriples</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-rdfxml.html">RDF/XML serializer (name <code class="literal">rdfxml</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-rdfxml-abbrev.html">RDF/XML (Abbreviated) serializer (name <code class="literal">rdfxml-abbrev</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-rdfxml-xmp.html">RDF/XML (XMP Profile) serializer (name <code class="literal">rdfxml-xmp</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-turtle.html">Turtle serializer (name <code class="literal">turtle</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-rss-1-0.html">RSS 1.0 serializer (name <code class="literal">rss-1.0</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-dot.html">GraphViz dot serializer (name <code class="literal">dot</code>)</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor-serializers-intro"></a>Introduction</h2></div></div></div>
+<p>This section describes the serializers that can be compiled into
+Raptor and their options. The exact serializers supported may vary
+by different builds of raptor and can be queried at run-time by use of the
+<a class="link" href="raptor2-section-world.html#raptor-world-get-serializer-description" title="raptor_world_get_serializer_description ()"><code class="function">raptor_world_get_serializer_description</code></a>
+function</p>
+<p>The optional options that may be set on parsers can also
+be queried at run-time with the
+<a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description</code></a>
+function.</p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-changes-1-4-21-to-2-0-0.html b/docs/html/raptor2-changes-1-4-21-to-2-0-0.html
new file mode 100644
index 0000000..c134c70
--- /dev/null
+++ b/docs/html/raptor2-changes-1-4-21-to-2-0-0.html
@@ -0,0 +1,969 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Changes between raptor2 1.4.21 and 2.0.0</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor2-changes.html" title="API Changes">
+<link rel="prev" href="raptor2-changes-2-0-3-to-2-0-4.html" title="Changes between raptor2 2.0.3 and 2.0.4">
+<link rel="next" href="ix01.html" title="Index">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor2-changes-2-0-3-to-2-0-4.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor2-changes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="ix01.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor2-changes-1-4-21-to-2-0-0"></a>Changes between raptor2 1.4.21 and 2.0.0</h2></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="raptor2-changes-new-1-4-21-to-2-0-0"></a>New functions, types and enums</h3></div></div></div>
+<div class="itemizedlist">
+<p class="title"><b>Functions</b></p>
+<ul class="itemizedlist" type="disc">
+<li class="listitem"><p>int <a class="link" href="raptor2-section-avltree.html#raptor-avltree-add" title="raptor_avltree_add ()"><code class="function">raptor_avltree_add</code></a>(raptor_avltree* tree, void* p_data) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-avltree.html#raptor-avltree-delete" title="raptor_avltree_delete ()"><code class="function">raptor_avltree_delete</code></a>(raptor_avltree* tree, void* p_data) </p></li>
+<li class="listitem"><p>void* <a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator-get" title="raptor_avltree_iterator_get ()"><code class="function">raptor_avltree_iterator_get</code></a>(raptor_avltree_iterator* iterator) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator-is-end" title="raptor_avltree_iterator_is_end ()"><code class="function">raptor_avltree_iterator_is_end</code></a>(raptor_avltree_iterator* iterator) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator-next" title="raptor_avltree_iterator_next ()"><code class="function">raptor_avltree_iterator_next</code></a>(raptor_avltree_iterator* iterator) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-avltree.html#raptor-avltree-print" title="raptor_avltree_print ()"><code class="function">raptor_avltree_print</code></a>(raptor_avltree* tree, FILE* stream) </p></li>
+<li class="listitem"><p>void* <a class="link" href="raptor2-section-avltree.html#raptor-avltree-remove" title="raptor_avltree_remove ()"><code class="function">raptor_avltree_remove</code></a>(raptor_avltree* tree, void* p_data) </p></li>
+<li class="listitem"><p>void* <a class="link" href="raptor2-section-avltree.html#raptor-avltree-search" title="raptor_avltree_search ()"><code class="function">raptor_avltree_search</code></a>(raptor_avltree* tree, const void* p_data) </p></li>
+<li class="listitem"><p>void <a class="link" href="raptor2-section-avltree.html#raptor-avltree-set-print-handler" title="raptor_avltree_set_print_handler ()"><code class="function">raptor_avltree_set_print_handler</code></a>(raptor_avltree* tree, raptor_data_print_handler print_handler) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-avltree.html#raptor-avltree-size" title="raptor_avltree_size ()"><code class="function">raptor_avltree_size</code></a>(raptor_avltree* tree) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-avltree.html#raptor-avltree-visit" title="raptor_avltree_visit ()"><code class="function">raptor_avltree_visit</code></a>(raptor_avltree* tree, raptor_avltree_visit_handler visit_handler, void* user_data) </p></li>
+<li class="listitem"><p>const char* <a class="link" href="raptor2-section-general.html#raptor-domain-get-label" title="raptor_domain_get_label ()"><code class="function">raptor_domain_get_label</code></a>(raptor_domain domain) </p></li>
+<li class="listitem"><p>void <a class="link" href="raptor2-section-avltree.html#raptor-free-avltree" title="raptor_free_avltree ()"><code class="function">raptor_free_avltree</code></a>(raptor_avltree* tree) </p></li>
+<li class="listitem"><p>void <a class="link" href="raptor2-section-avltree.html#raptor-free-avltree-iterator" title="raptor_free_avltree_iterator ()"><code class="function">raptor_free_avltree_iterator</code></a>(raptor_avltree_iterator* iterator) </p></li>
+<li class="listitem"><p>void <a class="link" href="raptor2-section-option.html#raptor-free-option-description" title="raptor_free_option_description ()"><code class="function">raptor_free_option_description</code></a>(raptor_option_description* option_description) </p></li>
+<li class="listitem"><p>void <a class="link" href="raptor2-section-triples.html#raptor-free-statement" title="raptor_free_statement ()"><code class="function">raptor_free_statement</code></a>(raptor_statement *statement) </p></li>
+<li class="listitem"><p>void <a class="link" href="raptor2-section-triples.html#raptor-free-term" title="raptor_free_term ()"><code class="function">raptor_free_term</code></a>(raptor_term *term) </p></li>
+<li class="listitem"><p>const char* <a class="link" href="raptor2-section-general.html#raptor-log-level-get-label" title="raptor_log_level_get_label ()"><code class="function">raptor_log_level_get_label</code></a>(raptor_log_level level) </p></li>
+<li class="listitem"><p>raptor_avltree* <a class="link" href="raptor2-section-avltree.html#raptor-new-avltree" title="raptor_new_avltree ()"><code class="function">raptor_new_avltree</code></a>(raptor_data_compare_handler compare_handler, raptor_data_free_handler free_handler, unsigned int flags) </p></li>
+<li class="listitem"><p>raptor_avltree_iterator* <a class="link" href="raptor2-section-avltree.html#raptor-new-avltree-iterator" title="raptor_new_avltree_iterator ()"><code class="function">raptor_new_avltree_iterator</code></a>(raptor_avltree* tree, void* range, raptor_data_free_handler range_free_handler, int direction) </p></li>
+<li class="listitem"><p>raptor_sequence* <a class="link" href="raptor2-section-sequence.html#raptor-new-sequence-with-context" title="raptor_new_sequence_with_context ()"><code class="function">raptor_new_sequence_with_context</code></a>(raptor_data_context_free_handler* free_handler, raptor_data_context_print_handler* print_handler, void* handler_context) </p></li>
+<li class="listitem"><p>raptor_statement* <a class="link" href="raptor2-section-triples.html#raptor-new-statement" title="raptor_new_statement ()"><code class="function">raptor_new_statement</code></a>(raptor_world *world) </p></li>
+<li class="listitem"><p>raptor_statement* <a class="link" href="raptor2-section-triples.html#raptor-new-statement-from-nodes" title="raptor_new_statement_from_nodes ()"><code class="function">raptor_new_statement_from_nodes</code></a>(raptor_world* world, raptor_term *subject, raptor_term *predicate, raptor_term *object, raptor_term *graph) </p></li>
+<li class="listitem"><p>raptor_term* <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-blank" title="raptor_new_term_from_blank ()"><code class="function">raptor_new_term_from_blank</code></a>(raptor_world* world, const unsigned char* blank) </p></li>
+<li class="listitem"><p>raptor_term* <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-counted-blank" title="raptor_new_term_from_counted_blank ()"><code class="function">raptor_new_term_from_counted_blank</code></a>(raptor_world* world, const unsigned char* blank, size_t length) </p></li>
+<li class="listitem"><p>raptor_term* <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-counted-literal" title="raptor_new_term_from_counted_literal ()"><code class="function">raptor_new_term_from_counted_literal</code></a>(raptor_world* world, const unsigned char* literal, size_t literal_len, raptor_uri* datatype, const unsigned char* language, unsigned char language_len) </p></li>
+<li class="listitem"><p>raptor_term* <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-literal" title="raptor_new_term_from_literal ()"><code class="function">raptor_new_term_from_literal</code></a>(raptor_world* world, const unsigned char* literal, raptor_uri* datatype, const unsigned char* language) </p></li>
+<li class="listitem"><p>raptor_term* <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-uri" title="raptor_new_term_from_uri ()"><code class="function">raptor_new_term_from_uri</code></a>(raptor_world* world, raptor_uri* uri) </p></li>
+<li class="listitem"><p>raptor_uri* <a class="link" href="raptor2-section-uri.html#raptor-new-uri-from-counted-string" title="raptor_new_uri_from_counted_string ()"><code class="function">raptor_new_uri_from_counted_string</code></a>(raptor_world* world, const unsigned char* uri_string, size_t length) </p></li>
+<li class="listitem"><p>const char* <a class="link" href="raptor2-section-option.html#raptor-option-get-value-type-label" title="raptor_option_get_value_type_label ()"><code class="function">raptor_option_get_value_type_label</code></a>(const raptor_option_value_type type) </p></li>
+<li class="listitem"><p>raptor_uri* <a class="link" href="raptor2-section-parser.html#raptor-parser-get-graph" title="raptor_parser_get_graph ()"><code class="function">raptor_parser_get_graph</code></a>(raptor_parser* rdf_parser) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-iostream" title="raptor_parser_parse_iostream ()"><code class="function">raptor_parser_parse_iostream</code></a>(raptor_parser* rdf_parser, raptor_iostream *iostr, raptor_uri *base_uri) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-serializer.html#raptor-serializer-flush" title="raptor_serializer_flush ()"><code class="function">raptor_serializer_flush</code></a>(raptor_serializer *rdf_serializer) </p></li>
+<li class="listitem"><p>raptor_syntax_description* <a class="link" href="raptor2-section-serializer.html#raptor-serializer-get-description" title="raptor_serializer_get_description ()"><code class="function">raptor_serializer_get_description</code></a>(raptor_serializer* rdf_serializer) </p></li>
+<li class="listitem"><p>void <a class="link" href="raptor2-section-triples.html#raptor-statement-clear" title="raptor_statement_clear ()"><code class="function">raptor_statement_clear</code></a>(raptor_statement *statement) </p></li>
+<li class="listitem"><p>raptor_statement* <a class="link" href="raptor2-section-triples.html#raptor-statement-copy" title="raptor_statement_copy ()"><code class="function">raptor_statement_copy</code></a>(raptor_statement *statement) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-triples.html#raptor-statement-equals" title="raptor_statement_equals ()"><code class="function">raptor_statement_equals</code></a>(const raptor_statement* s1, const raptor_statement* s2) </p></li>
+<li class="listitem"><p>void <a class="link" href="raptor2-section-triples.html#raptor-statement-init" title="raptor_statement_init ()"><code class="function">raptor_statement_init</code></a>(raptor_statement *statement, raptor_world *world) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-general.html#raptor-syntax-description-validate" title="raptor_syntax_description_validate ()"><code class="function">raptor_syntax_description_validate</code></a> (raptor_syntax_description* desc) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-triples.html#raptor-term-compare" title="raptor_term_compare ()"><code class="function">raptor_term_compare</code></a>(const raptor_term *t1, const raptor_term *t2) </p></li>
+<li class="listitem"><p>raptor_term* <a class="link" href="raptor2-section-triples.html#raptor-term-copy" title="raptor_term_copy ()"><code class="function">raptor_term_copy</code></a>(raptor_term* term) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-triples.html#raptor-term-equals" title="raptor_term_equals ()"><code class="function">raptor_term_equals</code></a>(raptor_term* term1, raptor_term* term2) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-triples.html#raptor-term-ntriples-write" title="raptor_term_ntriples_write ()"><code class="function">raptor_term_ntriples_write</code></a>(const raptor_term *term, raptor_iostream* iostr) </p></li>
+<li class="listitem"><p>unsigned char* <a class="link" href="raptor2-section-triples.html#raptor-term-to-counted-string" title="raptor_term_to_counted_string ()"><code class="function">raptor_term_to_counted_string</code></a>(raptor_term *term, size_t* len_p) </p></li>
+<li class="listitem"><p>unsigned char* <a class="link" href="raptor2-section-triples.html#raptor-term-to-string" title="raptor_term_to_string ()"><code class="function">raptor_term_to_string</code></a>(raptor_term *term) </p></li>
+<li class="listitem"><p>raptor_world* <a class="link" href="raptor2-section-uri.html#raptor-uri-get-world" title="raptor_uri_get_world ()"><code class="function">raptor_uri_get_world</code></a>(raptor_uri *uri) </p></li>
+<li class="listitem"><p>unsigned char* <a class="link" href="raptor2-section-world.html#raptor-world-generate-bnodeid" title="raptor_world_generate_bnodeid ()"><code class="function">raptor_world_generate_bnodeid</code></a>(raptor_world *world) </p></li>
+<li class="listitem"><p>raptor_option_description* <a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description</code></a>(raptor_world* world, const raptor_domain domain, const raptor_option option) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-world.html#raptor-world-is-parser-name" title="raptor_world_is_parser_name ()"><code class="function">raptor_world_is_parser_name</code></a>(raptor_world* world, const char* name) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>(raptor_world *world, void *user_data, raptor_log_handler handler) </p></li>
+</ul>
+</div>
+<div class="itemizedlist">
+<p class="title"><b>Types</b></p>
+<ul class="itemizedlist" type="disc">
+<li class="listitem"><p><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-avltree.html#raptor-avltree-bitflags" title="enum raptor_avltree_bitflags"><span class="type">raptor_avltree_bitflags</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator"><span class="type">raptor_avltree_iterator</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-avltree.html#raptor-avltree-visit-handler" title="raptor_avltree_visit_handler ()"><span class="type">raptor_avltree_visit_handler</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#raptor-data-compare-handler" title="raptor_data_compare_handler ()"><span class="type">raptor_data_compare_handler</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#raptor-data-context-free-handler" title="raptor_data_context_free_handler ()"><span class="type">raptor_data_context_free_handler</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#raptor-data-malloc-handler" title="raptor_data_malloc_handler ()"><span class="type">raptor_data_malloc_handler</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#raptor-domain" title="enum raptor_domain"><span class="type">raptor_domain</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-parser.html#raptor-graph-mark-flags" title="enum raptor_graph_mark_flags"><span class="type">raptor_graph_mark_flags</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#raptor-log-message" title="raptor_log_message"><span class="type">raptor_log_message</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-option.html#raptor-option-description" title="raptor_option_description"><span class="type">raptor_option_description</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-option.html#raptor-option-value-type" title="enum raptor_option_value_type"><span class="type">raptor_option_value_type</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#raptor-syntax-bitflags" title="enum raptor_syntax_bitflags"><span class="type">raptor_syntax_bitflags</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="type">raptor_syntax_description</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-triples.html#raptor-term-blank-value" title="raptor_term_blank_value"><span class="type">raptor_term_blank_value</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-triples.html#raptor-term-literal-value" title="raptor_term_literal_value"><span class="type">raptor_term_literal_value</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-triples.html#raptor-term-value" title="raptor_term_value"><span class="type">raptor_term_value</span></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#raptor-type-q" title="raptor_type_q"><span class="type">raptor_type_q</span></a> </p></li>
+</ul>
+</div>
+<div class="itemizedlist">
+<p class="title"><b>Enums</b></p>
+<ul class="itemizedlist" type="disc">
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-IOSTREAM:CAPS"><code class="literal">RAPTOR_DOMAIN_IOSTREAM</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-LAST:CAPS"><code class="literal">RAPTOR_DOMAIN_LAST</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-NAMESPACE:CAPS"><code class="literal">RAPTOR_DOMAIN_NAMESPACE</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-NONE:CAPS"><code class="literal">RAPTOR_DOMAIN_NONE</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-PARSER:CAPS"><code class="literal">RAPTOR_DOMAIN_PARSER</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-QNAME:CAPS"><code class="literal">RAPTOR_DOMAIN_QNAME</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-SAX2:CAPS"><code class="literal">RAPTOR_DOMAIN_SAX2</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-SERIALIZER:CAPS"><code class="literal">RAPTOR_DOMAIN_SERIALIZER</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-TERM:CAPS"><code class="literal">RAPTOR_DOMAIN_TERM</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-TURTLE-WRITER:CAPS"><code class="literal">RAPTOR_DOMAIN_TURTLE_WRITER</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-URI:CAPS"><code class="literal">RAPTOR_DOMAIN_URI</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-WORLD:CAPS"><code class="literal">RAPTOR_DOMAIN_WORLD</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-WWW:CAPS"><code class="literal">RAPTOR_DOMAIN_WWW</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-XML-WRITER:CAPS"><code class="literal">RAPTOR_DOMAIN_XML_WRITER</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-parser.html#RAPTOR-GRAPH-MARK-DECLARED:CAPS"><code class="literal">RAPTOR_GRAPH_MARK_DECLARED</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-parser.html#RAPTOR-GRAPH-MARK-START:CAPS"><code class="literal">RAPTOR_GRAPH_MARK_START</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-LOG-LEVEL-DEBUG:CAPS"><code class="literal">RAPTOR_LOG_LEVEL_DEBUG</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-LOG-LEVEL-INFO:CAPS"><code class="literal">RAPTOR_LOG_LEVEL_INFO</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-general.html#RAPTOR-LOG-LEVEL-TRACE:CAPS"><code class="literal">RAPTOR_LOG_LEVEL_TRACE</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-BOOL:CAPS"><code class="literal">RAPTOR_OPTION_VALUE_TYPE_BOOL</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-INT:CAPS"><code class="literal">RAPTOR_OPTION_VALUE_TYPE_INT</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-LAST:CAPS"><code class="literal">RAPTOR_OPTION_VALUE_TYPE_LAST</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-STRING:CAPS"><code class="literal">RAPTOR_OPTION_VALUE_TYPE_STRING</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-URI:CAPS"><code class="literal">RAPTOR_OPTION_VALUE_TYPE_URI</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-world.html#RAPTOR-WORLD-FLAG-URI-INTERNING:CAPS"><code class="literal">RAPTOR_WORLD_FLAG_URI_INTERNING</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-world.html#RAPTOR-WORLD-FLAG-WWW-SKIP-INIT-FINISH:CAPS"><code class="literal">RAPTOR_WORLD_FLAG_WWW_SKIP_INIT_FINISH</code></a> </p></li>
+</ul>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="raptor2-changes-deleted-1-4-21-to-2-0-0"></a>Deleted functions, types and enums</h3></div></div></div>
+<div class="itemizedlist">
+<p class="title"><b>Functions</b></p>
+<ul class="itemizedlist" type="disc">
+<li class="listitem"><p>raptor_compare_strings - Trivial utility function removed.</p></li>
+<li class="listitem"><p>raptor_copy_identifier - Use <a class="link" href="raptor2-section-triples.html#raptor-term-copy" title="raptor_term_copy ()"><code class="function">raptor_term_copy</code></a>() with <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> objects.</p></li>
+<li class="listitem"><p>raptor_error_handlers_init - Replaced by generic raptor log mechanism. See <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>()</p></li>
+<li class="listitem"><p>raptor_error_handlers_init_v2 - Replaced by generic raptor log mechanism. See <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>()</p></li>
+<li class="listitem"><p>raptor_feature_value_type - Use <a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description</code></a>() for the option and access the value_type field.</p></li>
+<li class="listitem"><p>raptor_finish - Use <a class="link" href="raptor2-section-world.html#raptor-free-world" title="raptor_free_world ()"><code class="function">raptor_free_world</code></a>() with <a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> object.</p></li>
+<li class="listitem"><p>raptor_free_identifier - Use <a class="link" href="raptor2-section-triples.html#raptor-free-term" title="raptor_free_term ()"><code class="function">raptor_free_term</code></a>() with <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> objects.</p></li>
+<li class="listitem"><p>raptor_init - Use <a class="link" href="raptor2-section-world.html#raptor-new-world" title="raptor_new_world"><code class="function">raptor_new_world</code></a>() to create a new <a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> object.</p></li>
+<li class="listitem"><p>raptor_iostream_get_bytes_written_count - Deprecated for <a class="link" href="raptor2-section-iostream.html#raptor-iostream-tell" title="raptor_iostream_tell ()"><code class="function">raptor_iostream_tell</code></a>().</p></li>
+<li class="listitem"><p>raptor_iostream_write_string_turtle - Deprecated for <a class="link" href="raptor2-section-iostream.html#raptor-string-python-write" title="raptor_string_python_write ()"><code class="function">raptor_string_python_write</code></a>().</p></li>
+<li class="listitem"><p>raptor_new_identifier - Replaced by <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-blank" title="raptor_new_term_from_blank ()"><code class="function">raptor_new_term_from_blank</code></a>(), <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-literal" title="raptor_new_term_from_literal ()"><code class="function">raptor_new_term_from_literal</code></a>() or <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-blank" title="raptor_new_term_from_blank ()"><code class="function">raptor_new_term_from_blank</code></a>() and <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> class.</p></li>
+<li class="listitem"><p>raptor_new_identifier_v2 - Replaced by <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-blank" title="raptor_new_term_from_blank ()"><code class="function">raptor_new_term_from_blank</code></a>(), <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-literal" title="raptor_new_term_from_literal ()"><code class="function">raptor_new_term_from_literal</code></a>() or <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-blank" title="raptor_new_term_from_blank ()"><code class="function">raptor_new_term_from_blank</code></a>() and <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> class.</p></li>
+<li class="listitem"><p>raptor_ntriples_string_as_utf8_string - Deprecated internal debug function.</p></li>
+<li class="listitem"><p>raptor_ntriples_term_as_string - Deprecated internal debug function.</p></li>
+<li class="listitem"><p>raptor_print_ntriples_string - Use <a class="link" href="raptor2-section-iostream.html#raptor-string-ntriples-write" title="raptor_string_ntriples_write ()"><code class="function">raptor_string_ntriples_write</code></a>() with a <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a></p></li>
+<li class="listitem"><p>raptor_print_statement_detailed - Deprecated internal function.</p></li>
+<li class="listitem"><p>raptor_sequence_print_string - Trivial utility function removed.</p></li>
+<li class="listitem"><p>raptor_sequence_print_uri - Deprecated for <a class="link" href="raptor2-section-uri.html#raptor-uri-print" title="raptor_uri_print ()"><code class="function">raptor_uri_print</code></a>()</p></li>
+<li class="listitem"><p>raptor_sequence_set_print_handler - Use the argument in the <a class="link" href="raptor2-section-sequence.html#raptor-new-sequence" title="raptor_new_sequence ()"><code class="function">raptor_new_sequence</code></a>() constructor instead.</p></li>
+<li class="listitem"><p>raptor_sequence_set_print_handler_v2 - Use the argument in the <a class="link" href="raptor2-section-sequence.html#raptor-new-sequence" title="raptor_new_sequence ()"><code class="function">raptor_new_sequence</code></a>() constructor instead.</p></li>
+<li class="listitem"><p>raptor_serializer_set_error_handler - Replaced by <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>() on the <a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> object.</p></li>
+<li class="listitem"><p>raptor_serializer_set_warning_handler - Replaced by <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>() on the <a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> object.</p></li>
+<li class="listitem"><p>raptor_set_error_handler - Replaced by <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>() on the <a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> object.</p></li>
+<li class="listitem"><p>raptor_set_fatal_error_handler - Replaced by <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>() on the <a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> object.</p></li>
+<li class="listitem"><p>raptor_set_parser_strict - Replaced by <a class="link" href="raptor2-section-parser.html#raptor-parser-set-option" title="raptor_parser_set_option ()"><code class="function">raptor_parser_set_option</code></a>() with option <a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-STRICT:CAPS"><code class="literal">RAPTOR_OPTION_STRICT</code></a></p></li>
+<li class="listitem"><p>raptor_set_warning_handler - Replaced by <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>() on the <a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> object.</p></li>
+<li class="listitem"><p>raptor_statement_part_as_counted_string - Better done via methods of <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> class such as <a class="link" href="raptor2-section-triples.html#raptor-term-to-counted-string" title="raptor_term_to_counted_string ()"><code class="function">raptor_term_to_counted_string</code></a>().</p></li>
+<li class="listitem"><p>raptor_statement_part_as_counted_string_v2 - Better done via methods of <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> class such as <a class="link" href="raptor2-section-triples.html#raptor-term-to-counted-string" title="raptor_term_to_counted_string ()"><code class="function">raptor_term_to_counted_string</code></a>().</p></li>
+<li class="listitem"><p>raptor_statement_part_as_string - Better done via methods of <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> class such as <a class="link" href="raptor2-section-triples.html#raptor-term-to-string" title="raptor_term_to_string ()"><code class="function">raptor_term_to_string</code></a>().</p></li>
+<li class="listitem"><p>raptor_statement_part_as_string_v2 - Better done via methods of <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> class such as <a class="link" href="raptor2-section-triples.html#raptor-term-to-string" title="raptor_term_to_string ()"><code class="function">raptor_term_to_string</code></a>().</p></li>
+<li class="listitem"><p>raptor_uri_get_handler - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_uri_get_handler_v2 - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_uri_set_handler - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_uri_set_handler_v2 - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_www_finish - No need for this to be public.</p></li>
+<li class="listitem"><p>raptor_www_finish_v2 - No need for this to be public.</p></li>
+<li class="listitem"><p>raptor_www_init - No need for this to be public.</p></li>
+<li class="listitem"><p>raptor_www_init_v2 - No need for this to be public.</p></li>
+<li class="listitem"><p>raptor_www_no_www_library_init_finish - Deprecated for <a class="link" href="raptor2-section-world.html#raptor-world-set-flag" title="raptor_world_set_flag ()"><code class="function">raptor_world_set_flag</code></a>().</p></li>
+<li class="listitem"><p>raptor_www_no_www_library_init_finish_v2 - Deprecated for <a class="link" href="raptor2-section-world.html#raptor-world-set-flag" title="raptor_world_set_flag ()"><code class="function">raptor_world_set_flag</code></a>().</p></li>
+<li class="listitem"><p>raptor_www_set_error_handler - Replaced by <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>() on the <a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> object.</p></li>
+</ul>
+</div>
+<div class="itemizedlist">
+<p class="title"><b>Types</b></p>
+<ul class="itemizedlist" type="disc">
+<li class="listitem"><p>raptor_error_handlers - Replaced by generic raptor log mechanism. See <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>()</p></li>
+<li class="listitem"><p>raptor_free_uri_func - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_libxml_flags - replaced by <a href="raptor2-section-world.html#raptor-world-set-flag"><code class="function">raptor_world_set_flags</code></a>() with <a class="link" href="raptor2-section-world.html#raptor-world-flag" title="enum raptor_world_flag"><span class="type">raptor_world_flag</span></a></p></li>
+<li class="listitem"><p>raptor_message_handler - Replaced by generic raptor log mechanism. See <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>()</p></li>
+<li class="listitem"><p>raptor_message_handler_closure - Replaced by generic raptor log mechanism. See <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>()</p></li>
+<li class="listitem"><p>raptor_new_uri_for_rdf_concept_func - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_new_uri_from_uri_local_name_func - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_new_uri_func - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_new_uri_relative_to_base_func - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_ntriples_parser - replaced by <a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a></p></li>
+<li class="listitem"><p>raptor_ntriples_term_type - replaced by <a class="link" href="raptor2-section-triples.html#raptor-term-type" title="enum raptor_term_type"><span class="type">raptor_term_type</span></a></p></li>
+<li class="listitem"><p>raptor_uri_as_counted_string_func - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_uri_as_string_func - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_uri_compare_func - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_uri_copy_func - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_uri_equals_func - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_uri_handler - Entire URI implementation is internal and not replaceable.</p></li>
+<li class="listitem"><p>raptor_uri_source - URI source was useless.</p></li>
+</ul>
+</div>
+<div class="itemizedlist">
+<p class="title"><b>Enums</b></p>
+<ul class="itemizedlist" type="disc">
+<li class="listitem"><p>RAPTOR_FEATURE_ASSUME_IS_RDF - Never used.</p></li>
+<li class="listitem"><p>RAPTOR_FEATURE_START_URI - Never used.</p></li>
+<li class="listitem"><p>RAPTOR_GENID_TYPE_BAGID - There is just one type of generated ID now.</p></li>
+<li class="listitem"><p>RAPTOR_GENID_TYPE_BNODEID - There is just one type of generated ID now.</p></li>
+<li class="listitem"><p>RAPTOR_IDENTIFIER_TYPE_ORDINAL - Deprecated value deleted.</p></li>
+<li class="listitem"><p>RAPTOR_URI_SOURCE_ATTRIBUTE - URI source concept removed.</p></li>
+<li class="listitem"><p>RAPTOR_URI_SOURCE_BLANK_ID - URI source concept removed.</p></li>
+<li class="listitem"><p>RAPTOR_URI_SOURCE_ELEMENT - URI source concept removed.</p></li>
+<li class="listitem"><p>RAPTOR_URI_SOURCE_GENERATED - URI source concept removed.</p></li>
+<li class="listitem"><p>RAPTOR_URI_SOURCE_ID - URI source concept removed.</p></li>
+<li class="listitem"><p>RAPTOR_URI_SOURCE_NOT_URI - URI source concept removed.</p></li>
+<li class="listitem"><p>RAPTOR_URI_SOURCE_UNKNOWN - URI source concept removed.</p></li>
+<li class="listitem"><p>RAPTOR_URI_SOURCE_URI - URI source concept removed.</p></li>
+</ul>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="raptor2-changes-renamed-1-4-21-to-2-0-0"></a>Renamed function and enums</h3></div></div></div>
+<table border="1" id="idp10716840">
+<thead></thead>
+<tbody>
+<tr>
+ <th>1.4.21 function</th>
+ <th>2.0.0 function</th>
+ <th>Notes</th>
+ </tr>
+<tr valign="top">
+ <td>raptor_format_locator</td> <td><a class="link" href="raptor2-section-locator.html#raptor-locator-format" title="raptor_locator_format ()"><code class="function">raptor_locator_format</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_get_feature_count</td> <td><a class="link" href="raptor2-section-option.html#raptor-option-get-count" title="raptor_option_get_count ()"><code class="function">raptor_option_get_count</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_get_locator</td> <td><a class="link" href="raptor2-section-parser.html#raptor-parser-get-locator" title="raptor_parser_get_locator ()"><code class="function">raptor_parser_get_locator</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_get_name</td> <td><a class="link" href="raptor2-section-parser.html#raptor-parser-get-name" title="raptor_parser_get_name ()"><code class="function">raptor_parser_get_name</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_guess_parser_name_v2</td> <td><a class="link" href="raptor2-section-world.html#raptor-world-guess-parser-name" title="raptor_world_guess_parser_name ()"><code class="function">raptor_world_guess_parser_name</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_namespace_copy</td> <td><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack-start-namespace" title="raptor_namespace_stack_start_namespace ()"><code class="function">raptor_namespace_stack_start_namespace</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_namespaces_format</td> <td><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-format-as-xml" title="raptor_namespace_format_as_xml ()"><code class="function">raptor_namespace_format_as_xml</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_namespaces_qname_from_uri</td> <td><a class="link" href="raptor2-section-xml-qname.html#raptor-new-qname-from-namespace-uri" title="raptor_new_qname_from_namespace_uri ()"><code class="function">raptor_new_qname_from_namespace_uri</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_new_namespace_parts_from_string</td> <td><a class="link" href="raptor2-section-xml-namespace.html#raptor-xml-namespace-string-parse" title="raptor_xml_namespace_string_parse ()"><code class="function">raptor_xml_namespace_string_parse</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_new_parser_for_content_v2</td> <td><a class="link" href="raptor2-section-parser.html#raptor-new-parser-for-content" title="raptor_new_parser_for_content ()"><code class="function">raptor_new_parser_for_content</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_new_parser_v2</td> <td><a class="link" href="raptor2-section-parser.html#raptor-new-parser" title="raptor_new_parser ()"><code class="function">raptor_new_parser</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_new_qname_from_namespace_local_name_v2</td> <td><a class="link" href="raptor2-section-xml-qname.html#raptor-new-qname-from-namespace-local-name" title="raptor_new_qname_from_namespace_local_name ()"><code class="function">raptor_new_qname_from_namespace_local_name</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_new_serializer_v2</td> <td><a class="link" href="raptor2-section-serializer.html#raptor-new-serializer" title="raptor_new_serializer ()"><code class="function">raptor_new_serializer</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_new_uri_from_id_v2</td> <td><a class="link" href="raptor2-section-uri.html#raptor-new-uri-from-id" title="raptor_new_uri_from_id ()"><code class="function">raptor_new_uri_from_id</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_new_uri_from_uri_local_name_v2</td> <td><a class="link" href="raptor2-section-uri.html#raptor-new-uri-from-uri-local-name" title="raptor_new_uri_from_uri_local_name ()"><code class="function">raptor_new_uri_from_uri_local_name</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_new_uri_relative_to_base_v2</td> <td><a class="link" href="raptor2-section-uri.html#raptor-new-uri-relative-to-base" title="raptor_new_uri_relative_to_base ()"><code class="function">raptor_new_uri_relative_to_base</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_new_uri_v2</td> <td><a class="link" href="raptor2-section-uri.html#raptor-new-uri" title="raptor_new_uri ()"><code class="function">raptor_new_uri</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_parse_abort</td> <td><a class="link" href="raptor2-section-parser.html#raptor-parser-parse-abort" title="raptor_parser_parse_abort ()"><code class="function">raptor_parser_parse_abort</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_parse_chunk</td> <td><a class="link" href="raptor2-section-parser.html#raptor-parser-parse-chunk" title="raptor_parser_parse_chunk ()"><code class="function">raptor_parser_parse_chunk</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_parse_file</td> <td><a class="link" href="raptor2-section-parser.html#raptor-parser-parse-file" title="raptor_parser_parse_file ()"><code class="function">raptor_parser_parse_file</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_parse_file_stream</td> <td><a class="link" href="raptor2-section-parser.html#raptor-parser-parse-file-stream" title="raptor_parser_parse_file_stream ()"><code class="function">raptor_parser_parse_file_stream</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_parse_uri</td> <td><a class="link" href="raptor2-section-parser.html#raptor-parser-parse-uri" title="raptor_parser_parse_uri ()"><code class="function">raptor_parser_parse_uri</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_parse_uri_with_connection</td> <td><a class="link" href="raptor2-section-parser.html#raptor-parser-parse-uri-with-connection" title="raptor_parser_parse_uri_with_connection ()"><code class="function">raptor_parser_parse_uri_with_connection</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_serialize_end</td> <td><a class="link" href="raptor2-section-serializer.html#raptor-serializer-serialize-end" title="raptor_serializer_serialize_end ()"><code class="function">raptor_serializer_serialize_end</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_serialize_set_namespace</td> <td><a class="link" href="raptor2-section-serializer.html#raptor-serializer-set-namespace" title="raptor_serializer_set_namespace ()"><code class="function">raptor_serializer_set_namespace</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_serialize_set_namespace_from_namespace</td> <td><a class="link" href="raptor2-section-serializer.html#raptor-serializer-set-namespace-from-namespace" title="raptor_serializer_set_namespace_from_namespace ()"><code class="function">raptor_serializer_set_namespace_from_namespace</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_serialize_start</td> <td><a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-iostream" title="raptor_serializer_start_to_iostream ()"><code class="function">raptor_serializer_start_to_iostream</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_serialize_start_to_file_handle</td> <td><a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-file-handle" title="raptor_serializer_start_to_file_handle ()"><code class="function">raptor_serializer_start_to_file_handle</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_serialize_start_to_filename</td> <td><a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-filename" title="raptor_serializer_start_to_filename ()"><code class="function">raptor_serializer_start_to_filename</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_serialize_start_to_iostream</td> <td><a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-iostream" title="raptor_serializer_start_to_iostream ()"><code class="function">raptor_serializer_start_to_iostream</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_serialize_start_to_string</td> <td><a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-string" title="raptor_serializer_start_to_string ()"><code class="function">raptor_serializer_start_to_string</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_serializer_syntax_name_check_v2</td> <td><a class="link" href="raptor2-section-world.html#raptor-world-is-serializer-name" title="raptor_world_is_serializer_name ()"><code class="function">raptor_world_is_serializer_name</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_set_namespace_handler</td> <td><a class="link" href="raptor2-section-parser.html#raptor-parser-set-namespace-handler" title="raptor_parser_set_namespace_handler ()"><code class="function">raptor_parser_set_namespace_handler</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_set_statement_handler</td> <td><a class="link" href="raptor2-section-parser.html#raptor-parser-set-statement-handler" title="raptor_parser_set_statement_handler ()"><code class="function">raptor_parser_set_statement_handler</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_start_parse</td> <td><a class="link" href="raptor2-section-parser.html#raptor-parser-parse-start" title="raptor_parser_parse_start ()"><code class="function">raptor_parser_parse_start</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_uri_is_file_uri</td> <td><a class="link" href="raptor2-section-uri.html#raptor-uri-uri-string-is-file-uri" title="raptor_uri_uri_string_is_file_uri ()"><code class="function">raptor_uri_uri_string_is_file_uri</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_utf8_check</td> <td><a class="link" href="raptor2-section-unicode.html#raptor-unicode-check-utf8-string" title="raptor_unicode_check_utf8_string ()"><code class="function">raptor_unicode_check_utf8_string</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_www_free</td> <td><a class="link" href="raptor2-section-www.html#raptor-free-www" title="raptor_free_www ()"><code class="function">raptor_free_www</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_www_new_v2</td> <td><a class="link" href="raptor2-section-www.html#raptor-new-www" title="raptor_new_www ()"><code class="function">raptor_new_www</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_www_new_with_connection_v2</td> <td><a class="link" href="raptor2-section-www.html#raptor-new-www-with-connection" title="raptor_new_www_with_connection ()"><code class="function">raptor_new_www_with_connection</code></a></td> <td> </td>
+ </tr>
+</tbody>
+</table>
+<table border="1" id="idp11857328">
+<thead></thead>
+<tbody>
+<tr>
+ <th>1.4.21 enum</th>
+ <th>2.0.0 enum</th>
+ <th>Notes</th>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_ALLOW_BAGID</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-ALLOW-BAGID:CAPS"><code class="literal">RAPTOR_OPTION_ALLOW_BAGID</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_ALLOW_NON_NS_ATTRIBUTES</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-ALLOW-NON-NS-ATTRIBUTES:CAPS"><code class="literal">RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_ALLOW_OTHER_PARSETYPES</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-ALLOW-OTHER-PARSETYPES:CAPS"><code class="literal">RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_ALLOW_RDF_TYPE_RDF_LIST</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-ALLOW-RDF-TYPE-RDF-LIST:CAPS"><code class="literal">RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_ATOM_ENTRY_URI</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-ATOM-ENTRY-URI:CAPS"><code class="literal">RAPTOR_OPTION_ATOM_ENTRY_URI</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_BNODE_BORDER</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-BNODE-BORDER:CAPS"><code class="literal">RAPTOR_OPTION_BNODE_BORDER</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_BNODE_FILL</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-BNODE-FILL:CAPS"><code class="literal">RAPTOR_OPTION_BNODE_FILL</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_CHECK_RDF_ID</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-CHECK-RDF-ID:CAPS"><code class="literal">RAPTOR_OPTION_CHECK_RDF_ID</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_HTML_LINK</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-HTML-LINK:CAPS"><code class="literal">RAPTOR_OPTION_HTML_LINK</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_HTML_TAG_SOUP</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-HTML-TAG-SOUP:CAPS"><code class="literal">RAPTOR_OPTION_HTML_TAG_SOUP</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_JSON_CALLBACK</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-JSON-CALLBACK:CAPS"><code class="literal">RAPTOR_OPTION_JSON_CALLBACK</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_JSON_EXTRA_DATA</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-JSON-EXTRA-DATA:CAPS"><code class="literal">RAPTOR_OPTION_JSON_EXTRA_DATA</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_LAST</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-LAST:CAPS"><code class="literal">RAPTOR_OPTION_LAST</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_LITERAL_BORDER</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-LITERAL-BORDER:CAPS"><code class="literal">RAPTOR_OPTION_LITERAL_BORDER</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_LITERAL_FILL</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-LITERAL-FILL:CAPS"><code class="literal">RAPTOR_OPTION_LITERAL_FILL</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_MICROFORMATS</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-MICROFORMATS:CAPS"><code class="literal">RAPTOR_OPTION_MICROFORMATS</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_NON_NFC_FATAL</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-NON-NFC-FATAL:CAPS"><code class="literal">RAPTOR_OPTION_NON_NFC_FATAL</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_NORMALIZE_LANGUAGE</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-NORMALIZE-LANGUAGE:CAPS"><code class="literal">RAPTOR_OPTION_NORMALIZE_LANGUAGE</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_NO_NET</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-NO-NET:CAPS"><code class="literal">RAPTOR_OPTION_NO_NET</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_PREFIX_ELEMENTS</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-PREFIX-ELEMENTS:CAPS"><code class="literal">RAPTOR_OPTION_PREFIX_ELEMENTS</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_RELATIVE_URIS</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-RELATIVE-URIS:CAPS"><code class="literal">RAPTOR_OPTION_RELATIVE_URIS</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_RESOURCE_BORDER</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-RESOURCE-BORDER:CAPS"><code class="literal">RAPTOR_OPTION_RESOURCE_BORDER</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_RESOURCE_FILL</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-RESOURCE-FILL:CAPS"><code class="literal">RAPTOR_OPTION_RESOURCE_FILL</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_RSS_TRIPLES</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-RSS-TRIPLES:CAPS"><code class="literal">RAPTOR_OPTION_RSS_TRIPLES</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_SCANNING </td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-SCANNING:CAPS"><code class="literal">RAPTOR_OPTION_SCANNING</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_WARN_OTHER_PARSETYPES</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WARN-OTHER-PARSETYPES:CAPS"><code class="literal">RAPTOR_OPTION_WARN_OTHER_PARSETYPES</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_WRITER_AUTO_EMPTY</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WRITER-AUTO-EMPTY:CAPS"><code class="literal">RAPTOR_OPTION_WRITER_AUTO_EMPTY</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_WRITER_AUTO_INDENT</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WRITER-AUTO-INDENT:CAPS"><code class="literal">RAPTOR_OPTION_WRITER_AUTO_INDENT</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_WRITER_INDENT_WIDTH</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WRITER-INDENT-WIDTH:CAPS"><code class="literal">RAPTOR_OPTION_WRITER_INDENT_WIDTH</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_WRITER_XML_DECLARATION</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WRITER-XML-DECLARATION:CAPS"><code class="literal">RAPTOR_OPTION_WRITER_XML_DECLARATION</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_WRITER_XML_VERSION</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WRITER-XML-VERSION:CAPS"><code class="literal">RAPTOR_OPTION_WRITER_XML_VERSION</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_WRITE_BASE_URI</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WRITE-BASE-URI:CAPS"><code class="literal">RAPTOR_OPTION_WRITE_BASE_URI</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_WWW_HTTP_CACHE_CONTROL</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WWW-HTTP-CACHE-CONTROL:CAPS"><code class="literal">RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_WWW_HTTP_USER_AGENT</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WWW-HTTP-USER-AGENT:CAPS"><code class="literal">RAPTOR_OPTION_WWW_HTTP_USER_AGENT</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_FEATURE_WWW_TIMEOUT</td> <td><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WWW-TIMEOUT:CAPS"><code class="literal">RAPTOR_OPTION_WWW_TIMEOUT</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_IDENTIFIER_TYPE_ANONYMOUS</td> <td><a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-BLANK:CAPS"><code class="literal">RAPTOR_TERM_TYPE_BLANK</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_IDENTIFIER_TYPE_LITERAL</td> <td><a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-LITERAL:CAPS"><code class="literal">RAPTOR_TERM_TYPE_LITERAL</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_IDENTIFIER_TYPE_PREDICATE</td> <td><a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-URI:CAPS"><code class="literal">RAPTOR_TERM_TYPE_URI</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_IDENTIFIER_TYPE_RESOURCE</td> <td><a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-URI:CAPS"><code class="literal">RAPTOR_TERM_TYPE_URI</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_IDENTIFIER_TYPE_UNKNOWN</td> <td><a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-UNKNOWN:CAPS"><code class="literal">RAPTOR_TERM_TYPE_UNKNOWN</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_IDENTIFIER_TYPE_XML_LITERAL</td> <td><a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-LITERAL:CAPS"><code class="literal">RAPTOR_TERM_TYPE_LITERAL</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_LIBXML_FLAGS_GENERIC_ERROR_SAVE</td> <td><a class="link" href="raptor2-section-world.html#RAPTOR-WORLD-FLAG-LIBXML-GENERIC-ERROR-SAVE:CAPS"><code class="literal">RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE</code></a></td> <td>Flag setting is done by <a href="raptor2-section-world.html#raptor-world-set-flag"><code class="function">raptor_world_set_flags</code></a>()</td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_LIBXML_FLAGS_STRUCTURED_ERROR_SAVE</td> <td><a class="link" href="raptor2-section-world.html#RAPTOR-WORLD-FLAG-LIBXML-STRUCTURED-ERROR-SAVE:CAPS"><code class="literal">RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE</code></a></td> <td>Flag setting is done by <a href="raptor2-section-world.html#raptor-world-set-flag"><code class="function">raptor_world_set_flags</code></a>()</td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_LOG_LEVEL_WARNING</td> <td><a class="link" href="raptor2-section-general.html#RAPTOR-LOG-LEVEL-WARN:CAPS"><code class="literal">RAPTOR_LOG_LEVEL_WARN</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_NTRIPLES_TERM_TYPE_BLANK_NODE</td> <td><a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-BLANK:CAPS"><code class="literal">RAPTOR_TERM_TYPE_BLANK</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_NTRIPLES_TERM_TYPE_LITERAL</td> <td><a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-LITERAL:CAPS"><code class="literal">RAPTOR_TERM_TYPE_LITERAL</code></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>RAPTOR_NTRIPLES_TERM_TYPE_URI_REF</td> <td><a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-URI:CAPS"><code class="literal">RAPTOR_TERM_TYPE_URI</code></a></td> <td> </td>
+ </tr>
+</tbody>
+</table>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="raptor2-changes-changed-1-4-21-to-2-0-0"></a>Changed functions and types</h3></div></div></div>
+<table border="1" id="idp11957968">
+<thead></thead>
+<tbody>
+<tr>
+ <th>1.4.21 function</th>
+ <th>2.0.0 function</th>
+ <th>Notes</th>
+ </tr>
+<tr valign="top">
+ <td>raptor_feature raptor_feature_from_uri(raptor_uri *uri)</td> <td>raptor_option <a class="link" href="raptor2-section-option.html#raptor-world-get-option-from-uri" title="raptor_world_get_option_from_uri ()"><code class="function">raptor_world_get_option_from_uri</code></a>(raptor_world* world, raptor_uri *uri)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_feature raptor_feature_from_uri_v2(raptor_world* world, raptor_uri *uri)</td> <td>raptor_option <a class="link" href="raptor2-section-option.html#raptor-world-get-option-from-uri" title="raptor_world_get_option_from_uri ()"><code class="function">raptor_world_get_option_from_uri</code></a>(raptor_world* world, raptor_uri *uri)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_features_enumerate(const raptor_feature feature, const char* *name, raptor_uri **uri, const char* *label)</td> <td>raptor_option_description* <a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description</code></a>(raptor_world* world, const raptor_domain domain, const raptor_option option)</td> <td>Call with domain = <a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-PARSER:CAPS"><code class="literal">RAPTOR_DOMAIN_PARSER</code></a>
+</td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_features_enumerate_v2(raptor_world* world, const raptor_feature feature, const char* *name, raptor_uri **uri, const char* *label)</td> <td>raptor_option_description* <a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description</code></a>(raptor_world* world, const raptor_domain domain, const raptor_option option)</td> <td>Call with domain = <a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-PARSER:CAPS"><code class="literal">RAPTOR_DOMAIN_PARSER</code></a>
+</td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_format_locator_v2(raptor_world* world, char* buffer, size_t length, raptor_locator* locator)</td> <td>int <a class="link" href="raptor2-section-locator.html#raptor-locator-format" title="raptor_locator_format ()"><code class="function">raptor_locator_format</code></a>(char* buffer, size_t length, raptor_locator* locator)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_free_uri_v2(raptor_world* world, raptor_uri *uri)</td> <td>void <a class="link" href="raptor2-section-uri.html#raptor-free-uri" title="raptor_free_uri ()"><code class="function">raptor_free_uri</code></a>(raptor_uri *uri)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_get_feature(raptor_parser *parser, raptor_feature feature)</td> <td>int <a class="link" href="raptor2-section-parser.html#raptor-parser-get-option" title="raptor_parser_get_option ()"><code class="function">raptor_parser_get_option</code></a>(raptor_parser *parser, raptor_option option, char** string_p, int* integer_p)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>const char* raptor_get_label(raptor_parser *rdf_parser)</td> <td>raptor_syntax_description* <a class="link" href="raptor2-section-parser.html#raptor-parser-get-description" title="raptor_parser_get_description ()"><code class="function">raptor_parser_get_description</code></a>(raptor_parser* rdf_parser)</td> <td>Use label field of returned description.</td>
+ </tr>
+<tr valign="top">
+ <td>const char* raptor_get_mime_type(raptor_parser *rdf_parser)</td> <td>raptor_syntax_description* <a class="link" href="raptor2-section-parser.html#raptor-parser-get-description" title="raptor_parser_get_description ()"><code class="function">raptor_parser_get_description</code></a>(raptor_parser* rdf_parser)</td> <td>Use the mime_types array field of returned <a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="type">raptor_syntax_description</span></a>
+</td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_get_need_base_uri(raptor_parser *rdf_parser)</td> <td>raptor_syntax_description* <a class="link" href="raptor2-section-parser.html#raptor-parser-get-description" title="raptor_parser_get_description ()"><code class="function">raptor_parser_get_description</code></a>(raptor_parser* rdf_parser)</td> <td>Use the <a class="link" href="raptor2-section-general.html#RAPTOR-SYNTAX-NEED-BASE-URI:CAPS"><code class="literal">RAPTOR_SYNTAX_NEED_BASE_URI</code></a> bitflag in the flags field of the returned <a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="type">raptor_syntax_description</span></a>
+</td>
+ </tr>
+<tr valign="top">
+ <td>const char* raptor_guess_parser_name(raptor_uri *uri, const char* mime_type, const unsigned char* buffer, size_t len, const unsigned char* identifier)</td> <td>const char* <a class="link" href="raptor2-section-world.html#raptor-world-guess-parser-name" title="raptor_world_guess_parser_name ()"><code class="function">raptor_world_guess_parser_name</code></a>(raptor_world* world, raptor_uri *uri, const char* mime_type, const unsigned char* buffer, size_t len, const unsigned char* identifier)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_format_hexadecimal(raptor_iostream* iostr, unsigned int integer, int width)</td> <td>int <a class="link" href="raptor2-section-iostream.html#raptor-iostream-hexadecimal-write" title="raptor_iostream_hexadecimal_write ()"><code class="function">raptor_iostream_hexadecimal_write</code></a>(unsigned int integer, int width, raptor_iostream* iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_read_bytes(raptor_iostream* iostr, void *ptr, size_t size, size_t nmemb)</td> <td>int <a class="link" href="raptor2-section-iostream.html#raptor-iostream-read-bytes" title="raptor_iostream_read_bytes ()"><code class="function">raptor_iostream_read_bytes</code></a>(void *ptr, size_t size, size_t nmemb, raptor_iostream* iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_byte(raptor_iostream *iostr, const int byte)</td> <td>int <a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-byte" title="raptor_iostream_write_byte ()"><code class="function">raptor_iostream_write_byte</code></a>(const int byte, raptor_iostream *iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_bytes(raptor_iostream *iostr, const void *ptr, size_t size, size_t nmemb)</td> <td>int <a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-bytes" title="raptor_iostream_write_bytes ()"><code class="function">raptor_iostream_write_bytes</code></a>(const void *ptr, size_t size, size_t nmemb, raptor_iostream *iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_counted_string(raptor_iostream *iostr, const void *string, size_t len)</td> <td>int <a class="link" href="raptor2-section-iostream.html#raptor-iostream-counted-string-write" title="raptor_iostream_counted_string_write ()"><code class="function">raptor_iostream_counted_string_write</code></a>(const void *string, size_t len, raptor_iostream *iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_decimal(raptor_iostream* iostr, int integer)</td> <td>int <a class="link" href="raptor2-section-iostream.html#raptor-iostream-decimal-write" title="raptor_iostream_decimal_write ()"><code class="function">raptor_iostream_decimal_write</code></a>(int integer, raptor_iostream* iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_iostream_write_end(raptor_iostream *iostr)</td> <td>int <a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-end" title="raptor_iostream_write_end ()"><code class="function">raptor_iostream_write_end</code></a>(raptor_iostream *iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_namespace(raptor_iostream* iostr, raptor_namespace *ns)</td> <td>int <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-write" title="raptor_namespace_write ()"><code class="function">raptor_namespace_write</code></a>(raptor_namespace *ns, raptor_iostream* iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_qname(raptor_iostream* iostr, raptor_qname *qname)</td> <td>int <a class="link" href="raptor2-section-xml-qname.html#raptor-qname-write" title="raptor_qname_write ()"><code class="function">raptor_qname_write</code></a>(raptor_qname *qname, raptor_iostream* iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_iostream_write_statement_ntriples(raptor_iostream* iostr, const raptor_statement *statement)</td> <td>int <a class="link" href="raptor2-section-triples.html#raptor-statement-ntriples-write" title="raptor_statement_ntriples_write ()"><code class="function">raptor_statement_ntriples_write</code></a>(const raptor_statement *statement, raptor_iostream* iostr, int write_graph_term)</td> <td>Gains extra flag arg to decide whether to write any graph term.</td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_string(raptor_iostream *iostr, const void *string)</td> <td>int <a class="link" href="raptor2-section-iostream.html#raptor-iostream-string-write" title="raptor_iostream_string_write ()"><code class="function">raptor_iostream_string_write</code></a>(const void *string, raptor_iostream *iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_string_ntriples(raptor_iostream *iostr, const unsigned char* string, size_t len, const char delim)</td> <td>int <a class="link" href="raptor2-section-iostream.html#raptor-string-ntriples-write" title="raptor_string_ntriples_write ()"><code class="function">raptor_string_ntriples_write</code></a>(const unsigned char* string, size_t len, const char delim, raptor_iostream *iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_string_python(raptor_iostream *iostr, const unsigned char* string, size_t len, const char delim, int flags)</td> <td>int <a class="link" href="raptor2-section-iostream.html#raptor-string-python-write" title="raptor_string_python_write ()"><code class="function">raptor_string_python_write</code></a>(const unsigned char* string, size_t len, const char delim, int flags, raptor_iostream *iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_stringbuffer(raptor_iostream* iostr, raptor_stringbuffer *sb)</td> <td>int <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-write" title="raptor_stringbuffer_write ()"><code class="function">raptor_stringbuffer_write</code></a>(raptor_stringbuffer *sb, raptor_iostream* iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_uri(raptor_iostream *iostr, raptor_uri *uri)</td> <td>int <a class="link" href="raptor2-section-uri.html#raptor-uri-write" title="raptor_uri_write ()"><code class="function">raptor_uri_write</code></a>(raptor_uri *uri, raptor_iostream *iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_uri_v2(raptor_world* world, raptor_iostream *iostr, raptor_uri *uri)</td> <td>int <a class="link" href="raptor2-section-uri.html#raptor-uri-write" title="raptor_uri_write ()"><code class="function">raptor_uri_write</code></a>(raptor_uri *uri, raptor_iostream *iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_xml_any_escaped_string(raptor_iostream* iostr, const unsigned char* string, size_t len, char quote, int xml_version, raptor_simple_message_handler error_handler, void *error_data)</td> <td>int <a class="link" href="raptor2-section-xml.html#raptor-xml-escape-string-any-write" title="raptor_xml_escape_string_any_write ()"><code class="function">raptor_xml_escape_string_any_write</code></a>(const unsigned char* string, size_t len, char quote, int xml_version, raptor_iostream* iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_xml_element(raptor_iostream *iostr, raptor_xml_element *element, raptor_namespace_stack *nstack, int is_empty, int is_end, raptor_simple_message_handler error_handler, void *error_data, int depth)</td> <td>int <a class="link" href="raptor2-section-xml.html#raptor-xml-element-write" title="raptor_xml_element_write ()"><code class="function">raptor_xml_element_write</code></a>(raptor_xml_element *element, raptor_namespace_stack *nstack, int is_empty, int is_end, int depth, raptor_iostream *iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_iostream_write_xml_escaped_string(raptor_iostream* iostr, const unsigned char* string, size_t len, char quote, raptor_simple_message_handler error_handler, void *error_data)</td> <td>int <a class="link" href="raptor2-section-xml.html#raptor-xml-escape-string-write" title="raptor_xml_escape_string_write ()"><code class="function">raptor_xml_escape_string_write</code></a>(const unsigned char* string, size_t len, char quote, raptor_iostream* iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>const char* raptor_locator_uri_v2(raptor_world* world, raptor_locator *locator)</td> <td>const char* <a class="link" href="raptor2-section-locator.html#raptor-locator-uri" title="raptor_locator_uri ()"><code class="function">raptor_locator_uri</code></a>(raptor_locator *locator)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_namespaces_init(raptor_namespace_stack *nstack, const raptor_uri_handler *uri_handler, void *uri_context, raptor_simple_message_handler error_handler, void *error_data, int defaults)</td> <td>int <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-init" title="raptor_namespaces_init ()"><code class="function">raptor_namespaces_init</code></a>(raptor_world* world, raptor_namespace_stack *nstack, int defaults)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_namespaces_init_v2(raptor_world* world, raptor_namespace_stack *nstack, raptor_simple_message_handler error_handler, void *error_data, int defaults)</td> <td>int <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-init" title="raptor_namespaces_init ()"><code class="function">raptor_namespaces_init</code></a>(raptor_world* world, raptor_namespace_stack *nstack, int defaults)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_iostream* raptor_new_iostream_from_file_handle(FILE *handle)</td> <td>raptor_iostream* <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-from-file-handle" title="raptor_new_iostream_from_file_handle ()"><code class="function">raptor_new_iostream_from_file_handle</code></a>(raptor_world* world, FILE *handle)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_iostream* raptor_new_iostream_from_filename(const char* filename)</td> <td>raptor_iostream* <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-from-filename" title="raptor_new_iostream_from_filename ()"><code class="function">raptor_new_iostream_from_filename</code></a>(raptor_world* world, const char* filename)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_iostream* raptor_new_iostream_from_handler(void *context, const raptor_iostream_handler *handler)</td> <td>raptor_iostream* <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-from-handler" title="raptor_new_iostream_from_handler ()"><code class="function">raptor_new_iostream_from_handler</code></a>(raptor_world* world, void *user_data, const raptor_iostream_handler* const handler)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_iostream* raptor_new_iostream_from_handler2(void *user_data, const raptor_iostream_handler2* const handler2)</td> <td>raptor_iostream* <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-from-handler" title="raptor_new_iostream_from_handler ()"><code class="function">raptor_new_iostream_from_handler</code></a>(raptor_world* world, void *user_data, const raptor_iostream_handler* const handler)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_iostream* raptor_new_iostream_from_sink(void)</td> <td>raptor_iostream* <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-from-sink" title="raptor_new_iostream_from_sink ()"><code class="function">raptor_new_iostream_from_sink</code></a>(raptor_world* world)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_iostream* raptor_new_iostream_from_string(void *string, size_t length)</td> <td>raptor_iostream* <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-from-string" title="raptor_new_iostream_from_string ()"><code class="function">raptor_new_iostream_from_string</code></a>(raptor_world* world, void *string, size_t length)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_iostream* raptor_new_iostream_to_file_handle(FILE *handle)</td> <td>raptor_iostream* <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-to-file-handle" title="raptor_new_iostream_to_file_handle ()"><code class="function">raptor_new_iostream_to_file_handle</code></a>(raptor_world* world, FILE *handle)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_iostream* raptor_new_iostream_to_filename(const char* filename)</td> <td>raptor_iostream* <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-to-filename" title="raptor_new_iostream_to_filename ()"><code class="function">raptor_new_iostream_to_filename</code></a>(raptor_world* world, const char* filename)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_iostream* raptor_new_iostream_to_sink(void)</td> <td>raptor_iostream* <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-to-sink" title="raptor_new_iostream_to_sink ()"><code class="function">raptor_new_iostream_to_sink</code></a>(raptor_world* world)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_iostream* raptor_new_iostream_to_string(void **string_p, size_t *length_p, void *(*malloc_handler)(size_t size))</td> <td>raptor_iostream* <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-to-string" title="raptor_new_iostream_to_string ()"><code class="function">raptor_new_iostream_to_string</code></a>(raptor_world* world, void **string_p, size_t *length_p, void *(*malloc_handler)(size_t size))</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_namespace_stack* raptor_new_namespaces(const raptor_uri_handler *uri_handler, void *uri_context, raptor_simple_message_handler error_handler, void *error_data, int defaults)</td> <td>raptor_namespace_stack* <a class="link" href="raptor2-section-xml-namespace.html#raptor-new-namespaces" title="raptor_new_namespaces ()"><code class="function">raptor_new_namespaces</code></a>(raptor_world* world, int defaults)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_namespace_stack* raptor_new_namespaces_v2(raptor_world* world, raptor_simple_message_handler error_handler, void *error_data, int defaults)</td> <td>raptor_namespace_stack* <a class="link" href="raptor2-section-xml-namespace.html#raptor-new-namespaces" title="raptor_new_namespaces ()"><code class="function">raptor_new_namespaces</code></a>(raptor_world* world, int defaults)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_parser* raptor_new_parser(const char* name)</td> <td>raptor_parser* <a class="link" href="raptor2-section-parser.html#raptor-new-parser" title="raptor_new_parser ()"><code class="function">raptor_new_parser</code></a>(raptor_world* world, const char* name)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_parser* raptor_new_parser_for_content(raptor_uri *uri, const char* mime_type, const unsigned char* buffer, size_t len, const unsigned char* identifier)</td> <td>raptor_parser* <a class="link" href="raptor2-section-parser.html#raptor-new-parser-for-content" title="raptor_new_parser_for_content ()"><code class="function">raptor_new_parser_for_content</code></a>(raptor_world* world, raptor_uri *uri, const char* mime_type, const unsigned char* buffer, size_t len, const unsigned char* identifier)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_qname* raptor_new_qname(raptor_namespace_stack *nstack, const unsigned char* name, const unsigned char* value, raptor_simple_message_handler error_handler, void *error_data)</td> <td>raptor_qname* <a class="link" href="raptor2-section-xml-qname.html#raptor-new-qname" title="raptor_new_qname ()"><code class="function">raptor_new_qname</code></a>(raptor_namespace_stack *nstack, const unsigned char* name, const unsigned char* value)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_qname* raptor_new_qname_from_namespace_local_name(raptor_namespace *ns, const unsigned char* local_name, const unsigned char* value)</td> <td>raptor_qname* <a class="link" href="raptor2-section-xml-qname.html#raptor-new-qname-from-namespace-local-name" title="raptor_new_qname_from_namespace_local_name ()"><code class="function">raptor_new_qname_from_namespace_local_name</code></a>(raptor_world* world, raptor_namespace *ns, const unsigned char* local_name, const unsigned char* value)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_sax2* raptor_new_sax2(void *user_data, raptor_error_handlers* error_handlers)</td> <td>raptor_sax2* <a class="link" href="raptor2-section-sax2.html#raptor-new-sax2" title="raptor_new_sax2 ()"><code class="function">raptor_new_sax2</code></a>(raptor_world *world, raptor_locator *locator, void* user_data)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_sequence* raptor_new_sequence(raptor_sequence_free_handler* free_handler, raptor_sequence_print_handler* print_handler)</td> <td>raptor_sequence* <a class="link" href="raptor2-section-sequence.html#raptor-new-sequence" title="raptor_new_sequence ()"><code class="function">raptor_new_sequence</code></a>(raptor_data_free_handler free_handler, raptor_data_print_handler print_handler)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_sequence* raptor_new_sequence_v2(raptor_sequence_free_handler_v2* free_handler, raptor_sequence_print_handler_v2* print_handler, void* handler_context)</td> <td>raptor_sequence* <a class="link" href="raptor2-section-sequence.html#raptor-new-sequence" title="raptor_new_sequence ()"><code class="function">raptor_new_sequence</code></a>(raptor_data_free_handler free_handler, raptor_data_print_handler print_handler)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_serializer* raptor_new_serializer(const char* name)</td> <td>raptor_serializer* <a class="link" href="raptor2-section-serializer.html#raptor-new-serializer" title="raptor_new_serializer ()"><code class="function">raptor_new_serializer</code></a>(raptor_world* world, const char* name)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_uri* raptor_new_uri(const unsigned char* uri_string)</td> <td>raptor_uri* <a class="link" href="raptor2-section-uri.html#raptor-new-uri" title="raptor_new_uri ()"><code class="function">raptor_new_uri</code></a>(raptor_world* world, const unsigned char* uri_string)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_uri* raptor_new_uri_for_rdf_concept(const char* name)</td> <td>raptor_uri* <a class="link" href="raptor2-section-uri.html#raptor-new-uri-for-rdf-concept" title="raptor_new_uri_for_rdf_concept ()"><code class="function">raptor_new_uri_for_rdf_concept</code></a>(raptor_world* world, const unsigned char* name)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_uri* raptor_new_uri_for_rdf_concept_v2(raptor_world* world, const char* name)</td> <td>raptor_uri* <a class="link" href="raptor2-section-uri.html#raptor-new-uri-for-rdf-concept" title="raptor_new_uri_for_rdf_concept ()"><code class="function">raptor_new_uri_for_rdf_concept</code></a>(raptor_world* world, const unsigned char* name)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_uri* raptor_new_uri_for_retrieval_v2(raptor_world* world, raptor_uri* old_uri)</td> <td>raptor_uri* <a class="link" href="raptor2-section-uri.html#raptor-new-uri-for-retrieval" title="raptor_new_uri_for_retrieval ()"><code class="function">raptor_new_uri_for_retrieval</code></a>(raptor_uri* old_uri)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_uri* raptor_new_uri_for_xmlbase_v2(raptor_world* world, raptor_uri* old_uri)</td> <td>raptor_uri* <a class="link" href="raptor2-section-uri.html#raptor-new-uri-for-xmlbase" title="raptor_new_uri_for_xmlbase ()"><code class="function">raptor_new_uri_for_xmlbase</code></a>(raptor_uri* old_uri)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_uri* raptor_new_uri_from_id(raptor_uri *base_uri, const unsigned char* id)</td> <td>raptor_uri* <a class="link" href="raptor2-section-uri.html#raptor-new-uri-from-id" title="raptor_new_uri_from_id ()"><code class="function">raptor_new_uri_from_id</code></a>(raptor_world* world, raptor_uri *base_uri, const unsigned char* id)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_uri* raptor_new_uri_from_uri_local_name(raptor_uri *uri, const unsigned char* local_name)</td> <td>raptor_uri* <a class="link" href="raptor2-section-uri.html#raptor-new-uri-from-uri-local-name" title="raptor_new_uri_from_uri_local_name ()"><code class="function">raptor_new_uri_from_uri_local_name</code></a>(raptor_world* world, raptor_uri *uri, const unsigned char* local_name)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_uri* raptor_new_uri_relative_to_base(raptor_uri *base_uri, const unsigned char* uri_string)</td> <td>raptor_uri* <a class="link" href="raptor2-section-uri.html#raptor-new-uri-relative-to-base" title="raptor_new_uri_relative_to_base ()"><code class="function">raptor_new_uri_relative_to_base</code></a>(raptor_world* world, raptor_uri *base_uri, const unsigned char* uri_string)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_xml_writer* raptor_new_xml_writer(raptor_namespace_stack *nstack, const raptor_uri_handler *uri_handler, void *uri_context, raptor_iostream* iostr, raptor_simple_message_handler error_handler, void *error_data, int canonicalize)</td> <td>raptor_xml_writer* <a class="link" href="raptor2-section-xml.html#raptor-new-xml-writer" title="raptor_new_xml_writer ()"><code class="function">raptor_new_xml_writer</code></a>(raptor_world* world, raptor_namespace_stack *nstack, raptor_iostream* iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_xml_writer* raptor_new_xml_writer_v2(raptor_world* world, raptor_namespace_stack *nstack, raptor_iostream* iostr, raptor_simple_message_handler error_handler, void *error_data, int canonicalize)</td> <td>raptor_xml_writer* <a class="link" href="raptor2-section-xml.html#raptor-new-xml-writer" title="raptor_new_xml_writer ()"><code class="function">raptor_new_xml_writer</code></a>(raptor_world* world, raptor_namespace_stack *nstack, raptor_iostream* iostr)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>const unsigned char* raptor_parser_get_feature_string(raptor_parser *parser, raptor_feature feature)</td> <td>const unsigned char* <a class="link" href="raptor2-section-parser.html#raptor-parser-get-option" title="raptor_parser_get_option ()"><code class="function">raptor_parser_get_option</code></a>(raptor_parser *parser, raptor_option option, char** string_p, int* integer_p)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_parser_set_feature_string(raptor_parser *parser, raptor_feature feature, const unsigned char* value)</td> <td>int <a class="link" href="raptor2-section-parser.html#raptor-parser-set-option" title="raptor_parser_set_option ()"><code class="function">raptor_parser_set_option</code></a>(raptor_parser *parser, raptor_option option, char* string, int integer)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_parsers_enumerate(const unsigned int counter, const char* *name, const char* *label)</td> <td>raptor_syntax_description* <a class="link" href="raptor2-section-world.html#raptor-world-get-parser-description" title="raptor_world_get_parser_description ()"><code class="function">raptor_world_get_parser_description</code></a>(raptor_world* world, unsigned int counter)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_parsers_enumerate_v2(raptor_world* world, const unsigned int counter, const char* *name, const char* *label)</td> <td>raptor_syntax_description* <a class="link" href="raptor2-section-world.html#raptor-world-get-parser-description" title="raptor_world_get_parser_description ()"><code class="function">raptor_world_get_parser_description</code></a>(raptor_world* world, const unsigned int counter)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_print_locator(FILE *stream, raptor_locator* locator)</td> <td>int <a class="link" href="raptor2-section-locator.html#raptor-locator-print" title="raptor_locator_print ()"><code class="function">raptor_locator_print</code></a>(raptor_locator* locator, FILE *stream)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_print_locator_v2(raptor_world* world, FILE *stream, raptor_locator* locator)</td> <td>void <a class="link" href="raptor2-section-locator.html#raptor-locator-print" title="raptor_locator_print ()"><code class="function">raptor_locator_print</code></a>(raptor_locator* locator, FILE *stream)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_print_statement(const raptor_statement * statement, FILE *stream)</td> <td>int <a class="link" href="raptor2-section-triples.html#raptor-statement-print" title="raptor_statement_print ()"><code class="function">raptor_statement_print</code></a>(const raptor_statement * statement, FILE *stream)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_print_statement_as_ntriples(const raptor_statement * statement, FILE *stream)</td> <td>int <a class="link" href="raptor2-section-triples.html#raptor-statement-print-as-ntriples" title="raptor_statement_print_as_ntriples ()"><code class="function">raptor_statement_print_as_ntriples</code></a>(const raptor_statement * statement, FILE *stream)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_print_statement_as_ntriples_v2(const raptor_statement_v2 * statement, FILE *stream)</td> <td>int <a class="link" href="raptor2-section-triples.html#raptor-statement-print-as-ntriples" title="raptor_statement_print_as_ntriples ()"><code class="function">raptor_statement_print_as_ntriples</code></a>(const raptor_statement * statement, FILE *stream)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_print_statement_v2(const raptor_statement_v2 * statement, FILE *stream)</td> <td>int <a class="link" href="raptor2-section-triples.html#raptor-statement-print" title="raptor_statement_print ()"><code class="function">raptor_statement_print</code></a>(const raptor_statement * statement, FILE *stream)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_uri* raptor_qname_string_to_uri(raptor_namespace_stack *nstack, const unsigned char* name, size_t name_len, raptor_simple_message_handler error_handler, void *error_data)</td> <td>raptor_uri* <a class="link" href="raptor2-section-xml-qname.html#raptor-qname-string-to-uri" title="raptor_qname_string_to_uri ()"><code class="function">raptor_qname_string_to_uri</code></a>(raptor_namespace_stack *nstack, const unsigned char* name, size_t name_len)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_sequence_print(raptor_sequence* seq, FILE* fh)</td> <td>int <a class="link" href="raptor2-section-sequence.html#raptor-sequence-print" title="raptor_sequence_print ()"><code class="function">raptor_sequence_print</code></a>(raptor_sequence* seq, FILE* fh)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_sequence_sort(raptor_sequence* seq, int(*compare)(const void *, const void *))</td> <td>void <a class="link" href="raptor2-section-sequence.html#raptor-sequence-sort" title="raptor_sequence_sort ()"><code class="function">raptor_sequence_sort</code></a>(raptor_sequence* seq, raptor_data_compare_handler compare)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_serialize_statement(raptor_serializer* rdf_serializer, const raptor_statement *statement)</td> <td>int <a class="link" href="raptor2-section-serializer.html#raptor-serializer-serialize-statement" title="raptor_serializer_serialize_statement ()"><code class="function">raptor_serializer_serialize_statement</code></a>(raptor_serializer* rdf_serializer, raptor_statement *statement)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_serializer_features_enumerate(const raptor_feature feature, const char* *name, raptor_uri **uri, const char* *label)</td> <td>raptor_option_description* <a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description</code></a>(raptor_world* world, const raptor_domain domain, const raptor_option option)</td> <td>Call with domain = <a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-SERIALIZER:CAPS"><code class="literal">RAPTOR_DOMAIN_SERIALIZER</code></a>
+</td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_serializer_features_enumerate_v2(raptor_world* world, const raptor_feature feature, const char* *name, raptor_uri **uri, const char* *label)</td> <td>raptor_option_description* <a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description</code></a>(raptor_world* world, const raptor_domain domain, const raptor_option option)</td> <td>Call with domain = <a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-SERIALIZER:CAPS"><code class="literal">RAPTOR_DOMAIN_SERIALIZER</code></a>
+</td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_serializer_get_feature(raptor_serializer *serializer, raptor_feature feature)</td> <td>int <a class="link" href="raptor2-section-serializer.html#raptor-serializer-get-option" title="raptor_serializer_get_option ()"><code class="function">raptor_serializer_get_option</code></a>(raptor_serializer *serializer, raptor_option option)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>const unsigned char* raptor_serializer_get_feature_string(raptor_serializer *serializer, raptor_feature feature)</td> <td>int <a class="link" href="raptor2-section-serializer.html#raptor-serializer-get-option" title="raptor_serializer_get_option ()"><code class="function">raptor_serializer_get_option</code></a>(raptor_serializer *serializer, raptor_option option, char** string_p, int* integer_p)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_serializer_set_feature(raptor_serializer *serializer, raptor_feature feature, int value)</td> <td>int <a class="link" href="raptor2-section-serializer.html#raptor-serializer-set-option" title="raptor_serializer_set_option ()"><code class="function">raptor_serializer_set_option</code></a>(raptor_serializer *serializer, raptor_option option, char* string, int integer)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_serializer_set_feature_string(raptor_serializer *serializer, raptor_feature feature, const unsigned char* value)</td> <td>int <a class="link" href="raptor2-section-serializer.html#raptor-serializer-set-option" title="raptor_serializer_set_option ()"><code class="function">raptor_serializer_set_option</code></a>(raptor_serializer *serializer, raptor_option option, char* string, int integer)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_serializer_syntax_name_check(const char* name)</td> <td>int <a class="link" href="raptor2-section-world.html#raptor-world-is-serializer-name" title="raptor_world_is_serializer_name ()"><code class="function">raptor_world_is_serializer_name</code></a>(raptor_world* world, const char* name)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_serializers_enumerate(const unsigned int counter, const char* *name, const char* *label, const char* *mime_type, const unsigned char* *uri_string)</td> <td>const raptor_syntax_description* <a class="link" href="raptor2-section-world.html#raptor-world-get-serializer-description" title="raptor_world_get_serializer_description ()"><code class="function">raptor_world_get_serializer_description</code></a>(raptor_world* world, unsigned int counter)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_serializers_enumerate_v2(raptor_world* world, const unsigned int counter, const char* *name, const char* *label, const char* *mime_type, const unsigned char* *uri_string)</td> <td>const raptor_syntax_description* <a class="link" href="raptor2-section-world.html#raptor-world-get-serializer-description" title="raptor_world_get_serializer_description ()"><code class="function">raptor_world_get_serializer_description</code></a>(raptor_world* world, const unsigned int counter)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_set_default_generate_id_parameters(raptor_parser* rdf_parser, char* prefix, int base)</td> <td>void <a class="link" href="raptor2-section-world.html#raptor-world-set-generate-bnodeid-parameters" title="raptor_world_set_generate_bnodeid_parameters ()"><code class="function">raptor_world_set_generate_bnodeid_parameters</code></a>(raptor_world* world, char* prefix, int base)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_set_feature(raptor_parser *parser, raptor_feature feature, int value)</td> <td>int <a class="link" href="raptor2-section-parser.html#raptor-parser-set-option" title="raptor_parser_set_option ()"><code class="function">raptor_parser_set_option</code></a>(raptor_parser *parser, raptor_option option, char* string, int integer)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_set_generate_id_handler(raptor_parser* parser, void *user_data, raptor_generate_id_handler handler)</td> <td>void <a class="link" href="raptor2-section-world.html#raptor-world-set-generate-bnodeid-handler" title="raptor_world_set_generate_bnodeid_handler ()"><code class="function">raptor_world_set_generate_bnodeid_handler</code></a>(raptor_world* world, void *user_data, raptor_generate_bnodeid_handler handler)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_set_graph_handler(raptor_parser* parser, void *user_data, raptor_graph_handler handler)</td> <td>void <a class="link" href="raptor2-section-parser.html#raptor-parser-set-graph-mark-handler" title="raptor_parser_set_graph_mark_handler ()"><code class="function">raptor_parser_set_graph_mark_handler</code></a>(raptor_parser* parser, void *user_data, raptor_graph_mark_handler handler)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_set_libxslt_security_preferences(void *security_preferences)</td> <td>int <a class="link" href="raptor2-section-world.html#raptor-world-set-libxslt-security-preferences" title="raptor_world_set_libxslt_security_preferences ()"><code class="function">raptor_world_set_libxslt_security_preferences</code></a>(raptor_world *world, void *security_preferences)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_statement_compare_v2(const raptor_statement_v2 *s1, const raptor_statement_v2 *s2)</td> <td>int <a class="link" href="raptor2-section-triples.html#raptor-statement-compare" title="raptor_statement_compare ()"><code class="function">raptor_statement_compare</code></a>(const raptor_statement *s1, const raptor_statement *s2)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_syntax_name_check(const char* name)</td> <td>int <a class="link" href="raptor2-section-world.html#raptor-world-is-parser-name" title="raptor_world_is_parser_name ()"><code class="function">raptor_world_is_parser_name</code></a>(raptor_world* world, const char *name)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_syntax_name_check_v2(raptor_world* world, const char* name)</td> <td>int <a class="link" href="raptor2-section-world.html#raptor-world-is-parser-name" title="raptor_world_is_parser_name ()"><code class="function">raptor_world_is_parser_name</code></a>(raptor_world* world, const char *name)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_syntaxes_enumerate(const unsigned int counter, const char* *name, const char* *label, const char* *mime_type, const unsigned char* *uri_string)</td> <td>raptor_syntax_description* <a class="link" href="raptor2-section-world.html#raptor-world-get-parser-description" title="raptor_world_get_parser_description ()"><code class="function">raptor_world_get_parser_description</code></a>(raptor_world* world, const unsigned int counter)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_syntaxes_enumerate_v2(raptor_world* world, const unsigned int counter, const char* *name, const char* *label, const char* *mime_type, const unsigned char* *uri_string)</td> <td>raptor_syntax_description* <a class="link" href="raptor2-section-world.html#raptor-world-get-parser-description" title="raptor_world_get_parser_description ()"><code class="function">raptor_world_get_parser_description</code></a>(raptor_world* world, const unsigned int counter)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_unicode_char_to_utf8(raptor_unichar c, unsigned char* output)</td> <td>int <a class="link" href="raptor2-section-unicode.html#raptor-unicode-utf8-string-put-char" title="raptor_unicode_utf8_string_put_char ()"><code class="function">raptor_unicode_utf8_string_put_char</code></a>(raptor_unichar c, unsigned char* output, size_t length)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>unsigned char* raptor_uri_as_counted_string_v2(raptor_world* world, raptor_uri *uri, size_t* len_p)</td> <td>unsigned char* <a class="link" href="raptor2-section-uri.html#raptor-uri-as-counted-string" title="raptor_uri_as_counted_string ()"><code class="function">raptor_uri_as_counted_string</code></a>(raptor_uri *uri, size_t* len_p)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>unsigned char* raptor_uri_as_string_v2(raptor_world* world, raptor_uri *uri)</td> <td>unsigned char* <a class="link" href="raptor2-section-uri.html#raptor-uri-as-string" title="raptor_uri_as_string ()"><code class="function">raptor_uri_as_string</code></a>(raptor_uri *uri)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_uri_compare_v2(raptor_world* world, raptor_uri* uri1, raptor_uri* uri2)</td> <td>int <a class="link" href="raptor2-section-uri.html#raptor-uri-compare" title="raptor_uri_compare ()"><code class="function">raptor_uri_compare</code></a>(raptor_uri* uri1, raptor_uri* uri2)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_uri* raptor_uri_copy_v2(raptor_world* world, raptor_uri *uri)</td> <td>raptor_uri* <a class="link" href="raptor2-section-uri.html#raptor-uri-copy" title="raptor_uri_copy ()"><code class="function">raptor_uri_copy</code></a>(raptor_uri *uri)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_uri_equals_v2(raptor_world* world, raptor_uri* uri1, raptor_uri* uri2)</td> <td>int <a class="link" href="raptor2-section-uri.html#raptor-uri-equals" title="raptor_uri_equals ()"><code class="function">raptor_uri_equals</code></a>(raptor_uri* uri1, raptor_uri* uri2)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_uri_print(const raptor_uri* uri, FILE *stream)</td> <td>int <a class="link" href="raptor2-section-uri.html#raptor-uri-print" title="raptor_uri_print ()"><code class="function">raptor_uri_print</code></a>(const raptor_uri* uri, FILE *stream)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_uri_print_v2(raptor_world* world, const raptor_uri* uri, FILE *stream)</td> <td>int <a class="link" href="raptor2-section-uri.html#raptor-uri-print" title="raptor_uri_print ()"><code class="function">raptor_uri_print</code></a>(const raptor_uri* uri, FILE *stream)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_uri_resolve_uri_reference(const unsigned char* base_uri, const unsigned char* reference_uri, unsigned char* buffer, size_t length)</td> <td>size_t <a class="link" href="raptor2-section-uri.html#raptor-uri-resolve-uri-reference" title="raptor_uri_resolve_uri_reference ()"><code class="function">raptor_uri_resolve_uri_reference</code></a>(const unsigned char* base_uri, const unsigned char* reference_uri, unsigned char* buffer, size_t length)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>unsigned char* raptor_uri_to_counted_string_v2(raptor_world* world, raptor_uri *uri, size_t *len_p)</td> <td>unsigned char* <a class="link" href="raptor2-section-uri.html#raptor-uri-to-counted-string" title="raptor_uri_to_counted_string ()"><code class="function">raptor_uri_to_counted_string</code></a>(raptor_uri *uri, size_t *len_p)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>unsigned char* raptor_uri_to_relative_counted_uri_string_v2(raptor_world* world, raptor_uri *base_uri, raptor_uri *reference_uri, size_t *length_p)</td> <td>unsigned char* <a class="link" href="raptor2-section-uri.html#raptor-uri-to-relative-counted-uri-string" title="raptor_uri_to_relative_counted_uri_string ()"><code class="function">raptor_uri_to_relative_counted_uri_string</code></a>(raptor_uri *base_uri, raptor_uri *reference_uri, size_t *length_p)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>unsigned char* raptor_uri_to_relative_uri_string_v2(raptor_world* world, raptor_uri *base_uri, raptor_uri *reference_uri)</td> <td>unsigned char* <a class="link" href="raptor2-section-uri.html#raptor-uri-to-relative-uri-string" title="raptor_uri_to_relative_uri_string ()"><code class="function">raptor_uri_to_relative_uri_string</code></a>(raptor_uri *base_uri, raptor_uri *reference_uri)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>unsigned char* raptor_uri_to_string_v2(raptor_world* world, raptor_uri *uri)</td> <td>unsigned char* <a class="link" href="raptor2-section-uri.html#raptor-uri-to-string" title="raptor_uri_to_string ()"><code class="function">raptor_uri_to_string</code></a>(raptor_uri *uri)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_utf8_to_unicode_char(raptor_unichar* output, const unsigned char* input, int length)</td> <td>int <a class="link" href="raptor2-section-unicode.html#raptor-unicode-utf8-string-get-char" title="raptor_unicode_utf8_string_get_char ()"><code class="function">raptor_unicode_utf8_string_get_char</code></a>(const unsigned char* input, size_t length, raptor_unichar* output)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_world_set_libxml_flags(raptor_world *world, int flags)</td> <td>int <a class="link" href="raptor2-section-world.html#raptor-world-set-flag" title="raptor_world_set_flag ()"><code class="function">raptor_world_set_flag</code></a>(raptor_world *world, raptor_world_flag flag, int value)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>void raptor_world_set_libxslt_security_preferences(raptor_world *world, void *security_preferences)</td> <td>int <a class="link" href="raptor2-section-world.html#raptor-world-set-libxslt-security-preferences" title="raptor_world_set_libxslt_security_preferences ()"><code class="function">raptor_world_set_libxslt_security_preferences</code></a>(raptor_world *world, void *security_preferences)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_www_fetch_to_string(raptor_www *www, raptor_uri *uri, void **string_p, size_t *length_p, void *(*malloc_handler)(size_t size))</td> <td>int <a class="link" href="raptor2-section-www.html#raptor-www-fetch-to-string" title="raptor_www_fetch_to_string ()"><code class="function">raptor_www_fetch_to_string</code></a>(raptor_www *www, raptor_uri *uri, void **string_p, size_t *length_p, raptor_data_malloc_handler const malloc_handler)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_www* raptor_www_new(void)</td> <td>raptor_www* <a class="link" href="raptor2-section-www.html#raptor-new-www" title="raptor_new_www ()"><code class="function">raptor_new_www</code></a>(raptor_world* world)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_www* raptor_www_new_with_connection(void* connection)</td> <td>raptor_www* <a class="link" href="raptor2-section-www.html#raptor-new-www-with-connection" title="raptor_new_www_with_connection ()"><code class="function">raptor_new_www_with_connection</code></a>(raptor_world* world, void* connection)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_xml_any_escape_string(const unsigned char* string, size_t len, unsigned char* buffer, size_t length, char quote, int xml_version, raptor_simple_message_handler error_handler, void *error_data)</td> <td>int <a class="link" href="raptor2-section-xml.html#raptor-xml-escape-string-any" title="raptor_xml_escape_string_any ()"><code class="function">raptor_xml_escape_string_any</code></a>(raptor_world* world, const unsigned char* string, size_t len, unsigned char* buffer, size_t length, char quote, int xml_version)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_xml_escape_string(const unsigned char* string, size_t len, unsigned char* buffer, size_t length, char quote, raptor_simple_message_handler error_handler, void *error_data)</td> <td>int <a class="link" href="raptor2-section-xml.html#raptor-xml-escape-string" title="raptor_xml_escape_string ()"><code class="function">raptor_xml_escape_string</code></a>(raptor_world *world, const unsigned char* string, size_t len, unsigned char* buffer, size_t length, char quote)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_xml_writer_features_enumerate(const raptor_feature feature, const char* *name, raptor_uri **uri, const char* *label)</td> <td>raptor_option_description* <a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description</code></a>(raptor_world* world, const raptor_domain domain, const raptor_option option)</td> <td>Call with domain = <a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-XML-WRITER:CAPS"><code class="literal">RAPTOR_DOMAIN_XML_WRITER</code></a>
+</td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_xml_writer_features_enumerate_v2(raptor_world* world, const raptor_feature feature, const char* *name, raptor_uri **uri, const char* *label)</td> <td>raptor_option_description* <a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description</code></a>(raptor_world* world, const raptor_domain domain, const raptor_option option)</td> <td>Call with domain = <a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-XML-WRITER:CAPS"><code class="literal">RAPTOR_DOMAIN_XML_WRITER</code></a>
+</td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_xml_writer_get_feature(raptor_xml_writer *xml_writer, raptor_feature feature)</td> <td>int <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-get-option" title="raptor_xml_writer_get_option ()"><code class="function">raptor_xml_writer_get_option</code></a>(raptor_xml_writer *xml_writer, raptor_option option, char** string_p, int* integer_p)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>const unsigned char* raptor_xml_writer_get_feature_string(raptor_xml_writer *xml_writer, raptor_feature feature)</td> <td>const unsigned char* <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-get-option" title="raptor_xml_writer_get_option ()"><code class="function">raptor_xml_writer_get_option</code></a>(raptor_xml_writer *xml_writer, raptor_option option, char** string_p, int* integer_p)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_xml_writer_set_feature(raptor_xml_writer *xml_writer, raptor_feature feature, int value)</td> <td>int <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-set-option" title="raptor_xml_writer_set_option ()"><code class="function">raptor_xml_writer_set_option</code></a>(raptor_xml_writer *xml_writer, raptor_option option, char* string, int integer)</td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>int raptor_xml_writer_set_feature_string(raptor_xml_writer *xml_writer, raptor_feature feature, const unsigned char* value)</td> <td>int <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-set-option" title="raptor_xml_writer_set_option ()"><code class="function">raptor_xml_writer_set_option</code></a>(raptor_xml_writer *xml_writer, raptor_option option, char* string, int integer)</td> <td> </td>
+ </tr>
+</tbody>
+</table>
+<table border="1" id="idp12276880">
+<thead></thead>
+<tbody>
+<tr>
+ <th>1.4.21 type</th>
+ <th>2.0.0 type</th>
+ <th>Notes</th>
+ </tr>
+<tr valign="top">
+ <td>raptor_feature</td> <td><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a></td> <td>And new option <a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-STRICT:CAPS"><code class="literal">RAPTOR_OPTION_STRICT</code></a> added.</td>
+ </tr>
+<tr valign="top">
+ <td>raptor_graph_handler</td> <td><a class="link" href="raptor2-section-parser.html#raptor-graph-mark-handler" title="raptor_graph_mark_handler ()"><span class="type">raptor_graph_mark_handler</span></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_identifier</td> <td><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a></td> <td>Fields changed to be simpler <a class="link" href="raptor2-section-triples.html#raptor-term-type" title="enum raptor_term_type"><span class="type">raptor_term_type</span></a> and <a class="link" href="raptor2-section-triples.html#raptor-term-value" title="raptor_term_value"><span class="type">raptor_term_value</span></a>
+</td>
+ </tr>
+<tr valign="top">
+ <td>raptor_identifier_type</td> <td><a class="link" href="raptor2-section-triples.html#raptor-term-type" title="enum raptor_term_type"><span class="type">raptor_term_type</span></a></td> <td>Removed several enum values to leave just URI, blank and literal types.</td>
+ </tr>
+<tr valign="top">
+ <td>raptor_iostream_handler2</td> <td><a class="link" href="raptor2-section-iostream.html#raptor-iostream-handler" title="raptor_iostream_handler"><span class="type">raptor_iostream_handler</span></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_iostream_write_end_func</td> <td><a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-end-func" title="raptor_iostream_write_end_func ()"><span class="type">raptor_iostream_write_end_func</span></a></td> <td>handler returns an int</td>
+ </tr>
+<tr valign="top">
+ <td>raptor_log_level</td> <td><a class="link" href="raptor2-section-general.html#raptor-log-level" title="enum raptor_log_level"><span class="type">raptor_log_level</span></a></td> <td>Added <a class="link" href="raptor2-section-general.html#RAPTOR-LOG-LEVEL-TRACE:CAPS"><code class="literal">RAPTOR_LOG_LEVEL_TRACE</code></a>, <a class="link" href="raptor2-section-general.html#RAPTOR-LOG-LEVEL-DEBUG:CAPS"><code class="literal">RAPTOR_LOG_LEVEL_DEBUG</code></a>, <a class="link" href="raptor2-section-general.html#RAPTOR-LOG-LEVEL-INFO:CAPS"><code class="literal">RAPTOR_LOG_LEVEL_INFO</code></a>. <a href="/usr/share/gtk-doc/html/raptor/raptor-section-general.html#RAPTOR-LOG-LEVEL-WARNING:CAPS"><code class="literal">RAPTOR_LOG_LEVEL_WARNING</code></a> renamed <a class="link" href="raptor2-section-general.html#RAPTOR-LOG-LEVEL-WARN:CAPS"><code class="literal">RAPTOR_LOG_LEVEL_WARN</code></a>
+</td>
+ </tr>
+<tr valign="top">
+ <td>raptor_sequence_free_function</td> <td><a class="link" href="raptor2-section-general.html#raptor-data-free-handler" title="raptor_data_free_handler ()"><span class="type">raptor_data_free_handler</span></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_sequence_free_handler_v2</td> <td><a class="link" href="raptor2-section-general.html#raptor-data-context-free-handler" title="raptor_data_context_free_handler ()"><span class="type">raptor_data_context_free_handler</span></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_sequence_print_handler</td> <td><a class="link" href="raptor2-section-general.html#raptor-data-print-handler" title="raptor_data_print_handler ()"><span class="type">raptor_data_print_handler</span></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_sequence_print_handler_v2</td> <td><a class="link" href="raptor2-section-general.html#raptor-data-context-print-handler" title="raptor_data_context_print_handler ()"><span class="type">raptor_data_context_print_handler</span></a></td> <td> </td>
+ </tr>
+<tr valign="top">
+ <td>raptor_simple_message_handler</td> <td><a class="link" href="raptor2-section-general.html#raptor-log-handler" title="raptor_log_handler ()"><span class="type">raptor_log_handler</span></a></td> <td>Replaced by generic raptor log mechanism. See <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler</code></a>()</td>
+ </tr>
+<tr valign="top">
+ <td>raptor_statement</td> <td><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a></td> <td>fields changed to use <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a>
+</td>
+ </tr>
+<tr valign="top">
+ <td>raptor_statement_handler</td> <td><a class="link" href="raptor2-section-general.html#raptor-statement-handler" title="raptor_statement_handler ()"><span class="type">raptor_statement_handler</span></a></td> <td>added const</td>
+ </tr>
+<tr valign="top">
+ <td>raptor_statement_v2</td> <td><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a></td> <td>Fields changed to be a 3 or 4 tuple of <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a>
+</td>
+ </tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-changes-2-0-3-to-2-0-4.html b/docs/html/raptor2-changes-2-0-3-to-2-0-4.html
new file mode 100644
index 0000000..b6c90e4
--- /dev/null
+++ b/docs/html/raptor2-changes-2-0-3-to-2-0-4.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Changes between raptor2 2.0.3 and 2.0.4</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor2-changes.html" title="API Changes">
+<link rel="prev" href="raptor2-changes-2-0-4-to-2-0-5.html" title="Changes between raptor2 2.0.4 and 2.0.5">
+<link rel="next" href="raptor2-changes-1-4-21-to-2-0-0.html" title="Changes between raptor2 1.4.21 and 2.0.0">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor2-changes-2-0-4-to-2-0-5.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor2-changes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-changes-1-4-21-to-2-0-0.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor2-changes-2-0-3-to-2-0-4"></a>Changes between raptor2 2.0.3 and 2.0.4</h2></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="raptor2-changes-new-2-0-3-to-2-0-4"></a>New functions, types and enums</h3></div></div></div>
+<div class="itemizedlist">
+<p class="title"><b>Functions</b></p>
+<ul class="itemizedlist" type="disc">
+<li class="listitem"><p>int <a class="link" href="raptor2-section-iostream.html#raptor-bnodeid-ntriples-write" title="raptor_bnodeid_ntriples_write ()"><code class="function">raptor_bnodeid_ntriples_write</code></a>(const unsigned char *bnodeid, size_t len, raptor_iostream *iostr) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-www.html#raptor-www-set-ssl-cert-options" title="raptor_www_set_ssl_cert_options ()"><code class="function">raptor_www_set_ssl_cert_options</code></a>(raptor_www* www, const char* cert_filename, const char* cert_type, const char* cert_passphrase) </p></li>
+</ul>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-changes-2-0-4-to-2-0-5.html b/docs/html/raptor2-changes-2-0-4-to-2-0-5.html
new file mode 100644
index 0000000..f3da01b
--- /dev/null
+++ b/docs/html/raptor2-changes-2-0-4-to-2-0-5.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Changes between raptor2 2.0.4 and 2.0.5</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor2-changes.html" title="API Changes">
+<link rel="prev" href="raptor2-changes-2-0-5-to-2-0-6.html" title="Changes between raptor2 2.0.5 and 2.0.6">
+<link rel="next" href="raptor2-changes-2-0-3-to-2-0-4.html" title="Changes between raptor2 2.0.3 and 2.0.4">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor2-changes-2-0-5-to-2-0-6.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor2-changes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-changes-2-0-3-to-2-0-4.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor2-changes-2-0-4-to-2-0-5"></a>Changes between raptor2 2.0.4 and 2.0.5</h2></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="raptor2-changes-new-2-0-4-to-2-0-5"></a>New functions, types and enums</h3></div></div></div>
+<div class="itemizedlist">
+<p class="title"><b>Functions</b></p>
+<ul class="itemizedlist" type="disc">
+<li class="listitem"><p>int <a class="link" href="raptor2-section-general.html#raptor-snprintf" title="raptor_snprintf ()"><code class="function">raptor_snprintf</code></a>(char *buffer, size_t size, const char *format, ...) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-unicode.html#raptor-unicode-utf8-strlen" title="raptor_unicode_utf8_strlen ()"><code class="function">raptor_unicode_utf8_strlen</code></a>(const unsigned char *string, size_t length) </p></li>
+<li class="listitem"><p>size_t <a class="link" href="raptor2-section-unicode.html#raptor-unicode-utf8-substr" title="raptor_unicode_utf8_substr ()"><code class="function">raptor_unicode_utf8_substr</code></a>(unsigned char* dest, size_t* dest_length_p, const unsigned char* src, size_t src_length, int startingLoc, int length) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-general.html#raptor-vasprintf" title="raptor_vasprintf ()"><code class="function">raptor_vasprintf</code></a>(char **ret, const char *format, va_list arguments) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-general.html#raptor-vsnprintf2" title="raptor_vsnprintf2 ()"><code class="function">raptor_vsnprintf2</code></a>(char *buffer, size_t size, const char *format, va_list arguments) - Deprecates <a class="link" href="raptor2-section-general.html#raptor-vsnprintf" title="raptor_vsnprintf ()"><code class="function">raptor_vsnprintf</code></a>()</p></li>
+</ul>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-changes-2-0-5-to-2-0-6.html b/docs/html/raptor2-changes-2-0-5-to-2-0-6.html
new file mode 100644
index 0000000..bed2677
--- /dev/null
+++ b/docs/html/raptor2-changes-2-0-5-to-2-0-6.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Changes between raptor2 2.0.5 and 2.0.6</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor2-changes.html" title="API Changes">
+<link rel="prev" href="raptor2-changes-2-0-6-to-2-0-7.html" title="Changes between raptor2 2.0.6 and 2.0.7">
+<link rel="next" href="raptor2-changes-2-0-4-to-2-0-5.html" title="Changes between raptor2 2.0.4 and 2.0.5">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor2-changes-2-0-6-to-2-0-7.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor2-changes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-changes-2-0-4-to-2-0-5.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor2-changes-2-0-5-to-2-0-6"></a>Changes between raptor2 2.0.5 and 2.0.6</h2></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="raptor2-changes-new-2-0-5-to-2-0-6"></a>New functions, types and enums</h3></div></div></div>
+<div class="itemizedlist">
+<p class="title"><b>Functions</b></p>
+<ul class="itemizedlist" type="disc">
+<li class="listitem"><p>int <a class="link" href="raptor2-section-sequence.html#raptor-sequence-next-permutation" title="raptor_sequence_next_permutation ()"><code class="function">raptor_sequence_next_permutation</code></a>(raptor_sequence *seq, raptor_data_compare_handler compare) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-sequence.html#raptor-sequence-reverse" title="raptor_sequence_reverse ()"><code class="function">raptor_sequence_reverse</code></a>(raptor_sequence* seq, int start_index, int length) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-sequence.html#raptor-sequence-swap" title="raptor_sequence_swap ()"><code class="function">raptor_sequence_swap</code></a>(raptor_sequence* seq, int i, int j) </p></li>
+</ul>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-changes-2-0-6-to-2-0-7.html b/docs/html/raptor2-changes-2-0-6-to-2-0-7.html
new file mode 100644
index 0000000..6f651d0
--- /dev/null
+++ b/docs/html/raptor2-changes-2-0-6-to-2-0-7.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Changes between raptor2 2.0.6 and 2.0.7</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor2-changes.html" title="API Changes">
+<link rel="prev" href="raptor2-changes-2-0-7-to-2-0-8.html" title="Changes between raptor2 2.0.7 and 2.0.8">
+<link rel="next" href="raptor2-changes-2-0-5-to-2-0-6.html" title="Changes between raptor2 2.0.5 and 2.0.6">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor2-changes-2-0-7-to-2-0-8.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor2-changes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-changes-2-0-5-to-2-0-6.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor2-changes-2-0-6-to-2-0-7"></a>Changes between raptor2 2.0.6 and 2.0.7</h2></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="raptor2-changes-new-2-0-6-to-2-0-7"></a>New functions, types and enums</h3></div></div></div>
+<div class="itemizedlist">
+<p class="title"><b>Functions</b></p>
+<ul class="itemizedlist" type="disc">
+<li class="listitem"><p>raptor_uri* <a class="link" href="raptor2-section-uri.html#raptor-new-uri-from-uri-or-file-string" title="raptor_new_uri_from_uri_or_file_string ()"><code class="function">raptor_new_uri_from_uri_or_file_string</code></a>(raptor_world* world, raptor_uri* base_uri, const unsigned char* uri_or_file_string) </p></li>
+<li class="listitem"><p>void <a class="link" href="raptor2-section-sax2.html#raptor-sax2-set-uri-filter" title="raptor_sax2_set_uri_filter ()"><code class="function">raptor_sax2_set_uri_filter</code></a>(raptor_sax2* sax2, raptor_uri_filter_func filter, void *user_data) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-uri.html#raptor-uri-file-exists" title="raptor_uri_file_exists ()"><code class="function">raptor_uri_file_exists</code></a>(raptor_uri* uri) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-uri.html#raptor-uri-filename-exists" title="raptor_uri_filename_exists ()"><code class="function">raptor_uri_filename_exists</code></a>(const unsigned char* path) </p></li>
+<li class="listitem"><p>char* <a class="link" href="raptor2-section-uri.html#raptor-uri-uri-string-to-counted-filename-fragment" title="raptor_uri_uri_string_to_counted_filename_fragment ()"><code class="function">raptor_uri_uri_string_to_counted_filename_fragment</code></a>(const unsigned char *uri_string, size_t* len_p, unsigned char **fragment_p, size_t* fragment_len_p) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-www.html#raptor-www-set-ssl-verify-options" title="raptor_www_set_ssl_verify_options ()"><code class="function">raptor_www_set_ssl_verify_options</code></a>(raptor_www* www, int verify_peer, int verify_host) </p></li>
+</ul>
+</div>
+<div class="itemizedlist">
+<p class="title"><b>Enums</b></p>
+<ul class="itemizedlist" type="disc">
+<li class="listitem"><p><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-LOAD-EXTERNAL-ENTITIES:CAPS"><code class="literal">RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-NO-FILE:CAPS"><code class="literal">RAPTOR_OPTION_NO_FILE</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WWW-SSL-VERIFY-HOST:CAPS"><code class="literal">RAPTOR_OPTION_WWW_SSL_VERIFY_HOST</code></a> </p></li>
+<li class="listitem"><p><a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WWW-SSL-VERIFY-PEER:CAPS"><code class="literal">RAPTOR_OPTION_WWW_SSL_VERIFY_PEER</code></a> </p></li>
+</ul>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-changes-2-0-7-to-2-0-8.html b/docs/html/raptor2-changes-2-0-7-to-2-0-8.html
new file mode 100644
index 0000000..8e887ba
--- /dev/null
+++ b/docs/html/raptor2-changes-2-0-7-to-2-0-8.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Changes between raptor2 2.0.7 and 2.0.8</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor2-changes.html" title="API Changes">
+<link rel="prev" href="raptor2-changes.html" title="API Changes">
+<link rel="next" href="raptor2-changes-2-0-6-to-2-0-7.html" title="Changes between raptor2 2.0.6 and 2.0.7">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor2-changes.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor2-changes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-changes-2-0-6-to-2-0-7.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor2-changes-2-0-7-to-2-0-8"></a>Changes between raptor2 2.0.7 and 2.0.8</h2></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="raptor2-changes-new-2-0-7-to-2-0-8"></a>New functions, types and enums</h3></div></div></div>
+<div class="itemizedlist">
+<p class="title"><b>Functions</b></p>
+<ul class="itemizedlist" type="disc">
+<li class="listitem"><p>raptor_uri* <a class="link" href="raptor2-section-uri.html#raptor-new-uri-relative-to-base-counted" title="raptor_new_uri_relative_to_base_counted ()"><code class="function">raptor_new_uri_relative_to_base_counted</code></a>(raptor_world* world, raptor_uri *base_uri, const unsigned char *uri_string, size_t uri_len) </p></li>
+<li class="listitem"><p>unsigned char* <a class="link" href="raptor2-section-triples.html#raptor-term-to-turtle-counted-string" title="raptor_term_to_turtle_counted_string ()"><code class="function">raptor_term_to_turtle_counted_string</code></a>(raptor_term* term, raptor_namespace_stack *nstack, raptor_uri *base_uri, size_t *len_p) </p></li>
+<li class="listitem"><p>unsigned char* <a class="link" href="raptor2-section-triples.html#raptor-term-to-turtle-string" title="raptor_term_to_turtle_string ()"><code class="function">raptor_term_to_turtle_string</code></a>(raptor_term* term, raptor_namespace_stack *nstack, raptor_uri *base_uri) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-triples.html#raptor-term-turtle-write" title="raptor_term_turtle_write ()"><code class="function">raptor_term_turtle_write</code></a>(raptor_iostream* iostr, raptor_term* term, raptor_namespace_stack *nstack, raptor_uri *base_uri) </p></li>
+<li class="listitem"><p>unsigned char* <a class="link" href="raptor2-section-uri.html#raptor-uri-to-turtle-counted-string" title="raptor_uri_to_turtle_counted_string ()"><code class="function">raptor_uri_to_turtle_counted_string</code></a>(raptor_world *world, raptor_uri* uri, raptor_namespace_stack *nstack, raptor_uri *base_uri, size_t *len_p) </p></li>
+<li class="listitem"><p>unsigned char* <a class="link" href="raptor2-section-uri.html#raptor-uri-to-turtle-string" title="raptor_uri_to_turtle_string ()"><code class="function">raptor_uri_to_turtle_string</code></a>(raptor_world *world, raptor_uri* uri, raptor_namespace_stack *nstack, raptor_uri *base_uri) </p></li>
+<li class="listitem"><p>int <a class="link" href="raptor2-section-uri.html#raptor-uri-turtle-write" title="raptor_uri_turtle_write ()"><code class="function">raptor_uri_turtle_write</code></a>(raptor_world *world, raptor_iostream* iostr, raptor_uri* uri, raptor_namespace_stack *nstack, raptor_uri *base_uri) </p></li>
+</ul>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-changes.html b/docs/html/raptor2-changes.html
new file mode 100644
index 0000000..d8874c2
--- /dev/null
+++ b/docs/html/raptor2-changes.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>API Changes</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor-formats-types-index.html" title="MIME Types Index">
+<link rel="next" href="raptor2-changes-2-0-7-to-2-0-8.html" title="Changes between raptor2 2.0.7 and 2.0.8">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor-formats-types-index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-changes-2-0-7-to-2-0-8.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="raptor2-changes"></a>API Changes</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="raptor2-changes.html#raptor2-changes-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="raptor2-changes-2-0-7-to-2-0-8.html">Changes between raptor2 2.0.7 and 2.0.8</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-7-to-2-0-8.html#raptor2-changes-new-2-0-7-to-2-0-8">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-2-0-6-to-2-0-7.html">Changes between raptor2 2.0.6 and 2.0.7</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-6-to-2-0-7.html#raptor2-changes-new-2-0-6-to-2-0-7">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-2-0-5-to-2-0-6.html">Changes between raptor2 2.0.5 and 2.0.6</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-5-to-2-0-6.html#raptor2-changes-new-2-0-5-to-2-0-6">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-2-0-4-to-2-0-5.html">Changes between raptor2 2.0.4 and 2.0.5</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-4-to-2-0-5.html#raptor2-changes-new-2-0-4-to-2-0-5">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-2-0-3-to-2-0-4.html">Changes between raptor2 2.0.3 and 2.0.4</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-3-to-2-0-4.html#raptor2-changes-new-2-0-3-to-2-0-4">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html">Changes between raptor2 1.4.21 and 2.0.0</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-new-1-4-21-to-2-0-0">New functions, types and enums</a></span></dt>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-deleted-1-4-21-to-2-0-0">Deleted functions, types and enums</a></span></dt>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-renamed-1-4-21-to-2-0-0">Renamed function and enums</a></span></dt>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-changed-1-4-21-to-2-0-0">Changed functions and types</a></span></dt>
+</dl></dd>
+</dl></div>
+<p>This chapter describes the API changes for raptor2.
+</p>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="raptor2-changes-intro"></a>Introduction</h2></div></div></div>
+<p>
+The following sections describe the changes in the API between
+versions including additions, deletions, renames (retaining the same
+number of parameters, types and return value type) and more complex
+changes to functions, types and enums.
+</p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-avltree.html b/docs/html/raptor2-section-avltree.html
new file mode 100644
index 0000000..f628598
--- /dev/null
+++ b/docs/html/raptor2-section-avltree.html
@@ -0,0 +1,540 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>AVL Trees</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-memory.html" title="Memory">
+<link rel="next" href="raptor2-section-constants.html" title="Constants">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-memory.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-constants.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-avltree.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-avltree.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-avltree"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-avltree.top_of_page"></a>AVL Trees</span></h2>
+<p>AVL Trees — AVL Trees</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-avltree.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree">raptor_avltree</a>;
+enum <a class="link" href="raptor2-section-avltree.html#raptor-avltree-bitflags" title="enum raptor_avltree_bitflags">raptor_avltree_bitflags</a>;
+<a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="returnvalue">raptor_avltree</span></a> * <a class="link" href="raptor2-section-avltree.html#raptor-new-avltree" title="raptor_new_avltree ()">raptor_new_avltree</a> (<em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-compare-handler" title="raptor_data_compare_handler ()"><span class="type">raptor_data_compare_handler</span></a> compare_handler</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-free-handler" title="raptor_data_free_handler ()"><span class="type">raptor_data_free_handler</span></a> free_handler</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> flags</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-avltree.html#raptor-free-avltree" title="raptor_free_avltree ()">raptor_free_avltree</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-avltree.html#raptor-avltree-add" title="raptor_avltree_add ()">raptor_avltree_add</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *p_data</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-avltree.html#raptor-avltree-delete" title="raptor_avltree_delete ()">raptor_avltree_delete</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *p_data</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-avltree.html#raptor-avltree-print" title="raptor_avltree_print ()">raptor_avltree_print</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *stream</code></em>);
+<span class="returnvalue">void</span> * <a class="link" href="raptor2-section-avltree.html#raptor-avltree-remove" title="raptor_avltree_remove ()">raptor_avltree_remove</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *p_data</code></em>);
+<span class="returnvalue">void</span> * <a class="link" href="raptor2-section-avltree.html#raptor-avltree-search" title="raptor_avltree_search ()">raptor_avltree_search</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code>const <span class="type">void</span> *p_data</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-avltree.html#raptor-avltree-set-print-handler" title="raptor_avltree_set_print_handler ()">raptor_avltree_set_print_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-print-handler" title="raptor_data_print_handler ()"><span class="type">raptor_data_print_handler</span></a> print_handler</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-avltree.html#raptor-avltree-size" title="raptor_avltree_size ()">raptor_avltree_size</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-avltree.html#raptor-avltree-visit" title="raptor_avltree_visit ()">raptor_avltree_visit</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree-visit-handler" title="raptor_avltree_visit_handler ()"><span class="type">raptor_avltree_visit_handler</span></a> visit_handler</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);
+typedef <a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator">raptor_avltree_iterator</a>;
+<a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator"><span class="returnvalue">raptor_avltree_iterator</span></a> * <a class="link" href="raptor2-section-avltree.html#raptor-new-avltree-iterator" title="raptor_new_avltree_iterator ()">raptor_new_avltree_iterator</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *range</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-free-handler" title="raptor_data_free_handler ()"><span class="type">raptor_data_free_handler</span></a> range_free_handler</code></em>,
+ <em class="parameter"><code><span class="type">int</span> direction</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-avltree.html#raptor-free-avltree-iterator" title="raptor_free_avltree_iterator ()">raptor_free_avltree_iterator</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator"><span class="type">raptor_avltree_iterator</span></a> *iterator</code></em>);
+<span class="returnvalue">void</span> * <a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator-get" title="raptor_avltree_iterator_get ()">raptor_avltree_iterator_get</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator"><span class="type">raptor_avltree_iterator</span></a> *iterator</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator-is-end" title="raptor_avltree_iterator_is_end ()">raptor_avltree_iterator_is_end</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator"><span class="type">raptor_avltree_iterator</span></a> *iterator</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator-next" title="raptor_avltree_iterator_next ()">raptor_avltree_iterator_next</a> (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator"><span class="type">raptor_avltree_iterator</span></a> *iterator</code></em>);
+<span class="returnvalue">int</span> (<a class="link" href="raptor2-section-avltree.html#raptor-avltree-visit-handler" title="raptor_avltree_visit_handler ()">*raptor_avltree_visit_handler</a>) (<em class="parameter"><code><span class="type">int</span> depth</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *data</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-avltree.description"></a><h2>Description</h2>
+<p>
+AVL Trees
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-avltree.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-avltree"></a><h3>raptor_avltree</h3>
+<pre class="programlisting">typedef struct raptor_avltree_s raptor_avltree;
+</pre>
+<p>
+AVL Tree
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-bitflags"></a><h3>enum raptor_avltree_bitflags</h3>
+<pre class="programlisting">typedef enum {
+ RAPTOR_AVLTREE_FLAG_REPLACE_DUPLICATES = 1
+} raptor_avltree_bitflags;
+</pre>
+<p>
+Bit flags for AVL Tree class constructor <a class="link" href="raptor2-section-avltree.html#raptor-new-avltree" title="raptor_new_avltree ()"><code class="function">raptor_new_avltree()</code></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><a name="RAPTOR-AVLTREE-FLAG-REPLACE-DUPLICATES:CAPS"></a><span class="term"><code class="literal">RAPTOR_AVLTREE_FLAG_REPLACE_DUPLICATES</code></span></p></td>
+<td>If set <a class="link" href="raptor2-section-avltree.html#raptor-avltree-add" title="raptor_avltree_add ()"><code class="function">raptor_avltree_add()</code></a> will replace any duplicate items. If not set, <a class="link" href="raptor2-section-avltree.html#raptor-avltree-add" title="raptor_avltree_add ()"><code class="function">raptor_avltree_add()</code></a> will not replace them and will return status &gt;0 when adding a duplicate. (Default is not set)
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-avltree"></a><h3>raptor_new_avltree ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="returnvalue">raptor_avltree</span></a> * raptor_new_avltree (<em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-compare-handler" title="raptor_data_compare_handler ()"><span class="type">raptor_data_compare_handler</span></a> compare_handler</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-free-handler" title="raptor_data_free_handler ()"><span class="type">raptor_data_free_handler</span></a> free_handler</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> flags</code></em>);</pre>
+<p>
+AVL Tree Constructor
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>compare_handler</code></em> :</span></p></td>
+<td>item comparison handler for ordering</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>free_handler</code></em> :</span></p></td>
+<td>item free handler (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td>AVLTree flags - bitmask of <a class="link" href="raptor2-section-avltree.html#raptor-avltree-bitflags" title="enum raptor_avltree_bitflags"><span class="type">raptor_avltree_bitflags</span></a> flags.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new AVL Tree or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-avltree"></a><h3>raptor_free_avltree ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_avltree (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>);</pre>
+<p>
+AVL Tree destructor
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>tree</code></em> :</span></p></td>
+<td>AVLTree object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-add"></a><h3>raptor_avltree_add ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_avltree_add (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *p_data</code></em>);</pre>
+<p>
+add an item to an AVL Tree
+</p>
+<p>
+The item added becomes owned by the AVL Tree, and will be freed by
+the free_handler argument given to <a class="link" href="raptor2-section-avltree.html#raptor-new-avltree" title="raptor_new_avltree ()"><code class="function">raptor_new_avltree()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tree</code></em> :</span></p></td>
+<td>AVL Tree object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>p_data</code></em> :</span></p></td>
+<td>pointer to data item</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>0 on success, &gt;0 if equivalent item exists (and the old element remains in the tree), &lt;0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-delete"></a><h3>raptor_avltree_delete ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_avltree_delete (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *p_data</code></em>);</pre>
+<p>
+Remove an item from an AVL Tree and free it
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tree</code></em> :</span></p></td>
+<td>AVL Tree object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>p_data</code></em> :</span></p></td>
+<td>pointer to data item</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-print"></a><h3>raptor_avltree_print ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_avltree_print (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *stream</code></em>);</pre>
+<p>
+Print the items in the tree in order to a stream (for debugging)
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tree</code></em> :</span></p></td>
+<td>AVL Tree</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
+<td>stream to print to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-remove"></a><h3>raptor_avltree_remove ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> * raptor_avltree_remove (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *p_data</code></em>);</pre>
+<p>
+Remove an item from an AVL Tree and return it
+</p>
+<p>
+The item removed is no longer owned by the AVL Tree and is
+owned by the caller.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tree</code></em> :</span></p></td>
+<td>AVL Tree object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>p_data</code></em> :</span></p></td>
+<td>pointer to data item</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>object or NULL on failure or if not found</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-search"></a><h3>raptor_avltree_search ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> * raptor_avltree_search (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code>const <span class="type">void</span> *p_data</code></em>);</pre>
+<p>
+Find an item in an AVL Tree
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tree</code></em> :</span></p></td>
+<td>AVL Tree object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>p_data</code></em> :</span></p></td>
+<td>pointer to data item</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>shared pointer to item (still owned by AVL Tree) or NULL on failure or if not found</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-set-print-handler"></a><h3>raptor_avltree_set_print_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_avltree_set_print_handler (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-print-handler" title="raptor_data_print_handler ()"><span class="type">raptor_data_print_handler</span></a> print_handler</code></em>);</pre>
+<p>
+Set the handler for printing an item in a tree
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tree</code></em> :</span></p></td>
+<td>AVL Tree object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>print_handler</code></em> :</span></p></td>
+<td>print function</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-size"></a><h3>raptor_avltree_size ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_avltree_size (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>);</pre>
+<p>
+Get the number of items in the AVL Tree
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tree</code></em> :</span></p></td>
+<td>AVL Tree object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>number of items in tree</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-visit"></a><h3>raptor_avltree_visit ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_avltree_visit (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree-visit-handler" title="raptor_avltree_visit_handler ()"><span class="type">raptor_avltree_visit_handler</span></a> visit_handler</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+Perform an in-order visit of the items in the AVL Tree
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tree</code></em> :</span></p></td>
+<td>AVL Tree object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>visit_handler</code></em> :</span></p></td>
+<td>visit function to call at each item</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data pointer fo visit function</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if traversal was terminated early by <em class="parameter"><code>visit_handler</code></em>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-iterator"></a><h3>raptor_avltree_iterator</h3>
+<pre class="programlisting">typedef struct raptor_avltree_iterator_s raptor_avltree_iterator;
+</pre>
+<p>
+AVL Tree Iterator as created by <a class="link" href="raptor2-section-avltree.html#raptor-new-avltree-iterator" title="raptor_new_avltree_iterator ()"><code class="function">raptor_new_avltree_iterator()</code></a>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-avltree-iterator"></a><h3>raptor_new_avltree_iterator ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator"><span class="returnvalue">raptor_avltree_iterator</span></a> * raptor_new_avltree_iterator (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> *tree</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *range</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-free-handler" title="raptor_data_free_handler ()"><span class="type">raptor_data_free_handler</span></a> range_free_handler</code></em>,
+ <em class="parameter"><code><span class="type">int</span> direction</code></em>);</pre>
+<p>
+Get an in-order iterator for the start of a range, or the entire contents
+</p>
+<p>
+If range is NULL, the entire tree is walked in order. If range
+specifies a range (i.e. the tree comparison function will 'match'
+(return 0 for) range and /several/ nodes), the iterator will be
+placed at the leftmost child matching range, and
+raptor_avltree_iterator_next will iterate over all nodes (and only
+nodes) that match range.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tree</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-avltree.html#raptor-avltree" title="raptor_avltree"><span class="type">raptor_avltree</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>range</code></em> :</span></p></td>
+<td>range</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>range_free_handler</code></em> :</span></p></td>
+<td>function to free <em class="parameter"><code>range</code></em> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>direction</code></em> :</span></p></td>
+<td>&lt;0 to go 'backwards' otherwise 'forwards'</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator"><span class="type">raptor_avltree_iterator</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-avltree-iterator"></a><h3>raptor_free_avltree_iterator ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_avltree_iterator (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator"><span class="type">raptor_avltree_iterator</span></a> *iterator</code></em>);</pre>
+<p>
+AVL Tree Iterator destructor
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>iterator</code></em> :</span></p></td>
+<td>AVL Tree iterator object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-iterator-get"></a><h3>raptor_avltree_iterator_get ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> * raptor_avltree_iterator_get (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator"><span class="type">raptor_avltree_iterator</span></a> *iterator</code></em>);</pre>
+<p>
+Get current iteration object
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iterator</code></em> :</span></p></td>
+<td>AVL Tree iterator object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>object or NULL if iteration is finished</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-iterator-is-end"></a><h3>raptor_avltree_iterator_is_end ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_avltree_iterator_is_end (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator"><span class="type">raptor_avltree_iterator</span></a> *iterator</code></em>);</pre>
+<p>
+Test if an iteration is finished
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iterator</code></em> :</span></p></td>
+<td>AVL Tree iterator object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if iteration is finished</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-iterator-next"></a><h3>raptor_avltree_iterator_next ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_avltree_iterator_next (<em class="parameter"><code><a class="link" href="raptor2-section-avltree.html#raptor-avltree-iterator" title="raptor_avltree_iterator"><span class="type">raptor_avltree_iterator</span></a> *iterator</code></em>);</pre>
+<p>
+Move iteration to next/prev object
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iterator</code></em> :</span></p></td>
+<td>AVL Tree iterator object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if iteration is finished</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-avltree-visit-handler"></a><h3>raptor_avltree_visit_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> (*raptor_avltree_visit_handler) (<em class="parameter"><code><span class="type">int</span> depth</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *data</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+AVL Tree visitor function as given to <a class="link" href="raptor2-section-avltree.html#raptor-avltree-visit" title="raptor_avltree_visit ()"><code class="function">raptor_avltree_visit()</code></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>depth</code></em> :</span></p></td>
+<td>depth of object in tree</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
+<td>data object being visited</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data arg to <a class="link" href="raptor2-section-avltree.html#raptor-avltree-visit" title="raptor_avltree_visit ()"><code class="function">raptor_avltree_visit()</code></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 to terminate visit early.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-constants.html b/docs/html/raptor2-section-constants.html
new file mode 100644
index 0000000..e3abcd6
--- /dev/null
+++ b/docs/html/raptor2-section-constants.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Constants</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-avltree.html" title="AVL Trees">
+<link rel="next" href="raptor2-section-option.html" title="Options">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-avltree.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-option.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-constants.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-constants.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-constants"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-constants.top_of_page"></a>Constants</span></h2>
+<p>Constants — Constant values and strings</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-constants.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">extern const unsigned int <a class="link" href="raptor2-section-constants.html#raptor-rdf-namespace-uri-len" title="raptor_rdf_namespace_uri_len">raptor_rdf_namespace_uri_len</a>;
+extern const unsigned int <a class="link" href="raptor2-section-constants.html#raptor-xml-literal-datatype-uri-string-len" title="raptor_xml_literal_datatype_uri_string_len">raptor_xml_literal_datatype_uri_string_len</a>;
+#define <a class="link" href="raptor2-section-constants.html#RAPTOR-RDF-MS-URI:CAPS" title="RAPTOR_RDF_MS_URI">RAPTOR_RDF_MS_URI</a>
+#define <a class="link" href="raptor2-section-constants.html#RAPTOR-RDF-SCHEMA-URI:CAPS" title="RAPTOR_RDF_SCHEMA_URI">RAPTOR_RDF_SCHEMA_URI</a>
+#define <a class="link" href="raptor2-section-constants.html#RAPTOR-XMLSCHEMA-DATATYPES-URI:CAPS" title="RAPTOR_XMLSCHEMA_DATATYPES_URI">RAPTOR_XMLSCHEMA_DATATYPES_URI</a>
+#define <a class="link" href="raptor2-section-constants.html#RAPTOR-OWL-URI:CAPS" title="RAPTOR_OWL_URI">RAPTOR_OWL_URI</a>
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-constants.description"></a><h2>Description</h2>
+<p>
+Version numbers and often-used namespace URI strings.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-constants.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-rdf-namespace-uri-len"></a><h3>raptor_rdf_namespace_uri_len</h3>
+<pre class="programlisting">extern const unsigned int raptor_rdf_namespace_uri_len;
+</pre>
+<p>
+Length of <a class="link" href="raptor2-section-general.html#raptor-rdf-namespace-uri" title="raptor_rdf_namespace_uri"><span class="type">raptor_rdf_namespace_uri</span></a> string
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-literal-datatype-uri-string-len"></a><h3>raptor_xml_literal_datatype_uri_string_len</h3>
+<pre class="programlisting">extern const unsigned int raptor_xml_literal_datatype_uri_string_len;
+</pre>
+<p>
+Length of <a class="link" href="raptor2-section-general.html#raptor-xml-literal-datatype-uri-string" title="raptor_xml_literal_datatype_uri_string"><span class="type">raptor_xml_literal_datatype_uri_string</span></a>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="RAPTOR-RDF-MS-URI:CAPS"></a><h3>RAPTOR_RDF_MS_URI</h3>
+<pre class="programlisting">#define RAPTOR_RDF_MS_URI raptor_rdf_namespace_uri
+</pre>
+<p>
+RDF Namespace URI (rdf:).
+</p>
+<p>
+Copy with <a class="link" href="raptor2-section-uri.html#raptor-uri-copy" title="raptor_uri_copy ()"><code class="function">raptor_uri_copy()</code></a> to use.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="RAPTOR-RDF-SCHEMA-URI:CAPS"></a><h3>RAPTOR_RDF_SCHEMA_URI</h3>
+<pre class="programlisting">#define RAPTOR_RDF_SCHEMA_URI raptor_rdf_schema_namespace_uri
+</pre>
+<p>
+RDF Schema Namespace URI (rdfs:).
+</p>
+<p>
+Copy with <a class="link" href="raptor2-section-uri.html#raptor-uri-copy" title="raptor_uri_copy ()"><code class="function">raptor_uri_copy()</code></a> to use.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="RAPTOR-XMLSCHEMA-DATATYPES-URI:CAPS"></a><h3>RAPTOR_XMLSCHEMA_DATATYPES_URI</h3>
+<pre class="programlisting">#define RAPTOR_XMLSCHEMA_DATATYPES_URI raptor_xmlschema_datatypes_namespace_uri
+</pre>
+<p>
+XML Schema Datatypes URI (xsd:).
+</p>
+<p>
+Copy with <a class="link" href="raptor2-section-uri.html#raptor-uri-copy" title="raptor_uri_copy ()"><code class="function">raptor_uri_copy()</code></a> to use.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="RAPTOR-OWL-URI:CAPS"></a><h3>RAPTOR_OWL_URI</h3>
+<pre class="programlisting">#define RAPTOR_OWL_URI raptor_owl_namespace_uri
+</pre>
+<p>
+OWL Namespace URI (owl:).
+</p>
+<p>
+Copy with <a class="link" href="raptor2-section-uri.html#raptor-uri-copy" title="raptor_uri_copy ()"><code class="function">raptor_uri_copy()</code></a> to use.
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-general.html b/docs/html/raptor2-section-general.html
new file mode 100644
index 0000000..c285e1a
--- /dev/null
+++ b/docs/html/raptor2-section-general.html
@@ -0,0 +1,1049 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>General</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-world.html" title="Initialisation">
+<link rel="next" href="raptor2-section-memory.html" title="Memory">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-world.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-memory.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-general.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-general.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-general"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-general.top_of_page"></a>General</span></h2>
+<p>General — General library constants and utility functions</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-general.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">#define <a class="link" href="raptor2-section-general.html#RAPTOR-VERSION:CAPS" title="RAPTOR_VERSION">RAPTOR_VERSION</a>
+#define <a class="link" href="raptor2-section-general.html#RAPTOR-VERSION-MAJOR:CAPS" title="RAPTOR_VERSION_MAJOR">RAPTOR_VERSION_MAJOR</a>
+#define <a class="link" href="raptor2-section-general.html#RAPTOR-VERSION-MINOR:CAPS" title="RAPTOR_VERSION_MINOR">RAPTOR_VERSION_MINOR</a>
+#define <a class="link" href="raptor2-section-general.html#RAPTOR-VERSION-RELEASE:CAPS" title="RAPTOR_VERSION_RELEASE">RAPTOR_VERSION_RELEASE</a>
+#define <a class="link" href="raptor2-section-general.html#RAPTOR-VERSION-STRING:CAPS" title="RAPTOR_VERSION_STRING">RAPTOR_VERSION_STRING</a>
+extern const unsigned int <a class="link" href="raptor2-section-general.html#raptor-version-major" title="raptor_version_major">raptor_version_major</a>;
+extern const unsigned int <a class="link" href="raptor2-section-general.html#raptor-version-minor" title="raptor_version_minor">raptor_version_minor</a>;
+extern const unsigned int <a class="link" href="raptor2-section-general.html#raptor-version-release" title="raptor_version_release">raptor_version_release</a>;
+extern const unsigned int <a class="link" href="raptor2-section-general.html#raptor-version-decimal" title="raptor_version_decimal">raptor_version_decimal</a>;
+extern const char * const <a class="link" href="raptor2-section-general.html#raptor-copyright-string" title="raptor_copyright_string">raptor_copyright_string</a>;
+extern const char * const <a class="link" href="raptor2-section-general.html#raptor-home-url-string" title="raptor_home_url_string">raptor_home_url_string</a>;
+extern const char * const <a class="link" href="raptor2-section-general.html#raptor-license-string" title="raptor_license_string">raptor_license_string</a>;
+extern const char * const <a class="link" href="raptor2-section-general.html#raptor-short-copyright-string" title="raptor_short_copyright_string">raptor_short_copyright_string</a>;
+extern const char * const <a class="link" href="raptor2-section-general.html#raptor-version-string" title="raptor_version_string">raptor_version_string</a>;
+extern const unsigned char * const <a class="link" href="raptor2-section-general.html#raptor-owl-namespace-uri" title="raptor_owl_namespace_uri">raptor_owl_namespace_uri</a>;
+extern const unsigned char * const <a class="link" href="raptor2-section-general.html#raptor-rdf-namespace-uri" title="raptor_rdf_namespace_uri">raptor_rdf_namespace_uri</a>;
+extern const unsigned char * const <a class="link" href="raptor2-section-general.html#raptor-rdf-schema-namespace-uri" title="raptor_rdf_schema_namespace_uri">raptor_rdf_schema_namespace_uri</a>;
+extern const unsigned char * const <a class="link" href="raptor2-section-general.html#raptor-xml-literal-datatype-uri-string" title="raptor_xml_literal_datatype_uri_string">raptor_xml_literal_datatype_uri_string</a>;
+extern const unsigned char * const <a class="link" href="raptor2-section-general.html#raptor-xml-namespace-uri" title="raptor_xml_namespace_uri">raptor_xml_namespace_uri</a>;
+extern const unsigned char * const <a class="link" href="raptor2-section-general.html#raptor-xmlschema-datatypes-namespace-uri" title="raptor_xmlschema_datatypes_namespace_uri">raptor_xmlschema_datatypes_namespace_uri</a>;
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-general.html#raptor-statement-handler" title="raptor_statement_handler ()">*raptor_statement_handler</a>) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-general.html#raptor-snprintf" title="raptor_snprintf ()">raptor_snprintf</a> (<em class="parameter"><code><span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *format</code></em>,
+ <em class="parameter"><code>...</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-general.html#raptor-vasprintf" title="raptor_vasprintf ()">raptor_vasprintf</a> (<em class="parameter"><code><span class="type">char</span> **ret</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *format</code></em>,
+ <em class="parameter"><code><span class="type">va_list</span> arguments</code></em>);
+<span class="returnvalue">char</span> * <a class="link" href="raptor2-section-general.html#raptor-vsnprintf" title="raptor_vsnprintf ()">raptor_vsnprintf</a> (<em class="parameter"><code>const <span class="type">char</span> *format</code></em>,
+ <em class="parameter"><code><span class="type">va_list</span> arguments</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-general.html#raptor-vsnprintf2" title="raptor_vsnprintf2 ()">raptor_vsnprintf2</a> (<em class="parameter"><code><span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *format</code></em>,
+ <em class="parameter"><code><span class="type">va_list</span> arguments</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-general.html#raptor-log-handler" title="raptor_log_handler ()">*raptor_log_handler</a>) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-log-message" title="raptor_log_message"><span class="type">raptor_log_message</span></a> *message</code></em>);
+ <a class="link" href="raptor2-section-general.html#raptor-log-message" title="raptor_log_message">raptor_log_message</a>;
+enum <a class="link" href="raptor2-section-general.html#raptor-log-level" title="enum raptor_log_level">raptor_log_level</a>;
+const <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-general.html#raptor-log-level-get-label" title="raptor_log_level_get_label ()">raptor_log_level_get_label</a> (<em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-log-level" title="enum raptor_log_level"><span class="type">raptor_log_level</span></a> level</code></em>);
+enum <a class="link" href="raptor2-section-general.html#raptor-domain" title="enum raptor_domain">raptor_domain</a>;
+const <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-general.html#raptor-domain-get-label" title="raptor_domain_get_label ()">raptor_domain_get_label</a> (<em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-domain" title="enum raptor_domain"><span class="type">raptor_domain</span></a> domain</code></em>);
+<span class="returnvalue">int</span> (<a class="link" href="raptor2-section-general.html#raptor-data-compare-handler" title="raptor_data_compare_handler ()">*raptor_data_compare_handler</a>) (<em class="parameter"><code>const <span class="type">void</span> *data1</code></em>,
+ <em class="parameter"><code>const <span class="type">void</span> *data2</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-general.html#raptor-data-context-free-handler" title="raptor_data_context_free_handler ()">*raptor_data_context_free_handler</a>) (<em class="parameter"><code><span class="type">void</span> *context</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *object</code></em>);
+<span class="returnvalue">int</span> (<a class="link" href="raptor2-section-general.html#raptor-data-context-print-handler" title="raptor_data_context_print_handler ()">*raptor_data_context_print_handler</a>)
+ (<em class="parameter"><code><span class="type">void</span> *context</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *object</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *fh</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-general.html#raptor-data-free-handler" title="raptor_data_free_handler ()">*raptor_data_free_handler</a>) (<em class="parameter"><code><span class="type">void</span> *data</code></em>);
+<span class="returnvalue">void</span> * (<a class="link" href="raptor2-section-general.html#raptor-data-malloc-handler" title="raptor_data_malloc_handler ()">*raptor_data_malloc_handler</a>) (<em class="parameter"><code><span class="type">size_t</span> size</code></em>);
+<span class="returnvalue">int</span> (<a class="link" href="raptor2-section-general.html#raptor-data-print-handler" title="raptor_data_print_handler ()">*raptor_data_print_handler</a>) (<em class="parameter"><code><span class="type">void</span> *object</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *fh</code></em>);
+enum <a class="link" href="raptor2-section-general.html#raptor-syntax-bitflags" title="enum raptor_syntax_bitflags">raptor_syntax_bitflags</a>;
+ <a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description">raptor_syntax_description</a>;
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-general.html#raptor-syntax-description-validate" title="raptor_syntax_description_validate ()">raptor_syntax_description_validate</a> (<em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="type">raptor_syntax_description</span></a> *desc</code></em>);
+ <a class="link" href="raptor2-section-general.html#raptor-type-q" title="raptor_type_q">raptor_type_q</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-general.description"></a><h2>Description</h2>
+<p>
+How to get access to version numbers, set message and error handlers,
+list the parsed and serialized syntaxes provided in the library
+and various other utility functions.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-general.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="RAPTOR-VERSION:CAPS"></a><h3>RAPTOR_VERSION</h3>
+<pre class="programlisting">#define RAPTOR_VERSION 20008
+</pre>
+<p>
+Raptor library version number
+</p>
+<p>
+Format: major * 10000 + minor * 100 + release
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="RAPTOR-VERSION-MAJOR:CAPS"></a><h3>RAPTOR_VERSION_MAJOR</h3>
+<pre class="programlisting">#define RAPTOR_VERSION_MAJOR 2
+</pre>
+<p>
+Raptor library major version
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="RAPTOR-VERSION-MINOR:CAPS"></a><h3>RAPTOR_VERSION_MINOR</h3>
+<pre class="programlisting">#define RAPTOR_VERSION_MINOR 0
+</pre>
+<p>
+Raptor library minor version
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="RAPTOR-VERSION-RELEASE:CAPS"></a><h3>RAPTOR_VERSION_RELEASE</h3>
+<pre class="programlisting">#define RAPTOR_VERSION_RELEASE 8
+</pre>
+<p>
+Raptor library release
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="RAPTOR-VERSION-STRING:CAPS"></a><h3>RAPTOR_VERSION_STRING</h3>
+<pre class="programlisting">#define RAPTOR_VERSION_STRING "2.0.8"
+</pre>
+<p>
+Raptor library version string
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-version-major"></a><h3>raptor_version_major</h3>
+<pre class="programlisting">extern const unsigned int raptor_version_major;
+</pre>
+<p>
+Raptor major version number.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-version-minor"></a><h3>raptor_version_minor</h3>
+<pre class="programlisting">extern const unsigned int raptor_version_minor;
+</pre>
+<p>
+Raptor minor version number.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-version-release"></a><h3>raptor_version_release</h3>
+<pre class="programlisting">extern const unsigned int raptor_version_release;
+</pre>
+<p>
+Raptor release version number.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-version-decimal"></a><h3>raptor_version_decimal</h3>
+<pre class="programlisting">extern const unsigned int raptor_version_decimal;
+</pre>
+<p>
+Raptor version as a decimal number.
+</p>
+<p>
+Format: major * 10000 + minor * 100 + release
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-copyright-string"></a><h3>raptor_copyright_string</h3>
+<pre class="programlisting">extern const char * const raptor_copyright_string;
+</pre>
+<p>
+Copyright string (multiple lines).
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-home-url-string"></a><h3>raptor_home_url_string</h3>
+<pre class="programlisting">extern const char * const raptor_home_url_string;
+</pre>
+<p>
+Raptor home page URL.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-license-string"></a><h3>raptor_license_string</h3>
+<pre class="programlisting">extern const char * const raptor_license_string;
+</pre>
+<p>
+Raptor license string.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-short-copyright-string"></a><h3>raptor_short_copyright_string</h3>
+<pre class="programlisting">extern const char * const raptor_short_copyright_string;
+</pre>
+<p>
+Short copyright string (one line).
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-version-string"></a><h3>raptor_version_string</h3>
+<pre class="programlisting">extern const char * const raptor_version_string;
+</pre>
+<p>
+Raptor version as a string.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-owl-namespace-uri"></a><h3>raptor_owl_namespace_uri</h3>
+<pre class="programlisting">extern const unsigned char * const raptor_owl_namespace_uri;
+</pre>
+<p>
+OWL (owl:) Namespace URI string.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-rdf-namespace-uri"></a><h3>raptor_rdf_namespace_uri</h3>
+<pre class="programlisting">extern const unsigned char * const raptor_rdf_namespace_uri;
+</pre>
+<p>
+RDF Namespace (rdf:) URI string.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-rdf-schema-namespace-uri"></a><h3>raptor_rdf_schema_namespace_uri</h3>
+<pre class="programlisting">extern const unsigned char * const raptor_rdf_schema_namespace_uri;
+</pre>
+<p>
+RDF Schema (rdfs:) Namespace URI string.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-literal-datatype-uri-string"></a><h3>raptor_xml_literal_datatype_uri_string</h3>
+<pre class="programlisting">extern const unsigned char * const raptor_xml_literal_datatype_uri_string;
+</pre>
+<p>
+XML Literal datatype (rdf:XMLLiteral) URI string.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-namespace-uri"></a><h3>raptor_xml_namespace_uri</h3>
+<pre class="programlisting">extern const unsigned char * const raptor_xml_namespace_uri;
+</pre>
+<p>
+XML Namespace (xml:) URI string.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xmlschema-datatypes-namespace-uri"></a><h3>raptor_xmlschema_datatypes_namespace_uri</h3>
+<pre class="programlisting">extern const unsigned char * const raptor_xmlschema_datatypes_namespace_uri;
+</pre>
+<p>
+XML Schema datatypes (xsd:) namespace URI string.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-statement-handler"></a><h3>raptor_statement_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_statement_handler) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>);</pre>
+<p>
+Statement (triple) reporting handler function.
+</p>
+<p>
+This handler function set with
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-statement-handler" title="raptor_parser_set_statement_handler ()"><code class="function">raptor_parser_set_statement_handler()</code></a> on a parser receives
+statements as the parsing proceeds. The <em class="parameter"><code>statement</code></em> argument to the
+handler is shared and must be copied by the caller with
+<a class="link" href="raptor2-section-triples.html#raptor-statement-copy" title="raptor_statement_copy ()"><code class="function">raptor_statement_copy()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>statement</code></em> :</span></p></td>
+<td>statement to report</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-snprintf"></a><h3>raptor_snprintf ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_snprintf (<em class="parameter"><code><span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *format</code></em>,
+ <em class="parameter"><code>...</code></em>);</pre>
+<p>
+Format output into an allocated sized buffer
+</p>
+<p>
+This provides a portable version <code class="function">snprintf()</code> over variants on
+different systems.
+</p>
+<p>
+If <em class="parameter"><code>buffer</code></em> is NULL, calculates the number of bytes needed to
+allocate for buffer and do no formatting.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
+<td>buffer (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
+<td>bufer size (or 0)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
+<td>printf-style format string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td>
+<td>format arguments</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>number of bytes allocated (excluding NUL) or 0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-vasprintf"></a><h3>raptor_vasprintf ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_vasprintf (<em class="parameter"><code><span class="type">char</span> **ret</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *format</code></em>,
+ <em class="parameter"><code><span class="type">va_list</span> arguments</code></em>);</pre>
+<p>
+Format output into a new buffer and return it
+</p>
+<p>
+This is a wrapper around the (GNU) vasprintf function that is not
+always avaiable.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ret</code></em> :</span></p></td>
+<td>pointer to store buffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
+<td>printf-style format string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>arguments</code></em> :</span></p></td>
+<td>format arguments list</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>number of bytes allocated (excluding NUL) or &lt; 0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-vsnprintf"></a><h3>raptor_vsnprintf ()</h3>
+<pre class="programlisting"><span class="returnvalue">char</span> * raptor_vsnprintf (<em class="parameter"><code>const <span class="type">char</span> *format</code></em>,
+ <em class="parameter"><code><span class="type">va_list</span> arguments</code></em>);</pre>
+<p>
+Format output for a variable arguments list into a newly allocated buffer
+</p>
+<p>
+<em class="parameter"><code>Deprecated</code></em>: This does not actually conform to vsnprintf's calling
+convention and does not return the allocated buffer length. Use
+<a class="link" href="raptor2-section-general.html#raptor-vsnprintf2" title="raptor_vsnprintf2 ()"><code class="function">raptor_vsnprintf2()</code></a> or <a class="link" href="raptor2-section-general.html#raptor-vasprintf" title="raptor_vasprintf ()"><code class="function">raptor_vasprintf()</code></a> instead.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
+<td>printf-style format string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>arguments</code></em> :</span></p></td>
+<td>variable arguments list</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a newly allocated string as the formatted result or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-vsnprintf2"></a><h3>raptor_vsnprintf2 ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_vsnprintf2 (<em class="parameter"><code><span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *format</code></em>,
+ <em class="parameter"><code><span class="type">va_list</span> arguments</code></em>);</pre>
+<p>
+Format output for a variable arguments list into an allocated sized buffer.
+</p>
+<p>
+This is a wrapper around system versions of vsnprintf with
+different call and return conventions.
+</p>
+<p>
+If <em class="parameter"><code>buffer</code></em> is NULL or size is 0 or the buffer size is too small,
+returns the number of bytes that would be needed for buffer
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
+<td>buffer (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
+<td>size of buffer (or 0)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
+<td>printf-style format string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>arguments</code></em> :</span></p></td>
+<td>variable arguments list</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>number of bytes allocated (excluding NUL) or &lt;0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-log-handler"></a><h3>raptor_log_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_log_handler) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-log-message" title="raptor_log_message"><span class="type">raptor_log_message</span></a> *message</code></em>);</pre>
+<p>
+Handler function for log messages with location
+</p>
+<p>
+Used during parsing and serializing for errors and warnings that
+may include location information. Handlers may be set
+by <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>message</code></em> :</span></p></td>
+<td>log message</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-log-message"></a><h3>raptor_log_message</h3>
+<pre class="programlisting">typedef struct {
+ int code;
+ raptor_domain domain;
+ raptor_log_level level;
+ raptor_locator *locator;
+ const char *text;
+} raptor_log_message;
+</pre>
+<p>
+Log message.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><span class="type">int</span> <em class="structfield"><code><a name="raptor-log-message.code"></a>code</code></em>;</span></p></td>
+<td>error code or &lt; 0 if not used or known</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-general.html#raptor-domain" title="enum raptor_domain"><span class="type">raptor_domain</span></a> <em class="structfield"><code><a name="raptor-log-message.domain"></a>domain</code></em>;</span></p></td>
+<td>message domain or <a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-NONE:CAPS"><span class="type">RAPTOR_DOMAIN_NONE</span></a> if not used or known</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-general.html#raptor-log-level" title="enum raptor_log_level"><span class="type">raptor_log_level</span></a> <em class="structfield"><code><a name="raptor-log-message.level"></a>level</code></em>;</span></p></td>
+<td>log message level</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *<em class="structfield"><code><a name="raptor-log-message.locator"></a>locator</code></em>;</span></p></td>
+<td>location associated with message or NULL if not known</td>
+</tr>
+<tr>
+<td><p><span class="term">const <span class="type">char</span> *<em class="structfield"><code><a name="raptor-log-message.text"></a>text</code></em>;</span></p></td>
+<td>message string</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-log-level"></a><h3>enum raptor_log_level</h3>
+<pre class="programlisting">typedef enum {
+ RAPTOR_LOG_LEVEL_NONE,
+ RAPTOR_LOG_LEVEL_TRACE,
+ RAPTOR_LOG_LEVEL_DEBUG,
+ RAPTOR_LOG_LEVEL_INFO,
+ RAPTOR_LOG_LEVEL_WARN,
+ RAPTOR_LOG_LEVEL_ERROR,
+ RAPTOR_LOG_LEVEL_FATAL,
+ RAPTOR_LOG_LEVEL_LAST = RAPTOR_LOG_LEVEL_FATAL
+} raptor_log_level;
+</pre>
+<p>
+Log levels
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="RAPTOR-LOG-LEVEL-NONE:CAPS"></a><span class="term"><code class="literal">RAPTOR_LOG_LEVEL_NONE</code></span></p></td>
+<td>Internal
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-LOG-LEVEL-TRACE:CAPS"></a><span class="term"><code class="literal">RAPTOR_LOG_LEVEL_TRACE</code></span></p></td>
+<td>very fine-grained tracing messages information
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-LOG-LEVEL-DEBUG:CAPS"></a><span class="term"><code class="literal">RAPTOR_LOG_LEVEL_DEBUG</code></span></p></td>
+<td>fine-grained tracing messages suitable for debugging
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-LOG-LEVEL-INFO:CAPS"></a><span class="term"><code class="literal">RAPTOR_LOG_LEVEL_INFO</code></span></p></td>
+<td>coarse-grained information messages
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-LOG-LEVEL-WARN:CAPS"></a><span class="term"><code class="literal">RAPTOR_LOG_LEVEL_WARN</code></span></p></td>
+<td>warning messages of potentially harmful problems
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-LOG-LEVEL-ERROR:CAPS"></a><span class="term"><code class="literal">RAPTOR_LOG_LEVEL_ERROR</code></span></p></td>
+<td>error messages where the application can continue
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-LOG-LEVEL-FATAL:CAPS"></a><span class="term"><code class="literal">RAPTOR_LOG_LEVEL_FATAL</code></span></p></td>
+<td>fatal error message where the application will likely abort
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-LOG-LEVEL-LAST:CAPS"></a><span class="term"><code class="literal">RAPTOR_LOG_LEVEL_LAST</code></span></p></td>
+<td>Internal
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-log-level-get-label"></a><h3>raptor_log_level_get_label ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> * raptor_log_level_get_label (<em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-log-level" title="enum raptor_log_level"><span class="type">raptor_log_level</span></a> level</code></em>);</pre>
+<p>
+Get label for a log message level
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>level</code></em> :</span></p></td>
+<td>log message level</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>label string or NULL if level is not valid</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-domain"></a><h3>enum raptor_domain</h3>
+<pre class="programlisting">typedef enum {
+ RAPTOR_DOMAIN_NONE,
+ RAPTOR_DOMAIN_IOSTREAM,
+ RAPTOR_DOMAIN_NAMESPACE,
+ RAPTOR_DOMAIN_PARSER,
+ RAPTOR_DOMAIN_QNAME,
+ RAPTOR_DOMAIN_SAX2,
+ RAPTOR_DOMAIN_SERIALIZER,
+ RAPTOR_DOMAIN_TERM,
+ RAPTOR_DOMAIN_TURTLE_WRITER,
+ RAPTOR_DOMAIN_URI,
+ RAPTOR_DOMAIN_WORLD,
+ RAPTOR_DOMAIN_WWW,
+ RAPTOR_DOMAIN_XML_WRITER,
+ RAPTOR_DOMAIN_LAST = RAPTOR_DOMAIN_XML_WRITER
+} raptor_domain;
+</pre>
+<p>
+Log domain
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-NONE:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_NONE</code></span></p></td>
+<td>Internal
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-IOSTREAM:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_IOSTREAM</code></span></p></td>
+<td>I/O stream
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-NAMESPACE:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_NAMESPACE</code></span></p></td>
+<td>XML Namespace / namespace stack
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-PARSER:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_PARSER</code></span></p></td>
+<td>RDF Parser
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-QNAME:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_QNAME</code></span></p></td>
+<td>XML QName
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-SAX2:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_SAX2</code></span></p></td>
+<td>XML SAX2
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-SERIALIZER:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_SERIALIZER</code></span></p></td>
+<td>RDF Serializer
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-TERM:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_TERM</code></span></p></td>
+<td>RDF Term
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-TURTLE-WRITER:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_TURTLE_WRITER</code></span></p></td>
+<td>Turtle Writer
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-URI:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_URI</code></span></p></td>
+<td>RDF Uri
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-WORLD:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_WORLD</code></span></p></td>
+<td>RDF world
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-WWW:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_WWW</code></span></p></td>
+<td>WWW
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-XML-WRITER:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_XML_WRITER</code></span></p></td>
+<td>XML Writer
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-DOMAIN-LAST:CAPS"></a><span class="term"><code class="literal">RAPTOR_DOMAIN_LAST</code></span></p></td>
+<td>Internal
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-domain-get-label"></a><h3>raptor_domain_get_label ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> * raptor_domain_get_label (<em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-domain" title="enum raptor_domain"><span class="type">raptor_domain</span></a> domain</code></em>);</pre>
+<p>
+Get label for a domain
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>domain</code></em> :</span></p></td>
+<td>domain</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>label string or NULL if domain is not valid</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-data-compare-handler"></a><h3>raptor_data_compare_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> (*raptor_data_compare_handler) (<em class="parameter"><code>const <span class="type">void</span> *data1</code></em>,
+ <em class="parameter"><code>const <span class="type">void</span> *data2</code></em>);</pre>
+<p>
+Function to compare two data objects - signature like <code class="function">strcmp()</code> and function pssed to <code class="function">qsort()</code>
+</p>
+<p>
+Designed to be passed into generic data structure constructors
+like <a class="link" href="raptor2-section-avltree.html#raptor-new-avltree" title="raptor_new_avltree ()"><code class="function">raptor_new_avltree()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>data1</code></em> :</span></p></td>
+<td>first data object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>data2</code></em> :</span></p></td>
+<td>second data object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>compare value &lt;0 if <em class="parameter"><code>data1</code></em> is before <em class="parameter"><code>data2</code></em>, =0 if equal, &gt;0 if <em class="parameter"><code>data1</code></em> is after <em class="parameter"><code>data2</code></em>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-data-context-free-handler"></a><h3>raptor_data_context_free_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_data_context_free_handler) (<em class="parameter"><code><span class="type">void</span> *context</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *object</code></em>);</pre>
+<p>
+Handler function for freeing a sequence item with a contextual pointer.
+</p>
+<p>
+Set by <a class="link" href="raptor2-section-sequence.html#raptor-new-sequence-with-context" title="raptor_new_sequence_with_context ()"><code class="function">raptor_new_sequence_with_context()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>context</code></em> :</span></p></td>
+<td>context data for the free function</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>object to free</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-data-context-print-handler"></a><h3>raptor_data_context_print_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> (*raptor_data_context_print_handler)
+ (<em class="parameter"><code><span class="type">void</span> *context</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *object</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *fh</code></em>);</pre>
+<p>
+Function function for printing an object with data context to a stream.
+</p>
+<p>
+Set by <a class="link" href="raptor2-section-sequence.html#raptor-new-sequence-with-context" title="raptor_new_sequence_with_context ()"><code class="function">raptor_new_sequence_with_context()</code></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>context</code></em> :</span></p></td>
+<td>context data for the print function</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>object to print</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>fh</code></em> :</span></p></td>
+<td>FILE* to print to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-data-free-handler"></a><h3>raptor_data_free_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_data_free_handler) (<em class="parameter"><code><span class="type">void</span> *data</code></em>);</pre>
+<p>
+Typedef for function to free a data object - signature like <code class="function">free()</code>
+</p>
+<p>
+Designed to be passed into generic data structure constructors
+like <a class="link" href="raptor2-section-avltree.html#raptor-new-avltree" title="raptor_new_avltree ()"><code class="function">raptor_new_avltree()</code></a>. If <em class="parameter"><code>data</code></em> is NULL, nothing should be done.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
+<td>data object or NULL</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-data-malloc-handler"></a><h3>raptor_data_malloc_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> * (*raptor_data_malloc_handler) (<em class="parameter"><code><span class="type">size_t</span> size</code></em>);</pre>
+<p>
+Typedef for a function to allocate memory - signature like <code class="function">malloc()</code>
+</p>
+<p>
+Designed to be passed into constructors
+like raptor_www_fetch_to_string
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
+<td>data size</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>pointer to newly allocated memory or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-data-print-handler"></a><h3>raptor_data_print_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> (*raptor_data_print_handler) (<em class="parameter"><code><span class="type">void</span> *object</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *fh</code></em>);</pre>
+<p>
+Handler function for printing an object to a stream.
+</p>
+<p>
+Set by <a class="link" href="raptor2-section-sequence.html#raptor-new-sequence" title="raptor_new_sequence ()"><code class="function">raptor_new_sequence()</code></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>object to print</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>fh</code></em> :</span></p></td>
+<td>FILE* to print to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-syntax-bitflags"></a><h3>enum raptor_syntax_bitflags</h3>
+<pre class="programlisting">typedef enum {
+ RAPTOR_SYNTAX_NEED_BASE_URI = 1
+} raptor_syntax_bitflags;
+</pre>
+<p>
+Bit flags for <a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="type">raptor_syntax_description</span></a> flags field
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><a name="RAPTOR-SYNTAX-NEED-BASE-URI:CAPS"></a><span class="term"><code class="literal">RAPTOR_SYNTAX_NEED_BASE_URI</code></span></p></td>
+<td>the syntax requires a base URI
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-syntax-description"></a><h3>raptor_syntax_description</h3>
+<pre class="programlisting">typedef struct {
+ const char* names;
+ unsigned int names_count;
+
+ const char* label;
+
+ const raptor_type_q* mime_types;
+ unsigned int mime_types_count;
+
+ const char* uri_strings;
+ unsigned int uri_strings_count;
+
+ unsigned int flags;
+} raptor_syntax_description;
+</pre>
+<p>
+Description of a syntax or file format.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">const <span class="type">char</span> *<em class="structfield"><code><a name="raptor-syntax-description.names"></a>names</code></em>;</span></p></td>
+<td>array of syntax names - the first one (required) is the public name, the rest are aliases. The array is NULL terminated.</td>
+</tr>
+<tr>
+<td><p><span class="term">unsigned <span class="type">int</span> <em class="structfield"><code><a name="raptor-syntax-description.names-count"></a>names_count</code></em>;</span></p></td>
+<td>size of <em class="parameter"><code>names</code></em> array</td>
+</tr>
+<tr>
+<td><p><span class="term">const <span class="type">char</span> *<em class="structfield"><code><a name="raptor-syntax-description.label"></a>label</code></em>;</span></p></td>
+<td>long descriptive label for syntax</td>
+</tr>
+<tr>
+<td><p><span class="term">const <a class="link" href="raptor2-section-general.html#raptor-type-q" title="raptor_type_q"><span class="type">raptor_type_q</span></a> *<em class="structfield"><code><a name="raptor-syntax-description.mime-types"></a>mime_types</code></em>;</span></p></td>
+<td>Array of (MIME type, Q) values associated with the syntax (or NULL). If present the array is NULL terminated.</td>
+</tr>
+<tr>
+<td><p><span class="term">unsigned <span class="type">int</span> <em class="structfield"><code><a name="raptor-syntax-description.mime-types-count"></a>mime_types_count</code></em>;</span></p></td>
+<td>size of <em class="parameter"><code>mime_types</code></em> array</td>
+</tr>
+<tr>
+<td><p><span class="term">const <span class="type">char</span> *<em class="structfield"><code><a name="raptor-syntax-description.uri-strings"></a>uri_strings</code></em>;</span></p></td>
+<td>array of URIs identifying the syntax (or NULL). The first one if present is the main URI, the rest are aliases. The array is NULL terminated.</td>
+</tr>
+<tr>
+<td><p><span class="term">unsigned <span class="type">int</span> <em class="structfield"><code><a name="raptor-syntax-description.uri-strings-count"></a>uri_strings_count</code></em>;</span></p></td>
+<td>size of <em class="parameter"><code>uri_strings</code></em> array</td>
+</tr>
+<tr>
+<td><p><span class="term">unsigned <span class="type">int</span> <em class="structfield"><code><a name="raptor-syntax-description.flags"></a>flags</code></em>;</span></p></td>
+<td>See <a class="link" href="raptor2-section-general.html#raptor-syntax-bitflags" title="enum raptor_syntax_bitflags"><span class="type">raptor_syntax_bitflags</span></a> for the bits</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-syntax-description-validate"></a><h3>raptor_syntax_description_validate ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_syntax_description_validate (<em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="type">raptor_syntax_description</span></a> *desc</code></em>);</pre>
+<p>
+Validate a syntax description has the required fields (name, labels) and update counts
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>desc</code></em> :</span></p></td>
+<td>description</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-type-q"></a><h3>raptor_type_q</h3>
+<pre class="programlisting">typedef struct {
+ const char* mime_type;
+ size_t mime_type_len;
+ unsigned char q;
+} raptor_type_q;
+</pre>
+<p>
+(MIME Type, Q) pair
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">const <span class="type">char</span> *<em class="structfield"><code><a name="raptor-type-q.mime-type"></a>mime_type</code></em>;</span></p></td>
+<td>MIME type string</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="type">size_t</span> <em class="structfield"><code><a name="raptor-type-q.mime-type-len"></a>mime_type_len</code></em>;</span></p></td>
+<td>length of <em class="parameter"><code>mime_type</code></em>
+</td>
+</tr>
+<tr>
+<td><p><span class="term">unsigned <span class="type">char</span> <em class="structfield"><code><a name="raptor-type-q.q"></a>q</code></em>;</span></p></td>
+<td>Q value 0-10 standing for decimal 0.0-1.0</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-iostream.html b/docs/html/raptor2-section-iostream.html
new file mode 100644
index 0000000..d1b85c8
--- /dev/null
+++ b/docs/html/raptor2-section-iostream.html
@@ -0,0 +1,1041 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>I/O Stream</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-option.html" title="Options">
+<link rel="next" href="raptor2-section-locator.html" title="Locator">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-option.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-locator.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-iostream.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-iostream.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-iostream"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-iostream.top_of_page"></a>I/O Stream</span></h2>
+<p>I/O Stream — Providing streaming I/O writing to files, strings or user code.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-iostream.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream">raptor_iostream</a>;
+<span class="returnvalue">int</span> (<a class="link" href="raptor2-section-iostream.html#raptor-iostream-init-func" title="raptor_iostream_init_func ()">*raptor_iostream_init_func</a>) (<em class="parameter"><code><span class="type">void</span> *context</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-iostream.html#raptor-iostream-finish-func" title="raptor_iostream_finish_func ()">*raptor_iostream_finish_func</a>) (<em class="parameter"><code><span class="type">void</span> *context</code></em>);
+<span class="returnvalue">int</span> (<a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-byte-func" title="raptor_iostream_write_byte_func ()">*raptor_iostream_write_byte_func</a>) (<em class="parameter"><code><span class="type">void</span> *context</code></em>,
+ <em class="parameter"><code>const <span class="type">int</span> byte</code></em>);
+<span class="returnvalue">int</span> (<a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-bytes-func" title="raptor_iostream_write_bytes_func ()">*raptor_iostream_write_bytes_func</a>) (<em class="parameter"><code><span class="type">void</span> *context</code></em>,
+ <em class="parameter"><code>const <span class="type">void</span> *ptr</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> nmemb</code></em>);
+<span class="returnvalue">int</span> (<a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-end-func" title="raptor_iostream_write_end_func ()">*raptor_iostream_write_end_func</a>) (<em class="parameter"><code><span class="type">void</span> *context</code></em>);
+<span class="returnvalue">int</span> (<a class="link" href="raptor2-section-iostream.html#raptor-iostream-read-bytes-func" title="raptor_iostream_read_bytes_func ()">*raptor_iostream_read_bytes_func</a>) (<em class="parameter"><code><span class="type">void</span> *context</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *ptr</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> nmemb</code></em>);
+<span class="returnvalue">int</span> (<a class="link" href="raptor2-section-iostream.html#raptor-iostream-read-eof-func" title="raptor_iostream_read_eof_func ()">*raptor_iostream_read_eof_func</a>) (<em class="parameter"><code><span class="type">void</span> *context</code></em>);
+ <a class="link" href="raptor2-section-iostream.html#raptor-iostream-handler" title="raptor_iostream_handler">raptor_iostream_handler</a>;
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-from-handler" title="raptor_new_iostream_from_handler ()">raptor_new_iostream_from_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-iostream.html#raptor-iostream-handler" title="raptor_iostream_handler"><span class="type">raptor_iostream_handler</span></a> * const handler</code></em>);
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-from-sink" title="raptor_new_iostream_from_sink ()">raptor_new_iostream_from_sink</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-from-filename" title="raptor_new_iostream_from_filename ()">raptor_new_iostream_from_filename</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-from-file-handle" title="raptor_new_iostream_from_file_handle ()">raptor_new_iostream_from_file_handle</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *handle</code></em>);
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-from-string" title="raptor_new_iostream_from_string ()">raptor_new_iostream_from_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-to-sink" title="raptor_new_iostream_to_sink ()">raptor_new_iostream_to_sink</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-to-filename" title="raptor_new_iostream_to_filename ()">raptor_new_iostream_to_filename</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-to-file-handle" title="raptor_new_iostream_to_file_handle ()">raptor_new_iostream_to_file_handle</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *handle</code></em>);
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-to-string" title="raptor_new_iostream_to_string ()">raptor_new_iostream_to_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> **string_p</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-malloc-handler" title="raptor_data_malloc_handler ()"><span class="type">raptor_data_malloc_handler</span></a> const malloc_handler</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-iostream.html#raptor-free-iostream" title="raptor_free_iostream ()">raptor_free_iostream</a> (<em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-iostream.html#raptor-iostream-hexadecimal-write" title="raptor_iostream_hexadecimal_write ()">raptor_iostream_hexadecimal_write</a> (<em class="parameter"><code>unsigned <span class="type">int</span> integer</code></em>,
+ <em class="parameter"><code><span class="type">int</span> width</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-iostream.html#raptor-iostream-read-bytes" title="raptor_iostream_read_bytes ()">raptor_iostream_read_bytes</a> (<em class="parameter"><code><span class="type">void</span> *ptr</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> nmemb</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-iostream.html#raptor-iostream-read-eof" title="raptor_iostream_read_eof ()">raptor_iostream_read_eof</a> (<em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+unsigned <span class="returnvalue">long</span> <a class="link" href="raptor2-section-iostream.html#raptor-iostream-tell" title="raptor_iostream_tell ()">raptor_iostream_tell</a> (<em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-iostream.html#raptor-iostream-counted-string-write" title="raptor_iostream_counted_string_write ()">raptor_iostream_counted_string_write</a>
+ (<em class="parameter"><code>const <span class="type">void</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-iostream.html#raptor-iostream-decimal-write" title="raptor_iostream_decimal_write ()">raptor_iostream_decimal_write</a> (<em class="parameter"><code><span class="type">int</span> integer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-iostream.html#raptor-iostream-string-write" title="raptor_iostream_string_write ()">raptor_iostream_string_write</a> (<em class="parameter"><code>const <span class="type">void</span> *string</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-byte" title="raptor_iostream_write_byte ()">raptor_iostream_write_byte</a> (<em class="parameter"><code>const <span class="type">int</span> byte</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-bytes" title="raptor_iostream_write_bytes ()">raptor_iostream_write_bytes</a> (<em class="parameter"><code>const <span class="type">void</span> *ptr</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> nmemb</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-end" title="raptor_iostream_write_end ()">raptor_iostream_write_end</a> (<em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-iostream.html#raptor-bnodeid-ntriples-write" title="raptor_bnodeid_ntriples_write ()">raptor_bnodeid_ntriples_write</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *bnodeid</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-iostream.html#raptor-string-ntriples-write" title="raptor_string_ntriples_write ()">raptor_string_ntriples_write</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> delim</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-iostream.html#raptor-string-python-write" title="raptor_string_python_write ()">raptor_string_python_write</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> delim</code></em>,
+ <em class="parameter"><code><span class="type">int</span> flags</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-iostream.description"></a><h2>Description</h2>
+<p>
+An class providing an I/O writer abstraction that allows generating
+output that can be stored or passed on to system files, strings
+allocated in memory (usually via <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a>), system
+file handles (<code class="literal">FILE*</code>) or to a user function.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-iostream.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-iostream"></a><h3>raptor_iostream</h3>
+<pre class="programlisting">raptor_iostream* raptor_iostream;
+</pre>
+<p>
+Raptor I/O Stream class
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-init-func"></a><h3>raptor_iostream_init_func ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> (*raptor_iostream_init_func) (<em class="parameter"><code><span class="type">void</span> *context</code></em>);</pre>
+<p>
+Handler function for <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> initialising.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>context</code></em> :</span></p></td>
+<td>stream context data</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-finish-func"></a><h3>raptor_iostream_finish_func ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_iostream_finish_func) (<em class="parameter"><code><span class="type">void</span> *context</code></em>);</pre>
+<p>
+Handler function for <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> terminating.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>context</code></em> :</span></p></td>
+<td>stream context data</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-write-byte-func"></a><h3>raptor_iostream_write_byte_func ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> (*raptor_iostream_write_byte_func) (<em class="parameter"><code><span class="type">void</span> *context</code></em>,
+ <em class="parameter"><code>const <span class="type">int</span> byte</code></em>);</pre>
+<p>
+Handler function for implementing <a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-byte" title="raptor_iostream_write_byte ()"><code class="function">raptor_iostream_write_byte()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>context</code></em> :</span></p></td>
+<td>stream context data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>byte</code></em> :</span></p></td>
+<td>byte to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-write-bytes-func"></a><h3>raptor_iostream_write_bytes_func ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> (*raptor_iostream_write_bytes_func) (<em class="parameter"><code><span class="type">void</span> *context</code></em>,
+ <em class="parameter"><code>const <span class="type">void</span> *ptr</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> nmemb</code></em>);</pre>
+<p>
+Handler function for implementing <a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-bytes" title="raptor_iostream_write_bytes ()"><code class="function">raptor_iostream_write_bytes()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>context</code></em> :</span></p></td>
+<td>stream context data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ptr</code></em> :</span></p></td>
+<td>pointer to bytes to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
+<td>size of item</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nmemb</code></em> :</span></p></td>
+<td>number of items</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-write-end-func"></a><h3>raptor_iostream_write_end_func ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> (*raptor_iostream_write_end_func) (<em class="parameter"><code><span class="type">void</span> *context</code></em>);</pre>
+<p>
+Handler function for implementing <a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-end" title="raptor_iostream_write_end ()"><code class="function">raptor_iostream_write_end()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>context</code></em> :</span></p></td>
+<td>stream context data</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-read-bytes-func"></a><h3>raptor_iostream_read_bytes_func ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> (*raptor_iostream_read_bytes_func) (<em class="parameter"><code><span class="type">void</span> *context</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *ptr</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> nmemb</code></em>);</pre>
+<p>
+Handler function for implementing <a class="link" href="raptor2-section-iostream.html#raptor-iostream-read-bytes" title="raptor_iostream_read_bytes ()"><code class="function">raptor_iostream_read_bytes()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>context</code></em> :</span></p></td>
+<td>stream context data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ptr</code></em> :</span></p></td>
+<td>pointer to buffer to read into</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
+<td>size of buffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nmemb</code></em> :</span></p></td>
+<td>number of items</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>number of items read, 0 or &lt; <em class="parameter"><code>size</code></em> on EOF, &lt;0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-read-eof-func"></a><h3>raptor_iostream_read_eof_func ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> (*raptor_iostream_read_eof_func) (<em class="parameter"><code><span class="type">void</span> *context</code></em>);</pre>
+<p>
+Handler function for implementing <a class="link" href="raptor2-section-iostream.html#raptor-iostream-read-eof" title="raptor_iostream_read_eof ()"><code class="function">raptor_iostream_read_eof()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>context</code></em> :</span></p></td>
+<td>stream context data</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if EOF</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-handler"></a><h3>raptor_iostream_handler</h3>
+<pre class="programlisting">typedef struct {
+ int version;
+
+ /* V1 functions */
+ raptor_iostream_init_func init;
+ raptor_iostream_finish_func finish;
+ raptor_iostream_write_byte_func write_byte;
+ raptor_iostream_write_bytes_func write_bytes;
+ raptor_iostream_write_end_func write_end;
+
+ /* V2 functions */
+ raptor_iostream_read_bytes_func read_bytes;
+ raptor_iostream_read_eof_func read_eof;
+} raptor_iostream_handler;
+</pre>
+<p>
+I/O stream implementation handler structure.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><span class="type">int</span> <em class="structfield"><code><a name="raptor-iostream-handler.version"></a>version</code></em>;</span></p></td>
+<td>interface version. Presently 1 or 2.</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-iostream.html#raptor-iostream-init-func" title="raptor_iostream_init_func ()"><span class="type">raptor_iostream_init_func</span></a> <em class="structfield"><code><a name="raptor-iostream-handler.init"></a>init</code></em>;</span></p></td>
+<td>initialisation handler - optional, called at most once (V1)</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-iostream.html#raptor-iostream-finish-func" title="raptor_iostream_finish_func ()"><span class="type">raptor_iostream_finish_func</span></a> <em class="structfield"><code><a name="raptor-iostream-handler.finish"></a>finish</code></em>;</span></p></td>
+<td>finishing handler - optional, called at most once (V1)</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-byte-func" title="raptor_iostream_write_byte_func ()"><span class="type">raptor_iostream_write_byte_func</span></a> <em class="structfield"><code><a name="raptor-iostream-handler.write-byte"></a>write_byte</code></em>;</span></p></td>
+<td>write byte handler - required (for writing) (V1)</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-bytes-func" title="raptor_iostream_write_bytes_func ()"><span class="type">raptor_iostream_write_bytes_func</span></a> <em class="structfield"><code><a name="raptor-iostream-handler.write-bytes"></a>write_bytes</code></em>;</span></p></td>
+<td>write bytes handler - required (for writing) (V1)</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-iostream.html#raptor-iostream-write-end-func" title="raptor_iostream_write_end_func ()"><span class="type">raptor_iostream_write_end_func</span></a> <em class="structfield"><code><a name="raptor-iostream-handler.write-end"></a>write_end</code></em>;</span></p></td>
+<td>write end handler - optional (for writing), called at most once (V1)</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-iostream.html#raptor-iostream-read-bytes-func" title="raptor_iostream_read_bytes_func ()"><span class="type">raptor_iostream_read_bytes_func</span></a> <em class="structfield"><code><a name="raptor-iostream-handler.read-bytes"></a>read_bytes</code></em>;</span></p></td>
+<td>read bytes handler - required (for reading) (V2)</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-iostream.html#raptor-iostream-read-eof-func" title="raptor_iostream_read_eof_func ()"><span class="type">raptor_iostream_read_eof_func</span></a> <em class="structfield"><code><a name="raptor-iostream-handler.read-eof"></a>read_eof</code></em>;</span></p></td>
+<td>read EOF handler - required (for reading) (V2)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-iostream-from-handler"></a><h3>raptor_new_iostream_from_handler ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * raptor_new_iostream_from_handler (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-iostream.html#raptor-iostream-handler" title="raptor_iostream_handler"><span class="type">raptor_iostream_handler</span></a> * const handler</code></em>);</pre>
+<p>
+Create a new iostream over a user-defined handler
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>pointer to context information to pass in to calls</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>pointer to handler methods</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-iostream-from-sink"></a><h3>raptor_new_iostream_from_sink ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * raptor_new_iostream_from_sink (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);</pre>
+<p>
+Create a new read iostream from a sink.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-iostream-from-filename"></a><h3>raptor_new_iostream_from_filename ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * raptor_new_iostream_from_filename (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);</pre>
+<p>
+Constructor - create a new iostream reading from a filename.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>filename</code></em> :</span></p></td>
+<td>Input filename to open and read from</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-iostream-from-file-handle"></a><h3>raptor_new_iostream_from_file_handle ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * raptor_new_iostream_from_file_handle
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *handle</code></em>);</pre>
+<p>
+Constructor - create a new iostream reading from a file_handle.
+</p>
+<p>
+The <em class="parameter"><code>handle</code></em> must already be open for reading.
+NOTE: This does not fclose the <em class="parameter"><code>handle</code></em> when it is finished.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handle</code></em> :</span></p></td>
+<td>Input file_handle to open and read from</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-iostream-from-string"></a><h3>raptor_new_iostream_from_string ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * raptor_new_iostream_from_string (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);</pre>
+<p>
+Constructor - create a new iostream reading from a string.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>pointer to string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-iostream-to-sink"></a><h3>raptor_new_iostream_to_sink ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * raptor_new_iostream_to_sink (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);</pre>
+<p>
+Create a new write iostream to a sink.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-iostream-to-filename"></a><h3>raptor_new_iostream_to_filename ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * raptor_new_iostream_to_filename (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);</pre>
+<p>
+Constructor - create a new iostream writing to a filename.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>filename</code></em> :</span></p></td>
+<td>Output filename to open and write to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-iostream-to-file-handle"></a><h3>raptor_new_iostream_to_file_handle ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * raptor_new_iostream_to_file_handle (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *handle</code></em>);</pre>
+<p>
+Constructor - create a new iostream writing to a FILE*.
+</p>
+<p>
+The <em class="parameter"><code>handle</code></em> must already be open for writing.
+NOTE: This does not fclose the <em class="parameter"><code>handle</code></em> when it is finished.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handle</code></em> :</span></p></td>
+<td>FILE* handle to write to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-iostream-to-string"></a><h3>raptor_new_iostream_to_string ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * raptor_new_iostream_to_string (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> **string_p</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-malloc-handler" title="raptor_data_malloc_handler ()"><span class="type">raptor_data_malloc_handler</span></a> const malloc_handler</code></em>);</pre>
+<p>
+Constructor - create a new iostream writing to a string.
+</p>
+<p>
+If <em class="parameter"><code>malloc_handler</code></em> is null, raptor will allocate it using it's
+own memory allocator. *<em class="parameter"><code>string_p</code></em> is set to NULL on failure (and
+*<em class="parameter"><code>length_p</code></em> to 0 if <em class="parameter"><code>length_p</code></em> is not NULL).
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string_p</code></em> :</span></p></td>
+<td>pointer to location to hold string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length_p</code></em> :</span></p></td>
+<td>pointer to location to hold length of string (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>malloc_handler</code></em> :</span></p></td>
+<td>pointer to <code class="function">malloc()</code> to use to make string (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-iostream"></a><h3>raptor_free_iostream ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_iostream (<em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Destructor - destroy an iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>iostream object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-hexadecimal-write"></a><h3>raptor_iostream_hexadecimal_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_iostream_hexadecimal_write (<em class="parameter"><code>unsigned <span class="type">int</span> integer</code></em>,
+ <em class="parameter"><code><span class="type">int</span> width</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write an integer in hexadecimal to the iostream.
+</p>
+<p>
+Always 0-fills the entire field and writes in uppercase A-F
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>integer</code></em> :</span></p></td>
+<td>unsigned integer to format as hexadecimal</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>width</code></em> :</span></p></td>
+<td>field width</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-read-bytes"></a><h3>raptor_iostream_read_bytes ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_iostream_read_bytes (<em class="parameter"><code><span class="type">void</span> *ptr</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> nmemb</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Read bytes to the iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ptr</code></em> :</span></p></td>
+<td>start of buffer to read objects into</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
+<td>size of object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nmemb</code></em> :</span></p></td>
+<td>number of objects to read</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>number of objects read, 0 or less than nmemb on EOF, &lt;0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-read-eof"></a><h3>raptor_iostream_read_eof ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_iostream_read_eof (<em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Check if an read iostream has ended
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor read iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if EOF (or not a read iostream)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-tell"></a><h3>raptor_iostream_tell ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">long</span> raptor_iostream_tell (<em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Get the offset in the iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>offset in iostream</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-counted-string-write"></a><h3>raptor_iostream_counted_string_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_iostream_counted_string_write
+ (<em class="parameter"><code>const <span class="type">void</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write a counted string to the iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>string length</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-decimal-write"></a><h3>raptor_iostream_decimal_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_iostream_decimal_write (<em class="parameter"><code><span class="type">int</span> integer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write an integer in decimal to the iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>integer</code></em> :</span></p></td>
+<td>integer to format as decimal</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-string-write"></a><h3>raptor_iostream_string_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_iostream_string_write (<em class="parameter"><code>const <span class="type">void</span> *string</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write a NULL-terminated string to the iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-write-byte"></a><h3>raptor_iostream_write_byte ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_iostream_write_byte (<em class="parameter"><code>const <span class="type">int</span> byte</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write a byte to the iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>byte</code></em> :</span></p></td>
+<td>byte to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-write-bytes"></a><h3>raptor_iostream_write_bytes ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_iostream_write_bytes (<em class="parameter"><code>const <span class="type">void</span> *ptr</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> nmemb</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write bytes to the iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ptr</code></em> :</span></p></td>
+<td>start of objects to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
+<td>size of object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nmemb</code></em> :</span></p></td>
+<td>number of objects</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>number of objects actually written, which may be less than nmemb. &lt;0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-iostream-write-end"></a><h3>raptor_iostream_write_end ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_iostream_write_end (<em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+End writing to the iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-bnodeid-ntriples-write"></a><h3>raptor_bnodeid_ntriples_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_bnodeid_ntriples_write (<em class="parameter"><code>const unsigned <span class="type">char</span> *bnodeid</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write a blank node ID in a form legal for N-Triples with _: prefix
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>bnodeid</code></em> :</span></p></td>
+<td>bnode ID to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of bnode ID</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> to write to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-string-ntriples-write"></a><h3>raptor_string_ntriples_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_string_ntriples_write (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> delim</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write an UTF-8 string using N-Triples escapes to an iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>UTF-8 string to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of UTF-8 string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>delim</code></em> :</span></p></td>
+<td>Terminating delimiter character for string (such as " or &gt;)
+or \0 for no escaping.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> to write to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure such as bad UTF-8 encoding.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-string-python-write"></a><h3>raptor_string_python_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_string_python_write (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> delim</code></em>,
+ <em class="parameter"><code><span class="type">int</span> flags</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write a UTF-8 string using Python-style escapes (N-Triples, Turtle, JSON) to an iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>UTF-8 string to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of UTF-8 string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>delim</code></em> :</span></p></td>
+<td>Terminating delimiter character for string (such as " or &gt;)
+or \0 for no escaping.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td>flags 0=N-Triples mode, 1=Turtle (allow raw UTF-8), 2=Turtle long string (allow raw UTF-8), 3=JSON</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> to write to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure such as bad UTF-8 encoding.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-locator.html b/docs/html/raptor2-section-locator.html
new file mode 100644
index 0000000..79748e6
--- /dev/null
+++ b/docs/html/raptor2-section-locator.html
@@ -0,0 +1,281 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Locator</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-iostream.html" title="I/O Stream">
+<link rel="next" href="raptor2-section-parser.html" title="Parser">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-iostream.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-parser.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-locator.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-locator.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-locator"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-locator.top_of_page"></a>Locator</span></h2>
+<p>Locator — Location information for errors, warnings and messages.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-locator.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis"> <a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator">raptor_locator</a>;
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-locator.html#raptor-locator-print" title="raptor_locator_print ()">raptor_locator_print</a> (<em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *stream</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-locator.html#raptor-locator-format" title="raptor_locator_format ()">raptor_locator_format</a> (<em class="parameter"><code><span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-locator.html#raptor-locator-line" title="raptor_locator_line ()">raptor_locator_line</a> (<em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-locator.html#raptor-locator-column" title="raptor_locator_column ()">raptor_locator_column</a> (<em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-locator.html#raptor-locator-byte" title="raptor_locator_byte ()">raptor_locator_byte</a> (<em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>);
+const <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-locator.html#raptor-locator-file" title="raptor_locator_file ()">raptor_locator_file</a> (<em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>);
+const <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-locator.html#raptor-locator-uri" title="raptor_locator_uri ()">raptor_locator_uri</a> (<em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-locator.description"></a><h2>Description</h2>
+<p>
+A small structure that can be optionally filled in when
+errors, warnings or other messages are generated and returned
+to user code.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-locator.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-locator"></a><h3>raptor_locator</h3>
+<pre class="programlisting">typedef struct {
+ raptor_uri *uri;
+ const char *file;
+ int line;
+ int column;
+ int byte;
+} raptor_locator;
+</pre>
+<p>
+Location information for an error, warning or information message.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *<em class="structfield"><code><a name="raptor-locator.uri"></a>uri</code></em>;</span></p></td>
+<td>URI of location (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term">const <span class="type">char</span> *<em class="structfield"><code><a name="raptor-locator.file"></a>file</code></em>;</span></p></td>
+<td>Filename of location (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="type">int</span> <em class="structfield"><code><a name="raptor-locator.line"></a>line</code></em>;</span></p></td>
+<td>Line number of location (or &lt;0 for no line)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="type">int</span> <em class="structfield"><code><a name="raptor-locator.column"></a>column</code></em>;</span></p></td>
+<td>Column number of location (or &lt;0 for no column)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="type">int</span> <em class="structfield"><code><a name="raptor-locator.byte"></a>byte</code></em>;</span></p></td>
+<td>Byte number of location (or &lt;0 for no byte)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-locator-print"></a><h3>raptor_locator_print ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_locator_print (<em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *stream</code></em>);</pre>
+<p>
+Print a raptor locator to a stream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>locator</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> to print</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
+<td>stream to print to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-locator-format"></a><h3>raptor_locator_format ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_locator_format (<em class="parameter"><code><span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>);</pre>
+<p>
+Format a raptor locator as a string.
+</p>
+<p>
+If buffer is NULL or length is insufficient for the size of
+the locator, returns the number of additional bytes required
+in the buffer to write the locator.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
+<td>buffer to store format</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>size of buffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>locator</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> to format</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>0 on success, &gt;0 if additional bytes required in buffer, &lt;0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-locator-line"></a><h3>raptor_locator_line ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_locator_line (<em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>);</pre>
+<p>
+Get line number from locator.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>locator</code></em> :</span></p></td>
+<td>locator</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>integer line number, or -1 if there is no line number available</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-locator-column"></a><h3>raptor_locator_column ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_locator_column (<em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>);</pre>
+<p>
+Get column number from locator.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>locator</code></em> :</span></p></td>
+<td>locator</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>integer column number, or -1 if there is no column number available</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-locator-byte"></a><h3>raptor_locator_byte ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_locator_byte (<em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>);</pre>
+<p>
+Get the locator byte offset from locator.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>locator</code></em> :</span></p></td>
+<td>locator</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>integer byte number, or -1 if there is no byte offset available</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-locator-file"></a><h3>raptor_locator_file ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> * raptor_locator_file (<em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>);</pre>
+<p>
+Get file name from locator.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>locator</code></em> :</span></p></td>
+<td>locator</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>string file name, or NULL if there is no filename available</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-locator-uri"></a><h3>raptor_locator_uri ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> * raptor_locator_uri (<em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>);</pre>
+<p>
+Get URI from locator.
+</p>
+<p>
+Returns a pointer to a shared string version of the URI in
+the locator. This must be copied if it is needed.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>locator</code></em> :</span></p></td>
+<td>locator</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>string URI, or NULL if there is no URI available</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-memory.html b/docs/html/raptor2-section-memory.html
new file mode 100644
index 0000000..c6cf052
--- /dev/null
+++ b/docs/html/raptor2-section-memory.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Memory</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-general.html" title="General">
+<link rel="next" href="raptor2-section-avltree.html" title="AVL Trees">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-general.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-avltree.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-memory.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-memory.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-memory"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-memory.top_of_page"></a>Memory</span></h2>
+<p>Memory — Memory handling functions</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-memory.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis"><span class="returnvalue">void</span> <a class="link" href="raptor2-section-memory.html#raptor-free-memory" title="raptor_free_memory ()">raptor_free_memory</a> (<em class="parameter"><code><span class="type">void</span> *ptr</code></em>);
+<span class="returnvalue">void</span> * <a class="link" href="raptor2-section-memory.html#raptor-alloc-memory" title="raptor_alloc_memory ()">raptor_alloc_memory</a> (<em class="parameter"><code><span class="type">size_t</span> size</code></em>);
+<span class="returnvalue">void</span> * <a class="link" href="raptor2-section-memory.html#raptor-calloc-memory" title="raptor_calloc_memory ()">raptor_calloc_memory</a> (<em class="parameter"><code><span class="type">size_t</span> nmemb</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-memory.description"></a><h2>Description</h2>
+<p>
+Wrappers around the free, malloc and calloc functions but
+called from inside the library. Required by some systems
+to handle multiple-HEAPs and pass memory to and from the library.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-memory.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-free-memory"></a><h3>raptor_free_memory ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_memory (<em class="parameter"><code><span class="type">void</span> *ptr</code></em>);</pre>
+<p>
+Free memory allocated inside raptor.
+</p>
+<p>
+Some systems require memory allocated in a library to
+be deallocated in that library. This function allows
+memory allocated by raptor to be freed.
+</p>
+<p>
+Examples include the result of the '_to_' methods that returns
+allocated memory such as raptor_uri_filename_to_uri_string,
+raptor_uri_filename_to_uri_string
+and raptor_uri_uri_string_to_filename_fragment
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>ptr</code></em> :</span></p></td>
+<td>memory pointer</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-alloc-memory"></a><h3>raptor_alloc_memory ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> * raptor_alloc_memory (<em class="parameter"><code><span class="type">size_t</span> size</code></em>);</pre>
+<p>
+Allocate memory inside raptor.
+</p>
+<p>
+Some systems require memory allocated in a library to
+be deallocated in that library. This function allows
+memory to be allocated inside the raptor shared library
+that can be freed inside raptor either internally or via
+raptor_free_memory.
+</p>
+<p>
+Examples include using this in the <a class="link" href="raptor2-section-world.html#raptor-world-generate-bnodeid" title="raptor_world_generate_bnodeid ()"><code class="function">raptor_world_generate_bnodeid()</code></a> handler
+code to create new strings that will be used internally
+as short identifiers and freed later on by the parsers.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
+<td>size of memory to allocate</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the address of the allocated memory or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-calloc-memory"></a><h3>raptor_calloc_memory ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> * raptor_calloc_memory (<em class="parameter"><code><span class="type">size_t</span> nmemb</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>);</pre>
+<p>
+Allocate zeroed array of items inside raptor.
+</p>
+<p>
+Some systems require memory allocated in a library to
+be deallocated in that library. This function allows
+memory to be allocated inside the raptor shared library
+that can be freed inside raptor either internally or via
+raptor_free_memory.
+</p>
+<p>
+Examples include using this in the <a class="link" href="raptor2-section-world.html#raptor-world-generate-bnodeid" title="raptor_world_generate_bnodeid ()"><code class="function">raptor_world_generate_bnodeid()</code></a> handler
+code to create new strings that will be used internally
+as short identifiers and freed later on by the parsers.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nmemb</code></em> :</span></p></td>
+<td>number of members</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
+<td>size of item</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the address of the allocated memory or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-option.html b/docs/html/raptor2-section-option.html
new file mode 100644
index 0000000..1b31b37
--- /dev/null
+++ b/docs/html/raptor2-section-option.html
@@ -0,0 +1,602 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Options</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-constants.html" title="Constants">
+<link rel="next" href="raptor2-section-iostream.html" title="I/O Stream">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-constants.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-iostream.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-option.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-option.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-option"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-option.top_of_page"></a>Options</span></h2>
+<p>Options — Class options</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-option.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">enum <a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option">raptor_option</a>;
+ <a class="link" href="raptor2-section-option.html#raptor-option-description" title="raptor_option_description">raptor_option_description</a>;
+unsigned <span class="returnvalue">int</span> <a class="link" href="raptor2-section-option.html#raptor-option-get-count" title="raptor_option_get_count ()">raptor_option_get_count</a> (<em class="parameter"><code><span class="type">void</span></code></em>);
+enum <a class="link" href="raptor2-section-option.html#raptor-option-value-type" title="enum raptor_option_value_type">raptor_option_value_type</a>;
+const <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-option.html#raptor-option-get-value-type-label" title="raptor_option_get_value_type_label ()">raptor_option_get_value_type_label</a> (<em class="parameter"><code>const <a class="link" href="raptor2-section-option.html#raptor-option-value-type" title="enum raptor_option_value_type"><span class="type">raptor_option_value_type</span></a> type</code></em>);
+<a class="link" href="raptor2-section-option.html#raptor-option-description" title="raptor_option_description"><span class="returnvalue">raptor_option_description</span></a> * <a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()">raptor_world_get_option_description</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-general.html#raptor-domain" title="enum raptor_domain"><span class="type">raptor_domain</span></a> domain</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-option.html#raptor-free-option-description" title="raptor_free_option_description ()">raptor_free_option_description</a> (<em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option-description" title="raptor_option_description"><span class="type">raptor_option_description</span></a> *option_description</code></em>);
+<a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="returnvalue">raptor_option</span></a> <a class="link" href="raptor2-section-option.html#raptor-world-get-option-from-uri" title="raptor_world_get_option_from_uri ()">raptor_world_get_option_from_uri</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-option.description"></a><h2>Description</h2>
+<p>
+Options for several classes such as <a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a>, <a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a>
+<a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> and <a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> that can be get and set.
+Utility functions exist to enumerate them, their description and
+the parameter type taken.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-option.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-option"></a><h3>enum raptor_option</h3>
+<pre class="programlisting">typedef enum {
+ RAPTOR_OPTION_SCANNING,
+ RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES,
+ RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES,
+ RAPTOR_OPTION_ALLOW_BAGID,
+ RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST,
+ RAPTOR_OPTION_NORMALIZE_LANGUAGE,
+ RAPTOR_OPTION_NON_NFC_FATAL,
+ RAPTOR_OPTION_WARN_OTHER_PARSETYPES,
+ RAPTOR_OPTION_CHECK_RDF_ID,
+ RAPTOR_OPTION_RELATIVE_URIS,
+ RAPTOR_OPTION_WRITER_AUTO_INDENT,
+ RAPTOR_OPTION_WRITER_AUTO_EMPTY,
+ RAPTOR_OPTION_WRITER_INDENT_WIDTH,
+ RAPTOR_OPTION_WRITER_XML_VERSION,
+ RAPTOR_OPTION_WRITER_XML_DECLARATION,
+ RAPTOR_OPTION_NO_NET,
+ RAPTOR_OPTION_RESOURCE_BORDER,
+ RAPTOR_OPTION_LITERAL_BORDER,
+ RAPTOR_OPTION_BNODE_BORDER,
+ RAPTOR_OPTION_RESOURCE_FILL,
+ RAPTOR_OPTION_LITERAL_FILL,
+ RAPTOR_OPTION_BNODE_FILL,
+ RAPTOR_OPTION_HTML_TAG_SOUP,
+ RAPTOR_OPTION_MICROFORMATS,
+ RAPTOR_OPTION_HTML_LINK,
+ RAPTOR_OPTION_WWW_TIMEOUT,
+ RAPTOR_OPTION_WRITE_BASE_URI,
+ RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL,
+ RAPTOR_OPTION_WWW_HTTP_USER_AGENT,
+ RAPTOR_OPTION_JSON_CALLBACK,
+ RAPTOR_OPTION_JSON_EXTRA_DATA,
+ RAPTOR_OPTION_RSS_TRIPLES,
+ RAPTOR_OPTION_ATOM_ENTRY_URI,
+ RAPTOR_OPTION_PREFIX_ELEMENTS,
+ RAPTOR_OPTION_STRICT,
+ RAPTOR_OPTION_WWW_CERT_FILENAME,
+ RAPTOR_OPTION_WWW_CERT_TYPE,
+ RAPTOR_OPTION_WWW_CERT_PASSPHRASE,
+ RAPTOR_OPTION_NO_FILE,
+ RAPTOR_OPTION_WWW_SSL_VERIFY_PEER,
+ RAPTOR_OPTION_WWW_SSL_VERIFY_HOST,
+ RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES,
+ RAPTOR_OPTION_LAST = RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES
+} raptor_option;
+</pre>
+<p>
+Raptor parser, serializer or XML writer options.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="RAPTOR-OPTION-SCANNING:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_SCANNING</code></span></p></td>
+<td>If true (default false), the RDF/XML
+ parser will look for embedded rdf:RDF elements inside the XML
+ content, and not require that the XML start with an rdf:RDF root
+ element.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-ALLOW-NON-NS-ATTRIBUTES:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES</code></span></p></td>
+<td>If true (default true)
+ then the RDF/XML parser will allow non-XML namespaced attributes
+ to be accepted as well as rdf: namespaced ones. For example,
+ 'about' and 'ID' will be interpreted as if they were rdf:about
+ and rdf:ID respectively.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-ALLOW-OTHER-PARSETYPES:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES</code></span></p></td>
+<td>If true (default true)
+ then the RDF/XML parser will allow unknown parsetypes to be
+ present and will pass them on to the user. Unimplemented at
+ present.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-ALLOW-BAGID:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_ALLOW_BAGID</code></span></p></td>
+<td>If true (default true) then the
+ RDF/XML parser will support the rdf:bagID attribute that was
+ removed from the RDF/XML language when it was revised. This
+ support may be removed in future.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-ALLOW-RDF-TYPE-RDF-LIST:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST</code></span></p></td>
+<td>If true (default false)
+ then the RDF/XML parser will generate the idList rdf:type
+ rdf:List triple in the handling of rdf:parseType="Collection".
+ This triple was removed during the revising of RDF/XML after
+ collections were initially added.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-NORMALIZE-LANGUAGE:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_NORMALIZE_LANGUAGE</code></span></p></td>
+<td>If true (default true) then
+ XML language values such as from xml:lang will be normalized to
+ lowercase.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-NON-NFC-FATAL:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_NON_NFC_FATAL</code></span></p></td>
+<td>If true (default false) then
+ illegal Unicode Normal Form C in literals will give a fatal
+ error, otherwise just a warning.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WARN-OTHER-PARSETYPES:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WARN_OTHER_PARSETYPES</code></span></p></td>
+<td>If true (default true) then
+ the RDF/XML parser will warn about unknown rdf:parseType values.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-CHECK-RDF-ID:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_CHECK_RDF_ID</code></span></p></td>
+<td>If true (default true) then the
+ RDF/XML will check rdf:ID attribute values for duplicates and
+ cause an error if any are found.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-RELATIVE-URIS:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_RELATIVE_URIS</code></span></p></td>
+<td>If true (default true) then
+ relative URIs will be used wherever possible when serializing.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WRITER-AUTO-INDENT:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WRITER_AUTO_INDENT</code></span></p></td>
+<td>Automatically indent elements when
+ seriailizing.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WRITER-AUTO-EMPTY:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WRITER_AUTO_EMPTY</code></span></p></td>
+<td>Automatically detect and
+ abbreviate empty elements when serializing.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WRITER-INDENT-WIDTH:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WRITER_INDENT_WIDTH</code></span></p></td>
+<td>Integer number of spaces to use
+ for each indent level when serializing with auto indent.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WRITER-XML-VERSION:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WRITER_XML_VERSION</code></span></p></td>
+<td>Integer XML version XML 1.0 (10) or XML 1.1 (11)
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WRITER-XML-DECLARATION:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WRITER_XML_DECLARATION</code></span></p></td>
+<td>Write XML 1.0 or 1.1 declaration.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-NO-NET:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_NO_NET</code></span></p></td>
+<td>Deny network requests inside other requests.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-RESOURCE-BORDER:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_RESOURCE_BORDER</code></span></p></td>
+<td>Border color of resource
+ nodes for GraphViz DOT serializer.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-LITERAL-BORDER:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_LITERAL_BORDER</code></span></p></td>
+<td>Border color of literal nodes
+ for GraphViz DOT serializer.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-BNODE-BORDER:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_BNODE_BORDER</code></span></p></td>
+<td>Border color of blank nodes for
+ GraphViz DOT serializer.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-RESOURCE-FILL:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_RESOURCE_FILL</code></span></p></td>
+<td>Fill color of resource nodes
+ for GraphViz DOT serializer.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-LITERAL-FILL:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_LITERAL_FILL</code></span></p></td>
+<td>Fill color of literal nodes for
+ GraphViz DOT serializer.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-BNODE-FILL:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_BNODE_FILL</code></span></p></td>
+<td>Fill color of blank nodes for
+ GraphViz DOT serializer.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-HTML-TAG-SOUP:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_HTML_TAG_SOUP</code></span></p></td>
+<td>Use a lax HTML parser if an XML parser
+ fails when read HTML for GRDDL parser.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-MICROFORMATS:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_MICROFORMATS</code></span></p></td>
+<td>Look for microformats for GRDDL parser.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-HTML-LINK:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_HTML_LINK</code></span></p></td>
+<td>Look for head &lt;link&gt; to type rdf/xml
+ for GRDDL parser.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WWW-TIMEOUT:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WWW_TIMEOUT</code></span></p></td>
+<td>Set timeout for internal WWW URI requests
+ for GRDDL parser.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WRITE-BASE-URI:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WRITE_BASE_URI</code></span></p></td>
+<td>Write <em class="parameter"><code>base</code></em> directive for Turtle/N3.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WWW-HTTP-CACHE-CONTROL:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL</code></span></p></td>
+<td>HTTP Cache-Control: header
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WWW-HTTP-USER-AGENT:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WWW_HTTP_USER_AGENT</code></span></p></td>
+<td>HTTP User-Agent: header
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-JSON-CALLBACK:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_JSON_CALLBACK</code></span></p></td>
+<td>JSON serializer callback function.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-JSON-EXTRA-DATA:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_JSON_EXTRA_DATA</code></span></p></td>
+<td>JSON serializer extra top-level data
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-RSS-TRIPLES:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_RSS_TRIPLES</code></span></p></td>
+<td>Atom/RSS serializer writes extra RDF triples it finds (none, rdf-xml, atom-triples)
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-ATOM-ENTRY-URI:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_ATOM_ENTRY_URI</code></span></p></td>
+<td>Atom entry URI. If given, generate an Atom Entry Document with the item having the given URI, otherwise generate an Atom Feed Document with any items found.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-PREFIX-ELEMENTS:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_PREFIX_ELEMENTS</code></span></p></td>
+<td>Integer. If set, generate Atom/RSS1.0 documents with prefixed elements, otherwise unprefixed.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-STRICT:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_STRICT</code></span></p></td>
+<td>Boolean. If set, operate in strict conformance mode.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WWW-CERT-FILENAME:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WWW_CERT_FILENAME</code></span></p></td>
+<td>String. SSL client certificate filename
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WWW-CERT-TYPE:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WWW_CERT_TYPE</code></span></p></td>
+<td>String. SSL client certificate type
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WWW-CERT-PASSPHRASE:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WWW_CERT_PASSPHRASE</code></span></p></td>
+<td>String. SSL client certificate passphrase
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-NO-FILE:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_NO_FILE</code></span></p></td>
+<td>Deny file reading requests inside other requests.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WWW-SSL-VERIFY-PEER:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WWW_SSL_VERIFY_PEER</code></span></p></td>
+<td>Integer. SSL verify peer - non-0 to verify peer SSL certificate (default)
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-WWW-SSL-VERIFY-HOST:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_WWW_SSL_VERIFY_HOST</code></span></p></td>
+<td>Integer. SSL verify host - 0 none, 1 CN match, 2 host match (default). Other values are ignored.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-LOAD-EXTERNAL-ENTITIES:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES</code></span></p></td>
+<td>When reading XML, load external entities.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-LAST:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_LAST</code></span></p></td>
+<td>Internal
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-option-description"></a><h3>raptor_option_description</h3>
+<pre class="programlisting">typedef struct {
+ raptor_domain domain;
+ raptor_option option;
+ raptor_option_value_type value_type;
+ const char* name;
+ size_t name_len;
+ const char* label;
+ raptor_uri* uri;
+} raptor_option_description;
+</pre>
+<p>
+Description of an option for a domain.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-general.html#raptor-domain" title="enum raptor_domain"><span class="type">raptor_domain</span></a> <em class="structfield"><code><a name="raptor-option-description.domain"></a>domain</code></em>;</span></p></td>
+<td>domain ID</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> <em class="structfield"><code><a name="raptor-option-description.option"></a>option</code></em>;</span></p></td>
+<td>option ID</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-option.html#raptor-option-value-type" title="enum raptor_option_value_type"><span class="type">raptor_option_value_type</span></a> <em class="structfield"><code><a name="raptor-option-description.value-type"></a>value_type</code></em>;</span></p></td>
+<td>data type of option value</td>
+</tr>
+<tr>
+<td><p><span class="term">const <span class="type">char</span> *<em class="structfield"><code><a name="raptor-option-description.name"></a>name</code></em>;</span></p></td>
+<td>short name for option</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="type">size_t</span> <em class="structfield"><code><a name="raptor-option-description.name-len"></a>name_len</code></em>;</span></p></td>
+<td>length of <em class="parameter"><code>name</code></em>
+</td>
+</tr>
+<tr>
+<td><p><span class="term">const <span class="type">char</span> *<em class="structfield"><code><a name="raptor-option-description.label"></a>label</code></em>;</span></p></td>
+<td>description of option</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *<em class="structfield"><code><a name="raptor-option-description.uri"></a>uri</code></em>;</span></p></td>
+<td>URI identifying option</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-option-get-count"></a><h3>raptor_option_get_count ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span> raptor_option_get_count (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Get the count of options defined.
+</p>
+<p>
+This is prefered to the compile time-only symbol <a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-LAST:CAPS"><span class="type">RAPTOR_OPTION_LAST</span></a>
+and returns a count of the number of options which is
+<a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-LAST:CAPS"><span class="type">RAPTOR_OPTION_LAST</span></a> + 1.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>count of options in the <a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> enumeration</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-option-value-type"></a><h3>enum raptor_option_value_type</h3>
+<pre class="programlisting">typedef enum {
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ RAPTOR_OPTION_VALUE_TYPE_INT,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ RAPTOR_OPTION_VALUE_TYPE_URI,
+ RAPTOR_OPTION_VALUE_TYPE_LAST = RAPTOR_OPTION_VALUE_TYPE_URI
+} raptor_option_value_type;
+</pre>
+<p>
+Option value types.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="RAPTOR-OPTION-VALUE-TYPE-BOOL:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_VALUE_TYPE_BOOL</code></span></p></td>
+<td>Boolean integer value. Non-0 is true
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-VALUE-TYPE-INT:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_VALUE_TYPE_INT</code></span></p></td>
+<td>Decimal integer value
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-VALUE-TYPE-STRING:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_VALUE_TYPE_STRING</code></span></p></td>
+<td>String value
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-VALUE-TYPE-URI:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_VALUE_TYPE_URI</code></span></p></td>
+<td>URI String value.
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-OPTION-VALUE-TYPE-LAST:CAPS"></a><span class="term"><code class="literal">RAPTOR_OPTION_VALUE_TYPE_LAST</code></span></p></td>
+<td>internal
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-option-get-value-type-label"></a><h3>raptor_option_get_value_type_label ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> * raptor_option_get_value_type_label (<em class="parameter"><code>const <a class="link" href="raptor2-section-option.html#raptor-option-value-type" title="enum raptor_option_value_type"><span class="type">raptor_option_value_type</span></a> type</code></em>);</pre>
+<p>
+Get a label for a value type
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
+<td>value type</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>label for type or NULL for invalid type</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-get-option-description"></a><h3>raptor_world_get_option_description ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-option.html#raptor-option-description" title="raptor_option_description"><span class="returnvalue">raptor_option_description</span></a> * raptor_world_get_option_description
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-general.html#raptor-domain" title="enum raptor_domain"><span class="type">raptor_domain</span></a> domain</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>);</pre>
+<p>
+Get a description of an option for a domain.
+</p>
+<p>
+The returned description must be freed with
+<a class="link" href="raptor2-section-option.html#raptor-free-option-description" title="raptor_free_option_description ()"><code class="function">raptor_free_option_description()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>domain</code></em> :</span></p></td>
+<td>domain</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>option</code></em> :</span></p></td>
+<td>option enumeration (0+)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>option description or NULL on failure or if option is unknown</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-option-description"></a><h3>raptor_free_option_description ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_option_description (<em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option-description" title="raptor_option_description"><span class="type">raptor_option_description</span></a> *option_description</code></em>);</pre>
+<p>
+Destructor - free an option description object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>option_description</code></em> :</span></p></td>
+<td>option description</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-get-option-from-uri"></a><h3>raptor_world_get_option_from_uri ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="returnvalue">raptor_option</span></a> raptor_world_get_option_from_uri (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);</pre>
+<p>
+Get an option ID from a URI
+</p>
+<p>
+Option URIs are the concatenation of the string
+"http://feature.librdf.org/raptor-" plus the short name.
+</p>
+<p>
+They are automatically returned for any option described with
+<a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world instance</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>option URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>&lt; 0 if the option is unknown or on error</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-parser.html b/docs/html/raptor2-section-parser.html
new file mode 100644
index 0000000..5d111e2
--- /dev/null
+++ b/docs/html/raptor2-section-parser.html
@@ -0,0 +1,994 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Parser</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-locator.html" title="Locator">
+<link rel="next" href="raptor2-section-sax2.html" title="SAX2">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-locator.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-sax2.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-parser.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-parser.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-parser"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-parser.top_of_page"></a>Parser</span></h2>
+<p>Parser — RDF parsers - from a syntax to RDF triples</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-parser.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser">raptor_parser</a>;
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="returnvalue">raptor_parser</span></a> * <a class="link" href="raptor2-section-parser.html#raptor-new-parser" title="raptor_new_parser ()">raptor_new_parser</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="returnvalue">raptor_parser</span></a> * <a class="link" href="raptor2-section-parser.html#raptor-new-parser-for-content" title="raptor_new_parser_for_content ()">raptor_new_parser_for_content</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *mime_type</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *identifier</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-parser.html#raptor-free-parser" title="raptor_free_parser ()">raptor_free_parser</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-parser.html#raptor-graph-mark-handler" title="raptor_graph_mark_handler ()">*raptor_graph_mark_handler</a>) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *graph</code></em>,
+ <em class="parameter"><code><span class="type">int</span> flags</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-parser.html#raptor-namespace-handler" title="raptor_namespace_handler ()">*raptor_namespace_handler</a>) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *nspace</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-set-statement-handler" title="raptor_parser_set_statement_handler ()">raptor_parser_set_statement_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-statement-handler" title="raptor_statement_handler ()"><span class="type">raptor_statement_handler</span></a> handler</code></em>);
+enum <a class="link" href="raptor2-section-parser.html#raptor-graph-mark-flags" title="enum raptor_graph_mark_flags">raptor_graph_mark_flags</a>;
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-set-graph-mark-handler" title="raptor_parser_set_graph_mark_handler ()">raptor_parser_set_graph_mark_handler</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-graph-mark-handler" title="raptor_graph_mark_handler ()"><span class="type">raptor_graph_mark_handler</span></a> handler</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-set-namespace-handler" title="raptor_parser_set_namespace_handler ()">raptor_parser_set_namespace_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-namespace-handler" title="raptor_namespace_handler ()"><span class="type">raptor_namespace_handler</span></a> handler</code></em>);
+const <a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="returnvalue">raptor_syntax_description</span></a> * <a class="link" href="raptor2-section-parser.html#raptor-parser-get-description" title="raptor_parser_get_description ()">raptor_parser_get_description</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);
+<a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="returnvalue">raptor_locator</span></a> * <a class="link" href="raptor2-section-parser.html#raptor-parser-get-locator" title="raptor_parser_get_locator ()">raptor_parser_get_locator</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-abort" title="raptor_parser_parse_abort ()">raptor_parser_parse_abort</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-chunk" title="raptor_parser_parse_chunk ()">raptor_parser_parse_chunk</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code><span class="type">int</span> is_end</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-file" title="raptor_parser_parse_file ()">raptor_parser_parse_file</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-file-stream" title="raptor_parser_parse_file_stream ()">raptor_parser_parse_file_stream</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *stream</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-iostream" title="raptor_parser_parse_iostream ()">raptor_parser_parse_iostream</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-start" title="raptor_parser_parse_start ()">raptor_parser_parse_start</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-uri" title="raptor_parser_parse_uri ()">raptor_parser_parse_uri</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-uri-with-connection" title="raptor_parser_parse_uri_with_connection ()">raptor_parser_parse_uri_with_connection</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *connection</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-parser.html#raptor-parser-get-graph" title="raptor_parser_get_graph ()">raptor_parser_get_graph</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);
+const <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-parser.html#raptor-parser-get-name" title="raptor_parser_get_name ()">raptor_parser_get_name</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-set-option" title="raptor_parser_set_option ()">raptor_parser_set_option</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> integer</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-get-option" title="raptor_parser_get_option ()">raptor_parser_get_option</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>,
+ <em class="parameter"><code><span class="type">char</span> **string_p</code></em>,
+ <em class="parameter"><code><span class="type">int</span> *integer_p</code></em>);
+const <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-parser.html#raptor-parser-get-accept-header" title="raptor_parser_get_accept_header ()">raptor_parser_get_accept_header</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-parser.html#raptor-parser-set-uri-filter" title="raptor_parser_set_uri_filter ()">raptor_parser_set_uri_filter</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-uri-filter-func" title="raptor_uri_filter_func ()"><span class="type">raptor_uri_filter_func</span></a> filter</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);
+<a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="returnvalue">raptor_world</span></a> * <a class="link" href="raptor2-section-parser.html#raptor-parser-get-world" title="raptor_parser_get_world ()">raptor_parser_get_world</a> (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-parser.description"></a><h2>Description</h2>
+<p>
+The parsing class that allows creating a parser for reading from a
+particular syntax (or can guess and use contextual information) that
+will on demand generate RDF triples to a handler function, as chunks
+of syntax data are passed into the parser. Parsing can be done from
+strings in memory, files or from URIs on the web.
+</p>
+<p>
+There are also methods to deal with handling errors, warnings and
+returned triples as well as setting options (features) that can
+adjust how parsing is performed.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-parser.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-parser"></a><h3>raptor_parser</h3>
+<pre class="programlisting">raptor_parser* raptor_parser;
+</pre>
+<p>
+Raptor Parser class
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-parser"></a><h3>raptor_new_parser ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="returnvalue">raptor_parser</span></a> * raptor_new_parser (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
+<p>
+Constructor - create a new raptor_parser object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>the parser name or NULL for default parser</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-parser-for-content"></a><h3>raptor_new_parser_for_content ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="returnvalue">raptor_parser</span></a> * raptor_new_parser_for_content (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *mime_type</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *identifier</code></em>);</pre>
+<p>
+Constructor - create a new raptor_parser.
+</p>
+<p>
+Uses <a class="link" href="raptor2-section-world.html#raptor-world-guess-parser-name" title="raptor_world_guess_parser_name ()"><code class="function">raptor_world_guess_parser_name()</code></a> to find a parser by scoring
+recognition of the syntax by a block of characters, the content
+identifier or a mime type. The content identifier is typically a
+filename or URI or some other identifier.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI identifying the syntax (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mime_type</code></em> :</span></p></td>
+<td>mime type identifying the content (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
+<td>buffer of content to guess (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of buffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>identifier</code></em> :</span></p></td>
+<td>identifier of content (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-parser"></a><h3>raptor_free_parser ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_parser (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>);</pre>
+<p>
+Destructor - destroy a raptor_parser object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-graph-mark-handler"></a><h3>raptor_graph_mark_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_graph_mark_handler) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *graph</code></em>,
+ <em class="parameter"><code><span class="type">int</span> flags</code></em>);</pre>
+<p>
+Graph start/end mark handler function.
+</p>
+<p>
+Records start and end of graphs happening in a stream of generated
+<a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> via the statement handler. The callback starts a
+graph when <em class="parameter"><code>flags</code></em> has <a class="link" href="raptor2-section-parser.html#RAPTOR-GRAPH-MARK-START:CAPS"><span class="type">RAPTOR_GRAPH_MARK_START</span></a> bit set.
+</p>
+<p>
+The start and ends may be either declared in the syntax via some
+keyword or mechanism such as TRiG {} syntax when <em class="parameter"><code>flags</code></em> has bit
+<a class="link" href="raptor2-section-parser.html#RAPTOR-GRAPH-MARK-DECLARED:CAPS"><span class="type">RAPTOR_GRAPH_MARK_DECLARED</span></a> set, or be implied by the start/end of
+the data in other syntaxes, and the bit will be unset.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>graph</code></em> :</span></p></td>
+<td>graph to report, NULL for the default graph</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td>bitmask of <a class="link" href="raptor2-section-parser.html#raptor-graph-mark-flags" title="enum raptor_graph_mark_flags"><span class="type">raptor_graph_mark_flags</span></a> flags</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespace-handler"></a><h3>raptor_namespace_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_namespace_handler) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *nspace</code></em>);</pre>
+<p>
+XML Namespace declaration reporting handler set by
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-namespace-handler" title="raptor_parser_set_namespace_handler ()"><code class="function">raptor_parser_set_namespace_handler()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nspace</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> declared</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-set-statement-handler"></a><h3>raptor_parser_set_statement_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_parser_set_statement_handler (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-statement-handler" title="raptor_statement_handler ()"><span class="type">raptor_statement_handler</span></a> handler</code></em>);</pre>
+<p>
+Set the statement handler function for the parser.
+</p>
+<p>
+Use this to set the function to receive statements as the parsing
+proceeds. The statement argument to <em class="parameter"><code>handler</code></em> is shared and must be
+copied by the caller with <a class="link" href="raptor2-section-triples.html#raptor-statement-copy" title="raptor_statement_copy ()"><code class="function">raptor_statement_copy()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> parser object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data pointer for callback</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>new statement callback function</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-graph-mark-flags"></a><h3>enum raptor_graph_mark_flags</h3>
+<pre class="programlisting">typedef enum {
+ RAPTOR_GRAPH_MARK_START = 1,
+ RAPTOR_GRAPH_MARK_DECLARED = 2
+} raptor_graph_mark_flags;
+</pre>
+<p>
+Graph mark handler bitmask flags
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="RAPTOR-GRAPH-MARK-START:CAPS"></a><span class="term"><code class="literal">RAPTOR_GRAPH_MARK_START</code></span></p></td>
+<td>mark is start of graph (otherwise is end)
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-GRAPH-MARK-DECLARED:CAPS"></a><span class="term"><code class="literal">RAPTOR_GRAPH_MARK_DECLARED</code></span></p></td>
+<td>mark was declared in syntax rather than implict
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-set-graph-mark-handler"></a><h3>raptor_parser_set_graph_mark_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_parser_set_graph_mark_handler
+ (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-graph-mark-handler" title="raptor_graph_mark_handler ()"><span class="type">raptor_graph_mark_handler</span></a> handler</code></em>);</pre>
+<p>
+Set the graph mark handler function for the parser.
+</p>
+<p>
+See <a class="link" href="raptor2-section-parser.html#raptor-graph-mark-handler" title="raptor_graph_mark_handler ()"><span class="type">raptor_graph_mark_handler</span></a> and <a class="link" href="raptor2-section-parser.html#raptor-graph-mark-flags" title="enum raptor_graph_mark_flags"><span class="type">raptor_graph_mark_flags</span></a> for
+the marks that may be returned by the handler.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> parser object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data pointer for callback</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>new graph callback function</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-set-namespace-handler"></a><h3>raptor_parser_set_namespace_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_parser_set_namespace_handler (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-namespace-handler" title="raptor_namespace_handler ()"><span class="type">raptor_namespace_handler</span></a> handler</code></em>);</pre>
+<p>
+Set the namespace handler function for the parser.
+</p>
+<p>
+When a prefix/namespace is seen in a parser, call the given
+<em class="parameter"><code>handler</code></em> with the prefix string and the <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> namespace URI.
+Either can be NULL for the default prefix or default namespace.
+</p>
+<p>
+The handler function does not deal with duplicates so any
+namespace may be declared multiple times.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> parser object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data pointer for callback</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>new namespace callback function</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-get-description"></a><h3>raptor_parser_get_description ()</h3>
+<pre class="programlisting">const <a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="returnvalue">raptor_syntax_description</span></a> * raptor_parser_get_description
+ (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);</pre>
+<p>
+Get description of the syntaxes of the parser.
+</p>
+<p>
+The returned description is static and lives as long as the raptor
+library (raptor world).
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> parser object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>description of syntax</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-get-locator"></a><h3>raptor_parser_get_locator ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="returnvalue">raptor_locator</span></a> * raptor_parser_get_locator (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);</pre>
+<p>
+Get the current raptor locator object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>raptor parser</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>raptor locator</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-parse-abort"></a><h3>raptor_parser_parse_abort ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_parser_parse_abort (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);</pre>
+<p>
+Abort an ongoing parsing.
+</p>
+<p>
+Causes any ongoing generation of statements by a parser to be
+terminated and the parser to return controlto the application
+as soon as draining any existing buffers.
+</p>
+<p>
+Most useful inside <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-file" title="raptor_parser_parse_file ()"><code class="function">raptor_parser_parse_file()</code></a> or
+<a class="link" href="raptor2-section-parser.html#raptor-parser-parse-uri" title="raptor_parser_parse_uri ()"><code class="function">raptor_parser_parse_uri()</code></a> when the Raptor library is directing the
+parsing and when one of the callback handlers such as as set by
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-statement-handler" title="raptor_parser_set_statement_handler ()"><code class="function">raptor_parser_set_statement_handler()</code></a> requires to return to the main
+application code.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> parser object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-parse-chunk"></a><h3>raptor_parser_parse_chunk ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_parser_parse_chunk (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code><span class="type">int</span> is_end</code></em>);</pre>
+<p>
+Parse a block of content into triples.
+</p>
+<p>
+This method can only be called after <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-start" title="raptor_parser_parse_start ()"><code class="function">raptor_parser_parse_start()</code></a> has
+initialised the parser.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>RDF parser</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
+<td>content to parse</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of buffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>is_end</code></em> :</span></p></td>
+<td>non-0 if this is the end of the content (such as EOF)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-parse-file"></a><h3>raptor_parser_parse_file ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_parser_parse_file (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);</pre>
+<p>
+Parse RDF content at a file URI.
+</p>
+<p>
+If <em class="parameter"><code>uri</code></em> is NULL (source is stdin), then the <em class="parameter"><code>base_uri</code></em> is required.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>parser</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI of RDF content or NULL to read from standard input</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>the base URI to use (or NULL if the same)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non 0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-parse-file-stream"></a><h3>raptor_parser_parse_file_stream ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_parser_parse_file_stream (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *stream</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);</pre>
+<p>
+Parse RDF content from a FILE*.
+</p>
+<p>
+After draining the FILE* stream (EOF), fclose is not called on it.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>parser</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
+<td>FILE* of RDF content</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>filename</code></em> :</span></p></td>
+<td>filename of content or NULL if it has no name</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>the base URI to use</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non 0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-parse-iostream"></a><h3>raptor_parser_parse_iostream ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_parser_parse_iostream (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);</pre>
+<p>
+Parse content from an iostream
+</p>
+<p>
+If the parser requires a base URI and <em class="parameter"><code>base_uri</code></em> is NULL, an error
+will be generated and the function will fail.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>parser</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>iostream to read from</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>the base URI to use (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non 0 on failure, &lt;0 if a required base URI was missing</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-parse-start"></a><h3>raptor_parser_parse_start ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_parser_parse_start (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);</pre>
+<p>
+Start a parse of content with base URI.
+</p>
+<p>
+Parsers that need a base URI can be identified using a syntax
+description returned by <a class="link" href="raptor2-section-world.html#raptor-world-get-parser-description" title="raptor_world_get_parser_description ()"><code class="function">raptor_world_get_parser_description()</code></a>
+statically or <a class="link" href="raptor2-section-parser.html#raptor-parser-get-description" title="raptor_parser_get_description ()"><code class="function">raptor_parser_get_description()</code></a> on a constructed
+parser.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>RDF parser</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>base URI or may be NULL if no base URI is required</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure, &lt;0 if a required base URI was missing</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-parse-uri"></a><h3>raptor_parser_parse_uri ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_parser_parse_uri (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);</pre>
+<p>
+Parse the RDF content at URI.
+</p>
+<p>
+Sends an HTTP Accept: header whent the URI is of the HTTP protocol,
+see <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-uri-with-connection" title="raptor_parser_parse_uri_with_connection ()"><code class="function">raptor_parser_parse_uri_with_connection()</code></a> for details including
+how the <em class="parameter"><code>base_uri</code></em> is used.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>parser</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI of RDF content</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>the base URI to use (or NULL if the same)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non 0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-parse-uri-with-connection"></a><h3>raptor_parser_parse_uri_with_connection ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_parser_parse_uri_with_connection
+ (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *connection</code></em>);</pre>
+<p>
+Parse RDF content at URI using existing WWW connection.
+</p>
+<p>
+If <em class="parameter"><code>base_uri</code></em> is not given and during resolution of the URI, a
+protocol redirection occurs, the final resolved URI will be
+used as the base URI. If redirection does not occur, the
+base URI will be <em class="parameter"><code>uri</code></em>.
+</p>
+<p>
+If <em class="parameter"><code>base_uri</code></em> is given, it overrides the process above.
+</p>
+<p>
+When <em class="parameter"><code>connection</code></em> is NULL and a MIME Type exists for the parser
+type, this type is sent in an HTTP Accept: header in the form
+Accept: MIME-TYPE along with a wildcard of 0.1 quality, so MIME-TYPE is
+prefered rather than the sole answer. The latter part may not be
+necessary but should ensure an HTTP 200 response.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>parser</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI of RDF content</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>the base URI to use (or NULL if the same)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
+<td>connection object pointer or NULL to create a new one</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non 0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-get-graph"></a><h3>raptor_parser_get_graph ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_parser_get_graph (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);</pre>
+<p>
+Get the current graph for the parser
+</p>
+<p>
+The returned URI is owned by the caller and must be freed with
+<a class="link" href="raptor2-section-uri.html#raptor-free-uri" title="raptor_free_uri ()"><code class="function">raptor_free_uri()</code></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>parser</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>raptor_uri* graph name or NULL for the default graph</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-get-name"></a><h3>raptor_parser_get_name ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> * raptor_parser_get_name (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);</pre>
+<p>
+Get the name of a parser.
+</p>
+<p>
+Use <a class="link" href="raptor2-section-parser.html#raptor-parser-get-description" title="raptor_parser_get_description ()"><code class="function">raptor_parser_get_description()</code></a> to get the alternate names and
+aliases as well as other descriptive values.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> parser object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the short name for the parser.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-set-option"></a><h3>raptor_parser_set_option ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_parser_set_option (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> integer</code></em>);</pre>
+<p>
+Set parser option.
+</p>
+<p>
+If <em class="parameter"><code>string</code></em> is not NULL and the option type is numeric, the string
+value is converted to an integer and used in preference to <em class="parameter"><code>integer</code></em>.
+</p>
+<p>
+If <em class="parameter"><code>string</code></em> is NULL and the option type is not numeric, an error is
+returned.
+</p>
+<p>
+The <em class="parameter"><code>string</code></em> values used are copied.
+</p>
+<p>
+The allowed options are available via
+<a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> parser object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>option</code></em> :</span></p></td>
+<td>option to set from enumerated <a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> values</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string option value (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>integer</code></em> :</span></p></td>
+<td>integer option value</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non 0 on failure or if the option is unknown</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-get-option"></a><h3>raptor_parser_get_option ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_parser_get_option (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>,
+ <em class="parameter"><code><span class="type">char</span> **string_p</code></em>,
+ <em class="parameter"><code><span class="type">int</span> *integer_p</code></em>);</pre>
+<p>
+Get parser option.
+</p>
+<p>
+Any string value returned in *<em class="parameter"><code>string_p</code></em> is shared and must
+be copied by the caller.
+</p>
+<p>
+The allowed options are available via
+<a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> parser object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>option</code></em> :</span></p></td>
+<td>option to get value</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string_p</code></em> :</span></p></td>
+<td>pointer to where to store string value</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>integer_p</code></em> :</span></p></td>
+<td>pointer to where to store integer value</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>option value or &lt; 0 for an illegal option</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-get-accept-header"></a><h3>raptor_parser_get_accept_header ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> * raptor_parser_get_accept_header (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);</pre>
+<p>
+Get an HTTP Accept value for the parser.
+</p>
+<p>
+The returned string must be freed by the caller such as with
+<a class="link" href="raptor2-section-memory.html#raptor-free-memory" title="raptor_free_memory ()"><code class="function">raptor_free_memory()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>parser</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new Accept: header string or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-set-uri-filter"></a><h3>raptor_parser_set_uri_filter ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_parser_set_uri_filter (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *parser</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-uri-filter-func" title="raptor_uri_filter_func ()"><span class="type">raptor_uri_filter_func</span></a> filter</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+Set URI filter function for WWW retrieval.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>parser</code></em> :</span></p></td>
+<td>parser object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>filter</code></em> :</span></p></td>
+<td>URI filter function</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>User data to pass to filter function</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-parser-get-world"></a><h3>raptor_parser_get_world ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="returnvalue">raptor_world</span></a> * raptor_parser_get_world (<em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> *rdf_parser</code></em>);</pre>
+<p>
+Get the <a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> object associated with a parser.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_parser</code></em> :</span></p></td>
+<td>parser</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>raptor_world* pointer</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-sax2.html b/docs/html/raptor2-section-sax2.html
new file mode 100644
index 0000000..afd9f50
--- /dev/null
+++ b/docs/html/raptor2-section-sax2.html
@@ -0,0 +1,719 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>SAX2</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-parser.html" title="Parser">
+<link rel="next" href="raptor2-section-sequence.html" title="Sequence">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-parser.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-sequence.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-sax2.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-sax2.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-sax2"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-sax2.top_of_page"></a>SAX2</span></h2>
+<p>SAX2 — SAX2 XML Parsing API with namespaces and base URI support.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-sax2.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2">raptor_sax2</a>;
+<a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="returnvalue">raptor_sax2</span></a> * <a class="link" href="raptor2-section-sax2.html#raptor-new-sax2" title="raptor_new_sax2 ()">raptor_new_sax2</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sax2.html#raptor-free-sax2" title="raptor_free_sax2 ()">raptor_free_sax2</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-sax2.html#raptor-sax2-start-element-handler" title="raptor_sax2_start_element_handler ()">*raptor_sax2_start_element_handler</a>)
+ (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-sax2.html#raptor-sax2-end-element-handler" title="raptor_sax2_end_element_handler ()">*raptor_sax2_end_element_handler</a>) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-sax2.html#raptor-sax2-characters-handler" title="raptor_sax2_characters_handler ()">*raptor_sax2_characters_handler</a>) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>,
+ <em class="parameter"><code><span class="type">int</span> len</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-sax2.html#raptor-sax2-cdata-handler" title="raptor_sax2_cdata_handler ()">*raptor_sax2_cdata_handler</a>) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>,
+ <em class="parameter"><code><span class="type">int</span> len</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-sax2.html#raptor-sax2-comment-handler" title="raptor_sax2_comment_handler ()">*raptor_sax2_comment_handler</a>) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-sax2.html#raptor-sax2-unparsed-entity-decl-handler" title="raptor_sax2_unparsed_entity_decl_handler ()">*raptor_sax2_unparsed_entity_decl_handler</a>)
+ (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *entityName</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *base</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *systemId</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *publicId</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *notationName</code></em>);
+<span class="returnvalue">int</span> (<a class="link" href="raptor2-section-sax2.html#raptor-sax2-external-entity-ref-handler" title="raptor_sax2_external_entity_ref_handler ()">*raptor_sax2_external_entity_ref_handler</a>)
+ (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *context</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *base</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *systemId</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *publicId</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sax2.html#raptor-sax2-set-start-element-handler" title="raptor_sax2_set_start_element_handler ()">raptor_sax2_set_start_element_handler</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-start-element-handler" title="raptor_sax2_start_element_handler ()"><span class="type">raptor_sax2_start_element_handler</span></a> handler</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sax2.html#raptor-sax2-set-end-element-handler" title="raptor_sax2_set_end_element_handler ()">raptor_sax2_set_end_element_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-end-element-handler" title="raptor_sax2_end_element_handler ()"><span class="type">raptor_sax2_end_element_handler</span></a> handler</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sax2.html#raptor-sax2-set-characters-handler" title="raptor_sax2_set_characters_handler ()">raptor_sax2_set_characters_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-characters-handler" title="raptor_sax2_characters_handler ()"><span class="type">raptor_sax2_characters_handler</span></a> handler</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sax2.html#raptor-sax2-set-cdata-handler" title="raptor_sax2_set_cdata_handler ()">raptor_sax2_set_cdata_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-cdata-handler" title="raptor_sax2_cdata_handler ()"><span class="type">raptor_sax2_cdata_handler</span></a> handler</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sax2.html#raptor-sax2-set-comment-handler" title="raptor_sax2_set_comment_handler ()">raptor_sax2_set_comment_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-comment-handler" title="raptor_sax2_comment_handler ()"><span class="type">raptor_sax2_comment_handler</span></a> handler</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sax2.html#raptor-sax2-set-unparsed-entity-decl-handler" title="raptor_sax2_set_unparsed_entity_decl_handler ()">raptor_sax2_set_unparsed_entity_decl_handler</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-unparsed-entity-decl-handler" title="raptor_sax2_unparsed_entity_decl_handler ()"><span class="type">raptor_sax2_unparsed_entity_decl_handler</span></a> handler</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sax2.html#raptor-sax2-set-external-entity-ref-handler" title="raptor_sax2_set_external_entity_ref_handler ()">raptor_sax2_set_external_entity_ref_handler</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-external-entity-ref-handler" title="raptor_sax2_external_entity_ref_handler ()"><span class="type">raptor_sax2_external_entity_ref_handler</span></a> handler</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sax2.html#raptor-sax2-set-namespace-handler" title="raptor_sax2_set_namespace_handler ()">raptor_sax2_set_namespace_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-namespace-handler" title="raptor_namespace_handler ()"><span class="type">raptor_namespace_handler</span></a> handler</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sax2.html#raptor-sax2-set-uri-filter" title="raptor_sax2_set_uri_filter ()">raptor_sax2_set_uri_filter</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-uri-filter-func" title="raptor_uri_filter_func ()"><span class="type">raptor_uri_filter_func</span></a> filter</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sax2.html#raptor-sax2-parse-start" title="raptor_sax2_parse_start ()">raptor_sax2_parse_start</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-sax2.html#raptor-sax2-parse-chunk" title="raptor_sax2_parse_chunk ()">raptor_sax2_parse_chunk</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code><span class="type">int</span> is_end</code></em>);
+const unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-sax2.html#raptor-sax2-inscope-xml-language" title="raptor_sax2_inscope_xml_language ()">raptor_sax2_inscope_xml_language</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-sax2.html#raptor-sax2-inscope-base-uri" title="raptor_sax2_inscope_base_uri ()">raptor_sax2_inscope_base_uri</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-sax2.description"></a><h2>Description</h2>
+<p>
+A class providing a SAX2 XML parsing API with XML namespaces
+and XML base support.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-sax2.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-sax2"></a><h3>raptor_sax2</h3>
+<pre class="programlisting">typedef struct raptor_sax2_s raptor_sax2;
+</pre>
+<p>
+Raptor SAX2 class
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-sax2"></a><h3>raptor_new_sax2 ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="returnvalue">raptor_sax2</span></a> * raptor_new_sax2 (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a> *locator</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+Constructor - Create a new SAX2 with error handlers
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>locator</code></em> :</span></p></td>
+<td>raptor locator to use for errors</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>pointer context information to pass to SAX handlers</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-sax2"></a><h3>raptor_free_sax2 ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_sax2 (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>);</pre>
+<p>
+Destructor - destroy a SAX2 object
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>SAX2 object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-start-element-handler"></a><h3>raptor_sax2_start_element_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_sax2_start_element_handler)
+ (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);</pre>
+<p>
+SAX2 start element handler
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_element</code></em> :</span></p></td>
+<td>XML element</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-end-element-handler"></a><h3>raptor_sax2_end_element_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_sax2_end_element_handler) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);</pre>
+<p>
+SAX2 end element handler
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_element</code></em> :</span></p></td>
+<td>XML element</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-characters-handler"></a><h3>raptor_sax2_characters_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_sax2_characters_handler) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>,
+ <em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
+<p>
+SAX2 characters handler
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_element</code></em> :</span></p></td>
+<td>XML element</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s</code></em> :</span></p></td>
+<td>string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>string len</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-cdata-handler"></a><h3>raptor_sax2_cdata_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_sax2_cdata_handler) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>,
+ <em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
+<p>
+SAX2 CDATA section handler
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_element</code></em> :</span></p></td>
+<td>XML element</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s</code></em> :</span></p></td>
+<td>string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>string len</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-comment-handler"></a><h3>raptor_sax2_comment_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_sax2_comment_handler) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>);</pre>
+<p>
+SAX2 XML comment handler
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_element</code></em> :</span></p></td>
+<td>XML element</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s</code></em> :</span></p></td>
+<td>string</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-unparsed-entity-decl-handler"></a><h3>raptor_sax2_unparsed_entity_decl_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_sax2_unparsed_entity_decl_handler)
+ (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *entityName</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *base</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *systemId</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *publicId</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *notationName</code></em>);</pre>
+<p>
+SAX2 unparsed entity (NDATA) handler
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>entityName</code></em> :</span></p></td>
+<td>entity name</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base</code></em> :</span></p></td>
+<td>base URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>systemId</code></em> :</span></p></td>
+<td>system ID</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>publicId</code></em> :</span></p></td>
+<td>public ID</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>notationName</code></em> :</span></p></td>
+<td>notation name</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-external-entity-ref-handler"></a><h3>raptor_sax2_external_entity_ref_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> (*raptor_sax2_external_entity_ref_handler)
+ (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *context</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *base</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *systemId</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *publicId</code></em>);</pre>
+<p>
+SAX2 external entity reference handler
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>context</code></em> :</span></p></td>
+<td>context</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base</code></em> :</span></p></td>
+<td>base URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>systemId</code></em> :</span></p></td>
+<td>system ID</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>publicId</code></em> :</span></p></td>
+<td>public ID</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>0 if processing should not continue because of a
+fatal error in the handling of the external entity.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-set-start-element-handler"></a><h3>raptor_sax2_set_start_element_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_sax2_set_start_element_handler
+ (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-start-element-handler" title="raptor_sax2_start_element_handler ()"><span class="type">raptor_sax2_start_element_handler</span></a> handler</code></em>);</pre>
+<p>
+Set SAX2 start element handler.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>SAX2 object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>start element handler</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-set-end-element-handler"></a><h3>raptor_sax2_set_end_element_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_sax2_set_end_element_handler (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-end-element-handler" title="raptor_sax2_end_element_handler ()"><span class="type">raptor_sax2_end_element_handler</span></a> handler</code></em>);</pre>
+<p>
+Set SAX2 end element handler.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>SAX2 object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>end element handler</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-set-characters-handler"></a><h3>raptor_sax2_set_characters_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_sax2_set_characters_handler (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-characters-handler" title="raptor_sax2_characters_handler ()"><span class="type">raptor_sax2_characters_handler</span></a> handler</code></em>);</pre>
+<p>
+Set SAX2 characters handler.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>SAX2 object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>characters handler</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-set-cdata-handler"></a><h3>raptor_sax2_set_cdata_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_sax2_set_cdata_handler (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-cdata-handler" title="raptor_sax2_cdata_handler ()"><span class="type">raptor_sax2_cdata_handler</span></a> handler</code></em>);</pre>
+<p>
+Set SAX2 CDATA handler.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>SAX2 object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>CDATA handler</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-set-comment-handler"></a><h3>raptor_sax2_set_comment_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_sax2_set_comment_handler (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-comment-handler" title="raptor_sax2_comment_handler ()"><span class="type">raptor_sax2_comment_handler</span></a> handler</code></em>);</pre>
+<p>
+Set SAX2 XML comment handler.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>SAX2 object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>comment handler</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-set-unparsed-entity-decl-handler"></a><h3>raptor_sax2_set_unparsed_entity_decl_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_sax2_set_unparsed_entity_decl_handler
+ (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-unparsed-entity-decl-handler" title="raptor_sax2_unparsed_entity_decl_handler ()"><span class="type">raptor_sax2_unparsed_entity_decl_handler</span></a> handler</code></em>);</pre>
+<p>
+Set SAX2 XML unparsed entity declaration handler.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>SAX2 object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>unparsed entity declaration handler</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-set-external-entity-ref-handler"></a><h3>raptor_sax2_set_external_entity_ref_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_sax2_set_external_entity_ref_handler
+ (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2-external-entity-ref-handler" title="raptor_sax2_external_entity_ref_handler ()"><span class="type">raptor_sax2_external_entity_ref_handler</span></a> handler</code></em>);</pre>
+<p>
+Set SAX2 XML entity reference handler.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>SAX2 object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>entity reference handler</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-set-namespace-handler"></a><h3>raptor_sax2_set_namespace_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_sax2_set_namespace_handler (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-parser.html#raptor-namespace-handler" title="raptor_namespace_handler ()"><span class="type">raptor_namespace_handler</span></a> handler</code></em>);</pre>
+<p>
+Set the XML namespace handler function.
+</p>
+<p>
+When a prefix/namespace is seen in an XML parser, call the given
+<em class="parameter"><code>handler</code></em> with the prefix string and the <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> namespace URI.
+Either can be NULL for the default prefix or default namespace.
+</p>
+<p>
+The handler function does not deal with duplicates so any
+namespace may be declared multiple times when a namespace is seen
+in different parts of a document.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>new namespace callback function</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-set-uri-filter"></a><h3>raptor_sax2_set_uri_filter ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_sax2_set_uri_filter (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-uri-filter-func" title="raptor_uri_filter_func ()"><span class="type">raptor_uri_filter_func</span></a> filter</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+Set URI filter function for SAX2 internal retrievals.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>SAX2 object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>filter</code></em> :</span></p></td>
+<td>URI filter function</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>User data to pass to filter function</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-parse-start"></a><h3>raptor_sax2_parse_start ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_sax2_parse_start (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);</pre>
+<p>
+Start an XML SAX2 parse.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>sax2 object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>base URI</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-parse-chunk"></a><h3>raptor_sax2_parse_chunk ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_sax2_parse_chunk (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code><span class="type">int</span> is_end</code></em>);</pre>
+<p>
+Parse a chunk of XML data generating SAX2 events
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>sax2 object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
+<td>input buffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>input buffer lenght</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>is_end</code></em> :</span></p></td>
+<td>non-0 if end of data</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-inscope-xml-language"></a><h3>raptor_sax2_inscope_xml_language ()</h3>
+<pre class="programlisting">const unsigned <span class="returnvalue">char</span> * raptor_sax2_inscope_xml_language (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>);</pre>
+<p>
+Get the in-scope XML language
+</p>
+<p>
+The result is a language string which may be "" if xml:lang="" is
+given. NULL is returned only if there is no xml:lang in any outer
+scope.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>SAX2 object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>shared pointer to the XML language or NULL if none is in scope.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sax2-inscope-base-uri"></a><h3>raptor_sax2_inscope_base_uri ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_sax2_inscope_base_uri (<em class="parameter"><code><a class="link" href="raptor2-section-sax2.html#raptor-sax2" title="raptor_sax2"><span class="type">raptor_sax2</span></a> *sax2</code></em>);</pre>
+<p>
+Get the in-scope base URI
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sax2</code></em> :</span></p></td>
+<td>SAX2 object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the in-scope base URI shared object or NULL if none is in scope.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-sequence.html b/docs/html/raptor2-section-sequence.html
new file mode 100644
index 0000000..8dca6c9
--- /dev/null
+++ b/docs/html/raptor2-section-sequence.html
@@ -0,0 +1,610 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Sequence</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-sax2.html" title="SAX2">
+<link rel="next" href="raptor2-section-serializer.html" title="Serializer">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-sax2.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-serializer.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-sequence.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-sequence.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-sequence"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-sequence.top_of_page"></a>Sequence</span></h2>
+<p>Sequence — Ordered sequence of items.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-sequence.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence">raptor_sequence</a>;
+<a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="returnvalue">raptor_sequence</span></a> * <a class="link" href="raptor2-section-sequence.html#raptor-new-sequence" title="raptor_new_sequence ()">raptor_new_sequence</a> (<em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-free-handler" title="raptor_data_free_handler ()"><span class="type">raptor_data_free_handler</span></a> free_handler</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-print-handler" title="raptor_data_print_handler ()"><span class="type">raptor_data_print_handler</span></a> print_handler</code></em>);
+<a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="returnvalue">raptor_sequence</span></a> * <a class="link" href="raptor2-section-sequence.html#raptor-new-sequence-with-context" title="raptor_new_sequence_with_context ()">raptor_new_sequence_with_context</a> (<em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-context-free-handler" title="raptor_data_context_free_handler ()"><span class="type">raptor_data_context_free_handler</span></a> free_handler</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-context-print-handler" title="raptor_data_context_print_handler ()"><span class="type">raptor_data_context_print_handler</span></a> print_handler</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *handler_context</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sequence.html#raptor-free-sequence" title="raptor_free_sequence ()">raptor_free_sequence</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>);
+<span class="returnvalue">void</span> * <a class="link" href="raptor2-section-sequence.html#raptor-sequence-delete-at" title="raptor_sequence_delete_at ()">raptor_sequence_delete_at</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">int</span> idx</code></em>);
+<span class="returnvalue">void</span> * <a class="link" href="raptor2-section-sequence.html#raptor-sequence-get-at" title="raptor_sequence_get_at ()">raptor_sequence_get_at</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">int</span> idx</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-sequence.html#raptor-sequence-join" title="raptor_sequence_join ()">raptor_sequence_join</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *dest</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *src</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-sequence.html#raptor-sequence-next-permutation" title="raptor_sequence_next_permutation ()">raptor_sequence_next_permutation</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-compare-handler" title="raptor_data_compare_handler ()"><span class="type">raptor_data_compare_handler</span></a> compare</code></em>);
+<span class="returnvalue">void</span> * <a class="link" href="raptor2-section-sequence.html#raptor-sequence-pop" title="raptor_sequence_pop ()">raptor_sequence_pop</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-sequence.html#raptor-sequence-print" title="raptor_sequence_print ()">raptor_sequence_print</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *fh</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-sequence.html#raptor-sequence-push" title="raptor_sequence_push ()">raptor_sequence_push</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *data</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-sequence.html#raptor-sequence-reverse" title="raptor_sequence_reverse ()">raptor_sequence_reverse</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">int</span> start_index</code></em>,
+ <em class="parameter"><code><span class="type">int</span> length</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-sequence.html#raptor-sequence-set-at" title="raptor_sequence_set_at ()">raptor_sequence_set_at</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">int</span> idx</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *data</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-sequence.html#raptor-sequence-shift" title="raptor_sequence_shift ()">raptor_sequence_shift</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *data</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-sequence.html#raptor-sequence-size" title="raptor_sequence_size ()">raptor_sequence_size</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-sequence.html#raptor-sequence-sort" title="raptor_sequence_sort ()">raptor_sequence_sort</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-compare-handler" title="raptor_data_compare_handler ()"><span class="type">raptor_data_compare_handler</span></a> compare</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-sequence.html#raptor-sequence-swap" title="raptor_sequence_swap ()">raptor_sequence_swap</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">int</span> i</code></em>,
+ <em class="parameter"><code><span class="type">int</span> j</code></em>);
+<span class="returnvalue">void</span> * <a class="link" href="raptor2-section-sequence.html#raptor-sequence-unshift" title="raptor_sequence_unshift ()">raptor_sequence_unshift</a> (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-sequence.description"></a><h2>Description</h2>
+<p>
+A utility class that provides access to small sequence of items
+that grow at the end and require quick ordered and indexed access.
+Can be used as a queue/FIFO but less efficiently than a stack
+where the items are added and removed from the end.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-sequence.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-sequence"></a><h3>raptor_sequence</h3>
+<pre class="programlisting">raptor_sequence* raptor_sequence;
+</pre>
+<p>
+Raptor sequence class
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-sequence"></a><h3>raptor_new_sequence ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="returnvalue">raptor_sequence</span></a> * raptor_new_sequence (<em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-free-handler" title="raptor_data_free_handler ()"><span class="type">raptor_data_free_handler</span></a> free_handler</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-print-handler" title="raptor_data_print_handler ()"><span class="type">raptor_data_print_handler</span></a> print_handler</code></em>);</pre>
+<p>
+Constructor - create a new sequence with the given handlers.
+</p>
+<p>
+This creates a sequence over objects that need only the item data
+pointers in order to print or free the objects.
+</p>
+<p>
+For example sequences of strings could use handlers (free, NULL)
+and sequences of <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> could use (raptor_free_uri,
+raptor_print_uri)
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>free_handler</code></em> :</span></p></td>
+<td>handler to free a sequence item</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>print_handler</code></em> :</span></p></td>
+<td>handler to print a sequence item to a FILE*</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-sequence-with-context"></a><h3>raptor_new_sequence_with_context ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="returnvalue">raptor_sequence</span></a> * raptor_new_sequence_with_context (<em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-context-free-handler" title="raptor_data_context_free_handler ()"><span class="type">raptor_data_context_free_handler</span></a> free_handler</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-context-print-handler" title="raptor_data_context_print_handler ()"><span class="type">raptor_data_context_print_handler</span></a> print_handler</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *handler_context</code></em>);</pre>
+<p>
+Constructor - create a new sequence with the given handlers and handler context.
+</p>
+<p>
+This creates a sequence over objects that need context + item data
+pointers in order to print or free the objects.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>free_handler</code></em> :</span></p></td>
+<td>handler to free a sequence item</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>print_handler</code></em> :</span></p></td>
+<td>handler to print a sequence item to a FILE*</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler_context</code></em> :</span></p></td>
+<td>context information to pass to free/print handlers</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-sequence"></a><h3>raptor_free_sequence ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_sequence (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>);</pre>
+<p>
+Destructor - free a <a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence to destroy</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-delete-at"></a><h3>raptor_sequence_delete_at ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> * raptor_sequence_delete_at (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">int</span> idx</code></em>);</pre>
+<p>
+Remove an item from a position a sequence, returning it
+</p>
+<p>
+The item at the offset <em class="parameter"><code>idx</code></em> in the sequence is replaced with a
+NULL pointer and any existing item is returned. The caller
+owns the resulting item.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>idx</code></em> :</span></p></td>
+<td>index into sequence to operate at</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-get-at"></a><h3>raptor_sequence_get_at ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> * raptor_sequence_get_at (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">int</span> idx</code></em>);</pre>
+<p>
+Retrieve an item at offset <em class="parameter"><code>index</code></em> in the sequence.
+</p>
+<p>
+This is efficient to perform. <a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> is optimised
+to append/remove from the end of the sequence.
+</p>
+<p>
+After this call the item is still owned by the sequence.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence to use</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>idx</code></em> :</span></p></td>
+<td>index of item to get</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the object or NULL if <em class="parameter"><code>index</code></em> is out of range (0... sequence size - 1)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-join"></a><h3>raptor_sequence_join ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_sequence_join (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *dest</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *src</code></em>);</pre>
+<p>
+Join two sequences moving all items from one sequence to the end of another.
+</p>
+<p>
+After this operation, sequence src will be empty (zero size) but
+will have the same item capacity as before.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>dest</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> destination sequence</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>src</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> source sequence</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-next-permutation"></a><h3>raptor_sequence_next_permutation ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_sequence_next_permutation (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-compare-handler" title="raptor_data_compare_handler ()"><span class="type">raptor_data_compare_handler</span></a> compare</code></em>);</pre>
+<p>
+Get the next permutation of a sequence in lexicographic order
+</p>
+<p>
+Assumes the initial order of the items is lexicographically
+increasing. This function alters the order of the items until the
+last permuatation is done at which point the contents is reset to
+the intial order.
+</p>
+<p>
+Algorithm used is described in http://en.wikipedia.org/wiki/Permutation
+</p>
+<p>
+The comparison function <em class="parameter"><code>compare</code></em> is compatible with that used for
+<code class="function">qsort()</code> and provides the addresses of pointers to the data that
+must be dereferenced to get to the stored sequence data.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>int seq</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>compare</code></em> :</span></p></td>
+<td>comparison function</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 at the last permutation</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-pop"></a><h3>raptor_sequence_pop ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> * raptor_sequence_pop (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>);</pre>
+<p>
+Retrieve the item at the end of the sequence.
+</p>
+<p>
+Ownership of the item is transferred to the caller,
+i.e. caller is responsible of freeing the item.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence to use</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the object or NULL if the sequence is empty</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-print"></a><h3>raptor_sequence_print ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_sequence_print (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *fh</code></em>);</pre>
+<p>
+Print the sequence contents using the print_handler to print the data items.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence to sort</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>fh</code></em> :</span></p></td>
+<td>file handle</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-push"></a><h3>raptor_sequence_push ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_sequence_push (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *data</code></em>);</pre>
+<p>
+Add an item to the end of the sequence.
+</p>
+<p>
+The sequence takes ownership of the pushed item and frees it with the
+free_handler. On failure, the item is freed immediately.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence to add to</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
+<td>item to add</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-reverse"></a><h3>raptor_sequence_reverse ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_sequence_reverse (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">int</span> start_index</code></em>,
+ <em class="parameter"><code><span class="type">int</span> length</code></em>);</pre>
+<p>
+Reverse a range of elements
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>start_index</code></em> :</span></p></td>
+<td>starting index</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>number of elements to reverse</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if arguments are out of range</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-set-at"></a><h3>raptor_sequence_set_at ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_sequence_set_at (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">int</span> idx</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *data</code></em>);</pre>
+<p>
+Replace/set an item in a sequence.
+</p>
+<p>
+The item at the offset <em class="parameter"><code>idx</code></em> in the sequence is replaced with the
+new item <em class="parameter"><code>data</code></em> (which may be NULL). Any existing item is freed
+with the sequence's free_handler. If necessary the sequence
+is extended (with NULLs) to handle a larger offset.
+</p>
+<p>
+The sequence takes ownership of the new data item. On failure, the
+item is freed immediately.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>idx</code></em> :</span></p></td>
+<td>index into sequence to operate at</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
+<td>new data item.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-shift"></a><h3>raptor_sequence_shift ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_sequence_shift (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *data</code></em>);</pre>
+<p>
+Add an item to the start of the sequence.
+</p>
+<p>
+The sequence takes ownership of the shifted item and frees it with the
+free_handler. On failure, the item is freed immediately.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence to add to</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
+<td>item to add</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-size"></a><h3>raptor_sequence_size ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_sequence_size (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>);</pre>
+<p>
+Get the number of items in a sequence.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the sequence size (&gt;=0)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-sort"></a><h3>raptor_sequence_sort ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_sequence_sort (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-compare-handler" title="raptor_data_compare_handler ()"><span class="type">raptor_data_compare_handler</span></a> compare</code></em>);</pre>
+<p>
+Sort a sequence inline
+</p>
+<p>
+The comparison function <em class="parameter"><code>compare</code></em> is compatible with that used for
+<code class="function">qsort()</code> and provides the addresses of pointers to the data that
+must be dereferenced to get to the stored sequence data.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence to sort</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>compare</code></em> :</span></p></td>
+<td>comparison function</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-swap"></a><h3>raptor_sequence_swap ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_sequence_swap (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>,
+ <em class="parameter"><code><span class="type">int</span> i</code></em>,
+ <em class="parameter"><code><span class="type">int</span> j</code></em>);</pre>
+<p>
+Swap a pair of elements in a sequence
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>i</code></em> :</span></p></td>
+<td>first data index</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>j</code></em> :</span></p></td>
+<td>second data index</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if arguments are out of range</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-sequence-unshift"></a><h3>raptor_sequence_unshift ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> * raptor_sequence_unshift (<em class="parameter"><code><a class="link" href="raptor2-section-sequence.html#raptor-sequence" title="raptor_sequence"><span class="type">raptor_sequence</span></a> *seq</code></em>);</pre>
+<p>
+Retrieve the item at the start of the sequence.
+</p>
+<p>
+Ownership of the item is transferred to the caller,
+i.e. caller is responsible of freeing the item.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>seq</code></em> :</span></p></td>
+<td>sequence to use</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the object or NULL if the sequence is empty</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-serializer.html b/docs/html/raptor2-section-serializer.html
new file mode 100644
index 0000000..8637f03
--- /dev/null
+++ b/docs/html/raptor2-section-serializer.html
@@ -0,0 +1,619 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Serializer</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-sequence.html" title="Sequence">
+<link rel="next" href="raptor2-section-stringbuffer.html" title="String buffer">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-sequence.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-stringbuffer.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-serializer.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-serializer.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-serializer"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-serializer.top_of_page"></a>Serializer</span></h2>
+<p>Serializer — RDF serializers - from RDF triples to a syntax</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-serializer.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer">raptor_serializer</a>;
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="returnvalue">raptor_serializer</span></a> * <a class="link" href="raptor2-section-serializer.html#raptor-new-serializer" title="raptor_new_serializer ()">raptor_new_serializer</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-serializer.html#raptor-free-serializer" title="raptor_free_serializer ()">raptor_free_serializer</a> (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-iostream" title="raptor_serializer_start_to_iostream ()">raptor_serializer_start_to_iostream</a> (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostream</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-filename" title="raptor_serializer_start_to_filename ()">raptor_serializer_start_to_filename</a> (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-string" title="raptor_serializer_start_to_string ()">raptor_serializer_start_to_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">void</span> **string_p</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-file-handle" title="raptor_serializer_start_to_file_handle ()">raptor_serializer_start_to_file_handle</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *fh</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-serializer.html#raptor-serializer-set-namespace" title="raptor_serializer_set_namespace ()">raptor_serializer_set_namespace</a> (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *prefix</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-serializer.html#raptor-serializer-set-namespace-from-namespace" title="raptor_serializer_set_namespace_from_namespace ()">raptor_serializer_set_namespace_from_namespace</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *nspace</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-serializer.html#raptor-serializer-serialize-statement" title="raptor_serializer_serialize_statement ()">raptor_serializer_serialize_statement</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-serializer.html#raptor-serializer-serialize-end" title="raptor_serializer_serialize_end ()">raptor_serializer_serialize_end</a> (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-serializer.html#raptor-serializer-flush" title="raptor_serializer_flush ()">raptor_serializer_flush</a> (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>);
+const <a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="returnvalue">raptor_syntax_description</span></a> * <a class="link" href="raptor2-section-serializer.html#raptor-serializer-get-description" title="raptor_serializer_get_description ()">raptor_serializer_get_description</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>);
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * <a class="link" href="raptor2-section-serializer.html#raptor-serializer-get-iostream" title="raptor_serializer_get_iostream ()">raptor_serializer_get_iostream</a> (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *serializer</code></em>);
+<a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="returnvalue">raptor_locator</span></a> * <a class="link" href="raptor2-section-serializer.html#raptor-serializer-get-locator" title="raptor_serializer_get_locator ()">raptor_serializer_get_locator</a> (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-serializer.html#raptor-serializer-set-option" title="raptor_serializer_set_option ()">raptor_serializer_set_option</a> (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> integer</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-serializer.html#raptor-serializer-get-option" title="raptor_serializer_get_option ()">raptor_serializer_get_option</a> (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>,
+ <em class="parameter"><code><span class="type">char</span> **string_p</code></em>,
+ <em class="parameter"><code><span class="type">int</span> *integer_p</code></em>);
+<a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="returnvalue">raptor_world</span></a> * <a class="link" href="raptor2-section-serializer.html#raptor-serializer-get-world" title="raptor_serializer_get_world ()">raptor_serializer_get_world</a> (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-serializer.description"></a><h2>Description</h2>
+<p>
+The serializing class that allows creating a serializer for
+writing a particular syntax to an output string, file, file
+handle or user function (via <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a>).
+</p>
+<p>
+There are also methods to deal with handling errors, warnings and
+returned triples as well as setting options (features)
+that can adjust how serializing is performed.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-serializer.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-serializer"></a><h3>raptor_serializer</h3>
+<pre class="programlisting">raptor_serializer* raptor_serializer;
+</pre>
+<p>
+Raptor Serializer class
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-serializer"></a><h3>raptor_new_serializer ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="returnvalue">raptor_serializer</span></a> * raptor_new_serializer (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
+<p>
+Constructor - create a new raptor_serializer object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>the serializer name or NULL for default syntax</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-serializer"></a><h3>raptor_free_serializer ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_serializer (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>);</pre>
+<p>
+Destructor - destroy a raptor_serializer object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-start-to-iostream"></a><h3>raptor_serializer_start_to_iostream ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_serializer_start_to_iostream (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostream</code></em>);</pre>
+<p>
+Start serialization to an iostream with given base URI
+</p>
+<p>
+The passed in <em class="parameter"><code>iostream</code></em> does not become owned by the serializer
+and can be used by the caller after serializing is done. It
+must be destroyed by the caller.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>the <a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>base URI or NULL if no base URI is required</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostream</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> to write serialization to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-start-to-filename"></a><h3>raptor_serializer_start_to_filename ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_serializer_start_to_filename (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);</pre>
+<p>
+Start serializing to a filename.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>the <a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>filename</code></em> :</span></p></td>
+<td>filename to serialize to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-start-to-string"></a><h3>raptor_serializer_start_to_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_serializer_start_to_string (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">void</span> **string_p</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>);</pre>
+<p>
+Start serializing to a string.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>the <a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>base URI or NULL if no base URI is required</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string_p</code></em> :</span></p></td>
+<td>pointer to location to hold string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length_p</code></em> :</span></p></td>
+<td>pointer to location to hold length of string (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-start-to-file-handle"></a><h3>raptor_serializer_start_to_file_handle ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_serializer_start_to_file_handle
+ (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *fh</code></em>);</pre>
+<p>
+Start serializing to a FILE*.
+</p>
+<p>
+NOTE: This does not fclose the handle when it is finished.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>the <a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>base URI or NULL if no base URI is required</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>fh</code></em> :</span></p></td>
+<td>FILE* to serialize to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-set-namespace"></a><h3>raptor_serializer_set_namespace ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_serializer_set_namespace (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *prefix</code></em>);</pre>
+<p>
+set a namespace uri/prefix mapping for serializing.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>the <a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> of namespace or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>prefix</code></em> :</span></p></td>
+<td>prefix to use or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-set-namespace-from-namespace"></a><h3>raptor_serializer_set_namespace_from_namespace ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_serializer_set_namespace_from_namespace
+ (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *nspace</code></em>);</pre>
+<p>
+Set a namespace uri/prefix mapping for serializing from an existing namespace.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>the <a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nspace</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> to set</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-serialize-statement"></a><h3>raptor_serializer_serialize_statement ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_serializer_serialize_statement
+ (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>);</pre>
+<p>
+Serialize a statement.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>the <a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>statement</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> to serialize to a syntax</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-serialize-end"></a><h3>raptor_serializer_serialize_end ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_serializer_serialize_end (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>);</pre>
+<p>
+End a serialization.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>the <a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-flush"></a><h3>raptor_serializer_flush ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_serializer_flush (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>);</pre>
+<p>
+Flush the current serializer output and free any pending state
+</p>
+<p>
+In serializers that can generate blocks of content, this causes
+the writing of any current pending block. For example in Turtle
+this may write all pending triples.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>raptor serializer</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-get-description"></a><h3>raptor_serializer_get_description ()</h3>
+<pre class="programlisting">const <a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="returnvalue">raptor_syntax_description</span></a> * raptor_serializer_get_description
+ (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>);</pre>
+<p>
+Get description of the syntaxes of the serializer.
+</p>
+<p>
+The returned description is static and lives as long as the raptor
+library (raptor world).
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> serializer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>description of syntax</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-get-iostream"></a><h3>raptor_serializer_get_iostream ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="returnvalue">raptor_iostream</span></a> * raptor_serializer_get_iostream (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *serializer</code></em>);</pre>
+<p>
+Get the current serializer iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>serializer</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the serializer's current iostream or NULL if</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-get-locator"></a><h3>raptor_serializer_get_locator ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="returnvalue">raptor_locator</span></a> * raptor_serializer_get_locator (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>);</pre>
+<p>
+Get the serializer raptor locator object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>raptor serializer</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>raptor locator</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-set-option"></a><h3>raptor_serializer_set_option ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_serializer_set_option (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> integer</code></em>);</pre>
+<p>
+Set serializer option.
+</p>
+<p>
+If <em class="parameter"><code>string</code></em> is not NULL and the option type is numeric, the string
+value is converted to an integer and used in preference to <em class="parameter"><code>integer</code></em>.
+</p>
+<p>
+If <em class="parameter"><code>string</code></em> is NULL and the option type is not numeric, an error is
+returned.
+</p>
+<p>
+The <em class="parameter"><code>string</code></em> values used are copied.
+</p>
+<p>
+The allowed options are available via
+<a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>serializer</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> serializer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>option</code></em> :</span></p></td>
+<td>option to set from enumerated <a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> values</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string option value (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>integer</code></em> :</span></p></td>
+<td>integer option value</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non 0 on failure or if the option is unknown</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-get-option"></a><h3>raptor_serializer_get_option ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_serializer_get_option (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *serializer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>,
+ <em class="parameter"><code><span class="type">char</span> **string_p</code></em>,
+ <em class="parameter"><code><span class="type">int</span> *integer_p</code></em>);</pre>
+<p>
+Get serializer option.
+</p>
+<p>
+Any string value returned in *<em class="parameter"><code>string_p</code></em> is shared and must
+be copied by the caller.
+</p>
+<p>
+The allowed options are available via
+<a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>serializer</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> serializer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>option</code></em> :</span></p></td>
+<td>option to get value</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string_p</code></em> :</span></p></td>
+<td>pointer to where to store string value</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>integer_p</code></em> :</span></p></td>
+<td>pointer to where to store integer value</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>option value or &lt; 0 for an illegal option</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-serializer-get-world"></a><h3>raptor_serializer_get_world ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="returnvalue">raptor_world</span></a> * raptor_serializer_get_world (<em class="parameter"><code><a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> *rdf_serializer</code></em>);</pre>
+<p>
+Get the <a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> object associated with a serializer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdf_serializer</code></em> :</span></p></td>
+<td>raptor serializer</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>raptor_world* pointer</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-stringbuffer.html b/docs/html/raptor2-section-stringbuffer.html
new file mode 100644
index 0000000..68376d7
--- /dev/null
+++ b/docs/html/raptor2-section-stringbuffer.html
@@ -0,0 +1,532 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>String buffer</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-serializer.html" title="Serializer">
+<link rel="next" href="raptor2-section-triples.html" title="Triples">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-serializer.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-triples.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-stringbuffer.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-stringbuffer.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-stringbuffer"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-stringbuffer.top_of_page"></a>String buffer</span></h2>
+<p>String buffer — Append-only strings.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-stringbuffer.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer">raptor_stringbuffer</a>;
+<a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="returnvalue">raptor_stringbuffer</span></a> * <a class="link" href="raptor2-section-stringbuffer.html#raptor-new-stringbuffer" title="raptor_new_stringbuffer ()">raptor_new_stringbuffer</a> (<em class="parameter"><code><span class="type">void</span></code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-stringbuffer.html#raptor-free-stringbuffer" title="raptor_free_stringbuffer ()">raptor_free_stringbuffer</a> (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-counted-string" title="raptor_stringbuffer_append_counted_string ()">raptor_stringbuffer_append_counted_string</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><span class="type">int</span> do_copy</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-decimal" title="raptor_stringbuffer_append_decimal ()">raptor_stringbuffer_append_decimal</a> (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code><span class="type">int</span> integer</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-hexadecimal" title="raptor_stringbuffer_append_hexadecimal ()">raptor_stringbuffer_append_hexadecimal</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code><span class="type">int</span> hex</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-string" title="raptor_stringbuffer_append_string ()">raptor_stringbuffer_append_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> do_copy</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-stringbuffer" title="raptor_stringbuffer_append_stringbuffer ()">raptor_stringbuffer_append_stringbuffer</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *append</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-uri-escaped-counted-string" title="raptor_stringbuffer_append_uri_escaped_counted_string ()">raptor_stringbuffer_append_uri_escaped_counted_string</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *sb</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><span class="type">int</span> space_is_plus</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-prepend-counted-string" title="raptor_stringbuffer_prepend_counted_string ()">raptor_stringbuffer_prepend_counted_string</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><span class="type">int</span> do_copy</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-prepend-string" title="raptor_stringbuffer_prepend_string ()">raptor_stringbuffer_prepend_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> do_copy</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-as-string" title="raptor_stringbuffer_as_string ()">raptor_stringbuffer_as_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>);
+<span class="returnvalue">size_t</span> <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-length" title="raptor_stringbuffer_length ()">raptor_stringbuffer_length</a> (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-copy-to-string" title="raptor_stringbuffer_copy_to_string ()">raptor_stringbuffer_copy_to_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer-write" title="raptor_stringbuffer_write ()">raptor_stringbuffer_write</a> (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *sb</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-stringbuffer.description"></a><h2>Description</h2>
+<p>
+A utility class that allows easy construction of strings that
+grow at the end by appending new strings. Primarily used for
+constructing/serializing syntaxes into strings by the <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a>
+and <a class="link" href="raptor2-section-serializer.html#raptor-serializer" title="raptor_serializer"><span class="type">raptor_serializer</span></a> classes.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-stringbuffer.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-stringbuffer"></a><h3>raptor_stringbuffer</h3>
+<pre class="programlisting">raptor_stringbuffer* raptor_stringbuffer;
+</pre>
+<p>
+Raptor string buffer class
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-stringbuffer"></a><h3>raptor_new_stringbuffer ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="returnvalue">raptor_stringbuffer</span></a> * raptor_new_stringbuffer (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Create a new stringbuffer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>pointer to a raptor_stringbuffer object or NULL on failure</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-stringbuffer"></a><h3>raptor_free_stringbuffer ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_stringbuffer (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>);</pre>
+<p>
+Destroy a stringbuffer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>stringbuffer</code></em> :</span></p></td>
+<td>stringbuffer object to destroy.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-stringbuffer-append-counted-string"></a><h3>raptor_stringbuffer_append_counted_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_stringbuffer_append_counted_string
+ (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><span class="type">int</span> do_copy</code></em>);</pre>
+<p>
+Add a counted string to the stringbuffer.
+</p>
+<p>
+If <em class="parameter"><code>string</code></em> is NULL or <em class="parameter"><code>length</code></em> is 0, no work is performed.
+</p>
+<p>
+If <em class="parameter"><code>do_copy</code></em> is non-0, the passed-in string is copied into new memory
+otherwise the stringbuffer becomes the owner of the string pointer
+and will free it when the stringbuffer is destroyed.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stringbuffer</code></em> :</span></p></td>
+<td>raptor stringbuffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>do_copy</code></em> :</span></p></td>
+<td>non-0 to copy the string</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-stringbuffer-append-decimal"></a><h3>raptor_stringbuffer_append_decimal ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_stringbuffer_append_decimal (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code><span class="type">int</span> integer</code></em>);</pre>
+<p>
+Add an integer in decimal to the stringbuffer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stringbuffer</code></em> :</span></p></td>
+<td>raptor stringbuffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>integer</code></em> :</span></p></td>
+<td>integer to format as decimal and add</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-stringbuffer-append-hexadecimal"></a><h3>raptor_stringbuffer_append_hexadecimal ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_stringbuffer_append_hexadecimal
+ (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code><span class="type">int</span> hex</code></em>);</pre>
+<p>
+Add an integer formatted in hexdecimal (base 16) to the stringbuffer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stringbuffer</code></em> :</span></p></td>
+<td>raptor stringbuffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>hex</code></em> :</span></p></td>
+<td>integer to format</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-stringbuffer-append-string"></a><h3>raptor_stringbuffer_append_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_stringbuffer_append_string (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> do_copy</code></em>);</pre>
+<p>
+Add a string to the stringbuffer.
+</p>
+<p>
+If <em class="parameter"><code>string</code></em> is NULL, no work is performed.
+</p>
+<p>
+If <em class="parameter"><code>do_copy</code></em> is non-0, the passed-in string is copied into new memory
+otherwise the stringbuffer becomes the owner of the string pointer
+and will free it when the stringbuffer is destroyed.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stringbuffer</code></em> :</span></p></td>
+<td>raptor stringbuffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>do_copy</code></em> :</span></p></td>
+<td>non-0 to copy the string</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-stringbuffer-append-stringbuffer"></a><h3>raptor_stringbuffer_append_stringbuffer ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_stringbuffer_append_stringbuffer
+ (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *append</code></em>);</pre>
+<p>
+Add a stringbuffer to the stringbuffer.
+</p>
+<p>
+This function removes the content from the appending stringbuffer,
+making it empty and appends it to the supplied stringbuffer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stringbuffer</code></em> :</span></p></td>
+<td><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a></td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>append</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> to append</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-stringbuffer-append-uri-escaped-counted-string"></a><h3>raptor_stringbuffer_append_uri_escaped_counted_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_stringbuffer_append_uri_escaped_counted_string
+ (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *sb</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><span class="type">int</span> space_is_plus</code></em>);</pre>
+<p>
+Add a URI-escaped version of <em class="parameter"><code>string</code></em> to the stringbuffer.
+</p>
+<p>
+If <em class="parameter"><code>string</code></em> is NULL or <em class="parameter"><code>length</code></em> is 0, no work is performed.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sb</code></em> :</span></p></td>
+<td>raptor stringbuffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>space_is_plus</code></em> :</span></p></td>
+<td>if non-0, escape spaces as '+' otherwise percent-encode them</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-stringbuffer-prepend-counted-string"></a><h3>raptor_stringbuffer_prepend_counted_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_stringbuffer_prepend_counted_string
+ (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><span class="type">int</span> do_copy</code></em>);</pre>
+<p>
+If do_copy is non-0, the passed-in string is copied into new memory
+otherwise the stringbuffer becomes the owner of the string pointer
+and will free it when the stringbuffer is destroyed.
+</p>
+<p>
+Add a string to the start of the stringbuffer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stringbuffer</code></em> :</span></p></td>
+<td>raptor stringbuffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>do_copy</code></em> :</span></p></td>
+<td>non-0 to copy the string</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-stringbuffer-prepend-string"></a><h3>raptor_stringbuffer_prepend_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_stringbuffer_prepend_string (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> do_copy</code></em>);</pre>
+<p>
+Add a string to the start of the stringbuffer.
+</p>
+<p>
+If do_copy is non-0, the passed-in string is copied into new memory
+otherwise the stringbuffer becomes the owner of the string pointer
+and will free it when the stringbuffer is destroyed.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stringbuffer</code></em> :</span></p></td>
+<td>raptor stringbuffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>do_copy</code></em> :</span></p></td>
+<td>non-0 to copy the string</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-stringbuffer-as-string"></a><h3>raptor_stringbuffer_as_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_stringbuffer_as_string (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>);</pre>
+<p>
+Return the stringbuffer as a C string.
+</p>
+<p>
+Note: the return value is a to a shared string that the stringbuffer
+allocates and manages.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stringbuffer</code></em> :</span></p></td>
+<td>raptor stringbuffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>NULL on failure or stringbuffer is empty, otherwise
+a pointer to a shared copy of the string.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-stringbuffer-length"></a><h3>raptor_stringbuffer_length ()</h3>
+<pre class="programlisting"><span class="returnvalue">size_t</span> raptor_stringbuffer_length (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>);</pre>
+<p>
+Return the stringbuffer length.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stringbuffer</code></em> :</span></p></td>
+<td>raptor stringbuffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>size of stringbuffer</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-stringbuffer-copy-to-string"></a><h3>raptor_stringbuffer_copy_to_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_stringbuffer_copy_to_string (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *stringbuffer</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);</pre>
+<p>
+Copy the stringbuffer into a string.
+</p>
+<p>
+Copies the underlying string to a pre-allocated buffer. The
+output string is always '\0' terminated.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stringbuffer</code></em> :</span></p></td>
+<td>raptor stringbuffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>output string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>size of output string</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure such as stringbuffer is empty, buffer is too small</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-stringbuffer-write"></a><h3>raptor_stringbuffer_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_stringbuffer_write (<em class="parameter"><code><a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> *sb</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write a stringbuffer to an iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>sb</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-stringbuffer.html#raptor-stringbuffer" title="raptor_stringbuffer"><span class="type">raptor_stringbuffer</span></a> to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-triples.html b/docs/html/raptor2-section-triples.html
new file mode 100644
index 0000000..d658bf2
--- /dev/null
+++ b/docs/html/raptor2-section-triples.html
@@ -0,0 +1,1214 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Triples</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-stringbuffer.html" title="String buffer">
+<link rel="next" href="raptor2-section-unicode.html" title="Unicode">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-stringbuffer.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-unicode.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-triples.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-triples.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-triples"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-triples.top_of_page"></a>Triples</span></h2>
+<p>Triples — RDF Triples</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-triples.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">enum <a class="link" href="raptor2-section-triples.html#raptor-term-type" title="enum raptor_term_type">raptor_term_type</a>;
+ <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term">raptor_term</a>;
+ <a class="link" href="raptor2-section-triples.html#raptor-term-value" title="raptor_term_value">raptor_term_value</a>;
+ <a class="link" href="raptor2-section-triples.html#raptor-term-blank-value" title="raptor_term_blank_value">raptor_term_blank_value</a>;
+ <a class="link" href="raptor2-section-triples.html#raptor-term-literal-value" title="raptor_term_literal_value">raptor_term_literal_value</a>;
+<a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-blank" title="raptor_new_term_from_blank ()">raptor_new_term_from_blank</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *blank</code></em>);
+<a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-counted-blank" title="raptor_new_term_from_counted_blank ()">raptor_new_term_from_counted_blank</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *blank</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);
+<a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-literal" title="raptor_new_term_from_literal ()">raptor_new_term_from_literal</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *literal</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *datatype</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *language</code></em>);
+<a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-counted-literal" title="raptor_new_term_from_counted_literal ()">raptor_new_term_from_counted_literal</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *literal</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> literal_len</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *datatype</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *language</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> language_len</code></em>);
+<a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-counted-uri-string" title="raptor_new_term_from_counted_uri_string ()">raptor_new_term_from_counted_uri_string</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);
+<a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-uri" title="raptor_new_term_from_uri ()">raptor_new_term_from_uri</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);
+<a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * <a class="link" href="raptor2-section-triples.html#raptor-new-term-from-uri-string" title="raptor_new_term_from_uri_string ()">raptor_new_term_from_uri_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>);
+<a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * <a class="link" href="raptor2-section-triples.html#raptor-term-copy" title="raptor_term_copy ()">raptor_term_copy</a> (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-triples.html#raptor-term-compare" title="raptor_term_compare ()">raptor_term_compare</a> (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *t1</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *t2</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-triples.html#raptor-term-equals" title="raptor_term_equals ()">raptor_term_equals</a> (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *t1</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *t2</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-triples.html#raptor-free-term" title="raptor_free_term ()">raptor_free_term</a> (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-triples.html#raptor-term-to-counted-string" title="raptor_term_to_counted_string ()">raptor_term_to_counted_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *len_p</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-triples.html#raptor-term-to-string" title="raptor_term_to_string ()">raptor_term_to_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-triples.html#raptor-term-ntriples-write" title="raptor_term_ntriples_write ()">raptor_term_ntriples_write</a> (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-triples.html#raptor-term-to-turtle-counted-string" title="raptor_term_to_turtle_counted_string ()">raptor_term_to_turtle_counted_string</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *len_p</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-triples.html#raptor-term-to-turtle-string" title="raptor_term_to_turtle_string ()">raptor_term_to_turtle_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-triples.html#raptor-term-turtle-write" title="raptor_term_turtle_write ()">raptor_term_turtle_write</a> (<em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);
+ <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement">raptor_statement</a>;
+<a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="returnvalue">raptor_statement</span></a> * <a class="link" href="raptor2-section-triples.html#raptor-new-statement" title="raptor_new_statement ()">raptor_new_statement</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);
+<a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="returnvalue">raptor_statement</span></a> * <a class="link" href="raptor2-section-triples.html#raptor-new-statement-from-nodes" title="raptor_new_statement_from_nodes ()">raptor_new_statement_from_nodes</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *subject</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *predicate</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *object</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *graph</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-triples.html#raptor-free-statement" title="raptor_free_statement ()">raptor_free_statement</a> (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>);
+<a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="returnvalue">raptor_statement</span></a> * <a class="link" href="raptor2-section-triples.html#raptor-statement-copy" title="raptor_statement_copy ()">raptor_statement_copy</a> (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-triples.html#raptor-statement-compare" title="raptor_statement_compare ()">raptor_statement_compare</a> (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *s1</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *s2</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-triples.html#raptor-statement-equals" title="raptor_statement_equals ()">raptor_statement_equals</a> (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *s1</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *s2</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-triples.html#raptor-statement-init" title="raptor_statement_init ()">raptor_statement_init</a> (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-triples.html#raptor-statement-clear" title="raptor_statement_clear ()">raptor_statement_clear</a> (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-triples.html#raptor-statement-print" title="raptor_statement_print ()">raptor_statement_print</a> (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *stream</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-triples.html#raptor-statement-print-as-ntriples" title="raptor_statement_print_as_ntriples ()">raptor_statement_print_as_ntriples</a> (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *stream</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-triples.html#raptor-statement-ntriples-write" title="raptor_statement_ntriples_write ()">raptor_statement_ntriples_write</a> (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>,
+ <em class="parameter"><code><span class="type">int</span> write_graph_term</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-triples.description"></a><h2>Description</h2>
+<p>
+Representation of RDF statements inside Raptor. They are
+a 3 or 4-tuple of <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> which cover the RDF terms of
+URI (<a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-URI:CAPS"><code class="literal">RAPTOR_TERM_TYPE_URI</code></a>),
+Literal (<a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-LITERAL:CAPS"><code class="literal">RAPTOR_TERM_TYPE_LITERAL</code></a>) and
+Blank Node (<a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-BLANK:CAPS"><code class="literal">RAPTOR_TERM_TYPE_BLANK</code></a>).
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-triples.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-term-type"></a><h3>enum raptor_term_type</h3>
+<pre class="programlisting">typedef enum {
+ RAPTOR_TERM_TYPE_UNKNOWN = 0,
+ RAPTOR_TERM_TYPE_URI = 1,
+ RAPTOR_TERM_TYPE_LITERAL = 2,
+ /* unused type 3 */
+ RAPTOR_TERM_TYPE_BLANK = 4
+} raptor_term_type;
+</pre>
+<p>
+Type of term in a <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a>
+</p>
+<p>
+Node type 3 is unused but exists to preserve numeric compatibility
+with librdf_node_type values.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="RAPTOR-TERM-TYPE-UNKNOWN:CAPS"></a><span class="term"><code class="literal">RAPTOR_TERM_TYPE_UNKNOWN</code></span></p></td>
+<td>Internal
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-TERM-TYPE-URI:CAPS"></a><span class="term"><code class="literal">RAPTOR_TERM_TYPE_URI</code></span></p></td>
+<td>RDF URI
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-TERM-TYPE-LITERAL:CAPS"></a><span class="term"><code class="literal">RAPTOR_TERM_TYPE_LITERAL</code></span></p></td>
+<td>RDF literal
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-TERM-TYPE-BLANK:CAPS"></a><span class="term"><code class="literal">RAPTOR_TERM_TYPE_BLANK</code></span></p></td>
+<td>RDF blank node
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term"></a><h3>raptor_term</h3>
+<pre class="programlisting">typedef struct {
+ raptor_world* world;
+
+ int usage;
+
+ raptor_term_type type;
+
+ raptor_term_value value;
+} raptor_term;
+</pre>
+<p>
+An RDF statement term
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *<em class="structfield"><code><a name="raptor-term.world"></a>world</code></em>;</span></p></td>
+<td>world</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="type">int</span> <em class="structfield"><code><a name="raptor-term.usage"></a>usage</code></em>;</span></p></td>
+<td>usage reference count (if &gt;0)</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-triples.html#raptor-term-type" title="enum raptor_term_type"><span class="type">raptor_term_type</span></a> <em class="structfield"><code><a name="raptor-term.type"></a>type</code></em>;</span></p></td>
+<td>term type</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-triples.html#raptor-term-value" title="raptor_term_value"><span class="type">raptor_term_value</span></a> <em class="structfield"><code><a name="raptor-term.value"></a>value</code></em>;</span></p></td>
+<td>term values per type</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term-value"></a><h3>raptor_term_value</h3>
+<pre class="programlisting">typedef union {
+ raptor_uri *uri;
+
+ raptor_term_literal_value literal;
+
+ raptor_term_blank_value blank;
+} raptor_term_value;
+</pre>
+<p>
+Term value - this typedef exists solely for use in <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *<em class="structfield"><code><a name="raptor-term-value.uri"></a>uri</code></em>;</span></p></td>
+<td>uri value when term type is <a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-URI:CAPS"><span class="type">RAPTOR_TERM_TYPE_URI</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-triples.html#raptor-term-literal-value" title="raptor_term_literal_value"><span class="type">raptor_term_literal_value</span></a> <em class="structfield"><code><a name="raptor-term-value.literal"></a>literal</code></em>;</span></p></td>
+<td>literal value when term type is <a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-LITERAL:CAPS"><span class="type">RAPTOR_TERM_TYPE_LITERAL</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-triples.html#raptor-term-blank-value" title="raptor_term_blank_value"><span class="type">raptor_term_blank_value</span></a> <em class="structfield"><code><a name="raptor-term-value.blank"></a>blank</code></em>;</span></p></td>
+<td>blank value when term type is <a class="link" href="raptor2-section-triples.html#RAPTOR-TERM-TYPE-BLANK:CAPS"><span class="type">RAPTOR_TERM_TYPE_BLANK</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term-blank-value"></a><h3>raptor_term_blank_value</h3>
+<pre class="programlisting">typedef struct {
+ unsigned char *string;
+ unsigned int string_len;
+} raptor_term_blank_value;
+</pre>
+<p>
+Blank term value - this typedef exists solely for use in <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">unsigned <span class="type">char</span> *<em class="structfield"><code><a name="raptor-term-blank-value.string"></a>string</code></em>;</span></p></td>
+<td>literal string</td>
+</tr>
+<tr>
+<td><p><span class="term">unsigned <span class="type">int</span> <em class="structfield"><code><a name="raptor-term-blank-value.string-len"></a>string_len</code></em>;</span></p></td>
+<td>length of string</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term-literal-value"></a><h3>raptor_term_literal_value</h3>
+<pre class="programlisting">typedef struct {
+ unsigned char *string;
+ unsigned int string_len;
+
+ raptor_uri *datatype;
+
+ unsigned char *language;
+ unsigned char language_len;
+} raptor_term_literal_value;
+</pre>
+<p>
+Literal term value - this typedef exists solely for use in <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a>
+</p>
+<p>
+Either <em class="parameter"><code>datatype</code></em> or <em class="parameter"><code>language</code></em> may be non-NULL but not both.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">unsigned <span class="type">char</span> *<em class="structfield"><code><a name="raptor-term-literal-value.string"></a>string</code></em>;</span></p></td>
+<td>literal string</td>
+</tr>
+<tr>
+<td><p><span class="term">unsigned <span class="type">int</span> <em class="structfield"><code><a name="raptor-term-literal-value.string-len"></a>string_len</code></em>;</span></p></td>
+<td>length of string</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *<em class="structfield"><code><a name="raptor-term-literal-value.datatype"></a>datatype</code></em>;</span></p></td>
+<td>datatype URI (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term">unsigned <span class="type">char</span> *<em class="structfield"><code><a name="raptor-term-literal-value.language"></a>language</code></em>;</span></p></td>
+<td>literal language (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term">unsigned <span class="type">char</span> <em class="structfield"><code><a name="raptor-term-literal-value.language-len"></a>language_len</code></em>;</span></p></td>
+<td>length of language</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-term-from-blank"></a><h3>raptor_new_term_from_blank ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * raptor_new_term_from_blank (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *blank</code></em>);</pre>
+<p>
+Constructor - create a new blank node statement term from a UTF-8 encoded blank node ID
+</p>
+<p>
+Takes a copy of the passed in <em class="parameter"><code>blank</code></em>
+</p>
+<p>
+If <em class="parameter"><code>blank</code></em> is NULL, creates a new internal identifier and uses it.
+This will use the handler set with
+<a class="link" href="raptor2-section-world.html#raptor-world-set-generate-bnodeid-parameters" title="raptor_world_set_generate_bnodeid_parameters ()"><code class="function">raptor_world_set_generate_bnodeid_parameters()</code></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>blank</code></em> :</span></p></td>
+<td>UTF-8 encoded blank node identifier (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new term or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-term-from-counted-blank"></a><h3>raptor_new_term_from_counted_blank ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * raptor_new_term_from_counted_blank (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *blank</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);</pre>
+<p>
+Constructor - create a new blank node statement term from a counted UTF-8 encoded blank node ID
+</p>
+<p>
+Takes a copy of the passed in <em class="parameter"><code>blank</code></em>
+</p>
+<p>
+If <em class="parameter"><code>blank</code></em> is NULL, creates a new internal identifier and uses it.
+This will use the handler set with
+<a class="link" href="raptor2-section-world.html#raptor-world-set-generate-bnodeid-parameters" title="raptor_world_set_generate_bnodeid_parameters ()"><code class="function">raptor_world_set_generate_bnodeid_parameters()</code></a>
+</p>
+<p>
+Note: The <em class="parameter"><code>blank</code></em> need not be NULL terminated - a NULL will be
+added to the copied string used.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>blank</code></em> :</span></p></td>
+<td>UTF-8 encoded blank node identifier (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>length of identifier (or 0)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new term or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-term-from-literal"></a><h3>raptor_new_term_from_literal ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * raptor_new_term_from_literal (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *literal</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *datatype</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *language</code></em>);</pre>
+<p>
+Constructor - create a new literal statement term
+</p>
+<p>
+Takes copies of the passed in <em class="parameter"><code>literal</code></em>, <em class="parameter"><code>datatype</code></em>, <em class="parameter"><code>language</code></em>
+</p>
+<p>
+Only one of <em class="parameter"><code>language</code></em> or <em class="parameter"><code>datatype</code></em> may be given. If both are
+given, NULL is returned. If <em class="parameter"><code>language</code></em> is the empty string, it is
+the equivalent to NULL.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>literal</code></em> :</span></p></td>
+<td>UTF-8 encoded literal string (or NULL for empty literal)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>datatype</code></em> :</span></p></td>
+<td>literal datatype URI (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>language</code></em> :</span></p></td>
+<td>literal language (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new term or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-term-from-counted-literal"></a><h3>raptor_new_term_from_counted_literal ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * raptor_new_term_from_counted_literal
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *literal</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> literal_len</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *datatype</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *language</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> language_len</code></em>);</pre>
+<p>
+Constructor - create a new literal statement term from a counted UTF-8 encoded literal string
+</p>
+<p>
+Takes copies of the passed in <em class="parameter"><code>literal</code></em>, <em class="parameter"><code>datatype</code></em>, <em class="parameter"><code>language</code></em>
+</p>
+<p>
+Only one of <em class="parameter"><code>language</code></em> or <em class="parameter"><code>datatype</code></em> may be given. If both are
+given, NULL is returned. If <em class="parameter"><code>language</code></em> is the empty string, it is
+the equivalent to NULL.
+</p>
+<p>
+Note: The <em class="parameter"><code>literal</code></em> need not be NULL terminated - a NULL will be
+added to the copied string used.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>literal</code></em> :</span></p></td>
+<td>UTF-8 encoded literal string (or NULL for empty literal)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>literal_len</code></em> :</span></p></td>
+<td>length of literal</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>datatype</code></em> :</span></p></td>
+<td>literal datatype URI (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>language</code></em> :</span></p></td>
+<td>literal language (or NULL for no language)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>language_len</code></em> :</span></p></td>
+<td>literal language length</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new term or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-term-from-counted-uri-string"></a><h3>raptor_new_term_from_counted_uri_string ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * raptor_new_term_from_counted_uri_string
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);</pre>
+<p>
+Constructor - create a new URI statement term from a UTF-8 encoded Unicode string
+</p>
+<p>
+Note: The <em class="parameter"><code>uri_string</code></em> need not be NULL terminated - a NULL will be
+added to the copied string used.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_string</code></em> :</span></p></td>
+<td>UTF-8 encoded URI string.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>length of URI string</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new term or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-term-from-uri"></a><h3>raptor_new_term_from_uri ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * raptor_new_term_from_uri (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);</pre>
+<p>
+Constructor - create a new URI statement term
+</p>
+<p>
+Takes a copy (reference) of the passed in <em class="parameter"><code>uri</code></em>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>uri</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new term or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-term-from-uri-string"></a><h3>raptor_new_term_from_uri_string ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * raptor_new_term_from_uri_string (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>);</pre>
+<p>
+Constructor - create a new URI statement term from a UTF-8 encoded Unicode string
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_string</code></em> :</span></p></td>
+<td>UTF-8 encoded URI string.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new term or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term-copy"></a><h3>raptor_term_copy ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="returnvalue">raptor_term</span></a> * raptor_term_copy (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>);</pre>
+<p>
+Copy constructor - get a copy of a statement term
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>term</code></em> :</span></p></td>
+<td>raptor term</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new term object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term-compare"></a><h3>raptor_term_compare ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_term_compare (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *t1</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *t2</code></em>);</pre>
+<p>
+Compare a pair of <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a>
+</p>
+<p>
+If types are different, the <a class="link" href="raptor2-section-triples.html#raptor-term-type" title="enum raptor_term_type"><span class="type">raptor_term_type</span></a> order is used.
+</p>
+<p>
+Resource and datatype URIs are compared with <a class="link" href="raptor2-section-uri.html#raptor-uri-compare" title="raptor_uri_compare ()"><code class="function">raptor_uri_compare()</code></a>,
+blank nodes and literals with <code class="function">strcmp()</code>. If one literal has no
+language, it is earlier than one with a language. If one literal
+has no datatype, it is earlier than one with a datatype.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>t1</code></em> :</span></p></td>
+<td>first term</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>t2</code></em> :</span></p></td>
+<td>second term</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>&lt;0 if t1 is before t2, 0 if equal, &gt;0 if t1 is after t2</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term-equals"></a><h3>raptor_term_equals ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_term_equals (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *t1</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *t2</code></em>);</pre>
+<p>
+Compare a pair of <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> for equality
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>t1</code></em> :</span></p></td>
+<td>first term</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>t2</code></em> :</span></p></td>
+<td>second term</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if the terms are equal</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-term"></a><h3>raptor_free_term ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_term (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>);</pre>
+<p>
+Destructor - destroy a raptor_term object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>term</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term-to-counted-string"></a><h3>raptor_term_to_counted_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_term_to_counted_string (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *len_p</code></em>);</pre>
+<p>
+Turns part of raptor term into a N-Triples format counted string.
+</p>
+<p>
+Turns the given <em class="parameter"><code>term</code></em> into an N-Triples escaped string using all the
+escapes as defined in http://www.w3.org/TR/rdf-testcases/<span class="type">ntriples</span>
+</p>
+<p>
+This function uses <a class="link" href="raptor2-section-triples.html#raptor-term-ntriples-write" title="raptor_term_ntriples_write ()"><code class="function">raptor_term_ntriples_write()</code></a> to write to an
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> which is the prefered way to write formatted
+output.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>term</code></em> :</span></p></td>
+<td><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a></td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len_p</code></em> :</span></p></td>
+<td>Pointer to location to store length of new string (if not NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the new string or NULL on failure. The length of
+the new string is returned in *<em class="parameter"><code>len_p</code></em> if len_p is not NULL.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term-to-string"></a><h3>raptor_term_to_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_term_to_string (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>);</pre>
+<p>
+Turns part of raptor statement into a N-Triples format string.
+</p>
+<p>
+Turns the given <em class="parameter"><code>term</code></em> into an N-Triples escaped string using all the
+escapes as defined in http://www.w3.org/TR/rdf-testcases/<span class="type">ntriples</span>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>term</code></em> :</span></p></td>
+<td><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a></td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the new string or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term-ntriples-write"></a><h3>raptor_term_ntriples_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_term_ntriples_write (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write a <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> formatted in N-Triples format to a <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>term</code></em> :</span></p></td>
+<td>term to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term-to-turtle-counted-string"></a><h3>raptor_term_to_turtle_counted_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_term_to_turtle_counted_string
+ (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *len_p</code></em>);</pre>
+<p>
+Convert <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> to a string.
+Caller has responsibility to free the string.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>term</code></em> :</span></p></td>
+<td>term</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>base URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len_p</code></em> :</span></p></td>
+<td>Pointer to location to store length of new string (if not NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the new string or NULL on failure. The length of
+the new string is returned in *<em class="parameter"><code>len_p</code></em> if len_p is not NULL.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term-to-turtle-string"></a><h3>raptor_term_to_turtle_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_term_to_turtle_string (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);</pre>
+<p>
+Convert <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> to a string.
+Caller has responsibility to free the string.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>term</code></em> :</span></p></td>
+<td>term</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>base URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the new string or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-term-turtle-write"></a><h3>raptor_term_turtle_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_term_turtle_write (<em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *term</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);</pre>
+<p>
+Write <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> to a stream in turtle syntax (using QNames).
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>iostream for writing</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>term</code></em> :</span></p></td>
+<td>term</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>base URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-statement"></a><h3>raptor_statement</h3>
+<pre class="programlisting">typedef struct {
+ raptor_world* world;
+ int usage;
+ raptor_term* subject;
+ raptor_term* predicate;
+ raptor_term* object;
+ raptor_term* graph;
+} raptor_statement;
+</pre>
+<p>
+An RDF triple with optional graph name (quad)
+</p>
+<p>
+See <a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> for a description of how the fields may be used.
+As returned by a parser statement_handler.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *<em class="structfield"><code><a name="raptor-statement.world"></a>world</code></em>;</span></p></td>
+<td>world pointer</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="type">int</span> <em class="structfield"><code><a name="raptor-statement.usage"></a>usage</code></em>;</span></p></td>
+<td>usage count</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *<em class="structfield"><code><a name="raptor-statement.subject"></a>subject</code></em>;</span></p></td>
+<td>statement subject</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *<em class="structfield"><code><a name="raptor-statement.predicate"></a>predicate</code></em>;</span></p></td>
+<td>statement predicate</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *<em class="structfield"><code><a name="raptor-statement.object"></a>object</code></em>;</span></p></td>
+<td>statement object</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *<em class="structfield"><code><a name="raptor-statement.graph"></a>graph</code></em>;</span></p></td>
+<td>statement graph name (or NULL if not present)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-statement"></a><h3>raptor_new_statement ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="returnvalue">raptor_statement</span></a> * raptor_new_statement (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);</pre>
+<p>
+Constructor - create a new <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new raptor statement or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-statement-from-nodes"></a><h3>raptor_new_statement_from_nodes ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="returnvalue">raptor_statement</span></a> * raptor_new_statement_from_nodes (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *subject</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *predicate</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *object</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a> *graph</code></em>);</pre>
+<p>
+Constructor - create a new <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> from a set of terms
+</p>
+<p>
+The <em class="parameter"><code>subject</code></em>, <em class="parameter"><code>predicate</code></em>, <em class="parameter"><code>object</code></em> and <em class="parameter"><code>graph</code></em> become owned by the statement.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>subject</code></em> :</span></p></td>
+<td>subject term (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>predicate</code></em> :</span></p></td>
+<td>predicate term (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>object term (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>graph</code></em> :</span></p></td>
+<td>graph name term (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new raptor statement or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-statement"></a><h3>raptor_free_statement ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_statement (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>);</pre>
+<p>
+Destructor
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>statement</code></em> :</span></p></td>
+<td>statement</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-statement-copy"></a><h3>raptor_statement_copy ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="returnvalue">raptor_statement</span></a> * raptor_statement_copy (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>);</pre>
+<p>
+Copy a <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>statement</code></em> :</span></p></td>
+<td>statement to copy</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> or NULL on error</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-statement-compare"></a><h3>raptor_statement_compare ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_statement_compare (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *s1</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *s2</code></em>);</pre>
+<p>
+Compare a pair of <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a>
+</p>
+<p>
+Uses <a class="link" href="raptor2-section-triples.html#raptor-term-compare" title="raptor_term_compare ()"><code class="function">raptor_term_compare()</code></a> to check ordering between subjects,
+predicates and objects of statements.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s1</code></em> :</span></p></td>
+<td>first statement</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s2</code></em> :</span></p></td>
+<td>second statement</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>&lt;0 if s1 is before s2, 0 if equal, &gt;0 if s1 is after s2</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-statement-equals"></a><h3>raptor_statement_equals ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_statement_equals (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *s1</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *s2</code></em>);</pre>
+<p>
+Compare a pair of <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> for equality
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s1</code></em> :</span></p></td>
+<td>first statement</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s2</code></em> :</span></p></td>
+<td>second statement</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if statements are equal</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-statement-init"></a><h3>raptor_statement_init ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_statement_init (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);</pre>
+<p>
+Initialize a static <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>statement</code></em> :</span></p></td>
+<td>statement to initialize</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-statement-clear"></a><h3>raptor_statement_clear ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_statement_clear (<em class="parameter"><code><a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>);</pre>
+<p>
+Empty a raptor_statement of terms.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>statement</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-statement-print"></a><h3>raptor_statement_print ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_statement_print (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *stream</code></em>);</pre>
+<p>
+Print a raptor_statement to a stream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>statement</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> object to print</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
+<td>FILE* stream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-statement-print-as-ntriples"></a><h3>raptor_statement_print_as_ntriples ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_statement_print_as_ntriples (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *stream</code></em>);</pre>
+<p>
+Print a raptor_statement in N-Triples form.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>statement</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> to print</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
+<td>FILE* stream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-statement-ntriples-write"></a><h3>raptor_statement_ntriples_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_statement_ntriples_write (<em class="parameter"><code>const <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> *statement</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>,
+ <em class="parameter"><code><span class="type">int</span> write_graph_term</code></em>);</pre>
+<p>
+Write a <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a> formatted in N-Triples or N-Quads format
+to a <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>statement</code></em> :</span></p></td>
+<td>statement to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>write_graph_term</code></em> :</span></p></td>
+<td>flag to write graph term if present</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-unicode.html b/docs/html/raptor2-section-unicode.html
new file mode 100644
index 0000000..58e7587
--- /dev/null
+++ b/docs/html/raptor2-section-unicode.html
@@ -0,0 +1,373 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Unicode</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-triples.html" title="Triples">
+<link rel="next" href="raptor2-section-uri.html" title="URI">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-triples.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-uri.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-unicode.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-unicode.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-unicode"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-unicode.top_of_page"></a>Unicode</span></h2>
+<p>Unicode — Unicode and UTF-8 utility functions.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-unicode.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar">raptor_unichar</a>;
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-unicode.html#raptor-unicode-utf8-string-put-char" title="raptor_unicode_utf8_string_put_char ()">raptor_unicode_utf8_string_put_char</a> (<em class="parameter"><code><a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar"><span class="type">raptor_unichar</span></a> c</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> *output</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-unicode.html#raptor-unicode-utf8-string-get-char" title="raptor_unicode_utf8_string_get_char ()">raptor_unicode_utf8_string_get_char</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *input</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar"><span class="type">raptor_unichar</span></a> *output</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-unicode.html#raptor-unicode-is-xml11-namestartchar" title="raptor_unicode_is_xml11_namestartchar ()">raptor_unicode_is_xml11_namestartchar</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar"><span class="type">raptor_unichar</span></a> c</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-unicode.html#raptor-unicode-is-xml10-namestartchar" title="raptor_unicode_is_xml10_namestartchar ()">raptor_unicode_is_xml10_namestartchar</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar"><span class="type">raptor_unichar</span></a> c</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-unicode.html#raptor-unicode-is-xml11-namechar" title="raptor_unicode_is_xml11_namechar ()">raptor_unicode_is_xml11_namechar</a> (<em class="parameter"><code><a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar"><span class="type">raptor_unichar</span></a> c</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-unicode.html#raptor-unicode-is-xml10-namechar" title="raptor_unicode_is_xml10_namechar ()">raptor_unicode_is_xml10_namechar</a> (<em class="parameter"><code><a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar"><span class="type">raptor_unichar</span></a> c</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-unicode.html#raptor-unicode-check-utf8-string" title="raptor_unicode_check_utf8_string ()">raptor_unicode_check_utf8_string</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-unicode.html#raptor-unicode-utf8-strlen" title="raptor_unicode_utf8_strlen ()">raptor_unicode_utf8_strlen</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);
+<span class="returnvalue">size_t</span> <a class="link" href="raptor2-section-unicode.html#raptor-unicode-utf8-substr" title="raptor_unicode_utf8_substr ()">raptor_unicode_utf8_substr</a> (<em class="parameter"><code>unsigned <span class="type">char</span> *dest</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *dest_length_p</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *src</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> src_length</code></em>,
+ <em class="parameter"><code><span class="type">int</span> startingLoc</code></em>,
+ <em class="parameter"><code><span class="type">int</span> length</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-unicode.description"></a><h2>Description</h2>
+<p>
+Functions to support converting to and from Unicode written in UTF-8
+which is the native internal string format of all the redland libraries.
+Includes checking for Unicode names using either the XML 1.0 or XML 1.1
+rules.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-unicode.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-unichar"></a><h3>raptor_unichar</h3>
+<pre class="programlisting">typedef unsigned long raptor_unichar;
+</pre>
+<p>
+raptor Unicode codepoint
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-unicode-utf8-string-put-char"></a><h3>raptor_unicode_utf8_string_put_char ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_unicode_utf8_string_put_char (<em class="parameter"><code><a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar"><span class="type">raptor_unichar</span></a> c</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> *output</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);</pre>
+<p>
+Encode a Unicode character to a UTF-8 string
+</p>
+<p>
+If <em class="parameter"><code>output</code></em> is NULL, then will calculate the length rather than
+perform the encoding. This can be used by the called to allocate
+space and then re-call this function with the new buffer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>c</code></em> :</span></p></td>
+<td>Unicode character</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td>
+<td>UTF-8 string buffer or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>length of output buffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>number of bytes encoded to output buffer or &lt;0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-unicode-utf8-string-get-char"></a><h3>raptor_unicode_utf8_string_get_char ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_unicode_utf8_string_get_char (<em class="parameter"><code>const unsigned <span class="type">char</span> *input</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar"><span class="type">raptor_unichar</span></a> *output</code></em>);</pre>
+<p>
+Decode a UTF-8 encoded string to get a Unicode character.
+</p>
+<p>
+If output is NULL, then will calculate the number of bytes that
+will be used from the input buffer and not perform the conversion.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td>
+<td>UTF-8 string buffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>buffer size</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td>
+<td>Pointer to the Unicode character or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>bytes used from input buffer or &lt;0 on failure: -1 input buffer too short or length error, -2 overlong UTF-8 sequence, -3 illegal code positions, -4 code out of range U+0000 to U+10FFFF. In cases -2, -3 and -4 the coded character is stored in the output.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-unicode-is-xml11-namestartchar"></a><h3>raptor_unicode_is_xml11_namestartchar ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_unicode_is_xml11_namestartchar
+ (<em class="parameter"><code><a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar"><span class="type">raptor_unichar</span></a> c</code></em>);</pre>
+<p>
+Check if Unicode character is legal to start an XML 1.1 Name
+</p>
+<p>
+See <a class="ulink" href="http://www.w3.org/TR/2004/REC-xml11-20040204/#NT-NameStartChar" target="_top">Namespaces in XML 1.1 REC 2004-02-04 NameStartChar</a>
+updating
+<a class="ulink" href="http://www.w3.org/TR/2004/REC-xml11-20040204/" target="_top">Extensible Markup Language (XML) 1.1 REC 2004-02-04</a> sec 2.3, [4a]
+excluding the ':'
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>c</code></em> :</span></p></td>
+<td>Unicode character to check</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if legal</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-unicode-is-xml10-namestartchar"></a><h3>raptor_unicode_is_xml10_namestartchar ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_unicode_is_xml10_namestartchar
+ (<em class="parameter"><code><a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar"><span class="type">raptor_unichar</span></a> c</code></em>);</pre>
+<p>
+Check if Unicode character is legal to start an XML 1.0 Name
+</p>
+<p>
+See <a class="ulink" href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName" target="_top">Namespaces in XML REC 1999-01-14</a>
+updating
+<a class="ulink" href="http://www.w3.org/TR/2004/REC-xml-20040204/" target="_top">Extensible Markup Language (XML) 1.0 (Third Edition) REC 2004-02-04</a>
+excluding the ':'
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>c</code></em> :</span></p></td>
+<td>Unicode character to check</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if legal</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-unicode-is-xml11-namechar"></a><h3>raptor_unicode_is_xml11_namechar ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_unicode_is_xml11_namechar (<em class="parameter"><code><a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar"><span class="type">raptor_unichar</span></a> c</code></em>);</pre>
+<p>
+Check if a Unicode codepoint is a legal to continue an XML 1.1 Name
+</p>
+<p>
+See <a class="ulink" href="http://www.w3.org/TR/2004/REC-xml11-20040204/" target="_top">Namespaces in XML 1.1 REC 2004-02-04</a>
+updating
+<a class="ulink" href="http://www.w3.org/TR/2004/REC-xml-20040204/" target="_top">Extensible Markup Language (XML) 1.0 (Third Edition) REC 2004-02-04</a> sec 2.3, [4a]
+excluding the ':'
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>c</code></em> :</span></p></td>
+<td>Unicode character</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if legal</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-unicode-is-xml10-namechar"></a><h3>raptor_unicode_is_xml10_namechar ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_unicode_is_xml10_namechar (<em class="parameter"><code><a class="link" href="raptor2-section-unicode.html#raptor-unichar" title="raptor_unichar"><span class="type">raptor_unichar</span></a> c</code></em>);</pre>
+<p>
+Check if a Unicode codepoint is a legal to continue an XML 1.0 Name
+</p>
+<p>
+See <a class="ulink" href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCNameChar" target="_top">Namespaces in XML REC 1999-01-14 NCNameChar</a>
+updating
+<a class="ulink" href="http://www.w3.org/TR/2004/REC-xml-20040204/" target="_top">Extensible Markup Language (XML) 1.0 (Third Edition) REC 2004-02-04</a>
+excluding the ':'
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>c</code></em> :</span></p></td>
+<td>Unicode character</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if legal</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-unicode-check-utf8-string"></a><h3>raptor_unicode_check_utf8_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_unicode_check_utf8_string (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);</pre>
+<p>
+Check a string is valid Unicode UTF-8.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>UTF-8 string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Non 0 if the string is UTF-8</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-unicode-utf8-strlen"></a><h3>raptor_unicode_utf8_strlen ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_unicode_utf8_strlen (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);</pre>
+<p>
+Calculate the number of Unicode characters in the given UTF-8 encoded buffer
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>buffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>buffer length</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>number of characters or &lt;0 if sequence is invalid</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-unicode-utf8-substr"></a><h3>raptor_unicode_utf8_substr ()</h3>
+<pre class="programlisting"><span class="returnvalue">size_t</span> raptor_unicode_utf8_substr (<em class="parameter"><code>unsigned <span class="type">char</span> *dest</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *dest_length_p</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *src</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> src_length</code></em>,
+ <em class="parameter"><code><span class="type">int</span> startingLoc</code></em>,
+ <em class="parameter"><code><span class="type">int</span> length</code></em>);</pre>
+<p>
+Get a unicode (UTF-8) substring of an existing UTF-8 string
+</p>
+<p>
+If <em class="parameter"><code>dest</code></em> is NULL, returns the number of bytes needed to write and
+does no work.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>dest</code></em> :</span></p></td>
+<td>destination string buffer to write to (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>dest_length_p</code></em> :</span></p></td>
+<td>location to store actual destination length (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>src</code></em> :</span></p></td>
+<td>source string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>src_length</code></em> :</span></p></td>
+<td>source length in bytes</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>startingLoc</code></em> :</span></p></td>
+<td>starting location offset 0 for first Unicode character</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>number of Unicode characters to copy at offset <em class="parameter"><code>startingLoc</code></em> (or &lt; 0)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>number of bytes used in destination string or 0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-uri.html b/docs/html/raptor2-section-uri.html
new file mode 100644
index 0000000..aab5530
--- /dev/null
+++ b/docs/html/raptor2-section-uri.html
@@ -0,0 +1,1175 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>URI</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-unicode.html" title="Unicode">
+<link rel="next" href="raptor2-section-www.html" title="WWW">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-unicode.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-www.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-uri.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-uri.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-uri"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-uri.top_of_page"></a>URI</span></h2>
+<p>URI — URI class and relative URI computation</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-uri.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri">raptor_uri</a>;
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-uri.html#raptor-new-uri" title="raptor_new_uri ()">raptor_new_uri</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-uri.html#raptor-new-uri-from-counted-string" title="raptor_new_uri_from_counted_string ()">raptor_new_uri_from_counted_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-uri.html#raptor-new-uri-from-uri-local-name" title="raptor_new_uri_from_uri_local_name ()">raptor_new_uri_from_uri_local_name</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *local_name</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-uri.html#raptor-new-uri-from-uri-or-file-string" title="raptor_new_uri_from_uri_or_file_string ()">raptor_new_uri_from_uri_or_file_string</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_or_file_string</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-uri.html#raptor-new-uri-relative-to-base" title="raptor_new_uri_relative_to_base ()">raptor_new_uri_relative_to_base</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-uri.html#raptor-new-uri-relative-to-base-counted" title="raptor_new_uri_relative_to_base_counted ()">raptor_new_uri_relative_to_base_counted</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> uri_len</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-uri.html#raptor-new-uri-from-id" title="raptor_new_uri_from_id ()">raptor_new_uri_from_id</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *id</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-uri.html#raptor-new-uri-for-rdf-concept" title="raptor_new_uri_for_rdf_concept ()">raptor_new_uri_for_rdf_concept</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *name</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-uri.html#raptor-new-uri-for-xmlbase" title="raptor_new_uri_for_xmlbase ()">raptor_new_uri_for_xmlbase</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *old_uri</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-uri.html#raptor-new-uri-for-retrieval" title="raptor_new_uri_for_retrieval ()">raptor_new_uri_for_retrieval</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *old_uri</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-uri.html#raptor-free-uri" title="raptor_free_uri ()">raptor_free_uri</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-uri.html#raptor-uri-compare" title="raptor_uri_compare ()">raptor_uri_compare</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri1</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri2</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-uri.html#raptor-uri-equals" title="raptor_uri_equals ()">raptor_uri_equals</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri1</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri2</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-uri.html#raptor-uri-copy" title="raptor_uri_copy ()">raptor_uri_copy</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-uri.html#raptor-uri-as-string" title="raptor_uri_as_string ()">raptor_uri_as_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-uri.html#raptor-uri-as-counted-string" title="raptor_uri_as_counted_string ()">raptor_uri_as_counted_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *len_p</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-uri.html#raptor-uri-to-relative-counted-uri-string" title="raptor_uri_to_relative_counted_uri_string ()">raptor_uri_to_relative_counted_uri_string</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *reference_uri</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-uri.html#raptor-uri-to-relative-uri-string" title="raptor_uri_to_relative_uri_string ()">raptor_uri_to_relative_uri_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *reference_uri</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-uri.html#raptor-uri-to-counted-string" title="raptor_uri_to_counted_string ()">raptor_uri_to_counted_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *len_p</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-uri.html#raptor-uri-to-string" title="raptor_uri_to_string ()">raptor_uri_to_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);
+<span class="returnvalue">size_t</span> <a class="link" href="raptor2-section-uri.html#raptor-uri-resolve-uri-reference" title="raptor_uri_resolve_uri_reference ()">raptor_uri_resolve_uri_reference</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *base_uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *reference_uri</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-uri.html#raptor-uri-filename-to-uri-string" title="raptor_uri_filename_to_uri_string ()">raptor_uri_filename_to_uri_string</a> (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);
+<span class="returnvalue">char</span> * <a class="link" href="raptor2-section-uri.html#raptor-uri-uri-string-to-filename" title="raptor_uri_uri_string_to_filename ()">raptor_uri_uri_string_to_filename</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>);
+<span class="returnvalue">char</span> * <a class="link" href="raptor2-section-uri.html#raptor-uri-uri-string-to-filename-fragment" title="raptor_uri_uri_string_to_filename_fragment ()">raptor_uri_uri_string_to_filename_fragment</a>
+ (<em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> **fragment_p</code></em>);
+<span class="returnvalue">char</span> * <a class="link" href="raptor2-section-uri.html#raptor-uri-uri-string-to-counted-filename-fragment" title="raptor_uri_uri_string_to_counted_filename_fragment ()">raptor_uri_uri_string_to_counted_filename_fragment</a>
+ (<em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *len_p</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> **fragment_p</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *fragment_len_p</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-uri.html#raptor-uri-uri-string-is-file-uri" title="raptor_uri_uri_string_is_file_uri ()">raptor_uri_uri_string_is_file_uri</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-uri.html#raptor-uri-print" title="raptor_uri_print ()">raptor_uri_print</a> (<em class="parameter"><code>const <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *stream</code></em>);
+<a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="returnvalue">raptor_world</span></a> * <a class="link" href="raptor2-section-uri.html#raptor-uri-get-world" title="raptor_uri_get_world ()">raptor_uri_get_world</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-uri.html#raptor-uri-write" title="raptor_uri_write ()">raptor_uri_write</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-uri.html#raptor-uri-file-exists" title="raptor_uri_file_exists ()">raptor_uri_file_exists</a> (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-uri.html#raptor-uri-filename-exists" title="raptor_uri_filename_exists ()">raptor_uri_filename_exists</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *path</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-uri.html#raptor-uri-to-turtle-counted-string" title="raptor_uri_to_turtle_counted_string ()">raptor_uri_to_turtle_counted_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *len_p</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-uri.html#raptor-uri-to-turtle-string" title="raptor_uri_to_turtle_string ()">raptor_uri_to_turtle_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-uri.html#raptor-uri-turtle-write" title="raptor_uri_turtle_write ()">raptor_uri_turtle_write</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-uri.description"></a><h2>Description</h2>
+<p>
+A class for absolute URIs used inside raptor and relative URI
+computation utility functions used inside the main Redland
+<a href="/usr/share/gtk-doc/html/redland/redland-uri.html#librdf-uri"><span class="type">librdf_uri</span></a> class. Only absolute URIs are provided, with no
+current access to internals of URIs such as URI scheme, path, authority.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-uri.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-uri"></a><h3>raptor_uri</h3>
+<pre class="programlisting">raptor_uri* raptor_uri;
+</pre>
+<p>
+Raptor URI Class.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-uri"></a><h3>raptor_new_uri ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_new_uri (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>);</pre>
+<p>
+Constructor - create a raptor URI from a UTF-8 encoded Unicode string.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_string</code></em> :</span></p></td>
+<td>URI string.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-uri-from-counted-string"></a><h3>raptor_new_uri_from_counted_string ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_new_uri_from_counted_string (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);</pre>
+<p>
+Constructor - create a raptor URI from a UTF-8 encoded Unicode string.
+</p>
+<p>
+Note: The <em class="parameter"><code>uri_string</code></em> need not be NULL terminated - a NULL will be
+added to the copied string used.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_string</code></em> :</span></p></td>
+<td>URI string.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>length of URI string</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-uri-from-uri-local-name"></a><h3>raptor_new_uri_from_uri_local_name ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_new_uri_from_uri_local_name (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *local_name</code></em>);</pre>
+<p>
+Constructor - create a raptor URI from an existing URI and a local name.
+</p>
+<p>
+Creates a new URI from the concatenation of the <em class="parameter"><code>local_name</code></em> to the
+<em class="parameter"><code>uri</code></em>. This is NOT relative URI resolution, which is done by the
+<a class="link" href="raptor2-section-uri.html#raptor-new-uri-relative-to-base" title="raptor_new_uri_relative_to_base ()"><code class="function">raptor_new_uri_relative_to_base()</code></a> constructor.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>existing <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>local_name</code></em> :</span></p></td>
+<td>local name</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-uri-from-uri-or-file-string"></a><h3>raptor_new_uri_from_uri_or_file_string ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_new_uri_from_uri_or_file_string
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_or_file_string</code></em>);</pre>
+<p>
+Constructor - create a raptor URI from a string that is a relative or absolute URI or a filename
+</p>
+<p>
+If the <em class="parameter"><code>uri_or_file_string</code></em> is a filename PATH that exists, the
+result will be a URI file://PATH
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>existing base URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_or_file_string</code></em> :</span></p></td>
+<td>URI string or filename</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-uri-relative-to-base"></a><h3>raptor_new_uri_relative_to_base ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_new_uri_relative_to_base (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>);</pre>
+<p>
+Constructor - create a raptor URI from a base URI and a relative URI string.
+</p>
+<p>
+Use <a class="link" href="raptor2-section-uri.html#raptor-new-uri-relative-to-base-counted" title="raptor_new_uri_relative_to_base_counted ()"><code class="function">raptor_new_uri_relative_to_base_counted()</code></a> if the URI string length is known
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>existing base URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_string</code></em> :</span></p></td>
+<td>relative URI string</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-uri-relative-to-base-counted"></a><h3>raptor_new_uri_relative_to_base_counted ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_new_uri_relative_to_base_counted
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> uri_len</code></em>);</pre>
+<p>
+Constructor - create a raptor URI from a base URI and a relative counted URI string.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>existing base URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_string</code></em> :</span></p></td>
+<td>relative URI string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_len</code></em> :</span></p></td>
+<td>length of URI string (or 0)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-uri-from-id"></a><h3>raptor_new_uri_from_id ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_new_uri_from_id (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *id</code></em>);</pre>
+<p>
+Constructor - create a new URI from a base URI and RDF ID.
+</p>
+<p>
+This creates a URI equivalent to concatenating <em class="parameter"><code>base_uri</code></em> with
+## and <em class="parameter"><code>id</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>existing base URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>id</code></em> :</span></p></td>
+<td>RDF ID</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-uri-for-rdf-concept"></a><h3>raptor_new_uri_for_rdf_concept ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_new_uri_for_rdf_concept (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *name</code></em>);</pre>
+<p>
+Constructor - create a raptor URI for the RDF namespace concept name.
+</p>
+<p>
+Example: u=raptor_new_uri_for_rdf_concept("value") creates a new
+URI for the rdf:value term.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>RDF namespace concept</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-uri-for-xmlbase"></a><h3>raptor_new_uri_for_xmlbase ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_new_uri_for_xmlbase (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *old_uri</code></em>);</pre>
+<p>
+Constructor - create a URI suitable for use as an XML Base.
+</p>
+<p>
+Takes an existing URI and ensures it has a path (default /) and has
+no fragment or query arguments - XML base does not use these.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>old_uri</code></em> :</span></p></td>
+<td>URI to transform</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-uri-for-retrieval"></a><h3>raptor_new_uri_for_retrieval ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_new_uri_for_retrieval (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *old_uri</code></em>);</pre>
+<p>
+Constructor - create a URI suitable for retrieval.
+</p>
+<p>
+Takes an existing URI and ensures it has a path (default /) and has
+no fragment - URI retrieval does not use the fragment part.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>old_uri</code></em> :</span></p></td>
+<td>URI to transform</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-uri"></a><h3>raptor_free_uri ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_uri (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);</pre>
+<p>
+Destructor - destroy a <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI to destroy</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-compare"></a><h3>raptor_uri_compare ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_uri_compare (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri1</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri2</code></em>);</pre>
+<p>
+Compare two URIs, ala strcmp.
+</p>
+<p>
+A NULL URI is always less than (never equal to) a non-NULL URI.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri1</code></em> :</span></p></td>
+<td>URI 1 (may be NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri2</code></em> :</span></p></td>
+<td>URI 2 (may be NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>-1 if uri1 &lt; uri2, 0 if equal, 1 if uri1 &gt; uri2</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-equals"></a><h3>raptor_uri_equals ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_uri_equals (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri1</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri2</code></em>);</pre>
+<p>
+Check if two URIs are equal.
+</p>
+<p>
+A NULL URI is not equal to a non-NULL URI.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri1</code></em> :</span></p></td>
+<td>URI 1 (may be NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri2</code></em> :</span></p></td>
+<td>URI 2 (may be NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if the URIs are equal</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-copy"></a><h3>raptor_uri_copy ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_uri_copy (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);</pre>
+<p>
+Constructor - get a copy of a URI.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-as-string"></a><h3>raptor_uri_as_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_uri_as_string (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);</pre>
+<p>
+Get a string representation of a URI.
+</p>
+<p>
+Returns a shared pointer to a string representation of <em class="parameter"><code>uri</code></em>. This
+string is shared and must not be freed, otherwise see use the
+<a class="link" href="raptor2-section-uri.html#raptor-uri-to-string" title="raptor_uri_to_string ()"><code class="function">raptor_uri_to_string()</code></a> or <a class="link" href="raptor2-section-uri.html#raptor-uri-to-counted-string" title="raptor_uri_to_counted_string ()"><code class="function">raptor_uri_to_counted_string()</code></a> methods.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>shared string representation of URI</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-as-counted-string"></a><h3>raptor_uri_as_counted_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_uri_as_counted_string (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *len_p</code></em>);</pre>
+<p>
+Get a string representation of a URI with count.
+</p>
+<p>
+Returns a shared pointer to a string representation of <em class="parameter"><code>uri</code></em> along
+with the length of the string in <em class="parameter"><code>len_p</code></em>, if not NULL. This
+string is shared and must not be freed, otherwise see use the
+<a class="link" href="raptor2-section-uri.html#raptor-uri-to-string" title="raptor_uri_to_string ()"><code class="function">raptor_uri_to_string()</code></a> or <a class="link" href="raptor2-section-uri.html#raptor-uri-to-counted-string" title="raptor_uri_to_counted_string ()"><code class="function">raptor_uri_to_counted_string()</code></a> methods.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len_p</code></em> :</span></p></td>
+<td>address of length variable or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>shared string representation of URI</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-to-relative-counted-uri-string"></a><h3>raptor_uri_to_relative_counted_uri_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_uri_to_relative_counted_uri_string
+ (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *reference_uri</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>);</pre>
+<p>
+Get the counted relative URI string of a URI against a base URI.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>The base absolute URI to resolve against (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>reference_uri</code></em> :</span></p></td>
+<td>The reference absolute URI to use</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length_p</code></em> :</span></p></td>
+<td>Location to store the length of the relative URI string or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A newly allocated relative URI string or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-to-relative-uri-string"></a><h3>raptor_uri_to_relative_uri_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_uri_to_relative_uri_string (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *reference_uri</code></em>);</pre>
+<p>
+Get the relative URI string of a URI against a base URI.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>The base absolute URI to resolve against</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>reference_uri</code></em> :</span></p></td>
+<td>The reference absolute URI to use</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A newly allocated relative URI string or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-to-counted-string"></a><h3>raptor_uri_to_counted_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_uri_to_counted_string (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *len_p</code></em>);</pre>
+<p>
+Get a new counted string for a URI.
+</p>
+<p>
+If <em class="parameter"><code>len_p</code></em> is not NULL, the length of the string is stored in it.
+</p>
+<p>
+The memory allocated must be freed by the caller and
+<a class="link" href="raptor2-section-memory.html#raptor-free-memory" title="raptor_free_memory ()"><code class="function">raptor_free_memory()</code></a> should be used for best portability.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len_p</code></em> :</span></p></td>
+<td>Pointer to length (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new string or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-to-string"></a><h3>raptor_uri_to_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_uri_to_string (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);</pre>
+<p>
+Get a new string for a URI.
+</p>
+<p>
+The memory allocated must be freed by the caller and
+<a class="link" href="raptor2-section-memory.html#raptor-free-memory" title="raptor_free_memory ()"><code class="function">raptor_free_memory()</code></a> should be used for best portability.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new string or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-resolve-uri-reference"></a><h3>raptor_uri_resolve_uri_reference ()</h3>
+<pre class="programlisting"><span class="returnvalue">size_t</span> raptor_uri_resolve_uri_reference (<em class="parameter"><code>const unsigned <span class="type">char</span> *base_uri</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *reference_uri</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>);</pre>
+<p>
+Resolve a URI to a base URI.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>Base URI string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>reference_uri</code></em> :</span></p></td>
+<td>Reference URI string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
+<td>Destination buffer URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>Length of destination buffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>length of resolved string or 0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-filename-to-uri-string"></a><h3>raptor_uri_filename_to_uri_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_uri_filename_to_uri_string (<em class="parameter"><code>const <span class="type">char</span> *filename</code></em>);</pre>
+<p>
+Converts a filename to a file: URI.
+</p>
+<p>
+Handles the OS-specific escaping on turning filenames into URIs
+and returns a new buffer that the caller must <code class="function">free()</code>. Turns a
+space in the filename into %20 and '%' into %25.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>filename</code></em> :</span></p></td>
+<td>The filename to convert</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A newly allocated string with the URI or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-uri-string-to-filename"></a><h3>raptor_uri_uri_string_to_filename ()</h3>
+<pre class="programlisting"><span class="returnvalue">char</span> * raptor_uri_uri_string_to_filename (<em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>);</pre>
+<p>
+Convert a file: URI to a filename.
+</p>
+<p>
+Handles the OS-specific file: URIs to filename mappings. Returns
+a new buffer containing the filename that the caller must free.
+</p>
+<p>
+See also <a class="link" href="raptor2-section-uri.html#raptor-uri-uri-string-to-counted-filename-fragment" title="raptor_uri_uri_string_to_counted_filename_fragment ()"><code class="function">raptor_uri_uri_string_to_counted_filename_fragment()</code></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_string</code></em> :</span></p></td>
+<td>The file: URI to convert</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A newly allocated string with the filename or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-uri-string-to-filename-fragment"></a><h3>raptor_uri_uri_string_to_filename_fragment ()</h3>
+<pre class="programlisting"><span class="returnvalue">char</span> * raptor_uri_uri_string_to_filename_fragment
+ (<em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> **fragment_p</code></em>);</pre>
+<p>
+Convert a file: URI to a filename and fragment.
+</p>
+<p>
+Handles the OS-specific file: URIs to filename mappings. Returns
+a new buffer containing the filename that the caller must free.
+</p>
+<p>
+If <em class="parameter"><code>fragment_p</code></em> is given, a new string containing the URI fragment
+is returned, or NULL if none is present
+</p>
+<p>
+See also <a class="link" href="raptor2-section-uri.html#raptor-uri-uri-string-to-counted-filename-fragment" title="raptor_uri_uri_string_to_counted_filename_fragment ()"><code class="function">raptor_uri_uri_string_to_counted_filename_fragment()</code></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_string</code></em> :</span></p></td>
+<td>The file: URI to convert</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>fragment_p</code></em> :</span></p></td>
+<td>Address of pointer to store any URI fragment or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A newly allocated string with the filename or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-uri-string-to-counted-filename-fragment"></a><h3>raptor_uri_uri_string_to_counted_filename_fragment ()</h3>
+<pre class="programlisting"><span class="returnvalue">char</span> * raptor_uri_uri_string_to_counted_filename_fragment
+ (<em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *len_p</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> **fragment_p</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *fragment_len_p</code></em>);</pre>
+<p>
+Convert a file: URI to a counted filename and counted fragment.
+</p>
+<p>
+Handles the OS-specific file: URIs to filename mappings. Returns
+a new buffer containing the filename that the caller must free.
+</p>
+<p>
+If <em class="parameter"><code>len_p</code></em> is present the length of the filename is returned
+</p>
+<p>
+If <em class="parameter"><code>fragment_p</code></em> is given, a new string containing the URI fragment
+is returned, or NULL if none is present. If <em class="parameter"><code>fragment_len_p</code></em> is present
+the length is returned in it.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_string</code></em> :</span></p></td>
+<td>The file: URI to convert</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len_p</code></em> :</span></p></td>
+<td>address of filename length variable or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>fragment_p</code></em> :</span></p></td>
+<td>Address of pointer to store any URI fragment or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>fragment_len_p</code></em> :</span></p></td>
+<td>address of length variable or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A newly allocated string with the filename or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-uri-string-is-file-uri"></a><h3>raptor_uri_uri_string_is_file_uri ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_uri_uri_string_is_file_uri (<em class="parameter"><code>const unsigned <span class="type">char</span> *uri_string</code></em>);</pre>
+<p>
+Check if a URI string is a file: URI.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_string</code></em> :</span></p></td>
+<td>The URI string to check</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Non zero if URI string is a file: URI</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-print"></a><h3>raptor_uri_print ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_uri_print (<em class="parameter"><code>const <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">FILE</span> *stream</code></em>);</pre>
+<p>
+Print a URI to a file handle.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI to print</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
+<td>The file handle to print to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-get-world"></a><h3>raptor_uri_get_world ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="returnvalue">raptor_world</span></a> * raptor_uri_get_world (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);</pre>
+<p>
+Get the raptor_world object associated with a raptor_uri.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-write"></a><h3>raptor_uri_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_uri_write (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write a raptor URI to the iostream.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iostream</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-file-exists"></a><h3>raptor_uri_file_exists ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_uri_file_exists (<em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);</pre>
+<p>
+Check if a file: URI is a file that exists
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI string</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>&gt; 0 if file exists, 0 if does not exist, &lt; 0 if not a file URI or error</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-filename-exists"></a><h3>raptor_uri_filename_exists ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_uri_filename_exists (<em class="parameter"><code>const unsigned <span class="type">char</span> *path</code></em>);</pre>
+<p>
+Check if <em class="parameter"><code>path</code></em> points to a file that exists
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>path</code></em> :</span></p></td>
+<td>file path</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>&gt; 0 if file exists, 0 if does not exist, &lt; 0 on error</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-to-turtle-counted-string"></a><h3>raptor_uri_to_turtle_counted_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_uri_to_turtle_counted_string (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *len_p</code></em>);</pre>
+<p>
+Convert <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> to a string.
+Caller has responsibility to free the string.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>uri</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>base URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len_p</code></em> :</span></p></td>
+<td>Pointer to location to store length of new string (if not NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the new string or NULL on failure. The length of
+the new string is returned in *<em class="parameter"><code>len_p</code></em> if len_p is not NULL.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-to-turtle-string"></a><h3>raptor_uri_to_turtle_string ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_uri_to_turtle_string (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);</pre>
+<p>
+Convert <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> to a string.
+Caller has responsibility to free the string.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>uri</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>base URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the new string or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-turtle-write"></a><h3>raptor_uri_turtle_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_uri_turtle_write (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *base_uri</code></em>);</pre>
+<p>
+Write <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> to a stream in turtle syntax (using QNames).
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>iostream for writing</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>uri</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base_uri</code></em> :</span></p></td>
+<td>base URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-world.html b/docs/html/raptor2-section-world.html
new file mode 100644
index 0000000..f72f834
--- /dev/null
+++ b/docs/html/raptor2-section-world.html
@@ -0,0 +1,620 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Initialisation</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="serializer-dot.html" title="GraphViz dot serializer (name dot)">
+<link rel="next" href="raptor2-section-general.html" title="General">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="serializer-dot.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-general.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-world.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-world.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-world"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-world.top_of_page"></a>Initialisation</span></h2>
+<p>Initialisation — Library startup, shutdown and configuration.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-world.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world">raptor_world</a>;
+#define <a class="link" href="raptor2-section-world.html#raptor-new-world" title="raptor_new_world">raptor_new_world</a>
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-world.html#raptor-world-open" title="raptor_world_open ()">raptor_world_open</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-world.html#raptor-free-world" title="raptor_free_world ()">raptor_free_world</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);
+enum <a class="link" href="raptor2-section-world.html#raptor-world-flag" title="enum raptor_world_flag">raptor_world_flag</a>;
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-world.html#raptor-world-set-flag" title="raptor_world_set_flag ()">raptor_world_set_flag</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world-flag" title="enum raptor_world_flag"><span class="type">raptor_world_flag</span></a> flag</code></em>,
+ <em class="parameter"><code><span class="type">int</span> value</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-world.html#raptor-world-set-libxslt-security-preferences" title="raptor_world_set_libxslt_security_preferences ()">raptor_world_set_libxslt_security_preferences</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *security_preferences</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()">raptor_world_set_log_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-log-handler" title="raptor_log_handler ()"><span class="type">raptor_log_handler</span></a> handler</code></em>);
+const <a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="returnvalue">raptor_syntax_description</span></a> * <a class="link" href="raptor2-section-world.html#raptor-world-get-parser-description" title="raptor_world_get_parser_description ()">raptor_world_get_parser_description</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> counter</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-world.html#raptor-world-is-parser-name" title="raptor_world_is_parser_name ()">raptor_world_is_parser_name</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
+const <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-world.html#raptor-world-guess-parser-name" title="raptor_world_guess_parser_name ()">raptor_world_guess_parser_name</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *mime_type</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *identifier</code></em>);
+const <a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="returnvalue">raptor_syntax_description</span></a> * <a class="link" href="raptor2-section-world.html#raptor-world-get-serializer-description" title="raptor_world_get_serializer_description ()">raptor_world_get_serializer_description</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> counter</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-world.html#raptor-world-is-serializer-name" title="raptor_world_is_serializer_name ()">raptor_world_is_serializer_name</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-world.html#raptor-world-generate-bnodeid" title="raptor_world_generate_bnodeid ()">raptor_world_generate_bnodeid</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-world.html#raptor-world-set-generate-bnodeid-handler" title="raptor_world_set_generate_bnodeid_handler ()">raptor_world_set_generate_bnodeid_handler</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><span class="type">raptor_generate_bnodeid_handler</span> handler</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-world.html#raptor-world-set-generate-bnodeid-parameters" title="raptor_world_set_generate_bnodeid_parameters ()">raptor_world_set_generate_bnodeid_parameters</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">char</span> *prefix</code></em>,
+ <em class="parameter"><code><span class="type">int</span> base</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-world.description"></a><h2>Description</h2>
+<p>
+How to initialise and terminate the library, set
+library-wide configuration flags and options.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-world.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-world"></a><h3>raptor_world</h3>
+<pre class="programlisting">typedef struct raptor_world_s raptor_world;
+</pre>
+<p>
+Raptor world class.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-world"></a><h3>raptor_new_world</h3>
+<pre class="programlisting">#define raptor_new_world() raptor_new_world_internal(RAPTOR_VERSION)
+</pre>
+<p>
+Allocate a new raptor_world object.
+</p>
+<p>
+Allocation of the world and initialization are decoupled to allow
+changing settings on the world object before init.
+</p>
+<p>
+Settings and configuration of the world may be made after creating
+the object and before the world is initialized using methods such
+as <a class="link" href="raptor2-section-world.html#raptor-world-set-flag" title="raptor_world_set_flag ()"><code class="function">raptor_world_set_flag()</code></a>, <a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler()</code></a>,
+<a class="link" href="raptor2-section-world.html#raptor-world-set-generate-bnodeid-handler" title="raptor_world_set_generate_bnodeid_handler ()"><code class="function">raptor_world_set_generate_bnodeid_handler()</code></a>. Some configuration
+may not be changed after initialization.
+</p>
+<p>
+The raptor_world is initialized with <a class="link" href="raptor2-section-world.html#raptor-world-open" title="raptor_world_open ()"><code class="function">raptor_world_open()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>uninitialized raptor_world object or NULL on failure</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-open"></a><h3>raptor_world_open ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_world_open (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);</pre>
+<p>
+Initialise the raptor library.
+</p>
+<p>
+Initializes a <a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> object created by <a class="link" href="raptor2-section-world.html#raptor-new-world" title="raptor_new_world"><code class="function">raptor_new_world()</code></a>.
+Allocation and initialization are decoupled to allow
+changing settings on the world object before init.
+</p>
+<p>
+The initialized world object is used with subsequent raptor API calls.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-world"></a><h3>raptor_free_world ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_world (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);</pre>
+<p>
+Terminate the raptor library.
+</p>
+<p>
+Destroys the raptor_world object and all related information.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-flag"></a><h3>enum raptor_world_flag</h3>
+<pre class="programlisting">typedef enum {
+ RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE = 1,
+ RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE = 2,
+ RAPTOR_WORLD_FLAG_URI_INTERNING = 3,
+ RAPTOR_WORLD_FLAG_WWW_SKIP_INIT_FINISH = 4
+} raptor_world_flag;
+</pre>
+<p>
+Raptor world flags
+</p>
+<p>
+These are used by <a href="raptor2-section-world.html#raptor-world-set-flag"><code class="function">raptor_world_set_flags()</code></a> to control raptor-wide
+options across classes. These must be set before
+<a class="link" href="raptor2-section-world.html#raptor-world-open" title="raptor_world_open ()"><code class="function">raptor_world_open()</code></a> is called explicitly or implicitly (by
+creating a raptor object). There is no enumeration function for
+these flags because they are not user options and must be set
+before the library is initialised. For similar reasons, there is
+no get function.
+</p>
+<p>
+If any libxml handler saving/restoring is enabled, any existing
+handler and context is saved before parsing and restored
+afterwards. Otherwise, no saving/restoring is performed.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="RAPTOR-WORLD-FLAG-LIBXML-GENERIC-ERROR-SAVE:CAPS"></a><span class="term"><code class="literal">RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE</code></span></p></td>
+<td>if set (non-0 value) - save/restore the libxml generic error handler when raptor library initializes (default set)
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-WORLD-FLAG-LIBXML-STRUCTURED-ERROR-SAVE:CAPS"></a><span class="term"><code class="literal">RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE</code></span></p></td>
+<td>if set (non-0 value) - save/restore the libxml structured error handler when raptor library terminates (default set)
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-WORLD-FLAG-URI-INTERNING:CAPS"></a><span class="term"><code class="literal">RAPTOR_WORLD_FLAG_URI_INTERNING</code></span></p></td>
+<td>if set (non-0 value) - each URI is saved interned in-memory and reused (default set)
+</td>
+</tr>
+<tr>
+<td><p><a name="RAPTOR-WORLD-FLAG-WWW-SKIP-INIT-FINISH:CAPS"></a><span class="term"><code class="literal">RAPTOR_WORLD_FLAG_WWW_SKIP_INIT_FINISH</code></span></p></td>
+<td>if set (non-0 value) the raptor will neither initialise or terminate the lower level WWW library. Usually in raptor initialising either curl_global_init (for libcurl) are called and in raptor cleanup, curl_global_cleanup is called. This flag allows the application finer control over these libraries such as setting other global options or potentially calling and terminating raptor several times. It does mean that applications which use this call must do their own extra work in order to allocate and free all resources to the system.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-set-flag"></a><h3>raptor_world_set_flag ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_world_set_flag (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world-flag" title="enum raptor_world_flag"><span class="type">raptor_world_flag</span></a> flag</code></em>,
+ <em class="parameter"><code><span class="type">int</span> value</code></em>);</pre>
+<p>
+Set library-wide configuration
+</p>
+<p>
+This function is used to control raptor-wide options across
+classes. These options must be set before <a class="link" href="raptor2-section-world.html#raptor-world-open" title="raptor_world_open ()"><code class="function">raptor_world_open()</code></a> is
+called explicitly or implicitly (by creating a raptor object).
+There is no enumeration function for these flags because they are
+not user options and must be set before the library is
+initialised. For similar reasons, there is no get function.
+</p>
+<p>
+See the <a href="raptor2-section-world.html#raptor-world-flag"><span class="type">raptor_world_flags</span></a> documentation for full details of
+what the flags mean.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flag</code></em> :</span></p></td>
+<td>flag</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>value</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>0 on success, non-0 on failure: &lt;0 on errors (-1 if flag is unknown, -2 if value is illegal) and &gt;0 if world is already opened</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-set-libxslt-security-preferences"></a><h3>raptor_world_set_libxslt_security_preferences ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_world_set_libxslt_security_preferences
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *security_preferences</code></em>);</pre>
+<p>
+Set libxslt security preferences policy object
+</p>
+<p>
+The <em class="parameter"><code>security_preferences</code></em> object will NOT become owned by
+<a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a>.
+</p>
+<p>
+If libxslt is compiled into the library, <em class="parameter"><code>security_preferences</code></em>
+should be an <span class="type">xsltSecurityPrefsPtr</span> and will be used to call
+<code class="function">xsltSetCtxtSecurityPrefs()</code> when an XSLT engine is initialised.
+If <em class="parameter"><code>security_preferences</code></em> is NULL, this will disable all raptor's
+calls to <code class="function">xsltSetCtxtSecurityPrefs()</code>.
+</p>
+<p>
+If libxslt is not compiled in, the object set here is not used.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>security_preferences</code></em> :</span></p></td>
+<td>security preferences (an <span class="type">xsltSecurityPrefsPtr</span>) or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>0 on success, non-0 on failure: &lt;0 on errors and &gt;0 if world is already opened</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-set-log-handler"></a><h3>raptor_world_set_log_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_world_set_log_handler (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-log-handler" title="raptor_log_handler ()"><span class="type">raptor_log_handler</span></a> handler</code></em>);</pre>
+<p>
+Set the message (error, warning, info) handling function.
+</p>
+<p>
+The function will receive callbacks when messages are generated
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data to pass to function</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>pointer to the function</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-get-parser-description"></a><h3>raptor_world_get_parser_description ()</h3>
+<pre class="programlisting">const <a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="returnvalue">raptor_syntax_description</span></a> * raptor_world_get_parser_description
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> counter</code></em>);</pre>
+<p>
+Get parser descriptive syntax information
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>counter</code></em> :</span></p></td>
+<td>index into the list of parsers</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>description or NULL if counter is out of range</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-is-parser-name"></a><h3>raptor_world_is_parser_name ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_world_is_parser_name (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
+<p>
+Check the name of a parser is known.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>the syntax name</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non 0 if name is a known syntax name</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-guess-parser-name"></a><h3>raptor_world_guess_parser_name ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> * raptor_world_guess_parser_name (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *mime_type</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *identifier</code></em>);</pre>
+<p>
+Guess a parser name for content.
+</p>
+<p>
+Find a parser by scoring recognition of the syntax by a block of
+characters, the content identifier or a mime type. The content
+identifier is typically a filename or URI or some other identifier.
+</p>
+<p>
+If the guessing finds only low scores, NULL will be returned.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI identifying the syntax (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mime_type</code></em> :</span></p></td>
+<td>mime type identifying the content (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
+<td>buffer of content to guess (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of buffer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>identifier</code></em> :</span></p></td>
+<td>identifier of content (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a parser name or NULL if no guess could be made</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-get-serializer-description"></a><h3>raptor_world_get_serializer_description ()</h3>
+<pre class="programlisting">const <a class="link" href="raptor2-section-general.html#raptor-syntax-description" title="raptor_syntax_description"><span class="returnvalue">raptor_syntax_description</span></a> * raptor_world_get_serializer_description
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> counter</code></em>);</pre>
+<p>
+Get serializer descriptive syntax information
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>counter</code></em> :</span></p></td>
+<td>index into the list of serializers</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>description or NULL if counter is out of range</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-is-serializer-name"></a><h3>raptor_world_is_serializer_name ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_world_is_serializer_name (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
+<p>
+Check name of a serializer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>the syntax name</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non 0 if name is a known syntax name</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-generate-bnodeid"></a><h3>raptor_world_generate_bnodeid ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_world_generate_bnodeid (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);</pre>
+<p>
+Generate an new blank node ID
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a> parser object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>newly allocated generated ID or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-set-generate-bnodeid-handler"></a><h3>raptor_world_set_generate_bnodeid_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_world_set_generate_bnodeid_handler
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><span class="type">raptor_generate_bnodeid_handler</span> handler</code></em>);</pre>
+<p>
+Set the generate ID handler function.
+</p>
+<p>
+Sets the function to generate IDs for the library. The handler is
+called with the <em class="parameter"><code>user_data</code></em> parameter.
+</p>
+<p>
+The final argument of the callback method is user_bnodeid, the value of
+the rdf:nodeID attribute that the user provided if any (or NULL).
+It can either be returned directly as the generated value when present or
+modified. The passed in value must be <code class="function">free()</code>d if it is not used.
+</p>
+<p>
+If handler is NULL, the default method is used
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data pointer for callback</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>generate ID callback function</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-world-set-generate-bnodeid-parameters"></a><h3>raptor_world_set_generate_bnodeid_parameters ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_world_set_generate_bnodeid_parameters
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">char</span> *prefix</code></em>,
+ <em class="parameter"><code><span class="type">int</span> base</code></em>);</pre>
+<p>
+Set default ID generation parameters.
+</p>
+<p>
+Sets the parameters for the default algorithm used to generate IDs.
+The default algorithm uses both <em class="parameter"><code>prefix</code></em> and <em class="parameter"><code>base</code></em> to generate a new
+identifier. The exact identifier generated is not guaranteed to
+be a strict concatenation of <em class="parameter"><code>prefix</code></em> and <em class="parameter"><code>base</code></em> but will use both
+parts. The <em class="parameter"><code>prefix</code></em> parameter is copied to generate an ID.
+</p>
+<p>
+For finer control of the generated identifiers, use
+<a class="link" href="raptor2-section-world.html#raptor-world-set-generate-bnodeid-handler" title="raptor_world_set_generate_bnodeid_handler ()"><code class="function">raptor_world_set_generate_bnodeid_handler()</code></a>.
+</p>
+<p>
+If <em class="parameter"><code>prefix</code></em> is NULL, the default prefix is used (currently "genid")
+If <em class="parameter"><code>base</code></em> is less than 1, it is initialised to 1.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>prefix</code></em> :</span></p></td>
+<td>prefix string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>base</code></em> :</span></p></td>
+<td>integer base identifier</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-www.html b/docs/html/raptor2-section-www.html
new file mode 100644
index 0000000..70f9eb9
--- /dev/null
+++ b/docs/html/raptor2-section-www.html
@@ -0,0 +1,783 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>WWW</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-uri.html" title="URI">
+<link rel="next" href="raptor2-section-xml-namespace.html" title="XML Namespaces">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-uri.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-xml-namespace.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-www.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-www.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-www"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-www.top_of_page"></a>WWW</span></h2>
+<p>WWW — Retrieval of URI content from the web.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-www.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www">raptor_www</a>;
+<a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="returnvalue">raptor_www</span></a> * <a class="link" href="raptor2-section-www.html#raptor-new-www" title="raptor_new_www ()">raptor_new_www</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);
+<a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="returnvalue">raptor_www</span></a> * <a class="link" href="raptor2-section-www.html#raptor-new-www-with-connection" title="raptor_new_www_with_connection ()">raptor_new_www_with_connection</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *connection</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-www.html#raptor-free-www" title="raptor_free_www ()">raptor_free_www</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-www.html#raptor-www-write-bytes-handler" title="raptor_www_write_bytes_handler ()">*raptor_www_write_bytes_handler</a>) (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *userdata</code></em>,
+ <em class="parameter"><code>const <span class="type">void</span> *ptr</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> nmemb</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-www.html#raptor-www-content-type-handler" title="raptor_www_content_type_handler ()">*raptor_www_content_type_handler</a>) (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *userdata</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *content_type</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-www.html#raptor-www-set-user-agent" title="raptor_www_set_user_agent ()">raptor_www_set_user_agent</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *user_agent</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-www.html#raptor-www-set-proxy" title="raptor_www_set_proxy ()">raptor_www_set_proxy</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *proxy</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-www.html#raptor-www-set-http-accept" title="raptor_www_set_http_accept ()">raptor_www_set_http_accept</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *value</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-www.html#raptor-www-set-http-cache-control" title="raptor_www_set_http_cache_control ()">raptor_www_set_http_cache_control</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *cache_control</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-www.html#raptor-www-set-write-bytes-handler" title="raptor_www_set_write_bytes_handler ()">raptor_www_set_write_bytes_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www-write-bytes-handler" title="raptor_www_write_bytes_handler ()"><span class="type">raptor_www_write_bytes_handler</span></a> handler</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-www.html#raptor-www-set-connection-timeout" title="raptor_www_set_connection_timeout ()">raptor_www_set_connection_timeout</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><span class="type">int</span> timeout</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-www.html#raptor-www-set-content-type-handler" title="raptor_www_set_content_type_handler ()">raptor_www_set_content_type_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www-content-type-handler" title="raptor_www_content_type_handler ()"><span class="type">raptor_www_content_type_handler</span></a> handler</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);
+<span class="returnvalue">int</span> (<a class="link" href="raptor2-section-www.html#raptor-uri-filter-func" title="raptor_uri_filter_func ()">*raptor_uri_filter_func</a>) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-www.html#raptor-www-set-uri-filter" title="raptor_www_set_uri_filter ()">raptor_www_set_uri_filter</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-uri-filter-func" title="raptor_uri_filter_func ()"><span class="type">raptor_uri_filter_func</span></a> filter</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="raptor2-section-www.html#raptor-www-final-uri-handler" title="raptor_www_final_uri_handler ()">*raptor_www_final_uri_handler</a>) (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *userdata</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *final_uri</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-www.html#raptor-www-get-final-uri" title="raptor_www_get_final_uri ()">raptor_www_get_final_uri</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-www.html#raptor-www-set-final-uri-handler" title="raptor_www_set_final_uri_handler ()">raptor_www_set_final_uri_handler</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www-final-uri-handler" title="raptor_www_final_uri_handler ()"><span class="type">raptor_www_final_uri_handler</span></a> handler</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-www.html#raptor-www-fetch" title="raptor_www_fetch ()">raptor_www_fetch</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-www.html#raptor-www-fetch-to-string" title="raptor_www_fetch_to_string ()">raptor_www_fetch_to_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">void</span> **string_p</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-malloc-handler" title="raptor_data_malloc_handler ()"><span class="type">raptor_data_malloc_handler</span></a> const malloc_handler</code></em>);
+<span class="returnvalue">void</span> * <a class="link" href="raptor2-section-www.html#raptor-www-get-connection" title="raptor_www_get_connection ()">raptor_www_get_connection</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-www.html#raptor-www-set-ssl-cert-options" title="raptor_www_set_ssl_cert_options ()">raptor_www_set_ssl_cert_options</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *cert_filename</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *cert_type</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *cert_passphrase</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-www.html#raptor-www-set-ssl-verify-options" title="raptor_www_set_ssl_verify_options ()">raptor_www_set_ssl_verify_options</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><span class="type">int</span> verify_peer</code></em>,
+ <em class="parameter"><code><span class="type">int</span> verify_host</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-www.html#raptor-www-abort" title="raptor_www_abort ()">raptor_www_abort</a> (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *reason</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-www.description"></a><h2>Description</h2>
+<p>
+Provides a wrapper to the resolution of URIs to give content
+using an underlying WWW-retrieval library. The content is
+delivered by callbacks and includes returning content type
+for handling content-negotation by the caller as well as
+chunks of byte content.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-www.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-www"></a><h3>raptor_www</h3>
+<pre class="programlisting">raptor_www* raptor_www;
+</pre>
+<p>
+Raptor WWW class
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-www"></a><h3>raptor_new_www ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="returnvalue">raptor_www</span></a> * raptor_new_www (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>);</pre>
+<p>
+Constructor - create a new <a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-www-with-connection"></a><h3>raptor_new_www_with_connection ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="returnvalue">raptor_www</span></a> * raptor_new_www_with_connection (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *connection</code></em>);</pre>
+<p>
+Constructor - create a new <a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> object over an existing WWW connection.
+</p>
+<p>
+At present this only works with a libcurl CURL handle object
+when raptor is compiled with libcurl suppport. Otherwise the
+<em class="parameter"><code>connection</code></em> is ignored. This allows such things as setting
+up special flags on the curl handle before passing into the constructor.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
+<td>external WWW connection object.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> object or NULL on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-www"></a><h3>raptor_free_www ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_www (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>);</pre>
+<p>
+Destructor - destroy a <a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-write-bytes-handler"></a><h3>raptor_www_write_bytes_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_www_write_bytes_handler) (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *userdata</code></em>,
+ <em class="parameter"><code>const <span class="type">void</span> *ptr</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> size</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> nmemb</code></em>);</pre>
+<p>
+Receiving bytes of data from WWW retrieval handler.
+</p>
+<p>
+Set by <a class="link" href="raptor2-section-www.html#raptor-www-set-write-bytes-handler" title="raptor_www_set_write_bytes_handler ()"><code class="function">raptor_www_set_write_bytes_handler()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>userdata</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ptr</code></em> :</span></p></td>
+<td>data pointer</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
+<td>size of individual item</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nmemb</code></em> :</span></p></td>
+<td>number of items</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-content-type-handler"></a><h3>raptor_www_content_type_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_www_content_type_handler) (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *userdata</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *content_type</code></em>);</pre>
+<p>
+Receiving Content-Type: header from WWW retrieval handler.
+</p>
+<p>
+Set by <a class="link" href="raptor2-section-www.html#raptor-www-set-content-type-handler" title="raptor_www_set_content_type_handler ()"><code class="function">raptor_www_set_content_type_handler()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>userdata</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>content_type</code></em> :</span></p></td>
+<td>content type seen</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-set-user-agent"></a><h3>raptor_www_set_user_agent ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_www_set_user_agent (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *user_agent</code></em>);</pre>
+<p>
+Set the user agent value, for HTTP requests typically.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_agent</code></em> :</span></p></td>
+<td>User-Agent string</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-set-proxy"></a><h3>raptor_www_set_proxy ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_www_set_proxy (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *proxy</code></em>);</pre>
+<p>
+Set the proxy for the WWW object.
+</p>
+<p>
+The <em class="parameter"><code>proxy</code></em> usually a string of the form http://server.domain:port.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
+<td>proxy string.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-set-http-accept"></a><h3>raptor_www_set_http_accept ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_www_set_http_accept (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *value</code></em>);</pre>
+<p>
+Set HTTP Accept header.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> class</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>Accept: header value or NULL to have an empty one.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-set-http-cache-control"></a><h3>raptor_www_set_http_cache_control ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_www_set_http_cache_control (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *cache_control</code></em>);</pre>
+<p>
+Set HTTP Cache-Control:header (default none)
+</p>
+<p>
+The <em class="parameter"><code>cache_control</code></em> value can be a string to set it, "" to send
+a blank header or NULL to not set the header at all.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>cache_control</code></em> :</span></p></td>
+<td>Cache-Control header value (or NULL to disable)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-set-write-bytes-handler"></a><h3>raptor_www_set_write_bytes_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_www_set_write_bytes_handler (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www-write-bytes-handler" title="raptor_www_write_bytes_handler ()"><span class="type">raptor_www_write_bytes_handler</span></a> handler</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+Set the handler to receive bytes written by the <a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> implementation.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>bytes handler function</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>bytes handler data</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-set-connection-timeout"></a><h3>raptor_www_set_connection_timeout ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_www_set_connection_timeout (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><span class="type">int</span> timeout</code></em>);</pre>
+<p>
+Set WWW connection timeout
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>timeout</code></em> :</span></p></td>
+<td>Timeout in seconds</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-set-content-type-handler"></a><h3>raptor_www_set_content_type_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_www_set_content_type_handler (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www-content-type-handler" title="raptor_www_content_type_handler ()"><span class="type">raptor_www_content_type_handler</span></a> handler</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+Set the handler to receive the HTTP Content-Type header value.
+</p>
+<p>
+This is called if or when the value is discovered during retrieval
+by the raptor_www implementation. Not all implementations provide
+access to this.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>content type handler function</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>content type handler data</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-uri-filter-func"></a><h3>raptor_uri_filter_func ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> (*raptor_uri_filter_func) (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);</pre>
+<p>
+Callback function for <a class="link" href="raptor2-section-www.html#raptor-www-set-uri-filter" title="raptor_www_set_uri_filter ()"><span class="type">raptor_www_set_uri_filter</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> URI to check</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 to filter the URI</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-set-uri-filter"></a><h3>raptor_www_set_uri_filter ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_www_set_uri_filter (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-uri-filter-func" title="raptor_uri_filter_func ()"><span class="type">raptor_uri_filter_func</span></a> filter</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+Set URI filter function for WWW retrieval.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>filter</code></em> :</span></p></td>
+<td>URI filter function</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>User data to pass to filter function</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-final-uri-handler"></a><h3>raptor_www_final_uri_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*raptor_www_final_uri_handler) (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *userdata</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *final_uri</code></em>);</pre>
+<p>
+Receiving the final resolved URI from a WWW retrieval
+</p>
+<p>
+Set by <a class="link" href="raptor2-section-www.html#raptor-www-set-final-uri-handler" title="raptor_www_set_final_uri_handler ()"><code class="function">raptor_www_set_final_uri_handler()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>userdata</code></em> :</span></p></td>
+<td>user data</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>final_uri</code></em> :</span></p></td>
+<td>final URI seen</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-get-final-uri"></a><h3>raptor_www_get_final_uri ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_www_get_final_uri (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>);</pre>
+<p>
+Get the WWW final resolved URI.
+</p>
+<p>
+This returns the URI used after any protocol redirection.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new URI or NULL if not known.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-set-final-uri-handler"></a><h3>raptor_www_set_final_uri_handler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_www_set_final_uri_handler (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www-final-uri-handler" title="raptor_www_final_uri_handler ()"><span class="type">raptor_www_final_uri_handler</span></a> handler</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+Set the handler to receive the HTTP Content-Type header value.
+</p>
+<p>
+This is called if or when the value is discovered during retrieval
+by the raptor_www implementation. Not all implementations provide
+access to this.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td>
+<td>content type handler function</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>content type handler data</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-fetch"></a><h3>raptor_www_fetch ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_www_fetch (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>);</pre>
+<p>
+Start a WWW content retrieval for the given URI, returning data via the write_bytes handler.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI to read from</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-fetch-to-string"></a><h3>raptor_www_fetch_to_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_www_fetch_to_string (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">void</span> **string_p</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-general.html#raptor-data-malloc-handler" title="raptor_data_malloc_handler ()"><span class="type">raptor_data_malloc_handler</span></a> const malloc_handler</code></em>);</pre>
+<p>
+Start a WWW content retrieval for the given URI, returning the data in a new string.
+</p>
+<p>
+If <em class="parameter"><code>malloc_handler</code></em> is null, raptor will allocate it using it's
+own memory allocator. *string_p is set to NULL on failure (and
+*length_p to 0 if length_p is not NULL).
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>raptor_www object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>raptor_uri to retrieve</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string_p</code></em> :</span></p></td>
+<td>pointer to location to hold string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length_p</code></em> :</span></p></td>
+<td>pointer to location to hold length of string (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>malloc_handler</code></em> :</span></p></td>
+<td>pointer to <code class="function">malloc()</code> to use to make string (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-get-connection"></a><h3>raptor_www_get_connection ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> * raptor_www_get_connection (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>);</pre>
+<p>
+Get WWW library connection object.
+</p>
+<p>
+Return the internal WWW connection handle. For libcurl, this
+returns the CURL handle and for libxml the context. Otherwise
+it returns NULL.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>connection pointer</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-set-ssl-cert-options"></a><h3>raptor_www_set_ssl_cert_options ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_www_set_ssl_cert_options (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *cert_filename</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *cert_type</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *cert_passphrase</code></em>);</pre>
+<p>
+Set SSL client certificate options (where supported)
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>cert_filename</code></em> :</span></p></td>
+<td>SSL client certificate file</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>cert_type</code></em> :</span></p></td>
+<td>SSL client certificate type (default is "PEM")</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>cert_passphrase</code></em> :</span></p></td>
+<td>SSL client certificate password</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 when setting options is not supported</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-set-ssl-verify-options"></a><h3>raptor_www_set_ssl_verify_options ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_www_set_ssl_verify_options (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code><span class="type">int</span> verify_peer</code></em>,
+ <em class="parameter"><code><span class="type">int</span> verify_host</code></em>);</pre>
+<p>
+Set whether SSL verifies the authenticity of the peer's certificate
+</p>
+<p>
+These options correspond to setting the curl
+CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>verify_peer</code></em> :</span></p></td>
+<td>SSL verify peer - non-0 to verify peer SSL certificate (default)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>verify_host</code></em> :</span></p></td>
+<td>SSL verify host - 0 none, 1 CN match, 2 host match (default). Other values are ignored.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-www-abort"></a><h3>raptor_www_abort ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_www_abort (<em class="parameter"><code><a class="link" href="raptor2-section-www.html#raptor-www" title="raptor_www"><span class="type">raptor_www</span></a> *www</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *reason</code></em>);</pre>
+<p>
+Abort an ongoing raptor WWW operation and pass back a reason.
+</p>
+<p>
+This is typically used within one of the raptor WWW handlers
+when retrieval need no longer continue due to another
+processing issue or error.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>www</code></em> :</span></p></td>
+<td>WWW object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>reason</code></em> :</span></p></td>
+<td>abort reason message</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-xml-namespace.html b/docs/html/raptor2-section-xml-namespace.html
new file mode 100644
index 0000000..59a9a2d
--- /dev/null
+++ b/docs/html/raptor2-section-xml-namespace.html
@@ -0,0 +1,761 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML Namespaces</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-www.html" title="WWW">
+<link rel="next" href="raptor2-section-xml-qname.html" title="XML QName">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-www.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-xml-qname.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-xml-namespace.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-xml-namespace.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-xml-namespace"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-xml-namespace.top_of_page"></a>XML Namespaces</span></h2>
+<p>XML Namespaces — Namespaces in XML include stacks of Namespaces</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-xml-namespace.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace">raptor_namespace</a>;
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="returnvalue">raptor_namespace</span></a> * <a class="link" href="raptor2-section-xml-namespace.html#raptor-new-namespace-from-uri" title="raptor_new_namespace_from_uri ()">raptor_new_namespace_from_uri</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *prefix</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *ns_uri</code></em>,
+ <em class="parameter"><code><span class="type">int</span> depth</code></em>);
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="returnvalue">raptor_namespace_stack</span></a> * <a class="link" href="raptor2-section-xml-namespace.html#raptor-new-namespaces" title="raptor_new_namespaces ()">raptor_new_namespaces</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">int</span> defaults</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-init" title="raptor_namespaces_init ()">raptor_namespaces_init</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><span class="type">int</span> defaults</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-clear" title="raptor_namespaces_clear ()">raptor_namespaces_clear</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml-namespace.html#raptor-free-namespaces" title="raptor_free_namespaces ()">raptor_free_namespaces</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-start-namespace" title="raptor_namespaces_start_namespace ()">raptor_namespaces_start_namespace</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *nspace</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-start-namespace-full" title="raptor_namespaces_start_namespace_full ()">raptor_namespaces_start_namespace_full</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *prefix</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *ns_uri_string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> depth</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-end-for-depth" title="raptor_namespaces_end_for_depth ()">raptor_namespaces_end_for_depth</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><span class="type">int</span> depth</code></em>);
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="returnvalue">raptor_namespace</span></a> * <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-get-default-namespace" title="raptor_namespaces_get_default_namespace ()">raptor_namespaces_get_default_namespace</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>);
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="returnvalue">raptor_namespace</span></a> * <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-find-namespace" title="raptor_namespaces_find_namespace ()">raptor_namespaces_find_namespace</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *prefix</code></em>,
+ <em class="parameter"><code><span class="type">int</span> prefix_length</code></em>);
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="returnvalue">raptor_namespace</span></a> * <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-find-namespace-by-uri" title="raptor_namespaces_find_namespace_by_uri ()">raptor_namespaces_find_namespace_by_uri</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *ns_uri</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-namespace-in-scope" title="raptor_namespaces_namespace_in_scope ()">raptor_namespaces_namespace_in_scope</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *nspace</code></em>);
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="returnvalue">raptor_namespace</span></a> * <a class="link" href="raptor2-section-xml-namespace.html#raptor-new-namespace" title="raptor_new_namespace ()">raptor_new_namespace</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *prefix</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *ns_uri_string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> depth</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml-namespace.html#raptor-free-namespace" title="raptor_free_namespace ()">raptor_free_namespace</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-get-uri" title="raptor_namespace_get_uri ()">raptor_namespace_get_uri</a> (<em class="parameter"><code>const <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>);
+const unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-get-prefix" title="raptor_namespace_get_prefix ()">raptor_namespace_get_prefix</a> (<em class="parameter"><code>const <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>);
+const unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-get-counted-prefix" title="raptor_namespace_get_counted_prefix ()">raptor_namespace_get_counted_prefix</a>
+ (<em class="parameter"><code>const <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-write" title="raptor_namespace_write ()">raptor_namespace_write</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+typedef <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack">raptor_namespace_stack</a>;
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack-start-namespace" title="raptor_namespace_stack_start_namespace ()">raptor_namespace_stack_start_namespace</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>,
+ <em class="parameter"><code><span class="type">int</span> new_depth</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-format-as-xml" title="raptor_namespace_format_as_xml ()">raptor_namespace_format_as_xml</a> (<em class="parameter"><code>const <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml-namespace.html#raptor-xml-namespace-string-parse" title="raptor_xml_namespace_string_parse ()">raptor_xml_namespace_string_parse</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> **prefix</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> **uri_string</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-xml-namespace.description"></a><h2>Description</h2>
+<p>
+Two classes that provide an XML namespace - short prefix (or none) and
+absolute URI (or none) to match the form <code class="literal">xmlns...="..."</code>
+seen in XML. A stack of namespaces <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> is also
+provided to handle in-scope namespace calculations that happen inside
+XML documents where inner namespaces can override outer ones.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-xml-namespace.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-namespace"></a><h3>raptor_namespace</h3>
+<pre class="programlisting">raptor_namespace* raptor_namespace;
+</pre>
+<p>
+Raptor XML Namespace class
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-namespace-from-uri"></a><h3>raptor_new_namespace_from_uri ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="returnvalue">raptor_namespace</span></a> * raptor_new_namespace_from_uri (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *prefix</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *ns_uri</code></em>,
+ <em class="parameter"><code><span class="type">int</span> depth</code></em>);</pre>
+<p>
+Constructor - create a new namespace from a prefix and URI object.
+</p>
+<p>
+This declares but does not enable the namespace declaration (or 'start' it)
+Use <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-start-namespace" title="raptor_namespaces_start_namespace ()"><code class="function">raptor_namespaces_start_namespace()</code></a> to make the namespace
+enabled and in scope for binding prefixes.
+</p>
+<p>
+Alternatively use <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-start-namespace-full" title="raptor_namespaces_start_namespace_full ()"><code class="function">raptor_namespaces_start_namespace_full()</code></a> can construct
+and enable a namespace in one call.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>prefix</code></em> :</span></p></td>
+<td>namespace prefix string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ns_uri</code></em> :</span></p></td>
+<td>namespace URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>depth</code></em> :</span></p></td>
+<td>depth of namespace in the stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-namespaces"></a><h3>raptor_new_namespaces ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="returnvalue">raptor_namespace_stack</span></a> * raptor_new_namespaces (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><span class="type">int</span> defaults</code></em>);</pre>
+<p>
+Constructor - create a new <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a>.
+</p>
+<p>
+See <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-init" title="raptor_namespaces_init ()"><code class="function">raptor_namespaces_init()</code></a> for the values of <em class="parameter"><code>defaults</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>defaults</code></em> :</span></p></td>
+<td>namespaces to initialise</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new namespace stack or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespaces-init"></a><h3>raptor_namespaces_init ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_namespaces_init (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><span class="type">int</span> defaults</code></em>);</pre>
+<p>
+Initialise an existing namespaces stack object
+</p>
+<p>
+This sets up the stack optionally with some common RDF namespaces.
+</p>
+<p>
+<em class="parameter"><code>defaults</code></em> can be 0 for none, 1 for just XML, 2 for RDF, RDFS, OWL
+and XSD (RDQL uses this) or 3+ undefined.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> to initialise</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>defaults</code></em> :</span></p></td>
+<td>namespaces to initialise.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on error</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespaces-clear"></a><h3>raptor_namespaces_clear ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_namespaces_clear (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>);</pre>
+<p>
+Empty a namespace stack of namespaces and any other resources.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-namespaces"></a><h3>raptor_free_namespaces ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_namespaces (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>);</pre>
+<p>
+Destructor - destroy a namespace stack
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespaces-start-namespace"></a><h3>raptor_namespaces_start_namespace ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_namespaces_start_namespace (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *nspace</code></em>);</pre>
+<p>
+Start a namespace on a stack of namespaces.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nspace</code></em> :</span></p></td>
+<td>namespace to start</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespaces-start-namespace-full"></a><h3>raptor_namespaces_start_namespace_full ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_namespaces_start_namespace_full
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *prefix</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *ns_uri_string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> depth</code></em>);</pre>
+<p>
+Create a new namespace and start it on a stack of namespaces.
+</p>
+<p>
+See <a class="link" href="raptor2-section-xml-namespace.html#raptor-new-namespace" title="raptor_new_namespace ()"><code class="function">raptor_new_namespace()</code></a> for the meanings of <em class="parameter"><code>prefix</code></em>,
+<em class="parameter"><code>ns_uri_string</code></em> and <em class="parameter"><code>depth</code></em> for namespaces.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>prefix</code></em> :</span></p></td>
+<td>new namespace prefix (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ns_uri_string</code></em> :</span></p></td>
+<td>new namespace URI (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>depth</code></em> :</span></p></td>
+<td>new namespace depth</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespaces-end-for-depth"></a><h3>raptor_namespaces_end_for_depth ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_namespaces_end_for_depth (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><span class="type">int</span> depth</code></em>);</pre>
+<p>
+End all namespaces at the given depth in the namespace stack.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>depth</code></em> :</span></p></td>
+<td>depth</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespaces-get-default-namespace"></a><h3>raptor_namespaces_get_default_namespace ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="returnvalue">raptor_namespace</span></a> * raptor_namespaces_get_default_namespace
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>);</pre>
+<p>
+Get the current default namespace in-scope in a stack.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> or NULL if no default namespace is in scope</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespaces-find-namespace"></a><h3>raptor_namespaces_find_namespace ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="returnvalue">raptor_namespace</span></a> * raptor_namespaces_find_namespace (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *prefix</code></em>,
+ <em class="parameter"><code><span class="type">int</span> prefix_length</code></em>);</pre>
+<p>
+Find a namespace in a namespace stack by prefix.
+</p>
+<p>
+Note that this uses the <em class="parameter"><code>length</code></em> so that the prefix may be a prefix (sic)
+of a longer string. If <em class="parameter"><code>prefix</code></em> is NULL, the default namespace will
+be returned if present, <em class="parameter"><code>prefix_length</code></em> length is ignored in this case.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>prefix</code></em> :</span></p></td>
+<td>namespace prefix to find</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>prefix_length</code></em> :</span></p></td>
+<td>length of prefix.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> for the prefix or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespaces-find-namespace-by-uri"></a><h3>raptor_namespaces_find_namespace_by_uri ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="returnvalue">raptor_namespace</span></a> * raptor_namespaces_find_namespace_by_uri
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *ns_uri</code></em>);</pre>
+<p>
+Find a namespace in a namespace stack by namespace URI.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ns_uri</code></em> :</span></p></td>
+<td>namespace URI to find</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> for the URI or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespaces-namespace-in-scope"></a><h3>raptor_namespaces_namespace_in_scope ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_namespaces_namespace_in_scope
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *nspace</code></em>);</pre>
+<p>
+Test if a given namespace is in-scope in the namespace stack.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nspace</code></em> :</span></p></td>
+<td>namespace</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if the namespace is in scope.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-namespace"></a><h3>raptor_new_namespace ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="returnvalue">raptor_namespace</span></a> * raptor_new_namespace (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *prefix</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *ns_uri_string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> depth</code></em>);</pre>
+<p>
+Constructor - create a new namespace from a prefix and URI string with a depth scope.
+</p>
+<p>
+This declares but does not enable the namespace declaration (or 'start' it)
+Use <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-start-namespace" title="raptor_namespaces_start_namespace ()"><code class="function">raptor_namespaces_start_namespace()</code></a> to make the namespace
+enabled and in scope for binding prefixes.
+</p>
+<p>
+Alternatively use <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-start-namespace-full" title="raptor_namespaces_start_namespace_full ()"><code class="function">raptor_namespaces_start_namespace_full()</code></a> can construct
+and enable a namespace in one call.
+</p>
+<p>
+The <em class="parameter"><code>depth</code></em> is a way to use the stack of namespaces for providing scoped
+namespaces where inner scope namespaces override outer scope namespaces.
+This is primarily for RDF/XML and XML syntaxes that have hierarchical
+elements. The main use of this is <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-end-for-depth" title="raptor_namespaces_end_for_depth ()"><code class="function">raptor_namespaces_end_for_depth()</code></a>
+to disable ('end') all namespaces at a given depth. Otherwise set this
+to 0.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>prefix</code></em> :</span></p></td>
+<td>namespace prefix string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ns_uri_string</code></em> :</span></p></td>
+<td>namespace URI string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>depth</code></em> :</span></p></td>
+<td>depth of namespace in the stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-namespace"></a><h3>raptor_free_namespace ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_namespace (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>);</pre>
+<p>
+Destructor - destroy a namespace.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>ns</code></em> :</span></p></td>
+<td>namespace object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespace-get-uri"></a><h3>raptor_namespace_get_uri ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_namespace_get_uri (<em class="parameter"><code>const <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>);</pre>
+<p>
+Get the namespace URI.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ns</code></em> :</span></p></td>
+<td>namespace object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>namespace URI or NULL</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespace-get-prefix"></a><h3>raptor_namespace_get_prefix ()</h3>
+<pre class="programlisting">const unsigned <span class="returnvalue">char</span> * raptor_namespace_get_prefix (<em class="parameter"><code>const <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>);</pre>
+<p>
+Get the namespace prefix.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ns</code></em> :</span></p></td>
+<td>namespace object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>prefix string or NULL</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespace-get-counted-prefix"></a><h3>raptor_namespace_get_counted_prefix ()</h3>
+<pre class="programlisting">const unsigned <span class="returnvalue">char</span> * raptor_namespace_get_counted_prefix
+ (<em class="parameter"><code>const <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>);</pre>
+<p>
+Get the namespace prefix and length.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ns</code></em> :</span></p></td>
+<td>namespace object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length_p</code></em> :</span></p></td>
+<td>pointer to store length or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>prefix string or NULL</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespace-write"></a><h3>raptor_namespace_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_namespace_write (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write a formatted namespace to an iostream
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ns</code></em> :</span></p></td>
+<td>namespace to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iosteram</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespace-stack"></a><h3>raptor_namespace_stack</h3>
+<pre class="programlisting">raptor_namespace_stack* raptor_namespace_stack;
+</pre>
+<p>
+Raptor XML Namespace Stack class
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespace-stack-start-namespace"></a><h3>raptor_namespace_stack_start_namespace ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_namespace_stack_start_namespace
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>,
+ <em class="parameter"><code><span class="type">int</span> new_depth</code></em>);</pre>
+<p>
+Copy an existing namespace to a namespace stack with a new depth
+and start it.
+</p>
+<p>
+The <em class="parameter"><code>depth</code></em> is a way to use the stack of namespaces for providing scoped
+namespaces where inner scope namespaces override outer scope namespaces.
+This is primarily for RDF/XML and XML syntaxes that have hierarchical
+elements. The main use of this is <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespaces-end-for-depth" title="raptor_namespaces_end_for_depth ()"><code class="function">raptor_namespaces_end_for_depth()</code></a>
+to disable ('end') all namespaces at a given depth. If depths are
+not being needed it is unlikely this call is ever needed to copy an
+existing namespace at a new depth.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ns</code></em> :</span></p></td>
+<td>namespace</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>new_depth</code></em> :</span></p></td>
+<td>new depth</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-namespace-format-as-xml"></a><h3>raptor_namespace_format_as_xml ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_namespace_format_as_xml (<em class="parameter"><code>const <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>);</pre>
+<p>
+Format a namespace in an XML style into a newly allocated string.
+</p>
+<p>
+Generates a string of the form xmlns:prefix="uri",
+xmlns="uri", xmlns:prefix="" or xmlns="" depending on the
+namespace's prefix or URI. Double quotes are always used.
+</p>
+<p>
+If <em class="parameter"><code>length_p</code></em> is not NULL, the length of the string is
+stored in the address it points to.
+</p>
+<p>
+See also <a class="link" href="raptor2-section-xml-namespace.html#raptor-xml-namespace-string-parse" title="raptor_xml_namespace_string_parse ()"><code class="function">raptor_xml_namespace_string_parse()</code></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ns</code></em> :</span></p></td>
+<td>namespace object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length_p</code></em> :</span></p></td>
+<td>pointer to length (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>namespace formatted as newly allocated string or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-namespace-string-parse"></a><h3>raptor_xml_namespace_string_parse ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_namespace_string_parse (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> **prefix</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> **uri_string</code></em>);</pre>
+<p>
+Parse a string containing an XML style namespace declaration
+into a namespace prefix and URI pair.
+</p>
+<p>
+The string is of the form xmlns:prefix="uri",
+xmlns="uri", xmlns:prefix="" or xmlns="".
+The quotes can be single or double quotes.
+</p>
+<p>
+Two values are returned from this function into *<em class="parameter"><code>prefix</code></em> and
+*<em class="parameter"><code>uri_string</code></em>. Either but not both may be NULL.
+</p>
+<p>
+See also <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-format-as-xml" title="raptor_namespace_format_as_xml ()"><code class="function">raptor_namespace_format_as_xml()</code></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string to parse</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>prefix</code></em> :</span></p></td>
+<td>pointer to location to store namespace prefix</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri_string</code></em> :</span></p></td>
+<td>pointer to location to store namespace URI</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-xml-qname.html b/docs/html/raptor2-section-xml-qname.html
new file mode 100644
index 0000000..42fe8e3
--- /dev/null
+++ b/docs/html/raptor2-section-xml-qname.html
@@ -0,0 +1,464 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML QName</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-xml-namespace.html" title="XML Namespaces">
+<link rel="next" href="raptor2-section-xml.html" title="XML">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-xml-namespace.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-xml.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-xml-qname.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-xml-qname.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-xml-qname"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-xml-qname.top_of_page"></a>XML QName</span></h2>
+<p>XML QName — XML Namespace-qualified names.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-xml-qname.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname">raptor_qname</a>;
+<a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="returnvalue">raptor_qname</span></a> * <a class="link" href="raptor2-section-xml-qname.html#raptor-new-qname" title="raptor_new_qname ()">raptor_new_qname</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *name</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *value</code></em>);
+<a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="returnvalue">raptor_qname</span></a> * <a class="link" href="raptor2-section-xml-qname.html#raptor-new-qname-from-namespace-local-name" title="raptor_new_qname_from_namespace_local_name ()">raptor_new_qname_from_namespace_local_name</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *local_name</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *value</code></em>);
+<a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="returnvalue">raptor_qname</span></a> * <a class="link" href="raptor2-section-xml-qname.html#raptor-new-qname-from-namespace-uri" title="raptor_new_qname_from_namespace_uri ()">raptor_new_qname_from_namespace_uri</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">int</span> xml_version</code></em>);
+<a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="returnvalue">raptor_qname</span></a> * <a class="link" href="raptor2-section-xml-qname.html#raptor-qname-copy" title="raptor_qname_copy ()">raptor_qname_copy</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *qname</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml-qname.html#raptor-free-qname" title="raptor_free_qname ()">raptor_free_qname</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml-qname.html#raptor-qname-equal" title="raptor_qname_equal ()">raptor_qname_equal</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name1</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name2</code></em>);
+<a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * <a class="link" href="raptor2-section-xml-qname.html#raptor-qname-string-to-uri" title="raptor_qname_string_to_uri ()">raptor_qname_string_to_uri</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *name</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> name_len</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml-qname.html#raptor-qname-write" title="raptor_qname_write ()">raptor_qname_write</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *qname</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+const unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-xml-qname.html#raptor-qname-get-counted-value" title="raptor_qname_get_counted_value ()">raptor_qname_get_counted_value</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>);
+const unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-xml-qname.html#raptor-qname-get-local-name" title="raptor_qname_get_local_name ()">raptor_qname_get_local_name</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name</code></em>);
+const <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="returnvalue">raptor_namespace</span></a> * <a class="link" href="raptor2-section-xml-qname.html#raptor-qname-get-namespace" title="raptor_qname_get_namespace ()">raptor_qname_get_namespace</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name</code></em>);
+const unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-xml-qname.html#raptor-qname-get-value" title="raptor_qname_get_value ()">raptor_qname_get_value</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name</code></em>);
+unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-xml-qname.html#raptor-qname-to-counted-name" title="raptor_qname_to_counted_name ()">raptor_qname_to_counted_name</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *qname</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-xml-qname.description"></a><h2>Description</h2>
+<p>
+Wraps an XML name inside an associated XML namespace in some XML document
+context (typically). Mostly used inside parsing XML to manage qnames
+for XML element and attribute names.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-xml-qname.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-qname"></a><h3>raptor_qname</h3>
+<pre class="programlisting">raptor_qname* raptor_qname;
+</pre>
+<p>
+Raptor XML qname class
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-qname"></a><h3>raptor_new_qname ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="returnvalue">raptor_qname</span></a> * raptor_new_qname (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *name</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *value</code></em>);</pre>
+<p>
+Constructor - create a new XML qname.
+</p>
+<p>
+Create a new qname from the local element/attribute name,
+with optional (attribute) value. The namespace stack is used
+to look up the name and find the namespace and generate the
+URI of the qname.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack to look up for namespaces</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>element or attribute name</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>attribute value (else is an element)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-qname-from-namespace-local-name"></a><h3>raptor_new_qname_from_namespace_local_name ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="returnvalue">raptor_qname</span></a> * raptor_new_qname_from_namespace_local_name
+ (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *local_name</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *value</code></em>);</pre>
+<p>
+Constructor - create a new XML qname.
+</p>
+<p>
+Create a new qname from the namespace and local element/attribute name,
+with optional (attribute) value.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ns</code></em> :</span></p></td>
+<td>namespace of qname (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>local_name</code></em> :</span></p></td>
+<td>element or attribute name</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>attribute value (else is an element)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-qname-from-namespace-uri"></a><h3>raptor_new_qname_from_namespace_uri ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="returnvalue">raptor_qname</span></a> * raptor_new_qname_from_namespace_uri (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *uri</code></em>,
+ <em class="parameter"><code><span class="type">int</span> xml_version</code></em>);</pre>
+<p>
+Make an appropriate XML Qname from the namespaces on a namespace stack
+</p>
+<p>
+Makes a qname from the in-scope namespaces in a stack if the URI matches
+the prefix and the rest is a legal XML name.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>namespace stack</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td>
+<td>URI to use to make qname</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_version</code></em> :</span></p></td>
+<td>XML Version</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> for the URI or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-qname-copy"></a><h3>raptor_qname_copy ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="returnvalue">raptor_qname</span></a> * raptor_qname_copy (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *qname</code></em>);</pre>
+<p>
+Copy constructor - copy an existing XML qname.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>qname</code></em> :</span></p></td>
+<td>existing qname</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-qname"></a><h3>raptor_free_qname ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_qname (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name</code></em>);</pre>
+<p>
+Destructor - destroy a raptor_qname object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-qname-equal"></a><h3>raptor_qname_equal ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_qname_equal (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name1</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name2</code></em>);</pre>
+<p>
+Compare two XML Qnames for equality.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name1</code></em> :</span></p></td>
+<td>first <a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name2</code></em> :</span></p></td>
+<td>second <span class="type">raptor_name</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if the qnames are equal.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-qname-string-to-uri"></a><h3>raptor_qname_string_to_uri ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="returnvalue">raptor_uri</span></a> * raptor_qname_string_to_uri (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *name</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> name_len</code></em>);</pre>
+<p>
+Get the URI for a qname.
+</p>
+<p>
+Utility function to turn a string representing a QName in the
+N3 style, into a new URI representing it. A NULL name or name ":"
+returns the default namespace URI. A name "p:" returns
+namespace name (URI) for the namespace with prefix "p".
+</p>
+<p>
+Partially equivalent to
+ qname = raptor_new_qname(nstack, name, NULL);
+ uri = raptor_uri_copy(qname-&gt;uri);
+ raptor_free_qname(qname)
+but without making the qname, and it also handles the NULL and
+":" name cases as well as error checking.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> to decode the namespace</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>QName string or NULL</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name_len</code></em> :</span></p></td>
+<td>QName string length</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new <a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-qname-write"></a><h3>raptor_qname_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_qname_write (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *qname</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write a formatted qname to an iostream
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>qname</code></em> :</span></p></td>
+<td>QName to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>raptor iosteram</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-qname-get-counted-value"></a><h3>raptor_qname_get_counted_value ()</h3>
+<pre class="programlisting">const unsigned <span class="returnvalue">char</span> * raptor_qname_get_counted_value (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>);</pre>
+<p>
+Get the <span class="type">raptor_value</span> of an XML QName.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length_p</code></em> :</span></p></td>
+<td>pointer to variable to store length of name (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the value</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-qname-get-local-name"></a><h3>raptor_qname_get_local_name ()</h3>
+<pre class="programlisting">const unsigned <span class="returnvalue">char</span> * raptor_qname_get_local_name (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name</code></em>);</pre>
+<p>
+Get the <span class="type">raptor_local_name</span> of an XML QName.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the local_name</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-qname-get-namespace"></a><h3>raptor_qname_get_namespace ()</h3>
+<pre class="programlisting">const <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="returnvalue">raptor_namespace</span></a> * raptor_qname_get_namespace (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name</code></em>);</pre>
+<p>
+Get the <a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> of an XML QName.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the namespace</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-qname-get-value"></a><h3>raptor_qname_get_value ()</h3>
+<pre class="programlisting">const unsigned <span class="returnvalue">char</span> * raptor_qname_get_value (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name</code></em>);</pre>
+<p>
+Get the <span class="type">raptor_value</span> of an XML QName.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the value</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-qname-to-counted-name"></a><h3>raptor_qname_to_counted_name ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">char</span> * raptor_qname_to_counted_name (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *qname</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> *length_p</code></em>);</pre>
+<p>
+Get the string form of a QName name
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>qname</code></em> :</span></p></td>
+<td>QName to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length_p</code></em> :</span></p></td>
+<td>pointer to variable to store length of name (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>new string name or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2-section-xml.html b/docs/html/raptor2-section-xml.html
new file mode 100644
index 0000000..429be02
--- /dev/null
+++ b/docs/html/raptor2-section-xml.html
@@ -0,0 +1,1177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<link rel="prev" href="raptor2-section-xml-qname.html" title="XML QName">
+<link rel="next" href="raptor-formats.html" title="Syntax Formats supported in Raptor">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="raptor2-section-xml-qname.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor-formats.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#raptor2-section-xml.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#raptor2-section-xml.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="raptor2-section-xml"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="raptor2-section-xml.top_of_page"></a>XML</span></h2>
+<p>XML — XML and XML Writer</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="raptor2-section-xml.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">typedef <a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element">raptor_xml_element</a>;
+<a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="returnvalue">raptor_xml_element</span></a> * <a class="link" href="raptor2-section-xml.html#raptor-new-xml-element" title="raptor_new_xml_element ()">raptor_new_xml_element</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *xml_language</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *xml_base</code></em>);
+<a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="returnvalue">raptor_xml_element</span></a> * <a class="link" href="raptor2-section-xml.html#raptor-new-xml-element-from-namespace-local-name" title="raptor_new_xml_element_from_namespace_local_name ()">raptor_new_xml_element_from_namespace_local_name</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *name</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *xml_language</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *xml_base</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-free-xml-element" title="raptor_free_xml_element ()">raptor_free_xml_element</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *element</code></em>);
+<a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="returnvalue">raptor_qname</span></a> * <a class="link" href="raptor2-section-xml.html#raptor-xml-element-get-name" title="raptor_xml_element_get_name ()">raptor_xml_element_get_name</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);
+<a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="returnvalue">raptor_qname</span></a> ** <a class="link" href="raptor2-section-xml.html#raptor-xml-element-get-attributes" title="raptor_xml_element_get_attributes ()">raptor_xml_element_get_attributes</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-element-get-attributes-count" title="raptor_xml_element_get_attributes_count ()">raptor_xml_element_get_attributes_count</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-element-set-attributes" title="raptor_xml_element_set_attributes ()">raptor_xml_element_set_attributes</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> **attributes</code></em>,
+ <em class="parameter"><code><span class="type">int</span> count</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-element-declare-namespace" title="raptor_xml_element_declare_namespace ()">raptor_xml_element_declare_namespace</a>
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *nspace</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-element-is-empty" title="raptor_xml_element_is_empty ()">raptor_xml_element_is_empty</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);
+const unsigned <span class="returnvalue">char</span> * <a class="link" href="raptor2-section-xml.html#raptor-xml-element-get-language" title="raptor_xml_element_get_language ()">raptor_xml_element_get_language</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-element-write" title="raptor_xml_element_write ()">raptor_xml_element_write</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *element</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><span class="type">int</span> is_empty</code></em>,
+ <em class="parameter"><code><span class="type">int</span> is_end</code></em>,
+ <em class="parameter"><code><span class="type">int</span> depth</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="returnvalue">raptor_xml_writer</span></a> * <a class="link" href="raptor2-section-xml.html#raptor-new-xml-writer" title="raptor_new_xml_writer ()">raptor_new_xml_writer</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-free-xml-writer" title="raptor_free_xml_writer ()">raptor_free_xml_writer</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-empty-element" title="raptor_xml_writer_empty_element ()">raptor_xml_writer_empty_element</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *element</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-start-element" title="raptor_xml_writer_start_element ()">raptor_xml_writer_start_element</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *element</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-end-element" title="raptor_xml_writer_end_element ()">raptor_xml_writer_end_element</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *element</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-cdata" title="raptor_xml_writer_cdata ()">raptor_xml_writer_cdata</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-cdata-counted" title="raptor_xml_writer_cdata_counted ()">raptor_xml_writer_cdata_counted</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> len</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-raw" title="raptor_xml_writer_raw ()">raptor_xml_writer_raw</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-raw-counted" title="raptor_xml_writer_raw_counted ()">raptor_xml_writer_raw_counted</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> len</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-comment" title="raptor_xml_writer_comment ()">raptor_xml_writer_comment</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-comment-counted" title="raptor_xml_writer_comment_counted ()">raptor_xml_writer_comment_counted</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> len</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-flush" title="raptor_xml_writer_flush ()">raptor_xml_writer_flush</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-newline" title="raptor_xml_writer_newline ()">raptor_xml_writer_newline</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-get-depth" title="raptor_xml_writer_get_depth ()">raptor_xml_writer_get_depth</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-set-option" title="raptor_xml_writer_set_option ()">raptor_xml_writer_set_option</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>,
+ <em class="parameter"><code><span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> integer</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-writer-get-option" title="raptor_xml_writer_get_option ()">raptor_xml_writer_get_option</a> (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>,
+ <em class="parameter"><code><span class="type">char</span> **string_p</code></em>,
+ <em class="parameter"><code><span class="type">int</span> *integer_p</code></em>);
+typedef <a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer">raptor_xml_writer</a>;
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-escape-string-any" title="raptor_xml_escape_string_any ()">raptor_xml_escape_string_any</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><span class="type">char</span> quote</code></em>,
+ <em class="parameter"><code><span class="type">int</span> xml_version</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-escape-string-any-write" title="raptor_xml_escape_string_any_write ()">raptor_xml_escape_string_any_write</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code><span class="type">char</span> quote</code></em>,
+ <em class="parameter"><code><span class="type">int</span> xml_version</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-escape-string" title="raptor_xml_escape_string ()">raptor_xml_escape_string</a> (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><span class="type">char</span> quote</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-escape-string-write" title="raptor_xml_escape_string_write ()">raptor_xml_escape_string_write</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code><span class="type">char</span> quote</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);
+<span class="returnvalue">int</span> <a class="link" href="raptor2-section-xml.html#raptor-xml-name-check" title="raptor_xml_name_check ()">raptor_xml_name_check</a> (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><span class="type">int</span> xml_version</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-xml.description"></a><h2>Description</h2>
+<p>
+XML elements with optional attributes and an XML Writer class that
+can format <a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> into output forms, with optional
+"pretty printing" features such as indenting and collapsing empty
+elements.
+</p>
+<p>
+Also includes a utility function <a class="link" href="raptor2-section-xml.html#raptor-xml-name-check" title="raptor_xml_name_check ()"><span class="type">raptor_xml_name_check</span></a> for checking
+a name is legal in some XML version.
+</p>
+</div>
+<div class="refsect1">
+<a name="raptor2-section-xml.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="raptor-xml-element"></a><h3>raptor_xml_element</h3>
+<pre class="programlisting">raptor_xml_element* raptor_xml_element;
+</pre>
+<p>
+Raptor XML Element class
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-xml-element"></a><h3>raptor_new_xml_element ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="returnvalue">raptor_xml_element</span></a> * raptor_new_xml_element (<em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> *name</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *xml_language</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *xml_base</code></em>);</pre>
+<p>
+Constructor - create a new XML element from a QName
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>The XML element name</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_language</code></em> :</span></p></td>
+<td>the in-scope XML language (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_base</code></em> :</span></p></td>
+<td>the in-scope XML base URI (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-xml-element-from-namespace-local-name"></a><h3>raptor_new_xml_element_from_namespace_local_name ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="returnvalue">raptor_xml_element</span></a> * raptor_new_xml_element_from_namespace_local_name
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *ns</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *name</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *xml_language</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-uri.html#raptor-uri" title="raptor_uri"><span class="type">raptor_uri</span></a> *xml_base</code></em>);</pre>
+<p>
+Constructor - create a new XML element from an XML namespace and a local name
+</p>
+<p>
+Added in 1.4.16.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ns</code></em> :</span></p></td>
+<td>namespace</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>the XML element local name</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_language</code></em> :</span></p></td>
+<td>the in-scope XML language (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_base</code></em> :</span></p></td>
+<td>base uri (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-xml-element"></a><h3>raptor_free_xml_element ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_xml_element (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *element</code></em>);</pre>
+<p>
+Destructor - destroy a raptor_xml_element object.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>element</code></em> :</span></p></td>
+<td>XML Element</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-element-get-name"></a><h3>raptor_xml_element_get_name ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="returnvalue">raptor_qname</span></a> * raptor_xml_element_get_name (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);</pre>
+<p>
+Get the XML Name of an XML element
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_element</code></em> :</span></p></td>
+<td>XML Element</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The Name.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-element-get-attributes"></a><h3>raptor_xml_element_get_attributes ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="returnvalue">raptor_qname</span></a> ** raptor_xml_element_get_attributes (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);</pre>
+<p>
+Get the array of attributes on the XML element.
+</p>
+<p>
+Use <a class="link" href="raptor2-section-xml.html#raptor-xml-element-get-attributes-count" title="raptor_xml_element_get_attributes_count ()"><code class="function">raptor_xml_element_get_attributes_count()</code></a> to get the count
+of the array size.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_element</code></em> :</span></p></td>
+<td>XML Element</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the array of qnames or NULL if none are present.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-element-get-attributes-count"></a><h3>raptor_xml_element_get_attributes_count ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_element_get_attributes_count
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);</pre>
+<p>
+Get the number of attributes on the XML element.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_element</code></em> :</span></p></td>
+<td>XML Element</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Integer number of attributes - 0 or more.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-element-set-attributes"></a><h3>raptor_xml_element_set_attributes ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_xml_element_set_attributes (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-qname.html#raptor-qname" title="raptor_qname"><span class="type">raptor_qname</span></a> **attributes</code></em>,
+ <em class="parameter"><code><span class="type">int</span> count</code></em>);</pre>
+<p>
+Set the attributes on an XML element.
+</p>
+<p>
+The <em class="parameter"><code>attributes</code></em> array becomes owned by the element after this function.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_element</code></em> :</span></p></td>
+<td>XML Element</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>attributes</code></em> :</span></p></td>
+<td>Array of XML Qname attributes with values</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>count</code></em> :</span></p></td>
+<td>Length of array</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-element-declare-namespace"></a><h3>raptor_xml_element_declare_namespace ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_element_declare_namespace
+ (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace" title="raptor_namespace"><span class="type">raptor_namespace</span></a> *nspace</code></em>);</pre>
+<p>
+Declare a namespace on the XML Element.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_element</code></em> :</span></p></td>
+<td>XML Element</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nspace</code></em> :</span></p></td>
+<td>raptor_namespace to declare</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if namespace cannot be declared</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-element-is-empty"></a><h3>raptor_xml_element_is_empty ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_element_is_empty (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);</pre>
+<p>
+Check if an XML Element is empty.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_element</code></em> :</span></p></td>
+<td>XML Element</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 if the element is empty.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-element-get-language"></a><h3>raptor_xml_element_get_language ()</h3>
+<pre class="programlisting">const unsigned <span class="returnvalue">char</span> * raptor_xml_element_get_language (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *xml_element</code></em>);</pre>
+<p>
+Get the XML language of the element.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_element</code></em> :</span></p></td>
+<td>XML Element</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>XML language or NULL if none in scope</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-element-write"></a><h3>raptor_xml_element_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_element_write (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *element</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><span class="type">int</span> is_empty</code></em>,
+ <em class="parameter"><code><span class="type">int</span> is_end</code></em>,
+ <em class="parameter"><code><span class="type">int</span> depth</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write a formatted XML element to a <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>element</code></em> :</span></p></td>
+<td>XML element to format</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>Namespace stack context to use in formatting</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>is_empty</code></em> :</span></p></td>
+<td>non-0 if element is empty</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>is_end</code></em> :</span></p></td>
+<td>non-0 if this is an end element (else is a start element)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>depth</code></em> :</span></p></td>
+<td>XML element depth</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>iostream object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non-0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-new-xml-writer"></a><h3>raptor_new_xml_writer ()</h3>
+<pre class="programlisting"><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="returnvalue">raptor_xml_writer</span></a> * raptor_new_xml_writer (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml-namespace.html#raptor-namespace-stack" title="raptor_namespace_stack"><span class="type">raptor_namespace_stack</span></a> *nstack</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Constructor - Create a new XML Writer writing XML to a raptor_iostream
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor_world object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nstack</code></em> :</span></p></td>
+<td>Namespace stack for the writer to start with (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>I/O stream to write to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a new <a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> object or NULL on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-free-xml-writer"></a><h3>raptor_free_xml_writer ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_free_xml_writer (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>);</pre>
+<p>
+Destructor - Free XML Writer
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>XML writer object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-empty-element"></a><h3>raptor_xml_writer_empty_element ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_xml_writer_empty_element (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *element</code></em>);</pre>
+<p>
+Write an empty XML element to the XML writer.
+</p>
+<p>
+Closes any previous empty element if XML writer option AUTO_EMPTY
+is enabled.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>XML writer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>element</code></em> :</span></p></td>
+<td>XML element object</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-start-element"></a><h3>raptor_xml_writer_start_element ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_xml_writer_start_element (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *element</code></em>);</pre>
+<p>
+Write a start XML element to the XML writer.
+</p>
+<p>
+Closes any previous empty element if XML writer option AUTO_EMPTY
+is enabled.
+</p>
+<p>
+Indents the start element if XML writer option AUTO_INDENT is enabled.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>XML writer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>element</code></em> :</span></p></td>
+<td>XML element object</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-end-element"></a><h3>raptor_xml_writer_end_element ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_xml_writer_end_element (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-element" title="raptor_xml_element"><span class="type">raptor_xml_element</span></a> *element</code></em>);</pre>
+<p>
+Write an end XML element to the XML writer.
+</p>
+<p>
+Indents the end element if XML writer option AUTO_INDENT is enabled.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>XML writer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>element</code></em> :</span></p></td>
+<td>XML element object</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-cdata"></a><h3>raptor_xml_writer_cdata ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_xml_writer_cdata (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>);</pre>
+<p>
+Write CDATA XML-escaped to the XML writer.
+</p>
+<p>
+Closes any previous empty element if XML writer option AUTO_EMPTY
+is enabled.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>XML writer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s</code></em> :</span></p></td>
+<td>string to XML escape and write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-cdata-counted"></a><h3>raptor_xml_writer_cdata_counted ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_xml_writer_cdata_counted (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> len</code></em>);</pre>
+<p>
+Write counted CDATA XML-escaped to the XML writer.
+</p>
+<p>
+Closes any previous empty element if XML writer option AUTO_EMPTY
+is enabled.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>XML writer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s</code></em> :</span></p></td>
+<td>string to XML escape and write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-raw"></a><h3>raptor_xml_writer_raw ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_xml_writer_raw (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>);</pre>
+<p>
+Write a string raw to the XML writer.
+</p>
+<p>
+Closes any previous empty element if XML writer option AUTO_EMPTY
+is enabled.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>XML writer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s</code></em> :</span></p></td>
+<td>string to write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-raw-counted"></a><h3>raptor_xml_writer_raw_counted ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_xml_writer_raw_counted (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> len</code></em>);</pre>
+<p>
+Write a counted string raw to the XML writer.
+</p>
+<p>
+Closes any previous empty element if XML writer option AUTO_EMPTY
+is enabled.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>XML writer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s</code></em> :</span></p></td>
+<td>string to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-comment"></a><h3>raptor_xml_writer_comment ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_xml_writer_comment (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>);</pre>
+<p>
+Write an XML comment to the XML writer.
+</p>
+<p>
+Closes any previous empty element if XML writer option AUTO_EMPTY
+is enabled.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>XML writer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s</code></em> :</span></p></td>
+<td>comment string to write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-comment-counted"></a><h3>raptor_xml_writer_comment_counted ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_xml_writer_comment_counted (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *s</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> len</code></em>);</pre>
+<p>
+Write a counted XML comment to the XML writer.
+</p>
+<p>
+Closes any previous empty element if XML writer option AUTO_EMPTY
+is enabled.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>XML writer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>s</code></em> :</span></p></td>
+<td>comment string to write</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-flush"></a><h3>raptor_xml_writer_flush ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_xml_writer_flush (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>);</pre>
+<p>
+Finish the XML writer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>XML writer object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-newline"></a><h3>raptor_xml_writer_newline ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> raptor_xml_writer_newline (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>);</pre>
+<p>
+Write a newline to the XML writer.
+</p>
+<p>
+Indents the next line if XML writer option AUTO_INDENT is enabled.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>XML writer object</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-get-depth"></a><h3>raptor_xml_writer_get_depth ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_writer_get_depth (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>);</pre>
+<p>
+Get the current XML Writer element depth
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> xml writer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>element stack depth</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-set-option"></a><h3>raptor_xml_writer_set_option ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_writer_set_option (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>,
+ <em class="parameter"><code><span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">int</span> integer</code></em>);</pre>
+<p>
+Set xml_writer option.
+</p>
+<p>
+If <em class="parameter"><code>string</code></em> is not NULL and the option type is numeric, the string
+value is converted to an integer and used in preference to <em class="parameter"><code>integer</code></em>.
+</p>
+<p>
+If <em class="parameter"><code>string</code></em> is NULL and the option type is not numeric, an error is
+returned.
+</p>
+<p>
+The <em class="parameter"><code>string</code></em> values used are copied.
+</p>
+<p>
+The allowed options are available via
+<a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> xml_writer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>option</code></em> :</span></p></td>
+<td>option to set from enumerated <a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> values</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string option value (or NULL)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>integer</code></em> :</span></p></td>
+<td>integer option value</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non 0 on failure or if the option is unknown</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer-get-option"></a><h3>raptor_xml_writer_get_option ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_writer_get_option (<em class="parameter"><code><a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> *xml_writer</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> option</code></em>,
+ <em class="parameter"><code><span class="type">char</span> **string_p</code></em>,
+ <em class="parameter"><code><span class="type">int</span> *integer_p</code></em>);</pre>
+<p>
+Get xml_writer option.
+</p>
+<p>
+Any string value returned in *<em class="parameter"><code>string_p</code></em> is shared and must
+be copied by the caller.
+</p>
+<p>
+The allowed options are available via
+<a class="link" href="raptor2-section-option.html#raptor-world-get-option-description" title="raptor_world_get_option_description ()"><code class="function">raptor_world_get_option_description()</code></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_writer</code></em> :</span></p></td>
+<td>
+<a class="link" href="raptor2-section-xml.html#raptor-xml-writer" title="raptor_xml_writer"><span class="type">raptor_xml_writer</span></a> xml_writer object</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>option</code></em> :</span></p></td>
+<td>option to get value</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string_p</code></em> :</span></p></td>
+<td>pointer to where to store string value</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>integer_p</code></em> :</span></p></td>
+<td>pointer to where to store integer value</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>option value or &lt; 0 for an illegal option</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-writer"></a><h3>raptor_xml_writer</h3>
+<pre class="programlisting">raptor_xml_writer* raptor_xml_writer;
+</pre>
+<p>
+Raptor XML Writer class
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-escape-string-any"></a><h3>raptor_xml_escape_string_any ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_escape_string_any (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><span class="type">char</span> quote</code></em>,
+ <em class="parameter"><code><span class="type">int</span> xml_version</code></em>);</pre>
+<p>
+Return an XML-escaped version a string.
+</p>
+<p>
+Follows
+<a class="ulink" href="http://www.w3.org/TR/xml-c14n#ProcessingModel" target="_top">Canonical XML rules on Text Nodes and Attribute Nodes</a>
+</p>
+<p>
+Both:
+ Replaces <code class="literal">&amp;</code> and <code class="literal">&lt;</code>
+ with <code class="literal">&amp;amp;</code> and <code class="literal">&amp;lt;</code>
+respectively, preserving other characters.
+</p>
+<p>
+Text Nodes:
+ <code class="literal">&gt;</code> is turned into <code class="literal">&amp;gt;</code>
+ #<span class="type">xD</span> is turned into <code class="literal">&amp;#<span class="type">xD</span>;</code>
+</p>
+<p>
+Attribute Nodes:
+ <code class="literal">&gt;</code> is generated not <code class="literal">&amp;gt</code>.
+ #<span class="type">x9</span>, #<span class="type">xA</span> and #<span class="type">xD</span> are turned into
+ <code class="literal">&amp;#<span class="type">x9</span>;</code>,
+ <code class="literal">&amp;#<span class="type">xA</span>;</code> and
+ <code class="literal">&amp;#<span class="type">xD</span>;</code>
+ entities.
+</p>
+<p>
+If <em class="parameter"><code>quote</code></em> is given it can be either of '\'' or '\"'
+which will be turned into <code class="literal">&amp;apos;</code> or
+<code class="literal">&amp;quot;</code> respectively.
+ASCII NUL ('\0') or any other character will not be escaped.
+</p>
+<p>
+If <em class="parameter"><code>buffer</code></em> is NULL, no work is done but the size of buffer
+required is returned. The output in buffer remains in UTF-8.
+</p>
+<p>
+If the input <em class="parameter"><code>string</code></em> is empty, a single NUL will be written to the
+buffer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string to XML escape (UTF-8)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
+<td>the buffer to use for new string (UTF-8) or NULL to just calculate expected length</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>buffer size</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>quote</code></em> :</span></p></td>
+<td>optional quote character to escape for attribute content, or 0</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_version</code></em> :</span></p></td>
+<td>XML 1.0 (10) or XML 1.1 (11)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the number of bytes required / used or &lt;0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-escape-string-any-write"></a><h3>raptor_xml_escape_string_any_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_escape_string_any_write (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code><span class="type">char</span> quote</code></em>,
+ <em class="parameter"><code><span class="type">int</span> xml_version</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write an XML-escaped version of a string to an iostream.
+</p>
+<p>
+See <a class="link" href="raptor2-section-xml.html#raptor-xml-escape-string" title="raptor_xml_escape_string ()"><code class="function">raptor_xml_escape_string()</code></a> for the escapes performed and
+the conditions on <em class="parameter"><code>quote</code></em> and <em class="parameter"><code>string</code></em>. XML 1.1 allows additional
+characters in XML such as U+0001 to U+001F inclusive.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string to XML escape (UTF-8)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>quote</code></em> :</span></p></td>
+<td>optional quote character to escape for attribute content, or 0</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_version</code></em> :</span></p></td>
+<td>XML version - 10 (XML 1.0) or 11 (XML 1.1)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>the <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> to write to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non 0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-escape-string"></a><h3>raptor_xml_escape_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_escape_string (<em class="parameter"><code><a class="link" href="raptor2-section-world.html#raptor-world" title="raptor_world"><span class="type">raptor_world</span></a> *world</code></em>,
+ <em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">char</span> *buffer</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><span class="type">char</span> quote</code></em>);</pre>
+<p>
+Return an XML 1.0-escaped version a string.
+</p>
+<p>
+See <a class="link" href="raptor2-section-xml.html#raptor-xml-escape-string-any" title="raptor_xml_escape_string_any ()"><code class="function">raptor_xml_escape_string_any()</code></a> for the conditions on parameters.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>world</code></em> :</span></p></td>
+<td>raptor world</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string to XML 1.0 escape (UTF-8)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
+<td>the buffer to use for new string (UTF-8) or NULL to just calculate expected length.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>buffer size</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>quote</code></em> :</span></p></td>
+<td>optional quote character to escape for attribute content, or 0</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>the number of bytes required / used or &lt;0 on failure.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-escape-string-write"></a><h3>raptor_xml_escape_string_write ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_escape_string_write (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> len</code></em>,
+ <em class="parameter"><code><span class="type">char</span> quote</code></em>,
+ <em class="parameter"><code><a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> *iostr</code></em>);</pre>
+<p>
+Write an XML 1.0-escaped version of a string to an iostream.
+</p>
+<p>
+See <a class="link" href="raptor2-section-xml.html#raptor-xml-escape-string-any-write" title="raptor_xml_escape_string_any_write ()"><code class="function">raptor_xml_escape_string_any_write()</code></a> for the escapes
+performed and the conditions on <em class="parameter"><code>quote</code></em> and <em class="parameter"><code>string</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>string to XML 1.0 escape (UTF-8)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>quote</code></em> :</span></p></td>
+<td>optional quote character to escape for attribute content, or 0</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>iostr</code></em> :</span></p></td>
+<td>the <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> to write to</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>non 0 on failure</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="raptor-xml-name-check"></a><h3>raptor_xml_name_check ()</h3>
+<pre class="programlisting"><span class="returnvalue">int</span> raptor_xml_name_check (<em class="parameter"><code>const unsigned <span class="type">char</span> *string</code></em>,
+ <em class="parameter"><code><span class="type">size_t</span> length</code></em>,
+ <em class="parameter"><code><span class="type">int</span> xml_version</code></em>);</pre>
+<p>
+Check a string is a legal XML name (and legal UTF8).
+</p>
+<p>
+xml_version is either 10 (for XML 1.0) or 11 for (XML 1.1). Any
+other version fails.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
+<td>UTF-8 name string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
+<td>length of string</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>xml_version</code></em> :</span></p></td>
+<td>XML version</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Non 0 if the string is a legal XML name</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/raptor2.devhelp2 b/docs/html/raptor2.devhelp2
new file mode 100644
index 0000000..61d14c1
--- /dev/null
+++ b/docs/html/raptor2.devhelp2
@@ -0,0 +1,627 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
+<book xmlns="http://www.devhelp.net/book" title="Raptor RDF Syntax Library Manual" link="index.html" author="" name="raptor2" version="2" language="c">
+ <chapters>
+ <sub name="Raptor Overview" link="introduction.html"/>
+ <sub name="Raptor Tutorial" link="tutorial.html">
+ <sub name="Initialising and Finishing using the Library" link="tutorial-initialising-finishing.html"/>
+ <sub name="Listing built-in functionality" link="tutorial-querying-functionality.html"/>
+ <sub name="Parsing syntaxes to RDF Triples" link="tutorial-parsing.html">
+ <sub name="Introduction" link="tutorial-parsing.html#tutorial-parsing-intro"/>
+ <sub name="Create the Parser object" link="tutorial-parser-create.html"/>
+ <sub name="Parser options" link="tutorial-parser-features.html"/>
+ <sub name="Set RDF statement callback handler" link="tutorial-parser-set-triple-handler.html"/>
+ <sub name="Set parsing log message handlers" link="tutorial-parser-set-error-warning-handlers.html"/>
+ <sub name="Set the identifier creator handler" link="tutorial-parser-set-id-handler.html"/>
+ <sub name="Set namespace declared handler" link="tutorial-parser-set-namespace-handler.html"/>
+ <sub name="Set the parsing strictness" link="tutorial-parse-strictness.html"/>
+ <sub name="Provide syntax content to parse" link="tutorial-parser-content.html">
+ <sub name="Parse the content from a URI (raptor_parser_parse_uri())" link="tutorial-parser-content.html#parse-from-uri"/>
+ <sub name="Parse the content of a URI using an existing WWW connection (raptor_parser_parse_uri_with_connection())" link="tutorial-parser-content.html#parse-from-www"/>
+ <sub name="Parse the content of a C FILE* (raptor_parser_parse_file_stream())" link="tutorial-parser-content.html#parse-from-filehandle"/>
+ <sub name="Parse the content of a file URI (raptor_parser_parse_file())" link="tutorial-parser-content.html#parse-from-file-uri"/>
+ <sub name="Parse chunks of syntax content provided by the application (raptor_parser_parse_start() and raptor_parser_parse_chunk())" link="tutorial-parser-content.html#parse-from-chunks"/>
+ </sub>
+ <sub name="Restrict parser network access" link="restrict-parser-network-access.html">
+ <sub name="Filtering parser network requests with option RAPTOR_OPTION_NO_NET" link="restrict-parser-network-access.html#tutorial-filter-network-with-feature"/>
+ <sub name="Filtering parser network requests with raptor_www_set_uri_filter()" link="restrict-parser-network-access.html#tutorial-filter-network-www-uri-filter"/>
+ <sub name="Filtering parser network requests with raptor_parser_set_uri_filter()" link="restrict-parser-network-access.html#tutorial-filter-network-parser-uri-filter"/>
+ <sub name="Setting timeout for parser network requests with option RAPTOR_OPTION_WWW_TIMEOUT" link="restrict-parser-network-access.html#tutorial-filter-network-parser-timeout"/>
+ </sub>
+ <sub name="Querying parser static information" link="tutorial-parser-static-info.html"/>
+ <sub name="Querying parser run-time information" link="tutorial-parser-runtime-info.html"/>
+ <sub name="Aborting parsing" link="tutorial-parser-abort.html"/>
+ <sub name="Destroy the parser" link="tutorial-parser-destroy.html"/>
+ <sub name="Parsing example code" link="tutorial-parser-example.html"/>
+ </sub>
+ <sub name="Serializing RDF triples to a syntax" link="tutorial-serializing.html">
+ <sub name="Introduction" link="tutorial-serializing.html#tutorial-serializing-intro"/>
+ <sub name="Create the Serializer object" link="tutorial-serializer-create.html"/>
+ <sub name="Serializer options" link="tutorial-serializer-features.html"/>
+ <sub name="Declare namespaces" link="tutorial-serializer-declare-namespace.html"/>
+ <sub name="Set error and warning handlers" link="tutorial-serializer-set-error-warning-handlers.html"/>
+ <sub name="Provide a destination for the serialized syntax" link="tutorial-serializer-to-destination.html">
+ <sub name="Serialize to a filename (raptor_serializer_start_to_filename())" link="tutorial-serializer-to-destination.html#serialize-to-filename"/>
+ <sub name="Serialize to a string (raptor_serializer_start_to_string())" link="tutorial-serializer-to-destination.html#serialize-to-string"/>
+ <sub name="Serialize to a FILE* file handle (raptor_serializer_start_to_file_handle())" link="tutorial-serializer-to-destination.html#serialize-to-filehandle"/>
+ <sub name="Serialize to an raptor_iostream (raptor_serializer_start_to_iostream())" link="tutorial-serializer-to-destination.html#serialize-to-iostream"/>
+ </sub>
+ <sub name="Get or construct RDF Statements (Triples)" link="tutorial-serializer-get-triples.html"/>
+ <sub name="Send RDF Triples to serializer" link="tutorial-serializer-send-triples.html"/>
+ <sub name="Querying serializer run-time information" link="tutorial-serializer-runtime-info.html"/>
+ <sub name="Destroy the serializer" link="tutorial-serializer-destroy.html"/>
+ <sub name="Serializing example code" link="tutorial-serializer-example.html"/>
+ </sub>
+ </sub>
+ <sub name="Raptor Reference Manual" link="reference-manual.html">
+ <sub name="Parsers in Raptor (syntax to triples)" link="raptor-parsers.html">
+ <sub name="Introduction" link="raptor-parsers.html#raptor-parsers-intro"/>
+ <sub name="GRDDL parser (name grddl)" link="parser-grddl.html"/>
+ <sub name="Guess parser (name guess)" link="parser-guess.html"/>
+ <sub name="JSON parser (name json)" link="parser-json.html"/>
+ <sub name="N-Triples parser (name ntriples)" link="parser-ntriples.html"/>
+ <sub name="RDFa parser - (name rdfa)" link="parser-rdfa.html"/>
+ <sub name="RDF/XML parser - default (name rdfxml)" link="parser-rdfxml.html"/>
+ <sub name="RSS Tag Soup parser (name rss-tag-soup)" link="parser-rss-tag-soup.html"/>
+ <sub name="TRiG parser (name trig)" link="parser-trig.html"/>
+ <sub name="Turtle Terse RDF Triple Language parser (name turtle)" link="parser-turtle.html"/>
+ </sub>
+ <sub name="Serializers in Raptor (triples to syntax)" link="raptor-serializers.html">
+ <sub name="Introduction" link="raptor-serializers.html#raptor-serializers-intro"/>
+ <sub name="Atom 1.0 serializer (name atom)" link="serializer-atom.html"/>
+ <sub name="JSON serializers (name json and name json-triples)" link="serializer-json.html"/>
+ <sub name="N-Quads serializer - default (name nquads)" link="serializer-nquads.html"/>
+ <sub name="N-Triples serializer - default (name ntriples)" link="serializer-ntriples.html"/>
+ <sub name="RDF/XML serializer (name rdfxml)" link="serializer-rdfxml.html"/>
+ <sub name="RDF/XML (Abbreviated) serializer (name rdfxml-abbrev)" link="serializer-rdfxml-abbrev.html"/>
+ <sub name="RDF/XML (XMP Profile) serializer (name rdfxml-xmp)" link="serializer-rdfxml-xmp.html"/>
+ <sub name="Turtle serializer (name turtle)" link="serializer-turtle.html"/>
+ <sub name="RSS 1.0 serializer (name rss-1.0)" link="serializer-rss-1-0.html"/>
+ <sub name="GraphViz dot serializer (name dot)" link="serializer-dot.html"/>
+ </sub>
+ <sub name="Initialisation" link="raptor2-section-world.html"/>
+ <sub name="General" link="raptor2-section-general.html"/>
+ <sub name="Memory" link="raptor2-section-memory.html"/>
+ <sub name="AVL Trees" link="raptor2-section-avltree.html"/>
+ <sub name="Constants" link="raptor2-section-constants.html"/>
+ <sub name="Options" link="raptor2-section-option.html"/>
+ <sub name="I/O Stream" link="raptor2-section-iostream.html"/>
+ <sub name="Locator" link="raptor2-section-locator.html"/>
+ <sub name="Parser" link="raptor2-section-parser.html"/>
+ <sub name="SAX2" link="raptor2-section-sax2.html"/>
+ <sub name="Sequence" link="raptor2-section-sequence.html"/>
+ <sub name="Serializer" link="raptor2-section-serializer.html"/>
+ <sub name="String buffer" link="raptor2-section-stringbuffer.html"/>
+ <sub name="Triples" link="raptor2-section-triples.html"/>
+ <sub name="Unicode" link="raptor2-section-unicode.html"/>
+ <sub name="URI" link="raptor2-section-uri.html"/>
+ <sub name="WWW" link="raptor2-section-www.html"/>
+ <sub name="XML Namespaces" link="raptor2-section-xml-namespace.html"/>
+ <sub name="XML QName" link="raptor2-section-xml-qname.html"/>
+ <sub name="XML" link="raptor2-section-xml.html"/>
+ <sub name="Syntax Formats supported in Raptor" link="raptor-formats.html">
+ <sub name="Introduction" link="raptor-formats.html#raptor-formats-intro"/>
+ <sub name="MIME Types by Parser" link="raptor-formats-types-by-parser.html"/>
+ <sub name="MIME Types by Serializer" link="raptor-formats-types-by-serializer.html"/>
+ <sub name="MIME Types Index" link="raptor-formats-types-index.html"/>
+ </sub>
+ <sub name="API Changes" link="raptor2-changes.html">
+ <sub name="Introduction" link="raptor2-changes.html#raptor2-changes-intro"/>
+ <sub name="Changes between raptor2 2.0.7 and 2.0.8" link="raptor2-changes-2-0-7-to-2-0-8.html">
+ <sub name="New functions, types and enums" link="raptor2-changes-2-0-7-to-2-0-8.html#raptor2-changes-new-2-0-7-to-2-0-8"/>
+ </sub>
+ <sub name="Changes between raptor2 2.0.6 and 2.0.7" link="raptor2-changes-2-0-6-to-2-0-7.html">
+ <sub name="New functions, types and enums" link="raptor2-changes-2-0-6-to-2-0-7.html#raptor2-changes-new-2-0-6-to-2-0-7"/>
+ </sub>
+ <sub name="Changes between raptor2 2.0.5 and 2.0.6" link="raptor2-changes-2-0-5-to-2-0-6.html">
+ <sub name="New functions, types and enums" link="raptor2-changes-2-0-5-to-2-0-6.html#raptor2-changes-new-2-0-5-to-2-0-6"/>
+ </sub>
+ <sub name="Changes between raptor2 2.0.4 and 2.0.5" link="raptor2-changes-2-0-4-to-2-0-5.html">
+ <sub name="New functions, types and enums" link="raptor2-changes-2-0-4-to-2-0-5.html#raptor2-changes-new-2-0-4-to-2-0-5"/>
+ </sub>
+ <sub name="Changes between raptor2 2.0.3 and 2.0.4" link="raptor2-changes-2-0-3-to-2-0-4.html">
+ <sub name="New functions, types and enums" link="raptor2-changes-2-0-3-to-2-0-4.html#raptor2-changes-new-2-0-3-to-2-0-4"/>
+ </sub>
+ <sub name="Changes between raptor2 1.4.21 and 2.0.0" link="raptor2-changes-1-4-21-to-2-0-0.html">
+ <sub name="New functions, types and enums" link="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-new-1-4-21-to-2-0-0"/>
+ <sub name="Deleted functions, types and enums" link="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-deleted-1-4-21-to-2-0-0"/>
+ <sub name="Renamed function and enums" link="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-renamed-1-4-21-to-2-0-0"/>
+ <sub name="Changed functions and types" link="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-changed-1-4-21-to-2-0-0"/>
+ </sub>
+ </sub>
+ </sub>
+ <sub name="Index" link="ix01.html"/>
+ </chapters>
+ <functions>
+ <keyword type="typedef" name="raptor_world" link="raptor2-section-world.html#raptor-world"/>
+ <keyword type="macro" name="raptor_new_world" link="raptor2-section-world.html#raptor-new-world"/>
+ <keyword type="function" name="raptor_world_open ()" link="raptor2-section-world.html#raptor-world-open"/>
+ <keyword type="function" name="raptor_free_world ()" link="raptor2-section-world.html#raptor-free-world"/>
+ <keyword type="enum" name="enum raptor_world_flag" link="raptor2-section-world.html#raptor-world-flag"/>
+ <keyword type="function" name="raptor_world_set_flag ()" link="raptor2-section-world.html#raptor-world-set-flag"/>
+ <keyword type="function" name="raptor_world_set_libxslt_security_preferences ()" link="raptor2-section-world.html#raptor-world-set-libxslt-security-preferences"/>
+ <keyword type="function" name="raptor_world_set_log_handler ()" link="raptor2-section-world.html#raptor-world-set-log-handler"/>
+ <keyword type="function" name="raptor_world_get_parser_description ()" link="raptor2-section-world.html#raptor-world-get-parser-description"/>
+ <keyword type="function" name="raptor_world_is_parser_name ()" link="raptor2-section-world.html#raptor-world-is-parser-name"/>
+ <keyword type="function" name="raptor_world_guess_parser_name ()" link="raptor2-section-world.html#raptor-world-guess-parser-name"/>
+ <keyword type="function" name="raptor_world_get_serializer_description ()" link="raptor2-section-world.html#raptor-world-get-serializer-description"/>
+ <keyword type="function" name="raptor_world_is_serializer_name ()" link="raptor2-section-world.html#raptor-world-is-serializer-name"/>
+ <keyword type="function" name="raptor_world_generate_bnodeid ()" link="raptor2-section-world.html#raptor-world-generate-bnodeid"/>
+ <keyword type="function" name="raptor_world_set_generate_bnodeid_handler ()" link="raptor2-section-world.html#raptor-world-set-generate-bnodeid-handler"/>
+ <keyword type="function" name="raptor_world_set_generate_bnodeid_parameters ()" link="raptor2-section-world.html#raptor-world-set-generate-bnodeid-parameters"/>
+ <keyword type="macro" name="RAPTOR_VERSION" link="raptor2-section-general.html#RAPTOR-VERSION:CAPS"/>
+ <keyword type="macro" name="RAPTOR_VERSION_MAJOR" link="raptor2-section-general.html#RAPTOR-VERSION-MAJOR:CAPS"/>
+ <keyword type="macro" name="RAPTOR_VERSION_MINOR" link="raptor2-section-general.html#RAPTOR-VERSION-MINOR:CAPS"/>
+ <keyword type="macro" name="RAPTOR_VERSION_RELEASE" link="raptor2-section-general.html#RAPTOR-VERSION-RELEASE:CAPS"/>
+ <keyword type="macro" name="RAPTOR_VERSION_STRING" link="raptor2-section-general.html#RAPTOR-VERSION-STRING:CAPS"/>
+ <keyword type="variable" name="raptor_version_major" link="raptor2-section-general.html#raptor-version-major"/>
+ <keyword type="variable" name="raptor_version_minor" link="raptor2-section-general.html#raptor-version-minor"/>
+ <keyword type="variable" name="raptor_version_release" link="raptor2-section-general.html#raptor-version-release"/>
+ <keyword type="variable" name="raptor_version_decimal" link="raptor2-section-general.html#raptor-version-decimal"/>
+ <keyword type="variable" name="raptor_copyright_string" link="raptor2-section-general.html#raptor-copyright-string"/>
+ <keyword type="variable" name="raptor_home_url_string" link="raptor2-section-general.html#raptor-home-url-string"/>
+ <keyword type="variable" name="raptor_license_string" link="raptor2-section-general.html#raptor-license-string"/>
+ <keyword type="variable" name="raptor_short_copyright_string" link="raptor2-section-general.html#raptor-short-copyright-string"/>
+ <keyword type="variable" name="raptor_version_string" link="raptor2-section-general.html#raptor-version-string"/>
+ <keyword type="variable" name="raptor_owl_namespace_uri" link="raptor2-section-general.html#raptor-owl-namespace-uri"/>
+ <keyword type="variable" name="raptor_rdf_namespace_uri" link="raptor2-section-general.html#raptor-rdf-namespace-uri"/>
+ <keyword type="variable" name="raptor_rdf_schema_namespace_uri" link="raptor2-section-general.html#raptor-rdf-schema-namespace-uri"/>
+ <keyword type="variable" name="raptor_xml_literal_datatype_uri_string" link="raptor2-section-general.html#raptor-xml-literal-datatype-uri-string"/>
+ <keyword type="variable" name="raptor_xml_namespace_uri" link="raptor2-section-general.html#raptor-xml-namespace-uri"/>
+ <keyword type="variable" name="raptor_xmlschema_datatypes_namespace_uri" link="raptor2-section-general.html#raptor-xmlschema-datatypes-namespace-uri"/>
+ <keyword type="function" name="raptor_statement_handler ()" link="raptor2-section-general.html#raptor-statement-handler"/>
+ <keyword type="function" name="raptor_snprintf ()" link="raptor2-section-general.html#raptor-snprintf"/>
+ <keyword type="function" name="raptor_vasprintf ()" link="raptor2-section-general.html#raptor-vasprintf"/>
+ <keyword type="function" name="raptor_vsnprintf ()" link="raptor2-section-general.html#raptor-vsnprintf"/>
+ <keyword type="function" name="raptor_vsnprintf2 ()" link="raptor2-section-general.html#raptor-vsnprintf2"/>
+ <keyword type="function" name="raptor_log_handler ()" link="raptor2-section-general.html#raptor-log-handler"/>
+ <keyword type="struct" name="raptor_log_message" link="raptor2-section-general.html#raptor-log-message"/>
+ <keyword type="enum" name="enum raptor_log_level" link="raptor2-section-general.html#raptor-log-level"/>
+ <keyword type="function" name="raptor_log_level_get_label ()" link="raptor2-section-general.html#raptor-log-level-get-label"/>
+ <keyword type="enum" name="enum raptor_domain" link="raptor2-section-general.html#raptor-domain"/>
+ <keyword type="function" name="raptor_domain_get_label ()" link="raptor2-section-general.html#raptor-domain-get-label"/>
+ <keyword type="function" name="raptor_data_compare_handler ()" link="raptor2-section-general.html#raptor-data-compare-handler"/>
+ <keyword type="function" name="raptor_data_context_free_handler ()" link="raptor2-section-general.html#raptor-data-context-free-handler"/>
+ <keyword type="function" name="raptor_data_context_print_handler ()" link="raptor2-section-general.html#raptor-data-context-print-handler"/>
+ <keyword type="function" name="raptor_data_free_handler ()" link="raptor2-section-general.html#raptor-data-free-handler"/>
+ <keyword type="function" name="raptor_data_malloc_handler ()" link="raptor2-section-general.html#raptor-data-malloc-handler"/>
+ <keyword type="function" name="raptor_data_print_handler ()" link="raptor2-section-general.html#raptor-data-print-handler"/>
+ <keyword type="enum" name="enum raptor_syntax_bitflags" link="raptor2-section-general.html#raptor-syntax-bitflags"/>
+ <keyword type="struct" name="raptor_syntax_description" link="raptor2-section-general.html#raptor-syntax-description"/>
+ <keyword type="function" name="raptor_syntax_description_validate ()" link="raptor2-section-general.html#raptor-syntax-description-validate"/>
+ <keyword type="struct" name="raptor_type_q" link="raptor2-section-general.html#raptor-type-q"/>
+ <keyword type="function" name="raptor_free_memory ()" link="raptor2-section-memory.html#raptor-free-memory"/>
+ <keyword type="function" name="raptor_alloc_memory ()" link="raptor2-section-memory.html#raptor-alloc-memory"/>
+ <keyword type="function" name="raptor_calloc_memory ()" link="raptor2-section-memory.html#raptor-calloc-memory"/>
+ <keyword type="typedef" name="raptor_avltree" link="raptor2-section-avltree.html#raptor-avltree"/>
+ <keyword type="enum" name="enum raptor_avltree_bitflags" link="raptor2-section-avltree.html#raptor-avltree-bitflags"/>
+ <keyword type="function" name="raptor_new_avltree ()" link="raptor2-section-avltree.html#raptor-new-avltree"/>
+ <keyword type="function" name="raptor_free_avltree ()" link="raptor2-section-avltree.html#raptor-free-avltree"/>
+ <keyword type="function" name="raptor_avltree_add ()" link="raptor2-section-avltree.html#raptor-avltree-add"/>
+ <keyword type="function" name="raptor_avltree_delete ()" link="raptor2-section-avltree.html#raptor-avltree-delete"/>
+ <keyword type="function" name="raptor_avltree_print ()" link="raptor2-section-avltree.html#raptor-avltree-print"/>
+ <keyword type="function" name="raptor_avltree_remove ()" link="raptor2-section-avltree.html#raptor-avltree-remove"/>
+ <keyword type="function" name="raptor_avltree_search ()" link="raptor2-section-avltree.html#raptor-avltree-search"/>
+ <keyword type="function" name="raptor_avltree_set_print_handler ()" link="raptor2-section-avltree.html#raptor-avltree-set-print-handler"/>
+ <keyword type="function" name="raptor_avltree_size ()" link="raptor2-section-avltree.html#raptor-avltree-size"/>
+ <keyword type="function" name="raptor_avltree_visit ()" link="raptor2-section-avltree.html#raptor-avltree-visit"/>
+ <keyword type="typedef" name="raptor_avltree_iterator" link="raptor2-section-avltree.html#raptor-avltree-iterator"/>
+ <keyword type="function" name="raptor_new_avltree_iterator ()" link="raptor2-section-avltree.html#raptor-new-avltree-iterator"/>
+ <keyword type="function" name="raptor_free_avltree_iterator ()" link="raptor2-section-avltree.html#raptor-free-avltree-iterator"/>
+ <keyword type="function" name="raptor_avltree_iterator_get ()" link="raptor2-section-avltree.html#raptor-avltree-iterator-get"/>
+ <keyword type="function" name="raptor_avltree_iterator_is_end ()" link="raptor2-section-avltree.html#raptor-avltree-iterator-is-end"/>
+ <keyword type="function" name="raptor_avltree_iterator_next ()" link="raptor2-section-avltree.html#raptor-avltree-iterator-next"/>
+ <keyword type="function" name="raptor_avltree_visit_handler ()" link="raptor2-section-avltree.html#raptor-avltree-visit-handler"/>
+ <keyword type="variable" name="raptor_rdf_namespace_uri_len" link="raptor2-section-constants.html#raptor-rdf-namespace-uri-len"/>
+ <keyword type="variable" name="raptor_xml_literal_datatype_uri_string_len" link="raptor2-section-constants.html#raptor-xml-literal-datatype-uri-string-len"/>
+ <keyword type="macro" name="RAPTOR_RDF_MS_URI" link="raptor2-section-constants.html#RAPTOR-RDF-MS-URI:CAPS"/>
+ <keyword type="macro" name="RAPTOR_RDF_SCHEMA_URI" link="raptor2-section-constants.html#RAPTOR-RDF-SCHEMA-URI:CAPS"/>
+ <keyword type="macro" name="RAPTOR_XMLSCHEMA_DATATYPES_URI" link="raptor2-section-constants.html#RAPTOR-XMLSCHEMA-DATATYPES-URI:CAPS"/>
+ <keyword type="macro" name="RAPTOR_OWL_URI" link="raptor2-section-constants.html#RAPTOR-OWL-URI:CAPS"/>
+ <keyword type="enum" name="enum raptor_option" link="raptor2-section-option.html#raptor-option"/>
+ <keyword type="struct" name="raptor_option_description" link="raptor2-section-option.html#raptor-option-description"/>
+ <keyword type="function" name="raptor_option_get_count ()" link="raptor2-section-option.html#raptor-option-get-count"/>
+ <keyword type="enum" name="enum raptor_option_value_type" link="raptor2-section-option.html#raptor-option-value-type"/>
+ <keyword type="function" name="raptor_option_get_value_type_label ()" link="raptor2-section-option.html#raptor-option-get-value-type-label"/>
+ <keyword type="function" name="raptor_world_get_option_description ()" link="raptor2-section-option.html#raptor-world-get-option-description"/>
+ <keyword type="function" name="raptor_free_option_description ()" link="raptor2-section-option.html#raptor-free-option-description"/>
+ <keyword type="function" name="raptor_world_get_option_from_uri ()" link="raptor2-section-option.html#raptor-world-get-option-from-uri"/>
+ <keyword type="typedef" name="raptor_iostream" link="raptor2-section-iostream.html#raptor-iostream"/>
+ <keyword type="function" name="raptor_iostream_init_func ()" link="raptor2-section-iostream.html#raptor-iostream-init-func"/>
+ <keyword type="function" name="raptor_iostream_finish_func ()" link="raptor2-section-iostream.html#raptor-iostream-finish-func"/>
+ <keyword type="function" name="raptor_iostream_write_byte_func ()" link="raptor2-section-iostream.html#raptor-iostream-write-byte-func"/>
+ <keyword type="function" name="raptor_iostream_write_bytes_func ()" link="raptor2-section-iostream.html#raptor-iostream-write-bytes-func"/>
+ <keyword type="function" name="raptor_iostream_write_end_func ()" link="raptor2-section-iostream.html#raptor-iostream-write-end-func"/>
+ <keyword type="function" name="raptor_iostream_read_bytes_func ()" link="raptor2-section-iostream.html#raptor-iostream-read-bytes-func"/>
+ <keyword type="function" name="raptor_iostream_read_eof_func ()" link="raptor2-section-iostream.html#raptor-iostream-read-eof-func"/>
+ <keyword type="struct" name="raptor_iostream_handler" link="raptor2-section-iostream.html#raptor-iostream-handler"/>
+ <keyword type="function" name="raptor_new_iostream_from_handler ()" link="raptor2-section-iostream.html#raptor-new-iostream-from-handler"/>
+ <keyword type="function" name="raptor_new_iostream_from_sink ()" link="raptor2-section-iostream.html#raptor-new-iostream-from-sink"/>
+ <keyword type="function" name="raptor_new_iostream_from_filename ()" link="raptor2-section-iostream.html#raptor-new-iostream-from-filename"/>
+ <keyword type="function" name="raptor_new_iostream_from_file_handle ()" link="raptor2-section-iostream.html#raptor-new-iostream-from-file-handle"/>
+ <keyword type="function" name="raptor_new_iostream_from_string ()" link="raptor2-section-iostream.html#raptor-new-iostream-from-string"/>
+ <keyword type="function" name="raptor_new_iostream_to_sink ()" link="raptor2-section-iostream.html#raptor-new-iostream-to-sink"/>
+ <keyword type="function" name="raptor_new_iostream_to_filename ()" link="raptor2-section-iostream.html#raptor-new-iostream-to-filename"/>
+ <keyword type="function" name="raptor_new_iostream_to_file_handle ()" link="raptor2-section-iostream.html#raptor-new-iostream-to-file-handle"/>
+ <keyword type="function" name="raptor_new_iostream_to_string ()" link="raptor2-section-iostream.html#raptor-new-iostream-to-string"/>
+ <keyword type="function" name="raptor_free_iostream ()" link="raptor2-section-iostream.html#raptor-free-iostream"/>
+ <keyword type="function" name="raptor_iostream_hexadecimal_write ()" link="raptor2-section-iostream.html#raptor-iostream-hexadecimal-write"/>
+ <keyword type="function" name="raptor_iostream_read_bytes ()" link="raptor2-section-iostream.html#raptor-iostream-read-bytes"/>
+ <keyword type="function" name="raptor_iostream_read_eof ()" link="raptor2-section-iostream.html#raptor-iostream-read-eof"/>
+ <keyword type="function" name="raptor_iostream_tell ()" link="raptor2-section-iostream.html#raptor-iostream-tell"/>
+ <keyword type="function" name="raptor_iostream_counted_string_write ()" link="raptor2-section-iostream.html#raptor-iostream-counted-string-write"/>
+ <keyword type="function" name="raptor_iostream_decimal_write ()" link="raptor2-section-iostream.html#raptor-iostream-decimal-write"/>
+ <keyword type="function" name="raptor_iostream_string_write ()" link="raptor2-section-iostream.html#raptor-iostream-string-write"/>
+ <keyword type="function" name="raptor_iostream_write_byte ()" link="raptor2-section-iostream.html#raptor-iostream-write-byte"/>
+ <keyword type="function" name="raptor_iostream_write_bytes ()" link="raptor2-section-iostream.html#raptor-iostream-write-bytes"/>
+ <keyword type="function" name="raptor_iostream_write_end ()" link="raptor2-section-iostream.html#raptor-iostream-write-end"/>
+ <keyword type="function" name="raptor_bnodeid_ntriples_write ()" link="raptor2-section-iostream.html#raptor-bnodeid-ntriples-write"/>
+ <keyword type="function" name="raptor_string_ntriples_write ()" link="raptor2-section-iostream.html#raptor-string-ntriples-write"/>
+ <keyword type="function" name="raptor_string_python_write ()" link="raptor2-section-iostream.html#raptor-string-python-write"/>
+ <keyword type="struct" name="raptor_locator" link="raptor2-section-locator.html#raptor-locator"/>
+ <keyword type="function" name="raptor_locator_print ()" link="raptor2-section-locator.html#raptor-locator-print"/>
+ <keyword type="function" name="raptor_locator_format ()" link="raptor2-section-locator.html#raptor-locator-format"/>
+ <keyword type="function" name="raptor_locator_line ()" link="raptor2-section-locator.html#raptor-locator-line"/>
+ <keyword type="function" name="raptor_locator_column ()" link="raptor2-section-locator.html#raptor-locator-column"/>
+ <keyword type="function" name="raptor_locator_byte ()" link="raptor2-section-locator.html#raptor-locator-byte"/>
+ <keyword type="function" name="raptor_locator_file ()" link="raptor2-section-locator.html#raptor-locator-file"/>
+ <keyword type="function" name="raptor_locator_uri ()" link="raptor2-section-locator.html#raptor-locator-uri"/>
+ <keyword type="typedef" name="raptor_parser" link="raptor2-section-parser.html#raptor-parser"/>
+ <keyword type="function" name="raptor_new_parser ()" link="raptor2-section-parser.html#raptor-new-parser"/>
+ <keyword type="function" name="raptor_new_parser_for_content ()" link="raptor2-section-parser.html#raptor-new-parser-for-content"/>
+ <keyword type="function" name="raptor_free_parser ()" link="raptor2-section-parser.html#raptor-free-parser"/>
+ <keyword type="function" name="raptor_graph_mark_handler ()" link="raptor2-section-parser.html#raptor-graph-mark-handler"/>
+ <keyword type="function" name="raptor_namespace_handler ()" link="raptor2-section-parser.html#raptor-namespace-handler"/>
+ <keyword type="function" name="raptor_parser_set_statement_handler ()" link="raptor2-section-parser.html#raptor-parser-set-statement-handler"/>
+ <keyword type="enum" name="enum raptor_graph_mark_flags" link="raptor2-section-parser.html#raptor-graph-mark-flags"/>
+ <keyword type="function" name="raptor_parser_set_graph_mark_handler ()" link="raptor2-section-parser.html#raptor-parser-set-graph-mark-handler"/>
+ <keyword type="function" name="raptor_parser_set_namespace_handler ()" link="raptor2-section-parser.html#raptor-parser-set-namespace-handler"/>
+ <keyword type="function" name="raptor_parser_get_description ()" link="raptor2-section-parser.html#raptor-parser-get-description"/>
+ <keyword type="function" name="raptor_parser_get_locator ()" link="raptor2-section-parser.html#raptor-parser-get-locator"/>
+ <keyword type="function" name="raptor_parser_parse_abort ()" link="raptor2-section-parser.html#raptor-parser-parse-abort"/>
+ <keyword type="function" name="raptor_parser_parse_chunk ()" link="raptor2-section-parser.html#raptor-parser-parse-chunk"/>
+ <keyword type="function" name="raptor_parser_parse_file ()" link="raptor2-section-parser.html#raptor-parser-parse-file"/>
+ <keyword type="function" name="raptor_parser_parse_file_stream ()" link="raptor2-section-parser.html#raptor-parser-parse-file-stream"/>
+ <keyword type="function" name="raptor_parser_parse_iostream ()" link="raptor2-section-parser.html#raptor-parser-parse-iostream"/>
+ <keyword type="function" name="raptor_parser_parse_start ()" link="raptor2-section-parser.html#raptor-parser-parse-start"/>
+ <keyword type="function" name="raptor_parser_parse_uri ()" link="raptor2-section-parser.html#raptor-parser-parse-uri"/>
+ <keyword type="function" name="raptor_parser_parse_uri_with_connection ()" link="raptor2-section-parser.html#raptor-parser-parse-uri-with-connection"/>
+ <keyword type="function" name="raptor_parser_get_graph ()" link="raptor2-section-parser.html#raptor-parser-get-graph"/>
+ <keyword type="function" name="raptor_parser_get_name ()" link="raptor2-section-parser.html#raptor-parser-get-name"/>
+ <keyword type="function" name="raptor_parser_set_option ()" link="raptor2-section-parser.html#raptor-parser-set-option"/>
+ <keyword type="function" name="raptor_parser_get_option ()" link="raptor2-section-parser.html#raptor-parser-get-option"/>
+ <keyword type="function" name="raptor_parser_get_accept_header ()" link="raptor2-section-parser.html#raptor-parser-get-accept-header"/>
+ <keyword type="function" name="raptor_parser_set_uri_filter ()" link="raptor2-section-parser.html#raptor-parser-set-uri-filter"/>
+ <keyword type="function" name="raptor_parser_get_world ()" link="raptor2-section-parser.html#raptor-parser-get-world"/>
+ <keyword type="typedef" name="raptor_sax2" link="raptor2-section-sax2.html#raptor-sax2"/>
+ <keyword type="function" name="raptor_new_sax2 ()" link="raptor2-section-sax2.html#raptor-new-sax2"/>
+ <keyword type="function" name="raptor_free_sax2 ()" link="raptor2-section-sax2.html#raptor-free-sax2"/>
+ <keyword type="function" name="raptor_sax2_start_element_handler ()" link="raptor2-section-sax2.html#raptor-sax2-start-element-handler"/>
+ <keyword type="function" name="raptor_sax2_end_element_handler ()" link="raptor2-section-sax2.html#raptor-sax2-end-element-handler"/>
+ <keyword type="function" name="raptor_sax2_characters_handler ()" link="raptor2-section-sax2.html#raptor-sax2-characters-handler"/>
+ <keyword type="function" name="raptor_sax2_cdata_handler ()" link="raptor2-section-sax2.html#raptor-sax2-cdata-handler"/>
+ <keyword type="function" name="raptor_sax2_comment_handler ()" link="raptor2-section-sax2.html#raptor-sax2-comment-handler"/>
+ <keyword type="function" name="raptor_sax2_unparsed_entity_decl_handler ()" link="raptor2-section-sax2.html#raptor-sax2-unparsed-entity-decl-handler"/>
+ <keyword type="function" name="raptor_sax2_external_entity_ref_handler ()" link="raptor2-section-sax2.html#raptor-sax2-external-entity-ref-handler"/>
+ <keyword type="function" name="raptor_sax2_set_start_element_handler ()" link="raptor2-section-sax2.html#raptor-sax2-set-start-element-handler"/>
+ <keyword type="function" name="raptor_sax2_set_end_element_handler ()" link="raptor2-section-sax2.html#raptor-sax2-set-end-element-handler"/>
+ <keyword type="function" name="raptor_sax2_set_characters_handler ()" link="raptor2-section-sax2.html#raptor-sax2-set-characters-handler"/>
+ <keyword type="function" name="raptor_sax2_set_cdata_handler ()" link="raptor2-section-sax2.html#raptor-sax2-set-cdata-handler"/>
+ <keyword type="function" name="raptor_sax2_set_comment_handler ()" link="raptor2-section-sax2.html#raptor-sax2-set-comment-handler"/>
+ <keyword type="function" name="raptor_sax2_set_unparsed_entity_decl_handler ()" link="raptor2-section-sax2.html#raptor-sax2-set-unparsed-entity-decl-handler"/>
+ <keyword type="function" name="raptor_sax2_set_external_entity_ref_handler ()" link="raptor2-section-sax2.html#raptor-sax2-set-external-entity-ref-handler"/>
+ <keyword type="function" name="raptor_sax2_set_namespace_handler ()" link="raptor2-section-sax2.html#raptor-sax2-set-namespace-handler"/>
+ <keyword type="function" name="raptor_sax2_set_uri_filter ()" link="raptor2-section-sax2.html#raptor-sax2-set-uri-filter"/>
+ <keyword type="function" name="raptor_sax2_parse_start ()" link="raptor2-section-sax2.html#raptor-sax2-parse-start"/>
+ <keyword type="function" name="raptor_sax2_parse_chunk ()" link="raptor2-section-sax2.html#raptor-sax2-parse-chunk"/>
+ <keyword type="function" name="raptor_sax2_inscope_xml_language ()" link="raptor2-section-sax2.html#raptor-sax2-inscope-xml-language"/>
+ <keyword type="function" name="raptor_sax2_inscope_base_uri ()" link="raptor2-section-sax2.html#raptor-sax2-inscope-base-uri"/>
+ <keyword type="typedef" name="raptor_sequence" link="raptor2-section-sequence.html#raptor-sequence"/>
+ <keyword type="function" name="raptor_new_sequence ()" link="raptor2-section-sequence.html#raptor-new-sequence"/>
+ <keyword type="function" name="raptor_new_sequence_with_context ()" link="raptor2-section-sequence.html#raptor-new-sequence-with-context"/>
+ <keyword type="function" name="raptor_free_sequence ()" link="raptor2-section-sequence.html#raptor-free-sequence"/>
+ <keyword type="function" name="raptor_sequence_delete_at ()" link="raptor2-section-sequence.html#raptor-sequence-delete-at"/>
+ <keyword type="function" name="raptor_sequence_get_at ()" link="raptor2-section-sequence.html#raptor-sequence-get-at"/>
+ <keyword type="function" name="raptor_sequence_join ()" link="raptor2-section-sequence.html#raptor-sequence-join"/>
+ <keyword type="function" name="raptor_sequence_next_permutation ()" link="raptor2-section-sequence.html#raptor-sequence-next-permutation"/>
+ <keyword type="function" name="raptor_sequence_pop ()" link="raptor2-section-sequence.html#raptor-sequence-pop"/>
+ <keyword type="function" name="raptor_sequence_print ()" link="raptor2-section-sequence.html#raptor-sequence-print"/>
+ <keyword type="function" name="raptor_sequence_push ()" link="raptor2-section-sequence.html#raptor-sequence-push"/>
+ <keyword type="function" name="raptor_sequence_reverse ()" link="raptor2-section-sequence.html#raptor-sequence-reverse"/>
+ <keyword type="function" name="raptor_sequence_set_at ()" link="raptor2-section-sequence.html#raptor-sequence-set-at"/>
+ <keyword type="function" name="raptor_sequence_shift ()" link="raptor2-section-sequence.html#raptor-sequence-shift"/>
+ <keyword type="function" name="raptor_sequence_size ()" link="raptor2-section-sequence.html#raptor-sequence-size"/>
+ <keyword type="function" name="raptor_sequence_sort ()" link="raptor2-section-sequence.html#raptor-sequence-sort"/>
+ <keyword type="function" name="raptor_sequence_swap ()" link="raptor2-section-sequence.html#raptor-sequence-swap"/>
+ <keyword type="function" name="raptor_sequence_unshift ()" link="raptor2-section-sequence.html#raptor-sequence-unshift"/>
+ <keyword type="typedef" name="raptor_serializer" link="raptor2-section-serializer.html#raptor-serializer"/>
+ <keyword type="function" name="raptor_new_serializer ()" link="raptor2-section-serializer.html#raptor-new-serializer"/>
+ <keyword type="function" name="raptor_free_serializer ()" link="raptor2-section-serializer.html#raptor-free-serializer"/>
+ <keyword type="function" name="raptor_serializer_start_to_iostream ()" link="raptor2-section-serializer.html#raptor-serializer-start-to-iostream"/>
+ <keyword type="function" name="raptor_serializer_start_to_filename ()" link="raptor2-section-serializer.html#raptor-serializer-start-to-filename"/>
+ <keyword type="function" name="raptor_serializer_start_to_string ()" link="raptor2-section-serializer.html#raptor-serializer-start-to-string"/>
+ <keyword type="function" name="raptor_serializer_start_to_file_handle ()" link="raptor2-section-serializer.html#raptor-serializer-start-to-file-handle"/>
+ <keyword type="function" name="raptor_serializer_set_namespace ()" link="raptor2-section-serializer.html#raptor-serializer-set-namespace"/>
+ <keyword type="function" name="raptor_serializer_set_namespace_from_namespace ()" link="raptor2-section-serializer.html#raptor-serializer-set-namespace-from-namespace"/>
+ <keyword type="function" name="raptor_serializer_serialize_statement ()" link="raptor2-section-serializer.html#raptor-serializer-serialize-statement"/>
+ <keyword type="function" name="raptor_serializer_serialize_end ()" link="raptor2-section-serializer.html#raptor-serializer-serialize-end"/>
+ <keyword type="function" name="raptor_serializer_flush ()" link="raptor2-section-serializer.html#raptor-serializer-flush"/>
+ <keyword type="function" name="raptor_serializer_get_description ()" link="raptor2-section-serializer.html#raptor-serializer-get-description"/>
+ <keyword type="function" name="raptor_serializer_get_iostream ()" link="raptor2-section-serializer.html#raptor-serializer-get-iostream"/>
+ <keyword type="function" name="raptor_serializer_get_locator ()" link="raptor2-section-serializer.html#raptor-serializer-get-locator"/>
+ <keyword type="function" name="raptor_serializer_set_option ()" link="raptor2-section-serializer.html#raptor-serializer-set-option"/>
+ <keyword type="function" name="raptor_serializer_get_option ()" link="raptor2-section-serializer.html#raptor-serializer-get-option"/>
+ <keyword type="function" name="raptor_serializer_get_world ()" link="raptor2-section-serializer.html#raptor-serializer-get-world"/>
+ <keyword type="typedef" name="raptor_stringbuffer" link="raptor2-section-stringbuffer.html#raptor-stringbuffer"/>
+ <keyword type="function" name="raptor_new_stringbuffer ()" link="raptor2-section-stringbuffer.html#raptor-new-stringbuffer"/>
+ <keyword type="function" name="raptor_free_stringbuffer ()" link="raptor2-section-stringbuffer.html#raptor-free-stringbuffer"/>
+ <keyword type="function" name="raptor_stringbuffer_append_counted_string ()" link="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-counted-string"/>
+ <keyword type="function" name="raptor_stringbuffer_append_decimal ()" link="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-decimal"/>
+ <keyword type="function" name="raptor_stringbuffer_append_hexadecimal ()" link="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-hexadecimal"/>
+ <keyword type="function" name="raptor_stringbuffer_append_string ()" link="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-string"/>
+ <keyword type="function" name="raptor_stringbuffer_append_stringbuffer ()" link="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-stringbuffer"/>
+ <keyword type="function" name="raptor_stringbuffer_append_uri_escaped_counted_string ()" link="raptor2-section-stringbuffer.html#raptor-stringbuffer-append-uri-escaped-counted-string"/>
+ <keyword type="function" name="raptor_stringbuffer_prepend_counted_string ()" link="raptor2-section-stringbuffer.html#raptor-stringbuffer-prepend-counted-string"/>
+ <keyword type="function" name="raptor_stringbuffer_prepend_string ()" link="raptor2-section-stringbuffer.html#raptor-stringbuffer-prepend-string"/>
+ <keyword type="function" name="raptor_stringbuffer_as_string ()" link="raptor2-section-stringbuffer.html#raptor-stringbuffer-as-string"/>
+ <keyword type="function" name="raptor_stringbuffer_length ()" link="raptor2-section-stringbuffer.html#raptor-stringbuffer-length"/>
+ <keyword type="function" name="raptor_stringbuffer_copy_to_string ()" link="raptor2-section-stringbuffer.html#raptor-stringbuffer-copy-to-string"/>
+ <keyword type="function" name="raptor_stringbuffer_write ()" link="raptor2-section-stringbuffer.html#raptor-stringbuffer-write"/>
+ <keyword type="enum" name="enum raptor_term_type" link="raptor2-section-triples.html#raptor-term-type"/>
+ <keyword type="struct" name="raptor_term" link="raptor2-section-triples.html#raptor-term"/>
+ <keyword type="union" name="raptor_term_value" link="raptor2-section-triples.html#raptor-term-value"/>
+ <keyword type="struct" name="raptor_term_blank_value" link="raptor2-section-triples.html#raptor-term-blank-value"/>
+ <keyword type="struct" name="raptor_term_literal_value" link="raptor2-section-triples.html#raptor-term-literal-value"/>
+ <keyword type="function" name="raptor_new_term_from_blank ()" link="raptor2-section-triples.html#raptor-new-term-from-blank"/>
+ <keyword type="function" name="raptor_new_term_from_counted_blank ()" link="raptor2-section-triples.html#raptor-new-term-from-counted-blank"/>
+ <keyword type="function" name="raptor_new_term_from_literal ()" link="raptor2-section-triples.html#raptor-new-term-from-literal"/>
+ <keyword type="function" name="raptor_new_term_from_counted_literal ()" link="raptor2-section-triples.html#raptor-new-term-from-counted-literal"/>
+ <keyword type="function" name="raptor_new_term_from_counted_uri_string ()" link="raptor2-section-triples.html#raptor-new-term-from-counted-uri-string"/>
+ <keyword type="function" name="raptor_new_term_from_uri ()" link="raptor2-section-triples.html#raptor-new-term-from-uri"/>
+ <keyword type="function" name="raptor_new_term_from_uri_string ()" link="raptor2-section-triples.html#raptor-new-term-from-uri-string"/>
+ <keyword type="function" name="raptor_term_copy ()" link="raptor2-section-triples.html#raptor-term-copy"/>
+ <keyword type="function" name="raptor_term_compare ()" link="raptor2-section-triples.html#raptor-term-compare"/>
+ <keyword type="function" name="raptor_term_equals ()" link="raptor2-section-triples.html#raptor-term-equals"/>
+ <keyword type="function" name="raptor_free_term ()" link="raptor2-section-triples.html#raptor-free-term"/>
+ <keyword type="function" name="raptor_term_to_counted_string ()" link="raptor2-section-triples.html#raptor-term-to-counted-string"/>
+ <keyword type="function" name="raptor_term_to_string ()" link="raptor2-section-triples.html#raptor-term-to-string"/>
+ <keyword type="function" name="raptor_term_ntriples_write ()" link="raptor2-section-triples.html#raptor-term-ntriples-write"/>
+ <keyword type="function" name="raptor_term_to_turtle_counted_string ()" link="raptor2-section-triples.html#raptor-term-to-turtle-counted-string"/>
+ <keyword type="function" name="raptor_term_to_turtle_string ()" link="raptor2-section-triples.html#raptor-term-to-turtle-string"/>
+ <keyword type="function" name="raptor_term_turtle_write ()" link="raptor2-section-triples.html#raptor-term-turtle-write"/>
+ <keyword type="struct" name="raptor_statement" link="raptor2-section-triples.html#raptor-statement"/>
+ <keyword type="function" name="raptor_new_statement ()" link="raptor2-section-triples.html#raptor-new-statement"/>
+ <keyword type="function" name="raptor_new_statement_from_nodes ()" link="raptor2-section-triples.html#raptor-new-statement-from-nodes"/>
+ <keyword type="function" name="raptor_free_statement ()" link="raptor2-section-triples.html#raptor-free-statement"/>
+ <keyword type="function" name="raptor_statement_copy ()" link="raptor2-section-triples.html#raptor-statement-copy"/>
+ <keyword type="function" name="raptor_statement_compare ()" link="raptor2-section-triples.html#raptor-statement-compare"/>
+ <keyword type="function" name="raptor_statement_equals ()" link="raptor2-section-triples.html#raptor-statement-equals"/>
+ <keyword type="function" name="raptor_statement_init ()" link="raptor2-section-triples.html#raptor-statement-init"/>
+ <keyword type="function" name="raptor_statement_clear ()" link="raptor2-section-triples.html#raptor-statement-clear"/>
+ <keyword type="function" name="raptor_statement_print ()" link="raptor2-section-triples.html#raptor-statement-print"/>
+ <keyword type="function" name="raptor_statement_print_as_ntriples ()" link="raptor2-section-triples.html#raptor-statement-print-as-ntriples"/>
+ <keyword type="function" name="raptor_statement_ntriples_write ()" link="raptor2-section-triples.html#raptor-statement-ntriples-write"/>
+ <keyword type="typedef" name="raptor_unichar" link="raptor2-section-unicode.html#raptor-unichar"/>
+ <keyword type="function" name="raptor_unicode_utf8_string_put_char ()" link="raptor2-section-unicode.html#raptor-unicode-utf8-string-put-char"/>
+ <keyword type="function" name="raptor_unicode_utf8_string_get_char ()" link="raptor2-section-unicode.html#raptor-unicode-utf8-string-get-char"/>
+ <keyword type="function" name="raptor_unicode_is_xml11_namestartchar ()" link="raptor2-section-unicode.html#raptor-unicode-is-xml11-namestartchar"/>
+ <keyword type="function" name="raptor_unicode_is_xml10_namestartchar ()" link="raptor2-section-unicode.html#raptor-unicode-is-xml10-namestartchar"/>
+ <keyword type="function" name="raptor_unicode_is_xml11_namechar ()" link="raptor2-section-unicode.html#raptor-unicode-is-xml11-namechar"/>
+ <keyword type="function" name="raptor_unicode_is_xml10_namechar ()" link="raptor2-section-unicode.html#raptor-unicode-is-xml10-namechar"/>
+ <keyword type="function" name="raptor_unicode_check_utf8_string ()" link="raptor2-section-unicode.html#raptor-unicode-check-utf8-string"/>
+ <keyword type="function" name="raptor_unicode_utf8_strlen ()" link="raptor2-section-unicode.html#raptor-unicode-utf8-strlen"/>
+ <keyword type="function" name="raptor_unicode_utf8_substr ()" link="raptor2-section-unicode.html#raptor-unicode-utf8-substr"/>
+ <keyword type="typedef" name="raptor_uri" link="raptor2-section-uri.html#raptor-uri"/>
+ <keyword type="function" name="raptor_new_uri ()" link="raptor2-section-uri.html#raptor-new-uri"/>
+ <keyword type="function" name="raptor_new_uri_from_counted_string ()" link="raptor2-section-uri.html#raptor-new-uri-from-counted-string"/>
+ <keyword type="function" name="raptor_new_uri_from_uri_local_name ()" link="raptor2-section-uri.html#raptor-new-uri-from-uri-local-name"/>
+ <keyword type="function" name="raptor_new_uri_from_uri_or_file_string ()" link="raptor2-section-uri.html#raptor-new-uri-from-uri-or-file-string"/>
+ <keyword type="function" name="raptor_new_uri_relative_to_base ()" link="raptor2-section-uri.html#raptor-new-uri-relative-to-base"/>
+ <keyword type="function" name="raptor_new_uri_relative_to_base_counted ()" link="raptor2-section-uri.html#raptor-new-uri-relative-to-base-counted"/>
+ <keyword type="function" name="raptor_new_uri_from_id ()" link="raptor2-section-uri.html#raptor-new-uri-from-id"/>
+ <keyword type="function" name="raptor_new_uri_for_rdf_concept ()" link="raptor2-section-uri.html#raptor-new-uri-for-rdf-concept"/>
+ <keyword type="function" name="raptor_new_uri_for_xmlbase ()" link="raptor2-section-uri.html#raptor-new-uri-for-xmlbase"/>
+ <keyword type="function" name="raptor_new_uri_for_retrieval ()" link="raptor2-section-uri.html#raptor-new-uri-for-retrieval"/>
+ <keyword type="function" name="raptor_free_uri ()" link="raptor2-section-uri.html#raptor-free-uri"/>
+ <keyword type="function" name="raptor_uri_compare ()" link="raptor2-section-uri.html#raptor-uri-compare"/>
+ <keyword type="function" name="raptor_uri_equals ()" link="raptor2-section-uri.html#raptor-uri-equals"/>
+ <keyword type="function" name="raptor_uri_copy ()" link="raptor2-section-uri.html#raptor-uri-copy"/>
+ <keyword type="function" name="raptor_uri_as_string ()" link="raptor2-section-uri.html#raptor-uri-as-string"/>
+ <keyword type="function" name="raptor_uri_as_counted_string ()" link="raptor2-section-uri.html#raptor-uri-as-counted-string"/>
+ <keyword type="function" name="raptor_uri_to_relative_counted_uri_string ()" link="raptor2-section-uri.html#raptor-uri-to-relative-counted-uri-string"/>
+ <keyword type="function" name="raptor_uri_to_relative_uri_string ()" link="raptor2-section-uri.html#raptor-uri-to-relative-uri-string"/>
+ <keyword type="function" name="raptor_uri_to_counted_string ()" link="raptor2-section-uri.html#raptor-uri-to-counted-string"/>
+ <keyword type="function" name="raptor_uri_to_string ()" link="raptor2-section-uri.html#raptor-uri-to-string"/>
+ <keyword type="function" name="raptor_uri_resolve_uri_reference ()" link="raptor2-section-uri.html#raptor-uri-resolve-uri-reference"/>
+ <keyword type="function" name="raptor_uri_filename_to_uri_string ()" link="raptor2-section-uri.html#raptor-uri-filename-to-uri-string"/>
+ <keyword type="function" name="raptor_uri_uri_string_to_filename ()" link="raptor2-section-uri.html#raptor-uri-uri-string-to-filename"/>
+ <keyword type="function" name="raptor_uri_uri_string_to_filename_fragment ()" link="raptor2-section-uri.html#raptor-uri-uri-string-to-filename-fragment"/>
+ <keyword type="function" name="raptor_uri_uri_string_to_counted_filename_fragment ()" link="raptor2-section-uri.html#raptor-uri-uri-string-to-counted-filename-fragment"/>
+ <keyword type="function" name="raptor_uri_uri_string_is_file_uri ()" link="raptor2-section-uri.html#raptor-uri-uri-string-is-file-uri"/>
+ <keyword type="function" name="raptor_uri_print ()" link="raptor2-section-uri.html#raptor-uri-print"/>
+ <keyword type="function" name="raptor_uri_get_world ()" link="raptor2-section-uri.html#raptor-uri-get-world"/>
+ <keyword type="function" name="raptor_uri_write ()" link="raptor2-section-uri.html#raptor-uri-write"/>
+ <keyword type="function" name="raptor_uri_file_exists ()" link="raptor2-section-uri.html#raptor-uri-file-exists"/>
+ <keyword type="function" name="raptor_uri_filename_exists ()" link="raptor2-section-uri.html#raptor-uri-filename-exists"/>
+ <keyword type="function" name="raptor_uri_to_turtle_counted_string ()" link="raptor2-section-uri.html#raptor-uri-to-turtle-counted-string"/>
+ <keyword type="function" name="raptor_uri_to_turtle_string ()" link="raptor2-section-uri.html#raptor-uri-to-turtle-string"/>
+ <keyword type="function" name="raptor_uri_turtle_write ()" link="raptor2-section-uri.html#raptor-uri-turtle-write"/>
+ <keyword type="typedef" name="raptor_www" link="raptor2-section-www.html#raptor-www"/>
+ <keyword type="function" name="raptor_new_www ()" link="raptor2-section-www.html#raptor-new-www"/>
+ <keyword type="function" name="raptor_new_www_with_connection ()" link="raptor2-section-www.html#raptor-new-www-with-connection"/>
+ <keyword type="function" name="raptor_free_www ()" link="raptor2-section-www.html#raptor-free-www"/>
+ <keyword type="function" name="raptor_www_write_bytes_handler ()" link="raptor2-section-www.html#raptor-www-write-bytes-handler"/>
+ <keyword type="function" name="raptor_www_content_type_handler ()" link="raptor2-section-www.html#raptor-www-content-type-handler"/>
+ <keyword type="function" name="raptor_www_set_user_agent ()" link="raptor2-section-www.html#raptor-www-set-user-agent"/>
+ <keyword type="function" name="raptor_www_set_proxy ()" link="raptor2-section-www.html#raptor-www-set-proxy"/>
+ <keyword type="function" name="raptor_www_set_http_accept ()" link="raptor2-section-www.html#raptor-www-set-http-accept"/>
+ <keyword type="function" name="raptor_www_set_http_cache_control ()" link="raptor2-section-www.html#raptor-www-set-http-cache-control"/>
+ <keyword type="function" name="raptor_www_set_write_bytes_handler ()" link="raptor2-section-www.html#raptor-www-set-write-bytes-handler"/>
+ <keyword type="function" name="raptor_www_set_connection_timeout ()" link="raptor2-section-www.html#raptor-www-set-connection-timeout"/>
+ <keyword type="function" name="raptor_www_set_content_type_handler ()" link="raptor2-section-www.html#raptor-www-set-content-type-handler"/>
+ <keyword type="function" name="raptor_uri_filter_func ()" link="raptor2-section-www.html#raptor-uri-filter-func"/>
+ <keyword type="function" name="raptor_www_set_uri_filter ()" link="raptor2-section-www.html#raptor-www-set-uri-filter"/>
+ <keyword type="function" name="raptor_www_final_uri_handler ()" link="raptor2-section-www.html#raptor-www-final-uri-handler"/>
+ <keyword type="function" name="raptor_www_get_final_uri ()" link="raptor2-section-www.html#raptor-www-get-final-uri"/>
+ <keyword type="function" name="raptor_www_set_final_uri_handler ()" link="raptor2-section-www.html#raptor-www-set-final-uri-handler"/>
+ <keyword type="function" name="raptor_www_fetch ()" link="raptor2-section-www.html#raptor-www-fetch"/>
+ <keyword type="function" name="raptor_www_fetch_to_string ()" link="raptor2-section-www.html#raptor-www-fetch-to-string"/>
+ <keyword type="function" name="raptor_www_get_connection ()" link="raptor2-section-www.html#raptor-www-get-connection"/>
+ <keyword type="function" name="raptor_www_set_ssl_cert_options ()" link="raptor2-section-www.html#raptor-www-set-ssl-cert-options"/>
+ <keyword type="function" name="raptor_www_set_ssl_verify_options ()" link="raptor2-section-www.html#raptor-www-set-ssl-verify-options"/>
+ <keyword type="function" name="raptor_www_abort ()" link="raptor2-section-www.html#raptor-www-abort"/>
+ <keyword type="typedef" name="raptor_namespace" link="raptor2-section-xml-namespace.html#raptor-namespace"/>
+ <keyword type="function" name="raptor_new_namespace_from_uri ()" link="raptor2-section-xml-namespace.html#raptor-new-namespace-from-uri"/>
+ <keyword type="function" name="raptor_new_namespaces ()" link="raptor2-section-xml-namespace.html#raptor-new-namespaces"/>
+ <keyword type="function" name="raptor_namespaces_init ()" link="raptor2-section-xml-namespace.html#raptor-namespaces-init"/>
+ <keyword type="function" name="raptor_namespaces_clear ()" link="raptor2-section-xml-namespace.html#raptor-namespaces-clear"/>
+ <keyword type="function" name="raptor_free_namespaces ()" link="raptor2-section-xml-namespace.html#raptor-free-namespaces"/>
+ <keyword type="function" name="raptor_namespaces_start_namespace ()" link="raptor2-section-xml-namespace.html#raptor-namespaces-start-namespace"/>
+ <keyword type="function" name="raptor_namespaces_start_namespace_full ()" link="raptor2-section-xml-namespace.html#raptor-namespaces-start-namespace-full"/>
+ <keyword type="function" name="raptor_namespaces_end_for_depth ()" link="raptor2-section-xml-namespace.html#raptor-namespaces-end-for-depth"/>
+ <keyword type="function" name="raptor_namespaces_get_default_namespace ()" link="raptor2-section-xml-namespace.html#raptor-namespaces-get-default-namespace"/>
+ <keyword type="function" name="raptor_namespaces_find_namespace ()" link="raptor2-section-xml-namespace.html#raptor-namespaces-find-namespace"/>
+ <keyword type="function" name="raptor_namespaces_find_namespace_by_uri ()" link="raptor2-section-xml-namespace.html#raptor-namespaces-find-namespace-by-uri"/>
+ <keyword type="function" name="raptor_namespaces_namespace_in_scope ()" link="raptor2-section-xml-namespace.html#raptor-namespaces-namespace-in-scope"/>
+ <keyword type="function" name="raptor_new_namespace ()" link="raptor2-section-xml-namespace.html#raptor-new-namespace"/>
+ <keyword type="function" name="raptor_free_namespace ()" link="raptor2-section-xml-namespace.html#raptor-free-namespace"/>
+ <keyword type="function" name="raptor_namespace_get_uri ()" link="raptor2-section-xml-namespace.html#raptor-namespace-get-uri"/>
+ <keyword type="function" name="raptor_namespace_get_prefix ()" link="raptor2-section-xml-namespace.html#raptor-namespace-get-prefix"/>
+ <keyword type="function" name="raptor_namespace_get_counted_prefix ()" link="raptor2-section-xml-namespace.html#raptor-namespace-get-counted-prefix"/>
+ <keyword type="function" name="raptor_namespace_write ()" link="raptor2-section-xml-namespace.html#raptor-namespace-write"/>
+ <keyword type="typedef" name="raptor_namespace_stack" link="raptor2-section-xml-namespace.html#raptor-namespace-stack"/>
+ <keyword type="function" name="raptor_namespace_stack_start_namespace ()" link="raptor2-section-xml-namespace.html#raptor-namespace-stack-start-namespace"/>
+ <keyword type="function" name="raptor_namespace_format_as_xml ()" link="raptor2-section-xml-namespace.html#raptor-namespace-format-as-xml"/>
+ <keyword type="function" name="raptor_xml_namespace_string_parse ()" link="raptor2-section-xml-namespace.html#raptor-xml-namespace-string-parse"/>
+ <keyword type="typedef" name="raptor_qname" link="raptor2-section-xml-qname.html#raptor-qname"/>
+ <keyword type="function" name="raptor_new_qname ()" link="raptor2-section-xml-qname.html#raptor-new-qname"/>
+ <keyword type="function" name="raptor_new_qname_from_namespace_local_name ()" link="raptor2-section-xml-qname.html#raptor-new-qname-from-namespace-local-name"/>
+ <keyword type="function" name="raptor_new_qname_from_namespace_uri ()" link="raptor2-section-xml-qname.html#raptor-new-qname-from-namespace-uri"/>
+ <keyword type="function" name="raptor_qname_copy ()" link="raptor2-section-xml-qname.html#raptor-qname-copy"/>
+ <keyword type="function" name="raptor_free_qname ()" link="raptor2-section-xml-qname.html#raptor-free-qname"/>
+ <keyword type="function" name="raptor_qname_equal ()" link="raptor2-section-xml-qname.html#raptor-qname-equal"/>
+ <keyword type="function" name="raptor_qname_string_to_uri ()" link="raptor2-section-xml-qname.html#raptor-qname-string-to-uri"/>
+ <keyword type="function" name="raptor_qname_write ()" link="raptor2-section-xml-qname.html#raptor-qname-write"/>
+ <keyword type="function" name="raptor_qname_get_counted_value ()" link="raptor2-section-xml-qname.html#raptor-qname-get-counted-value"/>
+ <keyword type="function" name="raptor_qname_get_local_name ()" link="raptor2-section-xml-qname.html#raptor-qname-get-local-name"/>
+ <keyword type="function" name="raptor_qname_get_namespace ()" link="raptor2-section-xml-qname.html#raptor-qname-get-namespace"/>
+ <keyword type="function" name="raptor_qname_get_value ()" link="raptor2-section-xml-qname.html#raptor-qname-get-value"/>
+ <keyword type="function" name="raptor_qname_to_counted_name ()" link="raptor2-section-xml-qname.html#raptor-qname-to-counted-name"/>
+ <keyword type="typedef" name="raptor_xml_element" link="raptor2-section-xml.html#raptor-xml-element"/>
+ <keyword type="function" name="raptor_new_xml_element ()" link="raptor2-section-xml.html#raptor-new-xml-element"/>
+ <keyword type="function" name="raptor_new_xml_element_from_namespace_local_name ()" link="raptor2-section-xml.html#raptor-new-xml-element-from-namespace-local-name"/>
+ <keyword type="function" name="raptor_free_xml_element ()" link="raptor2-section-xml.html#raptor-free-xml-element"/>
+ <keyword type="function" name="raptor_xml_element_get_name ()" link="raptor2-section-xml.html#raptor-xml-element-get-name"/>
+ <keyword type="function" name="raptor_xml_element_get_attributes ()" link="raptor2-section-xml.html#raptor-xml-element-get-attributes"/>
+ <keyword type="function" name="raptor_xml_element_get_attributes_count ()" link="raptor2-section-xml.html#raptor-xml-element-get-attributes-count"/>
+ <keyword type="function" name="raptor_xml_element_set_attributes ()" link="raptor2-section-xml.html#raptor-xml-element-set-attributes"/>
+ <keyword type="function" name="raptor_xml_element_declare_namespace ()" link="raptor2-section-xml.html#raptor-xml-element-declare-namespace"/>
+ <keyword type="function" name="raptor_xml_element_is_empty ()" link="raptor2-section-xml.html#raptor-xml-element-is-empty"/>
+ <keyword type="function" name="raptor_xml_element_get_language ()" link="raptor2-section-xml.html#raptor-xml-element-get-language"/>
+ <keyword type="function" name="raptor_xml_element_write ()" link="raptor2-section-xml.html#raptor-xml-element-write"/>
+ <keyword type="function" name="raptor_new_xml_writer ()" link="raptor2-section-xml.html#raptor-new-xml-writer"/>
+ <keyword type="function" name="raptor_free_xml_writer ()" link="raptor2-section-xml.html#raptor-free-xml-writer"/>
+ <keyword type="function" name="raptor_xml_writer_empty_element ()" link="raptor2-section-xml.html#raptor-xml-writer-empty-element"/>
+ <keyword type="function" name="raptor_xml_writer_start_element ()" link="raptor2-section-xml.html#raptor-xml-writer-start-element"/>
+ <keyword type="function" name="raptor_xml_writer_end_element ()" link="raptor2-section-xml.html#raptor-xml-writer-end-element"/>
+ <keyword type="function" name="raptor_xml_writer_cdata ()" link="raptor2-section-xml.html#raptor-xml-writer-cdata"/>
+ <keyword type="function" name="raptor_xml_writer_cdata_counted ()" link="raptor2-section-xml.html#raptor-xml-writer-cdata-counted"/>
+ <keyword type="function" name="raptor_xml_writer_raw ()" link="raptor2-section-xml.html#raptor-xml-writer-raw"/>
+ <keyword type="function" name="raptor_xml_writer_raw_counted ()" link="raptor2-section-xml.html#raptor-xml-writer-raw-counted"/>
+ <keyword type="function" name="raptor_xml_writer_comment ()" link="raptor2-section-xml.html#raptor-xml-writer-comment"/>
+ <keyword type="function" name="raptor_xml_writer_comment_counted ()" link="raptor2-section-xml.html#raptor-xml-writer-comment-counted"/>
+ <keyword type="function" name="raptor_xml_writer_flush ()" link="raptor2-section-xml.html#raptor-xml-writer-flush"/>
+ <keyword type="function" name="raptor_xml_writer_newline ()" link="raptor2-section-xml.html#raptor-xml-writer-newline"/>
+ <keyword type="function" name="raptor_xml_writer_get_depth ()" link="raptor2-section-xml.html#raptor-xml-writer-get-depth"/>
+ <keyword type="function" name="raptor_xml_writer_set_option ()" link="raptor2-section-xml.html#raptor-xml-writer-set-option"/>
+ <keyword type="function" name="raptor_xml_writer_get_option ()" link="raptor2-section-xml.html#raptor-xml-writer-get-option"/>
+ <keyword type="typedef" name="raptor_xml_writer" link="raptor2-section-xml.html#raptor-xml-writer"/>
+ <keyword type="function" name="raptor_xml_escape_string_any ()" link="raptor2-section-xml.html#raptor-xml-escape-string-any"/>
+ <keyword type="function" name="raptor_xml_escape_string_any_write ()" link="raptor2-section-xml.html#raptor-xml-escape-string-any-write"/>
+ <keyword type="function" name="raptor_xml_escape_string ()" link="raptor2-section-xml.html#raptor-xml-escape-string"/>
+ <keyword type="function" name="raptor_xml_escape_string_write ()" link="raptor2-section-xml.html#raptor-xml-escape-string-write"/>
+ <keyword type="function" name="raptor_xml_name_check ()" link="raptor2-section-xml.html#raptor-xml-name-check"/>
+ <keyword type="constant" name="RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE" link="raptor2-section-world.html#RAPTOR-WORLD-FLAG-LIBXML-GENERIC-ERROR-SAVE:CAPS"/>
+ <keyword type="constant" name="RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE" link="raptor2-section-world.html#RAPTOR-WORLD-FLAG-LIBXML-STRUCTURED-ERROR-SAVE:CAPS"/>
+ <keyword type="constant" name="RAPTOR_WORLD_FLAG_URI_INTERNING" link="raptor2-section-world.html#RAPTOR-WORLD-FLAG-URI-INTERNING:CAPS"/>
+ <keyword type="constant" name="RAPTOR_WORLD_FLAG_WWW_SKIP_INIT_FINISH" link="raptor2-section-world.html#RAPTOR-WORLD-FLAG-WWW-SKIP-INIT-FINISH:CAPS"/>
+ <keyword type="constant" name="RAPTOR_LOG_LEVEL_NONE" link="raptor2-section-general.html#RAPTOR-LOG-LEVEL-NONE:CAPS"/>
+ <keyword type="constant" name="RAPTOR_LOG_LEVEL_TRACE" link="raptor2-section-general.html#RAPTOR-LOG-LEVEL-TRACE:CAPS"/>
+ <keyword type="constant" name="RAPTOR_LOG_LEVEL_DEBUG" link="raptor2-section-general.html#RAPTOR-LOG-LEVEL-DEBUG:CAPS"/>
+ <keyword type="constant" name="RAPTOR_LOG_LEVEL_INFO" link="raptor2-section-general.html#RAPTOR-LOG-LEVEL-INFO:CAPS"/>
+ <keyword type="constant" name="RAPTOR_LOG_LEVEL_WARN" link="raptor2-section-general.html#RAPTOR-LOG-LEVEL-WARN:CAPS"/>
+ <keyword type="constant" name="RAPTOR_LOG_LEVEL_ERROR" link="raptor2-section-general.html#RAPTOR-LOG-LEVEL-ERROR:CAPS"/>
+ <keyword type="constant" name="RAPTOR_LOG_LEVEL_FATAL" link="raptor2-section-general.html#RAPTOR-LOG-LEVEL-FATAL:CAPS"/>
+ <keyword type="constant" name="RAPTOR_LOG_LEVEL_LAST" link="raptor2-section-general.html#RAPTOR-LOG-LEVEL-LAST:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_NONE" link="raptor2-section-general.html#RAPTOR-DOMAIN-NONE:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_IOSTREAM" link="raptor2-section-general.html#RAPTOR-DOMAIN-IOSTREAM:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_NAMESPACE" link="raptor2-section-general.html#RAPTOR-DOMAIN-NAMESPACE:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_PARSER" link="raptor2-section-general.html#RAPTOR-DOMAIN-PARSER:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_QNAME" link="raptor2-section-general.html#RAPTOR-DOMAIN-QNAME:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_SAX2" link="raptor2-section-general.html#RAPTOR-DOMAIN-SAX2:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_SERIALIZER" link="raptor2-section-general.html#RAPTOR-DOMAIN-SERIALIZER:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_TERM" link="raptor2-section-general.html#RAPTOR-DOMAIN-TERM:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_TURTLE_WRITER" link="raptor2-section-general.html#RAPTOR-DOMAIN-TURTLE-WRITER:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_URI" link="raptor2-section-general.html#RAPTOR-DOMAIN-URI:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_WORLD" link="raptor2-section-general.html#RAPTOR-DOMAIN-WORLD:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_WWW" link="raptor2-section-general.html#RAPTOR-DOMAIN-WWW:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_XML_WRITER" link="raptor2-section-general.html#RAPTOR-DOMAIN-XML-WRITER:CAPS"/>
+ <keyword type="constant" name="RAPTOR_DOMAIN_LAST" link="raptor2-section-general.html#RAPTOR-DOMAIN-LAST:CAPS"/>
+ <keyword type="constant" name="RAPTOR_SYNTAX_NEED_BASE_URI" link="raptor2-section-general.html#RAPTOR-SYNTAX-NEED-BASE-URI:CAPS"/>
+ <keyword type="constant" name="RAPTOR_AVLTREE_FLAG_REPLACE_DUPLICATES" link="raptor2-section-avltree.html#RAPTOR-AVLTREE-FLAG-REPLACE-DUPLICATES:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_SCANNING" link="raptor2-section-option.html#RAPTOR-OPTION-SCANNING:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES" link="raptor2-section-option.html#RAPTOR-OPTION-ALLOW-NON-NS-ATTRIBUTES:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES" link="raptor2-section-option.html#RAPTOR-OPTION-ALLOW-OTHER-PARSETYPES:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_ALLOW_BAGID" link="raptor2-section-option.html#RAPTOR-OPTION-ALLOW-BAGID:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST" link="raptor2-section-option.html#RAPTOR-OPTION-ALLOW-RDF-TYPE-RDF-LIST:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_NORMALIZE_LANGUAGE" link="raptor2-section-option.html#RAPTOR-OPTION-NORMALIZE-LANGUAGE:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_NON_NFC_FATAL" link="raptor2-section-option.html#RAPTOR-OPTION-NON-NFC-FATAL:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WARN_OTHER_PARSETYPES" link="raptor2-section-option.html#RAPTOR-OPTION-WARN-OTHER-PARSETYPES:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_CHECK_RDF_ID" link="raptor2-section-option.html#RAPTOR-OPTION-CHECK-RDF-ID:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_RELATIVE_URIS" link="raptor2-section-option.html#RAPTOR-OPTION-RELATIVE-URIS:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WRITER_AUTO_INDENT" link="raptor2-section-option.html#RAPTOR-OPTION-WRITER-AUTO-INDENT:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WRITER_AUTO_EMPTY" link="raptor2-section-option.html#RAPTOR-OPTION-WRITER-AUTO-EMPTY:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WRITER_INDENT_WIDTH" link="raptor2-section-option.html#RAPTOR-OPTION-WRITER-INDENT-WIDTH:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WRITER_XML_VERSION" link="raptor2-section-option.html#RAPTOR-OPTION-WRITER-XML-VERSION:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WRITER_XML_DECLARATION" link="raptor2-section-option.html#RAPTOR-OPTION-WRITER-XML-DECLARATION:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_NO_NET" link="raptor2-section-option.html#RAPTOR-OPTION-NO-NET:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_RESOURCE_BORDER" link="raptor2-section-option.html#RAPTOR-OPTION-RESOURCE-BORDER:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_LITERAL_BORDER" link="raptor2-section-option.html#RAPTOR-OPTION-LITERAL-BORDER:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_BNODE_BORDER" link="raptor2-section-option.html#RAPTOR-OPTION-BNODE-BORDER:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_RESOURCE_FILL" link="raptor2-section-option.html#RAPTOR-OPTION-RESOURCE-FILL:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_LITERAL_FILL" link="raptor2-section-option.html#RAPTOR-OPTION-LITERAL-FILL:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_BNODE_FILL" link="raptor2-section-option.html#RAPTOR-OPTION-BNODE-FILL:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_HTML_TAG_SOUP" link="raptor2-section-option.html#RAPTOR-OPTION-HTML-TAG-SOUP:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_MICROFORMATS" link="raptor2-section-option.html#RAPTOR-OPTION-MICROFORMATS:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_HTML_LINK" link="raptor2-section-option.html#RAPTOR-OPTION-HTML-LINK:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WWW_TIMEOUT" link="raptor2-section-option.html#RAPTOR-OPTION-WWW-TIMEOUT:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WRITE_BASE_URI" link="raptor2-section-option.html#RAPTOR-OPTION-WRITE-BASE-URI:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL" link="raptor2-section-option.html#RAPTOR-OPTION-WWW-HTTP-CACHE-CONTROL:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WWW_HTTP_USER_AGENT" link="raptor2-section-option.html#RAPTOR-OPTION-WWW-HTTP-USER-AGENT:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_JSON_CALLBACK" link="raptor2-section-option.html#RAPTOR-OPTION-JSON-CALLBACK:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_JSON_EXTRA_DATA" link="raptor2-section-option.html#RAPTOR-OPTION-JSON-EXTRA-DATA:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_RSS_TRIPLES" link="raptor2-section-option.html#RAPTOR-OPTION-RSS-TRIPLES:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_ATOM_ENTRY_URI" link="raptor2-section-option.html#RAPTOR-OPTION-ATOM-ENTRY-URI:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_PREFIX_ELEMENTS" link="raptor2-section-option.html#RAPTOR-OPTION-PREFIX-ELEMENTS:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_STRICT" link="raptor2-section-option.html#RAPTOR-OPTION-STRICT:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WWW_CERT_FILENAME" link="raptor2-section-option.html#RAPTOR-OPTION-WWW-CERT-FILENAME:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WWW_CERT_TYPE" link="raptor2-section-option.html#RAPTOR-OPTION-WWW-CERT-TYPE:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WWW_CERT_PASSPHRASE" link="raptor2-section-option.html#RAPTOR-OPTION-WWW-CERT-PASSPHRASE:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_NO_FILE" link="raptor2-section-option.html#RAPTOR-OPTION-NO-FILE:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WWW_SSL_VERIFY_PEER" link="raptor2-section-option.html#RAPTOR-OPTION-WWW-SSL-VERIFY-PEER:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_WWW_SSL_VERIFY_HOST" link="raptor2-section-option.html#RAPTOR-OPTION-WWW-SSL-VERIFY-HOST:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES" link="raptor2-section-option.html#RAPTOR-OPTION-LOAD-EXTERNAL-ENTITIES:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_LAST" link="raptor2-section-option.html#RAPTOR-OPTION-LAST:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_VALUE_TYPE_BOOL" link="raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-BOOL:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_VALUE_TYPE_INT" link="raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-INT:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_VALUE_TYPE_STRING" link="raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-STRING:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_VALUE_TYPE_URI" link="raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-URI:CAPS"/>
+ <keyword type="constant" name="RAPTOR_OPTION_VALUE_TYPE_LAST" link="raptor2-section-option.html#RAPTOR-OPTION-VALUE-TYPE-LAST:CAPS"/>
+ <keyword type="constant" name="RAPTOR_GRAPH_MARK_START" link="raptor2-section-parser.html#RAPTOR-GRAPH-MARK-START:CAPS"/>
+ <keyword type="constant" name="RAPTOR_GRAPH_MARK_DECLARED" link="raptor2-section-parser.html#RAPTOR-GRAPH-MARK-DECLARED:CAPS"/>
+ <keyword type="constant" name="RAPTOR_TERM_TYPE_UNKNOWN" link="raptor2-section-triples.html#RAPTOR-TERM-TYPE-UNKNOWN:CAPS"/>
+ <keyword type="constant" name="RAPTOR_TERM_TYPE_URI" link="raptor2-section-triples.html#RAPTOR-TERM-TYPE-URI:CAPS"/>
+ <keyword type="constant" name="RAPTOR_TERM_TYPE_LITERAL" link="raptor2-section-triples.html#RAPTOR-TERM-TYPE-LITERAL:CAPS"/>
+ <keyword type="constant" name="RAPTOR_TERM_TYPE_BLANK" link="raptor2-section-triples.html#RAPTOR-TERM-TYPE-BLANK:CAPS"/>
+ </functions>
+</book>
diff --git a/docs/html/reference-manual.html b/docs/html/reference-manual.html
new file mode 100644
index 0000000..3fd101c
--- /dev/null
+++ b/docs/html/reference-manual.html
@@ -0,0 +1,165 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Part II. Raptor Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="prev" href="tutorial-serializer-example.html" title="Serializing example code">
+<link rel="next" href="raptor-parsers.html" title="Parsers in Raptor (syntax to triples)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-serializer-example.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor-parsers.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="reference-manual"></a>Part II. Raptor Reference Manual</h1></div></div></div>
+<div class="partintro">
+<div></div>
+<p>This part contains the Raptor Reference Manual
+ which comprehensively describes every class and function of the API.
+ </p>
+<p>The previous part contains the
+ <a class="link" href="tutorial.html" title="Part I. Raptor Tutorial">Raptor Tutorial</a>
+ explaining how to use the API parts.
+ </p>
+<p>For the latest information, see the
+ <a class="ulink" href="http://librdf.org/raptor/" target="_top">Raptor Home Page</a>
+ and the <a class="ulink" href="../README.html" target="_top">main document overview</a>
+ in this document tree.
+ </p>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="chapter"><a href="raptor-parsers.html">Parsers in Raptor (syntax to triples)</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="raptor-parsers.html#raptor-parsers-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="parser-grddl.html">GRDDL parser (name <code class="literal">grddl</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-guess.html">Guess parser (name <code class="literal">guess</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-json.html">JSON parser (name <code class="literal">json</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-ntriples.html">N-Triples parser (name <code class="literal">ntriples</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-rdfa.html">RDFa parser - (name <code class="literal">rdfa</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-rdfxml.html">RDF/XML parser - default (name <code class="literal">rdfxml</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-rss-tag-soup.html">RSS Tag Soup parser (name <code class="literal">rss-tag-soup</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-trig.html">TRiG parser (name <code class="literal">trig</code>)</a></span></dt>
+<dt><span class="section"><a href="parser-turtle.html">Turtle Terse RDF Triple Language parser (name <code class="literal">turtle</code>)</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="raptor-serializers.html">Serializers in Raptor (triples to syntax)</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="raptor-serializers.html#raptor-serializers-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="serializer-atom.html">Atom 1.0 serializer (name <code class="literal">atom</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-json.html">JSON serializers (name <code class="literal">json</code> and name <code class="literal">json-triples</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-nquads.html">N-Quads serializer - default (name <code class="literal">nquads</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-ntriples.html">N-Triples serializer - default (name <code class="literal">ntriples</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-rdfxml.html">RDF/XML serializer (name <code class="literal">rdfxml</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-rdfxml-abbrev.html">RDF/XML (Abbreviated) serializer (name <code class="literal">rdfxml-abbrev</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-rdfxml-xmp.html">RDF/XML (XMP Profile) serializer (name <code class="literal">rdfxml-xmp</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-turtle.html">Turtle serializer (name <code class="literal">turtle</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-rss-1-0.html">RSS 1.0 serializer (name <code class="literal">rss-1.0</code>)</a></span></dt>
+<dt><span class="section"><a href="serializer-dot.html">GraphViz dot serializer (name <code class="literal">dot</code>)</a></span></dt>
+</dl></dd>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-world.html">Initialisation</a></span><span class="refpurpose"> — Library startup, shutdown and configuration.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-general.html">General</a></span><span class="refpurpose"> — General library constants and utility functions</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-memory.html">Memory</a></span><span class="refpurpose"> — Memory handling functions</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-avltree.html">AVL Trees</a></span><span class="refpurpose"> — AVL Trees</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-constants.html">Constants</a></span><span class="refpurpose"> — Constant values and strings</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-option.html">Options</a></span><span class="refpurpose"> — Class options</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-iostream.html">I/O Stream</a></span><span class="refpurpose"> — Providing streaming I/O writing to files, strings or user code.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-locator.html">Locator</a></span><span class="refpurpose"> — Location information for errors, warnings and messages.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-parser.html">Parser</a></span><span class="refpurpose"> — RDF parsers - from a syntax to RDF triples</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-sax2.html">SAX2</a></span><span class="refpurpose"> — SAX2 XML Parsing API with namespaces and base URI support.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-sequence.html">Sequence</a></span><span class="refpurpose"> — Ordered sequence of items.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-serializer.html">Serializer</a></span><span class="refpurpose"> — RDF serializers - from RDF triples to a syntax</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-stringbuffer.html">String buffer</a></span><span class="refpurpose"> — Append-only strings.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-triples.html">Triples</a></span><span class="refpurpose"> — RDF Triples</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-unicode.html">Unicode</a></span><span class="refpurpose"> — Unicode and UTF-8 utility functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-uri.html">URI</a></span><span class="refpurpose"> — URI class and relative URI computation</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-www.html">WWW</a></span><span class="refpurpose"> — Retrieval of URI content from the web.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-xml-namespace.html">XML Namespaces</a></span><span class="refpurpose"> — Namespaces in XML include stacks of Namespaces</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-xml-qname.html">XML QName</a></span><span class="refpurpose"> — XML Namespace-qualified names.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="raptor2-section-xml.html">XML</a></span><span class="refpurpose"> — XML and XML Writer</span>
+</dt>
+<dt><span class="chapter"><a href="raptor-formats.html">Syntax Formats supported in Raptor</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="raptor-formats.html#raptor-formats-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="raptor-formats-types-by-parser.html">MIME Types by Parser</a></span></dt>
+<dt><span class="section"><a href="raptor-formats-types-by-serializer.html">MIME Types by Serializer</a></span></dt>
+<dt><span class="section"><a href="raptor-formats-types-index.html">MIME Types Index</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="raptor2-changes.html">API Changes</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="raptor2-changes.html#raptor2-changes-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="raptor2-changes-2-0-7-to-2-0-8.html">Changes between raptor2 2.0.7 and 2.0.8</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-7-to-2-0-8.html#raptor2-changes-new-2-0-7-to-2-0-8">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-2-0-6-to-2-0-7.html">Changes between raptor2 2.0.6 and 2.0.7</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-6-to-2-0-7.html#raptor2-changes-new-2-0-6-to-2-0-7">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-2-0-5-to-2-0-6.html">Changes between raptor2 2.0.5 and 2.0.6</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-5-to-2-0-6.html#raptor2-changes-new-2-0-5-to-2-0-6">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-2-0-4-to-2-0-5.html">Changes between raptor2 2.0.4 and 2.0.5</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-4-to-2-0-5.html#raptor2-changes-new-2-0-4-to-2-0-5">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-2-0-3-to-2-0-4.html">Changes between raptor2 2.0.3 and 2.0.4</a></span></dt>
+<dd><dl><dt><span class="section"><a href="raptor2-changes-2-0-3-to-2-0-4.html#raptor2-changes-new-2-0-3-to-2-0-4">New functions, types and enums</a></span></dt></dl></dd>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html">Changes between raptor2 1.4.21 and 2.0.0</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-new-1-4-21-to-2-0-0">New functions, types and enums</a></span></dt>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-deleted-1-4-21-to-2-0-0">Deleted functions, types and enums</a></span></dt>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-renamed-1-4-21-to-2-0-0">Renamed function and enums</a></span></dt>
+<dt><span class="section"><a href="raptor2-changes-1-4-21-to-2-0-0.html#raptor2-changes-changed-1-4-21-to-2-0-0">Changed functions and types</a></span></dt>
+</dl></dd>
+</dl></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/restrict-parser-network-access.html b/docs/html/restrict-parser-network-access.html
new file mode 100644
index 0000000..f10202e
--- /dev/null
+++ b/docs/html/restrict-parser-network-access.html
@@ -0,0 +1,153 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Restrict parser network access</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parser-content.html" title="Provide syntax content to parse">
+<link rel="next" href="tutorial-parser-static-info.html" title="Querying parser static information">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parser-content.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parser-static-info.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="restrict-parser-network-access"></a>Restrict parser network access</h2></div></div></div>
+<p>
+Parsing can cause network requests to be performed, especially
+if a URI is given as an argument such as with
+<a class="link" href="raptor2-section-parser.html#raptor-parser-parse-uri" title="raptor_parser_parse_uri ()"><code class="function">raptor_parser_parse_uri()</code></a>
+however there may also be indirect requests such as with the
+GRDDL parser that retrieves URIs depending on the results of
+initial parse requests. The URIs requested may not be wanted
+to be fetched or need to be filtered, and this can be done in
+three ways.
+</p>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tutorial-filter-network-with-feature"></a>Filtering parser network requests with option <a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-NO-NET:CAPS"><code class="literal">RAPTOR_OPTION_NO_NET</code></a>
+</h3></div></div></div>
+<p>
+The parser option
+<a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-NO-NET:CAPS"><code class="literal">RAPTOR_OPTION_NO_NET</code></a>
+can be set with
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-option" title="raptor_parser_set_option ()"><code class="function">raptor_parser_set_option()</code></a>
+and forbids all network requests. There is no customisation with
+this approach, for that see the URI filter in the next section.
+</p>
+<pre class="programlisting">
+ rdf_parser = raptor_new_parser(world, "rdfxml");
+
+ /* Disable internal network requests */
+ raptor_parser_set_option(rdf_parser, RAPTOR_OPTION_NO_NET, NULL, 1);
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tutorial-filter-network-www-uri-filter"></a>Filtering parser network requests with <a class="link" href="raptor2-section-www.html#raptor-www-set-uri-filter" title="raptor_www_set_uri_filter ()"><code class="function">raptor_www_set_uri_filter()</code></a>
+</h3></div></div></div>
+<p>
+The
+<a class="link" href="raptor2-section-www.html#raptor-www-set-uri-filter" title="raptor_www_set_uri_filter ()"><code class="function">raptor_www_set_uri_filter()</code></a>
+
+allows setting of a filtering function to operate on all URIs
+retrieved by a WWW connection. This connection can be used in
+parsing when operated by hand.
+</p>
+<pre class="programlisting">
+void write_bytes_handler(raptor_www* www, void *user_data,
+ const void *ptr, size_t size, size_t nmemb) {
+{
+ raptor_parser* rdf_parser = (raptor_parser*)user_data;
+
+ raptor_parser_parse_chunk(rdf_parser, (unsigned char*)ptr, size*nmemb, 0);
+}
+
+int uri_filter(void* filter_user_data, raptor_uri* uri) {
+ /* return non-0 to forbid the request */
+}
+
+int main(int argc, char *argv[]) {
+ ...
+
+ rdf_parser = raptor_new_parser(world, "rdfxml");
+ www = raptor_new_www(world);
+
+ /* filter all URI requests */
+ raptor_www_set_uri_filter(www, uri_filter, filter_user_data);
+
+ /* make WWW write bytes to parser */
+ raptor_www_set_write_bytes_handler(www, write_bytes_handler, rdf_parser);
+
+ raptor_parser_parse_start(rdf_parser, uri);
+ raptor_www_fetch(www, uri);
+ /* tell the parser that we are done */
+ raptor_parser_parse_chunk(rdf_parser, NULL, 0, 1);
+
+ raptor_free_www(www);
+ raptor_free_parser(rdf_parser);
+
+ ...
+}
+
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tutorial-filter-network-parser-uri-filter"></a>Filtering parser network requests with <a class="link" href="raptor2-section-parser.html#raptor-parser-set-uri-filter" title="raptor_parser_set_uri_filter ()"><code class="function">raptor_parser_set_uri_filter()</code></a>
+</h3></div></div></div>
+<p>
+The
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-uri-filter" title="raptor_parser_set_uri_filter ()"><code class="function">raptor_parser_set_uri_filter()</code></a>
+allows setting of a filtering function to operate on all URIs that
+the parser sees. This operates on the internal raptor_www object
+used inside parsing to retrieve URIs, similar to that described in
+the <a class="link" href="restrict-parser-network-access.html#tutorial-filter-network-www-uri-filter" title="Filtering parser network requests with raptor_www_set_uri_filter()">previous section</a>.
+</p>
+<pre class="programlisting">
+ int uri_filter(void* filter_user_data, raptor_uri* uri) {
+ /* return non-0 to forbid the request */
+ }
+
+ rdf_parser = raptor_new_parser(world, "rdfxml");
+
+ raptor_parser_set_uri_filter(rdf_parser, uri_filter, filter_user_data);
+
+ /* parse content as normal */
+ raptor_parser_parse_uri(rdf_parser, uri, base_uri);
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tutorial-filter-network-parser-timeout"></a>Setting timeout for parser network requests with option <a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WWW-TIMEOUT:CAPS"><code class="literal">RAPTOR_OPTION_WWW_TIMEOUT</code></a>
+</h3></div></div></div>
+<p>If the value of option
+<a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-WWW-TIMEOUT:CAPS"><code class="literal">RAPTOR_OPTION_WWW_TIMEOUT</code></a>
+if set to a number &gt;0, it is used as the timeout in seconds
+for retrieving of URIs during parsing (primarily for GRDDL).
+This uses
+<a class="link" href="raptor2-section-www.html#raptor-www-set-connection-timeout" title="raptor_www_set_connection_timeout ()"><code class="function">raptor_www_set_connection_timeout()</code></a>
+internally.
+</p>
+<pre class="programlisting">
+ rdf_parser = raptor_new_parser(world, "grddl");
+
+ /* set internal URI retrieval maximum time to 5 seconds */
+ raptor_parser_set_option(rdf_parser, RAPTOR_OPTION_WWW_TIMEOUT, NULL, 5);
+</pre>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/right.png b/docs/html/right.png
new file mode 100644
index 0000000..92832e3
--- /dev/null
+++ b/docs/html/right.png
Binary files differ
diff --git a/docs/html/serializer-atom.html b/docs/html/serializer-atom.html
new file mode 100644
index 0000000..e43ebaf
--- /dev/null
+++ b/docs/html/serializer-atom.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Atom 1.0 serializer (name atom)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-serializers.html" title="Serializers in Raptor (triples to syntax)">
+<link rel="prev" href="raptor-serializers.html" title="Serializers in Raptor (triples to syntax)">
+<link rel="next" href="serializer-json.html" title="JSON serializers (name json and name json-triples)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="raptor-serializers.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-serializers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="serializer-json.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="serializer-atom"></a>Atom 1.0 serializer (name <code class="literal">atom</code>)</h2></div></div></div>
+<p>A serializer to the Atom 1.0 syndication format defined in IETF
+<a class="ulink" href="http://www.ietf.org/rfc/rfc4287.txt" target="_top">RFC 4287</a>.
+This serializes an RDF graph written in the RSS 1.0 data model
+to Atom 1.0 plus optionally writes extra RDF triples.
+</p>
+<p>
+The extra RDF triples are written into an at:md metadata block, along
+with at:feedmap and at:entrymap elements to describe the RSS 1.0
+predicate to Atom 1.0 elements mappings for the feed and entry blocks
+respecively. The extra triples are enabled when serializer option
+'rssTriples' is set to string value 'atom-triples'.
+</p>
+<p>
+If no atom triples content type field (at:contentType predicate) is
+given, the type is set to 'text/html' when writing out an
+atom:content field in Atom 1.0 format.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/serializer-dot.html b/docs/html/serializer-dot.html
new file mode 100644
index 0000000..cbf7d46
--- /dev/null
+++ b/docs/html/serializer-dot.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GraphViz dot serializer (name dot)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-serializers.html" title="Serializers in Raptor (triples to syntax)">
+<link rel="prev" href="serializer-rss-1-0.html" title="RSS 1.0 serializer (name rss-1.0)">
+<link rel="next" href="raptor2-section-world.html" title="Initialisation">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="serializer-rss-1-0.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-serializers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="raptor2-section-world.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="serializer-dot"></a>GraphViz dot serializer (name <code class="literal">dot</code>)</h2></div></div></div>
+<p>A serializer to the
+<a class="ulink" href="http://www.graphviz.org/" target="_top">GraphViz</a> DOT format.
+</p>
+<p>This serializer has a set of associated serializer options
+that may be set to customise the output colors using
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer-set-option" title="raptor_serializer_set_option ()"><code class="function">raptor_serializer_set_option()</code></a>
+with the appropriate option name and value as given below.
+</p>
+<pre class="programlisting">
+RAPTOR_OPTION_RESOURCE_BORDER Border color of resource nodes
+RAPTOR_OPTION_LITERAL_BORDER Border color of literal nodes
+RAPTOR_OPTION_BNODE_BORDER Border color of blank nodes
+RAPTOR_OPTION_RESOURCE_FILL Fill color of resource nodes
+RAPTOR_OPTION_LITERAL_FILL Fill color of literal nodes
+RAPTOR_OPTION_BNODE_FILL Fill color of blank nodes
+</pre>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/serializer-json.html b/docs/html/serializer-json.html
new file mode 100644
index 0000000..23e98a8
--- /dev/null
+++ b/docs/html/serializer-json.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>JSON serializers (name json and name json-triples)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-serializers.html" title="Serializers in Raptor (triples to syntax)">
+<link rel="prev" href="serializer-atom.html" title="Atom 1.0 serializer (name atom)">
+<link rel="next" href="serializer-nquads.html" title="N-Quads serializer - default (name nquads)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="serializer-atom.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-serializers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="serializer-nquads.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="serializer-json"></a>JSON serializers (name <code class="literal">json</code> and name <code class="literal">json-triples</code>)</h2></div></div></div>
+<p>Two serializers that write JSON in either a resource-centric
+format with name <code class="literal">json</code> and in a triple-dump format
+with name <code class="literal">json-triples</code>. The resource-centric
+format is based on the Talis
+<a class="ulink" href="http://n2.talis.com/wiki/RDF_JSON_Specification" target="_top">RDF/JSON</a>
+design and the triple-dump format based on the SPARQL query results in JSON
+design.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/serializer-nquads.html b/docs/html/serializer-nquads.html
new file mode 100644
index 0000000..ab0e8e3
--- /dev/null
+++ b/docs/html/serializer-nquads.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>N-Quads serializer - default (name nquads)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-serializers.html" title="Serializers in Raptor (triples to syntax)">
+<link rel="prev" href="serializer-json.html" title="JSON serializers (name json and name json-triples)">
+<link rel="next" href="serializer-ntriples.html" title="N-Triples serializer - default (name ntriples)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="serializer-json.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-serializers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="serializer-ntriples.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="serializer-nquads"></a>N-Quads serializer - default (name <code class="literal">nquads</code>)</h2></div></div></div>
+<p>A serializer to the
+<a class="ulink" href="http://sw.deri.org/2008/07/n-quads/" target="_top">N-Quads</a>
+extension to N-Triples, providing an optional 4th context graph term
+at the end of the line when a named graph is associated with a triple
+(the triple is contained in a named graph). This is useful for seeing the
+output of named graphs or dealing with SPARQL Datasets.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/serializer-ntriples.html b/docs/html/serializer-ntriples.html
new file mode 100644
index 0000000..41c4e27
--- /dev/null
+++ b/docs/html/serializer-ntriples.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>N-Triples serializer - default (name ntriples)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-serializers.html" title="Serializers in Raptor (triples to syntax)">
+<link rel="prev" href="serializer-nquads.html" title="N-Quads serializer - default (name nquads)">
+<link rel="next" href="serializer-rdfxml.html" title="RDF/XML serializer (name rdfxml)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="serializer-nquads.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-serializers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="serializer-rdfxml.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="serializer-ntriples"></a>N-Triples serializer - default (name <code class="literal">ntriples</code>)</h2></div></div></div>
+<p>A serializer to the
+<a class="ulink" href="http://www.w3.org/TR/rdf-testcases/#ntriples" target="_top">N-Triples</a>
+syntax as used by the
+<a class="ulink" href="http://www.w3.org/2001/sw/RDFCore/" target="_top">W3C RDF Core working group</a>
+for the <a class="ulink" href="http://www.w3.org/TR/rdf-testcases/" target="_top">RDF Test Cases</a>.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/serializer-rdfxml-abbrev.html b/docs/html/serializer-rdfxml-abbrev.html
new file mode 100644
index 0000000..53c1637
--- /dev/null
+++ b/docs/html/serializer-rdfxml-abbrev.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>RDF/XML (Abbreviated) serializer (name rdfxml-abbrev)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-serializers.html" title="Serializers in Raptor (triples to syntax)">
+<link rel="prev" href="serializer-rdfxml.html" title="RDF/XML serializer (name rdfxml)">
+<link rel="next" href="serializer-rdfxml-xmp.html" title="RDF/XML (XMP Profile) serializer (name rdfxml-xmp)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="serializer-rdfxml.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-serializers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="serializer-rdfxml-xmp.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="serializer-rdfxml-abbrev"></a>RDF/XML (Abbreviated) serializer (name <code class="literal">rdfxml-abbrev</code>)</h2></div></div></div>
+<p>An RDF/XML serializer using several of the RDF/XML
+abbreviations to provide a more compact readable format, at the cost
+of some pre-processing. This is suitable for small documents.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/serializer-rdfxml-xmp.html b/docs/html/serializer-rdfxml-xmp.html
new file mode 100644
index 0000000..b734dd6
--- /dev/null
+++ b/docs/html/serializer-rdfxml-xmp.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>RDF/XML (XMP Profile) serializer (name rdfxml-xmp)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-serializers.html" title="Serializers in Raptor (triples to syntax)">
+<link rel="prev" href="serializer-rdfxml-abbrev.html" title="RDF/XML (Abbreviated) serializer (name rdfxml-abbrev)">
+<link rel="next" href="serializer-turtle.html" title="Turtle serializer (name turtle)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="serializer-rdfxml-abbrev.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-serializers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="serializer-turtle.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="serializer-rdfxml-xmp"></a>RDF/XML (XMP Profile) serializer (name <code class="literal">rdfxml-xmp</code>)</h2></div></div></div>
+<p>A serializer to the Adobe XMP profile of RDF/XML suitable for
+embedding inside an external document. Embedding means that the
+XML header is omitted, wheras for other XML serializings, it is
+always emitted.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/serializer-rdfxml.html b/docs/html/serializer-rdfxml.html
new file mode 100644
index 0000000..e7cbf9b
--- /dev/null
+++ b/docs/html/serializer-rdfxml.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>RDF/XML serializer (name rdfxml)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-serializers.html" title="Serializers in Raptor (triples to syntax)">
+<link rel="prev" href="serializer-ntriples.html" title="N-Triples serializer - default (name ntriples)">
+<link rel="next" href="serializer-rdfxml-abbrev.html" title="RDF/XML (Abbreviated) serializer (name rdfxml-abbrev)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="serializer-ntriples.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-serializers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="serializer-rdfxml-abbrev.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="serializer-rdfxml"></a>RDF/XML serializer (name <code class="literal">rdfxml</code>)</h2></div></div></div>
+<p>A serializer to the standard
+<a class="ulink" href="http://www.w3.org/TR/rdf-syntax-grammar/" target="_top">RDF/XML syntax</a>
+as revised by the
+<a class="ulink" href="http://www.w3.org/2001/sw/RDFCore/" target="_top">W3C RDF Core working group</a>.
+This writes a plain triple-based RDF/XML serialization with no
+optimisation or pretty-printing.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/serializer-rss-1-0.html b/docs/html/serializer-rss-1-0.html
new file mode 100644
index 0000000..42a0d7a
--- /dev/null
+++ b/docs/html/serializer-rss-1-0.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>RSS 1.0 serializer (name rss-1.0)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-serializers.html" title="Serializers in Raptor (triples to syntax)">
+<link rel="prev" href="serializer-turtle.html" title="Turtle serializer (name turtle)">
+<link rel="next" href="serializer-dot.html" title="GraphViz dot serializer (name dot)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="serializer-turtle.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-serializers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="serializer-dot.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="serializer-rss-1-0"></a>RSS 1.0 serializer (name <code class="literal">rss-1.0</code>)</h2></div></div></div>
+<p>A serializer to the
+<a class="ulink" href="http://purl.org/rss/1.0/spec" target="_top">RDF Site Summary (RSS) 1.0</a>
+format for describing a syndication feed of items.
+</p>
+<p>By default this only serializes the RDF triples that describe
+the RSS channel and items found. If serialiser option 'rssTriples'
+is set to value 'rdf-xml' then any additional triples found will
+be included in the channel or item output.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/serializer-turtle.html b/docs/html/serializer-turtle.html
new file mode 100644
index 0000000..7772569
--- /dev/null
+++ b/docs/html/serializer-turtle.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Turtle serializer (name turtle)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="raptor-serializers.html" title="Serializers in Raptor (triples to syntax)">
+<link rel="prev" href="serializer-rdfxml-xmp.html" title="RDF/XML (XMP Profile) serializer (name rdfxml-xmp)">
+<link rel="next" href="serializer-rss-1-0.html" title="RSS 1.0 serializer (name rss-1.0)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="serializer-rdfxml-xmp.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="raptor-serializers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="serializer-rss-1-0.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="serializer-turtle"></a>Turtle serializer (name <code class="literal">turtle</code>)</h2></div></div></div>
+<p>A serializer for the
+<a class="ulink" href="http://www.dajobe.org/2004/01/turtle/" target="_top">Turtle Terse RDF Triple Language</a>
+syntax, designed as a useful subset of
+<a class="ulink" href="http://www.w3.org/DesignIssues/Notation3" target="_top">Notation 3</a>.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/style.css b/docs/html/style.css
new file mode 100644
index 0000000..d6f6c26
--- /dev/null
+++ b/docs/html/style.css
@@ -0,0 +1,266 @@
+.synopsis, .classsynopsis
+{
+ /* tango:aluminium 1/2 */
+ background: #eeeeec;
+ border: solid 1px #d3d7cf;
+ padding: 0.5em;
+}
+.programlisting
+{
+ /* tango:sky blue 0/1 */
+ background: #e6f3ff;
+ border: solid 1px #729fcf;
+ padding: 0.5em;
+}
+.variablelist
+{
+ padding: 4px;
+ margin-left: 3em;
+}
+.variablelist td:first-child
+{
+ vertical-align: top;
+}
+
+@media screen {
+ sup a.footnote
+ {
+ position: relative;
+ top: 0em ! important;
+
+ }
+ /* this is needed so that the local anchors are displayed below the naviagtion */
+ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
+ {
+ display: inline-block;
+ position: relative;
+ top:-5em;
+ }
+ /* this seems to be a bug in the xsl style sheets when generating indexes */
+ div.index div.index
+ {
+ top: 0em;
+ }
+ /* make space for the fixed navigation bar and add space at the bottom so that
+ * link targets appear somewhat close to top
+ */
+ body
+ {
+ padding-top: 3.2em;
+ padding-bottom: 20em;
+ }
+ /* style and size the navigation bar */
+ table.navigation#top
+ {
+ position: fixed;
+ /* tango:scarlet red 0/1 */
+ background: #ffe6e6;
+ border: solid 1px #ef2929;
+ margin-top: 0;
+ margin-bottom: 0;
+ top: 0;
+ left: 0;
+ height: 3em;
+ z-index: 10;
+ }
+ .navigation a, .navigation a:visited
+ {
+ /* tango:scarlet red 3 */
+ color: #a40000;
+ }
+ .navigation a:hover
+ {
+ /* tango:scarlet red 1 */
+ color: #ef2929;
+ }
+ td.shortcuts
+ {
+ /* tango:scarlet red 1 */
+ color: #ef2929;
+ font-size: 80%;
+ white-space: nowrap;
+ }
+}
+@media print {
+ table.navigation {
+ visibility: collapse;
+ display: none;
+ }
+ div.titlepage table.navigation {
+ visibility: visible;
+ display: table;
+ /* tango:scarlet red 0/1 */
+ background: #ffe6e6;
+ border: solid 1px #ef2929;
+ margin-top: 0;
+ margin-bottom: 0;
+ top: 0;
+ left: 0;
+ height: 3em;
+ }
+}
+
+.navigation .title
+{
+ font-size: 200%;
+}
+
+div.gallery-float
+{
+ float: left;
+ padding: 10px;
+}
+div.gallery-float img
+{
+ border-style: none;
+}
+div.gallery-spacer
+{
+ clear: both;
+}
+
+a, a:visited
+{
+ text-decoration: none;
+ /* tango:sky blue 2 */
+ color: #3465a4;
+}
+a:hover
+{
+ text-decoration: underline;
+ /* tango:sky blue 1 */
+ color: #729fcf;
+}
+
+div.table table
+{
+ border-collapse: collapse;
+ border-spacing: 0px;
+ /* tango:aluminium 3 */
+ border: solid 1px #babdb6;
+}
+
+div.table table td, div.table table th
+{
+ /* tango:aluminium 3 */
+ border: solid 1px #babdb6;
+ padding: 3px;
+ vertical-align: top;
+}
+
+div.table table th
+{
+ /* tango:aluminium 2 */
+ background-color: #d3d7cf;
+}
+
+hr
+{
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ background: #babdb6;
+ border: none 0px;
+ height: 1px;
+ clear: both;
+}
+
+.footer
+{
+ padding-top: 3.5em;
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ text-align: center;
+ font-size: 80%;
+}
+
+.warning
+{
+ /* tango:orange 0/1 */
+ background: #ffeed9;
+ border-color: #ffb04f;
+}
+.note
+{
+ /* tango:chameleon 0/0.5 */
+ background: #d8ffb2;
+ border-color: #abf562;
+}
+.note, .warning
+{
+ padding: 0.5em;
+ border-width: 1px;
+ border-style: solid;
+}
+.note h3, .warning h3
+{
+ margin-top: 0.0em
+}
+.note p, .warning p
+{
+ margin-bottom: 0.0em
+}
+
+/* blob links */
+h2 .extralinks, h3 .extralinks
+{
+ float: right;
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ font-size: 80%;
+ font-weight: normal;
+}
+
+.annotation
+{
+ /* tango:aluminium 5 */
+ color: #555753;
+ font-size: 80%;
+ font-weight: normal;
+}
+
+/* code listings */
+
+.listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */
+.listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */
+.listing_code .programlisting .function { color: #000000; font-weight: bold; }
+.listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */
+.listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */
+.listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */
+.listing_code .programlisting .normal { color: #000000; }
+.listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */
+.listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */
+.listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */
+.listing_code .programlisting .type { color: #000000; }
+.listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */
+.listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */
+
+.listing_frame {
+ /* tango:sky blue 1 */
+ border: solid 1px #729fcf;
+ padding: 0px;
+}
+
+.listing_lines, .listing_code {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0.5em;
+}
+.listing_lines {
+ /* tango:sky blue 0.5 */
+ background: #a6c5e3;
+ /* tango:aluminium 6 */
+ color: #2e3436;
+}
+.listing_code {
+ /* tango:sky blue 0 */
+ background: #e6f3ff;
+}
+.listing_code .programlisting {
+ /* override from previous */
+ border: none 0px;
+ padding: 0px;
+}
+.listing_lines pre, .listing_code pre {
+ margin: 0px;
+}
+
diff --git a/docs/html/tutorial-initialising-finishing.html b/docs/html/tutorial-initialising-finishing.html
new file mode 100644
index 0000000..b5c31cd
--- /dev/null
+++ b/docs/html/tutorial-initialising-finishing.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Initialising and Finishing using the Library</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial.html" title="Part I. Raptor Tutorial">
+<link rel="prev" href="tutorial.html" title="Part I. Raptor Tutorial">
+<link rel="next" href="tutorial-querying-functionality.html" title="Listing built-in functionality">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-querying-functionality.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="tutorial-initialising-finishing"></a>Initialising and Finishing using the Library</h2></div></div></div>
+<p>Raptor requires initialising a raptor_world object before using
+any of the classes which take the world object as an argument in
+their constructors. The function to make the world object is
+raptor_new_world() and the destructor raptor_free_world().
+</p>
+<pre class="programlisting">
+ raptor_world* world;
+ world = raptor_new_world();
+ ...
+ raptor_free_world(world);
+</pre>
+<p>
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parse-strictness.html b/docs/html/tutorial-parse-strictness.html
new file mode 100644
index 0000000..e0a2547
--- /dev/null
+++ b/docs/html/tutorial-parse-strictness.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Set the parsing strictness</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parser-set-namespace-handler.html" title="Set namespace declared handler">
+<link rel="next" href="tutorial-parser-content.html" title="Provide syntax content to parse">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parser-set-namespace-handler.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parser-content.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parse-strictness"></a>Set the parsing strictness</h2></div></div></div>
+<p>
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-option" title="raptor_parser_set_option ()"><code class="function">raptor_parser_set_option()</code></a>
+with option
+<a class="link" href="raptor2-section-option.html#RAPTOR-OPTION-STRICT:CAPS"><code class="literal">RAPTOR_OPTION_STRICT</code></a>
+allows setting of the parser strictness flag. The default is lax parsing,
+accepting older or deprecated syntax forms but may generate a warning. Setting
+to non-0 (true) will cause parser errors to be generated in these cases.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parser-abort.html b/docs/html/tutorial-parser-abort.html
new file mode 100644
index 0000000..2a6b00d
--- /dev/null
+++ b/docs/html/tutorial-parser-abort.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Aborting parsing</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parser-runtime-info.html" title="Querying parser run-time information">
+<link rel="next" href="tutorial-parser-destroy.html" title="Destroy the parser">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parser-runtime-info.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parser-destroy.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parser-abort"></a>Aborting parsing</h2></div></div></div>
+<p>
+<a class="link" href="raptor2-section-parser.html#raptor-parser-parse-abort" title="raptor_parser_parse_abort ()"><code class="function">raptor_parser_parse_abort()</code></a>
+allows the current parsing to be aborted, at which point no further
+triples will be passed to callbacks and the parser will attempt to
+return control to the application. This is most useful when called
+inside a handler function which allows the application to decide to stop
+an active parsing.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parser-content.html b/docs/html/tutorial-parser-content.html
new file mode 100644
index 0000000..8a18a5f
--- /dev/null
+++ b/docs/html/tutorial-parser-content.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Provide syntax content to parse</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parse-strictness.html" title="Set the parsing strictness">
+<link rel="next" href="restrict-parser-network-access.html" title="Restrict parser network access">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parse-strictness.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="restrict-parser-network-access.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parser-content"></a>Provide syntax content to parse</h2></div></div></div>
+<p>The operation of turning syntax into RDF triples has several
+alternatives from functions that do most of the work starting from a
+URI to functions that allow passing in data buffers.</p>
+<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Parsing and MIME Types</h3>
+The mime type of the retrieved content is not used to choose
+a parser unless the parser is of type <code class="literal">guess</code>.
+The guess parser will send an <code class="literal">Accept:</code> header
+for all known parser syntax mime types (if a URI request is made)
+and based on the response, including the identifiers used,
+pick the appropriate parser to execute. See
+<a class="link" href="raptor2-section-world.html#raptor-world-guess-parser-name" title="raptor_world_guess_parser_name ()"><code class="function">raptor_world_guess_parser_name()</code></a>
+for a full discussion of the inputs to the guessing.
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="parse-from-uri"></a>Parse the content from a URI (<a class="link" href="raptor2-section-parser.html#raptor-parser-parse-uri" title="raptor_parser_parse_uri ()"><code class="function">raptor_parser_parse_uri()</code></a>)</h3></div></div></div>
+<p>The URI is resolved and the content read from it and passed to
+the parser:
+</p>
+<pre class="programlisting">
+ raptor_parser_parse_uri(rdf_parser, uri, base_uri);
+</pre>
+<p>
+The <span class="emphasis"><em>base_uri</em></span> is optional (can be
+<code class="literal">NULL</code>) and will default to the
+<span class="emphasis"><em>uri</em></span>.
+</p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="parse-from-www"></a>Parse the content of a URI using an existing WWW connection (<a class="link" href="raptor2-section-parser.html#raptor-parser-parse-uri-with-connection" title="raptor_parser_parse_uri_with_connection ()"><code class="function">raptor_parser_parse_uri_with_connection()</code></a>)</h3></div></div></div>
+<p>The URI is resolved using an existing WWW connection (for
+example a libcurl CURL handle) to allow for any existing
+WWW configuration to be reused. See
+<a class="link" href="raptor2-section-www.html#raptor-new-www-with-connection" title="raptor_new_www_with_connection ()"><code class="function">raptor_new_www_with_connection</code></a>
+for full details of how this works. The content is then read from the
+result of resolving the URI:
+</p>
+<pre class="programlisting">
+ raptor_parser_parse_uri_with_connection(rdf_parser, uri, base_uri, connection);
+</pre>
+<p>
+The <span class="emphasis"><em>base_uri</em></span> is optional (can be
+<code class="literal">NULL</code>) and will default to the
+<span class="emphasis"><em>uri</em></span>.
+</p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="parse-from-filehandle"></a>Parse the content of a C <code class="literal">FILE*</code> (<a class="link" href="raptor2-section-parser.html#raptor-parser-parse-file-stream" title="raptor_parser_parse_file_stream ()"><code class="function">raptor_parser_parse_file_stream()</code></a>)</h3></div></div></div>
+<p>Parsing can read from a C STDIO file handle:
+</p>
+<pre class="programlisting">
+ stream = fopen(filename, "rb");
+ raptor_parser_parse_file_stream(rdf_parser, stream, filename, base_uri);
+ fclose(stream);
+</pre>
+<p>
+This function can use take an optional <span class="emphasis"><em>filename</em></span> which
+is used in locator error messages.
+The <span class="emphasis"><em>base_uri</em></span> may be required by some parsers
+and if <code class="literal">NULL</code> will cause the parsing to fail.
+This requirement can be checked by looking at the flags in
+the parser description using
+<a class="link" href="raptor2-section-world.html#raptor-world-get-parser-description" title="raptor_world_get_parser_description ()"><code class="function">raptor_world_get_parser_description()</code></a>.
+</p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="parse-from-file-uri"></a>Parse the content of a file URI (<a class="link" href="raptor2-section-parser.html#raptor-parser-parse-file" title="raptor_parser_parse_file ()"><code class="function">raptor_parser_parse_file()</code></a>)</h3></div></div></div>
+<p>Parsing can read from a URI known to be a <code class="literal">file:</code> URI:
+</p>
+<pre class="programlisting">
+ raptor_parser_parse_file(rdf_parser, file_uri, base_uri);
+</pre>
+<p>
+This function requires that the <span class="emphasis"><em>file_uri</em></span> is
+a file URI, that is
+<code class="literal">raptor_uri_uri_string_is_file_uri( raptor_uri_as_string( file_uri) )</code>
+must be true.
+The <span class="emphasis"><em>base_uri</em></span> may be required by some parsers
+and if <code class="literal">NULL</code> will cause the parsing to fail.
+</p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="parse-from-chunks"></a>Parse chunks of syntax content provided by the application (<a class="link" href="raptor2-section-parser.html#raptor-parser-parse-start" title="raptor_parser_parse_start ()"><code class="function">raptor_parser_parse_start()</code></a> and <a class="link" href="raptor2-section-parser.html#raptor-parser-parse-chunk" title="raptor_parser_parse_chunk ()"><code class="function">raptor_parser_parse_chunk()</code></a>)</h3></div></div></div>
+<p>
+</p>
+<pre class="programlisting">
+ raptor_parser_parse_start(rdf_parser, base_uri);
+ while(/* not finished getting content */) {
+ unsigned char *buffer;
+ size_t buffer_len;
+
+ /* ... obtain some syntax content in buffer of size buffer_len bytes ... */
+
+ raptor_parser_parse_chunk(rdf_parser, buffer, buffer_len, 0);
+ }
+ raptor_parser_parse_chunk(rdf_parser, NULL, 0, 1); /* no data and is_end = 1 */
+</pre>
+<p>
+The <span class="emphasis"><em>base_uri</em></span> argument to
+<a class="link" href="raptor2-section-parser.html#raptor-parser-parse-start" title="raptor_parser_parse_start ()"><code class="function">raptor_parser_parse_start()</code></a>
+may be required by some parsers
+and if <code class="literal">NULL</code> will cause the parsing to fail.
+</p>
+<p>On the last
+<a class="link" href="raptor2-section-parser.html#raptor-parser-parse-chunk" title="raptor_parser_parse_chunk ()"><code class="function">raptor_parser_parse_chunk()</code></a>
+call, or after the loop is ended, the <code class="literal">is_end</code>
+parameter must be set to non-0. Content can be passed with the
+final call. If no content is present at the end (such as in
+some kind of <span class="quote">“<span class="quote">end of file</span>â€</span> situation), then a 0-length
+buffer_len or NULL buffer can be used.</p>
+<p>The minimal case is an entire parse in one chunk as follows:</p>
+<pre class="programlisting">
+ raptor_parser_parse_start(rdf_parser, base_uri);
+ raptor_parser_parse_chunk(rdf_parser, buffer, buffer_len, 1); /* is_end = 1 */
+</pre>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parser-create.html b/docs/html/tutorial-parser-create.html
new file mode 100644
index 0000000..1ba37fc
--- /dev/null
+++ b/docs/html/tutorial-parser-create.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Create the Parser object</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="next" href="tutorial-parser-features.html" title="Parser options">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parsing.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parser-features.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parser-create"></a>Create the Parser object</h2></div></div></div>
+<p>The parser can be created directly from a known name such as
+<code class="literal">rdfxml</code> for the W3C Recommendation RDF/XML syntax:
+</p>
+<pre class="programlisting">
+ raptor_parser* rdf_parser;
+
+ rdf_parser = raptor_new_parser(world, "rdfxml");
+</pre>
+<p>
+or the name can be discovered from an <span class="emphasis"><em>description</em></span>
+as discussed in <a class="link" href="tutorial-querying-functionality.html" title="Listing built-in functionality">Querying Functionality</a>
+</p>
+<p>The parser can also be created by identifying the syntax by a
+URI, specifying the syntax by a MIME Type, providng an identifier for
+the content such as filename or URI string or giving some initial
+content bytes that can be used to guess.
+Using the
+<a class="link" href="raptor2-section-parser.html#raptor-new-parser-for-content" title="raptor_new_parser_for_content ()"><code class="function">raptor_new_parser_for_content()</code></a>
+function, all of these can be given as optional parameters, using NULL
+or 0 for undefined parameters. The constructor will then use as much of
+this information as possible.
+</p>
+<pre class="programlisting">
+ raptor_parser* rdf_parser;
+</pre>
+<p>Create a parser that reads the MIME Type for RDF/XML
+<code class="literal">application/rdf+xml</code>
+</p>
+<pre class="programlisting">
+ rdf_parser = raptor_new_parser_for_content(world, NULL, "application/rdf+xml", NULL, 0, NULL);
+</pre>
+<p>
+</p>
+<p>Create a parser that can read a syntax identified by the URI
+for Turtle <code class="literal">http://www.dajobe.org/2004/01/turtle/</code>,
+which has no registered MIME Type at this date:
+</p>
+<pre class="programlisting">
+ syntax_uri = raptor_new_uri(world, "http://www.dajobe.org/2004/01/turtle/");
+
+ rdf_parser = raptor_new_parser_for_content(world, syntax_uri, NULL, NULL, 0, NULL);
+</pre>
+<p>
+</p>
+<p>Create a parser that recognises the identifier <code class="literal">foo.rss</code>:
+</p>
+<pre class="programlisting">
+ rdf_parser = raptor_new_parser_for_content(world, NULL, NULL, NULL, 0, "foo.rss");
+</pre>
+<p>
+</p>
+<p>Create a parser that recognises the content in <span class="emphasis"><em>buffer</em></span>:
+</p>
+<pre class="programlisting">
+ rdf_parser = raptor_new_parser_for_content(world, NULL, NULL, buffer, len, NULL);
+</pre>
+<p>
+</p>
+<p>Any of the constructor calls can return NULL if no matching
+parser could be found, or the construction failed in another way.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parser-destroy.html b/docs/html/tutorial-parser-destroy.html
new file mode 100644
index 0000000..654611b
--- /dev/null
+++ b/docs/html/tutorial-parser-destroy.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Destroy the parser</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parser-abort.html" title="Aborting parsing">
+<link rel="next" href="tutorial-parser-example.html" title="Parsing example code">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parser-abort.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parser-example.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parser-destroy"></a>Destroy the parser</h2></div></div></div>
+<p>
+To tidy up, delete the parser object as follows:
+</p>
+<pre class="programlisting">
+ raptor_free_parser(rdf_parser);
+</pre>
+<p>
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parser-example.html b/docs/html/tutorial-parser-example.html
new file mode 100644
index 0000000..5d20dbd
--- /dev/null
+++ b/docs/html/tutorial-parser-example.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Parsing example code</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parser-destroy.html" title="Destroy the parser">
+<link rel="next" href="tutorial-serializing.html" title="Serializing RDF triples to a syntax">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parser-destroy.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-serializing.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parser-example"></a>Parsing example code</h2></div></div></div>
+<div class="example">
+<a name="raptor-example-rdfprint"></a><p class="title"><b>Example 2. <code class="filename">rdfprint.c</code>: Parse an RDF/XML file and print the triples</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+#include &lt;stdio.h&gt;
+#include &lt;raptor2.h&gt;
+
+/* rdfprint.c: print triples from parsing RDF/XML */
+
+static void
+print_triple(void* user_data, raptor_statement* triple)
+{
+ raptor_statement_print_as_ntriples(triple, stdout);
+ fputc('\n', stdout);
+}
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world = NULL;
+ raptor_parser* rdf_parser = NULL;
+ unsigned char *uri_string;
+ raptor_uri *uri, *base_uri;
+
+ world = raptor_new_world();
+
+ rdf_parser = raptor_new_parser(world, "rdfxml");
+
+ raptor_parser_set_statement_handler(rdf_parser, NULL, print_triple);
+
+ uri_string = raptor_uri_filename_to_uri_string(argv[1]);
+ uri = raptor_new_uri(world, uri_string);
+ base_uri = raptor_uri_copy(uri);
+
+ raptor_parser_parse_file(rdf_parser, uri, base_uri);
+
+ raptor_free_parser(rdf_parser);
+
+ raptor_free_uri(base_uri);
+ raptor_free_uri(uri);
+ raptor_free_memory(uri_string);
+
+ raptor_free_world(world);
+
+ return 0;
+}
+
+</pre>
+<p>Compile it like this:
+</p>
+<pre class="screen">
+$ gcc -o rdfprint rdfprint.c `pkg-config raptor2 --cflags --libs`
+</pre>
+<p>
+and run it on an RDF file as:
+</p>
+<pre class="screen">
+$ ./rdfprint raptor.rdf
+_:genid1 &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt; &lt;http://usefulinc.com/ns/doap#Project&gt; .
+_:genid1 &lt;http://usefulinc.com/ns/doap#name&gt; "Raptor" .
+_:genid1 &lt;http://usefulinc.com/ns/doap#homepage&gt; &lt;http://librdf.org/raptor/&gt; .
+...
+</pre>
+<p>
+</p>
+</div>
+</div>
+<br class="example-break">
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parser-features.html b/docs/html/tutorial-parser-features.html
new file mode 100644
index 0000000..e1d683e
--- /dev/null
+++ b/docs/html/tutorial-parser-features.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Parser options</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parser-create.html" title="Create the Parser object">
+<link rel="next" href="tutorial-parser-set-triple-handler.html" title="Set RDF statement callback handler">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parser-create.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parser-set-triple-handler.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parser-features"></a>Parser options</h2></div></div></div>
+<p>There are several
+<span class="emphasis"><em> options</em></span> that can be set on parsers.
+The exact list of options can be found at run time via the
+<a class="link" href="tutorial-querying-functionality.html" title="Listing built-in functionality">Querying Functionality</a>
+or in the API reference for
+<a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><code class="literal">raptor_option</code></a>.
+</p>
+<p>Options are integer enumerations of the
+ <a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> enum and have
+typed values that are either booleans, integers or strings.
+The function that sets options for parsers is
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-option" title="raptor_parser_set_option ()">raptor_parser_set_option()</a>
+used as follows:
+</p>
+<pre class="programlisting">
+ /* Set a boolean or integer valued option to value 1 */
+ raptor_parser_set_option(rdf_parser, option, NULL, 1);
+
+ /* Set a string valued option to value "abc" */
+ raptor_parser_set_option(rdf_parser, option, "abc", -1);
+</pre>
+<p>
+</p>
+<p>
+There is a corresponding function for reading the values of parser
+option
+<a class="link" href="raptor2-section-parser.html#raptor-parser-get-option" title="raptor_parser_get_option ()"><code class="function">raptor_parser_get_option()</code></a>
+which takes the option enumeration parameter and returns the boolean /
+integer or string value correspondingly into the appropriate pointer
+argument.
+</p>
+<pre class="programlisting">
+ /* Get a boolean or integer option value */
+ int int_var;
+ raptor_parser_get_option(rdf_parser, option, NULL, &amp;int_var);
+
+ /* Get a string option value */
+ char* string_var;
+ raptor_parser_get_option(rdf_parser, option, &amp;string_var, NULL);
+</pre>
+<p>
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parser-runtime-info.html b/docs/html/tutorial-parser-runtime-info.html
new file mode 100644
index 0000000..0d01828
--- /dev/null
+++ b/docs/html/tutorial-parser-runtime-info.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Querying parser run-time information</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parser-static-info.html" title="Querying parser static information">
+<link rel="next" href="tutorial-parser-abort.html" title="Aborting parsing">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parser-static-info.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parser-abort.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parser-runtime-info"></a>Querying parser run-time information</h2></div></div></div>
+<p>
+<a class="link" href="raptor2-section-parser.html#raptor-parser-get-locator" title="raptor_parser_get_locator ()"><code class="function">raptor_parser_get_locator()</code></a>
+returns the <a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a>
+for the current position in the input stream. The <span class="emphasis"><em>locator</em></span>
+structure contains full information on the details of where in the
+file or URI the current parser has reached.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parser-set-error-warning-handlers.html b/docs/html/tutorial-parser-set-error-warning-handlers.html
new file mode 100644
index 0000000..527fbfb
--- /dev/null
+++ b/docs/html/tutorial-parser-set-error-warning-handlers.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Set parsing log message handlers</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parser-set-triple-handler.html" title="Set RDF statement callback handler">
+<link rel="next" href="tutorial-parser-set-id-handler.html" title="Set the identifier creator handler">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parser-set-triple-handler.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parser-set-id-handler.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parser-set-error-warning-handlers"></a>Set parsing log message handlers</h2></div></div></div>
+<p>Any time before parsing is called, a log handler can be set
+on the world object via the
+<a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler()</code></a>
+method to report errors and warnings from parsing.
+The method takes a user data argument plus a handler callback of type
+<a class="link" href="raptor2-section-general.html#raptor-log-handler" title="raptor_log_handler ()"><span class="type">raptor_log_handler</span></a>
+with a signature that looks like this:
+</p>
+<pre class="programlisting">
+void
+message_handler(void *user_data, raptor_log_message* message)
+{
+ /* do something with the message */
+}
+</pre>
+<p>
+The handler gets the user data pointer as well as a
+<a class="link" href="raptor2-section-general.html#raptor-log-message" title="raptor_log_message"><span class="type">raptor_log_handler</span></a>
+pointer that includes associated location information, such as the
+log level,
+<a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a>,
+and the log message itself. The <span class="emphasis"><em>locator</em></span>
+structure contains full information on the details of where in the
+file or URI the message occurred.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parser-set-id-handler.html b/docs/html/tutorial-parser-set-id-handler.html
new file mode 100644
index 0000000..2ff3aab
--- /dev/null
+++ b/docs/html/tutorial-parser-set-id-handler.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Set the identifier creator handler</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parser-set-error-warning-handlers.html" title="Set parsing log message handlers">
+<link rel="next" href="tutorial-parser-set-namespace-handler.html" title="Set namespace declared handler">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parser-set-error-warning-handlers.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parser-set-namespace-handler.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parser-set-id-handler"></a>Set the identifier creator handler</h2></div></div></div>
+<p>Identifiers are created in some parsers by generating them
+automatically or via hints given a syntax. Raptor can customise this
+process using a user-supplied identifier handler function.
+For example, in RDF/XML generated blank node identifiers and those
+those specified <code class="literal">rdf:nodeID</code> are passed through this
+process. Setting a handler allows the identifier generation mechanism to be
+fully replaced. A lighter alternative is to use
+<a class="link" href="raptor2-section-world.html#raptor-world-set-generate-bnodeid-parameters" title="raptor_world_set_generate_bnodeid_parameters ()"><code class="function">raptor_world_set_generate_bnodeid_parameters()</code></a>
+to adjust the default algorithm for generated identifiers.
+</p>
+<p>It is used as follows
+</p>
+<pre class="programlisting">
+ raptor_generate_bnodeid_handler bnodeid_handler;
+
+ raptor_world_set_generate_bnodeid_handler(rdf_parser, user_data, bnodeid_handler);
+</pre>
+<p>
+</p>
+<p>The <span class="emphasis"><em>bnodeid_handler</em></span> takes the following signature:
+</p>
+<pre class="programlisting">
+unsigned char*
+generate_id_handler(void* user_data, unsigned char* user_id)
+{
+ /* return a new generated ID based on user_id (optional) */
+}
+</pre>
+<p>
+where <span class="emphasis"><em>user_id</em></span> an optional user-supplied identifier,
+such as the value of a <code class="literal">rdf:nodeID</code> in RDF/XML.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parser-set-namespace-handler.html b/docs/html/tutorial-parser-set-namespace-handler.html
new file mode 100644
index 0000000..2aeb585
--- /dev/null
+++ b/docs/html/tutorial-parser-set-namespace-handler.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Set namespace declared handler</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parser-set-id-handler.html" title="Set the identifier creator handler">
+<link rel="next" href="tutorial-parse-strictness.html" title="Set the parsing strictness">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parser-set-id-handler.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parse-strictness.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parser-set-namespace-handler"></a>Set namespace declared handler</h2></div></div></div>
+<p>Raptor can report when namespace prefix/URIs are declared in
+during parsing a syntax such as those in XML, RDF/XML or Turtle.
+A handler function can be set to receive these declarations using
+the namespace handler method.
+</p>
+<pre class="programlisting">
+ raptor_namespace_handler namespaces_handler;
+
+ raptor_parser_set_namespace_handler(rdf_parser, user_data, namespaces_handler);
+</pre>
+<p>
+</p>
+<p>The <span class="emphasis"><em>namespaces_handler</em></span> takes the following signature:
+</p>
+<pre class="programlisting">
+void
+namespaces_handler(void* user_data, raptor_namespace *nspace)
+{
+ /* */
+}
+</pre>
+<p>
+</p>
+<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Note</h3>This may be called multiple times with the same namespace,
+if the namespace is declared inside different XML sub-trees.
+</div>
+<p>
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parser-set-triple-handler.html b/docs/html/tutorial-parser-set-triple-handler.html
new file mode 100644
index 0000000..9c5321f
--- /dev/null
+++ b/docs/html/tutorial-parser-set-triple-handler.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Set RDF statement callback handler</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="tutorial-parser-features.html" title="Parser options">
+<link rel="next" href="tutorial-parser-set-error-warning-handlers.html" title="Set parsing log message handlers">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parser-features.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parser-set-error-warning-handlers.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parser-set-triple-handler"></a>Set RDF statement callback handler</h2></div></div></div>
+<p>The main reason to parse a syntax is to get RDF triples
+returned and these are return by a user-defined handler function
+which is called with parameters of a user data pointer and a
+raptor statement, which includes the triple terms plus the
+optional named graph term. The handler is set with
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-statement-handler" title="raptor_parser_set_statement_handler ()"><code class="function">raptor_parser_set_statement_handler()</code></a>
+as follows:
+</p>
+<pre class="programlisting">
+ void
+ statement_handler(void* user_data, const raptor_statement* statement)
+ {
+ /* do something with the statement */
+ }
+
+ raptor_parser_set_statement_handler(rdf_parser, user_data, statements_handler);
+</pre>
+<p>
+</p>
+<p>Setting a stateemnt handler function is optional since parsing
+without returning statements is a valid use, such as when parsing in
+order to validate a syntax.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parser-static-info.html b/docs/html/tutorial-parser-static-info.html
new file mode 100644
index 0000000..cc0e593
--- /dev/null
+++ b/docs/html/tutorial-parser-static-info.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Querying parser static information</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<link rel="prev" href="restrict-parser-network-access.html" title="Restrict parser network access">
+<link rel="next" href="tutorial-parser-runtime-info.html" title="Querying parser run-time information">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="restrict-parser-network-access.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-parsing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parser-runtime-info.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parser-static-info"></a>Querying parser static information</h2></div></div></div>
+<p>
+These methods return information about the constructed parser
+implementation corresponding to the information available
+via <a class="link" href="raptor2-section-world.html#raptor-world-get-parser-description" title="raptor_world_get_parser_description ()"><code class="function">raptor_world_get_parser_description()</code></a>
+for all parsers.
+</p>
+<p><a class="link" href="raptor2-section-parser.html#raptor-parser-get-name" title="raptor_parser_get_name ()"><code class="function">raptor_parser_get_name()</code></a> returns the parser syntax name,
+<a class="link" href="raptor2-section-parser.html#raptor-parser-get-description" title="raptor_parser_get_description ()"><code class="function">raptor_parser_get_description()</code></a>
+returns more detailed description fields including the long label and
+mime_types for the parser with quality levels.
+</p>
+<p><a class="link" href="raptor2-section-parser.html#raptor-parser-get-accept-header" title="raptor_parser_get_accept_header ()"><code class="function">raptor_parser_get_accept_header()</code></a>
+returns a string that would be sent in an HTTP
+request <code class="code">Accept:</code> header for the syntaxes accepted by this
+parser only.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-parsing.html b/docs/html/tutorial-parsing.html
new file mode 100644
index 0000000..ff20e36
--- /dev/null
+++ b/docs/html/tutorial-parsing.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Parsing syntaxes to RDF Triples</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial.html" title="Part I. Raptor Tutorial">
+<link rel="prev" href="tutorial-querying-functionality.html" title="Listing built-in functionality">
+<link rel="next" href="tutorial-parser-create.html" title="Create the Parser object">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-querying-functionality.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parser-create.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="tutorial-parsing"></a>Parsing syntaxes to RDF Triples</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="tutorial-parsing.html#tutorial-parsing-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-create.html">Create the Parser object</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-features.html">Parser options</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-set-triple-handler.html">Set RDF statement callback handler</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-set-error-warning-handlers.html">Set parsing log message handlers</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-set-id-handler.html">Set the identifier creator handler</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-set-namespace-handler.html">Set namespace declared handler</a></span></dt>
+<dt><span class="section"><a href="tutorial-parse-strictness.html">Set the parsing strictness</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html">Provide syntax content to parse</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-uri">Parse the content from a URI (<code class="function">raptor_parser_parse_uri()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-www">Parse the content of a URI using an existing WWW connection (<code class="function">raptor_parser_parse_uri_with_connection()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-filehandle">Parse the content of a C <code class="literal">FILE*</code> (<code class="function">raptor_parser_parse_file_stream()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-file-uri">Parse the content of a file URI (<code class="function">raptor_parser_parse_file()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-chunks">Parse chunks of syntax content provided by the application (<code class="function">raptor_parser_parse_start()</code> and <code class="function">raptor_parser_parse_chunk()</code>)</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="restrict-parser-network-access.html">Restrict parser network access</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="restrict-parser-network-access.html#tutorial-filter-network-with-feature">Filtering parser network requests with option <code class="literal">RAPTOR_OPTION_NO_NET</code></a></span></dt>
+<dt><span class="section"><a href="restrict-parser-network-access.html#tutorial-filter-network-www-uri-filter">Filtering parser network requests with <code class="function">raptor_www_set_uri_filter()</code></a></span></dt>
+<dt><span class="section"><a href="restrict-parser-network-access.html#tutorial-filter-network-parser-uri-filter">Filtering parser network requests with <code class="function">raptor_parser_set_uri_filter()</code></a></span></dt>
+<dt><span class="section"><a href="restrict-parser-network-access.html#tutorial-filter-network-parser-timeout">Setting timeout for parser network requests with option <code class="literal">RAPTOR_OPTION_WWW_TIMEOUT</code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="tutorial-parser-static-info.html">Querying parser static information</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-runtime-info.html">Querying parser run-time information</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-abort.html">Aborting parsing</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-destroy.html">Destroy the parser</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-example.html">Parsing example code</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-parsing-intro"></a>Introduction</h2></div></div></div>
+<p>
+The typical sequence of operations to parse is to create a parser
+object, set various handlers and options, start the parsing, send
+some syntax content to the parser object, finish the parsing and
+destroy the parser object.</p>
+<p>Several parts of this process are optional, including actually
+using the triple results, which is useful as a syntax checking
+process.
+</p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-querying-functionality.html b/docs/html/tutorial-querying-functionality.html
new file mode 100644
index 0000000..e6e0f18
--- /dev/null
+++ b/docs/html/tutorial-querying-functionality.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Listing built-in functionality</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial.html" title="Part I. Raptor Tutorial">
+<link rel="prev" href="tutorial-initialising-finishing.html" title="Initialising and Finishing using the Library">
+<link rel="next" href="tutorial-parsing.html" title="Parsing syntaxes to RDF Triples">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-initialising-finishing.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-parsing.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="tutorial-querying-functionality"></a>Listing built-in functionality</h2></div></div></div>
+<p>
+Raptor can be configured and compiled with support for different
+lists of parsers and serializers. The list built into the
+library can be found by means of
+<span class="emphasis"><em>description</em></span> functions. These take as input an
+<code class="literal">int</code> counter and return descriptions of the object
+at that offset in the list. The return value is a pointer to a
+shared, read-only description of the object, or NULL if the counter
+has gone too far into the list.
+</p>
+<div class="variablelist">
+<p class="title"><b>Listing Functionality with Descriptions</b></p>
+<table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Get descriptions of the parser syntaxes</span></p></td>
+<td><pre class="programlisting">
+ const raptor_syntax_description*
+ raptor_world_get_parser_description(raptor_world* world,
+ unsigned int counter);
+</pre></td>
+</tr>
+<tr>
+<td><p><span class="term">Get descriptions of the serializer syntaxes</span></p></td>
+<td><pre class="programlisting">
+ const raptor_syntax_description*
+ raptor_world_get_serializer_description(raptor_world* world,
+ unsigned int counter);
+</pre></td>
+</tr>
+<tr>
+<td><p><span class="term">Get descriptions of options</span></p></td>
+<td>
+<pre class="programlisting">
+ raptor_option_description*
+ raptor_world_get_option_description(raptor_world* world,
+ const raptor_domain domain,
+ const raptor_option option);
+</pre>
+<p>
+Call with the appropriate domains for the class such as
+<a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-PARSER:CAPS"><code class="literal">RAPTOR_DOMAIN_PARSER</code></a>,
+<a class="link" href="raptor2-section-general.html#RAPTOR-DOMAIN-SERIALIZER:CAPS"><code class="literal">RAPTOR_DOMAIN_SERIALIZER</code></a>
+ etc. See the
+<a class="link" href="raptor2-section-general.html#raptor-domain" title="enum raptor_domain"><code class="literal">raptor_domain</code></a>
+description for the full list.
+</p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<p>These functions can be called directly after creating a
+raptor world object with
+<a class="link" href="raptor2-section-world.html#raptor-new-world" title="raptor_new_world"><code class="function">raptor_new_world()</code></a>.
+This is one way to find a parser (name) by it's MIME Type, the other
+is to use the mime_type parameter of the
+<a class="link" href="raptor2-section-parser.html#raptor-new-parser-for-content" title="raptor_new_parser_for_content ()"><code class="function">raptor_new_parser_for_content()</code></a>.</p>
+<div class="example">
+<a name="raptor-example-list-all-parser-options"></a><p class="title"><b>Example 1. List all parser options using option description</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+ unsigned int i;
+ for(i = 0; i &lt; raptor_option_get_count(); i++) {
+ raptor_option_description* od;
+
+ od = raptor_world_get_option_description(world, RAPTOR_DOMAIN_PARSER, i);
+
+ if(od) {
+ /* do something with od fields such as od-&gt;name, od-&gt;label */
+ }
+ }
+</pre>
+<p>There are more examples of this usage in the source for the
+<code class="literal">rapper</code> utility in <code class="filename">util/rapper.c</code>.
+</p>
+</div>
+</div>
+<br class="example-break">
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-serializer-create.html b/docs/html/tutorial-serializer-create.html
new file mode 100644
index 0000000..d301830
--- /dev/null
+++ b/docs/html/tutorial-serializer-create.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Create the Serializer object</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-serializing.html" title="Serializing RDF triples to a syntax">
+<link rel="prev" href="tutorial-serializing.html" title="Serializing RDF triples to a syntax">
+<link rel="next" href="tutorial-serializer-features.html" title="Serializer options">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-serializing.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-serializing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-serializer-features.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-serializer-create"></a>Create the Serializer object</h2></div></div></div>
+<p>The serializer can be created directly from a known name using
+<a class="link" href="raptor2-section-serializer.html#raptor-new-serializer" title="raptor_new_serializer ()"><code class="function">raptor_new_serializer()</code></a>
+such as <code class="literal">rdfxml</code> for the W3C Recommendation RDF/XML syntax:
+</p>
+<pre class="programlisting">
+ raptor_serializer* rdf_serializer;
+
+ rdf_serializer = raptor_new_serializer(world, "rdfxml");
+</pre>
+<p>
+or the name can be discovered from an <span class="emphasis"><em>description</em></span>
+as discussed in
+<a class="link" href="tutorial-querying-functionality.html" title="Listing built-in functionality">Querying Functionality</a>
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-serializer-declare-namespace.html b/docs/html/tutorial-serializer-declare-namespace.html
new file mode 100644
index 0000000..6df06c5
--- /dev/null
+++ b/docs/html/tutorial-serializer-declare-namespace.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Declare namespaces</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-serializing.html" title="Serializing RDF triples to a syntax">
+<link rel="prev" href="tutorial-serializer-features.html" title="Serializer options">
+<link rel="next" href="tutorial-serializer-set-error-warning-handlers.html" title="Set error and warning handlers">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-serializer-features.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-serializing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-serializer-set-error-warning-handlers.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-serializer-declare-namespace"></a>Declare namespaces</h2></div></div></div>
+<p>Raptor can use namespace prefix/URIs to abbreviate syntax
+in some syntaxes such as Turtle or any XML syntax including RDF/XML,
+RSS1.0 and Atom 1.0. These are declared
+with <a class="link" href="raptor2-section-serializer.html#raptor-serializer-set-namespace" title="raptor_serializer_set_namespace ()"><code class="function">raptor_serializer_set_namespace()</code></a>
+using a prefix and URI argument pair like this:
+</p>
+<pre class="programlisting">
+ const unsigned char* prefix = "ex";
+ raptor_uri* uri = raptor_new_uri(world, "http://example.org");
+
+ raptor_serializer_set_namespace(rdf_serializer, prefix, uri);
+</pre>
+<p>
+</p>
+<p>or
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer-set-namespace-from-namespace" title="raptor_serializer_set_namespace_from_namespace ()"><code class="function">raptor_serializer_set_namespace_from_namespace()</code></a>
+from an existing namespace. This can be useful when connected up the
+the namespace declarations that are generated from a parser via a
+namespace handler set with
+<a class="link" href="raptor2-section-parser.html#raptor-parser-set-namespace-handler" title="raptor_parser_set_namespace_handler ()"><code class="function">raptor_parser_set_namespace_handler()</code></a>
+</p>
+like this:
+<pre class="programlisting">
+ static void
+ relay_namespaces(void* user_data, raptor_namespace *nspace)
+ {
+ raptor_serializer_set_namespace_from_namespace(rdf_serializer, nspace);
+ }
+
+ ...
+
+ rdf_parser = raptor_new_parser(world, syntax_name);
+ raptor_parser_set_namespace_handler(rdf_parser, rdf_serializer, relay_namespaces);
+</pre>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-serializer-destroy.html b/docs/html/tutorial-serializer-destroy.html
new file mode 100644
index 0000000..c9eafcb
--- /dev/null
+++ b/docs/html/tutorial-serializer-destroy.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Destroy the serializer</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-serializing.html" title="Serializing RDF triples to a syntax">
+<link rel="prev" href="tutorial-serializer-runtime-info.html" title="Querying serializer run-time information">
+<link rel="next" href="tutorial-serializer-example.html" title="Serializing example code">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-serializer-runtime-info.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-serializing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-serializer-example.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-serializer-destroy"></a>Destroy the serializer</h2></div></div></div>
+<p>
+To tidy up, delete the serializer object as follows:
+</p>
+<pre class="programlisting">
+ raptor_free_serializer(rdf_serializer);
+</pre>
+<p>
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-serializer-example.html b/docs/html/tutorial-serializer-example.html
new file mode 100644
index 0000000..4b2350f
--- /dev/null
+++ b/docs/html/tutorial-serializer-example.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Serializing example code</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-serializing.html" title="Serializing RDF triples to a syntax">
+<link rel="prev" href="tutorial-serializer-destroy.html" title="Destroy the serializer">
+<link rel="next" href="reference-manual.html" title="Part II. Raptor Reference Manual">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-serializer-destroy.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-serializing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="reference-manual.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-serializer-example"></a>Serializing example code</h2></div></div></div>
+<div class="example">
+<a name="raptor-example-rdfcat"></a><p class="title"><b>Example 4. <code class="filename">rdfcat.c</code>: Read any RDF syntax and serialize to RDF/XML (Abbreviated)</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+#include &lt;stdio.h&gt;
+#include &lt;raptor2.h&gt;
+
+/* rdfcat.c: parse any RDF syntax and serialize to RDF/XML-Abbrev */
+
+static raptor_serializer* rdf_serializer;
+
+static void
+serialize_triple(void* user_data, raptor_statement* triple)
+{
+ raptor_serializer_serialize_statement(rdf_serializer, triple);
+}
+
+static void
+declare_namespace(void* user_data, raptor_namespace *nspace)
+{
+ raptor_serializer_set_namespace_from_namespace(rdf_serializer, nspace);
+}
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world = NULL;
+ raptor_parser* rdf_parser = NULL;
+ unsigned char *uri_string;
+ raptor_uri *uri, *base_uri;
+
+ world = raptor_new_world();
+
+ uri_string = raptor_uri_filename_to_uri_string(argv[1]);
+ uri = raptor_new_uri(world, uri_string);
+ base_uri = raptor_uri_copy(uri);
+
+ /* Ask raptor to work out which parser to use */
+ rdf_parser = raptor_new_parser(world, "guess");
+ raptor_parser_set_statement_handler(rdf_parser, NULL, serialize_triple);
+ raptor_parser_set_namespace_handler(rdf_parser, NULL, declare_namespace);
+
+ rdf_serializer = raptor_new_serializer(world, "rdfxml-abbrev");
+
+ raptor_serializer_start_to_file_handle(rdf_serializer, base_uri, stdout);
+ raptor_parser_parse_file(rdf_parser, uri, base_uri);
+ raptor_serializer_serialize_end(rdf_serializer);
+
+ raptor_free_serializer(rdf_serializer);
+ raptor_free_parser(rdf_parser);
+
+ raptor_free_uri(base_uri);
+ raptor_free_uri(uri);
+ raptor_free_memory(uri_string);
+
+ raptor_free_world(world);
+
+ return 0;
+}
+
+</pre>
+<p>Compile it like this:
+</p>
+<pre class="screen">
+$ gcc -o rdfcat rdfcat.c `pkg-config raptor2 --cflags --libs`
+</pre>
+<p>
+and run it on an RDF file as:
+</p>
+<pre class="screen">
+$ ./rdfcat raptor.rdf
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;rdf:RDF xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://usefulinc.com/ns/doap#"&gt;
+ &lt;rdf:Description rdf:about=""&gt;
+ &lt;foaf:maker&gt;
+ &lt;foaf:Person&gt;
+ &lt;foaf:name&gt;Dave Beckett&lt;/foaf:name&gt;
+...
+</pre>
+<p>
+</p>
+</div>
+</div>
+<br class="example-break">
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-serializer-features.html b/docs/html/tutorial-serializer-features.html
new file mode 100644
index 0000000..baaeed5
--- /dev/null
+++ b/docs/html/tutorial-serializer-features.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Serializer options</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-serializing.html" title="Serializing RDF triples to a syntax">
+<link rel="prev" href="tutorial-serializer-create.html" title="Create the Serializer object">
+<link rel="next" href="tutorial-serializer-declare-namespace.html" title="Declare namespaces">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-serializer-create.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-serializing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-serializer-declare-namespace.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-serializer-features"></a>Serializer options</h2></div></div></div>
+<p>There are several options that can be set on serializers.
+The exact list of options can be found at run time via the
+<a class="link" href="tutorial-querying-functionality.html" title="Listing built-in functionality">Querying Functionality</a>
+or in the API reference for
+<a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><code class="literal">raptor_option</code></a>.
+</p>
+<p>Options are integer enumerations of the
+<a class="link" href="raptor2-section-option.html#raptor-option" title="enum raptor_option"><span class="type">raptor_option</span></a> enum and have
+values that are either booleans, integers or strings.
+The function that sets options for serializers is:
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer-set-option" title="raptor_serializer_set_option ()">raptor_serializer_set_option()</a>
+used as follows:
+</p>
+<pre class="programlisting">
+ /* Set a boolean or integer valued option to value 1 */
+ raptor_serializer_set_option(rdf_serializer, option, NULL, 1);
+
+ /* Set a string valued option to value "abc" */
+ raptor_serializer_set_option(rdf_serializer, option, "abc", -1);
+</pre>
+<p>
+</p>
+<p>
+There is a corresponding function for reading the values of serializer
+option
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer-get-option" title="raptor_serializer_get_option ()"><code class="function">raptor_serializer_get_option()</code></a>
+which takes the option enumeration parameter and returns the boolean /
+integer or string value correspondingly into the appropriate pointer
+argument.
+</p>
+<pre class="programlisting">
+ /* Get a boolean or integer option value */
+ int int_var;
+ raptor_serializer_get_option(rdf_serializer, option, NULL, &amp;int_var);
+
+ /* Get a string option value */
+ char* string_var;
+ raptor_serializer_get_option(rdf_serializer, option, &amp;string_var, NULL);
+</pre>
+<p>
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-serializer-get-triples.html b/docs/html/tutorial-serializer-get-triples.html
new file mode 100644
index 0000000..b4bb400
--- /dev/null
+++ b/docs/html/tutorial-serializer-get-triples.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Get or construct RDF Statements (Triples)</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-serializing.html" title="Serializing RDF triples to a syntax">
+<link rel="prev" href="tutorial-serializer-to-destination.html" title="Provide a destination for the serialized syntax">
+<link rel="next" href="tutorial-serializer-send-triples.html" title="Send RDF Triples to serializer">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-serializer-to-destination.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-serializing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-serializer-send-triples.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-serializer-get-triples"></a>Get or construct RDF Statements (Triples)</h2></div></div></div>
+<p>
+An <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a>
+containing the triple terms and optional graph term
+can be made either by receiving them from a
+<a class="link" href="raptor2-section-parser.html#raptor-parser" title="raptor_parser"><span class="type">raptor_parser</span></a>
+via parsing or can be constructed by hand.</p>
+<p>When constructing by hand,
+the <a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a>
+structure should be allocated by the application and the fields
+filled in. Each statement has three triple terms (subject,
+predicate, object) and an optional graph term. The subject can be a
+URI or blank node, the predicate can only be a URI and the object can
+be a URI, blank node or RDF literal. RDF literals can have either
+just a Unicode string, a Unicode string and a language or a Unicode
+string and a datatype URI.</p>
+<p>The statement terms are all instances of
+<a class="link" href="raptor2-section-triples.html#raptor-term" title="raptor_term"><span class="type">raptor_term</span></a>
+objects constructed with the appropriate constructor for
+the URI, blank node or rdf literal types. The graph term
+of the statement is typically a URI or blank node.
+</p>
+<div class="example">
+<a name="raptor-example-rdfserialize"></a><p class="title"><b>Example 3. <code class="filename">rdfserialize.c</code>: Serialize 1 triple to RDF/XML (Abbreviated)</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+#include &lt;stdio.h&gt;
+#include &lt;raptor2.h&gt;
+#include &lt;stdlib.h&gt;
+
+/* rdfserialize.c: serialize 1 triple to RDF/XML-Abbrev */
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world = NULL;
+ raptor_serializer* rdf_serializer = NULL;
+ unsigned char *uri_string;
+ raptor_uri *base_uri;
+ raptor_statement* triple;
+
+ world = raptor_new_world();
+
+ uri_string = raptor_uri_filename_to_uri_string(argv[1]);
+ base_uri = raptor_new_uri(world, uri_string);
+
+ rdf_serializer = raptor_new_serializer(world, "rdfxml-abbrev");
+ raptor_serializer_start_to_file_handle(rdf_serializer, base_uri, stdout);
+
+ /* Make a triple with URI subject, URI predicate, literal object */
+ triple = raptor_new_statement(world);
+ triple-&gt;subject = raptor_new_term_from_uri_string(world, (const unsigned char*)"http://example.org/subject");
+ triple-&gt;predicate = raptor_new_term_from_uri_string(world, (const unsigned char*)"http://example.org/predicate");
+ triple-&gt;object = raptor_new_term_from_literal(world,
+ (const unsigned char*)"An example literal",
+ NULL,
+ (const unsigned char*)"en");
+
+ /* Write the triple */
+ raptor_serializer_serialize_statement(rdf_serializer, triple);
+
+ /* Delete the triple */
+ raptor_free_statement(triple);
+
+ raptor_serializer_serialize_end(rdf_serializer);
+ raptor_free_serializer(rdf_serializer);
+
+ raptor_free_uri(base_uri);
+ raptor_free_memory(uri_string);
+
+ raptor_free_world(world);
+ return 0;
+}
+
+</pre>
+<p>Compile it like this:
+</p>
+<pre class="screen">
+$ gcc -o rdfserialize rdfserialize.c `pkg-config raptor2 --cflags --libs`
+</pre>
+<p>
+and run it with an optional base URI argument
+</p>
+<pre class="screen">
+$ ./rdfserialize
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
+ &lt;rdf:Description rdf:about="http://example.org/subject"&gt;
+ &lt;ns0:predicate xmlns:ns0="http://example.org/" xml:lang="en"&gt;An example&lt;/ns0:predicate&gt;
+ &lt;/rdf:Description&gt;
+&lt;/rdf:RDF&gt;
+</pre>
+<p>
+</p>
+</div>
+</div>
+<br class="example-break">
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-serializer-runtime-info.html b/docs/html/tutorial-serializer-runtime-info.html
new file mode 100644
index 0000000..ea68c22
--- /dev/null
+++ b/docs/html/tutorial-serializer-runtime-info.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Querying serializer run-time information</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-serializing.html" title="Serializing RDF triples to a syntax">
+<link rel="prev" href="tutorial-serializer-send-triples.html" title="Send RDF Triples to serializer">
+<link rel="next" href="tutorial-serializer-destroy.html" title="Destroy the serializer">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-serializer-send-triples.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-serializing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-serializer-destroy.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-serializer-runtime-info"></a>Querying serializer run-time information</h2></div></div></div>
+<p>
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer-get-iostream" title="raptor_serializer_get_iostream ()"><code class="function">raptor_serializer_get_iostream()</code></a>
+gets the current serializer's raptor_iostream.
+</p>
+<p>
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer-get-locator" title="raptor_serializer_get_locator ()"><code class="function">raptor_serializer_get_locator()</code></a>
+returns the <a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a>
+for the current position in the output stream. The <span class="emphasis"><em>locator</em></span>
+structure contains full information on the details of where in the
+file or URI the current serializer has reached.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-serializer-send-triples.html b/docs/html/tutorial-serializer-send-triples.html
new file mode 100644
index 0000000..19b1c9c
--- /dev/null
+++ b/docs/html/tutorial-serializer-send-triples.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Send RDF Triples to serializer</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-serializing.html" title="Serializing RDF triples to a syntax">
+<link rel="prev" href="tutorial-serializer-get-triples.html" title="Get or construct RDF Statements (Triples)">
+<link rel="next" href="tutorial-serializer-runtime-info.html" title="Querying serializer run-time information">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-serializer-get-triples.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-serializing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-serializer-runtime-info.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-serializer-send-triples"></a>Send RDF Triples to serializer</h2></div></div></div>
+<p>
+Once the serializer has been started, RDF triples can be sent to it
+via the
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer-serialize-statement" title="raptor_serializer_serialize_statement ()"><code class="function">raptor_serializer_serialize_statement()</code></a>
+function with a
+<a class="link" href="raptor2-section-triples.html#raptor-statement" title="raptor_statement"><span class="type">raptor_statement</span></a>
+value.
+</p>
+<p>Once all triples are sent, the serializing must be finished
+with a call to
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer-serialize-end" title="raptor_serializer_serialize_end ()"><code class="function">raptor_serializer_serialize_end()</code></a>.
+In particular, only at this point does the
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a>
+get flushed or any string constructed for
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-string" title="raptor_serializer_start_to_string ()"><code class="function">raptor_serializer_start_to_string()</code></a>.
+</p>
+<pre class="programlisting">
+ /* start the serializing somehow */
+ while( /* got RDF triples */ ) {
+ raptor_serializer_serialize_statement(rdf_serializer, triple);
+ }
+ raptor_serializer_serialize_end(rdf_serializer);
+ /* now can use the serializing result (FILE, string, raptor_iostream) */
+</pre>
+<p>
+
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-serializer-set-error-warning-handlers.html b/docs/html/tutorial-serializer-set-error-warning-handlers.html
new file mode 100644
index 0000000..b2f4dbb
--- /dev/null
+++ b/docs/html/tutorial-serializer-set-error-warning-handlers.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Set error and warning handlers</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-serializing.html" title="Serializing RDF triples to a syntax">
+<link rel="prev" href="tutorial-serializer-declare-namespace.html" title="Declare namespaces">
+<link rel="next" href="tutorial-serializer-to-destination.html" title="Provide a destination for the serialized syntax">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-serializer-declare-namespace.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-serializing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-serializer-to-destination.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-serializer-set-error-warning-handlers"></a>Set error and warning handlers</h2></div></div></div>
+<p>Any time before serializing is started, a log handler can be set
+on the world object via the
+<a class="link" href="raptor2-section-world.html#raptor-world-set-log-handler" title="raptor_world_set_log_handler ()"><code class="function">raptor_world_set_log_handler()</code></a>
+method to report errors and warnings from parsing.
+The method takes a user data argument plus a handler callback of type
+<a class="link" href="raptor2-section-general.html#raptor-log-handler" title="raptor_log_handler ()"><span class="type">raptor_log_handler</span></a>
+with a signature that looks like this:
+</p>
+<pre class="programlisting">
+void
+message_handler(void *user_data, raptor_log_message* message)
+{
+ /* do something with the message */
+}
+</pre>
+<p>
+The handler gets the user data pointer as well as a
+<a class="link" href="raptor2-section-general.html#raptor-log-message" title="raptor_log_message"><span class="type">raptor_log_handler</span></a>
+pointer that includes associated location information, such as the
+log level,
+<a class="link" href="raptor2-section-locator.html#raptor-locator" title="raptor_locator"><span class="type">raptor_locator</span></a>,
+and the log message itself. The <span class="emphasis"><em>locator</em></span>
+structure contains full information on the details of where in the
+file or URI the message occurred.
+</p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-serializer-to-destination.html b/docs/html/tutorial-serializer-to-destination.html
new file mode 100644
index 0000000..1c6db4f
--- /dev/null
+++ b/docs/html/tutorial-serializer-to-destination.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Provide a destination for the serialized syntax</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial-serializing.html" title="Serializing RDF triples to a syntax">
+<link rel="prev" href="tutorial-serializer-set-error-warning-handlers.html" title="Set error and warning handlers">
+<link rel="next" href="tutorial-serializer-get-triples.html" title="Get or construct RDF Statements (Triples)">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-serializer-set-error-warning-handlers.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial-serializing.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-serializer-get-triples.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-serializer-to-destination"></a>Provide a destination for the serialized syntax</h2></div></div></div>
+<p>The operation of turning RDF triples into a syntax has several
+alternatives from functions that do most of the work writing to a file
+or string to functions that allow passing in a
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a>
+which can be entirely user-constructed.</p>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="serialize-to-filename"></a>Serialize to a filename (<a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-filename" title="raptor_serializer_start_to_filename ()"><code class="function">raptor_serializer_start_to_filename()</code></a>)</h3></div></div></div>
+<p>Serialize to a new filename
+(using <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-to-filename" title="raptor_new_iostream_to_filename ()"><code class="function">raptor_new_iostream_to_filename()</code></a> internally)
+and uses asf base URI, the file's URI.
+</p>
+<pre class="programlisting">
+ const char *filename = "raptor.rdf";
+ raptor_serializer_start_to_filename(rdf_serializer, filename);
+</pre>
+<p>
+</p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="serialize-to-string"></a>Serialize to a string (<a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-string" title="raptor_serializer_start_to_string ()"><code class="function">raptor_serializer_start_to_string()</code></a>)</h3></div></div></div>
+<p>Serialize to a string that is allocated by the serializer
+(using <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-to-string" title="raptor_new_iostream_to_string ()"><code class="function">raptor_new_iostream_to_string()</code></a> internally). The
+resulting string is only constructed after <a class="link" href="raptor2-section-serializer.html#raptor-serializer-serialize-end" title="raptor_serializer_serialize_end ()"><code class="function">raptor_serializer_serialize_end()</code></a> is called and at that
+point it is assigned to the string pointer passed in, with the length
+written to the optional length pointer. This function
+takes an optional base URI but may be required by some serializers.
+</p>
+<pre class="programlisting">
+ raptor_uri* uri = raptor_new_uri(world, "http://example.org/base");
+ void *string; /* destination for string */
+ size_t length; /* length of constructed string */
+ raptor_serializer* rdf_serializer = /* serializer created by some means */ ;
+
+ raptor_serializer_start_to_string(rdf_serializer, uri,
+ &amp;string, &amp;length);
+</pre>
+<p>
+</p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="serialize-to-filehandle"></a>Serialize to a FILE* file handle (<a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-file-handle" title="raptor_serializer_start_to_file_handle ()"><code class="function">raptor_serializer_start_to_file_handle()</code></a>)</h3></div></div></div>
+<p>Serialize to an existing open C FILE* file handle
+(using <a class="link" href="raptor2-section-iostream.html#raptor-new-iostream-to-file-handle" title="raptor_new_iostream_to_file_handle ()"><code class="function">raptor_new_iostream_to_file_handle()</code></a> internally). The handle is not closed after serializing is finished. This function
+takes an optional base URI but may be required by some serializers.
+</p>
+<pre class="programlisting">
+ raptor_uri* uri = raptor_new_uri(world, "http://example.org/base");
+ FILE* fh = fopen("raptor.rdf", "wb");
+ raptor_serializer* rdf_serializer = /* serializer created by some means */ ;
+
+ raptor_serializer_start_to_file_handle(rdf_serializer, uri, fh);
+</pre>
+<p>
+</p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="serialize-to-iostream"></a>Serialize to an <a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a> (<a class="link" href="raptor2-section-serializer.html#raptor-serializer-start-to-iostream" title="raptor_serializer_start_to_iostream ()"><code class="function">raptor_serializer_start_to_iostream()</code></a>)</h3></div></div></div>
+<p>This is the most flexible serializing method as it allows
+writing to any
+<a class="link" href="raptor2-section-iostream.html#raptor-iostream" title="raptor_iostream"><span class="type">raptor_iostream</span></a>
+which can be constructed to build any form of user-generated structure
+via callbacks. The iostream remains owned by the caller that can continue
+to write to it after the serializing is finished (after
+<a class="link" href="raptor2-section-serializer.html#raptor-serializer-serialize-end" title="raptor_serializer_serialize_end ()"><code class="function">raptor_serializer_serialize_end()</code></a>) is called).
+</p>
+<pre class="programlisting">
+ raptor_uri* uri = raptor_new_uri(world, "http://example.org/base");
+ raptor_iostream* iostream = /* iostream initialized by some means */ ;
+ raptor_serializer* rdf_serializer = /* serializer created by some means */ ;
+
+ raptor_serializer_start_to_iostream(rdf_serializer, uri, iostream);
+
+ while( /* got RDF triples */ ) {
+ raptor_statement* triple = /* ... triple made from somewhere ... */ ;
+ raptor_serializer_serialize_statement(rdf_serializer, triple);
+ }
+ raptor_serializer_serialize_end(rdf_serializer);
+
+ raptor_free_serializer(rdf_serializer);
+
+ /* ... write other stuff to iostream ... */
+
+ raptor_free_iostream(iostream);
+</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial-serializing.html b/docs/html/tutorial-serializing.html
new file mode 100644
index 0000000..95282a8
--- /dev/null
+++ b/docs/html/tutorial-serializing.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Serializing RDF triples to a syntax</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="tutorial.html" title="Part I. Raptor Tutorial">
+<link rel="prev" href="tutorial-parser-example.html" title="Parsing example code">
+<link rel="next" href="tutorial-serializer-create.html" title="Create the Serializer object">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="tutorial-parser-example.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="tutorial.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-serializer-create.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="tutorial-serializing"></a>Serializing RDF triples to a syntax</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="tutorial-serializing.html#tutorial-serializing-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-create.html">Create the Serializer object</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-features.html">Serializer options</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-declare-namespace.html">Declare namespaces</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-set-error-warning-handlers.html">Set error and warning handlers</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html">Provide a destination for the serialized syntax</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html#serialize-to-filename">Serialize to a filename (<code class="function">raptor_serializer_start_to_filename()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html#serialize-to-string">Serialize to a string (<code class="function">raptor_serializer_start_to_string()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html#serialize-to-filehandle">Serialize to a FILE* file handle (<code class="function">raptor_serializer_start_to_file_handle()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html#serialize-to-iostream">Serialize to an <span class="type">raptor_iostream</span> (<code class="function">raptor_serializer_start_to_iostream()</code>)</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="tutorial-serializer-get-triples.html">Get or construct RDF Statements (Triples)</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-send-triples.html">Send RDF Triples to serializer</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-runtime-info.html">Querying serializer run-time information</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-destroy.html">Destroy the serializer</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-example.html">Serializing example code</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tutorial-serializing-intro"></a>Introduction</h2></div></div></div>
+<p>
+The typical sequence of operations to serialize is to create a
+serializer object, set various callback and features, start the
+serializing, send some RDF triples to the serializer object,
+finish the serializing and destroy the serializer object.
+</p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/tutorial.html b/docs/html/tutorial.html
new file mode 100644
index 0000000..d9f07dc
--- /dev/null
+++ b/docs/html/tutorial.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Part I. Raptor Tutorial</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="up" href="index.html" title="Raptor RDF Syntax Library Manual">
+<link rel="prev" href="introduction.html" title="Raptor Overview">
+<link rel="next" href="tutorial-initialising-finishing.html" title="Initialising and Finishing using the Library">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="introduction.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Raptor RDF Syntax Library Manual</th>
+<td><a accesskey="n" href="tutorial-initialising-finishing.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="tutorial"></a>Part I. Raptor Tutorial</h1></div></div></div>
+<div class="partintro">
+<div></div>
+<p>This part describes how to use the
+ <a class="ulink" href="http://librdf.org/raptor/" target="_top">Raptor</a> APIs to
+ turn syntaxes into RDF triples and RDF triples into syntaxes.</p>
+<p>The next part contains the
+ <a class="link" href="reference-manual.html" title="Part II. Raptor Reference Manual">Raptor Reference Manual</a>
+ which comprehensively describes every class and function of the API.
+ </p>
+<p>For the latest information, see the
+ <a class="ulink" href="http://librdf.org/raptor/" target="_top">Raptor Home Page</a>
+ and the <a class="ulink" href="../README.html" target="_top">main document overview</a>
+ in this document tree.
+ </p>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="chapter"><a href="tutorial-initialising-finishing.html">Initialising and Finishing using the Library</a></span></dt>
+<dt><span class="chapter"><a href="tutorial-querying-functionality.html">Listing built-in functionality</a></span></dt>
+<dt><span class="chapter"><a href="tutorial-parsing.html">Parsing syntaxes to RDF Triples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="tutorial-parsing.html#tutorial-parsing-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-create.html">Create the Parser object</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-features.html">Parser options</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-set-triple-handler.html">Set RDF statement callback handler</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-set-error-warning-handlers.html">Set parsing log message handlers</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-set-id-handler.html">Set the identifier creator handler</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-set-namespace-handler.html">Set namespace declared handler</a></span></dt>
+<dt><span class="section"><a href="tutorial-parse-strictness.html">Set the parsing strictness</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html">Provide syntax content to parse</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-uri">Parse the content from a URI (<code class="function">raptor_parser_parse_uri()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-www">Parse the content of a URI using an existing WWW connection (<code class="function">raptor_parser_parse_uri_with_connection()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-filehandle">Parse the content of a C <code class="literal">FILE*</code> (<code class="function">raptor_parser_parse_file_stream()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-file-uri">Parse the content of a file URI (<code class="function">raptor_parser_parse_file()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-content.html#parse-from-chunks">Parse chunks of syntax content provided by the application (<code class="function">raptor_parser_parse_start()</code> and <code class="function">raptor_parser_parse_chunk()</code>)</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="restrict-parser-network-access.html">Restrict parser network access</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="restrict-parser-network-access.html#tutorial-filter-network-with-feature">Filtering parser network requests with option <code class="literal">RAPTOR_OPTION_NO_NET</code></a></span></dt>
+<dt><span class="section"><a href="restrict-parser-network-access.html#tutorial-filter-network-www-uri-filter">Filtering parser network requests with <code class="function">raptor_www_set_uri_filter()</code></a></span></dt>
+<dt><span class="section"><a href="restrict-parser-network-access.html#tutorial-filter-network-parser-uri-filter">Filtering parser network requests with <code class="function">raptor_parser_set_uri_filter()</code></a></span></dt>
+<dt><span class="section"><a href="restrict-parser-network-access.html#tutorial-filter-network-parser-timeout">Setting timeout for parser network requests with option <code class="literal">RAPTOR_OPTION_WWW_TIMEOUT</code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="tutorial-parser-static-info.html">Querying parser static information</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-runtime-info.html">Querying parser run-time information</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-abort.html">Aborting parsing</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-destroy.html">Destroy the parser</a></span></dt>
+<dt><span class="section"><a href="tutorial-parser-example.html">Parsing example code</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="tutorial-serializing.html">Serializing RDF triples to a syntax</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="tutorial-serializing.html#tutorial-serializing-intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-create.html">Create the Serializer object</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-features.html">Serializer options</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-declare-namespace.html">Declare namespaces</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-set-error-warning-handlers.html">Set error and warning handlers</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html">Provide a destination for the serialized syntax</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html#serialize-to-filename">Serialize to a filename (<code class="function">raptor_serializer_start_to_filename()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html#serialize-to-string">Serialize to a string (<code class="function">raptor_serializer_start_to_string()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html#serialize-to-filehandle">Serialize to a FILE* file handle (<code class="function">raptor_serializer_start_to_file_handle()</code>)</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-to-destination.html#serialize-to-iostream">Serialize to an <span class="type">raptor_iostream</span> (<code class="function">raptor_serializer_start_to_iostream()</code>)</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="tutorial-serializer-get-triples.html">Get or construct RDF Statements (Triples)</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-send-triples.html">Send RDF Triples to serializer</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-runtime-info.html">Querying serializer run-time information</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-destroy.html">Destroy the serializer</a></span></dt>
+<dt><span class="section"><a href="tutorial-serializer-example.html">Serializing example code</a></span></dt>
+</dl></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/up.png b/docs/html/up.png
new file mode 100644
index 0000000..85b3e2a
--- /dev/null
+++ b/docs/html/up.png
Binary files differ
diff --git a/docs/libraptor2.3 b/docs/libraptor2.3
new file mode 100644
index 0000000..e683b8b
--- /dev/null
+++ b/docs/libraptor2.3
@@ -0,0 +1,140 @@
+.\"
+.\" libraptor2.3 - Raptor2 library manual page
+.\"
+.\" Copyright (C) 2002-2010 David Beckett - http://www.dajobe.org/
+.\" Copyright (C) 2002-2005 University of Bristol, UK
+.\"
+.TH libraptor2 3 "2010-08-16"
+.\" Please adjust this date whenever revising the manpage.
+.SH NAME
+libraptor2 \- Raptor RDF syntax library 2.0
+.SH SYNOPSIS
+.nf
+.B #include <raptor2.h>
+.br
+
+.br
+.BI world = raptor_new_world( );
+.br
+.BI "raptor_parser *" p = raptor_new_parser( world , "rdfxml" );
+.br
+.BI raptor_set_statement_handler( p , NULL , print_triples );
+.br
+.BI "raptor_uri *" file_uri = raptor_new_uri( world , "http://example.org/" );
+.br
+.BI raptor_parser_parse_file( p , file_uri , base_uri );
+.br
+.BI raptor_parser_parse_uri( p , uri , NULL );
+.br
+.BI raptor_free_parser( p );
+.br
+.BI raptor_free_uri( file_uri );
+.br
+.BI raptor_free_world( world );
+.br
+
+.B cc prog.c -o prog `pkg-config raptor2 --cflags` `pkg-config raptor2 --libs`
+.br
+.fi
+.SH DESCRIPTION
+The \fIRaptor\fP library provides a high-level interface to a set
+of parsers and serializers that generate
+Resource Description Framework (RDF) triples
+by parsing syntaxes or serialize the triples into syntaxes.
+.LP
+The supported parsing syntaxes include RDF/XML, N-Triples, Turtle,
+TRiG, RSS tag soup (including all RSS and Atoms), GRDDL, RDF/JSON, RDFa and the
+serializing syntaxes include RDF/XML (3 varieties), N-Quads, N-Triples,
+Turtle, RSS 1.0, Atom 1.0, GraphViz DOT and RDF/JSON.
+The RDF/XML parser can use either \fIexpat\fP or \fIlibxml\fP
+XML parsers for providing the SAX event stream.
+The library functions are arranged in an object-oriented style with
+constructors, destructors and method calls. The statements
+and error messages are delivered via callback functions.
+.LP
+Raptor also contains classes to support the RDF graph triples:
+a statement object containing term objects and support for RDF
+URI-References for both parsing them and resolving / retrieval of
+URIs.
+.LP
+It some utility classes such as an I/O Stream abstraction for
+supporting reading and writing to and from a variety of locations,
+AVL Trees, String buffers and Sequences.
+.LP
+Raptor uses Unicode strings for RDF literals and URIs
+and preserves them throughout the library. It uses the UTF-8
+encoding of Unicode at the API for passing in or returning Unicode
+strings. It is intended that the preservation of Unicode for URIs
+supports Internationalized Resource Identifiers (IRIs).
+.SH "API REFERENCE"
+See the HTML API docs that may be installed system wide at
+/usr/share/gtk-doc/html/raptor2/
+or on the web at
+.UR http://librdf.org/raptor/api/
+http://librdf.org/raptor/api/
+.UE
+.SH API CHANGES
+See the Raptor API docs changes section at
+.UR http://librdf.org/raptor/api/raptor-changes.html
+http://librdf.org/raptor/api/raptor-changes.html
+.UE
+and the upgrading information when converting from libraptor(1)
+code at
+.UR http://librdf.org/raptor/UPGRADING.html
+http://librdf.org/raptor/UPGRADING.html
+.UE
+.br
+.SH "CONFORMING TO"
+\fIRDF/XML Syntax (Revised)\fP, Dave Beckett (ed.)
+W3C Recommendation,
+.UR http://www.w3.org/TR/rdf-syntax-grammar/
+http://www.w3.org/TR/rdf-syntax-grammar/
+.UE
+
+\fIN-Triples\fP, in \fIRDF Test Cases\fP, Jan Grant and Dave Beckett (eds.)
+W3C Recommendation,
+.UR http://www.w3.org/TR/rdf-testcases/#ntriples
+http://www.w3.org/TR/rdf-testcases/#ntriples
+.UE
+
+\fITurtle - Terse RDF Triple Language\fP, Dave Beckett,
+.UR http://www.dajobe.org/2004/01/turtle/
+http://www.dajobe.org/2004/01/turtle/
+.UE
+
+\fIRSS 0.91 spec revision 3\fP, Dan Libby, Netscape,
+.UR http://my.netscape.com/publish/formats/rss-spec-0.91.html
+http://my.netscape.com/publish/formats/rss-spec-0.91.html
+.UE
+
+\fIRDF Site Summary (RSS) 1.0\fP,
+.UR http://purl.org/rss/1.0/spec
+http://purl.org/rss/1.0/spec
+.UE
+
+\fIAtom 1.0 syndication format\fP,
+RFC 4287,
+.UR http://www.ietf.org/rfc/rfc4287.txt
+http://www.ietf.org/rfc/rfc4287.txt
+.UE
+
+\fIGleaning Resource Descriptions from Dialects of Languages
+(GRDDL)\fP, Dan Connolly (ed.), W3C Recommendation, 2007-09-11,
+.UR http://www.w3.org/TR/2007/REC-grddl-20070911/
+http://www.w3.org/TR/2007/REC-grddl-20070911/
+.UE
+
+\fIRDFa in XHTML: Syntax and Processing\fP,
+Ben Adida, Mark Birbeck, Shane McCarron, Steven Pemberton (eds.)
+ W3C Recommendation, 2008-10-14,
+.UR http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014/
+http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014/
+.UE
+
+.SH SEE ALSO
+.BR rapper(1)
+.SH AUTHOR
+Dave Beckett -
+.UR http://www.dajobe.org/
+http://www.dajobe.org/
+.UE
diff --git a/docs/libraptor2.html b/docs/libraptor2.html
new file mode 100644
index 0000000..f0bd0ac
--- /dev/null
+++ b/docs/libraptor2.html
@@ -0,0 +1,63 @@
+<!-- Creator : groff version 1.21 -->
+<!-- CreationDate: Sun Nov 13 16:28:26 2011 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<style type="text/css">
+/*<![CDATA[*/
+ p { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ table { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ h1 { text-align: center }
+/*]]>*/
+</style>
+<title>libraptor2</title>
+</head>
+<body bgcolor="#ffffff" text="#000085">
+<h1 align="center">libraptor2</h1>
+<hr />
+<h2>NAME <a name="NAME" id="NAME"></a></h2>
+<p style="margin-left:11%; margin-top: 1em">libraptor2 &minus; Raptor RDF syntax library 2.0</p>
+<h2>SYNOPSIS <a name="SYNOPSIS" id="SYNOPSIS"></a></h2>
+<p style="margin-left:11%; margin-top: 1em"><b>#include &lt;raptor2.h&gt;</b></p>
+<p style="margin-left:11%; margin-top: 1em"><b>world</b><i>=</i><b>raptor_new_world(</b><i>);</i> <b><br />
+raptor_parser *</b><i>p</i><b>=</b><i>raptor_new_parser(</i><b>world</b><i>,</i><b>rdfxml</b><i>);</i> <b><br />
+raptor_set_statement_handler(</b><i>p</i><b>,</b><i>NULL</i><b>,</b><i>print_triples</i><b>);<br />
+raptor_uri *</b><i>file_uri</i><b>=</b><i>raptor_new_uri(</i><b>world</b><i>,</i><b>http://example.org/</b><i>);</i> <b><br />
+raptor_parser_parse_file(</b><i>p</i><b>,</b><i>file_uri</i><b>,</b><i>base_uri</i><b>);<br />
+raptor_parser_parse_uri(</b><i>p</i><b>,</b><i>uri</i><b>,</b><i>NULL</i><b>);<br />
+raptor_free_parser(</b><i>p</i><b>);<br />
+raptor_free_uri(</b><i>file_uri</i><b>);<br />
+raptor_free_world(</b><i>world</i><b>);</b></p>
+<p style="margin-left:11%; margin-top: 1em"><b>cc prog.c -o prog &rsquo;pkg-config raptor2 --cflags&rsquo; &rsquo;pkg-config raptor2 --libs&rsquo;</b></p>
+<h2>DESCRIPTION <a name="DESCRIPTION" id="DESCRIPTION"></a></h2>
+<p style="margin-left:11%; margin-top: 1em">The <i>Raptor</i> library provides a high-level interface to a set of parsers and serializers that generate Resource Description Framework (RDF) triples by parsing syntaxes or serialize the triples into syntaxes.</p>
+<p style="margin-left:11%; margin-top: 1em">The supported parsing syntaxes include RDF/XML, N-Triples, Turtle, TRiG, RSS tag soup (including all RSS and Atoms), GRDDL, RDF/JSON, RDFa and the serializing syntaxes include RDF/XML (3 varieties), N-Quads, N-Triples, Turtle, RSS 1.0, Atom 1.0, GraphViz DOT and RDF/JSON. The RDF/XML parser can use either <i>expat</i> or <i>libxml</i> XML parsers for providing the SAX event stream. The library functions are arranged in an object-oriented style with constructors, destructors and method calls. The statements and error messages are delivered via callback functions.</p>
+<p style="margin-left:11%; margin-top: 1em">Raptor also contains classes to support the RDF graph triples: a statement object containing term objects and support for RDF URI-References for both parsing them and resolving / retrieval of URIs.</p>
+<p style="margin-left:11%; margin-top: 1em">It some utility classes such as an I/O Stream abstraction for supporting reading and writing to and from a variety of locations, AVL Trees, String buffers and Sequences.</p>
+<p style="margin-left:11%; margin-top: 1em">Raptor uses Unicode strings for RDF literals and URIs and preserves them throughout the library. It uses the UTF-8 encoding of Unicode at the API for passing in or returning Unicode strings. It is intended that the preservation of Unicode for URIs supports Internationalized Resource Identifiers (IRIs).</p>
+<h2>API REFERENCE <a name="API_REFERENCE"></a></h2>
+<p style="margin-left:11%; margin-top: 1em">See the HTML API docs that may be installed system wide at /usr/share/gtk-doc/html/raptor2/ or on the web at <a href="http://librdf.org/raptor/api/">http://librdf.org/raptor/api/</a></p>
+<h2>API CHANGES <a name="API_CHANGES"></a></h2>
+<p style="margin-left:11%; margin-top: 1em">See the Raptor API docs changes section at <a href="http://librdf.org/raptor/api/raptor-changes.html">http://librdf.org/raptor/api/raptor-changes.html</a> and the upgrading information when converting from libraptor(1) code at <a href="http://librdf.org/raptor/UPGRADING.html">http://librdf.org/raptor/UPGRADING.html</a></p>
+<h2>CONFORMING TO <a name="CONFORMING_TO"></a></h2>
+<p style="margin-left:11%; margin-top: 1em"><i>RDF/XML Syntax (Revised)</i>, Dave Beckett (ed.) W3C Recommendation, <a href="http://www.w3.org/TR/rdf-syntax-grammar/">http://www.w3.org/TR/rdf-syntax-grammar/</a></p>
+<p style="margin-left:11%; margin-top: 1em"><i>N-Triples</i>, in <i>RDF Test Cases</i>, Jan Grant and Dave Beckett (eds.) W3C Recommendation, <a href="http://www.w3.org/TR/rdf-testcases/#ntriples">http://www.w3.org/TR/rdf-testcases/#ntriples</a></p>
+<p style="margin-left:11%; margin-top: 1em"><i>Turtle - Terse RDF Triple Language</i>, Dave Beckett, <a href="http://www.dajobe.org/2004/01/turtle/">http://www.dajobe.org/2004/01/turtle/</a></p>
+<p style="margin-left:11%; margin-top: 1em"><i>RSS 0.91 spec revision 3</i>, Dan Libby, Netscape, <a href="http://my.netscape.com/publish/formats/rss-spec-0.91.html">http://my.netscape.com/publish/formats/rss-spec-0.91.html</a></p>
+<p style="margin-left:11%; margin-top: 1em"><i>RDF Site Summary (RSS) 1.0</i>, <a href="http://purl.org/rss/1.0/spec">http://purl.org/rss/1.0/spec</a></p>
+<p style="margin-left:11%; margin-top: 1em"><i>Atom 1.0 syndication format</i>, RFC 4287, <a href="http://www.ietf.org/rfc/rfc4287.txt">http://www.ietf.org/rfc/rfc4287.txt</a></p>
+<p style="margin-left:11%; margin-top: 1em"><i>Gleaning Resource Descriptions from Dialects of Languages (GRDDL)</i>, Dan Connolly (ed.), W3C Recommendation, 2007-09-11, <a href="http://www.w3.org/TR/2007/REC-grddl-20070911/">http://www.w3.org/TR/2007/REC-grddl-20070911/</a></p>
+<p style="margin-left:11%; margin-top: 1em"><i>RDFa in XHTML: Syntax and Processing</i>, Ben Adida, Mark Birbeck, Shane McCarron, Steven Pemberton (eds.)<br />
+W3C Recommendation, 2008-10-14, <a href="http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014/">http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014/</a></p>
+<h2>SEE ALSO <a name="SEE_ALSO"></a></h2>
+<p style="margin-left:11%; margin-top: 1em"><b>rapper(1)</b></p>
+<h2>AUTHOR <a name="AUTHOR" id="AUTHOR"></a></h2>
+<p style="margin-left:11%; margin-top: 1em">Dave Beckett - <a href="http://www.dajobe.org/">http://www.dajobe.org/</a></p>
+<hr />
+
+<p>Copyright 2002-2011 <a href="http://www.dajobe.org/">Dave Beckett</a><br />2002-2011 <a href="http://www.bristol.ac.uk/">University of Bristol</a></p>
+
+</body>
+</html>
diff --git a/docs/raptor-changes.xml b/docs/raptor-changes.xml
new file mode 100644
index 0000000..da10aa3
--- /dev/null
+++ b/docs/raptor-changes.xml
@@ -0,0 +1,1043 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="raptor2-changes">
+<title>API Changes</title>
+
+<para>This chapter describes the API changes for raptor2.
+</para>
+<section id="raptor2-changes-intro">
+<title>Introduction</title>
+
+<para>
+The following sections describe the changes in the API between
+versions including additions, deletions, renames (retaining the same
+number of parameters, types and return value type) and more complex
+changes to functions, types and enums.
+</para>
+
+</section>
+<section id="raptor2-changes-2-0-7-to-2-0-8">
+<title>Changes between raptor2 2.0.7 and 2.0.8</title>
+
+<section id="raptor2-changes-new-2-0-7-to-2-0-8">
+<title>New functions, types and enums</title>
+
+ <itemizedlist>
+ <title>Functions</title>
+ <listitem><para>raptor_uri* <link linkend="raptor-new-uri-relative-to-base-counted"><function>raptor_new_uri_relative_to_base_counted</function></link>(raptor_world* world, raptor_uri *base_uri, const unsigned char *uri_string, size_t uri_len) </para></listitem>
+ <listitem><para>unsigned char* <link linkend="raptor-term-to-turtle-counted-string"><function>raptor_term_to_turtle_counted_string</function></link>(raptor_term* term, raptor_namespace_stack *nstack, raptor_uri *base_uri, size_t *len_p) </para></listitem>
+ <listitem><para>unsigned char* <link linkend="raptor-term-to-turtle-string"><function>raptor_term_to_turtle_string</function></link>(raptor_term* term, raptor_namespace_stack *nstack, raptor_uri *base_uri) </para></listitem>
+ <listitem><para>int <link linkend="raptor-term-turtle-write"><function>raptor_term_turtle_write</function></link>(raptor_iostream* iostr, raptor_term* term, raptor_namespace_stack *nstack, raptor_uri *base_uri) </para></listitem>
+ <listitem><para>unsigned char* <link linkend="raptor-uri-to-turtle-counted-string"><function>raptor_uri_to_turtle_counted_string</function></link>(raptor_world *world, raptor_uri* uri, raptor_namespace_stack *nstack, raptor_uri *base_uri, size_t *len_p) </para></listitem>
+ <listitem><para>unsigned char* <link linkend="raptor-uri-to-turtle-string"><function>raptor_uri_to_turtle_string</function></link>(raptor_world *world, raptor_uri* uri, raptor_namespace_stack *nstack, raptor_uri *base_uri) </para></listitem>
+ <listitem><para>int <link linkend="raptor-uri-turtle-write"><function>raptor_uri_turtle_write</function></link>(raptor_world *world, raptor_iostream* iostr, raptor_uri* uri, raptor_namespace_stack *nstack, raptor_uri *base_uri) </para></listitem>
+ </itemizedlist>
+
+</section>
+
+</section>
+<section id="raptor2-changes-2-0-6-to-2-0-7">
+<title>Changes between raptor2 2.0.6 and 2.0.7</title>
+
+<section id="raptor2-changes-new-2-0-6-to-2-0-7">
+<title>New functions, types and enums</title>
+
+ <itemizedlist>
+ <title>Functions</title>
+ <listitem><para>raptor_uri* <link linkend="raptor-new-uri-from-uri-or-file-string"><function>raptor_new_uri_from_uri_or_file_string</function></link>(raptor_world* world, raptor_uri* base_uri, const unsigned char* uri_or_file_string) </para></listitem>
+ <listitem><para>void <link linkend="raptor-sax2-set-uri-filter"><function>raptor_sax2_set_uri_filter</function></link>(raptor_sax2* sax2, raptor_uri_filter_func filter, void *user_data) </para></listitem>
+ <listitem><para>int <link linkend="raptor-uri-file-exists"><function>raptor_uri_file_exists</function></link>(raptor_uri* uri) </para></listitem>
+ <listitem><para>int <link linkend="raptor-uri-filename-exists"><function>raptor_uri_filename_exists</function></link>(const unsigned char* path) </para></listitem>
+ <listitem><para>char* <link linkend="raptor-uri-uri-string-to-counted-filename-fragment"><function>raptor_uri_uri_string_to_counted_filename_fragment</function></link>(const unsigned char *uri_string, size_t* len_p, unsigned char **fragment_p, size_t* fragment_len_p) </para></listitem>
+ <listitem><para>int <link linkend="raptor-www-set-ssl-verify-options"><function>raptor_www_set_ssl_verify_options</function></link>(raptor_www* www, int verify_peer, int verify_host) </para></listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <title>Enums</title>
+ <listitem><para><link linkend="RAPTOR-OPTION-LOAD-EXTERNAL-ENTITIES:CAPS"><literal>RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-OPTION-NO-FILE:CAPS"><literal>RAPTOR_OPTION_NO_FILE</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-OPTION-WWW-SSL-VERIFY-HOST:CAPS"><literal>RAPTOR_OPTION_WWW_SSL_VERIFY_HOST</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-OPTION-WWW-SSL-VERIFY-PEER:CAPS"><literal>RAPTOR_OPTION_WWW_SSL_VERIFY_PEER</literal></link> </para></listitem>
+ </itemizedlist>
+
+</section>
+
+</section>
+<section id="raptor2-changes-2-0-5-to-2-0-6">
+<title>Changes between raptor2 2.0.5 and 2.0.6</title>
+
+<section id="raptor2-changes-new-2-0-5-to-2-0-6">
+<title>New functions, types and enums</title>
+
+ <itemizedlist>
+ <title>Functions</title>
+ <listitem><para>int <link linkend="raptor-sequence-next-permutation"><function>raptor_sequence_next_permutation</function></link>(raptor_sequence *seq, raptor_data_compare_handler compare) </para></listitem>
+ <listitem><para>int <link linkend="raptor-sequence-reverse"><function>raptor_sequence_reverse</function></link>(raptor_sequence* seq, int start_index, int length) </para></listitem>
+ <listitem><para>int <link linkend="raptor-sequence-swap"><function>raptor_sequence_swap</function></link>(raptor_sequence* seq, int i, int j) </para></listitem>
+ </itemizedlist>
+
+</section>
+
+</section>
+<section id="raptor2-changes-2-0-4-to-2-0-5">
+<title>Changes between raptor2 2.0.4 and 2.0.5</title>
+
+<section id="raptor2-changes-new-2-0-4-to-2-0-5">
+<title>New functions, types and enums</title>
+
+ <itemizedlist>
+ <title>Functions</title>
+ <listitem><para>int <link linkend="raptor-snprintf"><function>raptor_snprintf</function></link>(char *buffer, size_t size, const char *format, ...) </para></listitem>
+ <listitem><para>int <link linkend="raptor-unicode-utf8-strlen"><function>raptor_unicode_utf8_strlen</function></link>(const unsigned char *string, size_t length) </para></listitem>
+ <listitem><para>size_t <link linkend="raptor-unicode-utf8-substr"><function>raptor_unicode_utf8_substr</function></link>(unsigned char* dest, size_t* dest_length_p, const unsigned char* src, size_t src_length, int startingLoc, int length) </para></listitem>
+ <listitem><para>int <link linkend="raptor-vasprintf"><function>raptor_vasprintf</function></link>(char **ret, const char *format, va_list arguments) </para></listitem>
+ <listitem><para>int <link linkend="raptor-vsnprintf2"><function>raptor_vsnprintf2</function></link>(char *buffer, size_t size, const char *format, va_list arguments) - Deprecates <link linkend="raptor-vsnprintf"><function>raptor_vsnprintf</function></link>()</para></listitem>
+ </itemizedlist>
+
+</section>
+
+</section>
+<section id="raptor2-changes-2-0-3-to-2-0-4">
+<title>Changes between raptor2 2.0.3 and 2.0.4</title>
+
+<section id="raptor2-changes-new-2-0-3-to-2-0-4">
+<title>New functions, types and enums</title>
+
+ <itemizedlist>
+ <title>Functions</title>
+ <listitem><para>int <link linkend="raptor-bnodeid-ntriples-write"><function>raptor_bnodeid_ntriples_write</function></link>(const unsigned char *bnodeid, size_t len, raptor_iostream *iostr) </para></listitem>
+ <listitem><para>int <link linkend="raptor-www-set-ssl-cert-options"><function>raptor_www_set_ssl_cert_options</function></link>(raptor_www* www, const char* cert_filename, const char* cert_type, const char* cert_passphrase) </para></listitem>
+ </itemizedlist>
+
+</section>
+
+</section>
+<section id="raptor2-changes-1-4-21-to-2-0-0">
+<title>Changes between raptor2 1.4.21 and 2.0.0</title>
+
+<section id="raptor2-changes-new-1-4-21-to-2-0-0">
+<title>New functions, types and enums</title>
+
+ <itemizedlist>
+ <title>Functions</title>
+ <listitem><para>int <link linkend="raptor-avltree-add"><function>raptor_avltree_add</function></link>(raptor_avltree* tree, void* p_data) </para></listitem>
+ <listitem><para>int <link linkend="raptor-avltree-delete"><function>raptor_avltree_delete</function></link>(raptor_avltree* tree, void* p_data) </para></listitem>
+ <listitem><para>void* <link linkend="raptor-avltree-iterator-get"><function>raptor_avltree_iterator_get</function></link>(raptor_avltree_iterator* iterator) </para></listitem>
+ <listitem><para>int <link linkend="raptor-avltree-iterator-is-end"><function>raptor_avltree_iterator_is_end</function></link>(raptor_avltree_iterator* iterator) </para></listitem>
+ <listitem><para>int <link linkend="raptor-avltree-iterator-next"><function>raptor_avltree_iterator_next</function></link>(raptor_avltree_iterator* iterator) </para></listitem>
+ <listitem><para>int <link linkend="raptor-avltree-print"><function>raptor_avltree_print</function></link>(raptor_avltree* tree, FILE* stream) </para></listitem>
+ <listitem><para>void* <link linkend="raptor-avltree-remove"><function>raptor_avltree_remove</function></link>(raptor_avltree* tree, void* p_data) </para></listitem>
+ <listitem><para>void* <link linkend="raptor-avltree-search"><function>raptor_avltree_search</function></link>(raptor_avltree* tree, const void* p_data) </para></listitem>
+ <listitem><para>void <link linkend="raptor-avltree-set-print-handler"><function>raptor_avltree_set_print_handler</function></link>(raptor_avltree* tree, raptor_data_print_handler print_handler) </para></listitem>
+ <listitem><para>int <link linkend="raptor-avltree-size"><function>raptor_avltree_size</function></link>(raptor_avltree* tree) </para></listitem>
+ <listitem><para>int <link linkend="raptor-avltree-visit"><function>raptor_avltree_visit</function></link>(raptor_avltree* tree, raptor_avltree_visit_handler visit_handler, void* user_data) </para></listitem>
+ <listitem><para>const char* <link linkend="raptor-domain-get-label"><function>raptor_domain_get_label</function></link>(raptor_domain domain) </para></listitem>
+ <listitem><para>void <link linkend="raptor-free-avltree"><function>raptor_free_avltree</function></link>(raptor_avltree* tree) </para></listitem>
+ <listitem><para>void <link linkend="raptor-free-avltree-iterator"><function>raptor_free_avltree_iterator</function></link>(raptor_avltree_iterator* iterator) </para></listitem>
+ <listitem><para>void <link linkend="raptor-free-option-description"><function>raptor_free_option_description</function></link>(raptor_option_description* option_description) </para></listitem>
+ <listitem><para>void <link linkend="raptor-free-statement"><function>raptor_free_statement</function></link>(raptor_statement *statement) </para></listitem>
+ <listitem><para>void <link linkend="raptor-free-term"><function>raptor_free_term</function></link>(raptor_term *term) </para></listitem>
+ <listitem><para>const char* <link linkend="raptor-log-level-get-label"><function>raptor_log_level_get_label</function></link>(raptor_log_level level) </para></listitem>
+ <listitem><para>raptor_avltree* <link linkend="raptor-new-avltree"><function>raptor_new_avltree</function></link>(raptor_data_compare_handler compare_handler, raptor_data_free_handler free_handler, unsigned int flags) </para></listitem>
+ <listitem><para>raptor_avltree_iterator* <link linkend="raptor-new-avltree-iterator"><function>raptor_new_avltree_iterator</function></link>(raptor_avltree* tree, void* range, raptor_data_free_handler range_free_handler, int direction) </para></listitem>
+ <listitem><para>raptor_sequence* <link linkend="raptor-new-sequence-with-context"><function>raptor_new_sequence_with_context</function></link>(raptor_data_context_free_handler* free_handler, raptor_data_context_print_handler* print_handler, void* handler_context) </para></listitem>
+ <listitem><para>raptor_statement* <link linkend="raptor-new-statement"><function>raptor_new_statement</function></link>(raptor_world *world) </para></listitem>
+ <listitem><para>raptor_statement* <link linkend="raptor-new-statement-from-nodes"><function>raptor_new_statement_from_nodes</function></link>(raptor_world* world, raptor_term *subject, raptor_term *predicate, raptor_term *object, raptor_term *graph) </para></listitem>
+ <listitem><para>raptor_term* <link linkend="raptor-new-term-from-blank"><function>raptor_new_term_from_blank</function></link>(raptor_world* world, const unsigned char* blank) </para></listitem>
+ <listitem><para>raptor_term* <link linkend="raptor-new-term-from-counted-blank"><function>raptor_new_term_from_counted_blank</function></link>(raptor_world* world, const unsigned char* blank, size_t length) </para></listitem>
+ <listitem><para>raptor_term* <link linkend="raptor-new-term-from-counted-literal"><function>raptor_new_term_from_counted_literal</function></link>(raptor_world* world, const unsigned char* literal, size_t literal_len, raptor_uri* datatype, const unsigned char* language, unsigned char language_len) </para></listitem>
+ <listitem><para>raptor_term* <link linkend="raptor-new-term-from-literal"><function>raptor_new_term_from_literal</function></link>(raptor_world* world, const unsigned char* literal, raptor_uri* datatype, const unsigned char* language) </para></listitem>
+ <listitem><para>raptor_term* <link linkend="raptor-new-term-from-uri"><function>raptor_new_term_from_uri</function></link>(raptor_world* world, raptor_uri* uri) </para></listitem>
+ <listitem><para>raptor_uri* <link linkend="raptor-new-uri-from-counted-string"><function>raptor_new_uri_from_counted_string</function></link>(raptor_world* world, const unsigned char* uri_string, size_t length) </para></listitem>
+ <listitem><para>const char* <link linkend="raptor-option-get-value-type-label"><function>raptor_option_get_value_type_label</function></link>(const raptor_option_value_type type) </para></listitem>
+ <listitem><para>raptor_uri* <link linkend="raptor-parser-get-graph"><function>raptor_parser_get_graph</function></link>(raptor_parser* rdf_parser) </para></listitem>
+ <listitem><para>int <link linkend="raptor-parser-parse-iostream"><function>raptor_parser_parse_iostream</function></link>(raptor_parser* rdf_parser, raptor_iostream *iostr, raptor_uri *base_uri) </para></listitem>
+ <listitem><para>int <link linkend="raptor-serializer-flush"><function>raptor_serializer_flush</function></link>(raptor_serializer *rdf_serializer) </para></listitem>
+ <listitem><para>raptor_syntax_description* <link linkend="raptor-serializer-get-description"><function>raptor_serializer_get_description</function></link>(raptor_serializer* rdf_serializer) </para></listitem>
+ <listitem><para>void <link linkend="raptor-statement-clear"><function>raptor_statement_clear</function></link>(raptor_statement *statement) </para></listitem>
+ <listitem><para>raptor_statement* <link linkend="raptor-statement-copy"><function>raptor_statement_copy</function></link>(raptor_statement *statement) </para></listitem>
+ <listitem><para>int <link linkend="raptor-statement-equals"><function>raptor_statement_equals</function></link>(const raptor_statement* s1, const raptor_statement* s2) </para></listitem>
+ <listitem><para>void <link linkend="raptor-statement-init"><function>raptor_statement_init</function></link>(raptor_statement *statement, raptor_world *world) </para></listitem>
+ <listitem><para>int <link linkend="raptor-syntax-description-validate"><function>raptor_syntax_description_validate</function></link> (raptor_syntax_description* desc) </para></listitem>
+ <listitem><para>int <link linkend="raptor-term-compare"><function>raptor_term_compare</function></link>(const raptor_term *t1, const raptor_term *t2) </para></listitem>
+ <listitem><para>raptor_term* <link linkend="raptor-term-copy"><function>raptor_term_copy</function></link>(raptor_term* term) </para></listitem>
+ <listitem><para>int <link linkend="raptor-term-equals"><function>raptor_term_equals</function></link>(raptor_term* term1, raptor_term* term2) </para></listitem>
+ <listitem><para>int <link linkend="raptor-term-ntriples-write"><function>raptor_term_ntriples_write</function></link>(const raptor_term *term, raptor_iostream* iostr) </para></listitem>
+ <listitem><para>unsigned char* <link linkend="raptor-term-to-counted-string"><function>raptor_term_to_counted_string</function></link>(raptor_term *term, size_t* len_p) </para></listitem>
+ <listitem><para>unsigned char* <link linkend="raptor-term-to-string"><function>raptor_term_to_string</function></link>(raptor_term *term) </para></listitem>
+ <listitem><para>raptor_world* <link linkend="raptor-uri-get-world"><function>raptor_uri_get_world</function></link>(raptor_uri *uri) </para></listitem>
+ <listitem><para>unsigned char* <link linkend="raptor-world-generate-bnodeid"><function>raptor_world_generate_bnodeid</function></link>(raptor_world *world) </para></listitem>
+ <listitem><para>raptor_option_description* <link linkend="raptor-world-get-option-description"><function>raptor_world_get_option_description</function></link>(raptor_world* world, const raptor_domain domain, const raptor_option option) </para></listitem>
+ <listitem><para>int <link linkend="raptor-world-is-parser-name"><function>raptor_world_is_parser_name</function></link>(raptor_world* world, const char* name) </para></listitem>
+ <listitem><para>int <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>(raptor_world *world, void *user_data, raptor_log_handler handler) </para></listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <title>Types</title>
+ <listitem><para><link linkend="raptor-avltree"><type>raptor_avltree</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-avltree-bitflags"><type>raptor_avltree_bitflags</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-avltree-iterator"><type>raptor_avltree_iterator</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-avltree-visit-handler"><type>raptor_avltree_visit_handler</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-data-compare-handler"><type>raptor_data_compare_handler</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-data-context-free-handler"><type>raptor_data_context_free_handler</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-data-malloc-handler"><type>raptor_data_malloc_handler</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-domain"><type>raptor_domain</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-graph-mark-flags"><type>raptor_graph_mark_flags</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-log-message"><type>raptor_log_message</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-option-description"><type>raptor_option_description</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-option-value-type"><type>raptor_option_value_type</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-syntax-bitflags"><type>raptor_syntax_bitflags</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-syntax-description"><type>raptor_syntax_description</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-term-blank-value"><type>raptor_term_blank_value</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-term-literal-value"><type>raptor_term_literal_value</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-term-value"><type>raptor_term_value</type></link> </para></listitem>
+ <listitem><para><link linkend="raptor-type-q"><type>raptor_type_q</type></link> </para></listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <title>Enums</title>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-IOSTREAM:CAPS"><literal>RAPTOR_DOMAIN_IOSTREAM</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-LAST:CAPS"><literal>RAPTOR_DOMAIN_LAST</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-NAMESPACE:CAPS"><literal>RAPTOR_DOMAIN_NAMESPACE</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-NONE:CAPS"><literal>RAPTOR_DOMAIN_NONE</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-PARSER:CAPS"><literal>RAPTOR_DOMAIN_PARSER</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-QNAME:CAPS"><literal>RAPTOR_DOMAIN_QNAME</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-SAX2:CAPS"><literal>RAPTOR_DOMAIN_SAX2</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-SERIALIZER:CAPS"><literal>RAPTOR_DOMAIN_SERIALIZER</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-TERM:CAPS"><literal>RAPTOR_DOMAIN_TERM</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-TURTLE-WRITER:CAPS"><literal>RAPTOR_DOMAIN_TURTLE_WRITER</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-URI:CAPS"><literal>RAPTOR_DOMAIN_URI</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-WORLD:CAPS"><literal>RAPTOR_DOMAIN_WORLD</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-WWW:CAPS"><literal>RAPTOR_DOMAIN_WWW</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-DOMAIN-XML-WRITER:CAPS"><literal>RAPTOR_DOMAIN_XML_WRITER</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-GRAPH-MARK-DECLARED:CAPS"><literal>RAPTOR_GRAPH_MARK_DECLARED</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-GRAPH-MARK-START:CAPS"><literal>RAPTOR_GRAPH_MARK_START</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-LOG-LEVEL-DEBUG:CAPS"><literal>RAPTOR_LOG_LEVEL_DEBUG</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-LOG-LEVEL-INFO:CAPS"><literal>RAPTOR_LOG_LEVEL_INFO</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-LOG-LEVEL-TRACE:CAPS"><literal>RAPTOR_LOG_LEVEL_TRACE</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-OPTION-VALUE-TYPE-BOOL:CAPS"><literal>RAPTOR_OPTION_VALUE_TYPE_BOOL</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-OPTION-VALUE-TYPE-INT:CAPS"><literal>RAPTOR_OPTION_VALUE_TYPE_INT</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-OPTION-VALUE-TYPE-LAST:CAPS"><literal>RAPTOR_OPTION_VALUE_TYPE_LAST</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-OPTION-VALUE-TYPE-STRING:CAPS"><literal>RAPTOR_OPTION_VALUE_TYPE_STRING</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-OPTION-VALUE-TYPE-URI:CAPS"><literal>RAPTOR_OPTION_VALUE_TYPE_URI</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-WORLD-FLAG-URI-INTERNING:CAPS"><literal>RAPTOR_WORLD_FLAG_URI_INTERNING</literal></link> </para></listitem>
+ <listitem><para><link linkend="RAPTOR-WORLD-FLAG-WWW-SKIP-INIT-FINISH:CAPS"><literal>RAPTOR_WORLD_FLAG_WWW_SKIP_INIT_FINISH</literal></link> </para></listitem>
+ </itemizedlist>
+
+</section>
+<section id="raptor2-changes-deleted-1-4-21-to-2-0-0">
+<title>Deleted functions, types and enums</title>
+
+ <itemizedlist>
+ <title>Functions</title>
+ <listitem><para>raptor_compare_strings - Trivial utility function removed.</para></listitem>
+ <listitem><para>raptor_copy_identifier - Use <link linkend="raptor-term-copy"><function>raptor_term_copy</function></link>() with <link linkend="raptor-term"><type>raptor_term</type></link> objects.</para></listitem>
+ <listitem><para>raptor_error_handlers_init - Replaced by generic raptor log mechanism. See <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>()</para></listitem>
+ <listitem><para>raptor_error_handlers_init_v2 - Replaced by generic raptor log mechanism. See <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>()</para></listitem>
+ <listitem><para>raptor_feature_value_type - Use <link linkend="raptor-world-get-option-description"><function>raptor_world_get_option_description</function></link>() for the option and access the value_type field.</para></listitem>
+ <listitem><para>raptor_finish - Use <link linkend="raptor-free-world"><function>raptor_free_world</function></link>() with <link linkend="raptor-world"><type>raptor_world</type></link> object.</para></listitem>
+ <listitem><para>raptor_free_identifier - Use <link linkend="raptor-free-term"><function>raptor_free_term</function></link>() with <link linkend="raptor-term"><type>raptor_term</type></link> objects.</para></listitem>
+ <listitem><para>raptor_init - Use <link linkend="raptor-new-world"><function>raptor_new_world</function></link>() to create a new <link linkend="raptor-world"><type>raptor_world</type></link> object.</para></listitem>
+ <listitem><para>raptor_iostream_get_bytes_written_count - Deprecated for <link linkend="raptor-iostream-tell"><function>raptor_iostream_tell</function></link>().</para></listitem>
+ <listitem><para>raptor_iostream_write_string_turtle - Deprecated for <link linkend="raptor-string-python-write"><function>raptor_string_python_write</function></link>().</para></listitem>
+ <listitem><para>raptor_new_identifier - Replaced by <link linkend="raptor-new-term-from-blank"><function>raptor_new_term_from_blank</function></link>(), <link linkend="raptor-new-term-from-literal"><function>raptor_new_term_from_literal</function></link>() or <link linkend="raptor-new-term-from-blank"><function>raptor_new_term_from_blank</function></link>() and <link linkend="raptor-term"><type>raptor_term</type></link> class.</para></listitem>
+ <listitem><para>raptor_new_identifier_v2 - Replaced by <link linkend="raptor-new-term-from-blank"><function>raptor_new_term_from_blank</function></link>(), <link linkend="raptor-new-term-from-literal"><function>raptor_new_term_from_literal</function></link>() or <link linkend="raptor-new-term-from-blank"><function>raptor_new_term_from_blank</function></link>() and <link linkend="raptor-term"><type>raptor_term</type></link> class.</para></listitem>
+ <listitem><para>raptor_ntriples_string_as_utf8_string - Deprecated internal debug function.</para></listitem>
+ <listitem><para>raptor_ntriples_term_as_string - Deprecated internal debug function.</para></listitem>
+ <listitem><para>raptor_print_ntriples_string - Use <link linkend="raptor-string-ntriples-write"><function>raptor_string_ntriples_write</function></link>() with a <link linkend="raptor-iostream"><type>raptor_iostream</type></link></para></listitem>
+ <listitem><para>raptor_print_statement_detailed - Deprecated internal function.</para></listitem>
+ <listitem><para>raptor_sequence_print_string - Trivial utility function removed.</para></listitem>
+ <listitem><para>raptor_sequence_print_uri - Deprecated for <link linkend="raptor-uri-print"><function>raptor_uri_print</function></link>()</para></listitem>
+ <listitem><para>raptor_sequence_set_print_handler - Use the argument in the <link linkend="raptor-new-sequence"><function>raptor_new_sequence</function></link>() constructor instead.</para></listitem>
+ <listitem><para>raptor_sequence_set_print_handler_v2 - Use the argument in the <link linkend="raptor-new-sequence"><function>raptor_new_sequence</function></link>() constructor instead.</para></listitem>
+ <listitem><para>raptor_serializer_set_error_handler - Replaced by <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>() on the <link linkend="raptor-world"><type>raptor_world</type></link> object.</para></listitem>
+ <listitem><para>raptor_serializer_set_warning_handler - Replaced by <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>() on the <link linkend="raptor-world"><type>raptor_world</type></link> object.</para></listitem>
+ <listitem><para>raptor_set_error_handler - Replaced by <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>() on the <link linkend="raptor-world"><type>raptor_world</type></link> object.</para></listitem>
+ <listitem><para>raptor_set_fatal_error_handler - Replaced by <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>() on the <link linkend="raptor-world"><type>raptor_world</type></link> object.</para></listitem>
+ <listitem><para>raptor_set_parser_strict - Replaced by <link linkend="raptor-parser-set-option"><function>raptor_parser_set_option</function></link>() with option <link linkend="RAPTOR-OPTION-STRICT:CAPS"><literal>RAPTOR_OPTION_STRICT</literal></link></para></listitem>
+ <listitem><para>raptor_set_warning_handler - Replaced by <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>() on the <link linkend="raptor-world"><type>raptor_world</type></link> object.</para></listitem>
+ <listitem><para>raptor_statement_part_as_counted_string - Better done via methods of <link linkend="raptor-term"><type>raptor_term</type></link> class such as <link linkend="raptor-term-to-counted-string"><function>raptor_term_to_counted_string</function></link>().</para></listitem>
+ <listitem><para>raptor_statement_part_as_counted_string_v2 - Better done via methods of <link linkend="raptor-term"><type>raptor_term</type></link> class such as <link linkend="raptor-term-to-counted-string"><function>raptor_term_to_counted_string</function></link>().</para></listitem>
+ <listitem><para>raptor_statement_part_as_string - Better done via methods of <link linkend="raptor-term"><type>raptor_term</type></link> class such as <link linkend="raptor-term-to-string"><function>raptor_term_to_string</function></link>().</para></listitem>
+ <listitem><para>raptor_statement_part_as_string_v2 - Better done via methods of <link linkend="raptor-term"><type>raptor_term</type></link> class such as <link linkend="raptor-term-to-string"><function>raptor_term_to_string</function></link>().</para></listitem>
+ <listitem><para>raptor_uri_get_handler - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_uri_get_handler_v2 - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_uri_set_handler - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_uri_set_handler_v2 - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_www_finish - No need for this to be public.</para></listitem>
+ <listitem><para>raptor_www_finish_v2 - No need for this to be public.</para></listitem>
+ <listitem><para>raptor_www_init - No need for this to be public.</para></listitem>
+ <listitem><para>raptor_www_init_v2 - No need for this to be public.</para></listitem>
+ <listitem><para>raptor_www_no_www_library_init_finish - Deprecated for <link linkend="raptor-world-set-flag"><function>raptor_world_set_flag</function></link>().</para></listitem>
+ <listitem><para>raptor_www_no_www_library_init_finish_v2 - Deprecated for <link linkend="raptor-world-set-flag"><function>raptor_world_set_flag</function></link>().</para></listitem>
+ <listitem><para>raptor_www_set_error_handler - Replaced by <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>() on the <link linkend="raptor-world"><type>raptor_world</type></link> object.</para></listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <title>Types</title>
+ <listitem><para>raptor_error_handlers - Replaced by generic raptor log mechanism. See <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>()</para></listitem>
+ <listitem><para>raptor_free_uri_func - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_libxml_flags - replaced by <link linkend="raptor-world-set-flags"><function>raptor_world_set_flags</function></link>() with <link linkend="raptor-world-flag"><type>raptor_world_flag</type></link></para></listitem>
+ <listitem><para>raptor_message_handler - Replaced by generic raptor log mechanism. See <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>()</para></listitem>
+ <listitem><para>raptor_message_handler_closure - Replaced by generic raptor log mechanism. See <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>()</para></listitem>
+ <listitem><para>raptor_new_uri_for_rdf_concept_func - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_new_uri_from_uri_local_name_func - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_new_uri_func - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_new_uri_relative_to_base_func - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_ntriples_parser - replaced by <link linkend="raptor-parser"><type>raptor_parser</type></link></para></listitem>
+ <listitem><para>raptor_ntriples_term_type - replaced by <link linkend="raptor-term-type"><type>raptor_term_type</type></link></para></listitem>
+ <listitem><para>raptor_uri_as_counted_string_func - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_uri_as_string_func - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_uri_compare_func - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_uri_copy_func - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_uri_equals_func - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_uri_handler - Entire URI implementation is internal and not replaceable.</para></listitem>
+ <listitem><para>raptor_uri_source - URI source was useless.</para></listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <title>Enums</title>
+ <listitem><para>RAPTOR_FEATURE_ASSUME_IS_RDF - Never used.</para></listitem>
+ <listitem><para>RAPTOR_FEATURE_START_URI - Never used.</para></listitem>
+ <listitem><para>RAPTOR_GENID_TYPE_BAGID - There is just one type of generated ID now.</para></listitem>
+ <listitem><para>RAPTOR_GENID_TYPE_BNODEID - There is just one type of generated ID now.</para></listitem>
+ <listitem><para>RAPTOR_IDENTIFIER_TYPE_ORDINAL - Deprecated value deleted.</para></listitem>
+ <listitem><para>RAPTOR_URI_SOURCE_ATTRIBUTE - URI source concept removed.</para></listitem>
+ <listitem><para>RAPTOR_URI_SOURCE_BLANK_ID - URI source concept removed.</para></listitem>
+ <listitem><para>RAPTOR_URI_SOURCE_ELEMENT - URI source concept removed.</para></listitem>
+ <listitem><para>RAPTOR_URI_SOURCE_GENERATED - URI source concept removed.</para></listitem>
+ <listitem><para>RAPTOR_URI_SOURCE_ID - URI source concept removed.</para></listitem>
+ <listitem><para>RAPTOR_URI_SOURCE_NOT_URI - URI source concept removed.</para></listitem>
+ <listitem><para>RAPTOR_URI_SOURCE_UNKNOWN - URI source concept removed.</para></listitem>
+ <listitem><para>RAPTOR_URI_SOURCE_URI - URI source concept removed.</para></listitem>
+ </itemizedlist>
+
+</section>
+<section id="raptor2-changes-renamed-1-4-21-to-2-0-0">
+<title>Renamed function and enums</title>
+
+<table border='1'>
+ <thead>
+ </thead>
+ <tbody>
+ <tr>
+ <th>1.4.21 function</th>
+ <th>2.0.0 function</th>
+ <th>Notes</th>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_format_locator</td> <td><link linkend="raptor-locator-format"><function>raptor_locator_format</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_get_feature_count</td> <td><link linkend="raptor-option-get-count"><function>raptor_option_get_count</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_get_locator</td> <td><link linkend="raptor-parser-get-locator"><function>raptor_parser_get_locator</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_get_name</td> <td><link linkend="raptor-parser-get-name"><function>raptor_parser_get_name</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_guess_parser_name_v2</td> <td><link linkend="raptor-world-guess-parser-name"><function>raptor_world_guess_parser_name</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_namespace_copy</td> <td><link linkend="raptor-namespace-stack-start-namespace"><function>raptor_namespace_stack_start_namespace</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_namespaces_format</td> <td><link linkend="raptor-namespace-format-as-xml"><function>raptor_namespace_format_as_xml</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_namespaces_qname_from_uri</td> <td><link linkend="raptor-new-qname-from-namespace-uri"><function>raptor_new_qname_from_namespace_uri</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_new_namespace_parts_from_string</td> <td><link linkend="raptor-xml-namespace-string-parse"><function>raptor_xml_namespace_string_parse</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_new_parser_for_content_v2</td> <td><link linkend="raptor-new-parser-for-content"><function>raptor_new_parser_for_content</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_new_parser_v2</td> <td><link linkend="raptor-new-parser"><function>raptor_new_parser</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_new_qname_from_namespace_local_name_v2</td> <td><link linkend="raptor-new-qname-from-namespace-local-name"><function>raptor_new_qname_from_namespace_local_name</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_new_serializer_v2</td> <td><link linkend="raptor-new-serializer"><function>raptor_new_serializer</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_new_uri_from_id_v2</td> <td><link linkend="raptor-new-uri-from-id"><function>raptor_new_uri_from_id</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_new_uri_from_uri_local_name_v2</td> <td><link linkend="raptor-new-uri-from-uri-local-name"><function>raptor_new_uri_from_uri_local_name</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_new_uri_relative_to_base_v2</td> <td><link linkend="raptor-new-uri-relative-to-base"><function>raptor_new_uri_relative_to_base</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_new_uri_v2</td> <td><link linkend="raptor-new-uri"><function>raptor_new_uri</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_parse_abort</td> <td><link linkend="raptor-parser-parse-abort"><function>raptor_parser_parse_abort</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_parse_chunk</td> <td><link linkend="raptor-parser-parse-chunk"><function>raptor_parser_parse_chunk</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_parse_file</td> <td><link linkend="raptor-parser-parse-file"><function>raptor_parser_parse_file</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_parse_file_stream</td> <td><link linkend="raptor-parser-parse-file-stream"><function>raptor_parser_parse_file_stream</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_parse_uri</td> <td><link linkend="raptor-parser-parse-uri"><function>raptor_parser_parse_uri</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_parse_uri_with_connection</td> <td><link linkend="raptor-parser-parse-uri-with-connection"><function>raptor_parser_parse_uri_with_connection</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_serialize_end</td> <td><link linkend="raptor-serializer-serialize-end"><function>raptor_serializer_serialize_end</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_serialize_set_namespace</td> <td><link linkend="raptor-serializer-set-namespace"><function>raptor_serializer_set_namespace</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_serialize_set_namespace_from_namespace</td> <td><link linkend="raptor-serializer-set-namespace-from-namespace"><function>raptor_serializer_set_namespace_from_namespace</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_serialize_start</td> <td><link linkend="raptor-serializer-start-to-iostream"><function>raptor_serializer_start_to_iostream</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_serialize_start_to_file_handle</td> <td><link linkend="raptor-serializer-start-to-file-handle"><function>raptor_serializer_start_to_file_handle</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_serialize_start_to_filename</td> <td><link linkend="raptor-serializer-start-to-filename"><function>raptor_serializer_start_to_filename</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_serialize_start_to_iostream</td> <td><link linkend="raptor-serializer-start-to-iostream"><function>raptor_serializer_start_to_iostream</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_serialize_start_to_string</td> <td><link linkend="raptor-serializer-start-to-string"><function>raptor_serializer_start_to_string</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_serializer_syntax_name_check_v2</td> <td><link linkend="raptor-world-is-serializer-name"><function>raptor_world_is_serializer_name</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_set_namespace_handler</td> <td><link linkend="raptor-parser-set-namespace-handler"><function>raptor_parser_set_namespace_handler</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_set_statement_handler</td> <td><link linkend="raptor-parser-set-statement-handler"><function>raptor_parser_set_statement_handler</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_start_parse</td> <td><link linkend="raptor-parser-parse-start"><function>raptor_parser_parse_start</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_uri_is_file_uri</td> <td><link linkend="raptor-uri-uri-string-is-file-uri"><function>raptor_uri_uri_string_is_file_uri</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_utf8_check</td> <td><link linkend="raptor-unicode-check-utf8-string"><function>raptor_unicode_check_utf8_string</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_www_free</td> <td><link linkend="raptor-free-www"><function>raptor_free_www</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_www_new_v2</td> <td><link linkend="raptor-new-www"><function>raptor_new_www</function></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_www_new_with_connection_v2</td> <td><link linkend="raptor-new-www-with-connection"><function>raptor_new_www_with_connection</function></link></td> <td>&#160;</td>
+ </tr>
+ </tbody>
+</table>
+<table border='1'>
+ <thead>
+ </thead>
+ <tbody>
+ <tr>
+ <th>1.4.21 enum</th>
+ <th>2.0.0 enum</th>
+ <th>Notes</th>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_ALLOW_BAGID</td> <td><link linkend="RAPTOR-OPTION-ALLOW-BAGID:CAPS"><literal>RAPTOR_OPTION_ALLOW_BAGID</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_ALLOW_NON_NS_ATTRIBUTES</td> <td><link linkend="RAPTOR-OPTION-ALLOW-NON-NS-ATTRIBUTES:CAPS"><literal>RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_ALLOW_OTHER_PARSETYPES</td> <td><link linkend="RAPTOR-OPTION-ALLOW-OTHER-PARSETYPES:CAPS"><literal>RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_ALLOW_RDF_TYPE_RDF_LIST</td> <td><link linkend="RAPTOR-OPTION-ALLOW-RDF-TYPE-RDF-LIST:CAPS"><literal>RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_ATOM_ENTRY_URI</td> <td><link linkend="RAPTOR-OPTION-ATOM-ENTRY-URI:CAPS"><literal>RAPTOR_OPTION_ATOM_ENTRY_URI</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_BNODE_BORDER</td> <td><link linkend="RAPTOR-OPTION-BNODE-BORDER:CAPS"><literal>RAPTOR_OPTION_BNODE_BORDER</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_BNODE_FILL</td> <td><link linkend="RAPTOR-OPTION-BNODE-FILL:CAPS"><literal>RAPTOR_OPTION_BNODE_FILL</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_CHECK_RDF_ID</td> <td><link linkend="RAPTOR-OPTION-CHECK-RDF-ID:CAPS"><literal>RAPTOR_OPTION_CHECK_RDF_ID</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_HTML_LINK</td> <td><link linkend="RAPTOR-OPTION-HTML-LINK:CAPS"><literal>RAPTOR_OPTION_HTML_LINK</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_HTML_TAG_SOUP</td> <td><link linkend="RAPTOR-OPTION-HTML-TAG-SOUP:CAPS"><literal>RAPTOR_OPTION_HTML_TAG_SOUP</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_JSON_CALLBACK</td> <td><link linkend="RAPTOR-OPTION-JSON-CALLBACK:CAPS"><literal>RAPTOR_OPTION_JSON_CALLBACK</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_JSON_EXTRA_DATA</td> <td><link linkend="RAPTOR-OPTION-JSON-EXTRA-DATA:CAPS"><literal>RAPTOR_OPTION_JSON_EXTRA_DATA</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_LAST</td> <td><link linkend="RAPTOR-OPTION-LAST:CAPS"><literal>RAPTOR_OPTION_LAST</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_LITERAL_BORDER</td> <td><link linkend="RAPTOR-OPTION-LITERAL-BORDER:CAPS"><literal>RAPTOR_OPTION_LITERAL_BORDER</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_LITERAL_FILL</td> <td><link linkend="RAPTOR-OPTION-LITERAL-FILL:CAPS"><literal>RAPTOR_OPTION_LITERAL_FILL</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_MICROFORMATS</td> <td><link linkend="RAPTOR-OPTION-MICROFORMATS:CAPS"><literal>RAPTOR_OPTION_MICROFORMATS</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_NON_NFC_FATAL</td> <td><link linkend="RAPTOR-OPTION-NON-NFC-FATAL:CAPS"><literal>RAPTOR_OPTION_NON_NFC_FATAL</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_NORMALIZE_LANGUAGE</td> <td><link linkend="RAPTOR-OPTION-NORMALIZE-LANGUAGE:CAPS"><literal>RAPTOR_OPTION_NORMALIZE_LANGUAGE</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_NO_NET</td> <td><link linkend="RAPTOR-OPTION-NO-NET:CAPS"><literal>RAPTOR_OPTION_NO_NET</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_PREFIX_ELEMENTS</td> <td><link linkend="RAPTOR-OPTION-PREFIX-ELEMENTS:CAPS"><literal>RAPTOR_OPTION_PREFIX_ELEMENTS</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_RELATIVE_URIS</td> <td><link linkend="RAPTOR-OPTION-RELATIVE-URIS:CAPS"><literal>RAPTOR_OPTION_RELATIVE_URIS</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_RESOURCE_BORDER</td> <td><link linkend="RAPTOR-OPTION-RESOURCE-BORDER:CAPS"><literal>RAPTOR_OPTION_RESOURCE_BORDER</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_RESOURCE_FILL</td> <td><link linkend="RAPTOR-OPTION-RESOURCE-FILL:CAPS"><literal>RAPTOR_OPTION_RESOURCE_FILL</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_RSS_TRIPLES</td> <td><link linkend="RAPTOR-OPTION-RSS-TRIPLES:CAPS"><literal>RAPTOR_OPTION_RSS_TRIPLES</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_SCANNING </td> <td><link linkend="RAPTOR-OPTION-SCANNING:CAPS"><literal>RAPTOR_OPTION_SCANNING</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_WARN_OTHER_PARSETYPES</td> <td><link linkend="RAPTOR-OPTION-WARN-OTHER-PARSETYPES:CAPS"><literal>RAPTOR_OPTION_WARN_OTHER_PARSETYPES</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_WRITER_AUTO_EMPTY</td> <td><link linkend="RAPTOR-OPTION-WRITER-AUTO-EMPTY:CAPS"><literal>RAPTOR_OPTION_WRITER_AUTO_EMPTY</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_WRITER_AUTO_INDENT</td> <td><link linkend="RAPTOR-OPTION-WRITER-AUTO-INDENT:CAPS"><literal>RAPTOR_OPTION_WRITER_AUTO_INDENT</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_WRITER_INDENT_WIDTH</td> <td><link linkend="RAPTOR-OPTION-WRITER-INDENT-WIDTH:CAPS"><literal>RAPTOR_OPTION_WRITER_INDENT_WIDTH</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_WRITER_XML_DECLARATION</td> <td><link linkend="RAPTOR-OPTION-WRITER-XML-DECLARATION:CAPS"><literal>RAPTOR_OPTION_WRITER_XML_DECLARATION</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_WRITER_XML_VERSION</td> <td><link linkend="RAPTOR-OPTION-WRITER-XML-VERSION:CAPS"><literal>RAPTOR_OPTION_WRITER_XML_VERSION</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_WRITE_BASE_URI</td> <td><link linkend="RAPTOR-OPTION-WRITE-BASE-URI:CAPS"><literal>RAPTOR_OPTION_WRITE_BASE_URI</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_WWW_HTTP_CACHE_CONTROL</td> <td><link linkend="RAPTOR-OPTION-WWW-HTTP-CACHE-CONTROL:CAPS"><literal>RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_WWW_HTTP_USER_AGENT</td> <td><link linkend="RAPTOR-OPTION-WWW-HTTP-USER-AGENT:CAPS"><literal>RAPTOR_OPTION_WWW_HTTP_USER_AGENT</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_FEATURE_WWW_TIMEOUT</td> <td><link linkend="RAPTOR-OPTION-WWW-TIMEOUT:CAPS"><literal>RAPTOR_OPTION_WWW_TIMEOUT</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_IDENTIFIER_TYPE_ANONYMOUS</td> <td><link linkend="RAPTOR-TERM-TYPE-BLANK:CAPS"><literal>RAPTOR_TERM_TYPE_BLANK</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_IDENTIFIER_TYPE_LITERAL</td> <td><link linkend="RAPTOR-TERM-TYPE-LITERAL:CAPS"><literal>RAPTOR_TERM_TYPE_LITERAL</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_IDENTIFIER_TYPE_PREDICATE</td> <td><link linkend="RAPTOR-TERM-TYPE-URI:CAPS"><literal>RAPTOR_TERM_TYPE_URI</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_IDENTIFIER_TYPE_RESOURCE</td> <td><link linkend="RAPTOR-TERM-TYPE-URI:CAPS"><literal>RAPTOR_TERM_TYPE_URI</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_IDENTIFIER_TYPE_UNKNOWN</td> <td><link linkend="RAPTOR-TERM-TYPE-UNKNOWN:CAPS"><literal>RAPTOR_TERM_TYPE_UNKNOWN</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_IDENTIFIER_TYPE_XML_LITERAL</td> <td><link linkend="RAPTOR-TERM-TYPE-LITERAL:CAPS"><literal>RAPTOR_TERM_TYPE_LITERAL</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_LIBXML_FLAGS_GENERIC_ERROR_SAVE</td> <td><link linkend="RAPTOR-WORLD-FLAG-LIBXML-GENERIC-ERROR-SAVE:CAPS"><literal>RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE</literal></link></td> <td>Flag setting is done by <link linkend="raptor-world-set-flags"><function>raptor_world_set_flags</function></link>()</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_LIBXML_FLAGS_STRUCTURED_ERROR_SAVE</td> <td><link linkend="RAPTOR-WORLD-FLAG-LIBXML-STRUCTURED-ERROR-SAVE:CAPS"><literal>RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE</literal></link></td> <td>Flag setting is done by <link linkend="raptor-world-set-flags"><function>raptor_world_set_flags</function></link>()</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_LOG_LEVEL_WARNING</td> <td><link linkend="RAPTOR-LOG-LEVEL-WARN:CAPS"><literal>RAPTOR_LOG_LEVEL_WARN</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_NTRIPLES_TERM_TYPE_BLANK_NODE</td> <td><link linkend="RAPTOR-TERM-TYPE-BLANK:CAPS"><literal>RAPTOR_TERM_TYPE_BLANK</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_NTRIPLES_TERM_TYPE_LITERAL</td> <td><link linkend="RAPTOR-TERM-TYPE-LITERAL:CAPS"><literal>RAPTOR_TERM_TYPE_LITERAL</literal></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>RAPTOR_NTRIPLES_TERM_TYPE_URI_REF</td> <td><link linkend="RAPTOR-TERM-TYPE-URI:CAPS"><literal>RAPTOR_TERM_TYPE_URI</literal></link></td> <td>&#160;</td>
+ </tr>
+ </tbody>
+</table>
+
+</section>
+<section id="raptor2-changes-changed-1-4-21-to-2-0-0">
+<title>Changed functions and types</title>
+
+<table border='1'>
+ <thead>
+ </thead>
+ <tbody>
+ <tr>
+ <th>1.4.21 function</th>
+ <th>2.0.0 function</th>
+ <th>Notes</th>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_feature raptor_feature_from_uri(raptor_uri *uri)</td> <td>raptor_option <link linkend="raptor-world-get-option-from-uri"><function>raptor_world_get_option_from_uri</function></link>(raptor_world* world, raptor_uri *uri)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_feature raptor_feature_from_uri_v2(raptor_world* world, raptor_uri *uri)</td> <td>raptor_option <link linkend="raptor-world-get-option-from-uri"><function>raptor_world_get_option_from_uri</function></link>(raptor_world* world, raptor_uri *uri)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_features_enumerate(const raptor_feature feature, const char* *name, raptor_uri **uri, const char* *label)</td> <td>raptor_option_description* <link linkend="raptor-world-get-option-description"><function>raptor_world_get_option_description</function></link>(raptor_world* world, const raptor_domain domain, const raptor_option option)</td> <td>Call with domain = <link linkend="RAPTOR-DOMAIN-PARSER:CAPS"><literal>RAPTOR_DOMAIN_PARSER</literal></link></td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_features_enumerate_v2(raptor_world* world, const raptor_feature feature, const char* *name, raptor_uri **uri, const char* *label)</td> <td>raptor_option_description* <link linkend="raptor-world-get-option-description"><function>raptor_world_get_option_description</function></link>(raptor_world* world, const raptor_domain domain, const raptor_option option)</td> <td>Call with domain = <link linkend="RAPTOR-DOMAIN-PARSER:CAPS"><literal>RAPTOR_DOMAIN_PARSER</literal></link></td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_format_locator_v2(raptor_world* world, char* buffer, size_t length, raptor_locator* locator)</td> <td>int <link linkend="raptor-locator-format"><function>raptor_locator_format</function></link>(char* buffer, size_t length, raptor_locator* locator)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_free_uri_v2(raptor_world* world, raptor_uri *uri)</td> <td>void <link linkend="raptor-free-uri"><function>raptor_free_uri</function></link>(raptor_uri *uri)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_get_feature(raptor_parser *parser, raptor_feature feature)</td> <td>int <link linkend="raptor-parser-get-option"><function>raptor_parser_get_option</function></link>(raptor_parser *parser, raptor_option option, char** string_p, int* integer_p)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>const char* raptor_get_label(raptor_parser *rdf_parser)</td> <td>raptor_syntax_description* <link linkend="raptor-parser-get-description"><function>raptor_parser_get_description</function></link>(raptor_parser* rdf_parser)</td> <td>Use label field of returned description.</td>
+ </tr>
+ <tr valign='top'>
+ <td>const char* raptor_get_mime_type(raptor_parser *rdf_parser)</td> <td>raptor_syntax_description* <link linkend="raptor-parser-get-description"><function>raptor_parser_get_description</function></link>(raptor_parser* rdf_parser)</td> <td>Use the mime_types array field of returned <link linkend="raptor-syntax-description"><type>raptor_syntax_description</type></link></td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_get_need_base_uri(raptor_parser *rdf_parser)</td> <td>raptor_syntax_description* <link linkend="raptor-parser-get-description"><function>raptor_parser_get_description</function></link>(raptor_parser* rdf_parser)</td> <td>Use the <link linkend="RAPTOR-SYNTAX-NEED-BASE-URI:CAPS"><literal>RAPTOR_SYNTAX_NEED_BASE_URI</literal></link> bitflag in the flags field of the returned <link linkend="raptor-syntax-description"><type>raptor_syntax_description</type></link></td>
+ </tr>
+ <tr valign='top'>
+ <td>const char* raptor_guess_parser_name(raptor_uri *uri, const char* mime_type, const unsigned char* buffer, size_t len, const unsigned char* identifier)</td> <td>const char* <link linkend="raptor-world-guess-parser-name"><function>raptor_world_guess_parser_name</function></link>(raptor_world* world, raptor_uri *uri, const char* mime_type, const unsigned char* buffer, size_t len, const unsigned char* identifier)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_format_hexadecimal(raptor_iostream* iostr, unsigned int integer, int width)</td> <td>int <link linkend="raptor-iostream-hexadecimal-write"><function>raptor_iostream_hexadecimal_write</function></link>(unsigned int integer, int width, raptor_iostream* iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_read_bytes(raptor_iostream* iostr, void *ptr, size_t size, size_t nmemb)</td> <td>int <link linkend="raptor-iostream-read-bytes"><function>raptor_iostream_read_bytes</function></link>(void *ptr, size_t size, size_t nmemb, raptor_iostream* iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_byte(raptor_iostream *iostr, const int byte)</td> <td>int <link linkend="raptor-iostream-write-byte"><function>raptor_iostream_write_byte</function></link>(const int byte, raptor_iostream *iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_bytes(raptor_iostream *iostr, const void *ptr, size_t size, size_t nmemb)</td> <td>int <link linkend="raptor-iostream-write-bytes"><function>raptor_iostream_write_bytes</function></link>(const void *ptr, size_t size, size_t nmemb, raptor_iostream *iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_counted_string(raptor_iostream *iostr, const void *string, size_t len)</td> <td>int <link linkend="raptor-iostream-counted-string-write"><function>raptor_iostream_counted_string_write</function></link>(const void *string, size_t len, raptor_iostream *iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_decimal(raptor_iostream* iostr, int integer)</td> <td>int <link linkend="raptor-iostream-decimal-write"><function>raptor_iostream_decimal_write</function></link>(int integer, raptor_iostream* iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_iostream_write_end(raptor_iostream *iostr)</td> <td>int <link linkend="raptor-iostream-write-end"><function>raptor_iostream_write_end</function></link>(raptor_iostream *iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_namespace(raptor_iostream* iostr, raptor_namespace *ns)</td> <td>int <link linkend="raptor-namespace-write"><function>raptor_namespace_write</function></link>(raptor_namespace *ns, raptor_iostream* iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_qname(raptor_iostream* iostr, raptor_qname *qname)</td> <td>int <link linkend="raptor-qname-write"><function>raptor_qname_write</function></link>(raptor_qname *qname, raptor_iostream* iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_iostream_write_statement_ntriples(raptor_iostream* iostr, const raptor_statement *statement)</td> <td>int <link linkend="raptor-statement-ntriples-write"><function>raptor_statement_ntriples_write</function></link>(const raptor_statement *statement, raptor_iostream* iostr, int write_graph_term)</td> <td>Gains extra flag arg to decide whether to write any graph term.</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_string(raptor_iostream *iostr, const void *string)</td> <td>int <link linkend="raptor-iostream-string-write"><function>raptor_iostream_string_write</function></link>(const void *string, raptor_iostream *iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_string_ntriples(raptor_iostream *iostr, const unsigned char* string, size_t len, const char delim)</td> <td>int <link linkend="raptor-string-ntriples-write"><function>raptor_string_ntriples_write</function></link>(const unsigned char* string, size_t len, const char delim, raptor_iostream *iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_string_python(raptor_iostream *iostr, const unsigned char* string, size_t len, const char delim, int flags)</td> <td>int <link linkend="raptor-string-python-write"><function>raptor_string_python_write</function></link>(const unsigned char* string, size_t len, const char delim, int flags, raptor_iostream *iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_stringbuffer(raptor_iostream* iostr, raptor_stringbuffer *sb)</td> <td>int <link linkend="raptor-stringbuffer-write"><function>raptor_stringbuffer_write</function></link>(raptor_stringbuffer *sb, raptor_iostream* iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_uri(raptor_iostream *iostr, raptor_uri *uri)</td> <td>int <link linkend="raptor-uri-write"><function>raptor_uri_write</function></link>(raptor_uri *uri, raptor_iostream *iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_uri_v2(raptor_world* world, raptor_iostream *iostr, raptor_uri *uri)</td> <td>int <link linkend="raptor-uri-write"><function>raptor_uri_write</function></link>(raptor_uri *uri, raptor_iostream *iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_xml_any_escaped_string(raptor_iostream* iostr, const unsigned char* string, size_t len, char quote, int xml_version, raptor_simple_message_handler error_handler, void *error_data)</td> <td>int <link linkend="raptor-xml-escape-string-any-write"><function>raptor_xml_escape_string_any_write</function></link>(const unsigned char* string, size_t len, char quote, int xml_version, raptor_iostream* iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_xml_element(raptor_iostream *iostr, raptor_xml_element *element, raptor_namespace_stack *nstack, int is_empty, int is_end, raptor_simple_message_handler error_handler, void *error_data, int depth)</td> <td>int <link linkend="raptor-xml-element-write"><function>raptor_xml_element_write</function></link>(raptor_xml_element *element, raptor_namespace_stack *nstack, int is_empty, int is_end, int depth, raptor_iostream *iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_iostream_write_xml_escaped_string(raptor_iostream* iostr, const unsigned char* string, size_t len, char quote, raptor_simple_message_handler error_handler, void *error_data)</td> <td>int <link linkend="raptor-xml-escape-string-write"><function>raptor_xml_escape_string_write</function></link>(const unsigned char* string, size_t len, char quote, raptor_iostream* iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>const char* raptor_locator_uri_v2(raptor_world* world, raptor_locator *locator)</td> <td>const char* <link linkend="raptor-locator-uri"><function>raptor_locator_uri</function></link>(raptor_locator *locator)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_namespaces_init(raptor_namespace_stack *nstack, const raptor_uri_handler *uri_handler, void *uri_context, raptor_simple_message_handler error_handler, void *error_data, int defaults)</td> <td>int <link linkend="raptor-namespaces-init"><function>raptor_namespaces_init</function></link>(raptor_world* world, raptor_namespace_stack *nstack, int defaults)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_namespaces_init_v2(raptor_world* world, raptor_namespace_stack *nstack, raptor_simple_message_handler error_handler, void *error_data, int defaults)</td> <td>int <link linkend="raptor-namespaces-init"><function>raptor_namespaces_init</function></link>(raptor_world* world, raptor_namespace_stack *nstack, int defaults)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_iostream* raptor_new_iostream_from_file_handle(FILE *handle)</td> <td>raptor_iostream* <link linkend="raptor-new-iostream-from-file-handle"><function>raptor_new_iostream_from_file_handle</function></link>(raptor_world* world, FILE *handle)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_iostream* raptor_new_iostream_from_filename(const char* filename)</td> <td>raptor_iostream* <link linkend="raptor-new-iostream-from-filename"><function>raptor_new_iostream_from_filename</function></link>(raptor_world* world, const char* filename)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_iostream* raptor_new_iostream_from_handler(void *context, const raptor_iostream_handler *handler)</td> <td>raptor_iostream* <link linkend="raptor-new-iostream-from-handler"><function>raptor_new_iostream_from_handler</function></link>(raptor_world* world, void *user_data, const raptor_iostream_handler* const handler)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_iostream* raptor_new_iostream_from_handler2(void *user_data, const raptor_iostream_handler2* const handler2)</td> <td>raptor_iostream* <link linkend="raptor-new-iostream-from-handler"><function>raptor_new_iostream_from_handler</function></link>(raptor_world* world, void *user_data, const raptor_iostream_handler* const handler)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_iostream* raptor_new_iostream_from_sink(void)</td> <td>raptor_iostream* <link linkend="raptor-new-iostream-from-sink"><function>raptor_new_iostream_from_sink</function></link>(raptor_world* world)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_iostream* raptor_new_iostream_from_string(void *string, size_t length)</td> <td>raptor_iostream* <link linkend="raptor-new-iostream-from-string"><function>raptor_new_iostream_from_string</function></link>(raptor_world* world, void *string, size_t length)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_iostream* raptor_new_iostream_to_file_handle(FILE *handle)</td> <td>raptor_iostream* <link linkend="raptor-new-iostream-to-file-handle"><function>raptor_new_iostream_to_file_handle</function></link>(raptor_world* world, FILE *handle)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_iostream* raptor_new_iostream_to_filename(const char* filename)</td> <td>raptor_iostream* <link linkend="raptor-new-iostream-to-filename"><function>raptor_new_iostream_to_filename</function></link>(raptor_world* world, const char* filename)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_iostream* raptor_new_iostream_to_sink(void)</td> <td>raptor_iostream* <link linkend="raptor-new-iostream-to-sink"><function>raptor_new_iostream_to_sink</function></link>(raptor_world* world)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_iostream* raptor_new_iostream_to_string(void **string_p, size_t *length_p, void *(*malloc_handler)(size_t size))</td> <td>raptor_iostream* <link linkend="raptor-new-iostream-to-string"><function>raptor_new_iostream_to_string</function></link>(raptor_world* world, void **string_p, size_t *length_p, void *(*malloc_handler)(size_t size))</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_namespace_stack* raptor_new_namespaces(const raptor_uri_handler *uri_handler, void *uri_context, raptor_simple_message_handler error_handler, void *error_data, int defaults)</td> <td>raptor_namespace_stack* <link linkend="raptor-new-namespaces"><function>raptor_new_namespaces</function></link>(raptor_world* world, int defaults)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_namespace_stack* raptor_new_namespaces_v2(raptor_world* world, raptor_simple_message_handler error_handler, void *error_data, int defaults)</td> <td>raptor_namespace_stack* <link linkend="raptor-new-namespaces"><function>raptor_new_namespaces</function></link>(raptor_world* world, int defaults)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_parser* raptor_new_parser(const char* name)</td> <td>raptor_parser* <link linkend="raptor-new-parser"><function>raptor_new_parser</function></link>(raptor_world* world, const char* name)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_parser* raptor_new_parser_for_content(raptor_uri *uri, const char* mime_type, const unsigned char* buffer, size_t len, const unsigned char* identifier)</td> <td>raptor_parser* <link linkend="raptor-new-parser-for-content"><function>raptor_new_parser_for_content</function></link>(raptor_world* world, raptor_uri *uri, const char* mime_type, const unsigned char* buffer, size_t len, const unsigned char* identifier)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_qname* raptor_new_qname(raptor_namespace_stack *nstack, const unsigned char* name, const unsigned char* value, raptor_simple_message_handler error_handler, void *error_data)</td> <td>raptor_qname* <link linkend="raptor-new-qname"><function>raptor_new_qname</function></link>(raptor_namespace_stack *nstack, const unsigned char* name, const unsigned char* value)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_qname* raptor_new_qname_from_namespace_local_name(raptor_namespace *ns, const unsigned char* local_name, const unsigned char* value)</td> <td>raptor_qname* <link linkend="raptor-new-qname-from-namespace-local-name"><function>raptor_new_qname_from_namespace_local_name</function></link>(raptor_world* world, raptor_namespace *ns, const unsigned char* local_name, const unsigned char* value)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_sax2* raptor_new_sax2(void *user_data, raptor_error_handlers* error_handlers)</td> <td>raptor_sax2* <link linkend="raptor-new-sax2"><function>raptor_new_sax2</function></link>(raptor_world *world, raptor_locator *locator, void* user_data)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_sequence* raptor_new_sequence(raptor_sequence_free_handler* free_handler, raptor_sequence_print_handler* print_handler)</td> <td>raptor_sequence* <link linkend="raptor-new-sequence"><function>raptor_new_sequence</function></link>(raptor_data_free_handler free_handler, raptor_data_print_handler print_handler)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_sequence* raptor_new_sequence_v2(raptor_sequence_free_handler_v2* free_handler, raptor_sequence_print_handler_v2* print_handler, void* handler_context)</td> <td>raptor_sequence* <link linkend="raptor-new-sequence"><function>raptor_new_sequence</function></link>(raptor_data_free_handler free_handler, raptor_data_print_handler print_handler)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_serializer* raptor_new_serializer(const char* name)</td> <td>raptor_serializer* <link linkend="raptor-new-serializer"><function>raptor_new_serializer</function></link>(raptor_world* world, const char* name)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_uri* raptor_new_uri(const unsigned char* uri_string)</td> <td>raptor_uri* <link linkend="raptor-new-uri"><function>raptor_new_uri</function></link>(raptor_world* world, const unsigned char* uri_string)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_uri* raptor_new_uri_for_rdf_concept(const char* name)</td> <td>raptor_uri* <link linkend="raptor-new-uri-for-rdf-concept"><function>raptor_new_uri_for_rdf_concept</function></link>(raptor_world* world, const unsigned char* name)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_uri* raptor_new_uri_for_rdf_concept_v2(raptor_world* world, const char* name)</td> <td>raptor_uri* <link linkend="raptor-new-uri-for-rdf-concept"><function>raptor_new_uri_for_rdf_concept</function></link>(raptor_world* world, const unsigned char* name)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_uri* raptor_new_uri_for_retrieval_v2(raptor_world* world, raptor_uri* old_uri)</td> <td>raptor_uri* <link linkend="raptor-new-uri-for-retrieval"><function>raptor_new_uri_for_retrieval</function></link>(raptor_uri* old_uri)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_uri* raptor_new_uri_for_xmlbase_v2(raptor_world* world, raptor_uri* old_uri)</td> <td>raptor_uri* <link linkend="raptor-new-uri-for-xmlbase"><function>raptor_new_uri_for_xmlbase</function></link>(raptor_uri* old_uri)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_uri* raptor_new_uri_from_id(raptor_uri *base_uri, const unsigned char* id)</td> <td>raptor_uri* <link linkend="raptor-new-uri-from-id"><function>raptor_new_uri_from_id</function></link>(raptor_world* world, raptor_uri *base_uri, const unsigned char* id)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_uri* raptor_new_uri_from_uri_local_name(raptor_uri *uri, const unsigned char* local_name)</td> <td>raptor_uri* <link linkend="raptor-new-uri-from-uri-local-name"><function>raptor_new_uri_from_uri_local_name</function></link>(raptor_world* world, raptor_uri *uri, const unsigned char* local_name)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_uri* raptor_new_uri_relative_to_base(raptor_uri *base_uri, const unsigned char* uri_string)</td> <td>raptor_uri* <link linkend="raptor-new-uri-relative-to-base"><function>raptor_new_uri_relative_to_base</function></link>(raptor_world* world, raptor_uri *base_uri, const unsigned char* uri_string)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_xml_writer* raptor_new_xml_writer(raptor_namespace_stack *nstack, const raptor_uri_handler *uri_handler, void *uri_context, raptor_iostream* iostr, raptor_simple_message_handler error_handler, void *error_data, int canonicalize)</td> <td>raptor_xml_writer* <link linkend="raptor-new-xml-writer"><function>raptor_new_xml_writer</function></link>(raptor_world* world, raptor_namespace_stack *nstack, raptor_iostream* iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_xml_writer* raptor_new_xml_writer_v2(raptor_world* world, raptor_namespace_stack *nstack, raptor_iostream* iostr, raptor_simple_message_handler error_handler, void *error_data, int canonicalize)</td> <td>raptor_xml_writer* <link linkend="raptor-new-xml-writer"><function>raptor_new_xml_writer</function></link>(raptor_world* world, raptor_namespace_stack *nstack, raptor_iostream* iostr)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>const unsigned char* raptor_parser_get_feature_string(raptor_parser *parser, raptor_feature feature)</td> <td>const unsigned char* <link linkend="raptor-parser-get-option"><function>raptor_parser_get_option</function></link>(raptor_parser *parser, raptor_option option, char** string_p, int* integer_p)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_parser_set_feature_string(raptor_parser *parser, raptor_feature feature, const unsigned char* value)</td> <td>int <link linkend="raptor-parser-set-option"><function>raptor_parser_set_option</function></link>(raptor_parser *parser, raptor_option option, char* string, int integer)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_parsers_enumerate(const unsigned int counter, const char* *name, const char* *label)</td> <td>raptor_syntax_description* <link linkend="raptor-world-get-parser-description"><function>raptor_world_get_parser_description</function></link>(raptor_world* world, unsigned int counter)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_parsers_enumerate_v2(raptor_world* world, const unsigned int counter, const char* *name, const char* *label)</td> <td>raptor_syntax_description* <link linkend="raptor-world-get-parser-description"><function>raptor_world_get_parser_description</function></link>(raptor_world* world, const unsigned int counter)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_print_locator(FILE *stream, raptor_locator* locator)</td> <td>int <link linkend="raptor-locator-print"><function>raptor_locator_print</function></link>(raptor_locator* locator, FILE *stream)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_print_locator_v2(raptor_world* world, FILE *stream, raptor_locator* locator)</td> <td>void <link linkend="raptor-locator-print"><function>raptor_locator_print</function></link>(raptor_locator* locator, FILE *stream)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_print_statement(const raptor_statement * statement, FILE *stream)</td> <td>int <link linkend="raptor-statement-print"><function>raptor_statement_print</function></link>(const raptor_statement * statement, FILE *stream)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_print_statement_as_ntriples(const raptor_statement * statement, FILE *stream)</td> <td>int <link linkend="raptor-statement-print-as-ntriples"><function>raptor_statement_print_as_ntriples</function></link>(const raptor_statement * statement, FILE *stream)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_print_statement_as_ntriples_v2(const raptor_statement_v2 * statement, FILE *stream)</td> <td>int <link linkend="raptor-statement-print-as-ntriples"><function>raptor_statement_print_as_ntriples</function></link>(const raptor_statement * statement, FILE *stream)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_print_statement_v2(const raptor_statement_v2 * statement, FILE *stream)</td> <td>int <link linkend="raptor-statement-print"><function>raptor_statement_print</function></link>(const raptor_statement * statement, FILE *stream)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_uri* raptor_qname_string_to_uri(raptor_namespace_stack *nstack, const unsigned char* name, size_t name_len, raptor_simple_message_handler error_handler, void *error_data)</td> <td>raptor_uri* <link linkend="raptor-qname-string-to-uri"><function>raptor_qname_string_to_uri</function></link>(raptor_namespace_stack *nstack, const unsigned char* name, size_t name_len)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_sequence_print(raptor_sequence* seq, FILE* fh)</td> <td>int <link linkend="raptor-sequence-print"><function>raptor_sequence_print</function></link>(raptor_sequence* seq, FILE* fh)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_sequence_sort(raptor_sequence* seq, int(*compare)(const void *, const void *))</td> <td>void <link linkend="raptor-sequence-sort"><function>raptor_sequence_sort</function></link>(raptor_sequence* seq, raptor_data_compare_handler compare)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_serialize_statement(raptor_serializer* rdf_serializer, const raptor_statement *statement)</td> <td>int <link linkend="raptor-serializer-serialize-statement"><function>raptor_serializer_serialize_statement</function></link>(raptor_serializer* rdf_serializer, raptor_statement *statement)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_serializer_features_enumerate(const raptor_feature feature, const char* *name, raptor_uri **uri, const char* *label)</td> <td>raptor_option_description* <link linkend="raptor-world-get-option-description"><function>raptor_world_get_option_description</function></link>(raptor_world* world, const raptor_domain domain, const raptor_option option)</td> <td>Call with domain = <link linkend="RAPTOR-DOMAIN-SERIALIZER:CAPS"><literal>RAPTOR_DOMAIN_SERIALIZER</literal></link></td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_serializer_features_enumerate_v2(raptor_world* world, const raptor_feature feature, const char* *name, raptor_uri **uri, const char* *label)</td> <td>raptor_option_description* <link linkend="raptor-world-get-option-description"><function>raptor_world_get_option_description</function></link>(raptor_world* world, const raptor_domain domain, const raptor_option option)</td> <td>Call with domain = <link linkend="RAPTOR-DOMAIN-SERIALIZER:CAPS"><literal>RAPTOR_DOMAIN_SERIALIZER</literal></link></td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_serializer_get_feature(raptor_serializer *serializer, raptor_feature feature)</td> <td>int <link linkend="raptor-serializer-get-option"><function>raptor_serializer_get_option</function></link>(raptor_serializer *serializer, raptor_option option)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>const unsigned char* raptor_serializer_get_feature_string(raptor_serializer *serializer, raptor_feature feature)</td> <td>int <link linkend="raptor-serializer-get-option"><function>raptor_serializer_get_option</function></link>(raptor_serializer *serializer, raptor_option option, char** string_p, int* integer_p)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_serializer_set_feature(raptor_serializer *serializer, raptor_feature feature, int value)</td> <td>int <link linkend="raptor-serializer-set-option"><function>raptor_serializer_set_option</function></link>(raptor_serializer *serializer, raptor_option option, char* string, int integer)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_serializer_set_feature_string(raptor_serializer *serializer, raptor_feature feature, const unsigned char* value)</td> <td>int <link linkend="raptor-serializer-set-option"><function>raptor_serializer_set_option</function></link>(raptor_serializer *serializer, raptor_option option, char* string, int integer)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_serializer_syntax_name_check(const char* name)</td> <td>int <link linkend="raptor-world-is-serializer-name"><function>raptor_world_is_serializer_name</function></link>(raptor_world* world, const char* name)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_serializers_enumerate(const unsigned int counter, const char* *name, const char* *label, const char* *mime_type, const unsigned char* *uri_string)</td> <td>const raptor_syntax_description* <link linkend="raptor-world-get-serializer-description"><function>raptor_world_get_serializer_description</function></link>(raptor_world* world, unsigned int counter)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_serializers_enumerate_v2(raptor_world* world, const unsigned int counter, const char* *name, const char* *label, const char* *mime_type, const unsigned char* *uri_string)</td> <td>const raptor_syntax_description* <link linkend="raptor-world-get-serializer-description"><function>raptor_world_get_serializer_description</function></link>(raptor_world* world, const unsigned int counter)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_set_default_generate_id_parameters(raptor_parser* rdf_parser, char* prefix, int base)</td> <td>void <link linkend="raptor-world-set-generate-bnodeid-parameters"><function>raptor_world_set_generate_bnodeid_parameters</function></link>(raptor_world* world, char* prefix, int base)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_set_feature(raptor_parser *parser, raptor_feature feature, int value)</td> <td>int <link linkend="raptor-parser-set-option"><function>raptor_parser_set_option</function></link>(raptor_parser *parser, raptor_option option, char* string, int integer)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_set_generate_id_handler(raptor_parser* parser, void *user_data, raptor_generate_id_handler handler)</td> <td>void <link linkend="raptor-world-set-generate-bnodeid-handler"><function>raptor_world_set_generate_bnodeid_handler</function></link>(raptor_world* world, void *user_data, raptor_generate_bnodeid_handler handler)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_set_graph_handler(raptor_parser* parser, void *user_data, raptor_graph_handler handler)</td> <td>void <link linkend="raptor-parser-set-graph-mark-handler"><function>raptor_parser_set_graph_mark_handler</function></link>(raptor_parser* parser, void *user_data, raptor_graph_mark_handler handler)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_set_libxslt_security_preferences(void *security_preferences)</td> <td>int <link linkend="raptor-world-set-libxslt-security-preferences"><function>raptor_world_set_libxslt_security_preferences</function></link>(raptor_world *world, void *security_preferences)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_statement_compare_v2(const raptor_statement_v2 *s1, const raptor_statement_v2 *s2)</td> <td>int <link linkend="raptor-statement-compare"><function>raptor_statement_compare</function></link>(const raptor_statement *s1, const raptor_statement *s2)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_syntax_name_check(const char* name)</td> <td>int <link linkend="raptor-world-is-parser-name"><function>raptor_world_is_parser_name</function></link>(raptor_world* world, const char *name)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_syntax_name_check_v2(raptor_world* world, const char* name)</td> <td>int <link linkend="raptor-world-is-parser-name"><function>raptor_world_is_parser_name</function></link>(raptor_world* world, const char *name)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_syntaxes_enumerate(const unsigned int counter, const char* *name, const char* *label, const char* *mime_type, const unsigned char* *uri_string)</td> <td>raptor_syntax_description* <link linkend="raptor-world-get-parser-description"><function>raptor_world_get_parser_description</function></link>(raptor_world* world, const unsigned int counter)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_syntaxes_enumerate_v2(raptor_world* world, const unsigned int counter, const char* *name, const char* *label, const char* *mime_type, const unsigned char* *uri_string)</td> <td>raptor_syntax_description* <link linkend="raptor-world-get-parser-description"><function>raptor_world_get_parser_description</function></link>(raptor_world* world, const unsigned int counter)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_unicode_char_to_utf8(raptor_unichar c, unsigned char* output)</td> <td>int <link linkend="raptor-unicode-utf8-string-put-char"><function>raptor_unicode_utf8_string_put_char</function></link>(raptor_unichar c, unsigned char* output, size_t length)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>unsigned char* raptor_uri_as_counted_string_v2(raptor_world* world, raptor_uri *uri, size_t* len_p)</td> <td>unsigned char* <link linkend="raptor-uri-as-counted-string"><function>raptor_uri_as_counted_string</function></link>(raptor_uri *uri, size_t* len_p)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>unsigned char* raptor_uri_as_string_v2(raptor_world* world, raptor_uri *uri)</td> <td>unsigned char* <link linkend="raptor-uri-as-string"><function>raptor_uri_as_string</function></link>(raptor_uri *uri)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_uri_compare_v2(raptor_world* world, raptor_uri* uri1, raptor_uri* uri2)</td> <td>int <link linkend="raptor-uri-compare"><function>raptor_uri_compare</function></link>(raptor_uri* uri1, raptor_uri* uri2)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_uri* raptor_uri_copy_v2(raptor_world* world, raptor_uri *uri)</td> <td>raptor_uri* <link linkend="raptor-uri-copy"><function>raptor_uri_copy</function></link>(raptor_uri *uri)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_uri_equals_v2(raptor_world* world, raptor_uri* uri1, raptor_uri* uri2)</td> <td>int <link linkend="raptor-uri-equals"><function>raptor_uri_equals</function></link>(raptor_uri* uri1, raptor_uri* uri2)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_uri_print(const raptor_uri* uri, FILE *stream)</td> <td>int <link linkend="raptor-uri-print"><function>raptor_uri_print</function></link>(const raptor_uri* uri, FILE *stream)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_uri_print_v2(raptor_world* world, const raptor_uri* uri, FILE *stream)</td> <td>int <link linkend="raptor-uri-print"><function>raptor_uri_print</function></link>(const raptor_uri* uri, FILE *stream)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_uri_resolve_uri_reference(const unsigned char* base_uri, const unsigned char* reference_uri, unsigned char* buffer, size_t length)</td> <td>size_t <link linkend="raptor-uri-resolve-uri-reference"><function>raptor_uri_resolve_uri_reference</function></link>(const unsigned char* base_uri, const unsigned char* reference_uri, unsigned char* buffer, size_t length)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>unsigned char* raptor_uri_to_counted_string_v2(raptor_world* world, raptor_uri *uri, size_t *len_p)</td> <td>unsigned char* <link linkend="raptor-uri-to-counted-string"><function>raptor_uri_to_counted_string</function></link>(raptor_uri *uri, size_t *len_p)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>unsigned char* raptor_uri_to_relative_counted_uri_string_v2(raptor_world* world, raptor_uri *base_uri, raptor_uri *reference_uri, size_t *length_p)</td> <td>unsigned char* <link linkend="raptor-uri-to-relative-counted-uri-string"><function>raptor_uri_to_relative_counted_uri_string</function></link>(raptor_uri *base_uri, raptor_uri *reference_uri, size_t *length_p)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>unsigned char* raptor_uri_to_relative_uri_string_v2(raptor_world* world, raptor_uri *base_uri, raptor_uri *reference_uri)</td> <td>unsigned char* <link linkend="raptor-uri-to-relative-uri-string"><function>raptor_uri_to_relative_uri_string</function></link>(raptor_uri *base_uri, raptor_uri *reference_uri)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>unsigned char* raptor_uri_to_string_v2(raptor_world* world, raptor_uri *uri)</td> <td>unsigned char* <link linkend="raptor-uri-to-string"><function>raptor_uri_to_string</function></link>(raptor_uri *uri)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_utf8_to_unicode_char(raptor_unichar* output, const unsigned char* input, int length)</td> <td>int <link linkend="raptor-unicode-utf8-string-get-char"><function>raptor_unicode_utf8_string_get_char</function></link>(const unsigned char* input, size_t length, raptor_unichar* output)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_world_set_libxml_flags(raptor_world *world, int flags)</td> <td>int <link linkend="raptor-world-set-flag"><function>raptor_world_set_flag</function></link>(raptor_world *world, raptor_world_flag flag, int value)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>void raptor_world_set_libxslt_security_preferences(raptor_world *world, void *security_preferences)</td> <td>int <link linkend="raptor-world-set-libxslt-security-preferences"><function>raptor_world_set_libxslt_security_preferences</function></link>(raptor_world *world, void *security_preferences)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_www_fetch_to_string(raptor_www *www, raptor_uri *uri, void **string_p, size_t *length_p, void *(*malloc_handler)(size_t size))</td> <td>int <link linkend="raptor-www-fetch-to-string"><function>raptor_www_fetch_to_string</function></link>(raptor_www *www, raptor_uri *uri, void **string_p, size_t *length_p, raptor_data_malloc_handler const malloc_handler)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_www* raptor_www_new(void)</td> <td>raptor_www* <link linkend="raptor-new-www"><function>raptor_new_www</function></link>(raptor_world* world)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_www* raptor_www_new_with_connection(void* connection)</td> <td>raptor_www* <link linkend="raptor-new-www-with-connection"><function>raptor_new_www_with_connection</function></link>(raptor_world* world, void* connection)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_xml_any_escape_string(const unsigned char* string, size_t len, unsigned char* buffer, size_t length, char quote, int xml_version, raptor_simple_message_handler error_handler, void *error_data)</td> <td>int <link linkend="raptor-xml-escape-string-any"><function>raptor_xml_escape_string_any</function></link>(raptor_world* world, const unsigned char* string, size_t len, unsigned char* buffer, size_t length, char quote, int xml_version)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_xml_escape_string(const unsigned char* string, size_t len, unsigned char* buffer, size_t length, char quote, raptor_simple_message_handler error_handler, void *error_data)</td> <td>int <link linkend="raptor-xml-escape-string"><function>raptor_xml_escape_string</function></link>(raptor_world *world, const unsigned char* string, size_t len, unsigned char* buffer, size_t length, char quote)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_xml_writer_features_enumerate(const raptor_feature feature, const char* *name, raptor_uri **uri, const char* *label)</td> <td>raptor_option_description* <link linkend="raptor-world-get-option-description"><function>raptor_world_get_option_description</function></link>(raptor_world* world, const raptor_domain domain, const raptor_option option)</td> <td>Call with domain = <link linkend="RAPTOR-DOMAIN-XML-WRITER:CAPS"><literal>RAPTOR_DOMAIN_XML_WRITER</literal></link></td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_xml_writer_features_enumerate_v2(raptor_world* world, const raptor_feature feature, const char* *name, raptor_uri **uri, const char* *label)</td> <td>raptor_option_description* <link linkend="raptor-world-get-option-description"><function>raptor_world_get_option_description</function></link>(raptor_world* world, const raptor_domain domain, const raptor_option option)</td> <td>Call with domain = <link linkend="RAPTOR-DOMAIN-XML-WRITER:CAPS"><literal>RAPTOR_DOMAIN_XML_WRITER</literal></link></td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_xml_writer_get_feature(raptor_xml_writer *xml_writer, raptor_feature feature)</td> <td>int <link linkend="raptor-xml-writer-get-option"><function>raptor_xml_writer_get_option</function></link>(raptor_xml_writer *xml_writer, raptor_option option, char** string_p, int* integer_p)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>const unsigned char* raptor_xml_writer_get_feature_string(raptor_xml_writer *xml_writer, raptor_feature feature)</td> <td>const unsigned char* <link linkend="raptor-xml-writer-get-option"><function>raptor_xml_writer_get_option</function></link>(raptor_xml_writer *xml_writer, raptor_option option, char** string_p, int* integer_p)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_xml_writer_set_feature(raptor_xml_writer *xml_writer, raptor_feature feature, int value)</td> <td>int <link linkend="raptor-xml-writer-set-option"><function>raptor_xml_writer_set_option</function></link>(raptor_xml_writer *xml_writer, raptor_option option, char* string, int integer)</td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>int raptor_xml_writer_set_feature_string(raptor_xml_writer *xml_writer, raptor_feature feature, const unsigned char* value)</td> <td>int <link linkend="raptor-xml-writer-set-option"><function>raptor_xml_writer_set_option</function></link>(raptor_xml_writer *xml_writer, raptor_option option, char* string, int integer)</td> <td>&#160;</td>
+ </tr>
+ </tbody>
+</table>
+<table border='1'>
+ <thead>
+ </thead>
+ <tbody>
+ <tr>
+ <th>1.4.21 type</th>
+ <th>2.0.0 type</th>
+ <th>Notes</th>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_feature</td> <td><link linkend="raptor-option"><type>raptor_option</type></link></td> <td>And new option <link linkend="RAPTOR-OPTION-STRICT:CAPS"><literal>RAPTOR_OPTION_STRICT</literal></link> added.</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_graph_handler</td> <td><link linkend="raptor-graph-mark-handler"><type>raptor_graph_mark_handler</type></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_identifier</td> <td><link linkend="raptor-term"><type>raptor_term</type></link></td> <td>Fields changed to be simpler <link linkend="raptor-term-type"><type>raptor_term_type</type></link> and <link linkend="raptor-term-value"><type>raptor_term_value</type></link></td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_identifier_type</td> <td><link linkend="raptor-term-type"><type>raptor_term_type</type></link></td> <td>Removed several enum values to leave just URI, blank and literal types.</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_iostream_handler2</td> <td><link linkend="raptor-iostream-handler"><type>raptor_iostream_handler</type></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_iostream_write_end_func</td> <td><link linkend="raptor-iostream-write-end-func"><type>raptor_iostream_write_end_func</type></link></td> <td>handler returns an int</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_log_level</td> <td><link linkend="raptor-log-level"><type>raptor_log_level</type></link></td> <td>Added <link linkend="RAPTOR-LOG-LEVEL-TRACE:CAPS"><literal>RAPTOR_LOG_LEVEL_TRACE</literal></link>, <link linkend="RAPTOR-LOG-LEVEL-DEBUG:CAPS"><literal>RAPTOR_LOG_LEVEL_DEBUG</literal></link>, <link linkend="RAPTOR-LOG-LEVEL-INFO:CAPS"><literal>RAPTOR_LOG_LEVEL_INFO</literal></link>. <link linkend="RAPTOR-LOG-LEVEL-WARNING:CAPS"><literal>RAPTOR_LOG_LEVEL_WARNING</literal></link> renamed <link linkend="RAPTOR-LOG-LEVEL-WARN:CAPS"><literal>RAPTOR_LOG_LEVEL_WARN</literal></link></td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_sequence_free_function</td> <td><link linkend="raptor-data-free-handler"><type>raptor_data_free_handler</type></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_sequence_free_handler_v2</td> <td><link linkend="raptor-data-context-free-handler"><type>raptor_data_context_free_handler</type></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_sequence_print_handler</td> <td><link linkend="raptor-data-print-handler"><type>raptor_data_print_handler</type></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_sequence_print_handler_v2</td> <td><link linkend="raptor-data-context-print-handler"><type>raptor_data_context_print_handler</type></link></td> <td>&#160;</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_simple_message_handler</td> <td><link linkend="raptor-log-handler"><type>raptor_log_handler</type></link></td> <td>Replaced by generic raptor log mechanism. See <link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler</function></link>()</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_statement</td> <td><link linkend="raptor-statement"><type>raptor_statement</type></link></td> <td>fields changed to use <link linkend="raptor-term"><type>raptor_term</type></link></td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_statement_handler</td> <td><link linkend="raptor-statement-handler"><type>raptor_statement_handler</type></link></td> <td>added const</td>
+ </tr>
+ <tr valign='top'>
+ <td>raptor_statement_v2</td> <td><link linkend="raptor-statement"><type>raptor_statement</type></link></td> <td>Fields changed to be a 3 or 4 tuple of <link linkend="raptor-term"><type>raptor_term</type></link></td>
+ </tr>
+ </tbody>
+</table>
+
+</section>
+
+</section>
+
+</chapter>
diff --git a/docs/raptor-docs.xml b/docs/raptor-docs.xml
new file mode 100644
index 0000000..1858190
--- /dev/null
+++ b/docs/raptor-docs.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
+ <bookinfo>
+ <title>Raptor RDF Syntax Library Manual</title>
+ <releaseinfo>Manual for <ulink url="http://librdf.org/raptor/">Raptor</ulink> &version;</releaseinfo>
+
+ <author>
+ <firstname>Dave</firstname>
+ <surname>Beckett</surname>
+ <affiliation>
+ <address>
+ <otheraddr><ulink url="http://www.dajobe.org/">http://www.dajobe.org/</ulink></otheraddr>
+ </address>
+ </affiliation>
+ </author>
+
+ <legalnotice>
+ <para>
+ This documentation is Free Software / Open Source - you can
+ redistribute it and/or modify it under the same licenses as
+ <ulink url="http://librdf.org/raptor/">Raptor</ulink>.
+ It is licensed under the following three licenses as alternatives:
+ <orderedlist>
+ <listitem><para>GNU Lesser General Public License (LGPL) V2.1 or any newer version</para></listitem>
+ <listitem><para>GNU General Public License (GPL) V2 or any newer version</para></listitem>
+ <listitem><para>Apache License, V2.0 or any newer version</para></listitem>
+ </orderedlist>
+ You may not use this documentation except in compliance with at
+ least one of the above three licenses. See the
+ <ulink url="http://librdf.org/raptor/">Raptor</ulink>
+ site for the full license terms.
+ </para>
+
+ </legalnotice>
+
+ <copyright>
+ <year>2001</year>
+ <year>2002</year>
+ <year>2003</year>
+ <year>2004</year>
+ <year>2005</year>
+ <year>2006</year>
+ <year>2007</year>
+ <year>2008</year>
+ <year>2009</year>
+ <year>2010</year>
+ <year>2011</year>
+ <holder>Dave Beckett</holder>
+ </copyright>
+ <copyright>
+ <year>2001</year>
+ <year>2002</year>
+ <year>2003</year>
+ <year>2004</year>
+ <year>2005</year>
+ <holder>University of Bristol</holder>
+ </copyright>
+ </bookinfo>
+
+ <chapter id="introduction">
+ <title>Raptor Overview</title>
+ <para>
+<ulink url="http://librdf.org/raptor/">Raptor</ulink>
+is a free software / Open Source C library that provides
+a set of parsers and serializers that
+generate Resource Description Framework (RDF) triples
+by parsing syntaxes or serialize the triples into a syntax.
+It also includes supporting functionality for managing Unicode,
+UTF-8, URIs, retrieving from URIs and reading and writing XML.
+ </para>
+
+ </chapter>
+
+ <part id="tutorial">
+ <title>Raptor Tutorial</title>
+
+ <partintro id="tutorial-introduction">
+ <para>This part describes how to use the
+ <ulink url="http://librdf.org/raptor/">Raptor</ulink> APIs to
+ turn syntaxes into RDF triples and RDF triples into syntaxes.</para>
+
+ <para>The next part contains the
+ <link linkend="reference-manual">Raptor Reference Manual</link>
+ which comprehensively describes every class and function of the API.
+ </para>
+
+ <para>For the latest information, see the
+ <ulink url="http://librdf.org/raptor/">Raptor Home Page</ulink>
+ and the <ulink url="../README.html">main document overview</ulink>
+ in this document tree.
+ </para>
+ </partintro>
+
+ <xi:include href="raptor-tutorial-intro.xml"/>
+ <xi:include href="raptor-tutorial-querying-functionality.xml"/>
+ <xi:include href="raptor-tutorial-parsing.xml"/>
+ <xi:include href="raptor-tutorial-serializing.xml"/>
+ </part>
+
+
+ <part id="reference-manual">
+ <title>Raptor Reference Manual</title>
+
+ <partintro id="reference-manual-introduction">
+ <para>This part contains the Raptor Reference Manual
+ which comprehensively describes every class and function of the API.
+ </para>
+
+ <para>The previous part contains the
+ <link linkend="tutorial">Raptor Tutorial</link>
+ explaining how to use the API parts.
+ </para>
+
+ <para>For the latest information, see the
+ <ulink url="http://librdf.org/raptor/">Raptor Home Page</ulink>
+ and the <ulink url="../README.html">main document overview</ulink>
+ in this document tree.
+ </para>
+ </partintro>
+
+ <xi:include href="raptor-parsers.xml"/>
+ <xi:include href="raptor-serializers.xml"/>
+
+
+ <xi:include href="xml/section-world.xml"/>
+ <xi:include href="xml/section-general.xml"/>
+ <xi:include href="xml/section-memory.xml"/>
+ <xi:include href="xml/section-avltree.xml"/>
+ <xi:include href="xml/section-constants.xml"/>
+ <xi:include href="xml/section-option.xml"/>
+ <xi:include href="xml/section-iostream.xml"/>
+ <xi:include href="xml/section-locator.xml"/>
+ <xi:include href="xml/section-parser.xml"/>
+ <xi:include href="xml/section-sax2.xml"/>
+ <xi:include href="xml/section-sequence.xml"/>
+ <xi:include href="xml/section-serializer.xml"/>
+ <xi:include href="xml/section-stringbuffer.xml"/>
+ <xi:include href="xml/section-triples.xml"/>
+ <xi:include href="xml/section-unicode.xml"/>
+ <xi:include href="xml/section-uri.xml"/>
+ <xi:include href="xml/section-www.xml"/>
+ <xi:include href="xml/section-xml-namespace.xml"/>
+ <xi:include href="xml/section-xml-qname.xml"/>
+ <xi:include href="xml/section-xml.xml"/>
+
+ <xi:include href="raptor-formats.xml"/>
+
+ <!-- <xi:include href="xml/section-unused.xml"/> -->
+
+ <xi:include href="raptor-changes.xml"/>
+ </part>
+
+ <index>
+ <title>Index</title>
+ </index>
+</book>
diff --git a/docs/raptor-formats.xml b/docs/raptor-formats.xml
new file mode 100644
index 0000000..1eba6ca
--- /dev/null
+++ b/docs/raptor-formats.xml
@@ -0,0 +1,444 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="raptor-formats">
+<title>Syntax Formats supported in Raptor</title>
+
+<para>This chapter describes the syntax formats supported
+by parsers and serializers in Raptor.
+</para>
+
+<section id="raptor-formats-intro">
+<title>Introduction</title>
+<para>
+The parsers and serializers in raptor can handle different MIME Types with different levels of quality (Q). A Q of 1.0 indicates that the parser or serializer will be able to read or write the full format with high quality, and it should be the prefered parser or serializer for that mime type. Lower Q values indicate either additional mime type support (for parsing) or less-preferred mime types (for serializing). A serializer typically has just 1 mime type of Q 1.0; the preferred type.</para>
+</section>
+
+<section id="raptor-formats-types-by-parser">
+<title>MIME Types by Parser</title>
+ <variablelist>
+
+ <varlistentry><term>Gleaning Resource Descriptions from Dialects of Languages (<literal>grddl</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>text/html</literal> with q 0.2</para></listitem>
+ <listitem><para><literal>application/xhtml+xml</literal> with q 0.4</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>N-Quads (<literal>nquads</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>text/x-nquads</literal> with q 1.0</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>N-Triples (<literal>ntriples</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>text/plain</literal> with q 0.1</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>RDF/A via librdfa (<literal>rdfa</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>text/html</literal> with q 0.6</para></listitem>
+ <listitem><para><literal>application/xhtml+xml</literal> with q 0.8</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>RDF/JSON (either Triples or Resource-Centric) (<literal>json</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>application/json</literal> with q 0.1</para></listitem>
+ <listitem><para><literal>text/json</literal> with q 0.1</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>RDF/XML (<literal>rdfxml</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>application/rdf+xml</literal> with q 1.0</para></listitem>
+ <listitem><para><literal>text/rdf</literal> with q 0.6</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>RSS Tag Soup (<literal>rss-tag-soup</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>application/rss</literal> with q 0.8</para></listitem>
+ <listitem><para><literal>application/rss+xml</literal> with q 0.8</para></listitem>
+ <listitem><para><literal>text/rss</literal> with q 0.8</para></listitem>
+ <listitem><para><literal>application/xml</literal> with q 0.3</para></listitem>
+ <listitem><para><literal>text/xml</literal> with q 0.3</para></listitem>
+ <listitem><para><literal>application/atom+xml</literal> with q 0.3</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>TriG - Turtle with Named Graphs (<literal>trig</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>application/x-trig</literal> with q 1.0</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>Turtle Terse RDF Triple Language (<literal>turtle</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>text/turtle</literal> with q 1.0</para></listitem>
+ <listitem><para><literal>application/x-turtle</literal> with q 1.0</para></listitem>
+ <listitem><para><literal>application/turtle</literal> with q 1.0</para></listitem>
+ <listitem><para><literal>text/n3</literal> with q 0.3</para></listitem>
+ <listitem><para><literal>text/rdf+n3</literal> with q 0.3</para></listitem>
+ <listitem><para><literal>application/rdf+n3</literal> with q 0.3</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+</section>
+
+<section id="raptor-formats-types-by-serializer">
+<title>MIME Types by Serializer</title>
+ <variablelist>
+
+ <varlistentry><term>Atom 1.0 (<literal>atom</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>application/atom+xml</literal> with q 1.0</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>GraphViz DOT format (<literal>dot</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>text/x-graphviz</literal> with q 0.5</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>HTML Table (<literal>html</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>application/xhtml+xml</literal> with q 1.0</para></listitem>
+ <listitem><para><literal>text/html</literal> with q 1.0</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>N-Quads (<literal>nquads</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>text/x-nquads</literal> with q 1.0</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>N-Triples (<literal>ntriples</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>text/plain</literal> with q 0.1</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>RDF/JSON Resource-Centric (<literal>json</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>application/json</literal> with q 1.0</para></listitem>
+ <listitem><para><literal>text/json</literal> with q 0.1</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>RDF/JSON Triples (<literal>json-triples</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>application/json</literal> with q 0.0</para></listitem>
+ <listitem><para><literal>text/json</literal> with q 0.1</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>RDF/XML (<literal>rdfxml</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>application/rdf+xml</literal> with q 1.0</para></listitem>
+ <listitem><para><literal>text/rdf</literal> with q 0.6</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>RDF/XML (Abbreviated) (<literal>rdfxml-abbrev</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>application/rdf+xml</literal> with q 0.0</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>RDF/XML (XMP Profile) (<literal>rdfxml-xmp</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>application/rdf+xml</literal> with q 0.0</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>RSS 1.0 (<literal>rss-1.0</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>application/rss+xml</literal> with q 1.0</para></listitem>
+ <listitem><para><literal>application/rss</literal> with q 0.3</para></listitem>
+ <listitem><para><literal>text/rss</literal> with q 0.3</para></listitem>
+ <listitem><para><literal>application/xml</literal> with q 0.3</para></listitem>
+ <listitem><para><literal>text/xml</literal> with q 0.3</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term>Turtle Terse RDF Triple Language (<literal>turtle</literal>)</term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para><literal>text/turtle</literal> with q 1.0</para></listitem>
+ <listitem><para><literal>application/turtle</literal> with q 1.0</para></listitem>
+ <listitem><para><literal>application/x-turtle</literal> with q 0.8</para></listitem>
+ <listitem><para><literal>text/n3</literal> with q 0.3</para></listitem>
+ <listitem><para><literal>text/rdf+n3</literal> with q 0.3</para></listitem>
+ <listitem><para><literal>application/rdf+n3</literal> with q 0.3</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+</section>
+
+<section id="raptor-formats-types-index">
+<title>MIME Types Index</title>
+ <variablelist>
+
+ <varlistentry><term><literal>application/atom+xml</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>Atom 1.0 Serializer (<literal>atom</literal>) with q 1.0</para></listitem>
+ <listitem><para>RSS Tag Soup Parser (<literal>rss-tag-soup</literal>) with q 0.3</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>application/json</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>RDF/JSON Resource-Centric Serializer (<literal>json</literal>) with q 1.0</para></listitem>
+ <listitem><para>RDF/JSON (either Triples or Resource-Centric) Parser (<literal>json</literal>) with q 0.1</para></listitem>
+ <listitem><para>RDF/JSON Triples Serializer (<literal>json-triples</literal>) with q 0.0</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>application/rdf+n3</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>Turtle Terse RDF Triple Language Parser (<literal>turtle</literal>) with q 0.3</para></listitem>
+ <listitem><para>Turtle Terse RDF Triple Language Serializer (<literal>turtle</literal>) with q 0.3</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>application/rdf+xml</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>RDF/XML Parser (<literal>rdfxml</literal>) with q 1.0</para></listitem>
+ <listitem><para>RDF/XML Serializer (<literal>rdfxml</literal>) with q 1.0</para></listitem>
+ <listitem><para>RDF/XML (XMP Profile) Serializer (<literal>rdfxml-xmp</literal>) with q 0.0</para></listitem>
+ <listitem><para>RDF/XML (Abbreviated) Serializer (<literal>rdfxml-abbrev</literal>) with q 0.0</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>application/rss</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>RSS Tag Soup Parser (<literal>rss-tag-soup</literal>) with q 0.8</para></listitem>
+ <listitem><para>RSS 1.0 Serializer (<literal>rss-1.0</literal>) with q 0.3</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>application/rss+xml</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>RSS 1.0 Serializer (<literal>rss-1.0</literal>) with q 1.0</para></listitem>
+ <listitem><para>RSS Tag Soup Parser (<literal>rss-tag-soup</literal>) with q 0.8</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>application/turtle</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>Turtle Terse RDF Triple Language Parser (<literal>turtle</literal>) with q 1.0</para></listitem>
+ <listitem><para>Turtle Terse RDF Triple Language Serializer (<literal>turtle</literal>) with q 1.0</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>application/x-trig</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>TriG - Turtle with Named Graphs Parser (<literal>trig</literal>) with q 1.0</para></listitem>
+ <listitem><para>No serializer.</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>application/x-turtle</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>Turtle Terse RDF Triple Language Parser (<literal>turtle</literal>) with q 1.0</para></listitem>
+ <listitem><para>Turtle Terse RDF Triple Language Serializer (<literal>turtle</literal>) with q 0.8</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>application/xhtml+xml</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>HTML Table Serializer (<literal>html</literal>) with q 1.0</para></listitem>
+ <listitem><para>RDF/A via librdfa Parser (<literal>rdfa</literal>) with q 0.8</para></listitem>
+ <listitem><para>Gleaning Resource Descriptions from Dialects of Languages Parser (<literal>grddl</literal>) with q 0.4</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>application/xml</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>RSS Tag Soup Parser (<literal>rss-tag-soup</literal>) with q 0.3</para></listitem>
+ <listitem><para>RSS 1.0 Serializer (<literal>rss-1.0</literal>) with q 0.3</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>text/html</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>HTML Table Serializer (<literal>html</literal>) with q 1.0</para></listitem>
+ <listitem><para>RDF/A via librdfa Parser (<literal>rdfa</literal>) with q 0.6</para></listitem>
+ <listitem><para>Gleaning Resource Descriptions from Dialects of Languages Parser (<literal>grddl</literal>) with q 0.2</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>text/json</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>RDF/JSON (either Triples or Resource-Centric) Parser (<literal>json</literal>) with q 0.1</para></listitem>
+ <listitem><para>RDF/JSON Triples Serializer (<literal>json-triples</literal>) with q 0.1</para></listitem>
+ <listitem><para>RDF/JSON Resource-Centric Serializer (<literal>json</literal>) with q 0.1</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>text/n3</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>Turtle Terse RDF Triple Language Parser (<literal>turtle</literal>) with q 0.3</para></listitem>
+ <listitem><para>Turtle Terse RDF Triple Language Serializer (<literal>turtle</literal>) with q 0.3</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>text/plain</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>N-Triples Parser (<literal>ntriples</literal>) with q 0.1</para></listitem>
+ <listitem><para>N-Triples Serializer (<literal>ntriples</literal>) with q 0.1</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>text/rdf</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>RDF/XML Parser (<literal>rdfxml</literal>) with q 0.6</para></listitem>
+ <listitem><para>RDF/XML Serializer (<literal>rdfxml</literal>) with q 0.6</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>text/rdf+n3</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>Turtle Terse RDF Triple Language Parser (<literal>turtle</literal>) with q 0.3</para></listitem>
+ <listitem><para>Turtle Terse RDF Triple Language Serializer (<literal>turtle</literal>) with q 0.3</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>text/rss</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>RSS Tag Soup Parser (<literal>rss-tag-soup</literal>) with q 0.8</para></listitem>
+ <listitem><para>RSS 1.0 Serializer (<literal>rss-1.0</literal>) with q 0.3</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>text/turtle</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>Turtle Terse RDF Triple Language Parser (<literal>turtle</literal>) with q 1.0</para></listitem>
+ <listitem><para>Turtle Terse RDF Triple Language Serializer (<literal>turtle</literal>) with q 1.0</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>text/x-graphviz</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>GraphViz DOT format Serializer (<literal>dot</literal>) with q 0.5</para></listitem>
+ <listitem><para>No parser.</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>text/x-nquads</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>N-Quads Parser (<literal>nquads</literal>) with q 1.0</para></listitem>
+ <listitem><para>N-Quads Serializer (<literal>nquads</literal>) with q 1.0</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><literal>text/xml</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem><para>RSS Tag Soup Parser (<literal>rss-tag-soup</literal>) with q 0.3</para></listitem>
+ <listitem><para>RSS 1.0 Serializer (<literal>rss-1.0</literal>) with q 0.3</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+</section>
+
+</chapter>
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("raptor-docs.xml" "book" "part")
+End:
+-->
+
diff --git a/docs/raptor-parsers.xml b/docs/raptor-parsers.xml
new file mode 100644
index 0000000..de4593a
--- /dev/null
+++ b/docs/raptor-parsers.xml
@@ -0,0 +1,262 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="raptor-parsers">
+<title>Parsers in Raptor (syntax to triples)</title>
+
+<section id="raptor-parsers-intro">
+<title>Introduction</title>
+
+<para>This section describes the parsers that can be compiled into
+Raptor and their options. The exact parsers supported may vary
+by different builds of raptor and can be queried at run-time by
+use of the
+<link linkend="raptor-world-get-parser-description"><function>raptor_world_get_parser_description</function></link>
+function</para>
+
+<para>The options that may be set on parsers can also
+be queried at run-time with the
+<link linkend="raptor-world-get-option-description"><function>raptor_world_get_option_description</function></link>
+function.</para>
+
+</section>
+
+
+<section id="parser-grddl">
+<title>GRDDL parser (name <literal>grddl</literal>)</title>
+<para>A parser for the
+<ulink url="http://www.w3.org/TR/2007/PR-grddl-20070716/">Gleaning Resource Descriptions from Dialects of Languages (GRDDL)</ulink>,
+W3C Proposed Recommendation of 2007-07-16 which allows reading XHTML
+and XML as RDF triples by using profiles in the document that declare
+XSLT transforms from the XHTML or XML content into RDF/XML or other
+RDF syntax which can then be parsed.</para>
+
+<para>The GRDDL parser is rather complex and different from the other
+parsers in that it retrieves URIs, reads HTML documents (possibly
+with errors), transforms the documents with XSLT and turns the result
+into a single graph. The default configuration of the GRDDL parser
+also reads microformats (hcard, hcalendar) and follows &lt;link&gt;
+tags that point to RDF/XML. Parts of the GRDDL process can be
+altered by configuration, which are describe below.
+</para>
+
+<para>The GRDDL parser defines 'base', 'Base' and 'url' XSLT parameters
+with the value of the base URI to allow some XSLT sheets to work. These
+set of parameters cannot be disabled.
+</para>
+
+<para>If the XSLT transform returns an empty string, no further
+processing of the result is done, and a warning is generated. The
+xsl:output method is mapped to result document mime types as follows:
+'text' to text/plain; 'xml' to application/xml and 'html' to text/html.
+Any result that is of type 'application/xml' or unknown mime type
+is assumed to be RDF/XML.
+</para>
+
+<para>The URIs that are processed during GRDDL operations can be checked
+and skipped if required using a handler set with the
+<link linkend="raptor-parser-set-uri-filter"><function>raptor_parser_set_uri_filter()</function></link>
+function. If the handler returns non-0, the URI is rejected.
+This uses
+<link linkend="raptor-www-set-uri-filter"><function>raptor_www_set_uri_filter()</function></link>
+internally.
+</para>
+
+<para>If the value of option
+<link linkend="RAPTOR-OPTION-WWW-TIMEOUT:CAPS"><literal>RAPTOR_OPTION_WWW_TIMEOUT</literal></link>
+if set to a number &gt;0, it is used as the timeout in seconds
+for retrieving of URIs during GRDDL processing.
+This uses
+<link linkend="raptor-www-set-connection-timeout"><function>raptor_www_set_connection_timeout()</function></link>
+internally.
+</para>
+
+<para>The hardcoded support for hcard and hcalendar
+microformats can be disabled by setting parser option
+<link linkend="RAPTOR-OPTION-MICROFORMATS:CAPS"><literal>RAPTOR_OPTION_MICROFORMATS</literal></link>
+to 0
+or using
+<link linkend="raptor-parser-set-option"><function>raptor_parser_set_option()</function></link>
+with option
+<link linkend="RAPTOR-OPTION-STRICT:CAPS"><literal>RAPTOR_OPTION_STRICT</literal></link>
+and a boolean value of 1.
+</para>
+
+<para>The GRDDL parser by default will try an XML parser on the
+content followed by a lax HTML parser. This can be disabled by
+setting parser option
+<link linkend="RAPTOR-OPTION-HTML-TAG-SOUP:CAPS"><literal>RAPTOR_OPTION_HTML_TAG_SOUP</literal></link>
+to 0
+or using
+<link linkend="raptor-parser-set-option"><function>raptor_parser_set_option()</function></link>
+with option
+<link linkend="RAPTOR-OPTION-STRICT:CAPS"><literal>RAPTOR_OPTION_STRICT</literal></link>
+and a boolean value of 1.
+</para>
+
+<para>The GRDDL parser by default will try to look for an HTML
+&lt;link&gt; tag that points to RDF/XML. This can be disabled by
+setting parser option
+<link linkend="RAPTOR-OPTION-HTML-LINK:CAPS"><literal>RAPTOR_OPTION_HTML_LINK</literal></link>
+to 0
+or using
+<link linkend="raptor-parser-set-option"><function>raptor_parser_set_option()</function></link>
+with option
+<link linkend="RAPTOR-OPTION-STRICT:CAPS"><literal>RAPTOR_OPTION_STRICT</literal></link>
+and a boolean value of 1.
+</para>
+
+</section>
+
+
+<section id="parser-guess">
+<title>Guess parser (name <literal>guess</literal>)</title>
+<para>
+This is a special parser that picks the actual parser to use based
+on the content type, the content bytes or the content identifier. The
+content name can be either from a local file or from a URI.
+</para>
+
+<para>If the protocol that delivered the content (such as HTTP)
+provided a <emphasis>Content Type</emphasis> (aka MIME Type) then
+this will be the primary means for identifying th ecotnent.
+</para>
+
+<para>The secondary means to identify the content are the bytes of
+the content (if available), otherwise the content identifier is used,
+which is the least reliable.
+</para>
+
+</section>
+
+
+<section id="parser-json">
+<title>JSON parser (name <literal>json</literal>)</title>
+
+<para>A parser for both the
+resource-centric RDF/JSON syntax as defined by Talis at
+<ulink url="http://n2.talis.com/wiki/RDF_JSON_Specification">RDF/JSON Specification</ulink>
+and the triples-centric format based on the SPARQL results in JSON format.
+</para>
+
+</section>
+
+
+<section id="parser-ntriples">
+<title>N-Triples parser (name <literal>ntriples</literal>)</title>
+
+<para>A parser for the
+<ulink url="http://www.w3.org/TR/rdf-testcases/#ntriples">N-Triples</ulink>
+syntax as used by the
+<ulink url="http://www.w3.org/2001/sw/RDFCore/">W3C RDF Core working group</ulink>
+for the <ulink url="http://www.w3.org/TR/rdf-testcases/">RDF Test Cases</ulink>.
+</para>
+
+</section>
+
+
+<section id="parser-rdfa">
+<title>RDFa parser - (name <literal>rdfa</literal>)</title>
+<para>
+A parser for the
+<ulink url="http://www.w3.org/TR/2008/CR-rdfa-syntax-20080620/">RDFa</ulink>
+syntax, W3C Candidate Recommendation 20 June 2008 which allows reading XHTML
+and XML as RDF triples by interpreting attributes on elements to
+describe which ones have RDF semantics. This is implemented via
+<ulink url="http://rdfa.digitalbazaar.com/librdfa/">librdfa</ulink>
+linked inside Raptor, written by Manu Sporny of Digital Bazaar,
+and licensed with the same license as Raptor.
+</para>
+
+<para>
+This parser is beta quality and passes all but 4 of the RDFa tests as
+of Raptor 1.4.18.
+</para>
+
+</section>
+
+
+<section id="parser-rdfxml">
+<title>RDF/XML parser - default (name <literal>rdfxml</literal>)</title>
+<para>
+A parser for the standard
+<ulink url="http://www.w3.org/TR/rdf-syntax-grammar/">RDF/XML syntax</ulink>
+as revised by the
+<ulink url="http://www.w3.org/2001/sw/RDFCore/">W3C RDF Core working group</ulink>.</para>
+
+<para>This is the default parser in Raptor.</para>
+
+<para>Features of this parser:</para>
+<itemizedlist>
+<listitem><para>Fully handles the <ulink url="http://www.w3.org/TR/rdf-syntax-grammar/">RDF/XML syntax updates</ulink> for <ulink url="http://www.w3.org/TR/xmlbase/">XML Base</ulink>, <literal>xml:lang</literal>, RDF datatyping and Collections.</para></listitem>
+
+<listitem><para>Handles all RDF vocabularies such as <ulink url="http://www.foaf-project.org/">FOAF</ulink>, <ulink url="http://www.purl.org/rss/1.0/">RSS 1.0</ulink>, <ulink url="http://dublincore.org/">Dublin Core</ulink>, <ulink url="http://www.w3.org/TR/owl-features/">OWL</ulink>, <ulink url="http://usefulinc.com/doap">DOAP</ulink></para></listitem>
+
+<listitem><para>Handles <literal>rdf:resource</literal> / <literal>resource</literal> attributes</para></listitem>
+
+<listitem><para>Uses <ulink url="http://expat.sourceforge.net/">expat</ulink> and/or (GNOME) <ulink url="http://xmlsoft.org/">libxml</ulink> XML parsers as available or required</para></listitem>
+
+</itemizedlist>
+
+</section>
+
+
+<section id="parser-rss-tag-soup">
+<title>RSS Tag Soup parser (name <literal>rss-tag-soup</literal>)</title>
+
+<para>A parser for the multiple XML RSS formats that use the elements
+such as <literal>channel</literal>, <literal>item</literal>,
+<literal>title</literal>, <literal>description</literal>
+in different ways.
+This includes support for the Atom 1.0 syndication format defined in IETF
+<ulink url="http://www.ietf.org/rfc/rfc4287.txt">RFC 4287</ulink>
+</para>
+
+<para>The parser attempts to turn the input into
+<ulink url="http://www.purl.org/rss/1.0/">RSS 1.0</ulink>
+RDF triples in the RSS 1.0 model of a syndication feed.
+This includes triples for RSS Enclosures.
+</para>
+
+<para>
+True <ulink url="http://www.purl.org/rss/1.0/">RSS 1.0</ulink> when
+wanted to be used as a full RDF vocabulary, is best parsed by the
+RDF/XML parser (name <literal>rdfxml</literal>).
+</para>
+
+</section>
+
+
+<section id="parser-trig">
+<title>TRiG parser (name <literal>trig</literal>)</title>
+
+<para>A parser for the
+<ulink url="http://www.wiwiss.fu-berlin.de/suhl/bizer/TriG/Spec/">TriG - Turtle with Named Graphs</ulink>
+syntax.
+</para>
+
+<para>The parser is alpha quality and may not support the entire TRiG
+specification.</para>
+
+</section>
+
+
+<section id="parser-turtle">
+<title>Turtle Terse RDF Triple Language parser (name <literal>turtle</literal>)</title>
+
+<para>A parser for the
+<ulink url="http://www.dajobe.org/2004/01/turtle/">Turtle Terse RDF Triple Language</ulink>
+syntax, designed as a useful subset of
+<ulink url="http://www.w3.org/DesignIssues/Notation3">Notation 3</ulink>.
+</para>
+
+</section>
+
+
+</chapter>
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("raptor-docs.xml" "book" "part")
+End:
+-->
diff --git a/docs/raptor-serializers.xml b/docs/raptor-serializers.xml
new file mode 100644
index 0000000..9637e56
--- /dev/null
+++ b/docs/raptor-serializers.xml
@@ -0,0 +1,185 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="raptor-serializers">
+<title>Serializers in Raptor (triples to syntax)</title>
+
+<section id="raptor-serializers-intro">
+<title>Introduction</title>
+
+<para>This section describes the serializers that can be compiled into
+Raptor and their options. The exact serializers supported may vary
+by different builds of raptor and can be queried at run-time by use of the
+<link linkend="raptor-world-get-serializer-description"><function>raptor_world_get_serializer_description</function></link>
+function</para>
+
+<para>The optional options that may be set on parsers can also
+be queried at run-time with the
+<link linkend="raptor-world-get-option-description"><function>raptor_world_get_option_description</function></link>
+function.</para>
+
+</section>
+
+
+<section id="serializer-atom">
+<title>Atom 1.0 serializer (name <literal>atom</literal>)</title>
+
+<para>A serializer to the Atom 1.0 syndication format defined in IETF
+<ulink url="http://www.ietf.org/rfc/rfc4287.txt">RFC 4287</ulink>.
+This serializes an RDF graph written in the RSS 1.0 data model
+to Atom 1.0 plus optionally writes extra RDF triples.
+</para>
+<para>
+The extra RDF triples are written into an at:md metadata block, along
+with at:feedmap and at:entrymap elements to describe the RSS 1.0
+predicate to Atom 1.0 elements mappings for the feed and entry blocks
+respecively. The extra triples are enabled when serializer option
+'rssTriples' is set to string value 'atom-triples'.
+</para>
+
+<para>
+If no atom triples content type field (at:contentType predicate) is
+given, the type is set to 'text/html' when writing out an
+atom:content field in Atom 1.0 format.
+</para>
+
+</section>
+
+
+<section id="serializer-json">
+<title>JSON serializers (name <literal>json</literal> and name <literal>json-triples</literal>)</title>
+
+<para>Two serializers that write JSON in either a resource-centric
+format with name <literal>json</literal> and in a triple-dump format
+with name <literal>json-triples</literal>. The resource-centric
+format is based on the Talis
+<ulink url="http://n2.talis.com/wiki/RDF_JSON_Specification">RDF/JSON</ulink>
+design and the triple-dump format based on the SPARQL query results in JSON
+design.
+</para>
+
+</section>
+
+
+<section id="serializer-nquads">
+<title>N-Quads serializer - default (name <literal>nquads</literal>)</title>
+
+<para>A serializer to the
+<ulink url="http://sw.deri.org/2008/07/n-quads/">N-Quads</ulink>
+extension to N-Triples, providing an optional 4th context graph term
+at the end of the line when a named graph is associated with a triple
+(the triple is contained in a named graph). This is useful for seeing the
+output of named graphs or dealing with SPARQL Datasets.
+</para>
+
+</section>
+
+
+<section id="serializer-ntriples">
+<title>N-Triples serializer - default (name <literal>ntriples</literal>)</title>
+
+<para>A serializer to the
+<ulink url="http://www.w3.org/TR/rdf-testcases/#ntriples">N-Triples</ulink>
+syntax as used by the
+<ulink url="http://www.w3.org/2001/sw/RDFCore/">W3C RDF Core working group</ulink>
+for the <ulink url="http://www.w3.org/TR/rdf-testcases/">RDF Test Cases</ulink>.
+</para>
+
+</section>
+
+
+<section id="serializer-rdfxml">
+<title>RDF/XML serializer (name <literal>rdfxml</literal>)</title>
+
+<para>A serializer to the standard
+<ulink url="http://www.w3.org/TR/rdf-syntax-grammar/">RDF/XML syntax</ulink>
+as revised by the
+<ulink url="http://www.w3.org/2001/sw/RDFCore/">W3C RDF Core working group</ulink>.
+This writes a plain triple-based RDF/XML serialization with no
+optimisation or pretty-printing.
+</para>
+
+</section>
+
+
+<section id="serializer-rdfxml-abbrev">
+<title>RDF/XML (Abbreviated) serializer (name <literal>rdfxml-abbrev</literal>)</title>
+
+<para>An RDF/XML serializer using several of the RDF/XML
+abbreviations to provide a more compact readable format, at the cost
+of some pre-processing. This is suitable for small documents.
+</para>
+
+</section>
+
+
+<section id="serializer-rdfxml-xmp">
+<title>RDF/XML (XMP Profile) serializer (name <literal>rdfxml-xmp</literal>)</title>
+<para>A serializer to the Adobe XMP profile of RDF/XML suitable for
+embedding inside an external document. Embedding means that the
+XML header is omitted, wheras for other XML serializings, it is
+always emitted.
+</para>
+
+</section>
+
+
+<section id="serializer-turtle">
+<title>Turtle serializer (name <literal>turtle</literal>)</title>
+<para>A serializer for the
+<ulink url="http://www.dajobe.org/2004/01/turtle/">Turtle Terse RDF Triple Language</ulink>
+syntax, designed as a useful subset of
+<ulink url="http://www.w3.org/DesignIssues/Notation3">Notation 3</ulink>.
+</para>
+
+</section>
+
+
+<section id="serializer-rss-1-0">
+<title>RSS 1.0 serializer (name <literal>rss-1.0</literal>)</title>
+<para>A serializer to the
+<ulink url="http://purl.org/rss/1.0/spec">RDF Site Summary (RSS) 1.0</ulink>
+format for describing a syndication feed of items.
+</para>
+
+<para>By default this only serializes the RDF triples that describe
+the RSS channel and items found. If serialiser option 'rssTriples'
+is set to value 'rdf-xml' then any additional triples found will
+be included in the channel or item output.
+</para>
+
+</section>
+
+
+<section id="serializer-dot">
+<title>GraphViz dot serializer (name <literal>dot</literal>)</title>
+<para>A serializer to the
+<ulink url="http://www.graphviz.org/">GraphViz</ulink> DOT format.
+</para>
+
+<para>This serializer has a set of associated serializer options
+that may be set to customise the output colors using
+<link linkend="raptor-serializer-set-option"><function>raptor_serializer_set_option()</function></link>
+with the appropriate option name and value as given below.
+</para>
+
+<programlisting>
+RAPTOR_OPTION_RESOURCE_BORDER Border color of resource nodes
+RAPTOR_OPTION_LITERAL_BORDER Border color of literal nodes
+RAPTOR_OPTION_BNODE_BORDER Border color of blank nodes
+RAPTOR_OPTION_RESOURCE_FILL Fill color of resource nodes
+RAPTOR_OPTION_LITERAL_FILL Fill color of literal nodes
+RAPTOR_OPTION_BNODE_FILL Fill color of blank nodes
+</programlisting>
+
+
+</section>
+
+
+</chapter>
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("raptor-docs.xml" "book" "part")
+End:
+-->
diff --git a/docs/raptor-tutorial-intro.xml b/docs/raptor-tutorial-intro.xml
new file mode 100644
index 0000000..58640bb
--- /dev/null
+++ b/docs/raptor-tutorial-intro.xml
@@ -0,0 +1,25 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="tutorial-initialising-finishing">
+<title>Initialising and Finishing using the Library</title>
+
+<para>Raptor requires initialising a raptor_world object before using
+any of the classes which take the world object as an argument in
+their constructors. The function to make the world object is
+raptor_new_world() and the destructor raptor_free_world().
+<programlisting>
+ raptor_world* world;
+ world = raptor_new_world();
+ ...
+ raptor_free_world(world);
+</programlisting>
+</para>
+
+</chapter>
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("raptor-docs.xml" "book" "part")
+End:
+-->
diff --git a/docs/raptor-tutorial-parsing.xml b/docs/raptor-tutorial-parsing.xml
new file mode 100644
index 0000000..0112731
--- /dev/null
+++ b/docs/raptor-tutorial-parsing.xml
@@ -0,0 +1,642 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="tutorial-parsing" xmlns:xi="http://www.w3.org/2003/XInclude">
+<title>Parsing syntaxes to RDF Triples</title>
+
+<section id="tutorial-parsing-intro">
+<title>Introduction</title>
+
+<para>
+The typical sequence of operations to parse is to create a parser
+object, set various handlers and options, start the parsing, send
+some syntax content to the parser object, finish the parsing and
+destroy the parser object.</para>
+
+<para>Several parts of this process are optional, including actually
+using the triple results, which is useful as a syntax checking
+process.
+</para>
+</section>
+
+<section id="tutorial-parser-create">
+<title>Create the Parser object</title>
+
+<para>The parser can be created directly from a known name such as
+<literal>rdfxml</literal> for the W3C Recommendation RDF/XML syntax:
+<programlisting>
+ raptor_parser* rdf_parser;
+
+ rdf_parser = raptor_new_parser(world, "rdfxml");
+</programlisting>
+or the name can be discovered from an <emphasis>description</emphasis>
+as discussed in <link linkend="tutorial-querying-functionality">Querying Functionality</link>
+</para>
+
+<para>The parser can also be created by identifying the syntax by a
+URI, specifying the syntax by a MIME Type, providng an identifier for
+the content such as filename or URI string or giving some initial
+content bytes that can be used to guess.
+Using the
+<link linkend="raptor-new-parser-for-content"><function>raptor_new_parser_for_content()</function></link>
+function, all of these can be given as optional parameters, using NULL
+or 0 for undefined parameters. The constructor will then use as much of
+this information as possible.
+</para>
+<programlisting>
+ raptor_parser* rdf_parser;
+</programlisting>
+
+<para>Create a parser that reads the MIME Type for RDF/XML
+<literal>application/rdf+xml</literal>
+<programlisting>
+ rdf_parser = raptor_new_parser_for_content(world, NULL, "application/rdf+xml", NULL, 0, NULL);
+</programlisting>
+</para>
+
+<para>Create a parser that can read a syntax identified by the URI
+for Turtle <literal>http://www.dajobe.org/2004/01/turtle/</literal>,
+which has no registered MIME Type at this date:
+<programlisting>
+ syntax_uri = raptor_new_uri(world, "http://www.dajobe.org/2004/01/turtle/");
+
+ rdf_parser = raptor_new_parser_for_content(world, syntax_uri, NULL, NULL, 0, NULL);
+</programlisting>
+</para>
+
+<para>Create a parser that recognises the identifier <literal>foo.rss</literal>:
+<programlisting>
+ rdf_parser = raptor_new_parser_for_content(world, NULL, NULL, NULL, 0, "foo.rss");
+</programlisting>
+</para>
+
+<para>Create a parser that recognises the content in <emphasis>buffer</emphasis>:
+<programlisting>
+ rdf_parser = raptor_new_parser_for_content(world, NULL, NULL, buffer, len, NULL);
+</programlisting>
+</para>
+
+<para>Any of the constructor calls can return NULL if no matching
+parser could be found, or the construction failed in another way.
+</para>
+
+</section>
+
+
+<section id="tutorial-parser-features">
+<title>Parser options</title>
+
+<para>There are several
+<emphasis> options</emphasis> that can be set on parsers.
+The exact list of options can be found at run time via the
+<link linkend="tutorial-querying-functionality">Querying Functionality</link>
+or in the API reference for
+<link linkend="raptor-option"><literal>raptor_option</literal></link>.
+</para>
+
+<para>Options are integer enumerations of the
+ <link linkend="raptor-option"><type>raptor_option</type></link> enum and have
+typed values that are either booleans, integers or strings.
+The function that sets options for parsers is
+<link linkend="raptor-parser-set-option">raptor_parser_set_option()</link>
+used as follows:
+<programlisting>
+ /* Set a boolean or integer valued option to value 1 */
+ raptor_parser_set_option(rdf_parser, option, NULL, 1);
+
+ /* Set a string valued option to value "abc" */
+ raptor_parser_set_option(rdf_parser, option, "abc", -1);
+</programlisting>
+</para>
+
+<para>
+There is a corresponding function for reading the values of parser
+option
+<link linkend="raptor-parser-get-option"><function>raptor_parser_get_option()</function></link>
+which takes the option enumeration parameter and returns the boolean /
+integer or string value correspondingly into the appropriate pointer
+argument.
+<programlisting>
+ /* Get a boolean or integer option value */
+ int int_var;
+ raptor_parser_get_option(rdf_parser, option, NULL, &amp;int_var);
+
+ /* Get a string option value */
+ char* string_var;
+ raptor_parser_get_option(rdf_parser, option, &amp;string_var, NULL);
+</programlisting>
+</para>
+
+</section>
+
+
+<section id="tutorial-parser-set-triple-handler">
+<title>Set RDF statement callback handler</title>
+
+<para>The main reason to parse a syntax is to get RDF triples
+returned and these are return by a user-defined handler function
+which is called with parameters of a user data pointer and a
+raptor statement, which includes the triple terms plus the
+optional named graph term. The handler is set with
+<link linkend="raptor-parser-set-statement-handler"><function>raptor_parser_set_statement_handler()</function></link>
+as follows:
+<programlisting>
+ void
+ statement_handler(void* user_data, const raptor_statement* statement)
+ {
+ /* do something with the statement */
+ }
+
+ raptor_parser_set_statement_handler(rdf_parser, user_data, statements_handler);
+</programlisting>
+</para>
+
+<para>Setting a stateemnt handler function is optional since parsing
+without returning statements is a valid use, such as when parsing in
+order to validate a syntax.
+</para>
+</section>
+
+
+<section id="tutorial-parser-set-error-warning-handlers">
+<title>Set parsing log message handlers</title>
+
+<para>Any time before parsing is called, a log handler can be set
+on the world object via the
+<link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler()</function></link>
+method to report errors and warnings from parsing.
+The method takes a user data argument plus a handler callback of type
+<link linkend="raptor-log-handler"><type>raptor_log_handler</type></link>
+with a signature that looks like this:
+<programlisting>
+void
+message_handler(void *user_data, raptor_log_message* message)
+{
+ /* do something with the message */
+}
+</programlisting>
+The handler gets the user data pointer as well as a
+<link linkend="raptor-log-message"><type>raptor_log_handler</type></link>
+pointer that includes associated location information, such as the
+log level,
+<link linkend="raptor-locator"><type>raptor_locator</type></link>,
+and the log message itself. The <emphasis>locator</emphasis>
+structure contains full information on the details of where in the
+file or URI the message occurred.
+</para>
+
+</section>
+
+
+<section id="tutorial-parser-set-id-handler">
+<title>Set the identifier creator handler</title>
+
+<para>Identifiers are created in some parsers by generating them
+automatically or via hints given a syntax. Raptor can customise this
+process using a user-supplied identifier handler function.
+For example, in RDF/XML generated blank node identifiers and those
+those specified <literal>rdf:nodeID</literal> are passed through this
+process. Setting a handler allows the identifier generation mechanism to be
+fully replaced. A lighter alternative is to use
+<link linkend="raptor-world-set-generate-bnodeid-parameters"><function>raptor_world_set_generate_bnodeid_parameters()</function></link>
+to adjust the default algorithm for generated identifiers.
+</para>
+
+<para>It is used as follows
+<programlisting>
+ raptor_generate_bnodeid_handler bnodeid_handler;
+
+ raptor_world_set_generate_bnodeid_handler(rdf_parser, user_data, bnodeid_handler);
+</programlisting>
+</para>
+
+<para>The <emphasis>bnodeid_handler</emphasis> takes the following signature:
+<programlisting>
+unsigned char*
+generate_id_handler(void* user_data, unsigned char* user_id)
+{
+ /* return a new generated ID based on user_id (optional) */
+}
+</programlisting>
+where <emphasis>user_id</emphasis> an optional user-supplied identifier,
+such as the value of a <literal>rdf:nodeID</literal> in RDF/XML.
+</para>
+
+</section>
+
+
+<section id="tutorial-parser-set-namespace-handler">
+<title>Set namespace declared handler</title>
+
+<para>Raptor can report when namespace prefix/URIs are declared in
+during parsing a syntax such as those in XML, RDF/XML or Turtle.
+A handler function can be set to receive these declarations using
+the namespace handler method.
+<programlisting>
+ raptor_namespace_handler namespaces_handler;
+
+ raptor_parser_set_namespace_handler(rdf_parser, user_data, namespaces_handler);
+</programlisting>
+</para>
+
+<para>The <emphasis>namespaces_handler</emphasis> takes the following signature:
+<programlisting>
+void
+namespaces_handler(void* user_data, raptor_namespace *nspace)
+{
+ /* */
+}
+</programlisting>
+<note>This may be called multiple times with the same namespace,
+if the namespace is declared inside different XML sub-trees.
+</note>
+</para>
+
+</section>
+
+
+<section id="tutorial-parse-strictness">
+<title>Set the parsing strictness</title>
+<para>
+<link linkend="raptor-parser-set-option"><function>raptor_parser_set_option()</function></link>
+with option
+<link linkend="RAPTOR-OPTION-STRICT:CAPS"><literal>RAPTOR_OPTION_STRICT</literal></link>
+allows setting of the parser strictness flag. The default is lax parsing,
+accepting older or deprecated syntax forms but may generate a warning. Setting
+to non-0 (true) will cause parser errors to be generated in these cases.
+</para>
+</section>
+
+
+<section id="tutorial-parser-content">
+<title>Provide syntax content to parse</title>
+
+<para>The operation of turning syntax into RDF triples has several
+alternatives from functions that do most of the work starting from a
+URI to functions that allow passing in data buffers.</para>
+
+<note>
+<title>Parsing and MIME Types</title>
+The mime type of the retrieved content is not used to choose
+a parser unless the parser is of type <literal>guess</literal>.
+The guess parser will send an <literal>Accept:</literal> header
+for all known parser syntax mime types (if a URI request is made)
+and based on the response, including the identifiers used,
+pick the appropriate parser to execute. See
+<link linkend="raptor-world-guess-parser-name"><function>raptor_world_guess_parser_name()</function></link>
+for a full discussion of the inputs to the guessing.
+</note>
+
+
+<section id="parse-from-uri">
+<title>Parse the content from a URI (<link linkend="raptor-parser-parse-uri"><function>raptor_parser_parse_uri()</function></link>)</title>
+
+<para>The URI is resolved and the content read from it and passed to
+the parser:
+<programlisting>
+ raptor_parser_parse_uri(rdf_parser, uri, base_uri);
+</programlisting>
+The <emphasis>base_uri</emphasis> is optional (can be
+<literal>NULL</literal>) and will default to the
+<emphasis>uri</emphasis>.
+</para>
+</section>
+
+
+<section id="parse-from-www">
+<title>Parse the content of a URI using an existing WWW connection (<link linkend="raptor-parser-parse-uri-with-connection"><function>raptor_parser_parse_uri_with_connection()</function></link>)</title>
+
+<para>The URI is resolved using an existing WWW connection (for
+example a libcurl CURL handle) to allow for any existing
+WWW configuration to be reused. See
+<link linkend="raptor-new-www-with-connection"><function>raptor_new_www_with_connection</function></link>
+for full details of how this works. The content is then read from the
+result of resolving the URI:
+<programlisting>
+ raptor_parser_parse_uri_with_connection(rdf_parser, uri, base_uri, connection);
+</programlisting>
+The <emphasis>base_uri</emphasis> is optional (can be
+<literal>NULL</literal>) and will default to the
+<emphasis>uri</emphasis>.
+</para>
+</section>
+
+
+<section id="parse-from-filehandle">
+<title>Parse the content of a C <literal>FILE*</literal> (<link linkend="raptor-parser-parse-file-stream"><function>raptor_parser_parse_file_stream()</function></link>)</title>
+
+<para>Parsing can read from a C STDIO file handle:
+<programlisting>
+ stream = fopen(filename, "rb");
+ raptor_parser_parse_file_stream(rdf_parser, stream, filename, base_uri);
+ fclose(stream);
+</programlisting>
+This function can use take an optional <emphasis>filename</emphasis> which
+is used in locator error messages.
+The <emphasis>base_uri</emphasis> may be required by some parsers
+and if <literal>NULL</literal> will cause the parsing to fail.
+This requirement can be checked by looking at the flags in
+the parser description using
+<link linkend="raptor-world-get-parser-description"><function>raptor_world_get_parser_description()</function></link>.
+</para>
+</section>
+
+
+<section id="parse-from-file-uri">
+<title>Parse the content of a file URI (<link linkend="raptor-parser-parse-file"><function>raptor_parser_parse_file()</function></link>)</title>
+
+<para>Parsing can read from a URI known to be a <literal>file:</literal> URI:
+<programlisting>
+ raptor_parser_parse_file(rdf_parser, file_uri, base_uri);
+</programlisting>
+This function requires that the <emphasis>file_uri</emphasis> is
+a file URI, that is
+<literal>raptor_uri_uri_string_is_file_uri( raptor_uri_as_string( file_uri) )</literal>
+must be true.
+The <emphasis>base_uri</emphasis> may be required by some parsers
+and if <literal>NULL</literal> will cause the parsing to fail.
+</para>
+</section>
+
+
+<section id="parse-from-chunks">
+<title>Parse chunks of syntax content provided by the application (<link linkend="raptor-parser-parse-start"><function>raptor_parser_parse_start()</function></link> and <link linkend="raptor-parser-parse-chunk"><function>raptor_parser_parse_chunk()</function></link>)</title>
+
+<para>
+<programlisting>
+ raptor_parser_parse_start(rdf_parser, base_uri);
+ while(/* not finished getting content */) {
+ unsigned char *buffer;
+ size_t buffer_len;
+
+ /* ... obtain some syntax content in buffer of size buffer_len bytes ... */
+
+ raptor_parser_parse_chunk(rdf_parser, buffer, buffer_len, 0);
+ }
+ raptor_parser_parse_chunk(rdf_parser, NULL, 0, 1); /* no data and is_end = 1 */
+</programlisting>
+The <emphasis>base_uri</emphasis> argument to
+<link linkend="raptor-parser-parse-start"><function>raptor_parser_parse_start()</function></link>
+may be required by some parsers
+and if <literal>NULL</literal> will cause the parsing to fail.
+</para>
+
+<para>On the last
+<link linkend="raptor-parser-parse-chunk"><function>raptor_parser_parse_chunk()</function></link>
+call, or after the loop is ended, the <literal>is_end</literal>
+parameter must be set to non-0. Content can be passed with the
+final call. If no content is present at the end (such as in
+some kind of <quote>end of file</quote> situation), then a 0-length
+buffer_len or NULL buffer can be used.</para>
+
+<para>The minimal case is an entire parse in one chunk as follows:</para>
+<programlisting>
+ raptor_parser_parse_start(rdf_parser, base_uri);
+ raptor_parser_parse_chunk(rdf_parser, buffer, buffer_len, 1); /* is_end = 1 */
+</programlisting>
+
+</section>
+
+</section>
+
+
+<section id="restrict-parser-network-access">
+<title>Restrict parser network access</title>
+
+<para>
+Parsing can cause network requests to be performed, especially
+if a URI is given as an argument such as with
+<link linkend="raptor-parser-parse-uri"><function>raptor_parser_parse_uri()</function></link>
+however there may also be indirect requests such as with the
+GRDDL parser that retrieves URIs depending on the results of
+initial parse requests. The URIs requested may not be wanted
+to be fetched or need to be filtered, and this can be done in
+three ways.
+</para>
+
+<section id="tutorial-filter-network-with-feature">
+<title>Filtering parser network requests with option <link linkend="RAPTOR-OPTION-NO-NET:CAPS"><literal>RAPTOR_OPTION_NO_NET</literal></link></title>
+<para>
+The parser option
+<link linkend="RAPTOR-OPTION-NO-NET:CAPS"><literal>RAPTOR_OPTION_NO_NET</literal></link>
+can be set with
+<link linkend="raptor-parser-set-option"><function>raptor_parser_set_option()</function></link>
+and forbids all network requests. There is no customisation with
+this approach, for that see the URI filter in the next section.
+</para>
+
+<programlisting>
+ rdf_parser = raptor_new_parser(world, "rdfxml");
+
+ /* Disable internal network requests */
+ raptor_parser_set_option(rdf_parser, RAPTOR_OPTION_NO_NET, NULL, 1);
+</programlisting>
+
+</section>
+
+
+<section id="tutorial-filter-network-www-uri-filter">
+<title>Filtering parser network requests with <link linkend="raptor-www-set-uri-filter"><function>raptor_www_set_uri_filter()</function></link></title>
+<para>
+The
+<link linkend="raptor-www-set-uri-filter"><function>raptor_www_set_uri_filter()</function></link>
+
+allows setting of a filtering function to operate on all URIs
+retrieved by a WWW connection. This connection can be used in
+parsing when operated by hand.
+</para>
+
+<programlisting>
+void write_bytes_handler(raptor_www* www, void *user_data,
+ const void *ptr, size_t size, size_t nmemb) {
+{
+ raptor_parser* rdf_parser = (raptor_parser*)user_data;
+
+ raptor_parser_parse_chunk(rdf_parser, (unsigned char*)ptr, size*nmemb, 0);
+}
+
+int uri_filter(void* filter_user_data, raptor_uri* uri) {
+ /* return non-0 to forbid the request */
+}
+
+int main(int argc, char *argv[]) {
+ ...
+
+ rdf_parser = raptor_new_parser(world, "rdfxml");
+ www = raptor_new_www(world);
+
+ /* filter all URI requests */
+ raptor_www_set_uri_filter(www, uri_filter, filter_user_data);
+
+ /* make WWW write bytes to parser */
+ raptor_www_set_write_bytes_handler(www, write_bytes_handler, rdf_parser);
+
+ raptor_parser_parse_start(rdf_parser, uri);
+ raptor_www_fetch(www, uri);
+ /* tell the parser that we are done */
+ raptor_parser_parse_chunk(rdf_parser, NULL, 0, 1);
+
+ raptor_free_www(www);
+ raptor_free_parser(rdf_parser);
+
+ ...
+}
+
+</programlisting>
+
+</section>
+
+
+<section id="tutorial-filter-network-parser-uri-filter">
+<title>Filtering parser network requests with <link linkend="raptor-parser-set-uri-filter"><function>raptor_parser_set_uri_filter()</function></link></title>
+
+<para>
+The
+<link linkend="raptor-parser-set-uri-filter"><function>raptor_parser_set_uri_filter()</function></link>
+allows setting of a filtering function to operate on all URIs that
+the parser sees. This operates on the internal raptor_www object
+used inside parsing to retrieve URIs, similar to that described in
+the <link linkend="tutorial-filter-network-www-uri-filter">previous section</link>.
+</para>
+
+<programlisting>
+ int uri_filter(void* filter_user_data, raptor_uri* uri) {
+ /* return non-0 to forbid the request */
+ }
+
+ rdf_parser = raptor_new_parser(world, "rdfxml");
+
+ raptor_parser_set_uri_filter(rdf_parser, uri_filter, filter_user_data);
+
+ /* parse content as normal */
+ raptor_parser_parse_uri(rdf_parser, uri, base_uri);
+</programlisting>
+
+</section>
+
+
+<section id="tutorial-filter-network-parser-timeout">
+<title>Setting timeout for parser network requests with option <link linkend="RAPTOR-OPTION-WWW-TIMEOUT:CAPS"><literal>RAPTOR_OPTION_WWW_TIMEOUT</literal></link></title>
+
+<para>If the value of option
+<link linkend="RAPTOR-OPTION-WWW-TIMEOUT:CAPS"><literal>RAPTOR_OPTION_WWW_TIMEOUT</literal></link>
+if set to a number &gt;0, it is used as the timeout in seconds
+for retrieving of URIs during parsing (primarily for GRDDL).
+This uses
+<link linkend="raptor-www-set-connection-timeout"><function>raptor_www_set_connection_timeout()</function></link>
+internally.
+</para>
+
+<programlisting>
+ rdf_parser = raptor_new_parser(world, "grddl");
+
+ /* set internal URI retrieval maximum time to 5 seconds */
+ raptor_parser_set_option(rdf_parser, RAPTOR_OPTION_WWW_TIMEOUT, NULL, 5);
+</programlisting>
+
+</section>
+
+
+</section>
+
+
+<section id="tutorial-parser-static-info">
+<title>Querying parser static information</title>
+
+<para>
+These methods return information about the constructed parser
+implementation corresponding to the information available
+via <link linkend="raptor-world-get-parser-description"><function>raptor_world_get_parser_description()</function></link>
+for all parsers.
+</para>
+
+<para><link linkend="raptor-parser-get-name"><function>raptor_parser_get_name()</function></link> returns the parser syntax name,
+<link linkend="raptor-parser-get-description"><function>raptor_parser_get_description()</function></link>
+returns more detailed description fields including the long label and
+mime_types for the parser with quality levels.
+</para>
+
+<para><link linkend="raptor-parser-get-accept-header"><function>raptor_parser_get_accept_header()</function></link>
+returns a string that would be sent in an HTTP
+request <code>Accept:</code> header for the syntaxes accepted by this
+parser only.
+</para>
+
+</section>
+
+
+<section id="tutorial-parser-runtime-info">
+<title>Querying parser run-time information</title>
+
+<para>
+<link linkend="raptor-parser-get-locator"><function>raptor_parser_get_locator()</function></link>
+returns the <link linkend="raptor-locator"><type>raptor_locator</type></link>
+for the current position in the input stream. The <emphasis>locator</emphasis>
+structure contains full information on the details of where in the
+file or URI the current parser has reached.
+</para>
+</section>
+
+
+<section id="tutorial-parser-abort">
+<title>Aborting parsing</title>
+
+<para>
+<link linkend="raptor-parser-parse-abort"><function>raptor_parser_parse_abort()</function></link>
+allows the current parsing to be aborted, at which point no further
+triples will be passed to callbacks and the parser will attempt to
+return control to the application. This is most useful when called
+inside a handler function which allows the application to decide to stop
+an active parsing.
+</para>
+</section>
+
+
+<section id="tutorial-parser-destroy">
+<title>Destroy the parser</title>
+
+<para>
+To tidy up, delete the parser object as follows:
+<programlisting>
+ raptor_free_parser(rdf_parser);
+</programlisting>
+</para>
+
+</section>
+
+
+<section id="tutorial-parser-example">
+<title>Parsing example code</title>
+
+<example id="raptor-example-rdfprint">
+<title><filename>rdfprint.c</filename>: Parse an RDF/XML file and print the triples</title>
+<programlisting>
+<xi:include href="rdfprint.c" parse="text"/>
+</programlisting>
+
+<para>Compile it like this:
+<screen>
+$ gcc -o rdfprint rdfprint.c `pkg-config raptor2 --cflags --libs`
+</screen>
+and run it on an RDF file as:
+<screen>
+$ ./rdfprint raptor.rdf
+_:genid1 &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt; &lt;http://usefulinc.com/ns/doap#Project&gt; .
+_:genid1 &lt;http://usefulinc.com/ns/doap#name&gt; "Raptor" .
+_:genid1 &lt;http://usefulinc.com/ns/doap#homepage&gt; &lt;http://librdf.org/raptor/&gt; .
+...
+</screen>
+</para>
+
+</example>
+
+</section>
+
+</chapter>
+
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("raptor-docs.xml" "book" "part")
+End:
+-->
diff --git a/docs/raptor-tutorial-querying-functionality.xml b/docs/raptor-tutorial-querying-functionality.xml
new file mode 100644
index 0000000..bed487d
--- /dev/null
+++ b/docs/raptor-tutorial-querying-functionality.xml
@@ -0,0 +1,85 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="tutorial-querying-functionality">
+<title>Listing built-in functionality</title>
+
+<para>
+Raptor can be configured and compiled with support for different
+lists of parsers and serializers. The list built into the
+library can be found by means of
+<emphasis>description</emphasis> functions. These take as input an
+<literal>int</literal> counter and return descriptions of the object
+at that offset in the list. The return value is a pointer to a
+shared, read-only description of the object, or NULL if the counter
+has gone too far into the list.
+</para>
+
+<variablelist>
+<title>Listing Functionality with Descriptions</title>
+<varlistentry><term>Get descriptions of the parser syntaxes</term>
+<listitem><programlisting>
+ const raptor_syntax_description*
+ raptor_world_get_parser_description(raptor_world* world,
+ unsigned int counter);
+</programlisting></listitem>
+</varlistentry>
+<varlistentry><term>Get descriptions of the serializer syntaxes</term>
+<listitem><programlisting>
+ const raptor_syntax_description*
+ raptor_world_get_serializer_description(raptor_world* world,
+ unsigned int counter);
+</programlisting></listitem>
+</varlistentry>
+<varlistentry><term>Get descriptions of options</term>
+<listitem><programlisting>
+ raptor_option_description*
+ raptor_world_get_option_description(raptor_world* world,
+ const raptor_domain domain,
+ const raptor_option option);
+</programlisting>
+<para>
+Call with the appropriate domains for the class such as
+<link linkend="RAPTOR-DOMAIN-PARSER:CAPS"><literal>RAPTOR_DOMAIN_PARSER</literal></link>,
+<link linkend="RAPTOR-DOMAIN-SERIALIZER:CAPS"><literal>RAPTOR_DOMAIN_SERIALIZER</literal></link>
+ etc. See the
+<link linkend="raptor-domain"><literal>raptor_domain</literal></link>
+description for the full list.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+
+<para>These functions can be called directly after creating a
+raptor world object with
+<link linkend="raptor-new-world"><function>raptor_new_world()</function></link>.
+This is one way to find a parser (name) by it's MIME Type, the other
+is to use the mime_type parameter of the
+<link linkend="raptor-new-parser-for-content"><function>raptor_new_parser_for_content()</function></link>.</para>
+
+<example id="raptor-example-list-all-parser-options">
+<title>List all parser options using option description</title>
+<programlisting>
+ unsigned int i;
+ for(i = 0; i &lt; raptor_option_get_count(); i++) {
+ raptor_option_description* od;
+
+ od = raptor_world_get_option_description(world, RAPTOR_DOMAIN_PARSER, i);
+
+ if(od) {
+ /* do something with od fields such as od->name, od->label */
+ }
+ }
+</programlisting>
+<para>There are more examples of this usage in the source for the
+<literal>rapper</literal> utility in <filename>util/rapper.c</filename>.
+</para>
+</example>
+
+</chapter>
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("raptor-docs.xml" "book" "part")
+End:
+-->
diff --git a/docs/raptor-tutorial-serializing.xml b/docs/raptor-tutorial-serializing.xml
new file mode 100644
index 0000000..f27b7f5
--- /dev/null
+++ b/docs/raptor-tutorial-serializing.xml
@@ -0,0 +1,402 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="tutorial-serializing" xmlns:xi="http://www.w3.org/2003/XInclude">
+<title>Serializing RDF triples to a syntax</title>
+
+<section id="tutorial-serializing-intro">
+<title>Introduction</title>
+
+<para>
+The typical sequence of operations to serialize is to create a
+serializer object, set various callback and features, start the
+serializing, send some RDF triples to the serializer object,
+finish the serializing and destroy the serializer object.
+</para>
+
+</section>
+
+
+<section id="tutorial-serializer-create">
+<title>Create the Serializer object</title>
+
+<para>The serializer can be created directly from a known name using
+<link linkend="raptor-new-serializer"><function>raptor_new_serializer()</function></link>
+such as <literal>rdfxml</literal> for the W3C Recommendation RDF/XML syntax:
+<programlisting>
+ raptor_serializer* rdf_serializer;
+
+ rdf_serializer = raptor_new_serializer(world, "rdfxml");
+</programlisting>
+or the name can be discovered from an <emphasis>description</emphasis>
+as discussed in
+<link linkend="tutorial-querying-functionality">Querying Functionality</link>
+</para>
+</section>
+
+
+<section id="tutorial-serializer-features">
+<title>Serializer options</title>
+
+<para>There are several options that can be set on serializers.
+The exact list of options can be found at run time via the
+<link linkend="tutorial-querying-functionality">Querying Functionality</link>
+or in the API reference for
+<link linkend="raptor-option"><literal>raptor_option</literal></link>.
+</para>
+
+<para>Options are integer enumerations of the
+<link linkend="raptor-option"><type>raptor_option</type></link> enum and have
+values that are either booleans, integers or strings.
+The function that sets options for serializers is:
+<link linkend="raptor-serializer-set-option">raptor_serializer_set_option()</link>
+used as follows:
+<programlisting>
+ /* Set a boolean or integer valued option to value 1 */
+ raptor_serializer_set_option(rdf_serializer, option, NULL, 1);
+
+ /* Set a string valued option to value "abc" */
+ raptor_serializer_set_option(rdf_serializer, option, "abc", -1);
+</programlisting>
+</para>
+
+<para>
+There is a corresponding function for reading the values of serializer
+option
+<link linkend="raptor-serializer-get-option"><function>raptor_serializer_get_option()</function></link>
+which takes the option enumeration parameter and returns the boolean /
+integer or string value correspondingly into the appropriate pointer
+argument.
+<programlisting>
+ /* Get a boolean or integer option value */
+ int int_var;
+ raptor_serializer_get_option(rdf_serializer, option, NULL, &amp;int_var);
+
+ /* Get a string option value */
+ char* string_var;
+ raptor_serializer_get_option(rdf_serializer, option, &amp;string_var, NULL);
+</programlisting>
+</para>
+
+</section>
+
+
+<section id="tutorial-serializer-declare-namespace">
+<title>Declare namespaces</title>
+
+<para>Raptor can use namespace prefix/URIs to abbreviate syntax
+in some syntaxes such as Turtle or any XML syntax including RDF/XML,
+RSS1.0 and Atom 1.0. These are declared
+with <link linkend="raptor-serializer-set-namespace"><function>raptor_serializer_set_namespace()</function></link>
+using a prefix and URI argument pair like this:
+<programlisting>
+ const unsigned char* prefix = "ex";
+ raptor_uri* uri = raptor_new_uri(world, "http://example.org");
+
+ raptor_serializer_set_namespace(rdf_serializer, prefix, uri);
+</programlisting>
+</para>
+
+<para>or
+<link linkend="raptor-serializer-set-namespace-from-namespace"><function>raptor_serializer_set_namespace_from_namespace()</function></link>
+from an existing namespace. This can be useful when connected up the
+the namespace declarations that are generated from a parser via a
+namespace handler set with
+<link linkend="raptor-parser-set-namespace-handler"><function>raptor_parser_set_namespace_handler()</function></link>
+</para>
+like this:
+<programlisting>
+ static void
+ relay_namespaces(void* user_data, raptor_namespace *nspace)
+ {
+ raptor_serializer_set_namespace_from_namespace(rdf_serializer, nspace);
+ }
+
+ ...
+
+ rdf_parser = raptor_new_parser(world, syntax_name);
+ raptor_parser_set_namespace_handler(rdf_parser, rdf_serializer, relay_namespaces);
+</programlisting>
+
+</section>
+
+
+<section id="tutorial-serializer-set-error-warning-handlers">
+<title>Set error and warning handlers</title>
+
+<para>Any time before serializing is started, a log handler can be set
+on the world object via the
+<link linkend="raptor-world-set-log-handler"><function>raptor_world_set_log_handler()</function></link>
+method to report errors and warnings from parsing.
+The method takes a user data argument plus a handler callback of type
+<link linkend="raptor-log-handler"><type>raptor_log_handler</type></link>
+with a signature that looks like this:
+<programlisting>
+void
+message_handler(void *user_data, raptor_log_message* message)
+{
+ /* do something with the message */
+}
+</programlisting>
+The handler gets the user data pointer as well as a
+<link linkend="raptor-log-message"><type>raptor_log_handler</type></link>
+pointer that includes associated location information, such as the
+log level,
+<link linkend="raptor-locator"><type>raptor_locator</type></link>,
+and the log message itself. The <emphasis>locator</emphasis>
+structure contains full information on the details of where in the
+file or URI the message occurred.
+</para>
+
+</section>
+
+
+<section id="tutorial-serializer-to-destination">
+<title>Provide a destination for the serialized syntax</title>
+
+<para>The operation of turning RDF triples into a syntax has several
+alternatives from functions that do most of the work writing to a file
+or string to functions that allow passing in a
+<link linkend="raptor-iostream"><type>raptor_iostream</type></link>
+which can be entirely user-constructed.</para>
+
+<section id="serialize-to-filename">
+<title>Serialize to a filename (<link linkend="raptor-serializer-start-to-filename"><function>raptor_serializer_start_to_filename()</function></link>)</title>
+
+<para>Serialize to a new filename
+(using <link linkend="raptor-new-iostream-to-filename"><function>raptor_new_iostream_to_filename()</function></link> internally)
+and uses asf base URI, the file's URI.
+<programlisting>
+ const char *filename = "raptor.rdf";
+ raptor_serializer_start_to_filename(rdf_serializer, filename);
+</programlisting>
+</para>
+</section>
+
+<section id="serialize-to-string">
+<title>Serialize to a string (<link linkend="raptor-serializer-start-to-string"><function>raptor_serializer_start_to_string()</function></link>)</title>
+
+<para>Serialize to a string that is allocated by the serializer
+(using <link linkend="raptor-new-iostream-to-string"><function>raptor_new_iostream_to_string()</function></link> internally). The
+resulting string is only constructed after <link linkend="raptor-serializer-serialize-end"><function>raptor_serializer_serialize_end()</function></link> is called and at that
+point it is assigned to the string pointer passed in, with the length
+written to the optional length pointer. This function
+takes an optional base URI but may be required by some serializers.
+<programlisting>
+ raptor_uri* uri = raptor_new_uri(world, "http://example.org/base");
+ void *string; /* destination for string */
+ size_t length; /* length of constructed string */
+ raptor_serializer* rdf_serializer = /* serializer created by some means */ ;
+
+ raptor_serializer_start_to_string(rdf_serializer, uri,
+ &amp;string, &amp;length);
+</programlisting>
+</para>
+
+</section>
+
+
+<section id="serialize-to-filehandle">
+<title>Serialize to a FILE* file handle (<link linkend="raptor-serializer-start-to-file-handle"><function>raptor_serializer_start_to_file_handle()</function></link>)</title>
+
+<para>Serialize to an existing open C FILE* file handle
+(using <link linkend="raptor-new-iostream-to-file-handle"><function>raptor_new_iostream_to_file_handle()</function></link> internally). The handle is not closed after serializing is finished. This function
+takes an optional base URI but may be required by some serializers.
+<programlisting>
+ raptor_uri* uri = raptor_new_uri(world, "http://example.org/base");
+ FILE* fh = fopen("raptor.rdf", "wb");
+ raptor_serializer* rdf_serializer = /* serializer created by some means */ ;
+
+ raptor_serializer_start_to_file_handle(rdf_serializer, uri, fh);
+</programlisting>
+</para>
+</section>
+
+<section id="serialize-to-iostream">
+<title>Serialize to an <link linkend="raptor-iostream"><type>raptor_iostream</type></link> (<link linkend="raptor-serializer-start-to-iostream"><function>raptor_serializer_start_to_iostream()</function></link>)</title>
+
+<para>This is the most flexible serializing method as it allows
+writing to any
+<link linkend="raptor-iostream"><type>raptor_iostream</type></link>
+which can be constructed to build any form of user-generated structure
+via callbacks. The iostream remains owned by the caller that can continue
+to write to it after the serializing is finished (after
+<link linkend="raptor-serializer-serialize-end"><function>raptor_serializer_serialize_end()</function></link>) is called).
+<programlisting>
+ raptor_uri* uri = raptor_new_uri(world, "http://example.org/base");
+ raptor_iostream* iostream = /* iostream initialized by some means */ ;
+ raptor_serializer* rdf_serializer = /* serializer created by some means */ ;
+
+ raptor_serializer_start_to_iostream(rdf_serializer, uri, iostream);
+
+ while( /* got RDF triples */ ) {
+ raptor_statement* triple = /* ... triple made from somewhere ... */ ;
+ raptor_serializer_serialize_statement(rdf_serializer, triple);
+ }
+ raptor_serializer_serialize_end(rdf_serializer);
+
+ raptor_free_serializer(rdf_serializer);
+
+ /* ... write other stuff to iostream ... */
+
+ raptor_free_iostream(iostream);
+</programlisting>
+</para>
+</section>
+
+
+</section>
+
+
+<section id="tutorial-serializer-get-triples">
+<title>Get or construct RDF Statements (Triples)</title>
+<para>
+An <link linkend="raptor-statement"><type>raptor_statement</type></link>
+containing the triple terms and optional graph term
+can be made either by receiving them from a
+<link linkend="raptor-parser"><type>raptor_parser</type></link>
+via parsing or can be constructed by hand.</para>
+
+<para>When constructing by hand,
+the <link linkend="raptor-statement"><type>raptor_statement</type></link>
+structure should be allocated by the application and the fields
+filled in. Each statement has three triple terms (subject,
+predicate, object) and an optional graph term. The subject can be a
+URI or blank node, the predicate can only be a URI and the object can
+be a URI, blank node or RDF literal. RDF literals can have either
+just a Unicode string, a Unicode string and a language or a Unicode
+string and a datatype URI.</para>
+
+<para>The statement terms are all instances of
+<link linkend="raptor-term"><type>raptor_term</type></link>
+objects constructed with the appropriate constructor for
+the URI, blank node or rdf literal types. The graph term
+of the statement is typically a URI or blank node.
+</para>
+
+<example id="raptor-example-rdfserialize">
+<title><filename>rdfserialize.c</filename>: Serialize 1 triple to RDF/XML (Abbreviated)</title>
+<programlisting>
+<xi:include href="rdfserialize.c" parse="text"/>
+</programlisting>
+
+<para>Compile it like this:
+<screen>
+$ gcc -o rdfserialize rdfserialize.c `pkg-config raptor2 --cflags --libs`
+</screen>
+and run it with an optional base URI argument
+<screen>
+$ ./rdfserialize
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
+ &lt;rdf:Description rdf:about="http://example.org/subject"&gt;
+ &lt;ns0:predicate xmlns:ns0="http://example.org/" xml:lang="en"&gt;An example&lt;/ns0:predicate&gt;
+ &lt;/rdf:Description&gt;
+&lt;/rdf:RDF&gt;
+</screen>
+</para>
+
+</example>
+
+</section>
+
+<section id="tutorial-serializer-send-triples">
+<title>Send RDF Triples to serializer</title>
+
+<para>
+Once the serializer has been started, RDF triples can be sent to it
+via the
+<link linkend="raptor-serializer-serialize-statement"><function>raptor_serializer_serialize_statement()</function></link>
+function with a
+<link linkend="raptor-statement"><type>raptor_statement</type></link>
+value.
+</para>
+
+<para>Once all triples are sent, the serializing must be finished
+with a call to
+<link linkend="raptor-serializer-serialize-end"><function>raptor_serializer_serialize_end()</function></link>.
+In particular, only at this point does the
+<link linkend="raptor-iostream"><type>raptor_iostream</type></link>
+get flushed or any string constructed for
+<link linkend="raptor-serializer-start-to-string"><function>raptor_serializer_start_to_string()</function></link>.
+<programlisting>
+ /* start the serializing somehow */
+ while( /* got RDF triples */ ) {
+ raptor_serializer_serialize_statement(rdf_serializer, triple);
+ }
+ raptor_serializer_serialize_end(rdf_serializer);
+ /* now can use the serializing result (FILE, string, raptor_iostream) */
+</programlisting>
+
+</para>
+</section>
+
+
+<section id="tutorial-serializer-runtime-info">
+<title>Querying serializer run-time information</title>
+
+<para>
+<link linkend="raptor-serializer-get-iostream"><function>raptor_serializer_get_iostream()</function></link>
+gets the current serializer's raptor_iostream.
+</para>
+
+<para>
+<link linkend="raptor-serializer-get-locator"><function>raptor_serializer_get_locator()</function></link>
+returns the <link linkend="raptor-locator"><type>raptor_locator</type></link>
+for the current position in the output stream. The <emphasis>locator</emphasis>
+structure contains full information on the details of where in the
+file or URI the current serializer has reached.
+</para>
+</section>
+
+
+<section id="tutorial-serializer-destroy">
+<title>Destroy the serializer</title>
+
+<para>
+To tidy up, delete the serializer object as follows:
+<programlisting>
+ raptor_free_serializer(rdf_serializer);
+</programlisting>
+</para>
+
+</section>
+
+<section id="tutorial-serializer-example">
+<title>Serializing example code</title>
+
+<example id="raptor-example-rdfcat">
+<title><filename>rdfcat.c</filename>: Read any RDF syntax and serialize to RDF/XML (Abbreviated)</title>
+<programlisting>
+<xi:include href="rdfcat.c" parse="text"/>
+</programlisting>
+
+<para>Compile it like this:
+<screen>
+$ gcc -o rdfcat rdfcat.c `pkg-config raptor2 --cflags --libs`
+</screen>
+and run it on an RDF file as:
+<screen>
+$ ./rdfcat raptor.rdf
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;rdf:RDF xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://usefulinc.com/ns/doap#"&gt;
+ &lt;rdf:Description rdf:about=""&gt;
+ &lt;foaf:maker&gt;
+ &lt;foaf:Person&gt;
+ &lt;foaf:name&gt;Dave Beckett&lt;/foaf:name&gt;
+...
+</screen>
+</para>
+
+</example>
+
+</section>
+
+</chapter>
+
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("raptor-docs.xml" "book" "part")
+End:
+-->
diff --git a/docs/raptor1-eol.html b/docs/raptor1-eol.html
new file mode 100644
index 0000000..6c760de
--- /dev/null
+++ b/docs/raptor1-eol.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!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 Syntax Library - Raptor 1 End of Life (EOL)</title>
+</head>
+<body>
+
+<h1 style="text-align:center">Raptor RDF Syntax Library - Raptor 1 End of Life (EOL)</h1>
+
+
+<h2>End of life timeline</h2>
+
+<p><b>Nov 2010 onwards</b></p>
+
+<ol>
+<li>Raptor V1 last release remains
+<a href="http://librdf.org/raptor/NEWS.html#D2010-01-30-V1.4.21">1.4.21 of 2010-01-30</a></li>
+<li>Raptor V2 release 2.0.0 will happen "soon".</li>
+<li>The next Rasqal release will support Raptor V2 only.</li>
+<li>The next librdf release will support Raptor V2 only
+(and require a Rasqal built with Raptor V2).</li>
+</ol>
+
+<p>In the style of open source I've been using for the Redland libraries,
+which might be described as "release when it's ready, not release by date",
+these dates may slip a little but the intention is that Raptor V2 becomes
+the mainline.</p>
+
+<p>I do NOT rule out that there will be another Raptor V1 release but
+it will be ONLY for security issues (including data loss or crashes).
+It will contain minimal changes and not add any new features or fix
+any other type of bug.</p>
+
+
+<h2>Developer Actions</h2>
+
+<p>If you use the Raptor V1 ABI/API directly, you will need to
+upgrade. If you want to write conditional code, that's possible.
+The redland librdf GIT source (or 1.0.12) uses the approach of macros
+that rewrite V2 into V1 forms and I recommend this way since dropping
+Raptor V1 support then amounts to removing the macros.
+</p>
+
+<p>The
+<a href="http://librdf.org/raptor/api/">Raptor V2 API documentation</a>
+has a detailed
+<a href="http://librdf.org/raptor/api/raptor-changes.html">section on the changes</a>
+and there is also an
+<a href="http://librdf.org/raptor/UPGRADING.html">upgrading document</a>
+plus it points to a perl script docs/upgrade-script.pl (also in the Raptor
+V2 distribution) that automates some of the work (renames mostly) and
+leaves markers where a human has to fix.</p>
+
+<p>The Raptor V1 API documentation will remain in a frozen state available
+at
+<a href="http://librdf.org/raptor/api-1.4/">http://librdf.org/raptor/api-1.4/</a>
+</p>
+
+<h2>Packager Actions</h2>
+
+<p>If you are a packager of the redland libraries, you need to prepare for the
+Raptor V1 / Raptor V2 transition which can vary depending on your
+distribution's standards. The two versions share two files: the rapper
+binary and the rapper.1 man page. I do not want to rename them to rapper2
+etc. since rapper is a well known utility name in RDF and I want 'rapper'
+to provide the latest version.</p>
+
+<p>In the Debian packaging which I maintain, these are already planned to be
+in separate packages so that both libraries can be installed and you can
+choose the raptor-utils2 package over raptor-utils (V1).</p>
+
+<p>In other distributions where everything is in one package (BSD Ports
+for example) you may have to move the rapper/rapper.1 files to the
+raptor V2 package and create a new raptor1 package without them.
+i.e. something like this</p>
+
+<dl>
+<dt><b>Raptor V1 package 1.4.21-X:</b><br /></dt>
+<dd>
+ <code>/usr/lib/libraptor1.so.1</code>* ...<br />
+ (no <code>/usr/bin/rapper</code> or <code>/usr/share/man/man1/rapper.1</code> )
+</dd>
+<dt><b>Raptor V2 package 2.0.0-1:</b><br /></dt>
+<dd>
+ <code>/usr/lib/libraptor2.so.0</code>* ...<br />
+ <code>/usr/bin/rapper</code><br />
+ <code>/usr/share/man/man1/rapper.1</code><br />
+ conflicts with older raptor1 packages before 1.4.21-X
+</dd>
+</dl>
+
+<p>The other thing to deal with is that when Rasqal is built against
+Raptor V2, it has internal change that mean librdf has to also be built
+against rasqal-with-raptor2. This needs enforcing with packaging
+dependencies.</p>
+
+<p>This packaging work can be done/started as soon as Raptor V2 2.0.0
+is released which will be "soon".</p>
+
+<p><a href="http://www.dajobe.org/">Dave Beckett</a>, 2010-11-07</p>
+
+<hr />
+
+<p>Copyright (C) 2010 <a href="http://www.dajobe.org/">Dave Beckett</a></p>
+
+</body>
+</html>
diff --git a/docs/raptor2-overrides.txt b/docs/raptor2-overrides.txt
new file mode 100644
index 0000000..e0b0a4f
--- /dev/null
+++ b/docs/raptor2-overrides.txt
@@ -0,0 +1,50 @@
+<TYPEDEF>
+<NAME>raptor_iostream</NAME>
+raptor_iostream* raptor_iostream;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>raptor_namespace</NAME>
+raptor_namespace* raptor_namespace;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>raptor_namespace_stack</NAME>
+raptor_namespace_stack* raptor_namespace_stack;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>raptor_parser</NAME>
+raptor_parser* raptor_parser;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>raptor_qname</NAME>
+raptor_qname* raptor_qname;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>raptor_sequence</NAME>
+raptor_sequence* raptor_sequence;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>raptor_serializer</NAME>
+raptor_serializer* raptor_serializer;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>raptor_stringbuffer</NAME>
+raptor_stringbuffer* raptor_stringbuffer;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>raptor_uri</NAME>
+raptor_uri* raptor_uri;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>raptor_www</NAME>
+raptor_www* raptor_www;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>raptor_xml_element</NAME>
+raptor_xml_element* raptor_xml_element;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>raptor_xml_writer</NAME>
+raptor_xml_writer* raptor_xml_writer;
+</TYPEDEF>
+
+
diff --git a/docs/raptor2-sections.txt b/docs/raptor2-sections.txt
new file mode 100644
index 0000000..e93a42f
--- /dev/null
+++ b/docs/raptor2-sections.txt
@@ -0,0 +1,498 @@
+<SECTION>
+<FILE>section-world</FILE>
+raptor_world
+raptor_new_world
+raptor_world_open
+raptor_free_world
+raptor_world_flag
+raptor_world_set_flag
+raptor_world_set_libxslt_security_preferences
+raptor_world_set_log_handler
+raptor_world_get_parser_description
+raptor_world_is_parser_name
+raptor_world_guess_parser_name
+raptor_world_get_serializer_description
+raptor_world_is_serializer_name
+raptor_world_generate_bnodeid
+raptor_world_set_generate_bnodeid_handler
+raptor_world_set_generate_bnodeid_parameters
+</SECTION>
+
+<SECTION>
+<FILE>section-general</FILE>
+RAPTOR_VERSION
+RAPTOR_VERSION_MAJOR
+RAPTOR_VERSION_MINOR
+RAPTOR_VERSION_RELEASE
+RAPTOR_VERSION_STRING
+raptor_version_major
+raptor_version_minor
+raptor_version_release
+raptor_version_decimal
+raptor_copyright_string
+raptor_home_url_string
+raptor_license_string
+raptor_short_copyright_string
+raptor_version_string
+raptor_owl_namespace_uri
+raptor_rdf_namespace_uri
+raptor_rdf_schema_namespace_uri
+raptor_xml_literal_datatype_uri_string
+raptor_xml_namespace_uri
+raptor_xmlschema_datatypes_namespace_uri
+raptor_statement_handler
+raptor_snprintf
+raptor_vasprintf
+raptor_vsnprintf
+raptor_vsnprintf2
+raptor_log_handler
+raptor_log_message
+raptor_log_level
+raptor_log_level_get_label
+raptor_domain
+raptor_domain_get_label
+raptor_data_compare_handler
+raptor_data_context_free_handler
+raptor_data_context_print_handler
+raptor_data_free_handler
+raptor_data_malloc_handler
+raptor_data_print_handler
+raptor_syntax_bitflags
+raptor_syntax_description
+raptor_syntax_description_validate
+raptor_type_q
+</SECTION>
+
+<SECTION>
+<FILE>section-option</FILE>
+raptor_option
+raptor_option_description
+raptor_option_get_count
+raptor_option_value_type
+raptor_option_get_value_type_label
+raptor_world_get_option_description
+raptor_free_option_description
+raptor_world_get_option_from_uri
+</SECTION>
+
+<SECTION>
+<FILE>section-memory</FILE>
+raptor_free_memory
+raptor_alloc_memory
+raptor_calloc_memory
+</SECTION>
+
+<SECTION>
+<FILE>section-triples</FILE>
+raptor_term_type
+raptor_term
+raptor_term_value
+raptor_term_blank_value
+raptor_term_literal_value
+raptor_new_term_from_blank
+raptor_new_term_from_counted_blank
+raptor_new_term_from_literal
+raptor_new_term_from_counted_literal
+raptor_new_term_from_counted_uri_string
+raptor_new_term_from_uri
+raptor_new_term_from_uri_string
+raptor_term_copy
+raptor_term_compare
+raptor_term_equals
+raptor_free_term
+raptor_term_to_counted_string
+raptor_term_to_string
+raptor_term_ntriples_write
+raptor_term_to_turtle_counted_string
+raptor_term_to_turtle_string
+raptor_term_turtle_write
+raptor_statement
+raptor_new_statement
+raptor_new_statement_from_nodes
+raptor_free_statement
+raptor_statement_copy
+raptor_statement_compare
+raptor_statement_equals
+raptor_statement_init
+raptor_statement_clear
+raptor_statement_print
+raptor_statement_print_as_ntriples
+raptor_statement_ntriples_write
+</SECTION>
+
+<SECTION>
+<FILE>section-constants</FILE>
+raptor_rdf_namespace_uri_len
+raptor_xml_literal_datatype_uri_string_len
+RAPTOR_RDF_MS_URI
+RAPTOR_RDF_SCHEMA_URI
+RAPTOR_XMLSCHEMA_DATATYPES_URI
+RAPTOR_OWL_URI
+</SECTION>
+
+<SECTION>
+<FILE>section-avltree</FILE>
+raptor_avltree
+raptor_avltree_bitflags
+raptor_new_avltree
+raptor_free_avltree
+raptor_avltree_add
+raptor_avltree_delete
+raptor_avltree_print
+raptor_avltree_remove
+raptor_avltree_search
+raptor_avltree_set_print_handler
+raptor_avltree_size
+raptor_avltree_visit
+raptor_avltree_iterator
+raptor_new_avltree_iterator
+raptor_free_avltree_iterator
+raptor_avltree_iterator_get
+raptor_avltree_iterator_is_end
+raptor_avltree_iterator_next
+raptor_avltree_visit_handler
+</SECTION>
+
+<SECTION>
+<FILE>section-parser</FILE>
+raptor_parser
+raptor_new_parser
+raptor_new_parser_for_content
+raptor_free_parser
+raptor_graph_mark_handler
+raptor_namespace_handler
+raptor_parser_set_statement_handler
+raptor_graph_mark_flags
+raptor_parser_set_graph_mark_handler
+raptor_parser_set_namespace_handler
+raptor_parser_get_description
+raptor_parser_get_locator
+raptor_parser_parse_abort
+raptor_parser_parse_chunk
+raptor_parser_parse_file
+raptor_parser_parse_file_stream
+raptor_parser_parse_iostream
+raptor_parser_parse_start
+raptor_parser_parse_uri
+raptor_parser_parse_uri_with_connection
+raptor_parser_get_graph
+raptor_parser_get_name
+raptor_parser_set_option
+raptor_parser_get_option
+raptor_parser_get_accept_header
+raptor_parser_set_uri_filter
+raptor_parser_get_world
+</SECTION>
+
+<SECTION>
+<FILE>section-locator</FILE>
+raptor_locator
+raptor_locator_print
+raptor_locator_format
+raptor_locator_line
+raptor_locator_column
+raptor_locator_byte
+raptor_locator_file
+raptor_locator_uri
+</SECTION>
+
+<SECTION>
+<FILE>section-serializer</FILE>
+raptor_serializer
+raptor_new_serializer
+raptor_free_serializer
+raptor_serializer_start_to_iostream
+raptor_serializer_start_to_filename
+raptor_serializer_start_to_string
+raptor_serializer_start_to_file_handle
+raptor_serializer_set_namespace
+raptor_serializer_set_namespace_from_namespace
+raptor_serializer_serialize_statement
+raptor_serializer_serialize_end
+raptor_serializer_flush
+raptor_serializer_get_description
+raptor_serializer_get_iostream
+raptor_serializer_get_locator
+raptor_serializer_set_option
+raptor_serializer_get_option
+raptor_serializer_get_world
+</SECTION>
+
+<SECTION>
+<FILE>section-uri</FILE>
+raptor_uri
+raptor_new_uri
+raptor_new_uri_from_counted_string
+raptor_new_uri_from_uri_local_name
+raptor_new_uri_from_uri_or_file_string
+raptor_new_uri_relative_to_base
+raptor_new_uri_relative_to_base_counted
+raptor_new_uri_from_id
+raptor_new_uri_for_rdf_concept
+raptor_new_uri_for_xmlbase
+raptor_new_uri_for_retrieval
+raptor_free_uri
+raptor_uri_compare
+raptor_uri_equals
+raptor_uri_copy
+raptor_uri_as_string
+raptor_uri_as_counted_string
+raptor_uri_to_relative_counted_uri_string
+raptor_uri_to_relative_uri_string
+raptor_uri_to_counted_string
+raptor_uri_to_string
+raptor_uri_resolve_uri_reference
+raptor_uri_filename_to_uri_string
+raptor_uri_uri_string_to_filename
+raptor_uri_uri_string_to_filename_fragment
+raptor_uri_uri_string_to_counted_filename_fragment
+raptor_uri_uri_string_is_file_uri
+raptor_uri_print
+raptor_uri_get_world
+raptor_uri_write
+raptor_uri_file_exists
+raptor_uri_filename_exists
+raptor_uri_to_turtle_counted_string
+raptor_uri_to_turtle_string
+raptor_uri_turtle_write
+</SECTION>
+
+<SECTION>
+<FILE>section-stringbuffer</FILE>
+raptor_stringbuffer
+raptor_new_stringbuffer
+raptor_free_stringbuffer
+raptor_stringbuffer_append_counted_string
+raptor_stringbuffer_append_decimal
+raptor_stringbuffer_append_hexadecimal
+raptor_stringbuffer_append_string
+raptor_stringbuffer_append_stringbuffer
+raptor_stringbuffer_append_uri_escaped_counted_string
+raptor_stringbuffer_prepend_counted_string
+raptor_stringbuffer_prepend_string
+raptor_stringbuffer_as_string
+raptor_stringbuffer_length
+raptor_stringbuffer_copy_to_string
+raptor_stringbuffer_write
+</SECTION>
+
+
+<SECTION>
+<FILE>section-sequence</FILE>
+raptor_sequence
+raptor_new_sequence
+raptor_new_sequence_with_context
+raptor_free_sequence
+raptor_sequence_delete_at
+raptor_sequence_get_at
+raptor_sequence_join
+raptor_sequence_next_permutation
+raptor_sequence_pop
+raptor_sequence_print
+raptor_sequence_push
+raptor_sequence_reverse
+raptor_sequence_set_at
+raptor_sequence_shift
+raptor_sequence_size
+raptor_sequence_sort
+raptor_sequence_swap
+raptor_sequence_unshift
+</SECTION>
+
+<SECTION>
+<FILE>section-www</FILE>
+raptor_www
+raptor_new_www
+raptor_new_www_with_connection
+raptor_free_www
+raptor_www_write_bytes_handler
+raptor_www_content_type_handler
+raptor_www_set_user_agent
+raptor_www_set_proxy
+raptor_www_set_http_accept
+raptor_www_set_http_cache_control
+raptor_www_set_write_bytes_handler
+raptor_www_set_connection_timeout
+raptor_www_set_content_type_handler
+raptor_uri_filter_func
+raptor_www_set_uri_filter
+raptor_www_final_uri_handler
+raptor_www_get_final_uri
+raptor_www_set_final_uri_handler
+raptor_www_fetch
+raptor_www_fetch_to_string
+raptor_www_get_connection
+raptor_www_set_ssl_cert_options
+raptor_www_set_ssl_verify_options
+raptor_www_abort
+</SECTION>
+
+<SECTION>
+<FILE>section-iostream</FILE>
+raptor_iostream
+raptor_iostream_init_func
+raptor_iostream_finish_func
+raptor_iostream_write_byte_func
+raptor_iostream_write_bytes_func
+raptor_iostream_write_end_func
+raptor_iostream_read_bytes_func
+raptor_iostream_read_eof_func
+raptor_iostream_handler
+raptor_new_iostream_from_handler
+raptor_new_iostream_from_sink
+raptor_new_iostream_from_filename
+raptor_new_iostream_from_file_handle
+raptor_new_iostream_from_string
+raptor_new_iostream_to_sink
+raptor_new_iostream_to_filename
+raptor_new_iostream_to_file_handle
+raptor_new_iostream_to_string
+raptor_free_iostream
+raptor_iostream_hexadecimal_write
+raptor_iostream_read_bytes
+raptor_iostream_read_eof
+raptor_iostream_tell
+raptor_iostream_counted_string_write
+raptor_iostream_decimal_write
+raptor_iostream_string_write
+raptor_iostream_write_byte
+raptor_iostream_write_bytes
+raptor_iostream_write_end
+raptor_bnodeid_ntriples_write
+raptor_string_ntriples_write
+raptor_string_python_write
+</SECTION>
+
+
+<SECTION>
+<FILE>section-sax2</FILE>
+raptor_sax2
+raptor_new_sax2
+raptor_free_sax2
+raptor_sax2_start_element_handler
+raptor_sax2_end_element_handler
+raptor_sax2_characters_handler
+raptor_sax2_cdata_handler
+raptor_sax2_comment_handler
+raptor_sax2_unparsed_entity_decl_handler
+raptor_sax2_external_entity_ref_handler
+raptor_sax2_set_start_element_handler
+raptor_sax2_set_end_element_handler
+raptor_sax2_set_characters_handler
+raptor_sax2_set_cdata_handler
+raptor_sax2_set_comment_handler
+raptor_sax2_set_unparsed_entity_decl_handler
+raptor_sax2_set_external_entity_ref_handler
+raptor_sax2_set_namespace_handler
+raptor_sax2_set_uri_filter
+raptor_sax2_parse_start
+raptor_sax2_parse_chunk
+raptor_sax2_inscope_xml_language
+raptor_sax2_inscope_base_uri
+</SECTION>
+
+<SECTION>
+<FILE>section-xml</FILE>
+raptor_xml_element
+raptor_new_xml_element
+raptor_new_xml_element_from_namespace_local_name
+raptor_free_xml_element
+raptor_xml_element_get_name
+raptor_xml_element_get_attributes
+raptor_xml_element_get_attributes_count
+raptor_xml_element_set_attributes
+raptor_xml_element_declare_namespace
+raptor_xml_element_is_empty
+raptor_xml_element_get_language
+raptor_xml_element_write
+raptor_new_xml_writer
+raptor_free_xml_writer
+raptor_xml_writer_empty_element
+raptor_xml_writer_start_element
+raptor_xml_writer_end_element
+raptor_xml_writer_cdata
+raptor_xml_writer_cdata_counted
+raptor_xml_writer_raw
+raptor_xml_writer_raw_counted
+raptor_xml_writer_comment
+raptor_xml_writer_comment_counted
+raptor_xml_writer_flush
+raptor_xml_writer_newline
+raptor_xml_writer_get_depth
+raptor_xml_writer_set_option
+raptor_xml_writer_get_option
+raptor_xml_writer
+raptor_xml_escape_string_any
+raptor_xml_escape_string_any_write
+raptor_xml_escape_string
+raptor_xml_escape_string_write
+raptor_xml_name_check
+</SECTION>
+
+<SECTION>
+<FILE>section-xml-qname</FILE>
+raptor_qname
+raptor_new_qname
+raptor_new_qname_from_namespace_local_name
+raptor_new_qname_from_namespace_uri
+raptor_qname_copy
+raptor_free_qname
+raptor_qname_equal
+raptor_qname_string_to_uri
+raptor_qname_write
+raptor_qname_get_counted_value
+raptor_qname_get_local_name
+raptor_qname_get_namespace
+raptor_qname_get_value
+raptor_qname_to_counted_name
+</SECTION>
+
+<SECTION>
+<FILE>section-xml-namespace</FILE>
+raptor_namespace
+raptor_new_namespace_from_uri
+raptor_new_namespaces
+raptor_namespaces_init
+raptor_namespaces_clear
+raptor_free_namespaces
+raptor_namespaces_start_namespace
+raptor_namespaces_start_namespace_full
+raptor_namespaces_end_for_depth
+raptor_namespaces_get_default_namespace
+raptor_namespaces_find_namespace
+raptor_namespaces_find_namespace_by_uri
+raptor_namespaces_namespace_in_scope
+raptor_new_namespace
+raptor_free_namespace
+raptor_namespace_get_uri
+raptor_namespace_get_prefix
+raptor_namespace_get_counted_prefix
+raptor_namespace_write
+raptor_namespace_stack
+raptor_namespace_stack_start_namespace
+raptor_namespace_format_as_xml
+raptor_xml_namespace_string_parse
+</SECTION>
+
+<SECTION>
+<FILE>section-unicode</FILE>
+raptor_unichar
+raptor_unicode_utf8_string_put_char
+raptor_unicode_utf8_string_get_char
+raptor_unicode_is_xml11_namestartchar
+raptor_unicode_is_xml10_namestartchar
+raptor_unicode_is_xml11_namechar
+raptor_unicode_is_xml10_namechar
+raptor_unicode_check_utf8_string
+raptor_unicode_utf8_strlen
+raptor_unicode_utf8_substr
+</SECTION>
+
+<SECTION>
+<FILE>section-unused</FILE>
+RAPTOR_API
+RAPTOR_DEPRECATED
+RAPTOR_PRINTF_FORMAT
+RAPTOR_V2_AVAILABLE
+raptor_new_world_internal
+</SECTION>
diff --git a/docs/raptor2.types b/docs/raptor2.types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docs/raptor2.types
diff --git a/docs/rdfcat.c b/docs/rdfcat.c
new file mode 100644
index 0000000..978a641
--- /dev/null
+++ b/docs/rdfcat.c
@@ -0,0 +1,55 @@
+#include <stdio.h>
+#include <raptor2.h>
+
+/* rdfcat.c: parse any RDF syntax and serialize to RDF/XML-Abbrev */
+
+static raptor_serializer* rdf_serializer;
+
+static void
+serialize_triple(void* user_data, raptor_statement* triple)
+{
+ raptor_serializer_serialize_statement(rdf_serializer, triple);
+}
+
+static void
+declare_namespace(void* user_data, raptor_namespace *nspace)
+{
+ raptor_serializer_set_namespace_from_namespace(rdf_serializer, nspace);
+}
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world = NULL;
+ raptor_parser* rdf_parser = NULL;
+ unsigned char *uri_string;
+ raptor_uri *uri, *base_uri;
+
+ world = raptor_new_world();
+
+ uri_string = raptor_uri_filename_to_uri_string(argv[1]);
+ uri = raptor_new_uri(world, uri_string);
+ base_uri = raptor_uri_copy(uri);
+
+ /* Ask raptor to work out which parser to use */
+ rdf_parser = raptor_new_parser(world, "guess");
+ raptor_parser_set_statement_handler(rdf_parser, NULL, serialize_triple);
+ raptor_parser_set_namespace_handler(rdf_parser, NULL, declare_namespace);
+
+ rdf_serializer = raptor_new_serializer(world, "rdfxml-abbrev");
+
+ raptor_serializer_start_to_file_handle(rdf_serializer, base_uri, stdout);
+ raptor_parser_parse_file(rdf_parser, uri, base_uri);
+ raptor_serializer_serialize_end(rdf_serializer);
+
+ raptor_free_serializer(rdf_serializer);
+ raptor_free_parser(rdf_parser);
+
+ raptor_free_uri(base_uri);
+ raptor_free_uri(uri);
+ raptor_free_memory(uri_string);
+
+ raptor_free_world(world);
+
+ return 0;
+}
diff --git a/docs/rdfprint.c b/docs/rdfprint.c
new file mode 100644
index 0000000..093aa98
--- /dev/null
+++ b/docs/rdfprint.c
@@ -0,0 +1,42 @@
+#include <stdio.h>
+#include <raptor2.h>
+
+/* rdfprint.c: print triples from parsing RDF/XML */
+
+static void
+print_triple(void* user_data, raptor_statement* triple)
+{
+ raptor_statement_print_as_ntriples(triple, stdout);
+ fputc('\n', stdout);
+}
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world = NULL;
+ raptor_parser* rdf_parser = NULL;
+ unsigned char *uri_string;
+ raptor_uri *uri, *base_uri;
+
+ world = raptor_new_world();
+
+ rdf_parser = raptor_new_parser(world, "rdfxml");
+
+ raptor_parser_set_statement_handler(rdf_parser, NULL, print_triple);
+
+ uri_string = raptor_uri_filename_to_uri_string(argv[1]);
+ uri = raptor_new_uri(world, uri_string);
+ base_uri = raptor_uri_copy(uri);
+
+ raptor_parser_parse_file(rdf_parser, uri, base_uri);
+
+ raptor_free_parser(rdf_parser);
+
+ raptor_free_uri(base_uri);
+ raptor_free_uri(uri);
+ raptor_free_memory(uri_string);
+
+ raptor_free_world(world);
+
+ return 0;
+}
diff --git a/docs/rdfserialize.c b/docs/rdfserialize.c
new file mode 100644
index 0000000..ecbc6b3
--- /dev/null
+++ b/docs/rdfserialize.c
@@ -0,0 +1,47 @@
+#include <stdio.h>
+#include <raptor2.h>
+#include <stdlib.h>
+
+/* rdfserialize.c: serialize 1 triple to RDF/XML-Abbrev */
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world = NULL;
+ raptor_serializer* rdf_serializer = NULL;
+ unsigned char *uri_string;
+ raptor_uri *base_uri;
+ raptor_statement* triple;
+
+ world = raptor_new_world();
+
+ uri_string = raptor_uri_filename_to_uri_string(argv[1]);
+ base_uri = raptor_new_uri(world, uri_string);
+
+ rdf_serializer = raptor_new_serializer(world, "rdfxml-abbrev");
+ raptor_serializer_start_to_file_handle(rdf_serializer, base_uri, stdout);
+
+ /* Make a triple with URI subject, URI predicate, literal object */
+ triple = raptor_new_statement(world);
+ triple->subject = raptor_new_term_from_uri_string(world, (const unsigned char*)"http://example.org/subject");
+ triple->predicate = raptor_new_term_from_uri_string(world, (const unsigned char*)"http://example.org/predicate");
+ triple->object = raptor_new_term_from_literal(world,
+ (const unsigned char*)"An example literal",
+ NULL,
+ (const unsigned char*)"en");
+
+ /* Write the triple */
+ raptor_serializer_serialize_statement(rdf_serializer, triple);
+
+ /* Delete the triple */
+ raptor_free_statement(triple);
+
+ raptor_serializer_serialize_end(rdf_serializer);
+ raptor_free_serializer(rdf_serializer);
+
+ raptor_free_uri(base_uri);
+ raptor_free_memory(uri_string);
+
+ raptor_free_world(world);
+ return 0;
+}
diff --git a/docs/tmpl/raptor2-unused.sgml b/docs/tmpl/raptor2-unused.sgml
new file mode 100644
index 0000000..203d00c
--- /dev/null
+++ b/docs/tmpl/raptor2-unused.sgml
@@ -0,0 +1,949 @@
+<!-- ##### SECTION ./tmpl/section-uri-factory.sgml:Long_Description ##### -->
+<para>
+A factory that allows registering an implementation for the URI
+class to override the simple internal one (#raptor_uri are char*).
+Normally used by redland to replace #raptor_uri with #librdf_uri
+</para>
+
+
+<!-- ##### SECTION ./tmpl/section-uri-factory.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/section-uri-factory.sgml:Short_Description ##### -->
+Provide an implementation for the URI class.
+
+
+<!-- ##### SECTION ./tmpl/section-uri-factory.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/section-uri-factory.sgml:Title ##### -->
+URI Factory
+
+
+<!-- ##### FUNCTION raptor_compare_strings ##### -->
+<para>
+
+</para>
+
+@a:
+@b:
+@Returns:
+
+<!-- ##### STRUCT raptor_error_handlers ##### -->
+<para>
+
+</para>
+
+@magic:
+@world:
+@locator:
+@last_log_level:
+@handlers:
+
+<!-- ##### FUNCTION raptor_error_handlers_init ##### -->
+<para>
+
+</para>
+
+@world:
+@error_handlers:
+
+<!-- ##### FUNCTION raptor_format_locator ##### -->
+<para>
+
+</para>
+
+@buffer:
+@length:
+@locator:
+@Returns:
+
+<!-- ##### ENUM raptor_genid_type ##### -->
+<para>
+
+</para>
+
+@RAPTOR_GENID_TYPE_BNODEID:
+@RAPTOR_GENID_TYPE_BAGID:
+
+<!-- ##### USER_FUNCTION raptor_graph_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@graph:
+
+<!-- ##### FUNCTION raptor_iostream_format_hexadecimal ##### -->
+<para>
+
+</para>
+
+@iostr:
+@integer:
+@width:
+@Returns:
+
+<!-- ##### STRUCT raptor_iostream_handler2 ##### -->
+<para>
+
+</para>
+
+@version:
+@init:
+@finish:
+@write_byte:
+@write_bytes:
+@write_end:
+@read_bytes:
+@read_eof:
+
+<!-- ##### FUNCTION raptor_iostream_write_counted_string ##### -->
+<para>
+
+</para>
+
+@iostr:
+@string:
+@len:
+@Returns:
+
+<!-- ##### FUNCTION raptor_iostream_write_decimal ##### -->
+<para>
+
+</para>
+
+@iostr:
+@integer:
+@Returns:
+
+<!-- ##### FUNCTION raptor_iostream_write_namespace ##### -->
+<para>
+
+</para>
+
+@iostr:
+@ns:
+@Returns:
+
+<!-- ##### FUNCTION raptor_iostream_write_qname ##### -->
+<para>
+
+</para>
+
+@iostr:
+@qname:
+@Returns:
+
+<!-- ##### FUNCTION raptor_iostream_write_statement_ntriples ##### -->
+<para>
+
+</para>
+
+@iostr:
+@statement:
+
+<!-- ##### FUNCTION raptor_iostream_write_string ##### -->
+<para>
+
+</para>
+
+@iostr:
+@string:
+@Returns:
+
+<!-- ##### FUNCTION raptor_iostream_write_string_ntriples ##### -->
+<para>
+
+</para>
+
+@iostr:
+@string:
+@len:
+@delim:
+@Returns:
+
+<!-- ##### FUNCTION raptor_iostream_write_string_python ##### -->
+<para>
+
+</para>
+
+@iostr:
+@string:
+@len:
+@delim:
+@flags:
+@Returns:
+
+<!-- ##### FUNCTION raptor_iostream_write_stringbuffer ##### -->
+<para>
+
+</para>
+
+@iostr:
+@sb:
+@Returns:
+
+<!-- ##### FUNCTION raptor_iostream_write_uri ##### -->
+<para>
+
+</para>
+
+@iostr:
+@uri:
+@Returns:
+
+<!-- ##### FUNCTION raptor_iostream_write_xml_any_escaped_string ##### -->
+<para>
+
+</para>
+
+@iostr:
+@string:
+@len:
+@quote:
+@xml_version:
+@Returns:
+
+<!-- ##### FUNCTION raptor_iostream_write_xml_element ##### -->
+<para>
+
+</para>
+
+@iostr:
+@element:
+@nstack:
+@is_empty:
+@is_end:
+@depth:
+@Returns:
+
+<!-- ##### FUNCTION raptor_iostream_write_xml_escaped_string ##### -->
+<para>
+
+</para>
+
+@iostr:
+@string:
+@len:
+@quote:
+@Returns:
+
+<!-- ##### ENUM raptor_libxml_flags ##### -->
+<para>
+
+</para>
+
+@RAPTOR_LIBXML_FLAGS_GENERIC_ERROR_SAVE:
+@RAPTOR_LIBXML_FLAGS_STRUCTURED_ERROR_SAVE:
+
+<!-- ##### FUNCTION raptor_locator_uri_string ##### -->
+<para>
+
+</para>
+
+@locator:
+@Returns:
+
+<!-- ##### USER_FUNCTION raptor_message_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@locator:
+@message:
+
+<!-- ##### STRUCT raptor_message_handler_closure ##### -->
+<para>
+
+</para>
+
+@user_data:
+@handler:
+
+<!-- ##### FUNCTION raptor_namespace_copy ##### -->
+<para>
+
+</para>
+
+@nstack:
+@ns:
+@new_depth:
+@Returns:
+
+<!-- ##### FUNCTION raptor_namespaces_format ##### -->
+<para>
+
+</para>
+
+@ns:
+@length_p:
+@Returns:
+
+<!-- ##### FUNCTION raptor_namespaces_qname_from_uri ##### -->
+<para>
+
+</para>
+
+@nstack:
+@uri:
+@xml_version:
+@Returns:
+
+<!-- ##### FUNCTION raptor_new_iostream_from_handler2 ##### -->
+<para>
+
+</para>
+
+@world:
+@user_data:
+@handler2:
+@Returns:
+
+<!-- ##### FUNCTION raptor_new_namespace_parts_from_string ##### -->
+<para>
+
+</para>
+
+@string:
+@prefix:
+@uri_string:
+@Returns:
+
+<!-- ##### FUNCTION raptor_option_get_value_type ##### -->
+<para>
+
+</para>
+
+@option:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parse_file ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@uri:
+@base_uri:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parse_file_stream ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@stream:
+@filename:
+@base_uri:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parse_uri ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@uri:
+@base_uri:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parse_uri_with_connection ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@uri:
+@base_uri:
+@connection:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parser_get_feature_string ##### -->
+<para>
+
+</para>
+
+@parser:
+@feature:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parser_get_label ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parser_get_mime_type ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parser_get_need_base_uri ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parser_get_new_generated_id ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@type:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parser_get_option_count ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+<!-- ##### FUNCTION raptor_parser_get_option_string ##### -->
+<para>
+
+</para>
+
+@parser:
+@option:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parser_set_default_generate_id_parameters ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@prefix:
+@base:
+
+<!-- ##### FUNCTION raptor_parser_set_feature_string ##### -->
+<para>
+
+</para>
+
+@parser:
+@feature:
+@value:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parser_set_generate_id_handler ##### -->
+<para>
+
+</para>
+
+@parser:
+@user_data:
+@handler:
+
+<!-- ##### FUNCTION raptor_parser_set_graph_handler ##### -->
+<para>
+
+</para>
+
+@parser:
+@user_data:
+@handler:
+
+<!-- ##### FUNCTION raptor_parser_set_option_string ##### -->
+<para>
+
+</para>
+
+@parser:
+@option:
+@value:
+@Returns:
+
+<!-- ##### FUNCTION raptor_parser_set_strict ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@is_strict:
+
+<!-- ##### FUNCTION raptor_print_locator ##### -->
+<para>
+
+</para>
+
+@locator:
+@stream:
+
+<!-- ##### FUNCTION raptor_print_ntriples_string ##### -->
+<para>
+
+</para>
+
+@string:
+@delim:
+@stream:
+@Returns:
+
+<!-- ##### FUNCTION raptor_sequence_print_string ##### -->
+<para>
+
+</para>
+
+@data:
+@fh:
+
+<!-- ##### FUNCTION raptor_sequence_set_print_handler ##### -->
+<para>
+
+</para>
+
+@seq:
+@print_handler:
+
+<!-- ##### FUNCTION raptor_serialize_end ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serialize_set_namespace ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@uri:
+@prefix:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serialize_set_namespace_from_namespace ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@nspace:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serialize_start_to_file_handle ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@uri:
+@fh:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serialize_start_to_filename ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@filename:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serialize_start_to_iostream ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@uri:
+@iostream:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serialize_start_to_string ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@uri:
+@string_p:
+@length_p:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serialize_statement ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@statement:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serializer_get_feature ##### -->
+<para>
+
+</para>
+
+@serializer:
+@feature:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serializer_get_feature_string ##### -->
+<para>
+
+</para>
+
+@serializer:
+@feature:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serializer_get_option_string ##### -->
+<para>
+
+</para>
+
+@serializer:
+@option:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serializer_set_feature ##### -->
+<para>
+
+</para>
+
+@serializer:
+@feature:
+@value:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serializer_set_feature_string ##### -->
+<para>
+
+</para>
+
+@serializer:
+@feature:
+@value:
+@Returns:
+
+<!-- ##### FUNCTION raptor_serializer_set_option_string ##### -->
+<para>
+
+</para>
+
+@serializer:
+@option:
+@value:
+@Returns:
+
+<!-- ##### FUNCTION raptor_term_as_counted_string ##### -->
+<para>
+
+</para>
+
+@term:
+@len_p:
+@Returns:
+
+<!-- ##### FUNCTION raptor_term_as_string ##### -->
+<para>
+
+</para>
+
+@term:
+@Returns:
+
+<!-- ##### FUNCTION raptor_unicode_char_to_utf8 ##### -->
+<para>
+
+</para>
+
+@c:
+@output:
+@Returns:
+
+<!-- ##### FUNCTION raptor_utf8_check ##### -->
+<para>
+
+</para>
+
+@string:
+@length:
+@Returns:
+
+<!-- ##### FUNCTION raptor_utf8_to_unicode_char ##### -->
+<para>
+
+</para>
+
+@output:
+@input:
+@length:
+@Returns:
+
+<!-- ##### FUNCTION raptor_world_enumerate_parser_options ##### -->
+<para>
+
+</para>
+
+@world:
+@option:
+@name:
+@uri:
+@label:
+@Returns:
+
+<!-- ##### FUNCTION raptor_world_enumerate_parsers ##### -->
+<para>
+
+</para>
+
+@world:
+@counter:
+@name:
+@label:
+@mime_type:
+@uri_string:
+@Returns:
+
+<!-- ##### FUNCTION raptor_world_enumerate_sax2_options ##### -->
+<para>
+
+</para>
+
+@world:
+@option:
+@name:
+@uri:
+@label:
+@Returns:
+
+<!-- ##### FUNCTION raptor_world_enumerate_serializer_options ##### -->
+<para>
+
+</para>
+
+@world:
+@option:
+@name:
+@uri:
+@label:
+@Returns:
+
+<!-- ##### FUNCTION raptor_world_enumerate_serializers ##### -->
+<para>
+
+</para>
+
+@world:
+@counter:
+@name:
+@label:
+@mime_type:
+@uri_string:
+@Returns:
+
+<!-- ##### FUNCTION raptor_world_enumerate_xml_writer_options ##### -->
+<para>
+
+</para>
+
+@world:
+@option:
+@name:
+@uri:
+@label:
+@Returns:
+
+<!-- ##### FUNCTION raptor_world_set_error_handler ##### -->
+<para>
+
+</para>
+
+@world:
+@user_data:
+@handler:
+
+<!-- ##### FUNCTION raptor_world_set_fatal_error_handler ##### -->
+<para>
+
+</para>
+
+@world:
+@user_data:
+@handler:
+
+<!-- ##### FUNCTION raptor_world_set_libxml_flags ##### -->
+<para>
+
+</para>
+
+@world:
+@flags:
+
+<!-- ##### FUNCTION raptor_world_set_warning_handler ##### -->
+<para>
+
+</para>
+
+@world:
+@user_data:
+@handler:
+
+<!-- ##### FUNCTION raptor_world_set_www_flags ##### -->
+<para>
+
+</para>
+
+@world:
+@flags:
+
+<!-- ##### FUNCTION raptor_www_finish ##### -->
+<para>
+
+</para>
+
+@world:
+
+<!-- ##### FUNCTION raptor_www_free ##### -->
+<para>
+
+</para>
+
+@www:
+
+<!-- ##### FUNCTION raptor_www_init ##### -->
+<para>
+
+</para>
+
+@world:
+@Returns:
+
+<!-- ##### FUNCTION raptor_www_new ##### -->
+<para>
+
+</para>
+
+@world:
+@Returns:
+
+<!-- ##### FUNCTION raptor_www_new_with_connection ##### -->
+<para>
+
+</para>
+
+@world:
+@connection:
+@Returns:
+
+<!-- ##### FUNCTION raptor_www_no_www_library_init_finish ##### -->
+<para>
+
+</para>
+
+@world:
+
+<!-- ##### FUNCTION raptor_xml_any_escape_string ##### -->
+<para>
+
+</para>
+
+@world:
+@string:
+@len:
+@buffer:
+@length:
+@quote:
+@xml_version:
+@Returns:
+
+<!-- ##### FUNCTION raptor_xml_any_escaped_string_write ##### -->
+<para>
+
+</para>
+
+@string:
+@len:
+@quote:
+@xml_version:
+@iostr:
+@Returns:
+
+<!-- ##### FUNCTION raptor_xml_escaped_string_write ##### -->
+<para>
+
+</para>
+
+@string:
+@len:
+@quote:
+@iostr:
+@Returns:
+
+<!-- ##### FUNCTION raptor_xml_writer_get_feature ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@feature:
+@Returns:
+
+<!-- ##### FUNCTION raptor_xml_writer_get_feature_string ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@feature:
+@Returns:
+
+<!-- ##### FUNCTION raptor_xml_writer_get_option_string ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@option:
+@Returns:
+
+<!-- ##### FUNCTION raptor_xml_writer_set_feature ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@feature:
+@value:
+@Returns:
+
+<!-- ##### FUNCTION raptor_xml_writer_set_feature_string ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@feature:
+@value:
+@Returns:
+
+<!-- ##### FUNCTION raptor_xml_writer_set_option_string ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@option:
+@value:
+@Returns:
+
diff --git a/docs/tmpl/section-avltree.sgml b/docs/tmpl/section-avltree.sgml
new file mode 100644
index 0000000..29afd67
--- /dev/null
+++ b/docs/tmpl/section-avltree.sgml
@@ -0,0 +1,197 @@
+<!-- ##### SECTION Title ##### -->
+AVL Trees
+
+<!-- ##### SECTION Short_Description ##### -->
+AVL Trees
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+AVL Trees
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_avltree ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ENUM raptor_avltree_bitflags ##### -->
+<para>
+
+</para>
+
+@RAPTOR_AVLTREE_FLAG_REPLACE_DUPLICATES:
+
+<!-- ##### FUNCTION raptor_new_avltree ##### -->
+<para>
+
+</para>
+
+@compare_handler:
+@free_handler:
+@flags:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_avltree ##### -->
+<para>
+
+</para>
+
+@tree:
+
+
+<!-- ##### FUNCTION raptor_avltree_add ##### -->
+<para>
+
+</para>
+
+@tree:
+@p_data:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_avltree_delete ##### -->
+<para>
+
+</para>
+
+@tree:
+@p_data:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_avltree_print ##### -->
+<para>
+
+</para>
+
+@tree:
+@stream:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_avltree_remove ##### -->
+<para>
+
+</para>
+
+@tree:
+@p_data:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_avltree_search ##### -->
+<para>
+
+</para>
+
+@tree:
+@p_data:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_avltree_set_print_handler ##### -->
+<para>
+
+</para>
+
+@tree:
+@print_handler:
+
+
+<!-- ##### FUNCTION raptor_avltree_size ##### -->
+<para>
+
+</para>
+
+@tree:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_avltree_visit ##### -->
+<para>
+
+</para>
+
+@tree:
+@visit_handler:
+@user_data:
+@Returns:
+
+
+<!-- ##### TYPEDEF raptor_avltree_iterator ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_new_avltree_iterator ##### -->
+<para>
+
+</para>
+
+@tree:
+@range:
+@range_free_handler:
+@direction:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_avltree_iterator ##### -->
+<para>
+
+</para>
+
+@iterator:
+
+
+<!-- ##### FUNCTION raptor_avltree_iterator_get ##### -->
+<para>
+
+</para>
+
+@iterator:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_avltree_iterator_is_end ##### -->
+<para>
+
+</para>
+
+@iterator:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_avltree_iterator_next ##### -->
+<para>
+
+</para>
+
+@iterator:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION raptor_avltree_visit_handler ##### -->
+<para>
+
+</para>
+
+@depth:
+@data:
+@user_data:
+@Returns:
+
+
diff --git a/docs/tmpl/section-constants.sgml b/docs/tmpl/section-constants.sgml
new file mode 100644
index 0000000..a2d7e23
--- /dev/null
+++ b/docs/tmpl/section-constants.sgml
@@ -0,0 +1,62 @@
+<!-- ##### SECTION Title ##### -->
+Constants
+
+<!-- ##### SECTION Short_Description ##### -->
+Constant values and strings
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Version numbers and often-used namespace URI strings.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### VARIABLE raptor_rdf_namespace_uri_len ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_xml_literal_datatype_uri_string_len ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO RAPTOR_RDF_MS_URI ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO RAPTOR_RDF_SCHEMA_URI ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO RAPTOR_XMLSCHEMA_DATATYPES_URI ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO RAPTOR_OWL_URI ##### -->
+<para>
+
+</para>
+
+
+
diff --git a/docs/tmpl/section-general.sgml b/docs/tmpl/section-general.sgml
new file mode 100644
index 0000000..d3ef135
--- /dev/null
+++ b/docs/tmpl/section-general.sgml
@@ -0,0 +1,371 @@
+<!-- ##### SECTION Title ##### -->
+General
+
+<!-- ##### SECTION Short_Description ##### -->
+General library constants and utility functions
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+How to get access to version numbers, set message and error handlers,
+list the parsed and serialized syntaxes provided in the library
+and various other utility functions.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### MACRO RAPTOR_VERSION ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO RAPTOR_VERSION_MAJOR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO RAPTOR_VERSION_MINOR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO RAPTOR_VERSION_RELEASE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO RAPTOR_VERSION_STRING ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### VARIABLE raptor_version_major ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_version_minor ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_version_release ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_version_decimal ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_copyright_string ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_home_url_string ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_license_string ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_short_copyright_string ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_version_string ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_owl_namespace_uri ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_rdf_namespace_uri ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_rdf_schema_namespace_uri ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_xml_literal_datatype_uri_string ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_xml_namespace_uri ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE raptor_xmlschema_datatypes_namespace_uri ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### USER_FUNCTION raptor_statement_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@statement:
+
+
+<!-- ##### FUNCTION raptor_snprintf ##### -->
+<para>
+
+</para>
+
+@buffer:
+@size:
+@format:
+@...:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_vasprintf ##### -->
+<para>
+
+</para>
+
+@ret:
+@format:
+@arguments:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_vsnprintf ##### -->
+<para>
+
+</para>
+
+@format:
+@arguments:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_vsnprintf2 ##### -->
+<para>
+
+</para>
+
+@buffer:
+@size:
+@format:
+@arguments:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION raptor_log_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@message:
+
+
+<!-- ##### STRUCT raptor_log_message ##### -->
+<para>
+
+</para>
+
+@code:
+@domain:
+@level:
+@locator:
+@text:
+
+<!-- ##### ENUM raptor_log_level ##### -->
+<para>
+
+</para>
+
+@RAPTOR_LOG_LEVEL_NONE:
+@RAPTOR_LOG_LEVEL_TRACE:
+@RAPTOR_LOG_LEVEL_DEBUG:
+@RAPTOR_LOG_LEVEL_INFO:
+@RAPTOR_LOG_LEVEL_WARN:
+@RAPTOR_LOG_LEVEL_ERROR:
+@RAPTOR_LOG_LEVEL_FATAL:
+@RAPTOR_LOG_LEVEL_LAST:
+
+<!-- ##### FUNCTION raptor_log_level_get_label ##### -->
+<para>
+
+</para>
+
+@level:
+@Returns:
+
+
+<!-- ##### ENUM raptor_domain ##### -->
+<para>
+
+</para>
+
+@RAPTOR_DOMAIN_NONE:
+@RAPTOR_DOMAIN_IOSTREAM:
+@RAPTOR_DOMAIN_NAMESPACE:
+@RAPTOR_DOMAIN_PARSER:
+@RAPTOR_DOMAIN_QNAME:
+@RAPTOR_DOMAIN_SAX2:
+@RAPTOR_DOMAIN_SERIALIZER:
+@RAPTOR_DOMAIN_TERM:
+@RAPTOR_DOMAIN_TURTLE_WRITER:
+@RAPTOR_DOMAIN_URI:
+@RAPTOR_DOMAIN_WORLD:
+@RAPTOR_DOMAIN_WWW:
+@RAPTOR_DOMAIN_XML_WRITER:
+@RAPTOR_DOMAIN_LAST:
+
+<!-- ##### FUNCTION raptor_domain_get_label ##### -->
+<para>
+
+</para>
+
+@domain:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION raptor_data_compare_handler ##### -->
+<para>
+
+</para>
+
+@data1:
+@data2:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION raptor_data_context_free_handler ##### -->
+<para>
+
+</para>
+
+@context:
+@object:
+
+
+<!-- ##### USER_FUNCTION raptor_data_context_print_handler ##### -->
+<para>
+
+</para>
+
+@context:
+@object:
+@fh:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION raptor_data_free_handler ##### -->
+<para>
+
+</para>
+
+@data:
+
+
+<!-- ##### USER_FUNCTION raptor_data_malloc_handler ##### -->
+<para>
+
+</para>
+
+@size:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION raptor_data_print_handler ##### -->
+<para>
+
+</para>
+
+@object:
+@fh:
+@Returns:
+
+
+<!-- ##### ENUM raptor_syntax_bitflags ##### -->
+<para>
+
+</para>
+
+@RAPTOR_SYNTAX_NEED_BASE_URI:
+
+<!-- ##### STRUCT raptor_syntax_description ##### -->
+<para>
+
+</para>
+
+@names:
+@names_count:
+@label:
+@mime_types:
+@mime_types_count:
+@uri_strings:
+@uri_strings_count:
+@flags:
+
+<!-- ##### FUNCTION raptor_syntax_description_validate ##### -->
+<para>
+
+</para>
+
+@desc:
+@Returns:
+
+
+<!-- ##### STRUCT raptor_type_q ##### -->
+<para>
+
+</para>
+
+@mime_type:
+@mime_type_len:
+@q:
+
diff --git a/docs/tmpl/section-iostream.sgml b/docs/tmpl/section-iostream.sgml
new file mode 100644
index 0000000..84311b6
--- /dev/null
+++ b/docs/tmpl/section-iostream.sgml
@@ -0,0 +1,353 @@
+<!-- ##### SECTION Title ##### -->
+I/O Stream
+
+<!-- ##### SECTION Short_Description ##### -->
+Providing streaming I/O writing to files, strings or user code.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+An class providing an I/O writer abstraction that allows generating
+output that can be stored or passed on to system files, strings
+allocated in memory (usually via #raptor_stringbuffer), system
+file handles (<literal>FILE*</literal>) or to a user function.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_iostream ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### USER_FUNCTION raptor_iostream_init_func ##### -->
+<para>
+
+</para>
+
+@context:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION raptor_iostream_finish_func ##### -->
+<para>
+
+</para>
+
+@context:
+
+
+<!-- ##### USER_FUNCTION raptor_iostream_write_byte_func ##### -->
+<para>
+
+</para>
+
+@context:
+@byte:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION raptor_iostream_write_bytes_func ##### -->
+<para>
+
+</para>
+
+@context:
+@ptr:
+@size:
+@nmemb:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION raptor_iostream_write_end_func ##### -->
+<para>
+
+</para>
+
+@context:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION raptor_iostream_read_bytes_func ##### -->
+<para>
+
+</para>
+
+@context:
+@ptr:
+@size:
+@nmemb:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION raptor_iostream_read_eof_func ##### -->
+<para>
+
+</para>
+
+@context:
+@Returns:
+
+
+<!-- ##### STRUCT raptor_iostream_handler ##### -->
+<para>
+
+</para>
+
+@version:
+@init:
+@finish:
+@write_byte:
+@write_bytes:
+@write_end:
+@read_bytes:
+@read_eof:
+
+<!-- ##### FUNCTION raptor_new_iostream_from_handler ##### -->
+<para>
+
+</para>
+
+@world:
+@user_data:
+@handler:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_iostream_from_sink ##### -->
+<para>
+
+</para>
+
+@world:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_iostream_from_filename ##### -->
+<para>
+
+</para>
+
+@world:
+@filename:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_iostream_from_file_handle ##### -->
+<para>
+
+</para>
+
+@world:
+@handle:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_iostream_from_string ##### -->
+<para>
+
+</para>
+
+@world:
+@string:
+@length:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_iostream_to_sink ##### -->
+<para>
+
+</para>
+
+@world:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_iostream_to_filename ##### -->
+<para>
+
+</para>
+
+@world:
+@filename:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_iostream_to_file_handle ##### -->
+<para>
+
+</para>
+
+@world:
+@handle:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_iostream_to_string ##### -->
+<para>
+
+</para>
+
+@world:
+@string_p:
+@length_p:
+@malloc_handler:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_iostream ##### -->
+<para>
+
+</para>
+
+@iostr:
+
+
+<!-- ##### FUNCTION raptor_iostream_hexadecimal_write ##### -->
+<para>
+
+</para>
+
+@integer:
+@width:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_iostream_read_bytes ##### -->
+<para>
+
+</para>
+
+@ptr:
+@size:
+@nmemb:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_iostream_read_eof ##### -->
+<para>
+
+</para>
+
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_iostream_tell ##### -->
+<para>
+
+</para>
+
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_iostream_counted_string_write ##### -->
+<para>
+
+</para>
+
+@string:
+@len:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_iostream_decimal_write ##### -->
+<para>
+
+</para>
+
+@integer:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_iostream_string_write ##### -->
+<para>
+
+</para>
+
+@string:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_iostream_write_byte ##### -->
+<para>
+
+</para>
+
+@byte:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_iostream_write_bytes ##### -->
+<para>
+
+</para>
+
+@ptr:
+@size:
+@nmemb:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_iostream_write_end ##### -->
+<para>
+
+</para>
+
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_bnodeid_ntriples_write ##### -->
+<para>
+
+</para>
+
+@bnodeid:
+@len:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_string_ntriples_write ##### -->
+<para>
+
+</para>
+
+@string:
+@len:
+@delim:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_string_python_write ##### -->
+<para>
+
+</para>
+
+@string:
+@len:
+@delim:
+@flags:
+@iostr:
+@Returns:
+
+
diff --git a/docs/tmpl/section-locator.sgml b/docs/tmpl/section-locator.sgml
new file mode 100644
index 0000000..9b8a519
--- /dev/null
+++ b/docs/tmpl/section-locator.sgml
@@ -0,0 +1,101 @@
+<!-- ##### SECTION Title ##### -->
+Locator
+
+<!-- ##### SECTION Short_Description ##### -->
+Location information for errors, warnings and messages.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+A small structure that can be optionally filled in when
+errors, warnings or other messages are generated and returned
+to user code.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### STRUCT raptor_locator ##### -->
+<para>
+
+</para>
+
+@uri:
+@file:
+@line:
+@column:
+@byte:
+
+<!-- ##### FUNCTION raptor_locator_print ##### -->
+<para>
+
+</para>
+
+@locator:
+@stream:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_locator_format ##### -->
+<para>
+
+</para>
+
+@buffer:
+@length:
+@locator:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_locator_line ##### -->
+<para>
+
+</para>
+
+@locator:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_locator_column ##### -->
+<para>
+
+</para>
+
+@locator:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_locator_byte ##### -->
+<para>
+
+</para>
+
+@locator:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_locator_file ##### -->
+<para>
+
+</para>
+
+@locator:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_locator_uri ##### -->
+<para>
+
+</para>
+
+@locator:
+@Returns:
+
+
diff --git a/docs/tmpl/section-memory.sgml b/docs/tmpl/section-memory.sgml
new file mode 100644
index 0000000..3a11802
--- /dev/null
+++ b/docs/tmpl/section-memory.sgml
@@ -0,0 +1,51 @@
+<!-- ##### SECTION Title ##### -->
+Memory
+
+<!-- ##### SECTION Short_Description ##### -->
+Memory handling functions
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Wrappers around the free, malloc and calloc functions but
+called from inside the library. Required by some systems
+to handle multiple-HEAPs and pass memory to and from the library.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### FUNCTION raptor_free_memory ##### -->
+<para>
+
+</para>
+
+@ptr:
+
+
+<!-- ##### FUNCTION raptor_alloc_memory ##### -->
+<para>
+
+</para>
+
+@size:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_calloc_memory ##### -->
+<para>
+
+</para>
+
+@nmemb:
+@size:
+@Returns:
+
+
diff --git a/docs/tmpl/section-option.sgml b/docs/tmpl/section-option.sgml
new file mode 100644
index 0000000..469feb4
--- /dev/null
+++ b/docs/tmpl/section-option.sgml
@@ -0,0 +1,145 @@
+<!-- ##### SECTION Title ##### -->
+Options
+
+<!-- ##### SECTION Short_Description ##### -->
+Class options
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Options for several classes such as #raptor_parser, #raptor_serializer
+#raptor_sax2 and #raptor_xml_writer that can be get and set.
+Utility functions exist to enumerate them, their description and
+the parameter type taken.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### ENUM raptor_option ##### -->
+<para>
+
+</para>
+
+@RAPTOR_OPTION_SCANNING:
+@RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES:
+@RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES:
+@RAPTOR_OPTION_ALLOW_BAGID:
+@RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST:
+@RAPTOR_OPTION_NORMALIZE_LANGUAGE:
+@RAPTOR_OPTION_NON_NFC_FATAL:
+@RAPTOR_OPTION_WARN_OTHER_PARSETYPES:
+@RAPTOR_OPTION_CHECK_RDF_ID:
+@RAPTOR_OPTION_RELATIVE_URIS:
+@RAPTOR_OPTION_WRITER_AUTO_INDENT:
+@RAPTOR_OPTION_WRITER_AUTO_EMPTY:
+@RAPTOR_OPTION_WRITER_INDENT_WIDTH:
+@RAPTOR_OPTION_WRITER_XML_VERSION:
+@RAPTOR_OPTION_WRITER_XML_DECLARATION:
+@RAPTOR_OPTION_NO_NET:
+@RAPTOR_OPTION_RESOURCE_BORDER:
+@RAPTOR_OPTION_LITERAL_BORDER:
+@RAPTOR_OPTION_BNODE_BORDER:
+@RAPTOR_OPTION_RESOURCE_FILL:
+@RAPTOR_OPTION_LITERAL_FILL:
+@RAPTOR_OPTION_BNODE_FILL:
+@RAPTOR_OPTION_HTML_TAG_SOUP:
+@RAPTOR_OPTION_MICROFORMATS:
+@RAPTOR_OPTION_HTML_LINK:
+@RAPTOR_OPTION_WWW_TIMEOUT:
+@RAPTOR_OPTION_WRITE_BASE_URI:
+@RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL:
+@RAPTOR_OPTION_WWW_HTTP_USER_AGENT:
+@RAPTOR_OPTION_JSON_CALLBACK:
+@RAPTOR_OPTION_JSON_EXTRA_DATA:
+@RAPTOR_OPTION_RSS_TRIPLES:
+@RAPTOR_OPTION_ATOM_ENTRY_URI:
+@RAPTOR_OPTION_PREFIX_ELEMENTS:
+@RAPTOR_OPTION_STRICT:
+@RAPTOR_OPTION_WWW_CERT_FILENAME:
+@RAPTOR_OPTION_WWW_CERT_TYPE:
+@RAPTOR_OPTION_WWW_CERT_PASSPHRASE:
+@RAPTOR_OPTION_NO_FILE:
+@RAPTOR_OPTION_WWW_SSL_VERIFY_PEER:
+@RAPTOR_OPTION_WWW_SSL_VERIFY_HOST:
+@RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES:
+@RAPTOR_OPTION_LAST:
+
+<!-- ##### STRUCT raptor_option_description ##### -->
+<para>
+
+</para>
+
+@domain:
+@option:
+@value_type:
+@name:
+@name_len:
+@label:
+@uri:
+
+<!-- ##### FUNCTION raptor_option_get_count ##### -->
+<para>
+
+</para>
+
+@void:
+@Returns:
+
+
+<!-- ##### ENUM raptor_option_value_type ##### -->
+<para>
+
+</para>
+
+@RAPTOR_OPTION_VALUE_TYPE_BOOL:
+@RAPTOR_OPTION_VALUE_TYPE_INT:
+@RAPTOR_OPTION_VALUE_TYPE_STRING:
+@RAPTOR_OPTION_VALUE_TYPE_URI:
+@RAPTOR_OPTION_VALUE_TYPE_LAST:
+
+<!-- ##### FUNCTION raptor_option_get_value_type_label ##### -->
+<para>
+
+</para>
+
+@type:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_world_get_option_description ##### -->
+<para>
+
+</para>
+
+@world:
+@domain:
+@option:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_option_description ##### -->
+<para>
+
+</para>
+
+@option_description:
+
+
+<!-- ##### FUNCTION raptor_world_get_option_from_uri ##### -->
+<para>
+
+</para>
+
+@world:
+@uri:
+@Returns:
+
+
diff --git a/docs/tmpl/section-parser.sgml b/docs/tmpl/section-parser.sgml
new file mode 100644
index 0000000..2e28747
--- /dev/null
+++ b/docs/tmpl/section-parser.sgml
@@ -0,0 +1,302 @@
+<!-- ##### SECTION Title ##### -->
+Parser
+
+<!-- ##### SECTION Short_Description ##### -->
+RDF parsers - from a syntax to RDF triples
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+The parsing class that allows creating a parser for reading from a
+particular syntax (or can guess and use contextual information) that
+will on demand generate RDF triples to a handler function, as chunks
+of syntax data are passed into the parser. Parsing can be done from
+strings in memory, files or from URIs on the web.
+</para>
+
+<para>
+There are also methods to deal with handling errors, warnings and
+returned triples as well as setting options (features) that can
+adjust how parsing is performed.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_parser ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_new_parser ##### -->
+<para>
+
+</para>
+
+@world:
+@name:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_parser_for_content ##### -->
+<para>
+
+</para>
+
+@world:
+@uri:
+@mime_type:
+@buffer:
+@len:
+@identifier:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_parser ##### -->
+<para>
+
+</para>
+
+@parser:
+
+
+<!-- ##### USER_FUNCTION raptor_graph_mark_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@graph:
+@flags:
+
+
+<!-- ##### USER_FUNCTION raptor_namespace_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@nspace:
+
+
+<!-- ##### FUNCTION raptor_parser_set_statement_handler ##### -->
+<para>
+
+</para>
+
+@parser:
+@user_data:
+@handler:
+
+
+<!-- ##### ENUM raptor_graph_mark_flags ##### -->
+<para>
+
+</para>
+
+@RAPTOR_GRAPH_MARK_START:
+@RAPTOR_GRAPH_MARK_DECLARED:
+
+<!-- ##### FUNCTION raptor_parser_set_graph_mark_handler ##### -->
+<para>
+
+</para>
+
+@parser:
+@user_data:
+@handler:
+
+
+<!-- ##### FUNCTION raptor_parser_set_namespace_handler ##### -->
+<para>
+
+</para>
+
+@parser:
+@user_data:
+@handler:
+
+
+<!-- ##### FUNCTION raptor_parser_get_description ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_get_locator ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_parse_abort ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+
+
+<!-- ##### FUNCTION raptor_parser_parse_chunk ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@buffer:
+@len:
+@is_end:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_parse_file ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@uri:
+@base_uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_parse_file_stream ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@stream:
+@filename:
+@base_uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_parse_iostream ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@iostr:
+@base_uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_parse_start ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_parse_uri ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@uri:
+@base_uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_parse_uri_with_connection ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@uri:
+@base_uri:
+@connection:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_get_graph ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_get_name ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_set_option ##### -->
+<para>
+
+</para>
+
+@parser:
+@option:
+@string:
+@integer:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_get_option ##### -->
+<para>
+
+</para>
+
+@parser:
+@option:
+@string_p:
+@integer_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_get_accept_header ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_parser_set_uri_filter ##### -->
+<para>
+
+</para>
+
+@parser:
+@filter:
+@user_data:
+
+
+<!-- ##### FUNCTION raptor_parser_get_world ##### -->
+<para>
+
+</para>
+
+@rdf_parser:
+@Returns:
+
+
diff --git a/docs/tmpl/section-sax2.sgml b/docs/tmpl/section-sax2.sgml
new file mode 100644
index 0000000..fd8dfcd
--- /dev/null
+++ b/docs/tmpl/section-sax2.sgml
@@ -0,0 +1,245 @@
+<!-- ##### SECTION Title ##### -->
+SAX2
+
+<!-- ##### SECTION Short_Description ##### -->
+SAX2 XML Parsing API with namespaces and base URI support.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+A class providing a SAX2 XML parsing API with XML namespaces
+and XML base support.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_sax2 ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_new_sax2 ##### -->
+<para>
+
+</para>
+
+@world:
+@locator:
+@user_data:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_sax2 ##### -->
+<para>
+
+</para>
+
+@sax2:
+
+
+<!-- ##### USER_FUNCTION raptor_sax2_start_element_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@xml_element:
+
+
+<!-- ##### USER_FUNCTION raptor_sax2_end_element_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@xml_element:
+
+
+<!-- ##### USER_FUNCTION raptor_sax2_characters_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@xml_element:
+@s:
+@len:
+
+
+<!-- ##### USER_FUNCTION raptor_sax2_cdata_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@xml_element:
+@s:
+@len:
+
+
+<!-- ##### USER_FUNCTION raptor_sax2_comment_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@xml_element:
+@s:
+
+
+<!-- ##### USER_FUNCTION raptor_sax2_unparsed_entity_decl_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@entityName:
+@base:
+@systemId:
+@publicId:
+@notationName:
+
+
+<!-- ##### USER_FUNCTION raptor_sax2_external_entity_ref_handler ##### -->
+<para>
+
+</para>
+
+@user_data:
+@context:
+@base:
+@systemId:
+@publicId:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sax2_set_start_element_handler ##### -->
+<para>
+
+</para>
+
+@sax2:
+@handler:
+
+
+<!-- ##### FUNCTION raptor_sax2_set_end_element_handler ##### -->
+<para>
+
+</para>
+
+@sax2:
+@handler:
+
+
+<!-- ##### FUNCTION raptor_sax2_set_characters_handler ##### -->
+<para>
+
+</para>
+
+@sax2:
+@handler:
+
+
+<!-- ##### FUNCTION raptor_sax2_set_cdata_handler ##### -->
+<para>
+
+</para>
+
+@sax2:
+@handler:
+
+
+<!-- ##### FUNCTION raptor_sax2_set_comment_handler ##### -->
+<para>
+
+</para>
+
+@sax2:
+@handler:
+
+
+<!-- ##### FUNCTION raptor_sax2_set_unparsed_entity_decl_handler ##### -->
+<para>
+
+</para>
+
+@sax2:
+@handler:
+
+
+<!-- ##### FUNCTION raptor_sax2_set_external_entity_ref_handler ##### -->
+<para>
+
+</para>
+
+@sax2:
+@handler:
+
+
+<!-- ##### FUNCTION raptor_sax2_set_namespace_handler ##### -->
+<para>
+
+</para>
+
+@sax2:
+@handler:
+
+
+<!-- ##### FUNCTION raptor_sax2_set_uri_filter ##### -->
+<para>
+
+</para>
+
+@sax2:
+@filter:
+@user_data:
+
+
+<!-- ##### FUNCTION raptor_sax2_parse_start ##### -->
+<para>
+
+</para>
+
+@sax2:
+@base_uri:
+
+
+<!-- ##### FUNCTION raptor_sax2_parse_chunk ##### -->
+<para>
+
+</para>
+
+@sax2:
+@buffer:
+@len:
+@is_end:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sax2_inscope_xml_language ##### -->
+<para>
+
+</para>
+
+@sax2:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sax2_inscope_base_uri ##### -->
+<para>
+
+</para>
+
+@sax2:
+@Returns:
+
+
diff --git a/docs/tmpl/section-sequence.sgml b/docs/tmpl/section-sequence.sgml
new file mode 100644
index 0000000..368f331
--- /dev/null
+++ b/docs/tmpl/section-sequence.sgml
@@ -0,0 +1,199 @@
+<!-- ##### SECTION Title ##### -->
+Sequence
+
+<!-- ##### SECTION Short_Description ##### -->
+Ordered sequence of items.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+A utility class that provides access to small sequence of items
+that grow at the end and require quick ordered and indexed access.
+Can be used as a queue/FIFO but less efficiently than a stack
+where the items are added and removed from the end.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_sequence ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_new_sequence ##### -->
+<para>
+
+</para>
+
+@free_handler:
+@print_handler:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_sequence_with_context ##### -->
+<para>
+
+</para>
+
+@free_handler:
+@print_handler:
+@handler_context:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_sequence ##### -->
+<para>
+
+</para>
+
+@seq:
+
+
+<!-- ##### FUNCTION raptor_sequence_delete_at ##### -->
+<para>
+
+</para>
+
+@seq:
+@idx:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sequence_get_at ##### -->
+<para>
+
+</para>
+
+@seq:
+@idx:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sequence_join ##### -->
+<para>
+
+</para>
+
+@dest:
+@src:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sequence_next_permutation ##### -->
+<para>
+
+</para>
+
+@seq:
+@compare:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sequence_pop ##### -->
+<para>
+
+</para>
+
+@seq:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sequence_print ##### -->
+<para>
+
+</para>
+
+@seq:
+@fh:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sequence_push ##### -->
+<para>
+
+</para>
+
+@seq:
+@data:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sequence_reverse ##### -->
+<para>
+
+</para>
+
+@seq:
+@start_index:
+@length:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sequence_set_at ##### -->
+<para>
+
+</para>
+
+@seq:
+@idx:
+@data:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sequence_shift ##### -->
+<para>
+
+</para>
+
+@seq:
+@data:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sequence_size ##### -->
+<para>
+
+</para>
+
+@seq:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sequence_sort ##### -->
+<para>
+
+</para>
+
+@seq:
+@compare:
+
+
+<!-- ##### FUNCTION raptor_sequence_swap ##### -->
+<para>
+
+</para>
+
+@seq:
+@i:
+@j:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_sequence_unshift ##### -->
+<para>
+
+</para>
+
+@seq:
+@Returns:
+
+
diff --git a/docs/tmpl/section-serializer.sgml b/docs/tmpl/section-serializer.sgml
new file mode 100644
index 0000000..feba6fb
--- /dev/null
+++ b/docs/tmpl/section-serializer.sgml
@@ -0,0 +1,207 @@
+<!-- ##### SECTION Title ##### -->
+Serializer
+
+<!-- ##### SECTION Short_Description ##### -->
+RDF serializers - from RDF triples to a syntax
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+The serializing class that allows creating a serializer for
+writing a particular syntax to an output string, file, file
+handle or user function (via #raptor_iostream).
+</para>
+
+<para>
+There are also methods to deal with handling errors, warnings and
+returned triples as well as setting options (features)
+that can adjust how serializing is performed.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_serializer ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_new_serializer ##### -->
+<para>
+
+</para>
+
+@world:
+@name:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_serializer ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+
+
+<!-- ##### FUNCTION raptor_serializer_start_to_iostream ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@uri:
+@iostream:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_start_to_filename ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@filename:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_start_to_string ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@uri:
+@string_p:
+@length_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_start_to_file_handle ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@uri:
+@fh:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_set_namespace ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@uri:
+@prefix:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_set_namespace_from_namespace ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@nspace:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_serialize_statement ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@statement:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_serialize_end ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_flush ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_get_description ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_get_iostream ##### -->
+<para>
+
+</para>
+
+@serializer:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_get_locator ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_set_option ##### -->
+<para>
+
+</para>
+
+@serializer:
+@option:
+@string:
+@integer:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_get_option ##### -->
+<para>
+
+</para>
+
+@serializer:
+@option:
+@string_p:
+@integer_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_serializer_get_world ##### -->
+<para>
+
+</para>
+
+@rdf_serializer:
+@Returns:
+
+
diff --git a/docs/tmpl/section-stringbuffer.sgml b/docs/tmpl/section-stringbuffer.sgml
new file mode 100644
index 0000000..6e18832
--- /dev/null
+++ b/docs/tmpl/section-stringbuffer.sgml
@@ -0,0 +1,175 @@
+<!-- ##### SECTION Title ##### -->
+String buffer
+
+<!-- ##### SECTION Short_Description ##### -->
+Append-only strings.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+A utility class that allows easy construction of strings that
+grow at the end by appending new strings. Primarily used for
+constructing/serializing syntaxes into strings by the #raptor_iostream
+and #raptor_serializer classes.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_stringbuffer ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_new_stringbuffer ##### -->
+<para>
+
+</para>
+
+@void:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_stringbuffer ##### -->
+<para>
+
+</para>
+
+@stringbuffer:
+
+
+<!-- ##### FUNCTION raptor_stringbuffer_append_counted_string ##### -->
+<para>
+
+</para>
+
+@stringbuffer:
+@string:
+@length:
+@do_copy:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_stringbuffer_append_decimal ##### -->
+<para>
+
+</para>
+
+@stringbuffer:
+@integer:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_stringbuffer_append_hexadecimal ##### -->
+<para>
+
+</para>
+
+@stringbuffer:
+@hex:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_stringbuffer_append_string ##### -->
+<para>
+
+</para>
+
+@stringbuffer:
+@string:
+@do_copy:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_stringbuffer_append_stringbuffer ##### -->
+<para>
+
+</para>
+
+@stringbuffer:
+@append:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_stringbuffer_append_uri_escaped_counted_string ##### -->
+<para>
+
+</para>
+
+@sb:
+@string:
+@length:
+@space_is_plus:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_stringbuffer_prepend_counted_string ##### -->
+<para>
+
+</para>
+
+@stringbuffer:
+@string:
+@length:
+@do_copy:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_stringbuffer_prepend_string ##### -->
+<para>
+
+</para>
+
+@stringbuffer:
+@string:
+@do_copy:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_stringbuffer_as_string ##### -->
+<para>
+
+</para>
+
+@stringbuffer:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_stringbuffer_length ##### -->
+<para>
+
+</para>
+
+@stringbuffer:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_stringbuffer_copy_to_string ##### -->
+<para>
+
+</para>
+
+@stringbuffer:
+@string:
+@length:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_stringbuffer_write ##### -->
+<para>
+
+</para>
+
+@sb:
+@iostr:
+@Returns:
+
+
diff --git a/docs/tmpl/section-triples.sgml b/docs/tmpl/section-triples.sgml
new file mode 100644
index 0000000..0e66cce
--- /dev/null
+++ b/docs/tmpl/section-triples.sgml
@@ -0,0 +1,369 @@
+<!-- ##### SECTION Title ##### -->
+Triples
+
+<!-- ##### SECTION Short_Description ##### -->
+RDF Triples
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Representation of RDF statements inside Raptor. They are
+a 3 or 4-tuple of #raptor_term which cover the RDF terms of
+URI (%RAPTOR_TERM_TYPE_URI),
+Literal (%RAPTOR_TERM_TYPE_LITERAL) and
+Blank Node (%RAPTOR_TERM_TYPE_BLANK).
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### ENUM raptor_term_type ##### -->
+<para>
+
+</para>
+
+@RAPTOR_TERM_TYPE_UNKNOWN:
+@RAPTOR_TERM_TYPE_URI:
+@RAPTOR_TERM_TYPE_LITERAL:
+@RAPTOR_TERM_TYPE_BLANK:
+
+<!-- ##### STRUCT raptor_term ##### -->
+<para>
+
+</para>
+
+@world:
+@usage:
+@type:
+@value:
+
+<!-- ##### UNION raptor_term_value ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT raptor_term_blank_value ##### -->
+<para>
+
+</para>
+
+@string:
+@string_len:
+
+<!-- ##### STRUCT raptor_term_literal_value ##### -->
+<para>
+
+</para>
+
+@string:
+@string_len:
+@datatype:
+@language:
+@language_len:
+
+<!-- ##### FUNCTION raptor_new_term_from_blank ##### -->
+<para>
+
+</para>
+
+@world:
+@blank:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_term_from_counted_blank ##### -->
+<para>
+
+</para>
+
+@world:
+@blank:
+@length:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_term_from_literal ##### -->
+<para>
+
+</para>
+
+@world:
+@literal:
+@datatype:
+@language:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_term_from_counted_literal ##### -->
+<para>
+
+</para>
+
+@world:
+@literal:
+@literal_len:
+@datatype:
+@language:
+@language_len:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_term_from_counted_uri_string ##### -->
+<para>
+
+</para>
+
+@world:
+@uri_string:
+@length:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_term_from_uri ##### -->
+<para>
+
+</para>
+
+@world:
+@uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_term_from_uri_string ##### -->
+<para>
+
+</para>
+
+@world:
+@uri_string:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_term_copy ##### -->
+<para>
+
+</para>
+
+@term:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_term_compare ##### -->
+<para>
+
+</para>
+
+@t1:
+@t2:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_term_equals ##### -->
+<para>
+
+</para>
+
+@t1:
+@t2:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_term ##### -->
+<para>
+
+</para>
+
+@term:
+
+
+<!-- ##### FUNCTION raptor_term_to_counted_string ##### -->
+<para>
+
+</para>
+
+@term:
+@len_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_term_to_string ##### -->
+<para>
+
+</para>
+
+@term:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_term_ntriples_write ##### -->
+<para>
+
+</para>
+
+@term:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_term_to_turtle_counted_string ##### -->
+<para>
+
+</para>
+
+@term:
+@nstack:
+@base_uri:
+@len_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_term_to_turtle_string ##### -->
+<para>
+
+</para>
+
+@term:
+@nstack:
+@base_uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_term_turtle_write ##### -->
+<para>
+
+</para>
+
+@iostr:
+@term:
+@nstack:
+@base_uri:
+@Returns:
+
+
+<!-- ##### STRUCT raptor_statement ##### -->
+<para>
+
+</para>
+
+@world:
+@usage:
+@subject:
+@predicate:
+@object:
+@graph:
+
+<!-- ##### FUNCTION raptor_new_statement ##### -->
+<para>
+
+</para>
+
+@world:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_statement_from_nodes ##### -->
+<para>
+
+</para>
+
+@world:
+@subject:
+@predicate:
+@object:
+@graph:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_statement ##### -->
+<para>
+
+</para>
+
+@statement:
+
+
+<!-- ##### FUNCTION raptor_statement_copy ##### -->
+<para>
+
+</para>
+
+@statement:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_statement_compare ##### -->
+<para>
+
+</para>
+
+@s1:
+@s2:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_statement_equals ##### -->
+<para>
+
+</para>
+
+@s1:
+@s2:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_statement_init ##### -->
+<para>
+
+</para>
+
+@statement:
+@world:
+
+
+<!-- ##### FUNCTION raptor_statement_clear ##### -->
+<para>
+
+</para>
+
+@statement:
+
+
+<!-- ##### FUNCTION raptor_statement_print ##### -->
+<para>
+
+</para>
+
+@statement:
+@stream:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_statement_print_as_ntriples ##### -->
+<para>
+
+</para>
+
+@statement:
+@stream:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_statement_ntriples_write ##### -->
+<para>
+
+</para>
+
+@statement:
+@iostr:
+@write_graph_term:
+@Returns:
+
+
diff --git a/docs/tmpl/section-unicode.sgml b/docs/tmpl/section-unicode.sgml
new file mode 100644
index 0000000..85a4290
--- /dev/null
+++ b/docs/tmpl/section-unicode.sgml
@@ -0,0 +1,123 @@
+<!-- ##### SECTION Title ##### -->
+Unicode
+
+<!-- ##### SECTION Short_Description ##### -->
+Unicode and UTF-8 utility functions.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Functions to support converting to and from Unicode written in UTF-8
+which is the native internal string format of all the redland libraries.
+Includes checking for Unicode names using either the XML 1.0 or XML 1.1
+rules.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_unichar ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_unicode_utf8_string_put_char ##### -->
+<para>
+
+</para>
+
+@c:
+@output:
+@length:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_unicode_utf8_string_get_char ##### -->
+<para>
+
+</para>
+
+@input:
+@length:
+@output:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_unicode_is_xml11_namestartchar ##### -->
+<para>
+
+</para>
+
+@c:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_unicode_is_xml10_namestartchar ##### -->
+<para>
+
+</para>
+
+@c:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_unicode_is_xml11_namechar ##### -->
+<para>
+
+</para>
+
+@c:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_unicode_is_xml10_namechar ##### -->
+<para>
+
+</para>
+
+@c:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_unicode_check_utf8_string ##### -->
+<para>
+
+</para>
+
+@string:
+@length:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_unicode_utf8_strlen ##### -->
+<para>
+
+</para>
+
+@string:
+@length:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_unicode_utf8_substr ##### -->
+<para>
+
+</para>
+
+@dest:
+@dest_length_p:
+@src:
+@src_length:
+@startingLoc:
+@length:
+@Returns:
+
+
diff --git a/docs/tmpl/section-unused.sgml b/docs/tmpl/section-unused.sgml
new file mode 100644
index 0000000..30b50a5
--- /dev/null
+++ b/docs/tmpl/section-unused.sgml
@@ -0,0 +1,63 @@
+<!-- ##### SECTION Title ##### -->
+Unused
+
+<!-- ##### SECTION Short_Description ##### -->
+Unused
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Unused
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### MACRO RAPTOR_API ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO RAPTOR_DEPRECATED ##### -->
+<para>
+When defined before a function, indicates that the function
+has been deprecated and may be replaced in a future release.
+With some versions of gcc this may give a compilation warning.
+</para>
+
+
+
+<!-- ##### MACRO RAPTOR_PRINTF_FORMAT ##### -->
+<para>
+
+</para>
+
+@string_index:
+@first_to_check_index:
+
+
+<!-- ##### MACRO RAPTOR_V2_AVAILABLE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### FUNCTION raptor_new_world_internal ##### -->
+<para>
+
+</para>
+
+@version_decimal:
+@Returns:
+
+
diff --git a/docs/tmpl/section-uri.sgml b/docs/tmpl/section-uri.sgml
new file mode 100644
index 0000000..26494a9
--- /dev/null
+++ b/docs/tmpl/section-uri.sgml
@@ -0,0 +1,378 @@
+<!-- ##### SECTION Title ##### -->
+URI
+
+<!-- ##### SECTION Short_Description ##### -->
+URI class and relative URI computation
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+A class for absolute URIs used inside raptor and relative URI
+computation utility functions used inside the main Redland
+#librdf_uri class. Only absolute URIs are provided, with no
+current access to internals of URIs such as URI scheme, path, authority.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_uri ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_new_uri ##### -->
+<para>
+
+</para>
+
+@world:
+@uri_string:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_uri_from_counted_string ##### -->
+<para>
+
+</para>
+
+@world:
+@uri_string:
+@length:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_uri_from_uri_local_name ##### -->
+<para>
+
+</para>
+
+@world:
+@uri:
+@local_name:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_uri_from_uri_or_file_string ##### -->
+<para>
+
+</para>
+
+@world:
+@base_uri:
+@uri_or_file_string:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_uri_relative_to_base ##### -->
+<para>
+
+</para>
+
+@world:
+@base_uri:
+@uri_string:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_uri_relative_to_base_counted ##### -->
+<para>
+
+</para>
+
+@world:
+@base_uri:
+@uri_string:
+@uri_len:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_uri_from_id ##### -->
+<para>
+
+</para>
+
+@world:
+@base_uri:
+@id:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_uri_for_rdf_concept ##### -->
+<para>
+
+</para>
+
+@world:
+@name:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_uri_for_xmlbase ##### -->
+<para>
+
+</para>
+
+@old_uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_uri_for_retrieval ##### -->
+<para>
+
+</para>
+
+@old_uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_uri ##### -->
+<para>
+
+</para>
+
+@uri:
+
+
+<!-- ##### FUNCTION raptor_uri_compare ##### -->
+<para>
+
+</para>
+
+@uri1:
+@uri2:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_equals ##### -->
+<para>
+
+</para>
+
+@uri1:
+@uri2:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_copy ##### -->
+<para>
+
+</para>
+
+@uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_as_string ##### -->
+<para>
+
+</para>
+
+@uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_as_counted_string ##### -->
+<para>
+
+</para>
+
+@uri:
+@len_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_to_relative_counted_uri_string ##### -->
+<para>
+
+</para>
+
+@base_uri:
+@reference_uri:
+@length_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_to_relative_uri_string ##### -->
+<para>
+
+</para>
+
+@base_uri:
+@reference_uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_to_counted_string ##### -->
+<para>
+
+</para>
+
+@uri:
+@len_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_to_string ##### -->
+<para>
+
+</para>
+
+@uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_resolve_uri_reference ##### -->
+<para>
+
+</para>
+
+@base_uri:
+@reference_uri:
+@buffer:
+@length:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_filename_to_uri_string ##### -->
+<para>
+
+</para>
+
+@filename:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_uri_string_to_filename ##### -->
+<para>
+
+</para>
+
+@uri_string:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_uri_string_to_filename_fragment ##### -->
+<para>
+
+</para>
+
+@uri_string:
+@fragment_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_uri_string_to_counted_filename_fragment ##### -->
+<para>
+
+</para>
+
+@uri_string:
+@len_p:
+@fragment_p:
+@fragment_len_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_uri_string_is_file_uri ##### -->
+<para>
+
+</para>
+
+@uri_string:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_print ##### -->
+<para>
+
+</para>
+
+@uri:
+@stream:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_get_world ##### -->
+<para>
+
+</para>
+
+@uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_write ##### -->
+<para>
+
+</para>
+
+@uri:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_file_exists ##### -->
+<para>
+
+</para>
+
+@uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_filename_exists ##### -->
+<para>
+
+</para>
+
+@path:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_to_turtle_counted_string ##### -->
+<para>
+
+</para>
+
+@world:
+@uri:
+@nstack:
+@base_uri:
+@len_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_to_turtle_string ##### -->
+<para>
+
+</para>
+
+@world:
+@uri:
+@nstack:
+@base_uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_uri_turtle_write ##### -->
+<para>
+
+</para>
+
+@world:
+@iostr:
+@uri:
+@nstack:
+@base_uri:
+@Returns:
+
+
diff --git a/docs/tmpl/section-world.sgml b/docs/tmpl/section-world.sgml
new file mode 100644
index 0000000..e957f29
--- /dev/null
+++ b/docs/tmpl/section-world.sgml
@@ -0,0 +1,179 @@
+<!-- ##### SECTION Title ##### -->
+Initialisation
+
+<!-- ##### SECTION Short_Description ##### -->
+Library startup, shutdown and configuration.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+How to initialise and terminate the library, set
+library-wide configuration flags and options.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_world ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO raptor_new_world ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_world_open ##### -->
+<para>
+
+</para>
+
+@world:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_world ##### -->
+<para>
+
+</para>
+
+@world:
+
+
+<!-- ##### ENUM raptor_world_flag ##### -->
+<para>
+
+</para>
+
+@RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE:
+@RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE:
+@RAPTOR_WORLD_FLAG_URI_INTERNING:
+@RAPTOR_WORLD_FLAG_WWW_SKIP_INIT_FINISH:
+
+<!-- ##### FUNCTION raptor_world_set_flag ##### -->
+<para>
+
+</para>
+
+@world:
+@flag:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_world_set_libxslt_security_preferences ##### -->
+<para>
+
+</para>
+
+@world:
+@security_preferences:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_world_set_log_handler ##### -->
+<para>
+
+</para>
+
+@world:
+@user_data:
+@handler:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_world_get_parser_description ##### -->
+<para>
+
+</para>
+
+@world:
+@counter:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_world_is_parser_name ##### -->
+<para>
+
+</para>
+
+@world:
+@name:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_world_guess_parser_name ##### -->
+<para>
+
+</para>
+
+@world:
+@uri:
+@mime_type:
+@buffer:
+@len:
+@identifier:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_world_get_serializer_description ##### -->
+<para>
+
+</para>
+
+@world:
+@counter:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_world_is_serializer_name ##### -->
+<para>
+
+</para>
+
+@world:
+@name:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_world_generate_bnodeid ##### -->
+<para>
+
+</para>
+
+@world:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_world_set_generate_bnodeid_handler ##### -->
+<para>
+
+</para>
+
+@world:
+@user_data:
+@handler:
+
+
+<!-- ##### FUNCTION raptor_world_set_generate_bnodeid_parameters ##### -->
+<para>
+
+</para>
+
+@world:
+@prefix:
+@base:
+
+
diff --git a/docs/tmpl/section-www.sgml b/docs/tmpl/section-www.sgml
new file mode 100644
index 0000000..08b89c8
--- /dev/null
+++ b/docs/tmpl/section-www.sgml
@@ -0,0 +1,260 @@
+<!-- ##### SECTION Title ##### -->
+WWW
+
+<!-- ##### SECTION Short_Description ##### -->
+Retrieval of URI content from the web.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Provides a wrapper to the resolution of URIs to give content
+using an underlying WWW-retrieval library. The content is
+delivered by callbacks and includes returning content type
+for handling content-negotation by the caller as well as
+chunks of byte content.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_www ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_new_www ##### -->
+<para>
+
+</para>
+
+@world:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_www_with_connection ##### -->
+<para>
+
+</para>
+
+@world:
+@connection:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_www ##### -->
+<para>
+
+</para>
+
+@www:
+
+
+<!-- ##### USER_FUNCTION raptor_www_write_bytes_handler ##### -->
+<para>
+
+</para>
+
+@www:
+@userdata:
+@ptr:
+@size:
+@nmemb:
+
+
+<!-- ##### USER_FUNCTION raptor_www_content_type_handler ##### -->
+<para>
+
+</para>
+
+@www:
+@userdata:
+@content_type:
+
+
+<!-- ##### FUNCTION raptor_www_set_user_agent ##### -->
+<para>
+
+</para>
+
+@www:
+@user_agent:
+
+
+<!-- ##### FUNCTION raptor_www_set_proxy ##### -->
+<para>
+
+</para>
+
+@www:
+@proxy:
+
+
+<!-- ##### FUNCTION raptor_www_set_http_accept ##### -->
+<para>
+
+</para>
+
+@www:
+@value:
+
+
+<!-- ##### FUNCTION raptor_www_set_http_cache_control ##### -->
+<para>
+
+</para>
+
+@www:
+@cache_control:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_www_set_write_bytes_handler ##### -->
+<para>
+
+</para>
+
+@www:
+@handler:
+@user_data:
+
+
+<!-- ##### FUNCTION raptor_www_set_connection_timeout ##### -->
+<para>
+
+</para>
+
+@www:
+@timeout:
+
+
+<!-- ##### FUNCTION raptor_www_set_content_type_handler ##### -->
+<para>
+
+</para>
+
+@www:
+@handler:
+@user_data:
+
+
+<!-- ##### USER_FUNCTION raptor_uri_filter_func ##### -->
+<para>
+
+</para>
+
+@user_data:
+@uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_www_set_uri_filter ##### -->
+<para>
+
+</para>
+
+@www:
+@filter:
+@user_data:
+
+
+<!-- ##### USER_FUNCTION raptor_www_final_uri_handler ##### -->
+<para>
+
+</para>
+
+@www:
+@userdata:
+@final_uri:
+
+
+<!-- ##### FUNCTION raptor_www_get_final_uri ##### -->
+<para>
+
+</para>
+
+@www:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_www_set_final_uri_handler ##### -->
+<para>
+
+</para>
+
+@www:
+@handler:
+@user_data:
+
+
+<!-- ##### FUNCTION raptor_www_fetch ##### -->
+<para>
+
+</para>
+
+@www:
+@uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_www_fetch_to_string ##### -->
+<para>
+
+</para>
+
+@www:
+@uri:
+@string_p:
+@length_p:
+@malloc_handler:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_www_get_connection ##### -->
+<para>
+
+</para>
+
+@www:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_www_set_ssl_cert_options ##### -->
+<para>
+
+</para>
+
+@www:
+@cert_filename:
+@cert_type:
+@cert_passphrase:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_www_set_ssl_verify_options ##### -->
+<para>
+
+</para>
+
+@www:
+@verify_peer:
+@verify_host:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_www_abort ##### -->
+<para>
+
+</para>
+
+@www:
+@reason:
+
+
diff --git a/docs/tmpl/section-xml-namespace.sgml b/docs/tmpl/section-xml-namespace.sgml
new file mode 100644
index 0000000..c693b3d
--- /dev/null
+++ b/docs/tmpl/section-xml-namespace.sgml
@@ -0,0 +1,247 @@
+<!-- ##### SECTION Title ##### -->
+XML Namespaces
+
+<!-- ##### SECTION Short_Description ##### -->
+Namespaces in XML include stacks of Namespaces
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Two classes that provide an XML namespace - short prefix (or none) and
+absolute URI (or none) to match the form <literal>xmlns...="..."</literal>
+seen in XML. A stack of namespaces #raptor_namespace_stack is also
+provided to handle in-scope namespace calculations that happen inside
+XML documents where inner namespaces can override outer ones.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_namespace ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_new_namespace_from_uri ##### -->
+<para>
+
+</para>
+
+@nstack:
+@prefix:
+@ns_uri:
+@depth:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_namespaces ##### -->
+<para>
+
+</para>
+
+@world:
+@defaults:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_namespaces_init ##### -->
+<para>
+
+</para>
+
+@world:
+@nstack:
+@defaults:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_namespaces_clear ##### -->
+<para>
+
+</para>
+
+@nstack:
+
+
+<!-- ##### FUNCTION raptor_free_namespaces ##### -->
+<para>
+
+</para>
+
+@nstack:
+
+
+<!-- ##### FUNCTION raptor_namespaces_start_namespace ##### -->
+<para>
+
+</para>
+
+@nstack:
+@nspace:
+
+
+<!-- ##### FUNCTION raptor_namespaces_start_namespace_full ##### -->
+<para>
+
+</para>
+
+@nstack:
+@prefix:
+@ns_uri_string:
+@depth:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_namespaces_end_for_depth ##### -->
+<para>
+
+</para>
+
+@nstack:
+@depth:
+
+
+<!-- ##### FUNCTION raptor_namespaces_get_default_namespace ##### -->
+<para>
+
+</para>
+
+@nstack:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_namespaces_find_namespace ##### -->
+<para>
+
+</para>
+
+@nstack:
+@prefix:
+@prefix_length:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_namespaces_find_namespace_by_uri ##### -->
+<para>
+
+</para>
+
+@nstack:
+@ns_uri:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_namespaces_namespace_in_scope ##### -->
+<para>
+
+</para>
+
+@nstack:
+@nspace:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_namespace ##### -->
+<para>
+
+</para>
+
+@nstack:
+@prefix:
+@ns_uri_string:
+@depth:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_namespace ##### -->
+<para>
+
+</para>
+
+@ns:
+
+
+<!-- ##### FUNCTION raptor_namespace_get_uri ##### -->
+<para>
+
+</para>
+
+@ns:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_namespace_get_prefix ##### -->
+<para>
+
+</para>
+
+@ns:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_namespace_get_counted_prefix ##### -->
+<para>
+
+</para>
+
+@ns:
+@length_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_namespace_write ##### -->
+<para>
+
+</para>
+
+@ns:
+@iostr:
+@Returns:
+
+
+<!-- ##### TYPEDEF raptor_namespace_stack ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_namespace_stack_start_namespace ##### -->
+<para>
+
+</para>
+
+@nstack:
+@ns:
+@new_depth:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_namespace_format_as_xml ##### -->
+<para>
+
+</para>
+
+@ns:
+@length_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_namespace_string_parse ##### -->
+<para>
+
+</para>
+
+@string:
+@prefix:
+@uri_string:
+@Returns:
+
+
diff --git a/docs/tmpl/section-xml-qname.sgml b/docs/tmpl/section-xml-qname.sgml
new file mode 100644
index 0000000..79fcc35
--- /dev/null
+++ b/docs/tmpl/section-xml-qname.sgml
@@ -0,0 +1,159 @@
+<!-- ##### SECTION Title ##### -->
+XML QName
+
+<!-- ##### SECTION Short_Description ##### -->
+XML Namespace-qualified names.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Wraps an XML name inside an associated XML namespace in some XML document
+context (typically). Mostly used inside parsing XML to manage qnames
+for XML element and attribute names.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_qname ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_new_qname ##### -->
+<para>
+
+</para>
+
+@nstack:
+@name:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_qname_from_namespace_local_name ##### -->
+<para>
+
+</para>
+
+@world:
+@ns:
+@local_name:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_qname_from_namespace_uri ##### -->
+<para>
+
+</para>
+
+@nstack:
+@uri:
+@xml_version:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_qname_copy ##### -->
+<para>
+
+</para>
+
+@qname:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_qname ##### -->
+<para>
+
+</para>
+
+@name:
+
+
+<!-- ##### FUNCTION raptor_qname_equal ##### -->
+<para>
+
+</para>
+
+@name1:
+@name2:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_qname_string_to_uri ##### -->
+<para>
+
+</para>
+
+@nstack:
+@name:
+@name_len:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_qname_write ##### -->
+<para>
+
+</para>
+
+@qname:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_qname_get_counted_value ##### -->
+<para>
+
+</para>
+
+@name:
+@length_p:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_qname_get_local_name ##### -->
+<para>
+
+</para>
+
+@name:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_qname_get_namespace ##### -->
+<para>
+
+</para>
+
+@name:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_qname_get_value ##### -->
+<para>
+
+</para>
+
+@name:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_qname_to_counted_name ##### -->
+<para>
+
+</para>
+
+@qname:
+@length_p:
+@Returns:
+
+
diff --git a/docs/tmpl/section-xml.sgml b/docs/tmpl/section-xml.sgml
new file mode 100644
index 0000000..9bca36c
--- /dev/null
+++ b/docs/tmpl/section-xml.sgml
@@ -0,0 +1,369 @@
+<!-- ##### SECTION Title ##### -->
+XML
+
+<!-- ##### SECTION Short_Description ##### -->
+XML and XML Writer
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+XML elements with optional attributes and an XML Writer class that
+can format #raptor_xml_element into output forms, with optional
+"pretty printing" features such as indenting and collapsing empty
+elements.
+</para>
+
+<para>
+Also includes a utility function #raptor_xml_name_check for checking
+a name is legal in some XML version.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### TYPEDEF raptor_xml_element ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_new_xml_element ##### -->
+<para>
+
+</para>
+
+@name:
+@xml_language:
+@xml_base:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_xml_element_from_namespace_local_name ##### -->
+<para>
+
+</para>
+
+@ns:
+@name:
+@xml_language:
+@xml_base:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_xml_element ##### -->
+<para>
+
+</para>
+
+@element:
+
+
+<!-- ##### FUNCTION raptor_xml_element_get_name ##### -->
+<para>
+
+</para>
+
+@xml_element:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_element_get_attributes ##### -->
+<para>
+
+</para>
+
+@xml_element:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_element_get_attributes_count ##### -->
+<para>
+
+</para>
+
+@xml_element:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_element_set_attributes ##### -->
+<para>
+
+</para>
+
+@xml_element:
+@attributes:
+@count:
+
+
+<!-- ##### FUNCTION raptor_xml_element_declare_namespace ##### -->
+<para>
+
+</para>
+
+@xml_element:
+@nspace:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_element_is_empty ##### -->
+<para>
+
+</para>
+
+@xml_element:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_element_get_language ##### -->
+<para>
+
+</para>
+
+@xml_element:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_element_write ##### -->
+<para>
+
+</para>
+
+@element:
+@nstack:
+@is_empty:
+@is_end:
+@depth:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_new_xml_writer ##### -->
+<para>
+
+</para>
+
+@world:
+@nstack:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_free_xml_writer ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_empty_element ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@element:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_start_element ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@element:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_end_element ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@element:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_cdata ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@s:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_cdata_counted ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@s:
+@len:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_raw ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@s:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_raw_counted ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@s:
+@len:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_comment ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@s:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_comment_counted ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@s:
+@len:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_flush ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_newline ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_get_depth ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_set_option ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@option:
+@string:
+@integer:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_writer_get_option ##### -->
+<para>
+
+</para>
+
+@xml_writer:
+@option:
+@string_p:
+@integer_p:
+@Returns:
+
+
+<!-- ##### TYPEDEF raptor_xml_writer ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION raptor_xml_escape_string_any ##### -->
+<para>
+
+</para>
+
+@world:
+@string:
+@len:
+@buffer:
+@length:
+@quote:
+@xml_version:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_escape_string_any_write ##### -->
+<para>
+
+</para>
+
+@string:
+@len:
+@quote:
+@xml_version:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_escape_string ##### -->
+<para>
+
+</para>
+
+@world:
+@string:
+@len:
+@buffer:
+@length:
+@quote:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_escape_string_write ##### -->
+<para>
+
+</para>
+
+@string:
+@len:
+@quote:
+@iostr:
+@Returns:
+
+
+<!-- ##### FUNCTION raptor_xml_name_check ##### -->
+<para>
+
+</para>
+
+@string:
+@length:
+@xml_version:
+@Returns:
+
+
diff --git a/docs/upgrade-script.pl b/docs/upgrade-script.pl
new file mode 100644
index 0000000..6cecba3
--- /dev/null
+++ b/docs/upgrade-script.pl
@@ -0,0 +1,460 @@
+#!/usr/bin/perl -pi~
+# Perl script to upgrade raptor2 1.4.21 to 2.0.0
+
+
+# Replace statement fields with term fields.
+s|->object|->object.value.uri or object.value.literal.string or object.value.blank.string /* WARNING: must choose one */|g;
+s|->subject_type|->subject.type|g;
+s|->object_type|->object.type|g;
+s|->predicate|->predicate.value.uri|g;
+s|->object_literal_datatype|->object.value.literal.datatype|g;
+s|->predicate_type|->predicate.type|g;
+s|->subject|->subject.value.uri or subject.value.blank.string /* WARNING: must choose one */|g;
+s|->object_literal_language|->object.value.literal.language|g;
+
+
+# Deleted functions
+s|^(.*raptor_compare_strings.*)$|/\* WARNING: raptor_compare_strings - deleted. Trivial utility function removed. \*/ $1|g;
+s|^(.*raptor_copy_identifier.*)$|/\* WARNING: raptor_copy_identifier - deleted. Use raptor_term_copy() with #raptor_term objects. \*/ $1|g;
+s|^(.*raptor_error_handlers_init.*)$|/\* WARNING: raptor_error_handlers_init - deleted. Replaced by generic raptor log mechanism. See raptor_world_set_log_handler() \*/ $1|g;
+s|^(.*raptor_error_handlers_init_v2.*)$|/\* WARNING: raptor_error_handlers_init_v2 - deleted. Replaced by generic raptor log mechanism. See raptor_world_set_log_handler() \*/ $1|g;
+s|^(.*raptor_feature_value_type.*)$|/\* WARNING: raptor_feature_value_type - deleted. Use raptor_world_get_option_description() for the option and access the value_type field. \*/ $1|g;
+s|^(.*raptor_finish.*)$|/\* WARNING: raptor_finish - deleted. Use raptor_free_world() with #raptor_world object. \*/ $1|g;
+s|^(.*raptor_free_identifier.*)$|/\* WARNING: raptor_free_identifier - deleted. Use raptor_free_term() with #raptor_term objects. \*/ $1|g;
+s|^(.*raptor_init.*)$|/\* WARNING: raptor_init - deleted. Use raptor_new_world() to create a new #raptor_world object. \*/ $1|g;
+s|^(.*raptor_iostream_get_bytes_written_count.*)$|/\* WARNING: raptor_iostream_get_bytes_written_count - deleted. Deprecated for raptor_iostream_tell(). \*/ $1|g;
+s|^(.*raptor_iostream_write_string_turtle.*)$|/\* WARNING: raptor_iostream_write_string_turtle - deleted. Deprecated for raptor_string_python_write(). \*/ $1|g;
+s|^(.*raptor_new_identifier.*)$|/\* WARNING: raptor_new_identifier - deleted. Replaced by raptor_new_term_from_blank(), raptor_new_term_from_literal() or raptor_new_term_from_blank() and #raptor_term class. \*/ $1|g;
+s|^(.*raptor_new_identifier_v2.*)$|/\* WARNING: raptor_new_identifier_v2 - deleted. Replaced by raptor_new_term_from_blank(), raptor_new_term_from_literal() or raptor_new_term_from_blank() and #raptor_term class. \*/ $1|g;
+s|^(.*raptor_ntriples_string_as_utf8_string.*)$|/\* WARNING: raptor_ntriples_string_as_utf8_string - deleted. Deprecated internal debug function. \*/ $1|g;
+s|^(.*raptor_ntriples_term_as_string.*)$|/\* WARNING: raptor_ntriples_term_as_string - deleted. Deprecated internal debug function. \*/ $1|g;
+s|^(.*raptor_print_ntriples_string.*)$|/\* WARNING: raptor_print_ntriples_string - deleted. Use raptor_string_ntriples_write() with a #raptor_iostream \*/ $1|g;
+s|^(.*raptor_print_statement_detailed.*)$|/\* WARNING: raptor_print_statement_detailed - deleted. Deprecated internal function. \*/ $1|g;
+s|^(.*raptor_sequence_print_string.*)$|/\* WARNING: raptor_sequence_print_string - deleted. Trivial utility function removed. \*/ $1|g;
+s|^(.*raptor_sequence_print_uri.*)$|/\* WARNING: raptor_sequence_print_uri - deleted. Deprecated for raptor_uri_print() \*/ $1|g;
+s|^(.*raptor_sequence_set_print_handler.*)$|/\* WARNING: raptor_sequence_set_print_handler - deleted. Use the argument in the raptor_new_sequence() constructor instead. \*/ $1|g;
+s|^(.*raptor_sequence_set_print_handler_v2.*)$|/\* WARNING: raptor_sequence_set_print_handler_v2 - deleted. Use the argument in the raptor_new_sequence() constructor instead. \*/ $1|g;
+s|^(.*raptor_serializer_set_error_handler.*)$|/\* WARNING: raptor_serializer_set_error_handler - deleted. Replaced by raptor_world_set_log_handler() on the #raptor_world object. \*/ $1|g;
+s|^(.*raptor_serializer_set_warning_handler.*)$|/\* WARNING: raptor_serializer_set_warning_handler - deleted. Replaced by raptor_world_set_log_handler() on the #raptor_world object. \*/ $1|g;
+s|^(.*raptor_set_error_handler.*)$|/\* WARNING: raptor_set_error_handler - deleted. Replaced by raptor_world_set_log_handler() on the #raptor_world object. \*/ $1|g;
+s|^(.*raptor_set_fatal_error_handler.*)$|/\* WARNING: raptor_set_fatal_error_handler - deleted. Replaced by raptor_world_set_log_handler() on the #raptor_world object. \*/ $1|g;
+s|^(.*raptor_set_parser_strict.*)$|/\* WARNING: raptor_set_parser_strict - deleted. Replaced by raptor_parser_set_option() with option RAPTOR_OPTION_STRICT \*/ $1|g;
+s|^(.*raptor_set_warning_handler.*)$|/\* WARNING: raptor_set_warning_handler - deleted. Replaced by raptor_world_set_log_handler() on the #raptor_world object. \*/ $1|g;
+s|^(.*raptor_statement_part_as_counted_string.*)$|/\* WARNING: raptor_statement_part_as_counted_string - deleted. Better done via methods of #raptor_term class such as raptor_term_to_counted_string(). \*/ $1|g;
+s|^(.*raptor_statement_part_as_counted_string_v2.*)$|/\* WARNING: raptor_statement_part_as_counted_string_v2 - deleted. Better done via methods of #raptor_term class such as raptor_term_to_counted_string(). \*/ $1|g;
+s|^(.*raptor_statement_part_as_string.*)$|/\* WARNING: raptor_statement_part_as_string - deleted. Better done via methods of #raptor_term class such as raptor_term_to_string(). \*/ $1|g;
+s|^(.*raptor_statement_part_as_string_v2.*)$|/\* WARNING: raptor_statement_part_as_string_v2 - deleted. Better done via methods of #raptor_term class such as raptor_term_to_string(). \*/ $1|g;
+s|^(.*raptor_uri_get_handler.*)$|/\* WARNING: raptor_uri_get_handler - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_uri_get_handler_v2.*)$|/\* WARNING: raptor_uri_get_handler_v2 - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_uri_set_handler.*)$|/\* WARNING: raptor_uri_set_handler - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_uri_set_handler_v2.*)$|/\* WARNING: raptor_uri_set_handler_v2 - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_www_finish.*)$|/\* WARNING: raptor_www_finish - deleted. No need for this to be public. \*/ $1|g;
+s|^(.*raptor_www_finish_v2.*)$|/\* WARNING: raptor_www_finish_v2 - deleted. No need for this to be public. \*/ $1|g;
+s|^(.*raptor_www_init.*)$|/\* WARNING: raptor_www_init - deleted. No need for this to be public. \*/ $1|g;
+s|^(.*raptor_www_init_v2.*)$|/\* WARNING: raptor_www_init_v2 - deleted. No need for this to be public. \*/ $1|g;
+s|^(.*raptor_www_no_www_library_init_finish.*)$|/\* WARNING: raptor_www_no_www_library_init_finish - deleted. Deprecated for raptor_world_set_flag(). \*/ $1|g;
+s|^(.*raptor_www_no_www_library_init_finish_v2.*)$|/\* WARNING: raptor_www_no_www_library_init_finish_v2 - deleted. Deprecated for raptor_world_set_flag(). \*/ $1|g;
+s|^(.*raptor_www_set_error_handler.*)$|/\* WARNING: raptor_www_set_error_handler - deleted. Replaced by raptor_world_set_log_handler() on the #raptor_world object. \*/ $1|g;
+
+# Deleted types
+s|^(.*raptor_error_handlers.*)$|/\* WARNING: raptor_error_handlers - deleted. Replaced by generic raptor log mechanism. See raptor_world_set_log_handler() \*/ $1|g;
+s|^(.*raptor_free_uri_func.*)$|/\* WARNING: raptor_free_uri_func - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_libxml_flags.*)$|/\* WARNING: raptor_libxml_flags - deleted. replaced by raptor_world_set_flags() with #raptor_world_flag \*/ $1|g;
+s|^(.*raptor_message_handler.*)$|/\* WARNING: raptor_message_handler - deleted. Replaced by generic raptor log mechanism. See raptor_world_set_log_handler() \*/ $1|g;
+s|^(.*raptor_message_handler_closure.*)$|/\* WARNING: raptor_message_handler_closure - deleted. Replaced by generic raptor log mechanism. See raptor_world_set_log_handler() \*/ $1|g;
+s|^(.*raptor_new_uri_for_rdf_concept_func.*)$|/\* WARNING: raptor_new_uri_for_rdf_concept_func - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_new_uri_from_uri_local_name_func.*)$|/\* WARNING: raptor_new_uri_from_uri_local_name_func - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_new_uri_func.*)$|/\* WARNING: raptor_new_uri_func - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_new_uri_relative_to_base_func.*)$|/\* WARNING: raptor_new_uri_relative_to_base_func - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_ntriples_parser.*)$|/\* WARNING: raptor_ntriples_parser - deleted. replaced by #raptor_parser \*/ $1|g;
+s|^(.*raptor_ntriples_term_type.*)$|/\* WARNING: raptor_ntriples_term_type - deleted. replaced by #raptor_term_type \*/ $1|g;
+s|^(.*raptor_uri_as_counted_string_func.*)$|/\* WARNING: raptor_uri_as_counted_string_func - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_uri_as_string_func.*)$|/\* WARNING: raptor_uri_as_string_func - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_uri_compare_func.*)$|/\* WARNING: raptor_uri_compare_func - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_uri_copy_func.*)$|/\* WARNING: raptor_uri_copy_func - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_uri_equals_func.*)$|/\* WARNING: raptor_uri_equals_func - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_uri_handler.*)$|/\* WARNING: raptor_uri_handler - deleted. Entire URI implementation is internal and not replaceable. \*/ $1|g;
+s|^(.*raptor_uri_source.*)$|/\* WARNING: raptor_uri_source - deleted. URI source was useless. \*/ $1|g;
+
+# Deleted enums
+s|^(.*RAPTOR_IDENTIFIER_TYPE_ORDINAL.*)$|/\* WARNING: RAPTOR_IDENTIFIER_TYPE_ORDINAL - deleted. Deprecated value deleted. \*/ $1|g;
+s|^(.*RAPTOR_URI_SOURCE_UNKNOWN.*)$|/\* WARNING: RAPTOR_URI_SOURCE_UNKNOWN - deleted. URI source concept removed. \*/ $1|g;
+s|^(.*RAPTOR_URI_SOURCE_NOT_URI.*)$|/\* WARNING: RAPTOR_URI_SOURCE_NOT_URI - deleted. URI source concept removed. \*/ $1|g;
+s|^(.*RAPTOR_URI_SOURCE_ELEMENT.*)$|/\* WARNING: RAPTOR_URI_SOURCE_ELEMENT - deleted. URI source concept removed. \*/ $1|g;
+s|^(.*RAPTOR_URI_SOURCE_ATTRIBUTE.*)$|/\* WARNING: RAPTOR_URI_SOURCE_ATTRIBUTE - deleted. URI source concept removed. \*/ $1|g;
+s|^(.*RAPTOR_URI_SOURCE_ID.*)$|/\* WARNING: RAPTOR_URI_SOURCE_ID - deleted. URI source concept removed. \*/ $1|g;
+s|^(.*RAPTOR_URI_SOURCE_URI.*)$|/\* WARNING: RAPTOR_URI_SOURCE_URI - deleted. URI source concept removed. \*/ $1|g;
+s|^(.*RAPTOR_URI_SOURCE_GENERATED.*)$|/\* WARNING: RAPTOR_URI_SOURCE_GENERATED - deleted. URI source concept removed. \*/ $1|g;
+s|^(.*RAPTOR_URI_SOURCE_BLANK_ID.*)$|/\* WARNING: RAPTOR_URI_SOURCE_BLANK_ID - deleted. URI source concept removed. \*/ $1|g;
+s|^(.*RAPTOR_FEATURE_ASSUME_IS_RDF.*)$|/\* WARNING: RAPTOR_FEATURE_ASSUME_IS_RDF - deleted. Never used. \*/ $1|g;
+s|^(.*RAPTOR_FEATURE_START_URI.*)$|/\* WARNING: RAPTOR_FEATURE_START_URI - deleted. Never used. \*/ $1|g;
+s|^(.*RAPTOR_GENID_TYPE_BNODEID.*)$|/\* WARNING: RAPTOR_GENID_TYPE_BNODEID - deleted. There is just one type of generated ID now. \*/ $1|g;
+s|^(.*RAPTOR_GENID_TYPE_BAGID.*)$|/\* WARNING: RAPTOR_GENID_TYPE_BAGID - deleted. There is just one type of generated ID now. \*/ $1|g;
+
+# Renamed functions
+s|raptor_format_locator\(|raptor_locator_format\(|g;
+s|raptor_get_feature_count\(|raptor_option_get_count\(|g;
+s|raptor_get_locator\(|raptor_parser_get_locator\(|g;
+s|raptor_get_name\(|raptor_parser_get_name\(|g;
+s|raptor_guess_parser_name_v2\(|raptor_world_guess_parser_name\(|g;
+s|raptor_namespace_copy\(|raptor_namespace_stack_start_namespace\(|g;
+s|raptor_namespaces_format\(|raptor_namespace_format_as_xml\(|g;
+s|raptor_namespaces_qname_from_uri\(|raptor_new_qname_from_namespace_uri\(|g;
+s|raptor_new_namespace_parts_from_string\(|raptor_xml_namespace_string_parse\(|g;
+s|raptor_new_parser_for_content_v2\(|raptor_new_parser_for_content\(|g;
+s|raptor_new_parser_v2\(|raptor_new_parser\(|g;
+s|raptor_new_qname_from_namespace_local_name_v2\(|raptor_new_qname_from_namespace_local_name\(|g;
+s|raptor_new_serializer_v2\(|raptor_new_serializer\(|g;
+s|raptor_new_uri_from_id_v2\(|raptor_new_uri_from_id\(|g;
+s|raptor_new_uri_from_uri_local_name_v2\(|raptor_new_uri_from_uri_local_name\(|g;
+s|raptor_new_uri_relative_to_base_v2\(|raptor_new_uri_relative_to_base\(|g;
+s|raptor_new_uri_v2\(|raptor_new_uri\(|g;
+s|raptor_parse_abort\(|raptor_parser_parse_abort\(|g;
+s|raptor_parse_chunk\(|raptor_parser_parse_chunk\(|g;
+s|raptor_parse_file\(|raptor_parser_parse_file\(|g;
+s|raptor_parse_file_stream\(|raptor_parser_parse_file_stream\(|g;
+s|raptor_parse_uri\(|raptor_parser_parse_uri\(|g;
+s|raptor_parse_uri_with_connection\(|raptor_parser_parse_uri_with_connection\(|g;
+s|raptor_serialize_end\(|raptor_serializer_serialize_end\(|g;
+s|raptor_serialize_set_namespace\(|raptor_serializer_set_namespace\(|g;
+s|raptor_serialize_set_namespace_from_namespace\(|raptor_serializer_set_namespace_from_namespace\(|g;
+s|raptor_serialize_start\(|raptor_serializer_start_to_iostream\(|g;
+s|raptor_serialize_start_to_file_handle\(|raptor_serializer_start_to_file_handle\(|g;
+s|raptor_serialize_start_to_filename\(|raptor_serializer_start_to_filename\(|g;
+s|raptor_serialize_start_to_iostream\(|raptor_serializer_start_to_iostream\(|g;
+s|raptor_serialize_start_to_string\(|raptor_serializer_start_to_string\(|g;
+s|raptor_serializer_syntax_name_check_v2\(|raptor_world_is_serializer_name\(|g;
+s|raptor_set_namespace_handler\(|raptor_parser_set_namespace_handler\(|g;
+s|raptor_set_statement_handler\(|raptor_parser_set_statement_handler\(|g;
+s|raptor_start_parse\(|raptor_parser_parse_start\(|g;
+s|raptor_uri_is_file_uri\(|raptor_uri_uri_string_is_file_uri\(|g;
+s|raptor_utf8_check\(|raptor_unicode_check_utf8_string\(|g;
+s|raptor_www_free\(|raptor_free_www\(|g;
+s|raptor_www_new_v2\(|raptor_new_www\(|g;
+s|raptor_www_new_with_connection_v2\(|raptor_new_www_with_connection\(|g;
+
+# Renamed enums
+s|RAPTOR_IDENTIFIER_TYPE_UNKNOWN|RAPTOR_TERM_TYPE_UNKNOWN|g;
+s|RAPTOR_IDENTIFIER_TYPE_RESOURCE|RAPTOR_TERM_TYPE_URI|g;
+s|RAPTOR_IDENTIFIER_TYPE_ANONYMOUS|RAPTOR_TERM_TYPE_BLANK|g;
+s|RAPTOR_IDENTIFIER_TYPE_PREDICATE|RAPTOR_TERM_TYPE_URI|g;
+s|RAPTOR_IDENTIFIER_TYPE_LITERAL|RAPTOR_TERM_TYPE_LITERAL|g;
+s|RAPTOR_IDENTIFIER_TYPE_XML_LITERAL|RAPTOR_TERM_TYPE_LITERAL|g;
+s|RAPTOR_NTRIPLES_TERM_TYPE_URI_REF|RAPTOR_TERM_TYPE_URI|g;
+s|RAPTOR_NTRIPLES_TERM_TYPE_BLANK_NODE|RAPTOR_TERM_TYPE_BLANK|g;
+s|RAPTOR_NTRIPLES_TERM_TYPE_LITERAL|RAPTOR_TERM_TYPE_LITERAL|g;
+s|RAPTOR_FEATURE_SCANNING |RAPTOR_OPTION_SCANNING|g;
+s|RAPTOR_FEATURE_ALLOW_NON_NS_ATTRIBUTES|RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES|g;
+s|RAPTOR_FEATURE_ALLOW_OTHER_PARSETYPES|RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES|g;
+s|RAPTOR_FEATURE_ALLOW_BAGID|RAPTOR_OPTION_ALLOW_BAGID|g;
+s|RAPTOR_FEATURE_ALLOW_RDF_TYPE_RDF_LIST|RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST|g;
+s|RAPTOR_FEATURE_NORMALIZE_LANGUAGE|RAPTOR_OPTION_NORMALIZE_LANGUAGE|g;
+s|RAPTOR_FEATURE_NON_NFC_FATAL|RAPTOR_OPTION_NON_NFC_FATAL|g;
+s|RAPTOR_FEATURE_WARN_OTHER_PARSETYPES|RAPTOR_OPTION_WARN_OTHER_PARSETYPES|g;
+s|RAPTOR_FEATURE_CHECK_RDF_ID|RAPTOR_OPTION_CHECK_RDF_ID|g;
+s|RAPTOR_FEATURE_RELATIVE_URIS|RAPTOR_OPTION_RELATIVE_URIS|g;
+s|RAPTOR_FEATURE_WRITER_AUTO_INDENT|RAPTOR_OPTION_WRITER_AUTO_INDENT|g;
+s|RAPTOR_FEATURE_WRITER_AUTO_EMPTY|RAPTOR_OPTION_WRITER_AUTO_EMPTY|g;
+s|RAPTOR_FEATURE_WRITER_INDENT_WIDTH|RAPTOR_OPTION_WRITER_INDENT_WIDTH|g;
+s|RAPTOR_FEATURE_WRITER_XML_VERSION|RAPTOR_OPTION_WRITER_XML_VERSION|g;
+s|RAPTOR_FEATURE_WRITER_XML_DECLARATION|RAPTOR_OPTION_WRITER_XML_DECLARATION|g;
+s|RAPTOR_FEATURE_NO_NET|RAPTOR_OPTION_NO_NET|g;
+s|RAPTOR_FEATURE_RESOURCE_BORDER|RAPTOR_OPTION_RESOURCE_BORDER|g;
+s|RAPTOR_FEATURE_LITERAL_BORDER|RAPTOR_OPTION_LITERAL_BORDER|g;
+s|RAPTOR_FEATURE_BNODE_BORDER|RAPTOR_OPTION_BNODE_BORDER|g;
+s|RAPTOR_FEATURE_RESOURCE_FILL|RAPTOR_OPTION_RESOURCE_FILL|g;
+s|RAPTOR_FEATURE_LITERAL_FILL|RAPTOR_OPTION_LITERAL_FILL|g;
+s|RAPTOR_FEATURE_BNODE_FILL|RAPTOR_OPTION_BNODE_FILL|g;
+s|RAPTOR_FEATURE_HTML_TAG_SOUP|RAPTOR_OPTION_HTML_TAG_SOUP|g;
+s|RAPTOR_FEATURE_MICROFORMATS|RAPTOR_OPTION_MICROFORMATS|g;
+s|RAPTOR_FEATURE_HTML_LINK|RAPTOR_OPTION_HTML_LINK|g;
+s|RAPTOR_FEATURE_WWW_TIMEOUT|RAPTOR_OPTION_WWW_TIMEOUT|g;
+s|RAPTOR_FEATURE_WRITE_BASE_URI|RAPTOR_OPTION_WRITE_BASE_URI|g;
+s|RAPTOR_FEATURE_WWW_HTTP_CACHE_CONTROL|RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL|g;
+s|RAPTOR_FEATURE_WWW_HTTP_USER_AGENT|RAPTOR_OPTION_WWW_HTTP_USER_AGENT|g;
+s|RAPTOR_FEATURE_JSON_CALLBACK|RAPTOR_OPTION_JSON_CALLBACK|g;
+s|RAPTOR_FEATURE_JSON_EXTRA_DATA|RAPTOR_OPTION_JSON_EXTRA_DATA|g;
+s|RAPTOR_FEATURE_RSS_TRIPLES|RAPTOR_OPTION_RSS_TRIPLES|g;
+s|RAPTOR_FEATURE_ATOM_ENTRY_URI|RAPTOR_OPTION_ATOM_ENTRY_URI|g;
+s|RAPTOR_FEATURE_PREFIX_ELEMENTS|RAPTOR_OPTION_PREFIX_ELEMENTS|g;
+s|RAPTOR_FEATURE_LAST|RAPTOR_OPTION_LAST|g;
+s|RAPTOR_LOG_LEVEL_WARNING|RAPTOR_LOG_LEVEL_WARN|g;
+s|RAPTOR_LIBXML_FLAGS_GENERIC_ERROR_SAVE|RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE|g;
+s|RAPTOR_LIBXML_FLAGS_STRUCTURED_ERROR_SAVE|RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE|g;
+
+# Changed functions
+s|^(.*)(raptor_feature_from_uri)(.*)$|/\* WARNING: raptor_feature_from_uri. \*/ ${1}raptor_world_get_option_from_uri${3}|g;
+s|^(.*)(raptor_feature_from_uri_v2)(.*)$|/\* WARNING: raptor_feature_from_uri_v2. \*/ ${1}raptor_world_get_option_from_uri${3}|g;
+s|^(.*)(raptor_features_enumerate)(.*)$|/\* WARNING: raptor_features_enumerate. Call with domain = RAPTOR_DOMAIN_PARSER \*/ ${1}raptor_world_get_option_description${3}|g;
+s|^(.*)(raptor_features_enumerate_v2)(.*)$|/\* WARNING: raptor_features_enumerate_v2. Call with domain = RAPTOR_DOMAIN_PARSER \*/ ${1}raptor_world_get_option_description${3}|g;
+s|^(.*)(raptor_format_locator_v2)(.*)$|/\* WARNING: raptor_format_locator_v2. \*/ ${1}raptor_locator_format${3}|g;
+s|^(.*)(raptor_free_uri_v2)(.*)$|/\* WARNING: raptor_free_uri_v2. \*/ ${1}raptor_free_uri${3}|g;
+s|^(.*)(raptor_get_feature)(.*)$|/\* WARNING: raptor_get_feature. \*/ ${1}raptor_parser_get_option${3}|g;
+s|^(.*)(raptor_get_label)(.*)$|/\* WARNING: raptor_get_label. Use label field of returned description. \*/ ${1}raptor_parser_get_description${3}|g;
+s|^(.*)(raptor_get_mime_type)(.*)$|/\* WARNING: raptor_get_mime_type. Use the mime_types array field of returned #raptor_syntax_description \*/ ${1}raptor_parser_get_description${3}|g;
+s|^(.*)(raptor_get_need_base_uri)(.*)$|/\* WARNING: raptor_get_need_base_uri. Use the #RAPTOR_SYNTAX_NEED_BASE_URI bitflag in the flags field of the returned #raptor_syntax_description \*/ ${1}raptor_parser_get_description${3}|g;
+s|^(.*)(raptor_guess_parser_name)(.*)$|/\* WARNING: raptor_guess_parser_name. \*/ ${1}raptor_world_guess_parser_name${3}|g;
+s|^(.*)(raptor_iostream_format_hexadecimal)(.*)$|/\* WARNING: raptor_iostream_format_hexadecimal. \*/ ${1}raptor_iostream_hexadecimal_write${3}|g;
+s|^(.*)(raptor_iostream_read_bytes)(.*)$|/\* WARNING: raptor_iostream_read_bytes. \*/ ${1}raptor_iostream_read_bytes${3}|g;
+s|^(.*)(raptor_iostream_write_byte)(.*)$|/\* WARNING: raptor_iostream_write_byte. \*/ ${1}raptor_iostream_write_byte${3}|g;
+s|^(.*)(raptor_iostream_write_bytes)(.*)$|/\* WARNING: raptor_iostream_write_bytes. \*/ ${1}raptor_iostream_write_bytes${3}|g;
+s|^(.*)(raptor_iostream_write_counted_string)(.*)$|/\* WARNING: raptor_iostream_write_counted_string. \*/ ${1}raptor_iostream_counted_string_write${3}|g;
+s|^(.*)(raptor_iostream_write_decimal)(.*)$|/\* WARNING: raptor_iostream_write_decimal. \*/ ${1}raptor_iostream_decimal_write${3}|g;
+s|^(.*)(raptor_iostream_write_end)(.*)$|/\* WARNING: raptor_iostream_write_end. \*/ ${1}raptor_iostream_write_end${3}|g;
+s|^(.*)(raptor_iostream_write_namespace)(.*)$|/\* WARNING: raptor_iostream_write_namespace. \*/ ${1}raptor_namespace_write${3}|g;
+s|^(.*)(raptor_iostream_write_qname)(.*)$|/\* WARNING: raptor_iostream_write_qname. \*/ ${1}raptor_qname_write${3}|g;
+s|^(.*)(raptor_iostream_write_statement_ntriples)(.*)$|/\* WARNING: raptor_iostream_write_statement_ntriples. Gains extra flag arg to decide whether to write any graph term. \*/ ${1}raptor_statement_ntriples_write${3}|g;
+s|^(.*)(raptor_iostream_write_string)(.*)$|/\* WARNING: raptor_iostream_write_string. \*/ ${1}raptor_iostream_string_write${3}|g;
+s|^(.*)(raptor_iostream_write_string_ntriples)(.*)$|/\* WARNING: raptor_iostream_write_string_ntriples. \*/ ${1}raptor_string_ntriples_write${3}|g;
+s|^(.*)(raptor_iostream_write_string_python)(.*)$|/\* WARNING: raptor_iostream_write_string_python. \*/ ${1}raptor_string_python_write${3}|g;
+s|^(.*)(raptor_iostream_write_stringbuffer)(.*)$|/\* WARNING: raptor_iostream_write_stringbuffer. \*/ ${1}raptor_stringbuffer_write${3}|g;
+s|^(.*)(raptor_iostream_write_uri)(.*)$|/\* WARNING: raptor_iostream_write_uri. \*/ ${1}raptor_uri_write${3}|g;
+s|^(.*)(raptor_iostream_write_uri_v2)(.*)$|/\* WARNING: raptor_iostream_write_uri_v2. \*/ ${1}raptor_uri_write${3}|g;
+s|^(.*)(raptor_iostream_write_xml_any_escaped_string)(.*)$|/\* WARNING: raptor_iostream_write_xml_any_escaped_string. \*/ ${1}raptor_xml_escape_string_any_write${3}|g;
+s|^(.*)(raptor_iostream_write_xml_element)(.*)$|/\* WARNING: raptor_iostream_write_xml_element. \*/ ${1}raptor_xml_element_write${3}|g;
+s|^(.*)(raptor_iostream_write_xml_escaped_string)(.*)$|/\* WARNING: raptor_iostream_write_xml_escaped_string. \*/ ${1}raptor_xml_escape_string_write${3}|g;
+s|^(.*)(raptor_locator_uri_v2)(.*)$|/\* WARNING: raptor_locator_uri_v2. \*/ ${1}raptor_locator_uri${3}|g;
+s|^(.*)(raptor_namespaces_init)(.*)$|/\* WARNING: raptor_namespaces_init. \*/ ${1}raptor_namespaces_init${3}|g;
+s|^(.*)(raptor_namespaces_init_v2)(.*)$|/\* WARNING: raptor_namespaces_init_v2. \*/ ${1}raptor_namespaces_init${3}|g;
+s|^(.*)(raptor_new_iostream_from_file_handle)(.*)$|/\* WARNING: raptor_new_iostream_from_file_handle. \*/ ${1}raptor_new_iostream_from_file_handle${3}|g;
+s|^(.*)(raptor_new_iostream_from_filename)(.*)$|/\* WARNING: raptor_new_iostream_from_filename. \*/ ${1}raptor_new_iostream_from_filename${3}|g;
+s|^(.*)(raptor_new_iostream_from_handler)(.*)$|/\* WARNING: raptor_new_iostream_from_handler. \*/ ${1}raptor_new_iostream_from_handler${3}|g;
+s|^(.*)(raptor_new_iostream_from_handler2)(.*)$|/\* WARNING: raptor_new_iostream_from_handler2. \*/ ${1}raptor_new_iostream_from_handler${3}|g;
+s|^(.*)(raptor_new_iostream_from_sink)(.*)$|/\* WARNING: raptor_new_iostream_from_sink. \*/ ${1}raptor_new_iostream_from_sink${3}|g;
+s|^(.*)(raptor_new_iostream_from_string)(.*)$|/\* WARNING: raptor_new_iostream_from_string. \*/ ${1}raptor_new_iostream_from_string${3}|g;
+s|^(.*)(raptor_new_iostream_to_file_handle)(.*)$|/\* WARNING: raptor_new_iostream_to_file_handle. \*/ ${1}raptor_new_iostream_to_file_handle${3}|g;
+s|^(.*)(raptor_new_iostream_to_filename)(.*)$|/\* WARNING: raptor_new_iostream_to_filename. \*/ ${1}raptor_new_iostream_to_filename${3}|g;
+s|^(.*)(raptor_new_iostream_to_sink)(.*)$|/\* WARNING: raptor_new_iostream_to_sink. \*/ ${1}raptor_new_iostream_to_sink${3}|g;
+s|^(.*)(raptor_new_iostream_to_string)(.*)$|/\* WARNING: raptor_new_iostream_to_string. \*/ ${1}raptor_new_iostream_to_string${3}|g;
+s|^(.*)(raptor_new_namespaces)(.*)$|/\* WARNING: raptor_new_namespaces. \*/ ${1}raptor_new_namespaces${3}|g;
+s|^(.*)(raptor_new_namespaces_v2)(.*)$|/\* WARNING: raptor_new_namespaces_v2. \*/ ${1}raptor_new_namespaces${3}|g;
+s|^(.*)(raptor_new_parser)(.*)$|/\* WARNING: raptor_new_parser. \*/ ${1}raptor_new_parser${3}|g;
+s|^(.*)(raptor_new_parser_for_content)(.*)$|/\* WARNING: raptor_new_parser_for_content. \*/ ${1}raptor_new_parser_for_content${3}|g;
+s|^(.*)(raptor_new_qname)(.*)$|/\* WARNING: raptor_new_qname. \*/ ${1}raptor_new_qname${3}|g;
+s|^(.*)(raptor_new_qname_from_namespace_local_name)(.*)$|/\* WARNING: raptor_new_qname_from_namespace_local_name. \*/ ${1}raptor_new_qname_from_namespace_local_name${3}|g;
+s|^(.*)(raptor_new_sax2)(.*)$|/\* WARNING: raptor_new_sax2. \*/ ${1}raptor_new_sax2${3}|g;
+s|^(.*)(raptor_new_sequence)(.*)$|/\* WARNING: raptor_new_sequence. \*/ ${1}raptor_new_sequence${3}|g;
+s|^(.*)(raptor_new_sequence_v2)(.*)$|/\* WARNING: raptor_new_sequence_v2. \*/ ${1}raptor_new_sequence${3}|g;
+s|^(.*)(raptor_new_serializer)(.*)$|/\* WARNING: raptor_new_serializer. \*/ ${1}raptor_new_serializer${3}|g;
+s|^(.*)(raptor_new_uri)(.*)$|/\* WARNING: raptor_new_uri. \*/ ${1}raptor_new_uri${3}|g;
+s|^(.*)(raptor_new_uri_for_rdf_concept)(.*)$|/\* WARNING: raptor_new_uri_for_rdf_concept. \*/ ${1}raptor_new_uri_for_rdf_concept${3}|g;
+s|^(.*)(raptor_new_uri_for_rdf_concept_v2)(.*)$|/\* WARNING: raptor_new_uri_for_rdf_concept_v2. \*/ ${1}raptor_new_uri_for_rdf_concept${3}|g;
+s|^(.*)(raptor_new_uri_for_retrieval_v2)(.*)$|/\* WARNING: raptor_new_uri_for_retrieval_v2. \*/ ${1}raptor_new_uri_for_retrieval${3}|g;
+s|^(.*)(raptor_new_uri_for_xmlbase_v2)(.*)$|/\* WARNING: raptor_new_uri_for_xmlbase_v2. \*/ ${1}raptor_new_uri_for_xmlbase${3}|g;
+s|^(.*)(raptor_new_uri_from_id)(.*)$|/\* WARNING: raptor_new_uri_from_id. \*/ ${1}raptor_new_uri_from_id${3}|g;
+s|^(.*)(raptor_new_uri_from_uri_local_name)(.*)$|/\* WARNING: raptor_new_uri_from_uri_local_name. \*/ ${1}raptor_new_uri_from_uri_local_name${3}|g;
+s|^(.*)(raptor_new_uri_relative_to_base)(.*)$|/\* WARNING: raptor_new_uri_relative_to_base. \*/ ${1}raptor_new_uri_relative_to_base${3}|g;
+s|^(.*)(raptor_new_xml_writer)(.*)$|/\* WARNING: raptor_new_xml_writer. \*/ ${1}raptor_new_xml_writer${3}|g;
+s|^(.*)(raptor_new_xml_writer_v2)(.*)$|/\* WARNING: raptor_new_xml_writer_v2. \*/ ${1}raptor_new_xml_writer${3}|g;
+s|^(.*)(raptor_parser_get_feature_string)(.*)$|/\* WARNING: raptor_parser_get_feature_string. \*/ ${1}raptor_parser_get_option${3}|g;
+s|^(.*)(raptor_parser_set_feature_string)(.*)$|/\* WARNING: raptor_parser_set_feature_string. \*/ ${1}raptor_parser_set_option${3}|g;
+s|^(.*)(raptor_parsers_enumerate)(.*)$|/\* WARNING: raptor_parsers_enumerate. \*/ ${1}raptor_world_get_parser_description${3}|g;
+s|^(.*)(raptor_parsers_enumerate_v2)(.*)$|/\* WARNING: raptor_parsers_enumerate_v2. \*/ ${1}raptor_world_get_parser_description${3}|g;
+s|^(.*)(raptor_print_locator)(.*)$|/\* WARNING: raptor_print_locator. \*/ ${1}raptor_locator_print${3}|g;
+s|^(.*)(raptor_print_locator_v2)(.*)$|/\* WARNING: raptor_print_locator_v2. \*/ ${1}raptor_locator_print${3}|g;
+s|^(.*)(raptor_print_statement)(.*)$|/\* WARNING: raptor_print_statement. \*/ ${1}raptor_statement_print${3}|g;
+s|^(.*)(raptor_print_statement_as_ntriples)(.*)$|/\* WARNING: raptor_print_statement_as_ntriples. \*/ ${1}raptor_statement_print_as_ntriples${3}|g;
+s|^(.*)(raptor_print_statement_as_ntriples_v2)(.*)$|/\* WARNING: raptor_print_statement_as_ntriples_v2. \*/ ${1}raptor_statement_print_as_ntriples${3}|g;
+s|^(.*)(raptor_print_statement_v2)(.*)$|/\* WARNING: raptor_print_statement_v2. \*/ ${1}raptor_statement_print${3}|g;
+s|^(.*)(raptor_qname_string_to_uri)(.*)$|/\* WARNING: raptor_qname_string_to_uri. \*/ ${1}raptor_qname_string_to_uri${3}|g;
+s|^(.*)(raptor_sequence_print)(.*)$|/\* WARNING: raptor_sequence_print. \*/ ${1}raptor_sequence_print${3}|g;
+s|^(.*)(raptor_sequence_sort)(.*)$|/\* WARNING: raptor_sequence_sort. \*/ ${1}raptor_sequence_sort${3}|g;
+s|^(.*)(raptor_serialize_statement)(.*)$|/\* WARNING: raptor_serialize_statement. \*/ ${1}raptor_serializer_serialize_statement${3}|g;
+s|^(.*)(raptor_serializer_features_enumerate)(.*)$|/\* WARNING: raptor_serializer_features_enumerate. Call with domain = RAPTOR_DOMAIN_SERIALIZER \*/ ${1}raptor_world_get_option_description${3}|g;
+s|^(.*)(raptor_serializer_features_enumerate_v2)(.*)$|/\* WARNING: raptor_serializer_features_enumerate_v2. Call with domain = RAPTOR_DOMAIN_SERIALIZER \*/ ${1}raptor_world_get_option_description${3}|g;
+s|^(.*)(raptor_serializer_get_feature)(.*)$|/\* WARNING: raptor_serializer_get_feature. \*/ ${1}raptor_serializer_get_option${3}|g;
+s|^(.*)(raptor_serializer_get_feature_string)(.*)$|/\* WARNING: raptor_serializer_get_feature_string. \*/ ${1}raptor_serializer_get_option${3}|g;
+s|^(.*)(raptor_serializer_set_feature)(.*)$|/\* WARNING: raptor_serializer_set_feature. \*/ ${1}raptor_serializer_set_option${3}|g;
+s|^(.*)(raptor_serializer_set_feature_string)(.*)$|/\* WARNING: raptor_serializer_set_feature_string. \*/ ${1}raptor_serializer_set_option${3}|g;
+s|^(.*)(raptor_serializer_syntax_name_check)(.*)$|/\* WARNING: raptor_serializer_syntax_name_check. \*/ ${1}raptor_world_is_serializer_name${3}|g;
+s|^(.*)(raptor_serializers_enumerate)(.*)$|/\* WARNING: raptor_serializers_enumerate. \*/ ${1}raptor_world_get_serializer_description${3}|g;
+s|^(.*)(raptor_serializers_enumerate_v2)(.*)$|/\* WARNING: raptor_serializers_enumerate_v2. \*/ ${1}raptor_world_get_serializer_description${3}|g;
+s|^(.*)(raptor_set_default_generate_id_parameters)(.*)$|/\* WARNING: raptor_set_default_generate_id_parameters. \*/ ${1}raptor_world_set_generate_bnodeid_parameters${3}|g;
+s|^(.*)(raptor_set_feature)(.*)$|/\* WARNING: raptor_set_feature. \*/ ${1}raptor_parser_set_option${3}|g;
+s|^(.*)(raptor_set_generate_id_handler)(.*)$|/\* WARNING: raptor_set_generate_id_handler. \*/ ${1}raptor_world_set_generate_bnodeid_handler${3}|g;
+s|^(.*)(raptor_set_graph_handler)(.*)$|/\* WARNING: raptor_set_graph_handler. \*/ ${1}raptor_parser_set_graph_mark_handler${3}|g;
+s|^(.*)(raptor_set_libxslt_security_preferences)(.*)$|/\* WARNING: raptor_set_libxslt_security_preferences. \*/ ${1}raptor_world_set_libxslt_security_preferences${3}|g;
+s|^(.*)(raptor_statement_compare_v2)(.*)$|/\* WARNING: raptor_statement_compare_v2. \*/ ${1}raptor_statement_compare${3}|g;
+s|^(.*)(raptor_syntax_name_check)(.*)$|/\* WARNING: raptor_syntax_name_check. \*/ ${1}raptor_world_is_parser_name${3}|g;
+s|^(.*)(raptor_syntax_name_check_v2)(.*)$|/\* WARNING: raptor_syntax_name_check_v2. \*/ ${1}raptor_world_is_parser_name${3}|g;
+s|^(.*)(raptor_syntaxes_enumerate)(.*)$|/\* WARNING: raptor_syntaxes_enumerate. \*/ ${1}raptor_world_get_parser_description${3}|g;
+s|^(.*)(raptor_syntaxes_enumerate_v2)(.*)$|/\* WARNING: raptor_syntaxes_enumerate_v2. \*/ ${1}raptor_world_get_parser_description${3}|g;
+s|^(.*)(raptor_unicode_char_to_utf8)(.*)$|/\* WARNING: raptor_unicode_char_to_utf8. \*/ ${1}raptor_unicode_utf8_string_put_char${3}|g;
+s|^(.*)(raptor_uri_as_counted_string_v2)(.*)$|/\* WARNING: raptor_uri_as_counted_string_v2. \*/ ${1}raptor_uri_as_counted_string${3}|g;
+s|^(.*)(raptor_uri_as_string_v2)(.*)$|/\* WARNING: raptor_uri_as_string_v2. \*/ ${1}raptor_uri_as_string${3}|g;
+s|^(.*)(raptor_uri_compare_v2)(.*)$|/\* WARNING: raptor_uri_compare_v2. \*/ ${1}raptor_uri_compare${3}|g;
+s|^(.*)(raptor_uri_copy_v2)(.*)$|/\* WARNING: raptor_uri_copy_v2. \*/ ${1}raptor_uri_copy${3}|g;
+s|^(.*)(raptor_uri_equals_v2)(.*)$|/\* WARNING: raptor_uri_equals_v2. \*/ ${1}raptor_uri_equals${3}|g;
+s|^(.*)(raptor_uri_print)(.*)$|/\* WARNING: raptor_uri_print. \*/ ${1}raptor_uri_print${3}|g;
+s|^(.*)(raptor_uri_print_v2)(.*)$|/\* WARNING: raptor_uri_print_v2. \*/ ${1}raptor_uri_print${3}|g;
+s|^(.*)(raptor_uri_resolve_uri_reference)(.*)$|/\* WARNING: raptor_uri_resolve_uri_reference. \*/ ${1}raptor_uri_resolve_uri_reference${3}|g;
+s|^(.*)(raptor_uri_to_counted_string_v2)(.*)$|/\* WARNING: raptor_uri_to_counted_string_v2. \*/ ${1}raptor_uri_to_counted_string${3}|g;
+s|^(.*)(raptor_uri_to_relative_counted_uri_string_v2)(.*)$|/\* WARNING: raptor_uri_to_relative_counted_uri_string_v2. \*/ ${1}raptor_uri_to_relative_counted_uri_string${3}|g;
+s|^(.*)(raptor_uri_to_relative_uri_string_v2)(.*)$|/\* WARNING: raptor_uri_to_relative_uri_string_v2. \*/ ${1}raptor_uri_to_relative_uri_string${3}|g;
+s|^(.*)(raptor_uri_to_string_v2)(.*)$|/\* WARNING: raptor_uri_to_string_v2. \*/ ${1}raptor_uri_to_string${3}|g;
+s|^(.*)(raptor_utf8_to_unicode_char)(.*)$|/\* WARNING: raptor_utf8_to_unicode_char. \*/ ${1}raptor_unicode_utf8_string_get_char${3}|g;
+s|^(.*)(raptor_world_set_libxml_flags)(.*)$|/\* WARNING: raptor_world_set_libxml_flags. \*/ ${1}raptor_world_set_flag${3}|g;
+s|^(.*)(raptor_world_set_libxslt_security_preferences)(.*)$|/\* WARNING: raptor_world_set_libxslt_security_preferences. \*/ ${1}raptor_world_set_libxslt_security_preferences${3}|g;
+s|^(.*)(raptor_www_fetch_to_string)(.*)$|/\* WARNING: raptor_www_fetch_to_string. \*/ ${1}raptor_www_fetch_to_string${3}|g;
+s|^(.*)(raptor_www_new)(.*)$|/\* WARNING: raptor_www_new. \*/ ${1}raptor_new_www${3}|g;
+s|^(.*)(raptor_www_new_with_connection)(.*)$|/\* WARNING: raptor_www_new_with_connection. \*/ ${1}raptor_new_www_with_connection${3}|g;
+s|^(.*)(raptor_xml_any_escape_string)(.*)$|/\* WARNING: raptor_xml_any_escape_string. \*/ ${1}raptor_xml_escape_string_any${3}|g;
+s|^(.*)(raptor_xml_escape_string)(.*)$|/\* WARNING: raptor_xml_escape_string. \*/ ${1}raptor_xml_escape_string${3}|g;
+s|^(.*)(raptor_xml_writer_features_enumerate)(.*)$|/\* WARNING: raptor_xml_writer_features_enumerate. Call with domain = RAPTOR_DOMAIN_XML_WRITER \*/ ${1}raptor_world_get_option_description${3}|g;
+s|^(.*)(raptor_xml_writer_features_enumerate_v2)(.*)$|/\* WARNING: raptor_xml_writer_features_enumerate_v2. Call with domain = RAPTOR_DOMAIN_XML_WRITER \*/ ${1}raptor_world_get_option_description${3}|g;
+s|^(.*)(raptor_xml_writer_get_feature)(.*)$|/\* WARNING: raptor_xml_writer_get_feature. \*/ ${1}raptor_xml_writer_get_option${3}|g;
+s|^(.*)(raptor_xml_writer_get_feature_string)(.*)$|/\* WARNING: raptor_xml_writer_get_feature_string. \*/ ${1}raptor_xml_writer_get_option${3}|g;
+s|^(.*)(raptor_xml_writer_set_feature)(.*)$|/\* WARNING: raptor_xml_writer_set_feature. \*/ ${1}raptor_xml_writer_set_option${3}|g;
+s|^(.*)(raptor_xml_writer_set_feature_string)(.*)$|/\* WARNING: raptor_xml_writer_set_feature_string. \*/ ${1}raptor_xml_writer_set_option${3}|g;
+
+# Changed types
+s|^(.*)(raptor_feature)(.*)$|/\* WARNING: raptor_feature. And new option RAPTOR_OPTION_STRICT added. \*/ ${1}raptor_option${3}|g;
+s|^(.*)(raptor_graph_handler)(.*)$|/\* WARNING: raptor_graph_handler. \*/ ${1}raptor_graph_mark_handler${3}|g;
+s|^(.*)(raptor_identifier)(.*)$|/\* WARNING: raptor_identifier. Fields changed to be simpler #raptor_term_type and #raptor_term_value \*/ ${1}raptor_term${3}|g;
+s|^(.*)(raptor_identifier_type)(.*)$|/\* WARNING: raptor_identifier_type. Removed several enum values to leave just URI, blank and literal types. \*/ ${1}raptor_term_type${3}|g;
+s|^(.*)(raptor_iostream_handler2)(.*)$|/\* WARNING: raptor_iostream_handler2. \*/ ${1}raptor_iostream_handler${3}|g;
+s|^(.*)(raptor_iostream_write_end_func)(.*)$|/\* WARNING: raptor_iostream_write_end_func. handler returns an int \*/ ${1}raptor_iostream_write_end_func${3}|g;
+s|^(.*)(raptor_log_level)(.*)$|/\* WARNING: raptor_log_level. Added RAPTOR_LOG_LEVEL_TRACE, RAPTOR_LOG_LEVEL_DEBUG, RAPTOR_LOG_LEVEL_INFO. RAPTOR_LOG_LEVEL_WARNING renamed RAPTOR_LOG_LEVEL_WARN \*/ ${1}raptor_log_level${3}|g;
+s|^(.*)(raptor_sequence_free_function)(.*)$|/\* WARNING: raptor_sequence_free_function. \*/ ${1}raptor_data_free_handler${3}|g;
+s|^(.*)(raptor_sequence_free_handler_v2)(.*)$|/\* WARNING: raptor_sequence_free_handler_v2. \*/ ${1}raptor_data_context_free_handler${3}|g;
+s|^(.*)(raptor_sequence_print_handler)(.*)$|/\* WARNING: raptor_sequence_print_handler. \*/ ${1}raptor_data_print_handler${3}|g;
+s|^(.*)(raptor_sequence_print_handler_v2)(.*)$|/\* WARNING: raptor_sequence_print_handler_v2. \*/ ${1}raptor_data_context_print_handler${3}|g;
+s|^(.*)(raptor_simple_message_handler)(.*)$|/\* WARNING: raptor_simple_message_handler. Replaced by generic raptor log mechanism. See raptor_world_set_log_handler() \*/ ${1}raptor_log_handler${3}|g;
+s|^(.*)(raptor_statement)(.*)$|/\* WARNING: raptor_statement. fields changed to use #raptor_term \*/ ${1}raptor_statement${3}|g;
+s|^(.*)(raptor_statement_handler)(.*)$|/\* WARNING: raptor_statement_handler. added const \*/ ${1}raptor_statement_handler${3}|g;
+s|^(.*)(raptor_statement_v2)(.*)$|/\* WARNING: raptor_statement_v2. Fields changed to be a 3 or 4 tuple of #raptor_term \*/ ${1}raptor_statement${3}|g;
+# Perl script to upgrade raptor2 2.0.3 to 2.0.4
+
+
+# Replace statement fields with term fields.
+s|->object|->object.value.uri or object.value.literal.string or object.value.blank.string /* WARNING: must choose one */|g;
+s|->subject_type|->subject.type|g;
+s|->object_type|->object.type|g;
+s|->predicate|->predicate.value.uri|g;
+s|->object_literal_datatype|->object.value.literal.datatype|g;
+s|->predicate_type|->predicate.type|g;
+s|->subject|->subject.value.uri or subject.value.blank.string /* WARNING: must choose one */|g;
+s|->object_literal_language|->object.value.literal.language|g;
+
+
+# Deleted functions
+
+# Deleted types
+
+# Deleted enums
+
+# Renamed functions
+
+# Renamed enums
+
+# Changed functions
+
+# Changed types
+# Perl script to upgrade raptor2 2.0.4 to 2.0.5
+
+
+# Replace statement fields with term fields.
+s|->object|->object.value.uri or object.value.literal.string or object.value.blank.string /* WARNING: must choose one */|g;
+s|->subject_type|->subject.type|g;
+s|->object_type|->object.type|g;
+s|->predicate|->predicate.value.uri|g;
+s|->object_literal_datatype|->object.value.literal.datatype|g;
+s|->predicate_type|->predicate.type|g;
+s|->subject|->subject.value.uri or subject.value.blank.string /* WARNING: must choose one */|g;
+s|->object_literal_language|->object.value.literal.language|g;
+
+
+# Deleted functions
+
+# Deleted types
+
+# Deleted enums
+
+# Renamed functions
+
+# Renamed enums
+
+# Changed functions
+
+# Changed types
+# Perl script to upgrade raptor2 2.0.5 to 2.0.6
+
+
+# Replace statement fields with term fields.
+s|->object|->object.value.uri or object.value.literal.string or object.value.blank.string /* WARNING: must choose one */|g;
+s|->subject_type|->subject.type|g;
+s|->object_type|->object.type|g;
+s|->predicate|->predicate.value.uri|g;
+s|->object_literal_datatype|->object.value.literal.datatype|g;
+s|->predicate_type|->predicate.type|g;
+s|->subject|->subject.value.uri or subject.value.blank.string /* WARNING: must choose one */|g;
+s|->object_literal_language|->object.value.literal.language|g;
+
+
+# Deleted functions
+
+# Deleted types
+
+# Deleted enums
+
+# Renamed functions
+
+# Renamed enums
+
+# Changed functions
+
+# Changed types
+# Perl script to upgrade raptor2 2.0.6 to 2.0.7
+
+
+# Replace statement fields with term fields.
+s|->object|->object.value.uri or object.value.literal.string or object.value.blank.string /* WARNING: must choose one */|g;
+s|->subject_type|->subject.type|g;
+s|->object_type|->object.type|g;
+s|->predicate|->predicate.value.uri|g;
+s|->object_literal_datatype|->object.value.literal.datatype|g;
+s|->predicate_type|->predicate.type|g;
+s|->subject|->subject.value.uri or subject.value.blank.string /* WARNING: must choose one */|g;
+s|->object_literal_language|->object.value.literal.language|g;
+
+
+# Deleted functions
+
+# Deleted types
+
+# Deleted enums
+
+# Renamed functions
+
+# Renamed enums
+
+# Changed functions
+
+# Changed types
+# Perl script to upgrade raptor2 2.0.7 to 2.0.8
+
+
+# Replace statement fields with term fields.
+s|->object|->object.value.uri or object.value.literal.string or object.value.blank.string /* WARNING: must choose one */|g;
+s|->subject_type|->subject.type|g;
+s|->object_type|->object.type|g;
+s|->predicate|->predicate.value.uri|g;
+s|->object_literal_datatype|->object.value.literal.datatype|g;
+s|->predicate_type|->predicate.type|g;
+s|->subject|->subject.value.uri or subject.value.blank.string /* WARNING: must choose one */|g;
+s|->object_literal_language|->object.value.literal.language|g;
+
+
+# Deleted functions
+
+# Deleted types
+
+# Deleted enums
+
+# Renamed functions
+
+# Renamed enums
+
+# Changed functions
+
+# Changed types
diff --git a/docs/version.xml b/docs/version.xml
new file mode 100644
index 0000000..815e68d
--- /dev/null
+++ b/docs/version.xml
@@ -0,0 +1 @@
+2.0.8
diff --git a/docs/version.xml.in b/docs/version.xml.in
new file mode 100644
index 0000000..d78bda9
--- /dev/null
+++ b/docs/version.xml.in
@@ -0,0 +1 @@
+@VERSION@
diff --git a/examples/Makefile.am b/examples/Makefile.am
new file mode 100644
index 0000000..91c1524
--- /dev/null
+++ b/examples/Makefile.am
@@ -0,0 +1,69 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor examples
+#
+# Copyright (C) 2003-2010, David Beckett http://www.dajobe.org/
+# Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+EXTRA_PROGRAMS = raptor_abort grapper rdfcat rdfprint rdfserialize rdfguess
+
+examples: $(EXTRA_PROGRAMS)
+
+CLEANFILES = $(EXTRA_PROGRAMS)
+
+AM_CFLAGS=$(MEM)
+AM_LDFLAGS=$(MEM_LIBS)
+AM_CPPFLAGS=-I$(top_srcdir)/src
+
+raptor_abort_SOURCES = raptor_abort.c
+raptor_abort_LDADD=$(top_builddir)/src/libraptor2.la
+raptor_abort_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+
+grapper_SOURCES = grapper.c
+grapper_LDADD=$(top_builddir)/src/libraptor2.la
+grapper_CFLAGS=`pkg-config --cflags gtk+-2.0 gconf-2.0`
+grapper_LDFLAGS=`pkg-config --libs gtk+-2.0 gconf-2.0`
+grapper_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+
+rdfcat_SOURCES = rdfcat.c
+rdfcat_LDADD=$(top_builddir)/src/libraptor2.la
+rdfcat_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+
+rdfprint_SOURCES = rdfprint.c
+rdfprint_LDADD=$(top_builddir)/src/libraptor2.la
+rdfprint_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+
+rdfserialize_SOURCES = rdfserialize.c
+rdfserialize_LDADD=$(top_builddir)/src/libraptor2.la
+rdfserialize_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+
+rdfguess_SOURCES = rdfguess.c
+rdfguess_LDADD=$(top_builddir)/src/libraptor2.la
+rdfguess_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+
+
+$(top_builddir)/src/libraptor2.la:
+ cd $(top_builddir)/src && $(MAKE) libraptor2.la
+
+$(top_builddir)/../librdf/librdf.la:
+ cd $(top_builddir)/../librdf && $(MAKE) librdf.la
+
+grapper-future:
+ $(MAKE) clean
+ $(MAKE) grapper CC="$(CC) -DGTK_DISABLE_DEPRECATED" V=1
diff --git a/examples/Makefile.in b/examples/Makefile.in
new file mode 100644
index 0000000..fef1e3a
--- /dev/null
+++ b/examples/Makefile.in
@@ -0,0 +1,647 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor examples
+#
+# Copyright (C) 2003-2010, David Beckett http://www.dajobe.org/
+# Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+EXTRA_PROGRAMS = raptor_abort$(EXEEXT) grapper$(EXEEXT) \
+ rdfcat$(EXEEXT) rdfprint$(EXEEXT) rdfserialize$(EXEEXT) \
+ rdfguess$(EXEEXT)
+subdir = examples
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am_grapper_OBJECTS = grapper-grapper.$(OBJEXT)
+grapper_OBJECTS = $(am_grapper_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+grapper_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(grapper_CFLAGS) \
+ $(CFLAGS) $(grapper_LDFLAGS) $(LDFLAGS) -o $@
+am_raptor_abort_OBJECTS = raptor_abort.$(OBJEXT)
+raptor_abort_OBJECTS = $(am_raptor_abort_OBJECTS)
+am_rdfcat_OBJECTS = rdfcat.$(OBJEXT)
+rdfcat_OBJECTS = $(am_rdfcat_OBJECTS)
+am_rdfguess_OBJECTS = rdfguess.$(OBJEXT)
+rdfguess_OBJECTS = $(am_rdfguess_OBJECTS)
+am_rdfprint_OBJECTS = rdfprint.$(OBJEXT)
+rdfprint_OBJECTS = $(am_rdfprint_OBJECTS)
+am_rdfserialize_OBJECTS = rdfserialize.$(OBJEXT)
+rdfserialize_OBJECTS = $(am_rdfserialize_OBJECTS)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
+depcomp = $(SHELL) $(top_srcdir)/build/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(grapper_SOURCES) $(raptor_abort_SOURCES) $(rdfcat_SOURCES) \
+ $(rdfguess_SOURCES) $(rdfprint_SOURCES) \
+ $(rdfserialize_SOURCES)
+DIST_SOURCES = $(grapper_SOURCES) $(raptor_abort_SOURCES) \
+ $(rdfcat_SOURCES) $(rdfguess_SOURCES) $(rdfprint_SOURCES) \
+ $(rdfserialize_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+CLEANFILES = $(EXTRA_PROGRAMS)
+AM_CFLAGS = $(MEM)
+AM_LDFLAGS = $(MEM_LIBS)
+AM_CPPFLAGS = -I$(top_srcdir)/src
+raptor_abort_SOURCES = raptor_abort.c
+raptor_abort_LDADD = $(top_builddir)/src/libraptor2.la
+raptor_abort_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+grapper_SOURCES = grapper.c
+grapper_LDADD = $(top_builddir)/src/libraptor2.la
+grapper_CFLAGS = `pkg-config --cflags gtk+-2.0 gconf-2.0`
+grapper_LDFLAGS = `pkg-config --libs gtk+-2.0 gconf-2.0`
+grapper_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+rdfcat_SOURCES = rdfcat.c
+rdfcat_LDADD = $(top_builddir)/src/libraptor2.la
+rdfcat_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+rdfprint_SOURCES = rdfprint.c
+rdfprint_LDADD = $(top_builddir)/src/libraptor2.la
+rdfprint_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+rdfserialize_SOURCES = rdfserialize.c
+rdfserialize_LDADD = $(top_builddir)/src/libraptor2.la
+rdfserialize_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+rdfguess_SOURCES = rdfguess.c
+rdfguess_LDADD = $(top_builddir)/src/libraptor2.la
+rdfguess_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu examples/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+grapper$(EXEEXT): $(grapper_OBJECTS) $(grapper_DEPENDENCIES) $(EXTRA_grapper_DEPENDENCIES)
+ @rm -f grapper$(EXEEXT)
+ $(AM_V_CCLD)$(grapper_LINK) $(grapper_OBJECTS) $(grapper_LDADD) $(LIBS)
+raptor_abort$(EXEEXT): $(raptor_abort_OBJECTS) $(raptor_abort_DEPENDENCIES) $(EXTRA_raptor_abort_DEPENDENCIES)
+ @rm -f raptor_abort$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(raptor_abort_OBJECTS) $(raptor_abort_LDADD) $(LIBS)
+rdfcat$(EXEEXT): $(rdfcat_OBJECTS) $(rdfcat_DEPENDENCIES) $(EXTRA_rdfcat_DEPENDENCIES)
+ @rm -f rdfcat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rdfcat_OBJECTS) $(rdfcat_LDADD) $(LIBS)
+rdfguess$(EXEEXT): $(rdfguess_OBJECTS) $(rdfguess_DEPENDENCIES) $(EXTRA_rdfguess_DEPENDENCIES)
+ @rm -f rdfguess$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rdfguess_OBJECTS) $(rdfguess_LDADD) $(LIBS)
+rdfprint$(EXEEXT): $(rdfprint_OBJECTS) $(rdfprint_DEPENDENCIES) $(EXTRA_rdfprint_DEPENDENCIES)
+ @rm -f rdfprint$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rdfprint_OBJECTS) $(rdfprint_LDADD) $(LIBS)
+rdfserialize$(EXEEXT): $(rdfserialize_OBJECTS) $(rdfserialize_DEPENDENCIES) $(EXTRA_rdfserialize_DEPENDENCIES)
+ @rm -f rdfserialize$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rdfserialize_OBJECTS) $(rdfserialize_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grapper-grapper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_abort.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdfcat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdfguess.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdfprint.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdfserialize.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+grapper-grapper.o: grapper.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(grapper_CFLAGS) $(CFLAGS) -MT grapper-grapper.o -MD -MP -MF $(DEPDIR)/grapper-grapper.Tpo -c -o grapper-grapper.o `test -f 'grapper.c' || echo '$(srcdir)/'`grapper.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/grapper-grapper.Tpo $(DEPDIR)/grapper-grapper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='grapper.c' object='grapper-grapper.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(grapper_CFLAGS) $(CFLAGS) -c -o grapper-grapper.o `test -f 'grapper.c' || echo '$(srcdir)/'`grapper.c
+
+grapper-grapper.obj: grapper.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(grapper_CFLAGS) $(CFLAGS) -MT grapper-grapper.obj -MD -MP -MF $(DEPDIR)/grapper-grapper.Tpo -c -o grapper-grapper.obj `if test -f 'grapper.c'; then $(CYGPATH_W) 'grapper.c'; else $(CYGPATH_W) '$(srcdir)/grapper.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/grapper-grapper.Tpo $(DEPDIR)/grapper-grapper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='grapper.c' object='grapper-grapper.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(grapper_CFLAGS) $(CFLAGS) -c -o grapper-grapper.obj `if test -f 'grapper.c'; then $(CYGPATH_W) 'grapper.c'; else $(CYGPATH_W) '$(srcdir)/grapper.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+
+examples: $(EXTRA_PROGRAMS)
+
+$(top_builddir)/src/libraptor2.la:
+ cd $(top_builddir)/src && $(MAKE) libraptor2.la
+
+$(top_builddir)/../librdf/librdf.la:
+ cd $(top_builddir)/../librdf && $(MAKE) librdf.la
+
+grapper-future:
+ $(MAKE) clean
+ $(MAKE) grapper CC="$(CC) -DGTK_DISABLE_DEPRECATED" V=1
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/grapper.c b/examples/grapper.c
new file mode 100644
index 0000000..317b72b
--- /dev/null
+++ b/examples/grapper.c
@@ -0,0 +1,1327 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * grapper.c - Raptor GTK GUI example code
+ *
+ * Copyright (C) 2003-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ * Requires GTK 2.5.0+
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#include <unistd.h>
+
+/* for the memory allocation functions */
+#if defined(HAVE_DMALLOC_H) && defined(RAPTOR_MEMORY_DEBUG_DMALLOC)
+#include <dmalloc.h>
+#endif
+
+/* Raptor includes */
+#include <raptor2.h>
+
+/* Gtk 2.0 */
+#include <gtk/gtk.h>
+
+/* Gconf */
+#include <gconf/gconf.h>
+#include <gconf/gconf-client.h>
+
+#if GTK_CHECK_VERSION(2,5,0)
+#else
+#error "Requires GTK 2.5.0+"
+#endif
+
+/* Qnames button does nothing */
+#undef GRAPPER_QNAMES
+
+/* GtkUIManager and external XML file is too damn complex to make work */
+#ifdef GTK_DISABLE_DEPRECATED
+/* GtkItemFactory was deprecated in GTK+ 2.4 */
+#undef ITEM_FACTORY
+/* GtkToolTips was deprecated in GTK+ 2.12 */
+#undef TOOL_TIPS
+#else
+#define ITEM_FACTORY 1
+#define TOOL_TIPS 1
+#endif
+
+static const char *application_name = "Grapper";
+static const char *application_title = "Grapper GUI RDF Parser Utility";
+static const char *application_description = "GUI RDF parser utility based on the Raptor RDF parsing library";
+
+
+/* Top level window */
+static GtkWidget *grapper_window;
+
+
+/* GConf */
+static GConfClient *gconf_client = NULL;
+
+#define GCONF_GRAPPER_NAMESPACE "/apps/grapper"
+
+/* configuration dir listened to */
+static const gchar* gconf_namespace= GCONF_GRAPPER_NAMESPACE;
+
+/* window width key */
+static const gchar* width_gconf_key = (const gchar*) GCONF_GRAPPER_NAMESPACE "/width";
+/* window height key */
+static const gchar* height_gconf_key = (const gchar*) GCONF_GRAPPER_NAMESPACE "/height";
+
+#define MIN_WINDOW_WIDTH 400
+#define MIN_WINDOW_HEIGHT 300
+
+
+typedef struct
+{
+ raptor_world* world;
+ /* model data */
+#ifdef GRAPPER_QNAMES
+ int qnames;
+#endif
+ int guess;
+ unsigned int syntax;
+
+ int options[RAPTOR_OPTION_LAST];
+ int options_set[RAPTOR_OPTION_LAST];
+ int ignore_warnings;
+
+ unsigned char *url;
+
+ /* last picked filename or NULL */
+ gchar *filename;
+
+ /* GList *triples_list; */
+ int triples_count;
+ int warnings_count;
+ int errors_count;
+ gchar *error;
+
+ /* view/controller data */
+ GtkWidget *window;
+ GtkWidget *v_box;
+ GtkWidget *url_entry;
+ GtkListStore *triples_store;
+ GtkWidget *file_selection;
+ GtkWidget *status;
+ GtkWidget *triples_frame;
+ GtkWidget *errors_frame;
+ GtkListStore *errors_store;
+
+} grapper_state;
+
+
+typedef struct
+{
+ grapper_state* state;
+ int option;
+} grapper_widget_data;
+
+
+enum {
+ SUBJECT_COLUMN,
+ PREDICATE_COLUMN,
+ OBJECT_COLUMN,
+ N_COLUMNS
+};
+
+
+/* Local prototypes */
+static void grapper_model_parse(grapper_state *state);
+
+
+static void
+grapper_view_url_changed(grapper_state *state)
+{
+ GtkWidget *url_entry=state->url_entry;
+
+ gtk_entry_set_text(GTK_ENTRY(url_entry), (const gchar*)state->url);
+}
+
+#ifdef GRAPPER_QNAMES
+static void
+grapper_view_qnames_changed(grapper_state *state)
+{
+
+}
+#endif
+
+static void
+grapper_view_guess_changed(grapper_state *state)
+{
+
+}
+
+static void
+grapper_view_option_changed(grapper_state *state, int option)
+{
+
+}
+
+static void
+grapper_view_syntax_changed(grapper_state *state)
+{
+
+}
+
+static void
+grapper_view_set_triples_count(grapper_state *state, int count)
+{
+#define TC_BUF_LEN 18
+ char buf[TC_BUF_LEN+1];
+ if(count>0)
+ snprintf(buf, TC_BUF_LEN, "Triples: %d", count);
+ else
+ strcpy(buf, "Triples");
+
+ gtk_frame_set_label(GTK_FRAME(state->triples_frame), buf);
+}
+
+static void
+grapper_view_add_triple(grapper_state *state, unsigned char* nodes[3], int i)
+{
+ GtkListStore *store=state->triples_store;
+ GtkTreeIter iter;
+
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ SUBJECT_COLUMN, nodes[0],
+ PREDICATE_COLUMN, nodes[1],
+ OBJECT_COLUMN, nodes[2],
+ -1);
+}
+
+static void
+grapper_view_empty_triples(grapper_state *state)
+{
+ gtk_list_store_clear(state->triples_store);
+ gtk_list_store_clear(state->errors_store);
+}
+
+
+static void
+grapper_view_reset_status(grapper_state *state)
+{
+ gtk_list_store_clear(state->errors_store);
+}
+
+
+static void
+grapper_view_update_error_count(grapper_state *state)
+{
+#define EC_BUF_LEN 18
+ char buf[EC_BUF_LEN+1];
+ int count=state->errors_count;
+
+ if(count>0)
+ snprintf(buf, EC_BUF_LEN, "Errors: %d", count);
+ else
+ strcpy(buf, "Errors");
+
+ gtk_frame_set_label(GTK_FRAME(state->errors_frame), buf);
+}
+
+
+static void
+grapper_view_add_error_message(grapper_state *state, gchar *error,
+ raptor_locator *locator, int is_error)
+{
+ if(error) {
+ GtkListStore *store = state->errors_store;
+ GtkTreeIter iter;
+ int line = (locator && locator->line >= 0) ? locator->line : 0;
+
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, line,
+ 1, (is_error ? "Error" : "Warning"),
+ 2, error,
+ -1);
+ grapper_view_update_error_count(state);
+ }
+}
+
+
+static void
+grapper_model_add_triple(grapper_state *state, unsigned char *nodes[3])
+{
+ /* g_list_append(state->triples_list, nodes); */
+ state->triples_count++;
+
+ grapper_view_add_triple(state, nodes, state->triples_count-1);
+ grapper_view_set_triples_count(state, state->triples_count);
+}
+
+
+static void
+grapper_model_empty_triples(grapper_state *state)
+{
+ /* g_list_free(state->triples_list); */
+
+ grapper_view_empty_triples(state);
+}
+
+
+static void
+grapper_model_set_url(grapper_state *state, const unsigned char *url)
+{
+ if(state->url) {
+ if(!strcmp((const char*)state->url, (const char*)url))
+ return;
+
+ g_free(state->url);
+ }
+
+ state->url = (unsigned char*)g_strdup((const char*)url);
+ strcpy((char*)state->url, (const char*)url);
+
+ grapper_view_url_changed(state);
+}
+
+
+#ifdef GRAPPER_QNAMES
+static void
+grapper_model_set_qnames (grapper_state *state, int qnames)
+{
+ if(state->qnames == qnames)
+ return;
+
+ state->qnames=qnames;
+ grapper_view_qnames_changed(state);
+}
+#endif
+
+
+static void
+grapper_model_set_guess (grapper_state *state, int guess)
+{
+ if(state->guess == guess)
+ return;
+
+ state->guess=guess;
+ grapper_view_guess_changed(state);
+}
+
+static void
+grapper_model_set_option(grapper_state *state, int option, int value)
+{
+ if(state->options[option] == value)
+ return;
+
+ state->options[option] = value;
+ state->options_set[option] = 1;
+ grapper_view_option_changed(state, option);
+}
+
+
+static void
+grapper_model_set_syntax (grapper_state *state, unsigned int syntax)
+{
+ if(state->syntax == syntax)
+ return;
+
+ state->syntax=syntax;
+ grapper_view_syntax_changed(state);
+}
+
+
+static void
+grapper_model_reset_counts(grapper_state *state)
+{
+ state->triples_count = 0;
+ state->warnings_count = 0;
+ state->errors_count = 0;
+ grapper_view_update_error_count(state);
+}
+
+
+static void
+grapper_model_reset_error(grapper_state *state)
+{
+ if(state->error) {
+ g_free(state->error);
+ state->error = NULL;
+ }
+ grapper_view_reset_status(state);
+}
+
+
+static void
+grapper_model_log_handler(void *data, raptor_log_message *message)
+{
+ grapper_state* state = (grapper_state*)data;
+
+ if(message->level >= RAPTOR_LOG_LEVEL_ERROR) {
+ state->errors_count++;
+
+ if(state->error)
+ g_free(state->error);
+
+ state->error = g_strdup(message->text);
+
+ grapper_view_add_error_message(state, state->error, message->locator, 1);
+ } else {
+ state->warnings_count++;
+
+ if(state->ignore_warnings)
+ return;
+
+ if(state->error)
+ g_free(state->error);
+
+ state->error = g_strdup(message->text);
+
+ grapper_view_add_error_message(state, state->error, message->locator, 0);
+ }
+}
+
+
+static void
+grapper_model_statements_handler(void *data, raptor_statement *statement)
+{
+ grapper_state* state = (grapper_state*)data;
+ unsigned char* nodes[3];
+
+ nodes[0] = raptor_term_to_string(statement->subject);
+ nodes[1] = raptor_term_to_string(statement->predicate);
+ nodes[2] = raptor_term_to_string(statement->object);
+
+ grapper_model_add_triple(state, nodes);
+ free(nodes[0]);
+ free(nodes[1]);
+ free(nodes[2]);
+}
+
+
+static void
+grapper_model_parse(grapper_state *state)
+{
+ raptor_uri* uri;
+ raptor_parser* rdf_parser;
+ const char *syntax_name;
+ int i;
+ const raptor_syntax_description* sd;
+
+ if(!state->url)
+ return;
+
+ grapper_model_empty_triples(state);
+
+ grapper_model_reset_counts(state);
+ grapper_model_reset_error(state);
+
+ uri = raptor_new_uri(state->world, state->url);
+ sd = raptor_world_get_parser_description(state->world, state->syntax);
+ syntax_name = sd->names[0];
+
+
+ if(state->guess) {
+ rdf_parser = raptor_new_parser_for_content(state->world, NULL, NULL, NULL,
+ 0, state->url);
+ if(!rdf_parser) {
+ fprintf(stderr, "Failed to create guessed raptor parser from uri %s\n",
+ state->url);
+ exit(1);
+ }
+
+ fprintf(stdout, "Guessed parser name '%s' from uri %s\n",
+ raptor_parser_get_name(rdf_parser), state->url);
+ } else {
+ rdf_parser = raptor_new_parser(state->world, syntax_name);
+ }
+
+
+ for(i = 0; i <= RAPTOR_OPTION_LAST; i++) {
+ if(state->options_set[i])
+ raptor_parser_set_option(rdf_parser, (raptor_option)i, NULL, state->options[i]);
+ }
+
+ raptor_world_set_log_handler(state->world, state, grapper_model_log_handler);
+ raptor_parser_set_statement_handler(rdf_parser, state,
+ grapper_model_statements_handler);
+
+ raptor_parser_parse_uri(rdf_parser, uri, NULL);
+
+ raptor_free_parser(rdf_parser);
+ raptor_free_uri(uri);
+}
+
+
+
+/* go button clicked / url entry activated callback */
+static void
+url_entry_callback(GtkWidget *widget, gpointer data)
+{
+ grapper_state* state = (grapper_state*)data;
+ GtkWidget *url_entry = state->url_entry;
+ const unsigned char* url;
+
+ url = (const unsigned char*)gtk_entry_get_text(GTK_ENTRY(url_entry));
+ grapper_model_set_url(state, url);
+ grapper_model_parse(state);
+}
+
+
+/* open action wanted */
+static void
+do_open_action(grapper_state* state)
+{
+ unsigned char *uri_string;
+ GtkWidget *files = gtk_file_chooser_dialog_new("Open",
+ GTK_WINDOW(state->window),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ if(state->filename)
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(files), state->filename);
+
+ if (gtk_dialog_run(GTK_DIALOG (files)) == GTK_RESPONSE_ACCEPT) {
+ state->filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(files));
+ uri_string = (unsigned char*)gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(files));
+ grapper_model_set_url(state, uri_string);
+ g_free(uri_string);
+
+ grapper_model_parse(state);
+ }
+ gtk_widget_destroy(files);
+}
+
+
+/* quit callback */
+static void
+do_quit_action(grapper_state* state)
+{
+ gtk_main_quit();
+}
+
+
+/* preferences option menu item toggled callback */
+static void
+option_menu_toggled(GtkCheckMenuItem *checkmenuitem, gpointer data)
+{
+ grapper_widget_data* sbdata = (grapper_widget_data*)data;
+ int active = gtk_check_menu_item_get_active(checkmenuitem);
+
+ grapper_model_set_option(sbdata->state, sbdata->option, active);
+}
+
+
+#ifdef GRAPPER_QNAMES
+/* qnames button clicked callback */
+static void
+qnames_button_callback(GtkWidget *widget, gpointer data)
+{
+ grapper_state* state = (grapper_state*)data;
+ int active = (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget)) != 0);
+
+ grapper_model_set_qnames(state, active);
+}
+#endif
+
+
+/* guess button clicked callback */
+static void
+guess_button_callback(GtkWidget *widget, gpointer data)
+{
+ grapper_state* state = (grapper_state*)data;
+ int active = (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget)) != 0);
+
+ grapper_model_set_guess(state, active);
+}
+
+
+/* syntax menu changed callback */
+static void
+syntax_menu_callback(GtkWidget *widget, gpointer data)
+{
+ grapper_state* state = (grapper_state*)data;
+ unsigned int syntax;
+
+ syntax = (unsigned int)gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+
+ grapper_model_set_syntax(state, syntax);
+}
+
+
+/* delete (window) event callback */
+static gboolean
+delete_event_callback(GtkWidget *widget, GdkEvent *event, gpointer data)
+{
+ return FALSE; /* continue normal event handing */
+}
+
+
+/* destroy callback */
+static void
+destroy_callback(GtkWidget *widget, gpointer data)
+{
+ gtk_main_quit ();
+}
+
+
+#ifdef ITEM_FACTORY
+static void
+open_menu_callback(gpointer user_data, guint action, GtkWidget *widget)
+{
+ do_open_action((grapper_state*)user_data);
+}
+#else
+static void
+on_open_menu_callback(GtkAction *action, gpointer user_data)
+{
+ do_open_action((grapper_state*)user_data);
+}
+#endif
+
+
+#ifdef ITEM_FACTORY
+static void
+quit_menu_callback(gpointer user_data, guint action, GtkWidget *widget)
+{
+ do_quit_action((grapper_state*)user_data);
+}
+#else
+static void
+on_quit_menu_callback(GtkAction *action, gpointer user_data)
+{
+ do_quit_action((grapper_state*)user_data);
+}
+#endif
+
+
+static void
+do_about_action(grapper_state* state) {
+ const gchar* authors[2]= { "Dave Beckett http://www.dajobe.org/", NULL };
+
+#if 1
+ /* using 2.5.x+ stock about dialog */
+ gtk_show_about_dialog(GTK_WINDOW(state->window),
+ "authors", authors,
+ "comments", application_description,
+ "copyright", raptor_short_copyright_string,
+ "license", raptor_license_string,
+ "name", application_name,
+ "version", raptor_version_string,
+ "website", raptor_home_url_string,
+ "website-label", "Raptor",
+ NULL);
+#else
+ /* using 2.5.x+ by hand about */
+ GtkWidget *about;
+
+ about = gtk_about_dialog_new();
+ gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about), application_name);
+ gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about), raptor_version_string);
+ gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about),
+ raptor_short_copyright_string);
+ gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(about),
+ application_description);
+ gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(about), raptor_license_string);
+ gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(about), raptor_home_url_string);
+ gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(about), "Raptor");
+ gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(about), authors);
+
+ gtk_widget_show_all(about);
+#endif
+}
+
+
+#ifdef ITEM_FACTORY
+static void
+about_menu_callback(gpointer user_data, guint action, GtkWidget *widget)
+{
+ do_about_action((grapper_state*)user_data);
+}
+#else
+static void
+on_about_menu_callback(GtkAction* action, gpointer user_data)
+{
+ do_about_action((grapper_state*)user_data);
+}
+#endif
+
+
+#ifdef ITEM_FACTORY
+static GtkItemFactoryEntry menu_item_factory_entries[] = {
+ /* path, accelerator, callback, callback_action, item_type, extra_data */
+ { (gchar*)"/_File", NULL, NULL, 0, (gchar*)"<Branch>" },
+ { (gchar*)"/File/_Open...", (gchar*)"<CTRL>O", (GtkItemFactoryCallback)open_menu_callback, 1, (gchar*)"<StockItem>", GTK_STOCK_OPEN },
+ { (gchar*)"/File/sep1", NULL, NULL, 0, (gchar*)"<Separator>" },
+ { (gchar*)"/File/_Quit", (gchar*)"<CTRL>Q", (GtkItemFactoryCallback)quit_menu_callback, 1, (gchar*)"<StockItem>", GTK_STOCK_QUIT },
+ { (gchar*)"/_Preferences", NULL, NULL, 0, (gchar*)"<Branch>" },
+ { (gchar*)"/_Help", NULL, NULL, 0, (gchar*)"<LastBranch>" },
+ { (gchar*)"/Help/About", NULL, (GtkItemFactoryCallback)about_menu_callback, 1, (gchar*)"<Item>" }
+};
+
+static gint menu_item_factory_nentries = sizeof(menu_item_factory_entries) / sizeof(menu_item_factory_entries[0]);
+#else
+static GtkActionEntry menu_actions[] = {
+ /* name, stock id, label */
+ { "FileMenuAction", NULL, "_File" },
+ { "PreferencesMenuAction", NULL, "_Preferences" },
+ { "HelpMenuAction", NULL, "_Help" },
+
+ /* name, stock id, label, accelerator, tooltip, callback */
+ { "OpenAction", GTK_STOCK_OPEN, "_Open", (gchar*)"<control>O", "Open a file", G_CALLBACK ( on_open_menu_callback ) },
+ { "QuitAction", GTK_STOCK_QUIT, "_Quit", (gchar*)"<control>Q", "Quit", G_CALLBACK ( on_quit_menu_callback ) },
+
+ { "AboutAction", GTK_STOCK_ABOUT, NULL, NULL, "About", G_CALLBACK ( on_about_menu_callback ) }
+};
+
+static gint menu_actions_nentries = G_N_ELEMENTS (menu_actions);
+#endif
+
+
+static void
+init_grapper_window(GtkWidget *window, grapper_state *state)
+{
+
+ GtkAccelGroup *accel_group;
+ GtkWidget *menu_bar;
+ GtkMenu *prefs_menu;
+ GtkWidget *v_paned;
+ GtkWidget *v_box;
+ GtkWidget *box;
+ GtkWidget *go_button;
+ GtkWidget* option_items[RAPTOR_OPTION_LAST];
+#ifdef GRAPPER_QNAMES
+ GtkWidget *qnames_button;
+#endif
+ GtkWidget *guess_button;
+ GtkWidget *syntax_combo_box;
+ GtkWidget *url_entry;
+ GtkWidget *triples_frame, *prefs_frame;
+ GtkWidget *triples_scrolled_window;
+ GtkWidget *triples_treeview;
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+#ifdef GRAPPER_QNAMES
+ GtkTooltips *qnames_tooltips;
+#endif
+#ifdef TOOL_TIPS
+ GtkTooltips *guess_tooltips;
+ GtkTooltips *syntax_tooltips;
+#else
+#endif
+ GtkWidget *prefs_box;
+ GtkListStore *store;
+ int i;
+ GtkWidget *errors_frame, *errors_scrolled_window;
+ GtkWidget *errors_treeview;
+ GtkListStore *errors_store;
+#ifdef SYNTAX_LIST_STORE
+ GtkListStore *syntax_list_store;
+ GtkTreeIter iter;
+ GtkCellRenderer* cell;
+#endif
+#ifdef ITEM_FACTORY
+ GtkItemFactory* menu_item_factory;
+#else
+ GtkActionGroup *action_group;
+ GtkUIManager *menu_manager;
+ GError *error;
+#endif
+
+
+ state->window=window;
+
+ /* connect window delete event to callback */
+ g_signal_connect (G_OBJECT (window), "delete_event",
+ G_CALLBACK (delete_event_callback), NULL);
+
+ /* connect window destroy event to callback */
+ g_signal_connect (G_OBJECT (window), "destroy",
+ G_CALLBACK (destroy_callback), NULL);
+
+
+
+ /* vertical box */
+ v_box = gtk_vbox_new (FALSE, 0);
+
+ /* gtk_container_set_border_width (GTK_CONTAINER (v_box), 10); */
+
+ state->v_box = v_box;
+
+
+ /* acceleration group for menu bar*/
+ accel_group = gtk_accel_group_new();
+
+
+ /* Menu bar */
+#ifdef ITEM_FACTORY
+ menu_item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR,
+ "<Main>", accel_group);
+ gtk_item_factory_create_items(menu_item_factory,
+ menu_item_factory_nentries,
+ menu_item_factory_entries,
+ state);
+ gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
+
+ menu_bar = gtk_item_factory_get_widget (menu_item_factory, "<Main>");
+ gtk_widget_show(menu_bar);
+#else
+ action_group = gtk_action_group_new("Actions");
+ gtk_action_group_add_actions (action_group,
+ menu_actions, menu_actions_nentries,
+ state);
+ menu_manager = gtk_ui_manager_new ();
+ gtk_ui_manager_insert_action_group (menu_manager, action_group, 0);
+ error = NULL;
+ gtk_ui_manager_add_ui_from_file(menu_manager, "grapper-ui.xml", &error);
+ if (error) {
+ g_message ("Building menus failed: %s", error->message);
+ g_error_free (error);
+ }
+
+ /* get the menu bar widget */
+ menu_bar = gtk_ui_manager_get_widget(menu_manager, "/MainMenu");
+#endif
+
+
+ gtk_box_pack_start (GTK_BOX (v_box), menu_bar, FALSE, FALSE, 0);
+
+
+#ifdef ITEM_FACTORY
+#else
+ /* enable keyboard shortcuts */
+ gtk_window_add_accel_group (GTK_WINDOW(window),
+ gtk_ui_manager_get_accel_group (menu_manager));
+#endif
+
+ /* horizontal box for url entry, OK, Open buttons in vertical box (v_box) */
+ box = gtk_hbox_new (FALSE, 0);
+
+
+ /* url text entry in horizontal box */
+ url_entry = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(url_entry), 200);
+ /* connect text entry activate (enter key) callback */
+ g_signal_connect (G_OBJECT(url_entry), "activate",
+ G_CALLBACK(url_entry_callback), state);
+ gtk_editable_set_editable(GTK_EDITABLE(url_entry), TRUE);
+
+ /* pack into the invisible box */
+ gtk_box_pack_start(GTK_BOX(box), url_entry, TRUE, TRUE, 0);
+
+ gtk_widget_show(url_entry);
+ state->url_entry = url_entry;
+
+ /* go button in horizontal box */
+ go_button = gtk_button_new_from_stock(GTK_STOCK_OK);
+
+ /* connect button clicked event to callback */
+ g_signal_connect (G_OBJECT (go_button), "clicked",
+ G_CALLBACK (url_entry_callback), state);
+
+ /* pack into the invisible box */
+ gtk_box_pack_start (GTK_BOX(box), go_button, FALSE, TRUE, 0);
+
+ gtk_widget_show (go_button);
+
+
+ gtk_widget_show (box);
+
+
+ /* add hbox to vbox */
+ gtk_box_pack_start (GTK_BOX (v_box), box, FALSE, FALSE, 0);
+
+
+ /* horizontal box for syntax prefs in vertical box (v_box) */
+ prefs_frame = gtk_frame_new ("RDF Syntax");
+
+ prefs_box = gtk_hbutton_box_new();
+
+ gtk_button_box_set_layout (GTK_BUTTON_BOX(prefs_box), GTK_BUTTONBOX_START);
+
+#ifdef GRAPPER_QNAMES
+ /* qnames button in horizontal box */
+ qnames_button = gtk_check_button_new_with_label ("QNames");
+
+ qnames_tooltips = gtk_tooltips_new ();
+ gtk_tooltips_set_tip (qnames_tooltips, qnames_button,
+ "Display URIs as XML QNames", NULL);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(qnames_button),
+ (state->qnames));
+
+ /* connect button clicked event to callback */
+ g_signal_connect (G_OBJECT (qnames_button), "clicked",
+ G_CALLBACK (qnames_button_callback), state);
+
+ /* pack into the invisible box */
+ gtk_box_pack_start (GTK_BOX(prefs_box), qnames_button, TRUE, TRUE, 0);
+
+ gtk_widget_show (qnames_button);
+#endif
+
+ /* guess button in horizontal box */
+ guess_button = gtk_check_button_new_with_label ("Guess Syntax");
+
+#ifdef TOOL_TIPS
+ guess_tooltips = gtk_tooltips_new ();
+ gtk_tooltips_set_tip (guess_tooltips, guess_button,
+ "Try to guess the syntax from the URI", NULL);
+#else
+ gtk_widget_set_tooltip_text (GTK_WIDGET(guess_button),
+ "Try to guess the syntax from the URI");
+#endif
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(guess_button),
+ (state->guess));
+
+ /* connect button clicked event to callback */
+ g_signal_connect (G_OBJECT (guess_button), "clicked",
+ G_CALLBACK (guess_button_callback), state);
+
+ /* pack into the invisible box */
+ gtk_box_pack_start (GTK_BOX(prefs_box), guess_button, TRUE, TRUE, 0);
+
+ gtk_widget_show (guess_button);
+
+ /* add prefs frame to vbox */
+ gtk_container_add (GTK_CONTAINER(prefs_frame), prefs_box);
+
+ gtk_widget_show (prefs_box);
+
+ /* add prefs frame to start of vbox */
+ gtk_box_pack_start (GTK_BOX (v_box), prefs_frame, FALSE, TRUE, 0);
+
+ gtk_widget_show (prefs_frame);
+
+
+
+ /* paned in vertical box */
+ v_paned = gtk_vpaned_new ();
+
+
+ /* triples frame in vertical paned */
+ triples_frame = gtk_frame_new("Triples");
+ state->triples_frame = triples_frame;
+
+ gtk_paned_pack1 (GTK_PANED (v_paned), triples_frame, TRUE, FALSE);
+ gtk_widget_show (triples_frame);
+
+
+ /* scroll window in triples frame */
+ triples_scrolled_window = gtk_scrolled_window_new(NULL, NULL);
+
+ gtk_container_set_border_width (GTK_CONTAINER(triples_scrolled_window), 10);
+
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(triples_scrolled_window),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+ gtk_container_add (GTK_CONTAINER(triples_frame), triples_scrolled_window);
+ gtk_widget_show (triples_scrolled_window);
+
+ store = gtk_list_store_new (N_COLUMNS,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING);
+ state->triples_store = store;
+
+ triples_treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL(store));
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(triples_treeview), TRUE);
+
+ /* set columns renderer for treeview */
+ renderer = gtk_cell_renderer_text_new ();
+ column = gtk_tree_view_column_new_with_attributes ("Subject",
+ renderer,
+ "text", SUBJECT_COLUMN,
+ NULL);
+ gtk_tree_view_column_set_sort_column_id (column, SUBJECT_COLUMN);
+ gtk_tree_view_column_set_resizable (column, 1);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (triples_treeview), column);
+
+ renderer= gtk_cell_renderer_text_new ();
+ column= gtk_tree_view_column_new_with_attributes ("Predicate",
+ renderer,
+ "text", PREDICATE_COLUMN,
+ NULL);
+ gtk_tree_view_column_set_sort_column_id (column, PREDICATE_COLUMN);
+ gtk_tree_view_column_set_resizable (column, 1);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (triples_treeview), column);
+
+ renderer = gtk_cell_renderer_text_new ();
+ column = gtk_tree_view_column_new_with_attributes ("Object",
+ renderer,
+ "text", OBJECT_COLUMN,
+ NULL);
+ gtk_tree_view_column_set_sort_column_id (column, OBJECT_COLUMN);
+ gtk_tree_view_column_set_resizable (column, 1);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (triples_treeview), column);
+
+
+ /* pack the store into the scrolled window */
+ gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(triples_scrolled_window),
+ triples_treeview);
+ gtk_widget_show(triples_treeview);
+
+
+ /* errors frame in vertical paned */
+ errors_frame = gtk_frame_new ("Errors");
+ state->errors_frame = errors_frame;
+
+ gtk_paned_pack2 (GTK_PANED (v_paned), errors_frame, TRUE, FALSE);
+ gtk_widget_show (errors_frame);
+
+
+ gtk_box_pack_start (GTK_BOX (v_box), v_paned, TRUE, TRUE, 0);
+ gtk_widget_show (v_paned);
+
+
+ /* scroll window in errors frame */
+ errors_scrolled_window = gtk_scrolled_window_new(NULL, NULL);
+
+ gtk_container_set_border_width (GTK_CONTAINER(errors_scrolled_window), 10);
+
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(errors_scrolled_window),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+ gtk_container_add (GTK_CONTAINER(errors_frame), errors_scrolled_window);
+ gtk_widget_show (errors_scrolled_window);
+
+ errors_store = gtk_list_store_new (3,
+ G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING);
+ state->errors_store = errors_store;
+
+ errors_treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL(errors_store));
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(errors_treeview), TRUE);
+
+ renderer = gtk_cell_renderer_text_new ();
+ column = gtk_tree_view_column_new_with_attributes ("Line",
+ renderer,
+ "text", 0,
+ NULL);
+ gtk_tree_view_column_set_resizable (column, 1);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (errors_treeview), column);
+
+ renderer = gtk_cell_renderer_text_new ();
+ column = gtk_tree_view_column_new_with_attributes ("Type",
+ renderer,
+ "text", 1,
+ NULL);
+ gtk_tree_view_column_set_resizable (column, 1);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (errors_treeview), column);
+
+ renderer = gtk_cell_renderer_text_new ();
+ column = gtk_tree_view_column_new_with_attributes ("Message",
+ renderer,
+ "text", 2,
+ NULL);
+ gtk_tree_view_column_set_resizable (column, 1);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (errors_treeview), column);
+
+#ifdef TOOL_TIPS
+ gtk_tooltips_set_tip (gtk_tooltips_new (), errors_treeview,
+ "Errors and warnings from parsing the content.", NULL);
+#else
+ gtk_widget_set_tooltip_text (GTK_WIDGET(errors_treeview),
+ "Errors and warnings from parsing the content.");
+#endif
+
+ /* pack the errors store into the errors scrolled window */
+ gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(errors_scrolled_window),
+ errors_treeview);
+ gtk_widget_show (errors_treeview);
+
+
+
+
+#ifdef ITEM_FACTORY
+ prefs_menu = GTK_MENU(gtk_item_factory_get_widget (menu_item_factory,
+ "/Preferences"));
+#else
+ prefs_menu = GTK_MENU(gtk_ui_manager_get_widget (menu_manager,
+ "/MainMenu/PreferencesMenu"));
+#endif
+
+ /* options in the preferences menu */
+ for(i = 0; i <= RAPTOR_OPTION_LAST; i++) {
+ grapper_widget_data* sbdata;
+ raptor_option_description* od;
+
+ od = raptor_world_get_option_description(state->world,
+ RAPTOR_DOMAIN_PARSER,
+ (raptor_option)i);
+ if(!od)
+ break;
+
+ sbdata = (grapper_widget_data*)malloc(sizeof(grapper_widget_data));
+ sbdata->state = state;
+ sbdata->option = i;
+
+ /* add to the preferences menu */
+ option_items[i] = gtk_check_menu_item_new_with_label (od->label);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(option_items[i]),
+ state->options[i]);
+ gtk_menu_shell_append (GTK_MENU_SHELL(prefs_menu), option_items[i]);
+
+ g_signal_connect (G_OBJECT(option_items[i]), "toggled",
+ G_CALLBACK(option_menu_toggled), (gpointer)sbdata);
+ gtk_widget_show (option_items[i]);
+ }
+
+
+ /* syntax button in horizontal box */
+#ifdef SYNTAX_LIST_STORE
+ /* Create combo box with data model behind */
+
+ syntax_list_store = gtk_list_store_new (/* N columns */ 1, G_TYPE_STRING);
+ for(i = 0; 1; i++) {
+ const raptor_syntax_description* sd;
+
+ sd = raptor_world_get_parser_description(state->world, i);
+ if(!sd)
+ break;
+
+ gtk_list_store_append (syntax_list_store, &iter);
+ gtk_list_store_set (syntax_list_store, &iter,
+ /* column */ 0, (const gchar*)sd->label,
+ -1);
+ }
+
+ syntax_combo_box = gtk_combo_box_new_with_model(GTK_TREE_MODEL(syntax_list_store));
+
+ /* Remove our reference to the store to avoid memory leak */
+ g_object_unref ( G_OBJECT (syntax_list_store ) );
+
+ /* Create text cell renderer */
+ cell = gtk_cell_renderer_text_new ();
+
+ /* Pack it to the combo box */
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT ( syntax_combo_box ), cell, TRUE);
+
+ /* Connect renderer to data source: attr "text" is column 0 in data model */
+ gtk_cell_layout_set_attributes ( GTK_CELL_LAYOUT ( syntax_combo_box ),
+ cell,
+ /* attribute */ "text", /* column */ 0,
+ NULL);
+
+#else
+ /* Create combo box using text API */
+ syntax_combo_box = gtk_combo_box_new_text ();
+
+ for(i = 0; 1; i++) {
+ const raptor_syntax_description* sd;
+
+ sd = raptor_world_get_parser_description(state->world, i);
+ if(!sd)
+ break;
+
+ gtk_combo_box_append_text (GTK_COMBO_BOX (syntax_combo_box),
+ (const gchar*)sd->label);
+ }
+#endif
+
+ g_signal_connect (GTK_OBJECT(syntax_combo_box), "changed",
+ G_CALLBACK(syntax_menu_callback), state);
+
+ /* Default is item 0 (should be RDF/XML) */
+ gtk_combo_box_set_active (GTK_COMBO_BOX(syntax_combo_box), 0);
+
+#ifdef TOOL_TIPS
+ syntax_tooltips = gtk_tooltips_new ();
+ gtk_tooltips_set_tip (syntax_tooltips, syntax_combo_box,
+ "Choose the Syntax to parse", NULL);
+#else
+ gtk_widget_set_tooltip_text (GTK_WIDGET(syntax_combo_box),
+ "Choose the Syntax to parse");
+#endif
+
+ /* pack into the invisible box */
+ gtk_box_pack_start (GTK_BOX(prefs_box), syntax_combo_box, TRUE, TRUE, 0);
+
+ gtk_widget_show (syntax_combo_box);
+
+
+ /* add vbox to window */
+ gtk_container_add (GTK_CONTAINER (window), v_box);
+ gtk_widget_show (v_box);
+
+
+}
+
+
+
+static void
+grapper_gconfclient_notify(GConfClient* client, guint cnxn_id,
+ GConfEntry *entry, gpointer user_data)
+{
+ /* grapper_state* state = (grapper_state*)user_data; */
+ GError* err = NULL;
+ int width, height;
+
+ gtk_window_get_size (GTK_WINDOW(grapper_window), &width, &height);
+
+
+ width = gconf_client_get_int (gconf_client, width_gconf_key, &err);
+ if(err) {
+ g_error_free (err);
+ err = NULL;
+ width = -1;
+ } else
+ fprintf(stderr, "gconf width changed to %d\n", width);
+
+ height = gconf_client_get_int (gconf_client, height_gconf_key, &err);
+ if(err) {
+ g_error_free (err);
+ err = NULL;
+ height = -1;
+ } else
+ fprintf(stderr, "gconf height changed to %d\n", width);
+
+ /* let's not make it too small */
+ if(width < MIN_WINDOW_WIDTH)
+ width = MIN_WINDOW_WIDTH;
+ if(height < MIN_WINDOW_HEIGHT)
+ height = MIN_WINDOW_HEIGHT;
+
+ gtk_window_resize (GTK_WINDOW(grapper_window), width, height);
+}
+
+
+static void
+grapper_gconflient_free(gpointer user_data)
+{
+
+}
+
+
+static gint
+configure_callback(GtkWidget *widget, GdkEvent *event, gpointer data)
+{
+ gint width, height;
+ GError* err = NULL;
+
+ gtk_window_get_size (GTK_WINDOW(grapper_window), &width, &height);
+
+ if(!gconf_client_set_int (gconf_client, width_gconf_key, width, &err)) {
+ fprintf(stderr, "gconf error writing width: %s\n", err->message);
+ g_error_free (err);
+ err = NULL;
+ }
+
+ if(!gconf_client_set_int (gconf_client, height_gconf_key, height, &err)) {
+ fprintf(stderr, "gconf error writing width: %s\n", err->message);
+ g_error_free (err);
+ err = NULL;
+ }
+
+ return FALSE;
+}
+
+
+
+int
+main(int argc, char *argv[])
+{
+ grapper_state state;
+ GError* err = NULL;
+ guint cnxn;
+ int width, height;
+
+ gtk_init (&argc, &argv);
+
+ g_set_application_name (application_name);
+
+ memset(&state, 0, sizeof(grapper_state));
+
+ state.world = raptor_new_world();
+
+ gconf_client = gconf_client_get_default();
+
+ cnxn = gconf_client_notify_add (gconf_client, gconf_namespace,
+ grapper_gconfclient_notify,
+ (gpointer)&state, /* user data */
+ grapper_gconflient_free,
+ &err);
+
+ /* create the main window */
+ grapper_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+
+ gtk_window_set_title (GTK_WINDOW(grapper_window), application_title);
+
+ init_grapper_window(grapper_window, &state);
+
+ width = gconf_client_get_int (gconf_client, width_gconf_key, &err);
+ if(err) {
+ fprintf(stderr, "gconf error reading width: %s\n", err->message);
+ g_error_free (err);
+ err = NULL;
+ width= -1;
+ }
+
+ height = gconf_client_get_int (gconf_client, height_gconf_key, &err);
+ if(err) {
+ fprintf(stderr, "gconf error reading height: %s\n", err->message);
+ g_error_free (err);
+ err = NULL;
+ height= -1;
+ }
+
+ /* let's not make it too small */
+ if(width < MIN_WINDOW_WIDTH)
+ width = MIN_WINDOW_WIDTH;
+ if(height < MIN_WINDOW_HEIGHT)
+ height = MIN_WINDOW_HEIGHT;
+
+ gtk_window_set_default_size (GTK_WINDOW(grapper_window), width, height);
+
+ /* Connect the window resize event to configure_callback */
+ g_signal_connect (G_OBJECT (grapper_window), "configure_event",
+ G_CALLBACK (configure_callback), &state);
+
+ /* finally make it all visible */
+ gtk_widget_show (grapper_window);
+
+ if(argc>1) {
+ if(!access(argv[1], R_OK)) {
+ /* it's a file - make a URL out of it */
+ unsigned char *uri_string = raptor_uri_filename_to_uri_string(argv[1]);
+ grapper_model_set_url(&state, uri_string);
+ free(uri_string);
+ } else
+ grapper_model_set_url(&state, (unsigned char*)argv[1]);
+
+ grapper_model_parse(&state);
+ }
+
+ /* main loop, exited when gtk_main_quit() is called */
+ gtk_main ();
+
+ raptor_free_world(state.world);
+
+ gconf_client_notify_remove (gconf_client, cnxn);
+
+ return 0;
+}
+
diff --git a/examples/raptor_abort.c b/examples/raptor_abort.c
new file mode 100644
index 0000000..399717f
--- /dev/null
+++ b/examples/raptor_abort.c
@@ -0,0 +1,132 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_abort.c - Raptor abort example code
+ *
+ * Copyright (C) 2003-2006, David Beckett http://purl.org/net/dajobe/
+ * Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* for the memory allocation functions */
+#if defined(HAVE_DMALLOC_H) && defined(RAPTOR_MEMORY_DEBUG_DMALLOC)
+#include <dmalloc.h>
+#endif
+
+/* Raptor includes */
+#include <raptor2.h>
+
+
+static void handle_statements(void *user_data, raptor_statement *statement);
+int main(int argc, char *argv[]);
+
+
+typedef struct
+{
+ raptor_parser *parser;
+ FILE *stream;
+ int count;
+ int max;
+ int stopped;
+} my_data;
+
+
+static void
+handle_statements(void *user_data, raptor_statement *statement)
+{
+ my_data* me=(my_data*)user_data;
+
+ me->count++;
+ if(me->count > me->max) {
+ fprintf(me->stream, "Reached %d statements, stopping\n", me->max);
+ raptor_parser_parse_abort(me->parser);
+ me->stopped=1;
+ return;
+ }
+
+ fprintf(me->stream, "Saw statement %d\n", me->count);
+}
+
+
+int
+main (int argc, char *argv[])
+{
+ raptor_world* world;
+ raptor_parser* rdf_parser;
+ raptor_uri* uri;
+ my_data* me;
+ const char *program;
+ int rc;
+
+ program=argv[0];
+
+ if(argc != 2) {
+ fprintf(stderr, "%s: USAGE [RDF-XML content URI]\n", program);
+ exit(1);
+ }
+
+ world = raptor_new_world();
+
+ me=(my_data*)malloc(sizeof(my_data));
+ if(!me) {
+ fprintf(stderr, "%s: Out of memory\n", program);
+ exit(1);
+ }
+
+ me->stream=stderr;
+ me->count = 0;
+ me->max=5;
+
+ uri = raptor_new_uri(world, (const unsigned char*)argv[1]);
+ rdf_parser = raptor_new_parser(world, "rdfxml");
+
+ me->parser = rdf_parser;
+
+ raptor_parser_set_statement_handler(rdf_parser, me, handle_statements);
+
+ me->stopped = 0;
+ rc = raptor_parser_parse_uri(rdf_parser, uri, NULL);
+
+ fprintf(stderr, "%s: Parser returned status %d, stopped? %s\n", program, rc,
+ (me->stopped ? "yes" : "no"));
+
+ free(me);
+
+ raptor_free_parser(rdf_parser);
+
+ raptor_free_uri(uri);
+
+ raptor_free_world(world);
+
+ return 0;
+}
diff --git a/examples/rdfcat.c b/examples/rdfcat.c
new file mode 100644
index 0000000..978a641
--- /dev/null
+++ b/examples/rdfcat.c
@@ -0,0 +1,55 @@
+#include <stdio.h>
+#include <raptor2.h>
+
+/* rdfcat.c: parse any RDF syntax and serialize to RDF/XML-Abbrev */
+
+static raptor_serializer* rdf_serializer;
+
+static void
+serialize_triple(void* user_data, raptor_statement* triple)
+{
+ raptor_serializer_serialize_statement(rdf_serializer, triple);
+}
+
+static void
+declare_namespace(void* user_data, raptor_namespace *nspace)
+{
+ raptor_serializer_set_namespace_from_namespace(rdf_serializer, nspace);
+}
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world = NULL;
+ raptor_parser* rdf_parser = NULL;
+ unsigned char *uri_string;
+ raptor_uri *uri, *base_uri;
+
+ world = raptor_new_world();
+
+ uri_string = raptor_uri_filename_to_uri_string(argv[1]);
+ uri = raptor_new_uri(world, uri_string);
+ base_uri = raptor_uri_copy(uri);
+
+ /* Ask raptor to work out which parser to use */
+ rdf_parser = raptor_new_parser(world, "guess");
+ raptor_parser_set_statement_handler(rdf_parser, NULL, serialize_triple);
+ raptor_parser_set_namespace_handler(rdf_parser, NULL, declare_namespace);
+
+ rdf_serializer = raptor_new_serializer(world, "rdfxml-abbrev");
+
+ raptor_serializer_start_to_file_handle(rdf_serializer, base_uri, stdout);
+ raptor_parser_parse_file(rdf_parser, uri, base_uri);
+ raptor_serializer_serialize_end(rdf_serializer);
+
+ raptor_free_serializer(rdf_serializer);
+ raptor_free_parser(rdf_parser);
+
+ raptor_free_uri(base_uri);
+ raptor_free_uri(uri);
+ raptor_free_memory(uri_string);
+
+ raptor_free_world(world);
+
+ return 0;
+}
diff --git a/examples/rdfguess.c b/examples/rdfguess.c
new file mode 100644
index 0000000..b636c0b
--- /dev/null
+++ b/examples/rdfguess.c
@@ -0,0 +1,102 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <raptor2.h>
+
+
+/* rdfguess.c: guess parser name from filename and its content */
+
+#define READ_BUFFER_SIZE 256
+
+static int
+rdfguess_guess_name(raptor_world* world, const char* filename)
+{
+ char *buffer[READ_BUFFER_SIZE];
+ raptor_iostream* iostr = NULL;
+ const char* name;
+ const unsigned char* identifier;
+ const char* label;
+ size_t read_len;
+ size_t count;
+
+ if(!strcmp(filename, "-")) {
+ iostr = raptor_new_iostream_from_file_handle(world, stdin);
+ identifier = NULL;
+ label = "<stdin>";
+ } else {
+ if(access(filename, R_OK)) {
+ fprintf(stderr, "rdfguess: file %s not found\n", filename);
+ return 1;
+ }
+
+ iostr = raptor_new_iostream_from_filename(world, filename);
+ identifier = (const unsigned char *)filename;
+ label = filename;
+ }
+
+ if(!iostr) {
+ fprintf(stderr, "rdfguess: Could not create iostream for %s\n", label);
+ goto tidy;
+ }
+
+ read_len = READ_BUFFER_SIZE;
+ count = raptor_iostream_read_bytes(buffer, 1, read_len, iostr);
+ if(count < 1) {
+ fprintf(stderr, "rdfguess: Failed to read any data from %s\n",
+ label);
+ goto tidy;
+ }
+
+ name = raptor_world_guess_parser_name(world,
+ /* uri*/ NULL,
+ /* mime_type */ NULL,
+ (const unsigned char*)buffer,
+ read_len,
+ identifier);
+
+ if(name)
+ fprintf(stdout, "rdfguess: %s guessed to be %s\n", label, name);
+ else
+ fprintf(stdout, "rdfguess: failed to guess parser for %s\n", label);
+
+ tidy:
+ raptor_free_iostream(iostr);
+
+ return 0;
+}
+
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world = NULL;
+ const char *filename;
+ int rc = 0;
+
+ world = raptor_new_world();
+
+ if(argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))) {
+ fprintf(stderr, "USAGE rdfguess [FILENAMES...]\n");
+ rc = 1;
+ goto tidy;
+ }
+
+ if(argc == 1) {
+ rc = rdfguess_guess_name(world, "-");
+ } else {
+ int i;
+
+ for(i = 1; (filename = (const char*)argv[i]); i++) {
+ rc = rdfguess_guess_name(world, filename);
+ if(rc)
+ break;
+ }
+ }
+
+ tidy:
+ raptor_free_world(world);
+
+ return rc;
+}
diff --git a/examples/rdfprint.c b/examples/rdfprint.c
new file mode 100644
index 0000000..093aa98
--- /dev/null
+++ b/examples/rdfprint.c
@@ -0,0 +1,42 @@
+#include <stdio.h>
+#include <raptor2.h>
+
+/* rdfprint.c: print triples from parsing RDF/XML */
+
+static void
+print_triple(void* user_data, raptor_statement* triple)
+{
+ raptor_statement_print_as_ntriples(triple, stdout);
+ fputc('\n', stdout);
+}
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world = NULL;
+ raptor_parser* rdf_parser = NULL;
+ unsigned char *uri_string;
+ raptor_uri *uri, *base_uri;
+
+ world = raptor_new_world();
+
+ rdf_parser = raptor_new_parser(world, "rdfxml");
+
+ raptor_parser_set_statement_handler(rdf_parser, NULL, print_triple);
+
+ uri_string = raptor_uri_filename_to_uri_string(argv[1]);
+ uri = raptor_new_uri(world, uri_string);
+ base_uri = raptor_uri_copy(uri);
+
+ raptor_parser_parse_file(rdf_parser, uri, base_uri);
+
+ raptor_free_parser(rdf_parser);
+
+ raptor_free_uri(base_uri);
+ raptor_free_uri(uri);
+ raptor_free_memory(uri_string);
+
+ raptor_free_world(world);
+
+ return 0;
+}
diff --git a/examples/rdfserialize.c b/examples/rdfserialize.c
new file mode 100644
index 0000000..ecbc6b3
--- /dev/null
+++ b/examples/rdfserialize.c
@@ -0,0 +1,47 @@
+#include <stdio.h>
+#include <raptor2.h>
+#include <stdlib.h>
+
+/* rdfserialize.c: serialize 1 triple to RDF/XML-Abbrev */
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world = NULL;
+ raptor_serializer* rdf_serializer = NULL;
+ unsigned char *uri_string;
+ raptor_uri *base_uri;
+ raptor_statement* triple;
+
+ world = raptor_new_world();
+
+ uri_string = raptor_uri_filename_to_uri_string(argv[1]);
+ base_uri = raptor_new_uri(world, uri_string);
+
+ rdf_serializer = raptor_new_serializer(world, "rdfxml-abbrev");
+ raptor_serializer_start_to_file_handle(rdf_serializer, base_uri, stdout);
+
+ /* Make a triple with URI subject, URI predicate, literal object */
+ triple = raptor_new_statement(world);
+ triple->subject = raptor_new_term_from_uri_string(world, (const unsigned char*)"http://example.org/subject");
+ triple->predicate = raptor_new_term_from_uri_string(world, (const unsigned char*)"http://example.org/predicate");
+ triple->object = raptor_new_term_from_literal(world,
+ (const unsigned char*)"An example literal",
+ NULL,
+ (const unsigned char*)"en");
+
+ /* Write the triple */
+ raptor_serializer_serialize_statement(rdf_serializer, triple);
+
+ /* Delete the triple */
+ raptor_free_statement(triple);
+
+ raptor_serializer_serialize_end(rdf_serializer);
+ raptor_free_serializer(rdf_serializer);
+
+ raptor_free_uri(base_uri);
+ raptor_free_memory(uri_string);
+
+ raptor_free_world(world);
+ return 0;
+}
diff --git a/gtk-doc.make b/gtk-doc.make
new file mode 100644
index 0000000..1f75dfd
--- /dev/null
+++ b/gtk-doc.make
@@ -0,0 +1,280 @@
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN = $(LIBTOOL) --mode=execute
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN =
+endif
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
+
+SETUP_FILES = \
+ $(content_files) \
+ $(DOC_MAIN_SGML_FILE) \
+ $(DOC_MODULE)-sections.txt \
+ $(DOC_MODULE)-overrides.txt
+
+EXTRA_DIST = \
+ $(HTML_IMAGES) \
+ $(SETUP_FILES)
+
+DOC_STAMPS=setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \
+ html-build.stamp pdf-build.stamp \
+ tmpl.stamp sgml.stamp html.stamp pdf.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+REPORT_FILES = \
+ $(DOC_MODULE)-undocumented.txt \
+ $(DOC_MODULE)-undeclared.txt \
+ $(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+
+if ENABLE_GTK_DOC
+if GTK_DOC_BUILD_HTML
+HTML_BUILD_STAMP=html-build.stamp
+else
+HTML_BUILD_STAMP=
+endif
+if GTK_DOC_BUILD_PDF
+PDF_BUILD_STAMP=pdf-build.stamp
+else
+PDF_BUILD_STAMP=
+endif
+
+all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+else
+all-local:
+endif
+
+docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+
+$(REPORT_FILES): sgml-build.stamp
+
+#### setup ####
+
+setup-build.stamp:
+ -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ echo ' DOC Preparing build'; \
+ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \
+ if test "x$$files" != "x" ; then \
+ for file in $$files ; do \
+ test -f $(abs_srcdir)/$$file && \
+ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \
+ done; \
+ fi; \
+ test -d $(abs_srcdir)/tmpl && \
+ { cp -rp $(abs_srcdir)/tmpl $(abs_builddir)/; \
+ chmod -R u+w $(abs_builddir)/tmpl; } \
+ fi
+ @touch setup-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+ @echo ' DOC Scanning header files'
+ @_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ echo " DOC Introspecting gobjects"; \
+ scanobj_options=""; \
+ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ scanobj_options="--verbose"; \
+ fi; \
+ fi; \
+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
+ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
+ else \
+ for i in $(SCANOBJ_FILES) ; do \
+ test -f $$i || touch $$i ; \
+ done \
+ fi
+ @touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+ @true
+
+#### templates ####
+
+tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ @echo ' DOC Rebuilding template files'
+ @gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ if test -w $(abs_srcdir) ; then \
+ cp -rp $(abs_builddir)/tmpl $(abs_srcdir)/; \
+ fi \
+ fi
+ @touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+ @true
+
+$(srcdir)/tmpl/*.sgml:
+ @true
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
+ @echo ' DOC Building XML'
+ @-chmod -R u+w $(srcdir)
+ @_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
+ @touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+ @true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ @echo ' DOC Building HTML'
+ @rm -rf html
+ @mkdir html
+ @mkhtml_options=""; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkhtml_options="$$mkhtml_options --verbose"; \
+ fi; \
+ fi; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
+ if test "$(?)" = "0"; then \
+ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
+ fi; \
+ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ -@test "x$(HTML_IMAGES)" = "x" || \
+ for file in $(HTML_IMAGES) ; do \
+ if test -f $(abs_srcdir)/$$file ; then \
+ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
+ fi; \
+ if test -f $(abs_builddir)/$$file ; then \
+ cp $(abs_builddir)/$$file $(abs_builddir)/html; \
+ fi; \
+ done;
+ @echo ' DOC Fixing cross-references'
+ @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ @touch html-build.stamp
+
+#### pdf ####
+
+pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ @echo ' DOC Building PDF'
+ @rm -f $(DOC_MODULE).pdf
+ @mkpdf_options=""; \
+ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkpdf_options="$$mkpdf_options --verbose"; \
+ fi; \
+ fi; \
+ if test "x$(HTML_IMAGES)" != "x"; then \
+ for img in $(HTML_IMAGES); do \
+ part=`dirname $$img`; \
+ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
+ if test $$? != 0; then \
+ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
+ fi; \
+ done; \
+ fi; \
+ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
+ @touch pdf-build.stamp
+
+##############
+
+clean-local:
+ @rm -f *~ *.bak
+ @rm -rf .libs
+
+distclean-local:
+ @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
+ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \
+ rm -rf tmpl; \
+ fi
+
+maintainer-clean-local: clean
+ @rm -rf xml html
+
+install-data-local:
+ @installfiles=`echo $(builddir)/html/*`; \
+ if test "$$installfiles" = '$(builddir)/html/*'; \
+ then echo 1>&2 'Nothing to install' ; \
+ else \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ $(mkinstalldirs) $${installdir} ; \
+ for i in $$installfiles; do \
+ echo ' $(INSTALL_DATA) '$$i ; \
+ $(INSTALL_DATA) $$i $${installdir}; \
+ done; \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
+ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
+ fi; \
+ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
+ fi
+
+uninstall-local:
+ @if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ rm -rf $${installdir}
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc:
+else
+dist-check-gtkdoc:
+ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+ @false
+endif
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+ @mkdir $(distdir)/tmpl
+ @mkdir $(distdir)/html
+ @-cp ./tmpl/*.sgml $(distdir)/tmpl
+ @cp ./html/* $(distdir)/html
+ @-cp ./$(DOC_MODULE).pdf $(distdir)/
+ @-cp ./$(DOC_MODULE).types $(distdir)/
+ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
+ @cd $(distdir) && rm -f $(DISTCLEANFILES)
+ @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
diff --git a/librdfa/Makefile.am b/librdfa/Makefile.am
new file mode 100644
index 0000000..1a4467c
--- /dev/null
+++ b/librdfa/Makefile.am
@@ -0,0 +1,25 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile for distributing librdfa sources
+#
+
+EXTRA_DIST = \
+context.c \
+curie.c \
+iri.c \
+language.c \
+lists.c \
+namespace.c \
+rdfa.c \
+rdfa_utils.c \
+strtok_r.c \
+subject.c \
+triple.c \
+rdfa.h \
+rdfa_utils.h \
+strtok_r.h \
+config.h
+
+# Do not need:
+# mingw32_utils.c
+# mingw32_utils.h
diff --git a/librdfa/Makefile.in b/librdfa/Makefile.in
new file mode 100644
index 0000000..1bf821d
--- /dev/null
+++ b/librdfa/Makefile.in
@@ -0,0 +1,447 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile for distributing librdfa sources
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = librdfa
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+context.c \
+curie.c \
+iri.c \
+language.c \
+lists.c \
+namespace.c \
+rdfa.c \
+rdfa_utils.c \
+strtok_r.c \
+subject.c \
+triple.c \
+rdfa.h \
+rdfa_utils.h \
+strtok_r.h \
+config.h
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu librdfa/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu librdfa/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Do not need:
+# mingw32_utils.c
+# mingw32_utils.h
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/librdfa/config.h b/librdfa/config.h
new file mode 100644
index 0000000..fde2599
--- /dev/null
+++ b/librdfa/config.h
@@ -0,0 +1,6 @@
+/* Fake librdfa config.h - reads configuration from Raptor's config header */
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#else
+#include <raptor_config.h>
+#endif
diff --git a/librdfa/context.c b/librdfa/context.c
new file mode 100644
index 0000000..fca5b07
--- /dev/null
+++ b/librdfa/context.c
@@ -0,0 +1,591 @@
+/**
+ * Copyright 2008-2012 Digital Bazaar, Inc.
+ *
+ * This file is part of librdfa.
+ *
+ * librdfa is Free Software, and can be licensed under any of the
+ * following three licenses:
+ *
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any
+ * newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE-* at the top of this software distribution for more
+ * information regarding the details of each license.
+ *
+ * The librdfa library is the Fastest RDFa Parser in the Universe. It is
+ * a stream parser, meaning that it takes an XML data as input and spits
+ * out RDF triples as it comes across them in the stream. Due to this
+ * processing approach, librdfa has a very, very small memory footprint.
+ * It is also very fast and can operate on hundreds of gigabytes of XML
+ * data without breaking a sweat.
+ */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <string.h>
+#include "rdfa_utils.h"
+#include "rdfa.h"
+
+rdfacontext* rdfa_create_context(const char* base)
+{
+ rdfacontext* rval = NULL;
+ size_t base_length = strlen(base);
+
+ /* if the base isn't specified, don't create a context */
+ if(base_length > 0)
+ {
+ char* cleaned_base;
+
+ /* malloc and init whole context to NULL */
+ rval = (rdfacontext*)malloc(sizeof(rdfacontext));
+ if(!rval)
+ return NULL;
+
+ memset(rval, 0, sizeof(rdfacontext));
+
+ /* clean and initialize base */
+ cleaned_base = rdfa_iri_get_base(base);
+ rval->base = rdfa_replace_string(rval->base, cleaned_base);
+ free(cleaned_base);
+ }
+ else
+ {
+#ifdef LIBRDFA_IN_RAPTOR
+#else
+ printf("librdfa error: Failed to create a parsing context, "
+ "base IRI was not specified!\n");
+#endif
+ }
+
+ return rval;
+}
+
+void rdfa_init_context(rdfacontext* context)
+{
+ /* assume the RDFa processing rules are RDFa 1.1 unless otherwise specified */
+ context->rdfa_version = RDFA_VERSION_1_1;
+
+ /* assume the default host language is XML1 */
+ context->host_language = HOST_LANGUAGE_XML1;
+
+ /* the [parent subject] is set to the [base] value; */
+ context->parent_subject = NULL;
+ if(context->base != NULL)
+ {
+ char* cleaned_base = rdfa_iri_get_base(context->base);
+ context->parent_subject =
+ rdfa_replace_string(context->parent_subject, cleaned_base);
+ free(cleaned_base);
+ }
+
+ /* the [parent object] is set to null; */
+ context->parent_object = NULL;
+
+#ifdef LIBRDFA_IN_RAPTOR
+#else
+ /* the [list of URI mappings] is cleared; */
+ context->uri_mappings = rdfa_create_mapping(MAX_URI_MAPPINGS);
+#endif
+
+ /* the [list of incomplete triples] is cleared; */
+ context->incomplete_triples = rdfa_create_list(3);
+
+ /* the [language] is set to null. */
+ context->language = NULL;
+
+ /* set the [current object resource] to null; */
+ context->current_object_resource = NULL;
+
+ /* the list of term mappings is set to null
+ * (or a list defined in the initial context of the Host Language). */
+ context->term_mappings = rdfa_create_mapping(MAX_TERM_MAPPINGS);
+
+ /* the maximum number of list mappings */
+ context->list_mappings = rdfa_create_mapping(MAX_LIST_MAPPINGS);
+
+ /* the maximum number of local list mappings */
+ context->local_list_mappings =
+ rdfa_create_mapping(MAX_LOCAL_LIST_MAPPINGS);
+
+ /* the default vocabulary is set to null
+ * (or a IRI defined in the initial context of the Host Language). */
+ context->default_vocabulary = NULL;
+
+ /* whether or not the @inlist attribute is present on the current element */
+ context->inlist_present = 0;
+
+ /* whether or not the @rel attribute is present on the current element */
+ context->rel_present = 0;
+
+ /* whether or not the @rev attribute is present on the current element */
+ context->rev_present = 0;
+
+ /* 1. First, the local values are initialized, as follows:
+ *
+ * * the [recurse] flag is set to 'true'; */
+ context->recurse = 1;
+
+ /* * the [skip element] flag is set to 'false'; */
+ context->skip_element = 0;
+
+ /* * [new subject] is set to null; */
+ context->new_subject = NULL;
+
+ /* * [current object resource] is set to null; */
+ context->current_object_resource = NULL;
+
+ /* * the [local list of URI mappings] is set to the list of URI
+ * mappings from the [evaluation context];
+ * NOTE: This step is done in rdfa_create_new_element_context() */
+
+ /* FIXME: Initialize the term mappings and URI mappings based on Host Language */
+
+ /* * the [local list of incomplete triples] is set to null; */
+ context->local_incomplete_triples = rdfa_create_list(3);
+
+ /* * the [current language] value is set to the [language] value
+ * from the [evaluation context].
+ * NOTE: This step is done in rdfa_create_new_element_context() */
+}
+
+#ifdef LIBRDFA_IN_RAPTOR
+#define DECLARE_URI_MAPPING(context, prefix, value) \
+do { \
+ raptor_namespace_stack* nstack = &context->sax2->namespaces; \
+ raptor_namespace* ns = raptor_new_namespace(nstack, \
+ (const unsigned char *)prefix, (const unsigned char*)value, 0); \
+ raptor_namespaces_start_namespace(nstack, ns); \
+ } while(0)
+#else
+#define DECLARE_URI_MAPPING(context, prefix, value) \
+ rdfa_update_mapping(context->uri_mappings, prefix, value, \
+ (update_mapping_value_fp)rdfa_replace_string)
+#endif
+
+void rdfa_setup_initial_context(rdfacontext* context)
+{
+#ifdef LIBRDFA_IN_RAPTOR
+#else
+ char* key = NULL;
+ void* value = NULL;
+ void** mptr = context->uri_mappings;
+#endif
+
+ /* Setup the base RDFa 1.1 prefix and term mappings */
+ if(context->rdfa_version == RDFA_VERSION_1_1)
+ {
+ /* Setup the base RDFa 1.1 prefix mappings */
+ DECLARE_URI_MAPPING(context,
+ "grddl", "http://www.w3.org/2003/g/data-view#");
+ DECLARE_URI_MAPPING(context,
+ "ma", "http://www.w3.org/ns/ma-ont#");
+ DECLARE_URI_MAPPING(context,
+ "owl", "http://www.w3.org/2002/07/owl#");
+ DECLARE_URI_MAPPING(context,
+ "rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
+ DECLARE_URI_MAPPING(context,
+ "rdfa", "http://www.w3.org/ns/rdfa#");
+ DECLARE_URI_MAPPING(context,
+ "rdfs", "http://www.w3.org/2000/01/rdf-schema#");
+ DECLARE_URI_MAPPING(context,
+ "rif", "http://www.w3.org/2007/rif#");
+ DECLARE_URI_MAPPING(context,
+ "skos", "http://www.w3.org/2004/02/skos/core#");
+ DECLARE_URI_MAPPING(context,
+ "skosxl", "http://www.w3.org/2008/05/skos-xl#");
+ DECLARE_URI_MAPPING(context,
+ "wdr", "http://www.w3.org/2007/05/powder#");
+ DECLARE_URI_MAPPING(context,
+ "void", "http://rdfs.org/ns/void#");
+ DECLARE_URI_MAPPING(context,
+ "wdrs", "http://www.w3.org/2007/05/powder-s#");
+ DECLARE_URI_MAPPING(context,
+ "xhv", "http://www.w3.org/1999/xhtml/vocab#");
+ DECLARE_URI_MAPPING(context,
+ "xml", "http://www.w3.org/XML/1998/namespace");
+ DECLARE_URI_MAPPING(context,
+ "xsd", "http://www.w3.org/2001/XMLSchema#");
+ DECLARE_URI_MAPPING(context,
+ "cc", "http://creativecommons.org/ns#");
+ DECLARE_URI_MAPPING(context,
+ "ctag", "http://commontag.org/ns#");
+ DECLARE_URI_MAPPING(context,
+ "dc", "http://purl.org/dc/terms/");
+ DECLARE_URI_MAPPING(context,
+ "dcterms", "http://purl.org/dc/terms/");
+ DECLARE_URI_MAPPING(context,
+ "foaf", "http://xmlns.com/foaf/0.1/");
+ DECLARE_URI_MAPPING(context,
+ "gr", "http://purl.org/goodrelations/v1#");
+ DECLARE_URI_MAPPING(context,
+ "ical", "http://www.w3.org/2002/12/cal/icaltzd#");
+ DECLARE_URI_MAPPING(context,
+ "og", "http://ogp.me/ns#");
+ DECLARE_URI_MAPPING(context,
+ "rev", "http://purl.org/stuff/rev#");
+ DECLARE_URI_MAPPING(context,
+ "sioc", "http://rdfs.org/sioc/ns#");
+ DECLARE_URI_MAPPING(context,
+ "v", "http://rdf.data-vocabulary.org/#");
+ DECLARE_URI_MAPPING(context,
+ "vcard", "http://www.w3.org/2006/vcard/ns#");
+ DECLARE_URI_MAPPING(context,
+ "schema", "http://schema.org/");
+
+ /* Setup the base RDFa 1.1 term mappings */
+ rdfa_update_mapping(context->term_mappings,
+ "describedby", "http://www.w3.org/2007/05/powder-s#describedby",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "license", "http://www.w3.org/1999/xhtml/vocab#license",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "role", "http://www.w3.org/1999/xhtml/vocab#role",
+ (update_mapping_value_fp)rdfa_replace_string);
+ }
+
+ /* Setup the term mappings for XHTML1 */
+ if(context->host_language == HOST_LANGUAGE_XHTML1)
+ {
+ rdfa_update_mapping(context->term_mappings,
+ "alternate", "http://www.w3.org/1999/xhtml/vocab#alternate",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "appendix", "http://www.w3.org/1999/xhtml/vocab#appendix",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "cite", "http://www.w3.org/1999/xhtml/vocab#cite",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "bookmark", "http://www.w3.org/1999/xhtml/vocab#bookmark",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "contents", "http://www.w3.org/1999/xhtml/vocab#contents",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "chapter", "http://www.w3.org/1999/xhtml/vocab#chapter",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "copyright", "http://www.w3.org/1999/xhtml/vocab#copyright",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "first", "http://www.w3.org/1999/xhtml/vocab#first",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "glossary", "http://www.w3.org/1999/xhtml/vocab#glossary",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "help", "http://www.w3.org/1999/xhtml/vocab#help",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "icon", "http://www.w3.org/1999/xhtml/vocab#icon",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "index", "http://www.w3.org/1999/xhtml/vocab#index",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "last", "http://www.w3.org/1999/xhtml/vocab#last",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "license", "http://www.w3.org/1999/xhtml/vocab#license",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "meta", "http://www.w3.org/1999/xhtml/vocab#meta",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "next", "http://www.w3.org/1999/xhtml/vocab#next",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "prev", "http://www.w3.org/1999/xhtml/vocab#prev",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "previous", "http://www.w3.org/1999/xhtml/vocab#previous",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "section", "http://www.w3.org/1999/xhtml/vocab#section",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "start", "http://www.w3.org/1999/xhtml/vocab#start",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "stylesheet", "http://www.w3.org/1999/xhtml/vocab#stylesheet",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "subsection", "http://www.w3.org/1999/xhtml/vocab#subsection",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "top", "http://www.w3.org/1999/xhtml/vocab#top",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "up", "http://www.w3.org/1999/xhtml/vocab#up",
+ (update_mapping_value_fp)rdfa_replace_string);
+ rdfa_update_mapping(context->term_mappings,
+ "p3pv1", "http://www.w3.org/1999/xhtml/vocab#p3pv1",
+ (update_mapping_value_fp)rdfa_replace_string);
+
+ /* From the role attribute module */
+ rdfa_update_mapping(context->term_mappings,
+ "role", "http://www.w3.org/1999/xhtml/vocab#role",
+ (update_mapping_value_fp)rdfa_replace_string);
+ }
+
+ /* Setup the prefix and term mappings for HTML4 and HTML5 */
+ if(context->host_language == HOST_LANGUAGE_HTML)
+ {
+ /* No term or prefix mappings as of 2012-04-04 */
+ }
+
+#ifdef LIBRDFA_IN_RAPTOR
+ /* Raptor does this elsewhere */
+#else
+ /* Generate namespace triples for all values in the uri_mapping */
+ while(*mptr != NULL)
+ {
+ rdfa_next_mapping(mptr++, &key, &value);
+ mptr++;
+ rdfa_generate_namespace_triple(context, key, value);
+ }
+#endif
+}
+
+/**
+ * Creates a new context for the current element by cloning certain
+ * parts of the old context on the top of the given stack.
+ *
+ * @param context_stack the context stack that is associated with this
+ * processing run.
+ */
+rdfacontext* rdfa_create_new_element_context(rdfalist* context_stack)
+{
+ rdfacontext* parent_context = (rdfacontext*)
+ context_stack->items[context_stack->num_items - 1]->data;
+ rdfacontext* rval = rdfa_create_context(parent_context->base);
+
+ if(!rval)
+ return NULL;
+
+ /* * Otherwise, the values are: */
+
+ /* * the [ base ] is set to the [ base ] value of the current
+ * [ evaluation context ]; */
+ rval->base = rdfa_replace_string(rval->base, parent_context->base);
+ rdfa_init_context(rval);
+
+ /* Set the processing depth as parent + 1 */
+ rval->depth = parent_context->depth + 1;
+
+ /* copy the URI mappings */
+#ifdef LIBRDFA_IN_RAPTOR
+ /* Raptor does this automatically for URIs */
+#else
+ rdfa_free_mapping(rval->uri_mappings, (free_mapping_value_fp)free);
+#endif
+ rdfa_free_mapping(rval->term_mappings, (free_mapping_value_fp)free);
+ rdfa_free_mapping(rval->list_mappings, (free_mapping_value_fp)rdfa_free_list);
+ rdfa_free_mapping(rval->local_list_mappings, (free_mapping_value_fp)rdfa_free_list);
+#ifdef LIBRDFA_IN_RAPTOR
+ /* Raptor does this automatically for URIs */
+#else
+ rval->uri_mappings =
+ rdfa_copy_mapping((void**)parent_context->uri_mappings,
+ (copy_mapping_value_fp)rdfa_replace_string);
+#endif
+ rval->term_mappings =
+ rdfa_copy_mapping((void**)parent_context->term_mappings,
+ (copy_mapping_value_fp)rdfa_replace_string);
+ rval->list_mappings =
+ rdfa_copy_mapping((void**)parent_context->local_list_mappings,
+ (copy_mapping_value_fp)rdfa_replace_list);
+ rval->local_list_mappings =
+ rdfa_copy_mapping((void**)parent_context->local_list_mappings,
+ (copy_mapping_value_fp)rdfa_replace_list);
+
+ /* inherit the parent context's host language and RDFa processor mode */
+ rval->host_language = parent_context->host_language;
+ rval->rdfa_version = parent_context->rdfa_version;
+
+ /* inherit the parent context's language */
+ if(parent_context->language != NULL)
+ {
+ rval->language =
+ rdfa_replace_string(rval->language, parent_context->language);
+ }
+
+ /* inherit the parent context's default vocabulary */
+ if(parent_context->default_vocabulary != NULL)
+ {
+ rval->default_vocabulary = rdfa_replace_string(
+ rval->default_vocabulary, parent_context->default_vocabulary);
+ }
+
+ /* set the callbacks callback */
+ rval->default_graph_triple_callback =
+ parent_context->default_graph_triple_callback;
+ rval->processor_graph_triple_callback =
+ parent_context->processor_graph_triple_callback;
+ rval->buffer_filler_callback = parent_context->buffer_filler_callback;
+
+ /* inherit the bnode count, _: bnode name, recurse flag, and state
+ * of the xml_literal_namespace_insertion */
+ rval->bnode_count = parent_context->bnode_count;
+ rval->underscore_colon_bnode_name =
+ rdfa_replace_string(rval->underscore_colon_bnode_name,
+ parent_context->underscore_colon_bnode_name);
+ rval->recurse = parent_context->recurse;
+ rval->skip_element = 0;
+ rval->callback_data = parent_context->callback_data;
+ rval->xml_literal_namespaces_defined =
+ parent_context->xml_literal_namespaces_defined;
+ rval->xml_literal_xml_lang_defined =
+ parent_context->xml_literal_xml_lang_defined;
+
+#if 0
+ /* inherit the parent context's new_subject
+ * TODO: This is not anywhere in the syntax processing document */
+ if(parent_context->new_subject != NULL)
+ {
+ rval->new_subject = rdfa_replace_string(
+ rval->new_subject, parent_context->new_subject);
+ }
+#endif
+
+ if(parent_context->skip_element == 0)
+ {
+ /* o the [ parent subject ] is set to the value of [ new subject ],
+ * if non-null, or the value of the [ parent subject ] of the
+ * current [ evaluation context ]; */
+ if(parent_context->new_subject != NULL)
+ {
+ rval->parent_subject = rdfa_replace_string(
+ rval->parent_subject, parent_context->new_subject);
+ }
+ else
+ {
+ rval->parent_subject = rdfa_replace_string(
+ rval->parent_subject, parent_context->parent_subject);
+ }
+
+ /* o the [ parent object ] is set to value of [ current object
+ * resource ], if non-null, or the value of [ new subject ], if
+ * non-null, or the value of the [ parent subject ] of the
+ * current [ evaluation context ]; */
+ if(parent_context->current_object_resource != NULL)
+ {
+ rval->parent_object =
+ rdfa_replace_string(
+ rval->parent_object, parent_context->current_object_resource);
+ }
+ else if(parent_context->new_subject != NULL)
+ {
+ rval->parent_object =
+ rdfa_replace_string(
+ rval->parent_object, parent_context->new_subject);
+ }
+ else
+ {
+ rval->parent_object =
+ rdfa_replace_string(
+ rval->parent_object, parent_context->parent_subject);
+ }
+
+ /* o the [ list of incomplete triples ] is set to the [ local list
+ * of incomplete triples ]; */
+ rval->incomplete_triples = rdfa_replace_list(
+ rval->incomplete_triples, parent_context->local_incomplete_triples);
+ }
+ else
+ {
+ rval->parent_subject = rdfa_replace_string(
+ rval->parent_subject, parent_context->parent_subject);
+ rval->parent_object = rdfa_replace_string(
+ rval->parent_object, parent_context->parent_object);
+
+ /* copy the incomplete triples */
+ rval->incomplete_triples = rdfa_replace_list(
+ rval->incomplete_triples, parent_context->incomplete_triples);
+
+ /* copy the local list of incomplete triples */
+ rval->local_incomplete_triples = rdfa_replace_list(
+ rval->local_incomplete_triples,
+ parent_context->local_incomplete_triples);
+ }
+
+#ifdef LIBRDFA_IN_RAPTOR
+ rval->base_uri = parent_context->base_uri;
+ rval->sax2 = parent_context->sax2;
+ rval->namespace_handler = parent_context->namespace_handler;
+ rval->namespace_handler_user_data = parent_context->namespace_handler_user_data;
+#endif
+
+ return rval;
+}
+
+void rdfa_free_context_stack(rdfacontext* context)
+{
+ /* this field is not NULL only on the rdfacontext* at the top of the stack */
+ if(context->context_stack != NULL)
+ {
+ void* rval;
+ /* free the stack ensuring that we do not delete this context if
+ * it is in the list (which it may be, if parsing ended on error) */
+ do
+ {
+ rval = rdfa_pop_item(context->context_stack);
+ if(rval && rval != context)
+ {
+ rdfa_free_context((rdfacontext*)rval);
+ }
+ }
+ while(rval);
+ free(context->context_stack->items);
+ free(context->context_stack);
+ context->context_stack = NULL;
+ }
+}
+
+void rdfa_free_context(rdfacontext* context)
+{
+ free(context->base);
+ free(context->default_vocabulary);
+ free(context->parent_subject);
+ free(context->parent_object);
+
+#ifdef LIBRDFA_IN_RAPTOR
+#else
+ rdfa_free_mapping(context->uri_mappings, (free_mapping_value_fp)free);
+#endif
+
+ rdfa_free_mapping(context->term_mappings, (free_mapping_value_fp)free);
+ rdfa_free_list(context->incomplete_triples);
+ rdfa_free_mapping(context->list_mappings,
+ (free_mapping_value_fp)rdfa_free_list);
+ rdfa_free_mapping(context->local_list_mappings,
+ (free_mapping_value_fp)rdfa_free_list);
+ free(context->language);
+ free(context->underscore_colon_bnode_name);
+ free(context->new_subject);
+ free(context->current_object_resource);
+ free(context->about);
+ free(context->typed_resource);
+ free(context->resource);
+ free(context->href);
+ free(context->src);
+ free(context->content);
+ free(context->datatype);
+ rdfa_free_list(context->property);
+ free(context->plain_literal);
+ free(context->xml_literal);
+
+ /* TODO: These should be moved into their own data structure */
+ rdfa_free_list(context->local_incomplete_triples);
+
+ rdfa_free_context_stack(context);
+ free(context->working_buffer);
+ free(context);
+}
diff --git a/librdfa/curie.c b/librdfa/curie.c
new file mode 100644
index 0000000..ee00746
--- /dev/null
+++ b/librdfa/curie.c
@@ -0,0 +1,687 @@
+/**
+ * Copyright 2008 Digital Bazaar, Inc.
+ *
+ * This file is part of librdfa.
+ *
+ * librdfa is Free Software, and can be licensed under any of the
+ * following three licenses:
+ *
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any
+ * newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE-* at the top of this software distribution for more
+ * information regarding the details of each license.
+ *
+ * The CURIE module is used to resolve all forms of CURIEs that
+ * XHTML+RDFa accepts.
+ *
+ * @author Manu Sporny
+ */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#include <stdio.h>
+#include <ctype.h>
+#include "rdfa_utils.h"
+#include "rdfa.h"
+#include "strtok_r.h"
+
+/* The base XHTML vocab URL is used to resolve URIs that are reserved
+ * words. Any reserved listed above is appended to the URL below to
+ * form a complete IRI. */
+#define XHTML_VOCAB_URI "http://www.w3.org/1999/xhtml/vocab#"
+#define XHTML_VOCAB_URI_SIZE 35
+
+/**
+ * Gets the type of CURIE that is passed to it.
+ *
+ * @param uri the uri to check.
+ *
+ * @return either CURIE_TYPE_SAFE, CURIE_TYPE_URI or CURIE_TYPE_INVALID.
+ */
+static curie_t rdfa_get_curie_type(const char* uri)
+{
+ curie_t rval = CURIE_TYPE_INVALID;
+
+ if(uri != NULL)
+ {
+ size_t uri_length = strlen(uri);
+
+ if((uri[0] == '[') && (uri[uri_length - 1] == ']'))
+ {
+ /* a safe curie starts with [ and ends with ] */
+ rval = CURIE_TYPE_SAFE;
+ }
+ else if(strstr(uri, ":") != NULL)
+ {
+ /* at this point, it is unknown whether or not the CURIE is
+ * an IRI or an unsafe CURIE */
+ rval = CURIE_TYPE_IRI_OR_UNSAFE;
+ }
+ else
+ {
+ /* if none of the above match, then the CURIE is probably a
+ * relative IRI */
+ rval = CURIE_TYPE_IRI_OR_UNSAFE;
+ }
+ }
+
+ return rval;
+}
+
+char* rdfa_resolve_uri(rdfacontext* context, const char* uri)
+{
+ char* rval = NULL;
+ char* path_start = NULL;
+ size_t base_length = strlen(context->base);
+
+ if(strlen(uri) < 1)
+ {
+ /* if a blank URI is given, use the base context */
+ rval = rdfa_replace_string(rval, context->base);
+ }
+ else if(strstr(uri, ":") != NULL)
+ {
+ /* if a IRI is given, don't concatenate */
+ rval = rdfa_replace_string(rval, uri);
+ }
+ else if(uri[0] == '#' || uri[0] == '?')
+ {
+ /* if a fragment ID or start of a query parameter is given,
+ * concatenate it with the base URI */
+ rval = rdfa_join_string(context->base, uri);
+ }
+ else if(uri[0] == '/')
+ {
+ /* if a relative URI is given, but it starts with a '/', use the
+ * host part concatenated to the given URI */
+ char* tmp = NULL;
+ char* end_index = NULL;
+
+ /* initialize the working-set data */
+ tmp = rdfa_replace_string(tmp, context->base);
+ end_index = strchr(tmp, '/');
+
+
+ /* find the final '/' character after the host part of the context base. */
+ if(end_index != NULL)
+ {
+ end_index = strchr(end_index + 1, '/');
+
+ if(end_index != NULL)
+ {
+ end_index = strchr(end_index + 1, '/');
+ }
+ }
+
+ /* if the '/' character after the host part was found, copy the host
+ * part and append the given URI to the URI, otherwise, append the
+ * host part and the URI part as-is, ensuring that a '/' exists at the
+ * end of the host part. */
+ if(end_index != NULL)
+ {
+ char* rval_copy;
+
+ *end_index = '\0';
+
+ /* if the '/' character after the host part was found, copy the host
+ * part and append the given URI to the URI. */
+ rval_copy = rdfa_replace_string(rval, tmp);
+ rval = rdfa_join_string(rval_copy, uri);
+ free(rval_copy);
+ }
+ else
+ {
+ /* append the host part and the URI part as-is, ensuring that a
+ * '/' exists at the end of the host part. */
+ size_t tlen = strlen(tmp) - 1;
+ char* rval_copy;
+
+ rval_copy = rdfa_replace_string(rval, tmp);
+
+ if(rval_copy[tlen] == '/')
+ {
+ rval_copy[tlen] = '\0';
+ }
+ rval = rdfa_join_string(rval_copy, uri);
+ free(rval_copy);
+ }
+
+ free(tmp);
+ }
+ else
+ {
+ if((char)context->base[base_length - 1] == '/')
+ {
+ /* if the base URI already ends in /, concatenate */
+ rval = rdfa_join_string(context->base, uri);
+ }
+ else
+ {
+ /* if we have a relative URI, chop off the name of the file
+ * and replace it with the relative pathname */
+ char* end_index = strrchr(context->base, '/');
+
+ if(end_index != NULL)
+ {
+ char* tmpstr = NULL;
+ char* end_index2;
+
+ tmpstr = rdfa_replace_string(tmpstr, context->base);
+ end_index2= strrchr(tmpstr, '/');
+ end_index2++;
+ *end_index2 = '\0';
+
+ rval = rdfa_join_string(tmpstr, uri);
+ free(tmpstr);
+ }
+ }
+ }
+
+ /* It is possible that rval may be NULL here in OOM scenarios */
+ if(!rval)
+ return NULL;
+
+ /* Find the start of a scheme-based URL path */
+ path_start = (char*)strstr(rval, "://");
+ if(path_start != NULL)
+ {
+ if(strstr(path_start, "/.") != NULL)
+ {
+ path_start += 3;
+ path_start = strstr(path_start, "/");
+ }
+ else
+ {
+ path_start = NULL;
+ }
+ }
+
+ /* remove any dot-segments that remain in the URL for URLs w/ schemes */
+ if(path_start != NULL)
+ {
+ size_t rlen = strlen(rval) + 1;
+ size_t hlen = path_start - rval;
+ char* src = (char*)malloc(rlen + 4);
+ char* sptr = src + hlen;
+ char* dest = (char*)malloc(rlen + 1);
+ char* dptr = dest + hlen;
+ char* dfence = dptr;
+
+ memset(src, 0, rlen + 4);
+ strcpy(src, rval);
+ strncpy(dest, rval, hlen);
+
+ /* Process the path portion of the IRI */
+ while(sptr[0] != '?' && sptr[0] != '\0')
+ {
+ if(sptr[0] == '.' && sptr[1] == '.' && sptr[2] == '/')
+ {
+ /* A. If the input buffer begins with a prefix of "../",
+ * then remove that prefix from the input buffer; otherwise,
+ */
+ sptr += 3;
+ }
+ else if(sptr[0] == '.' && sptr[1] == '/')
+ {
+ /* A. If the input buffer begins with a prefix of "./",
+ * then remove that prefix from the input buffer; otherwise,
+ */
+ sptr += 2;
+ }
+ else if(sptr[0] == '/' && sptr[1] == '.' && sptr[2] == '/')
+ {
+ /* B. if the input buffer begins with a prefix of "/./",
+ * then replace that prefix with "/" in the input buffer;
+ * otherwise,
+ */
+ sptr += 2;
+ }
+ else if(sptr[0] == '/' && sptr[1] == '.' && sptr[2] == '\0')
+ {
+ /* B. if the input buffer begins with a prefix of "/.",
+ * where "." is a complete path segment, then replace that
+ * prefix with "/" in the input buffer; otherwise,
+ */
+ sptr += 1;
+ *sptr = '/';
+ }
+ else if(sptr[0] == '/' && sptr[1] == '.' && sptr[2] == '.' &&
+ ((sptr[3] == '/') || (sptr[3] == '\0')))
+ {
+ /* C. if the input buffer begins with a prefix of "/../",
+ * then replace that prefix with "/" in the input buffer and
+ * remove the last segment and its preceding "/" (if any) from
+ * the output buffer; otherwise,
+ */
+ if(sptr[3] == '/')
+ {
+ sptr += 3;
+ }
+ else if(sptr[3] == '\0')
+ {
+ sptr += 2;
+ *sptr = '/';
+ }
+
+ /* remove the last segment and the preceding '/' */
+ if(dptr > dfence)
+ {
+ dptr--;
+ if(dptr[0] == '/')
+ {
+ dptr--;
+ }
+ }
+ while(dptr >= dfence && dptr[0] != '/')
+ {
+ dptr--;
+ }
+ if(dptr >= dfence)
+ {
+ dptr[0] = '\0';
+ }
+ else
+ {
+ dptr = dfence;
+ dptr[0] = '\0';
+ }
+ }
+ else if(sptr[0] == '.' && sptr[1] == '\0')
+ {
+ /* D. if the input buffer consists only of ".", then remove
+ * that from the input buffer; otherwise,
+ */
+ sptr++;
+
+ }
+ else if(sptr[0] == '.' && sptr[1] == '.' && sptr[1] == '\0')
+ {
+ /* D. if the input buffer consists only of "..", then remove
+ * that from the input buffer; otherwise,
+ */
+ sptr += 2;
+ }
+ else
+ {
+ /* Copy the path segment */
+ do
+ {
+ *dptr++ = *sptr++;
+ *dptr = '\0';
+ } while(sptr[0] != '/' && sptr[0] != '?' && sptr[0] != '\0');
+ }
+ }
+
+ /* Copy the remaining query parameters */
+ if(sptr[0] == '?')
+ {
+ strcpy(dptr, sptr);
+ }
+ else
+ {
+ dptr[0] = '\0';
+ }
+
+ free(rval);
+ free(src);
+ rval = dest;
+ }
+
+ return rval;
+}
+
+char* rdfa_resolve_curie(
+ rdfacontext* context, const char* uri, curieparse_t mode)
+{
+ char* rval = NULL;
+ curie_t ctype = rdfa_get_curie_type(uri);
+
+ if(!uri)
+ return NULL;
+
+ if(ctype == CURIE_TYPE_INVALID)
+ {
+ rval = NULL;
+ }
+ else if((ctype == CURIE_TYPE_IRI_OR_UNSAFE) &&
+ ((mode == CURIE_PARSE_HREF_SRC) ||
+ (context->rdfa_version == RDFA_VERSION_1_0 &&
+ mode == CURIE_PARSE_ABOUT_RESOURCE)))
+ {
+ /* If we are parsing something that can take either a CURIE or a
+ * URI, and the type is either IRI or UNSAFE, assume that it is
+ * an IRI */
+ rval = rdfa_resolve_uri(context, uri);
+ }
+
+ /*
+ * Check to see if the value is a term.
+ */
+ if(ctype == CURIE_TYPE_IRI_OR_UNSAFE && mode == CURIE_PARSE_PROPERTY)
+ {
+ const char* term_iri;
+ term_iri = (const char*)rdfa_get_mapping(context->term_mappings, uri);
+ if(term_iri != NULL)
+ {
+ rval = strdup(term_iri);
+ }
+ else if(context->default_vocabulary == NULL && strstr(uri, ":") == NULL)
+ {
+ /* Generate the processor warning if this is a missing term */
+#define FORMAT_1 "The use of the '%s' term was unrecognized by the RDFa processor because it is not a valid term for the current Host Language."
+
+#ifdef LIBRDFA_IN_RAPTOR
+ raptor_parser_warning((raptor_parser*)context->callback_data,
+ FORMAT_1, uri);
+#else
+ char msg[1024];
+ snprintf(msg, 1024, FORMAT_1, uri);
+
+ rdfa_processor_triples(context, RDFA_PROCESSOR_WARNING, msg);
+#endif
+ }
+ }
+
+ /* if we are processing a safe CURIE OR
+ * if we are parsing an unsafe CURIE that is an @type_of,
+ * @datatype, @property, @rel, or @rev attribute, treat the curie
+ * as not an IRI, but an unsafe CURIE */
+ if(rval == NULL && ((ctype == CURIE_TYPE_SAFE) ||
+ ((ctype == CURIE_TYPE_IRI_OR_UNSAFE) &&
+ ((mode == CURIE_PARSE_INSTANCEOF_DATATYPE) ||
+ (mode == CURIE_PARSE_PROPERTY) ||
+ (mode == CURIE_PARSE_RELREV) ||
+ (context->rdfa_version == RDFA_VERSION_1_1 &&
+ mode == CURIE_PARSE_ABOUT_RESOURCE)))))
+ {
+ char* working_copy = NULL;
+ char* wcptr = NULL;
+ char* prefix = NULL;
+ char* curie_reference = NULL;
+ const char* expanded_prefix = NULL;
+
+ working_copy = (char*)malloc(strlen(uri) + 1);
+ strcpy(working_copy, uri);/*rdfa_replace_string(working_copy, uri);*/
+
+ /* if this is a safe CURIE, chop off the beginning and the end */
+ if(ctype == CURIE_TYPE_SAFE)
+ {
+ prefix = strtok_r(working_copy, "[:]", &wcptr);
+ if(wcptr)
+ curie_reference = strtok_r(NULL, "[]", &wcptr);
+ }
+ else if(ctype == CURIE_TYPE_IRI_OR_UNSAFE)
+ {
+ prefix = strtok_r(working_copy, ":", &wcptr);
+ if(wcptr)
+ curie_reference = strtok_r(NULL, "", &wcptr);
+ }
+
+ /* fully resolve the prefix and get its length */
+
+ /* if a colon was found, but no prefix, use the XHTML vocabulary URI
+ * as the expanded prefix */
+ if((uri[0] == ':') || (strcmp(uri, "[:]") == 0))
+ {
+ expanded_prefix = XHTML_VOCAB_URI;
+ curie_reference = prefix;
+ prefix = NULL;
+ }
+ else if(uri[0] == ':')
+ {
+ /* FIXME: This looks like a bug - don't know why this code is
+ * in here. I think it's for the case where ":next" is
+ * specified, but the code's not checking that -- manu */
+ expanded_prefix = context->base;
+ curie_reference = prefix;
+ prefix = NULL;
+ }
+ else if(prefix != NULL)
+ {
+ if((mode != CURIE_PARSE_PROPERTY) &&
+ (mode != CURIE_PARSE_RELREV) &&
+ strcmp(prefix, "_") == 0)
+ {
+ /* if the prefix specifies this as a blank node, then we
+ * use the blank node prefix */
+ expanded_prefix = "_";
+ }
+ else
+ {
+ /* if the prefix was defined, get it from the set of URI mappings. */
+#ifdef LIBRDFA_IN_RAPTOR
+ if(!strcmp(prefix, "xml"))
+ {
+ expanded_prefix = RAPTOR_GOOD_CAST(const char*, raptor_xml_namespace_uri);
+ }
+ else
+ {
+ raptor_namespace *nspace;
+ raptor_uri* ns_uri;
+ nspace = raptor_namespaces_find_namespace(&context->sax2->namespaces,
+ (const unsigned char*)prefix,
+ (int)strlen(prefix));
+ if(nspace) {
+ ns_uri = raptor_namespace_get_uri(nspace);
+ if(ns_uri)
+ expanded_prefix = (const char*)raptor_uri_as_string(ns_uri);
+ }
+ }
+#else
+ expanded_prefix =
+ rdfa_get_mapping(context->uri_mappings, prefix);
+
+ /* Generate the processor warning if the prefix was not found */
+ if(expanded_prefix == NULL && strstr(uri, ":") != NULL &&
+ strstr(uri, "://") == NULL)
+ {
+#define FORMAT_2 "The '%s' prefix was not found. You may want to check that it is declared before it is used, or that it is a valid prefix string."
+#ifdef LIBRDFA_IN_RAPTOR
+ raptor_parser_warning((raptor_parser*)context->callback_data,
+ FORMAT_2, prefix);
+#else
+ char msg[1024];
+ snprintf(msg, 1024, FORMAT_2, prefix);
+
+ rdfa_processor_triples(context, RDFA_PROCESSOR_WARNING, msg);
+#endif
+ }
+#endif
+ }
+ }
+
+ if((expanded_prefix != NULL) && (curie_reference != NULL))
+ {
+ /* if the expanded prefix and the reference exist, generate the
+ * full IRI. */
+ if(strcmp(expanded_prefix, "_") == 0)
+ {
+ rval = rdfa_join_string("_:", curie_reference);
+ }
+ else
+ {
+ rval = rdfa_join_string(expanded_prefix, curie_reference);
+ }
+ }
+ else if((expanded_prefix != NULL) && (expanded_prefix[0] != '_') &&
+ (curie_reference == NULL))
+ {
+ /* if the expanded prefix exists, but the reference is null,
+ * generate the CURIE because a reference-less CURIE is still
+ * valid */
+ rval = rdfa_join_string(expanded_prefix, "");
+ }
+
+ free(working_copy);
+ }
+
+ if(rval == NULL)
+ {
+ /* if we're NULL at this point, the CURIE might be the special
+ * unnamed bnode specified by _: */
+ if((strcmp(uri, "[_:]") == 0) || (strcmp(uri, "_:") == 0))
+ {
+ if(context->underscore_colon_bnode_name == NULL)
+ {
+ context->underscore_colon_bnode_name = rdfa_create_bnode(context);
+ }
+ rval = rdfa_replace_string(rval, context->underscore_colon_bnode_name);
+ }
+ /* if we're NULL at this point and the IRI isn't [], then this might be
+ * an IRI */
+ else if(context->rdfa_version == RDFA_VERSION_1_1 &&
+ (strcmp(uri, "[]") != 0))
+ {
+ if((context->default_vocabulary != NULL) &&
+ ((mode == CURIE_PARSE_PROPERTY) || (mode == CURIE_PARSE_RELREV) ||
+ (mode == CURIE_PARSE_INSTANCEOF_DATATYPE)) &&
+ (strstr(uri, ":") == NULL))
+ {
+ rval = rdfa_join_string(context->default_vocabulary, uri);
+ }
+ else if(((mode == CURIE_PARSE_PROPERTY) ||
+ (mode == CURIE_PARSE_ABOUT_RESOURCE)) &&
+ (strstr(uri, "_:") == NULL) && (strstr(uri, "[_:") == NULL))
+ {
+ rval = rdfa_resolve_uri(context, uri);
+ }
+ }
+ }
+
+ /* even though a reference-only CURIE is valid, it does not
+ * generate a triple in XHTML+RDFa. If we're NULL at this point,
+ * the given value wasn't valid in XHTML+RDFa. */
+
+ return rval;
+}
+
+/**
+ * Resolves a given uri depending on whether or not it is a fully
+ * qualified IRI, a CURIE, or a short-form XHTML reserved word for
+ * @rel or @rev as defined in the XHTML+RDFa Syntax Document.
+ *
+ * @param context the current processing context.
+ * @param uri the URI part to process.
+ *
+ * @return the fully qualified IRI, or NULL if the conversion failed
+ * due to the given URI not being a short-form XHTML reserved
+ * word. The memory returned from this function MUST be freed.
+ */
+char* rdfa_resolve_relrev_curie(rdfacontext* context, const char* uri)
+{
+ char* rval = NULL;
+ const char* resource = uri;
+
+ /* check to make sure the URI doesn't have an empty prefix */
+ if(uri[0] == ':')
+ {
+ resource++;
+ }
+
+ /* override reserved words if there is a default vocab defined
+ * NOTE: Don't have to check for RDFa 1.1 mode because vocab is only defined
+ * in RDFa 1.1 */
+ if(context->default_vocabulary != NULL)
+ {
+ rval = rdfa_resolve_curie(context, uri, CURIE_PARSE_RELREV);
+ }
+ else if(context->host_language == HOST_LANGUAGE_XHTML1)
+ {
+ /* search all of the XHTML @rel/@rev reserved words for a
+ * case-insensitive match against the given URI */
+ char* term = strdup(resource);
+ char* ptr = NULL;
+
+ for(ptr = term; *ptr; ptr++)
+ {
+ *ptr = tolower(*ptr);
+ }
+
+ rval = (char*)rdfa_get_mapping(context->term_mappings, term);
+ if(rval != NULL)
+ {
+ rval = strdup(rval);
+ }
+ free(term);
+ }
+ else
+ {
+ /* Search the term mappings for a match */
+ rval = (char*)rdfa_get_mapping(context->term_mappings, resource);
+ if(rval != NULL)
+ {
+ rval = strdup(rval);
+ }
+ }
+
+ /* if a search against the registered terms failed,
+ * attempt to resolve the value as a standard CURIE */
+ if(rval == NULL)
+ {
+ rval = rdfa_resolve_curie(context, uri, CURIE_PARSE_RELREV);
+ }
+
+ /* if a CURIE wasn't found, attempt to resolve the value as an IRI */
+ if(rval == NULL && (context->rdfa_version == RDFA_VERSION_1_1))
+ {
+ rval = rdfa_resolve_uri(context, uri);
+ }
+
+ return rval;
+}
+
+rdfalist* rdfa_resolve_curie_list(
+ rdfacontext* rdfa_context, const char* uris, curieparse_t mode)
+{
+ rdfalist* rval = rdfa_create_list(3);
+ char* working_uris = NULL;
+ char* uptr = NULL;
+ char* ctoken = NULL;
+ working_uris = rdfa_replace_string(working_uris, uris);
+
+ /* go through each item in the list of CURIEs and resolve each */
+ ctoken = strtok_r(working_uris, RDFA_WHITESPACE, &uptr);
+
+ while(ctoken != NULL)
+ {
+ char* resolved_curie = NULL;
+
+ if((mode == CURIE_PARSE_INSTANCEOF_DATATYPE) ||
+ (mode == CURIE_PARSE_ABOUT_RESOURCE) ||
+ (mode == CURIE_PARSE_PROPERTY))
+ {
+ resolved_curie =
+ rdfa_resolve_curie(rdfa_context, ctoken, mode);
+ }
+ else if(mode == CURIE_PARSE_RELREV)
+ {
+ resolved_curie =
+ rdfa_resolve_relrev_curie(rdfa_context, ctoken);
+ }
+
+ /* add the CURIE if it was a valid one */
+ if(resolved_curie != NULL)
+ {
+ rdfa_add_item(rval, resolved_curie, RDFALIST_FLAG_TEXT);
+ free(resolved_curie);
+ }
+
+ ctoken = strtok_r(NULL, RDFA_WHITESPACE, &uptr);
+ }
+
+ free(working_uris);
+
+ return rval;
+}
diff --git a/librdfa/iri.c b/librdfa/iri.c
new file mode 100644
index 0000000..16a919a
--- /dev/null
+++ b/librdfa/iri.c
@@ -0,0 +1,72 @@
+/**
+ * Copyright 2008 Digital Bazaar, Inc.
+ *
+ * This file is part of librdfa.
+ *
+ * librdfa is Free Software, and can be licensed under any of the
+ * following three licenses:
+ *
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any
+ * newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE-* at the top of this software distribution for more
+ * information regarding the details of each license.
+ *
+ * The iri module is used to process IRIs.
+ */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "rdfa.h"
+
+/**
+ * Strips the iquery and ifragment part from an IRI. This leaves just the
+ * scheme and the ihier-part, as defined in RFC 3987. This function will
+ * copy the input string and return a new string that must be free()'d.
+ *
+ * @param iri the IRI that should be stripped of anything after the iquery
+ * and fragment, if they exist.
+ */
+char* rdfa_iri_get_base(const char* iri)
+{
+ char* rval = NULL;
+ const char* eindex = 0;
+
+ /* search to see if there is iquery separator */
+ eindex = strchr(iri, '?');
+ if(eindex == NULL)
+ {
+ /* if there is no iquery separator, check to see if there is an
+ * ifragment separator */
+ eindex = strchr(iri, '#');
+ }
+
+ /* check to see if the output string needs to be different from the
+ * input string */
+ if(eindex == NULL)
+ {
+ /* there was no iquery or ifragment in the input string, so there is
+ * no need to reformat the string */
+ rval = strdup(iri);
+ }
+ else
+ {
+ /* the output string should be concatenated */
+ unsigned int length = (unsigned int)(eindex - iri);
+ rval = (char*)malloc(length + 1);
+ rval = strncpy(rval, iri, length);
+ rval[length] = '\0';
+ }
+
+ return rval;
+}
diff --git a/librdfa/language.c b/librdfa/language.c
new file mode 100644
index 0000000..daa2daf
--- /dev/null
+++ b/librdfa/language.c
@@ -0,0 +1,55 @@
+/**
+ * Copyright 2008 Digital Bazaar, Inc.
+ *
+ * This file is part of librdfa.
+ *
+ * librdfa is Free Software, and can be licensed under any of the
+ * following three licenses:
+ *
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any
+ * newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE-* at the top of this software distribution for more
+ * information regarding the details of each license.
+ *
+ * The language module is used to determine and set the current language.
+ */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "rdfa_utils.h"
+#include "rdfa.h"
+
+/**
+ * Updates the language given the value of the xml:lang attribute.
+ *
+ * @param lang the new value of the lang attribute.
+ */
+void rdfa_update_language(rdfacontext* context, const char* lang)
+{
+ /* the [current element] is parsed for any language information,
+ * and [language] is set in the [current evaluation context]; */
+ if(lang != NULL)
+ {
+ if(strlen(lang) > 0)
+ {
+ /* if a language was specified, set it */
+ context->language = rdfa_replace_string(context->language, lang);
+ }
+ else
+ {
+ /* if a blank language was specified, clear the language context */
+ free(context->language);
+ context->language = NULL;
+ }
+ }
+}
diff --git a/librdfa/lists.c b/librdfa/lists.c
new file mode 100644
index 0000000..c41678b
--- /dev/null
+++ b/librdfa/lists.c
@@ -0,0 +1,240 @@
+/**
+ * Copyright 2012 Digital Bazaar, Inc.
+ *
+ * This file is part of librdfa.
+ *
+ * librdfa is Free Software, and can be licensed under any of the
+ * following three licenses:
+ *
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any
+ * newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE-* at the top of this software distribution for more
+ * information regarding the details of each license.
+ *
+ * Handles all triple functionality including all incomplete triple
+ * functionality.
+ *
+ * @author Manu Sporny
+ */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include "rdfa_utils.h"
+#include "rdfa.h"
+
+void rdfa_establish_new_inlist_triples(rdfacontext* context,
+ rdfalist* predicates, const char* object, rdfresource_t object_type)
+{
+ int i = 0;
+ for(i = 0; i < (int)predicates->num_items; i++)
+ {
+ const char* predicate = (const char*)predicates->items[i]->data;
+ char* resolved_predicate = rdfa_resolve_relrev_curie(context, predicate);
+ rdftriple* triple;
+ /* ensure the list mapping exists */
+ rdfa_create_list_mapping(
+ context, context->local_list_mappings,
+ context->new_subject, resolved_predicate);
+
+ /* add an incomplete triple for each list mapping */
+ triple = rdfa_create_triple(context->new_subject, resolved_predicate,
+ object, object_type, context->datatype, context->language);
+ rdfa_append_to_list_mapping(context->local_list_mappings,
+ context->new_subject, resolved_predicate, triple);
+
+ free(resolved_predicate);
+ }
+
+ if(DEBUG)
+ {
+ printf("LOCAL LIST MAPPINGS: ");
+ rdfa_print_mapping(context->local_list_mappings,
+ (print_mapping_value_fp)rdfa_print_triple_list);
+ }
+}
+
+void rdfa_save_incomplete_list_triples(
+ rdfacontext* context, const rdfalist* rel)
+{
+ unsigned int i;
+ for(i = 0; i < rel->num_items; i++)
+ {
+ const char* curie = (const char*)rel->items[i]->data;
+ char* resolved_curie = rdfa_resolve_relrev_curie(context, curie);
+
+ /* ensure the list mapping exists */
+ rdfa_create_list_mapping(
+ context, context->local_list_mappings,
+ context->new_subject, resolved_curie);
+
+ /* get the list name */
+ rdfa_add_item(
+ context->local_incomplete_triples, resolved_curie,
+ (liflag_t)(RDFALIST_FLAG_DIR_NONE | RDFALIST_FLAG_TEXT));
+
+ free(resolved_curie);
+ }
+
+ if(DEBUG)
+ {
+ printf("LOCAL INCOMPLETE TRIPLES: ");
+ rdfa_print_list(context->local_incomplete_triples);
+ }
+}
+
+void rdfa_complete_list_triples(rdfacontext* context)
+{
+ /* For each IRI in the local list mapping, if the equivalent list does
+ * not exist in the evaluation context, indicating that the list was
+ * originally instantiated on the current element, use the list as follows: */
+ int i;
+ rdfalist* list;
+ rdftriple* triple;
+ void** mptr = context->local_list_mappings;
+ char* key = NULL;
+ void** kptr = NULL;
+ void* value = NULL;
+ unsigned int list_depth = 0;
+
+ if(DEBUG)
+ {
+ printf("local_list_mappings: ");
+ rdfa_print_mapping(context->local_list_mappings,
+ (print_mapping_value_fp)rdfa_print_triple_list);
+ }
+
+ while(*mptr != NULL)
+ {
+ kptr = mptr;
+ rdfa_next_mapping(mptr++, &key, &value);
+ list = (rdfalist*)value;
+ list_depth = list->user_data;
+ mptr++;
+ if(DEBUG)
+ {
+ printf("LIST TRIPLES for key (%u/%u): KEY(%s)\n",
+ context->depth, list_depth, key);
+ }
+
+ if((context->depth < (int)list_depth) &&
+ (rdfa_get_list_mapping(
+ context->list_mappings, context->new_subject, key) == NULL) &&
+ (strcmp(key, RDFA_MAPPING_DELETED_KEY) != 0))
+ {
+ char* predicate = strstr(key, " ") + 1;
+ triple = (rdftriple*)list->items[0]->data;
+ if(list->num_items == 1)
+ {
+ /* Free unused list triple */
+ rdfa_free_triple(triple);
+
+ /* the list is empty, generate an empty list triple */
+ triple = rdfa_create_triple(context->new_subject, predicate,
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil",
+ RDF_TYPE_IRI, NULL, NULL);
+ context->default_graph_triple_callback(
+ triple, context->callback_data);
+ }
+ else
+ {
+ char* bnode = NULL;
+ char* subject;
+ char* tmp;
+ bnode = rdfa_replace_string(bnode, triple->subject);
+ for(i = 1; i < (int)list->num_items; i++)
+ {
+ char* next = NULL;
+ triple = (rdftriple*)list->items[i]->data;
+ /* Create a new 'bnode' array containing newly created bnodes,
+ * one for each item in the list
+ * For each bnode-(IRI or literal) pair from the list the
+ * following triple is generated:
+ *
+ * subject
+ * bnode
+ * predicate
+ * http://www.w3.org/1999/02/22-rdf-syntax-ns#first
+ * object
+ * full IRI or literal */
+ triple->subject =
+ rdfa_replace_string(triple->subject, bnode);
+ triple->predicate =
+ rdfa_replace_string(triple->predicate,
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#first");
+ context->default_graph_triple_callback(
+ triple, context->callback_data);
+
+ /* Free the list item */
+ free(list->items[i]);
+ list->items[i] = NULL;
+
+ /* For each item in the 'bnode' array the following triple is
+ * generated:
+ *
+ * subject
+ * bnode
+ * predicate
+ * http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
+ * object
+ * next item in the 'bnode' array or, if that does not exist,
+ * http://www.w3.org/1999/02/22-rdf-syntax-ns#nil */
+ if(i < (int)list->num_items - 1)
+ {
+ next = rdfa_create_bnode(context);
+ }
+ else
+ {
+ next = (char*)"http://www.w3.org/1999/02/22-rdf-syntax-ns#nil";
+ }
+
+ triple = rdfa_create_triple(bnode,
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest",
+ next, RDF_TYPE_IRI, NULL, NULL);
+ context->default_graph_triple_callback(
+ triple, context->callback_data);
+
+ /* Free the bnode, setting 'next' appropriately */
+ free(bnode);
+ bnode = next;
+ }
+
+ /* A single additional triple is generated:
+ * subject
+ * current subject
+ * predicate
+ * full IRI of the local list mapping associated with this list
+ * object
+ * first item of the 'bnode' array */
+ subject = strdup(key);
+ tmp = strstr(subject, " ");
+ tmp[0] = '\0';
+ triple = (rdftriple*)list->items[0]->data;
+ triple->subject =
+ rdfa_replace_string(triple->subject, subject);
+ triple->predicate =
+ rdfa_replace_string(triple->predicate, predicate);
+ context->default_graph_triple_callback(
+ triple, context->callback_data);
+ free(subject);
+ }
+
+ /* Free the first list item and empty the list */
+ free(list->items[0]);
+ list->items[0] = NULL;
+ list->num_items = 0;
+
+ /* clear the entry from the mapping */
+ *kptr = rdfa_replace_string((char*)*kptr, RDFA_MAPPING_DELETED_KEY);
+ }
+ }
+}
diff --git a/librdfa/namespace.c b/librdfa/namespace.c
new file mode 100644
index 0000000..06c7f00
--- /dev/null
+++ b/librdfa/namespace.c
@@ -0,0 +1,140 @@
+/**
+ * Copyright 2008-2011 Digital Bazaar, Inc.
+ *
+ * This file is part of librdfa.
+ *
+ * librdfa is Free Software, and can be licensed under any of the
+ * following three licenses:
+ *
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any
+ * newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE-* at the top of this software distribution for more
+ * information regarding the details of each license.
+ *
+ * This file implements mapping data structure memory management as
+ * well as updating URI mappings.
+ */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "rdfa_utils.h"
+#include "rdfa.h"
+
+/**
+ * Attempts to update the uri mappings in the given context using the
+ * given attribute/value pair.
+ *
+ * @param attribute the attribute, which must start with xmlns.
+ * @param value the value of the attribute
+ */
+void rdfa_update_uri_mappings(
+ rdfacontext* context, const char* attr, const char* value)
+{
+#ifdef LIBRDFA_IN_RAPTOR
+ raptor_namespace_stack* nstack;
+ nstack = &context->sax2->namespaces;
+#endif
+
+ /* * the [current element] is parsed for [URI mappings] and these
+ * are added to the [list of URI mappings]. Note that a [URI
+ * mapping] will simply overwrite any current mapping in the list
+ * that has the same name; */
+
+ /* Mappings are provided by @xmlns. The value to be mapped is set
+ * by the XML namespace prefix, and the value to map is the value
+ * of the attribute -- a URI. Note that the URI is not processed
+ * in any way; in particular if it is a relative path it is not
+ * resolved against the [current base]. Authors are advised to
+ * follow best practice for using namespaces, which includes not
+ * using relative paths. */
+
+ if(attr == NULL)
+ {
+#ifdef LIBRDFA_IN_RAPTOR
+ raptor_namespaces_start_namespace_full(nstack,
+ NULL,
+ (const unsigned char*)value,
+ 0);
+#else
+ rdfa_update_mapping(
+ context->uri_mappings, XMLNS_DEFAULT_MAPPING, value,
+ (update_mapping_value_fp)rdfa_replace_string);
+#endif
+ }
+ else if(strcmp(attr, "_") == 0)
+ {
+#define FORMAT_1 "The underscore character must not be declared as a prefix " \
+ "because it conflicts with the prefix for blank node identifiers. " \
+ "The occurrence of this prefix declaration is being ignored."
+#ifdef LIBRDFA_IN_RAPTOR
+ raptor_parser_warning((raptor_parser*)context->callback_data,
+ FORMAT_1);
+#else
+ rdfa_processor_triples(context,
+ RDFA_PROCESSOR_WARNING,
+ FORMAT_1);
+#endif
+ }
+ else if(attr[0] == ':' || attr[0] == '_' ||
+ (attr[0] >= 'A' && attr[0] <= 'Z') ||
+ (attr[0] >= 'a' && attr[0] <= 'z') ||
+ ((unsigned char)attr[0] >= 0xc0 && (unsigned char)attr[0] <= 0xd6) ||
+ ((unsigned char)attr[0] >= 0xd8 && (unsigned char)attr[0] <= 0xf6) || (unsigned char)attr[0] >= 0xf8)
+ {
+#ifdef LIBRDFA_IN_RAPTOR
+ raptor_namespaces_start_namespace_full(nstack,
+ (const unsigned char*)attr,
+ (const unsigned char*)value,
+ 0);
+#else
+ rdfa_generate_namespace_triple(context, attr, value);
+ rdfa_update_mapping(context->uri_mappings, attr, value,
+ (update_mapping_value_fp)rdfa_replace_string);
+#endif
+ }
+ else
+ {
+ /* allowable characters for CURIEs:
+ * ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] |
+ * [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] |
+ * [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD]
+ * | [#x10000-#xEFFFF]
+ */
+
+ /* Generate the processor warning if this is an invalid prefix */
+#define FORMAT_2 "The declaration of the '%s' prefix is invalid " \
+ "because it starts with an invalid character. Please see " \
+ "http://www.w3.org/TR/REC-xml/#NT-NameStartChar for a " \
+ "full explanation of valid first characters for declaring " \
+ "prefixes."
+#ifdef LIBRDFA_IN_RAPTOR
+ raptor_parser_warning((raptor_parser*)context->callback_data,
+ FORMAT_2, attr);
+#else
+ char msg[1024];
+ snprintf(msg, 1024, FORMAT_1);
+ rdfa_processor_triples(context, RDFA_PROCESSOR_WARNING, msg);
+#endif
+ }
+
+#ifdef LIBRDFA_IN_RAPTOR
+#else
+ /* print the current mapping */
+ if(DEBUG)
+ {
+ printf("DEBUG: PREFIX MAPPINGS:");
+ rdfa_print_mapping(context->uri_mappings,
+ (print_mapping_value_fp)rdfa_print_string);
+ }
+#endif
+}
diff --git a/librdfa/rdfa.c b/librdfa/rdfa.c
new file mode 100644
index 0000000..ef6e8f2
--- /dev/null
+++ b/librdfa/rdfa.c
@@ -0,0 +1,1538 @@
+/**
+ * Copyright 2008-2011 Digital Bazaar, Inc.
+ *
+ * This file is part of librdfa.
+ *
+ * librdfa is Free Software, and can be licensed under any of the
+ * following three licenses:
+ *
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any
+ * newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE-* at the top of this software distribution for more
+ * information regarding the details of each license.
+ *
+ * The librdfa library is the Fastest RDFa Parser in the Universe. It is
+ * a stream parser, meaning that it takes an XML data as input and spits
+ * out RDF triples as it comes across them in the stream. Due to this
+ * processing approach, librdfa has a very, very small memory footprint.
+ * It is also very fast and can operate on hundreds of gigabytes of XML
+ * data without breaking a sweat.
+ *
+ * Usage:
+ *
+ * rdfacontext* context = rdfa_create_context(BASE_URI);
+ * context->callback_data = your_user_data;
+ * rdfa_set_default_graph_triple_handler(context, &default_graph_triple);
+ * rdfa_set_processor_graph_triple_handler(context, &processor_graph_triple);
+ * rdfa_set_buffer_filler(context, &fill_buffer);
+ * rdfa_parse(context);
+ * rdfa_free_context(context);
+ *
+ * @author Manu Sporny
+ */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#include <ctype.h>
+#include <libxml/SAX2.h>
+#include "rdfa_utils.h"
+#include "rdfa.h"
+#include "strtok_r.h"
+
+#define READ_BUFFER_SIZE 4096
+#define RDFA_DOCTYPE_STRING_LENGTH 103
+
+/**
+ * Read the head of the XHTML document and determines the base IRI for
+ * the document.
+ *
+ * @param context the current working context.
+ * @param working_buffer the current working buffer.
+ * @param wb_allocated the number of bytes that have been allocated to
+ * the working buffer.
+ *
+ * @return the size of the data available in the working buffer.
+ */
+static size_t rdfa_init_base(
+ rdfacontext* context, char** working_buffer, size_t* working_buffer_size,
+ char* temp_buffer, size_t bytes_read)
+{
+ char* head_end = NULL;
+ size_t offset = context->wb_position;
+ size_t needed_size = 0;
+
+ if((offset + bytes_read) > *working_buffer_size)
+ {
+ needed_size = (offset + bytes_read) - *working_buffer_size;
+ }
+
+ /* search for the end of <head>, stop if <head> was found */
+
+ /* extend the working buffer size */
+ if(needed_size > 0)
+ {
+ size_t temp_buffer_size = sizeof(char) * READ_BUFFER_SIZE;
+ if((size_t)needed_size > temp_buffer_size)
+ temp_buffer_size += needed_size;
+
+ *working_buffer_size += temp_buffer_size;
+ /* +1 for NUL at end, to allow strstr() etc. to work */
+ *working_buffer = (char*)realloc(*working_buffer, *working_buffer_size + 1);
+ }
+
+ /* append to the working buffer */
+ memmove(*working_buffer + offset, temp_buffer, bytes_read);
+ /* ensure the buffer is a NUL-terminated string */
+ *(*working_buffer + offset + bytes_read) = '\0';
+
+ /* Sniff the beginning of the document for any document information */
+ if(strstr(*working_buffer, "-//W3C//DTD XHTML+RDFa 1.0//EN") != NULL)
+ {
+ context->host_language = HOST_LANGUAGE_XHTML1;
+ context->rdfa_version = RDFA_VERSION_1_0;
+ }
+ else if(strstr(*working_buffer, "-//W3C//DTD XHTML+RDFa 1.1//EN") != NULL)
+ {
+ context->host_language = HOST_LANGUAGE_XHTML1;
+ context->rdfa_version = RDFA_VERSION_1_1;
+ }
+ else if(strstr(*working_buffer, "<html") != NULL)
+ {
+ context->host_language = HOST_LANGUAGE_HTML;
+ context->rdfa_version = RDFA_VERSION_1_1;
+ }
+ else
+ {
+ context->host_language = HOST_LANGUAGE_XML1;
+ context->rdfa_version = RDFA_VERSION_1_1;
+ }
+
+#ifdef LIBRDFA_IN_RAPTOR
+ if(context->raptor_rdfa_version == 10) {
+ context->host_language = HOST_LANGUAGE_XHTML1;
+ context->rdfa_version = RDFA_VERSION_1_0;
+ } else if(context->raptor_rdfa_version == 11)
+ context->rdfa_version = RDFA_VERSION_1_1;
+#endif
+
+ /* search for the end of </head> in */
+ head_end = strstr(*working_buffer, "</head>");
+ if(head_end == NULL)
+ head_end = strstr(*working_buffer, "</HEAD>");
+
+ context->wb_position += bytes_read;
+
+ if(head_end == NULL)
+ return bytes_read;
+
+ /* if </head> was found, search for <base and extract the base URI */
+ if(head_end != NULL)
+ {
+ char* base_start = strstr(*working_buffer, "<base ");
+ if(base_start == NULL)
+ base_start = strstr(*working_buffer, "<BASE ");
+
+ if(base_start != NULL)
+ {
+ char* href_start = strstr(base_start, "href=");
+ char sep = href_start[5];
+ char* uri_start = href_start + 6;
+ char* uri_end = strchr(uri_start, sep);
+
+ if((uri_start != NULL) && (uri_end != NULL))
+ {
+ if(*uri_start != sep)
+ {
+ size_t uri_size = uri_end - uri_start;
+ char* temp_uri = (char*)malloc(sizeof(char) * uri_size + 1);
+ char* cleaned_base;
+ strncpy(temp_uri, uri_start, uri_size);
+ temp_uri[uri_size] = '\0';
+
+ /* TODO: This isn't in the processing rules, should it
+ * be? Setting current_object_resource will make
+ * sure that the BASE element is inherited by all
+ * subcontexts. */
+ cleaned_base = rdfa_iri_get_base(temp_uri);
+ context->current_object_resource =
+ rdfa_replace_string(
+ context->current_object_resource, cleaned_base);
+
+ /* clean up the base context */
+ context->base =
+ rdfa_replace_string(context->base, cleaned_base);
+ free(cleaned_base);
+ free(temp_uri);
+ }
+ }
+ }
+ }
+
+ return bytes_read;
+}
+
+#ifdef LIBRDFA_IN_RAPTOR
+static int
+raptor_nspace_compare(const void *a, const void *b)
+{
+ raptor_namespace* ns_a=*(raptor_namespace**)a;
+ raptor_namespace* ns_b=*(raptor_namespace**)b;
+ if(!ns_a->prefix)
+ return 1;
+ else if(!ns_b->prefix)
+ return -1;
+ else
+ return strcmp((const char*)ns_b->prefix, (const char*)ns_a->prefix);
+}
+#endif
+
+/**
+ * Handles the start_element call
+ */
+static void start_element(void *parser_context, const char* name,
+ const char* prefix, const char* URI, int nb_namespaces,
+ const char** namespaces, int nb_attributes, int nb_defaulted,
+ const char** attributes)
+{
+ rdfacontext* root_context = (rdfacontext*)parser_context;
+ rdfalist* context_stack = (rdfalist*)root_context->context_stack;
+ rdfacontext* context = rdfa_create_new_element_context(context_stack);
+ char* xml_lang = NULL;
+ const char* about_curie = NULL;
+ char* about = NULL;
+ const char* src_curie = NULL;
+ char* src = NULL;
+ const char* type_of_curie = NULL;
+ rdfalist* type_of = NULL;
+ const char* rel_curie = NULL;
+ rdfalist* rel = NULL;
+ const char* rev_curie = NULL;
+ rdfalist* rev = NULL;
+ const char* property_curie = NULL;
+ rdfalist* property = NULL;
+ const char* resource_curie = NULL;
+ char* resource = NULL;
+ const char* href_curie = NULL;
+ char* href = NULL;
+ char* content = NULL;
+ const char* datatype_curie = NULL;
+ char* datatype = NULL;
+
+#ifdef LIBRDFA_IN_RAPTOR
+ if(1) {
+ raptor_parser* rdf_parser = (raptor_parser*)context->callback_data;
+ raptor_sax2_update_document_locator(context->sax2,
+ &rdf_parser->locator);
+ }
+#endif
+
+ rdfa_push_item(context_stack, context, RDFALIST_FLAG_CONTEXT);
+
+ if(DEBUG)
+ {
+ int i;
+
+ /* dump all arguments sent to this callback */
+ fprintf(stdout, "DEBUG: SAX.startElementNs(%s", (char *) name);
+ if (prefix == NULL)
+ fprintf(stdout, ", NULL");
+ else
+ fprintf(stdout, ", %s", (char *) prefix);
+ if (URI == NULL)
+ fprintf(stdout, ", NULL");
+ else
+ fprintf(stdout, ", '%s'", (char *) URI);
+ fprintf(stdout, ", %d", nb_namespaces);
+
+ /* dump all namespaces */
+ if (namespaces != NULL) {
+ for (i = 0;i < nb_namespaces * 2;i++) {
+ fprintf(stdout, ", xmlns");
+ if (namespaces[i] != NULL)
+ fprintf(stdout, ":%s", namespaces[i]);
+ i++;
+ fprintf(stdout, "='%s'", namespaces[i]);
+ }
+ }
+
+ /* dump all attributes */
+ fprintf(stdout, ", %d, %d", nb_attributes, nb_defaulted);
+ if (attributes != NULL) {
+ for (i = 0;i < nb_attributes * 5;i += 5) {
+ if (attributes[i + 1] != NULL)
+ fprintf(
+ stdout, ", %s:%s='", attributes[i + 1], attributes[i]);
+ else
+ fprintf(stdout, ", %s='", attributes[i]);
+ fprintf(stdout, "%.4s...', %d", attributes[i + 3],
+ (int)(attributes[i + 4] - attributes[i + 3]));
+ }
+ }
+ fprintf(stdout, ")\n");
+ }
+
+ /* start the XML Literal text */
+ if(context->xml_literal == NULL)
+ {
+ context->xml_literal = rdfa_replace_string(context->xml_literal, "<");
+ context->xml_literal_size = 1;
+ }
+ else
+ {
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size, "<", 1);
+ }
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size,
+ name, strlen(name));
+
+ if(!context->xml_literal_namespaces_defined)
+ {
+ /* append namespaces to XML Literal */
+#ifdef LIBRDFA_IN_RAPTOR
+ raptor_namespace_stack* nstack = &context->sax2->namespaces;
+ raptor_namespace* ns;
+ raptor_namespace** ns_list = NULL;
+ size_t ns_size;
+#else
+ void** umap = context->uri_mappings;
+#endif
+ char* umap_key = NULL;
+ void* umap_value = NULL;
+
+ /* if the namespaces are not defined, then neither is the xml:lang */
+ context->xml_literal_xml_lang_defined = 0;
+
+#ifdef LIBRDFA_IN_RAPTOR
+ ns_size = 0;
+ ns_list = raptor_namespace_stack_to_array(nstack, &ns_size);
+ qsort((void*)ns_list, ns_size, sizeof(raptor_namespace*),
+ raptor_nspace_compare);
+
+ while(ns_size > 0)
+#else
+ while(*umap != NULL)
+#endif
+ {
+ unsigned char insert_xmlns_definition = 1;
+ const char* attr = NULL;
+
+ /* get the next mapping to process */
+#ifdef LIBRDFA_IN_RAPTOR
+ ns=ns_list[--ns_size];
+
+ umap_key = (char*)raptor_namespace_get_prefix(ns);
+ if(!umap_key)
+ umap_key=(char*)XMLNS_DEFAULT_MAPPING;
+ umap_value = (char*)raptor_uri_as_string(raptor_namespace_get_uri(ns));
+#else
+ rdfa_next_mapping(umap++, &umap_key, &umap_value);
+ umap++;
+#endif
+
+ /* check to make sure that the namespace isn't already
+ * defined in the current element. */
+ if(attributes != NULL)
+ {
+ const char** attrs = attributes;
+ while((*attrs != NULL) && insert_xmlns_definition)
+ {
+ attr = *attrs++;
+
+ /* if the attribute is a umap_key, skip the definition
+ * of the attribute. */
+ if(strcmp(attr, umap_key) == 0)
+ {
+ insert_xmlns_definition = 0;
+ }
+ }
+ }
+
+ /* if the namespace isn't already defined on the element,
+ * copy it to the XML Literal string. */
+ if(insert_xmlns_definition)
+ {
+ /* append the namespace attribute to the XML Literal */
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size,
+ " xmlns", strlen(" xmlns"));
+
+ /* check to see if we're dumping the standard XHTML namespace or
+ * a user-defined XML namespace */
+ if(strcmp(umap_key, XMLNS_DEFAULT_MAPPING) != 0)
+ {
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size, ":", 1);
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size,
+ umap_key, strlen(umap_key));
+ }
+
+ /* append the namespace value */
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size, "=\"", 2);
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size,
+ (const char*)umap_value, strlen((char*)umap_value));
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size, "\"", 1);
+ }
+
+ } /* end while umap not NULL */
+ context->xml_literal_namespaces_defined = 1;
+
+#ifdef LIBRDFA_IN_RAPTOR
+ if(ns_list)
+ raptor_free_memory(ns_list);
+#endif
+ } /* end if namespaces inserted */
+
+#ifdef LIBRDFA_IN_RAPTOR
+ /* Raptor namespace code does this already */
+#else
+ /* 3. For backward compatibility, RDFa Processors should also permit the
+ * definition of mappings via @xmlns. In this case, the value to be mapped
+ * is set by the XML namespace prefix, and the value to map is the value of
+ * the attribute - an IRI. (Note that prefix mapping via @xmlns is
+ * deprecated, and may be removed in a future version of this
+ * specification.) When xmlns is supported, such mappings must be processed
+ * before processing any mappings from @prefix on the same element. */
+ if(namespaces != NULL)
+ {
+ int ni;
+
+ for(ni = 0; ni < nb_namespaces * 2; ni += 2)
+ {
+ const char* ns = namespaces[ni];
+ const char* value = namespaces[ni + 1];
+ /* Regardless of how the mapping is declared, the value to be mapped
+ * must be converted to lower case, and the IRI is not processed in
+ * any way; in particular if it is a relative path it must not be
+ * resolved against the current base. */
+ char* lcns = NULL;
+ if(ns != NULL)
+ {
+ /* convert the namespace string to lowercase */
+ unsigned int i;
+ size_t ns_length = strlen(ns);
+ lcns = (char*)malloc(ns_length + 1);
+ for(i = 0; i <= ns_length; i++)
+ {
+ lcns[i] = tolower(ns[i]);
+ }
+ }
+
+ /* update the URI mappings */
+ rdfa_update_uri_mappings(context, lcns, value);
+
+ if(lcns != NULL)
+ {
+ free(lcns);
+ }
+ }
+ }
+#endif
+
+ /* detect the RDFa version of the document, if specified */
+ if(attributes != NULL)
+ {
+ int ci;
+
+ /* search for a version attribute */
+ for(ci = 0; ci < nb_attributes * 5; ci += 5)
+ {
+ const char* attr;
+ char* value;
+ size_t value_length = 0;
+
+ attr = attributes[ci];
+ value_length = attributes[ci + 4] - attributes[ci + 3] + 1;
+
+ if(strcmp(attr, "version") == 0)
+ {
+ /* append the attribute-value pair to the XML literal */
+ value = (char*)malloc(value_length + 1);
+ snprintf(value, value_length, "%s", attributes[ci + 3]);
+ if(strstr(value, "RDFa 1.0") != NULL)
+ {
+ context->rdfa_version = RDFA_VERSION_1_0;
+ }
+ else if(strstr(value, "RDFa 1.1") != NULL)
+ {
+ context->rdfa_version = RDFA_VERSION_1_1;
+ }
+
+ free(value);
+ }
+ }
+ }
+
+#ifdef LIBRDFA_IN_RAPTOR
+ if(context->sax2)
+ {
+ /* Raptor handles xml:lang itself but not 'lang' */
+ xml_lang = (char*)raptor_sax2_inscope_xml_language(context->sax2);
+ xml_lang = rdfa_replace_string(NULL, xml_lang);
+ }
+#endif
+
+ /* prepare all of the RDFa-specific attributes we are looking for.
+ * scan all of the attributes for the RDFa-specific attributes */
+ if(attributes != NULL)
+ {
+ int ci;
+
+ if(context->rdfa_version == RDFA_VERSION_1_1)
+ {
+ /* process all vocab and prefix attributes */
+ for(ci = 0; ci < nb_attributes * 5; ci += 5)
+ {
+ const char* attr;
+ char* value;
+ size_t value_length = 0;
+
+ attr = attributes[ci];
+ value_length = attributes[ci + 4] - attributes[ci + 3] + 1;
+
+ /* append the attribute-value pair to the XML literal */
+ value = (char*)malloc(value_length + 1);
+ snprintf(value, value_length, "%s", attributes[ci + 3]);
+
+ /* 2. Next the current element is examined for any change to the
+ * default vocabulary via @vocab. */
+ if(strcmp(attr, "vocab") == 0)
+ {
+ if(strlen(value) < 1)
+ {
+ /* If the value is empty, then the local default vocabulary
+ * must be reset to the Host Language defined default
+ * (if any). */
+ free(context->default_vocabulary);
+ context->default_vocabulary = NULL;
+ }
+ else
+ {
+ char* resolved_uri;
+ rdftriple* triple;
+
+ /* If @vocab is present and contains a value, the local
+ * default vocabulary is updated according to the
+ * section on CURIE and IRI Processing. */
+ resolved_uri = rdfa_resolve_uri(context, value);
+ context->default_vocabulary = rdfa_replace_string(
+ context->default_vocabulary, resolved_uri);
+
+ /* The value of @vocab is used to generate a triple */
+ triple = rdfa_create_triple(
+ context->base, "http://www.w3.org/ns/rdfa#usesVocabulary",
+ resolved_uri, RDF_TYPE_IRI, NULL, NULL);
+ context->default_graph_triple_callback(
+ triple, context->callback_data);
+
+ free(resolved_uri);
+ }
+ }
+ else if(strcmp(attr, "prefix") == 0)
+ {
+ /* Mappings are defined via @prefix. */
+ char* working_string = NULL;
+ char* atprefix = NULL;
+ char* iri = NULL;
+ char* saveptr = NULL;
+
+ working_string = rdfa_replace_string(working_string, value);
+
+ /* Values in this attribute are evaluated from beginning to
+ * end (e.g., left to right in typical documents). */
+ atprefix = strtok_r(working_string, ":", &saveptr);
+ while(atprefix != NULL)
+ {
+ /* find the prefix and IRI mappings while skipping whitespace */
+ while((*saveptr == ' ' || *saveptr == '\n' ||
+ *saveptr == '\r' || *saveptr == '\t' || *saveptr == '\f' ||
+ *saveptr == '\v') && *saveptr != '\0')
+ {
+ saveptr++;
+ }
+ iri = strtok_r(NULL, RDFA_WHITESPACE, &saveptr);
+
+ /* update the prefix mappings */
+ rdfa_update_uri_mappings(context, atprefix, iri);
+
+ if(!saveptr)
+ break;
+
+ while((*saveptr == ' ' || *saveptr == '\n' ||
+ *saveptr == '\r' || *saveptr == '\t' || *saveptr == '\f' ||
+ *saveptr == '\v') && *saveptr != '\0')
+ {
+ saveptr++;
+ }
+
+ /* get the next prefix to process */
+ atprefix = strtok_r(NULL, ":", &saveptr);
+ }
+
+ free(working_string);
+ }
+ else if(strcmp(attr, "inlist") == 0)
+ {
+ context->inlist_present = 1;
+ }
+ free(value);
+ }
+ }
+
+ /* resolve all of the other RDFa values */
+ for(ci = 0; ci < nb_attributes * 5; ci += 5)
+ {
+ const char* attr;
+ char* value;
+ char* attrns;
+ char* literal_text;
+ size_t value_length = 0;
+
+ attr = attributes[ci];
+ attrns = (char*)attributes[ci + 1];
+ value_length = attributes[ci + 4] - attributes[ci + 3] + 1;
+
+ /* append the attribute-value pair to the XML literal */
+ value = (char*)malloc(value_length + 1);
+ literal_text = (char*)malloc(strlen(attr) + value_length + 5);
+ snprintf(value, value_length, "%s", attributes[ci + 3]);
+
+ sprintf(literal_text, " %s=\"%s\"", attr, value);
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size,
+ literal_text, strlen(literal_text));
+ free(literal_text);
+
+ /* if xml:lang is defined, ensure that it is not overwritten */
+ if(attrns != NULL && strcmp(attrns, "xml") == 0 &&
+ strcmp(attr, "lang") == 0)
+ {
+ context->xml_literal_xml_lang_defined = 1;
+ }
+
+ /* process all of the RDFa attributes */
+ if(strcmp(attr, "about") == 0)
+ {
+ about_curie = value;
+ about = rdfa_resolve_curie(
+ context, about_curie, CURIE_PARSE_ABOUT_RESOURCE);
+ }
+ else if(strcmp(attr, "src") == 0)
+ {
+ src_curie = value;
+ src = rdfa_resolve_curie(context, src_curie, CURIE_PARSE_HREF_SRC);
+ }
+ else if(strcmp(attr, "typeof") == 0)
+ {
+ type_of_curie = value;
+ type_of = rdfa_resolve_curie_list(
+ context, type_of_curie,
+ CURIE_PARSE_INSTANCEOF_DATATYPE);
+ }
+ else if(strcmp(attr, "rel") == 0)
+ {
+ context->rel_present = 1;
+ rel_curie = value;
+ rel = rdfa_resolve_curie_list(
+ context, rel_curie, CURIE_PARSE_RELREV);
+ }
+ else if(strcmp(attr, "rev") == 0)
+ {
+ context->rev_present = 1;
+ rev_curie = value;
+ rev = rdfa_resolve_curie_list(
+ context, rev_curie, CURIE_PARSE_RELREV);
+ }
+ else if(strcmp(attr, "property") == 0)
+ {
+ property_curie = value;
+ property =
+ rdfa_resolve_curie_list(
+ context, property_curie, CURIE_PARSE_PROPERTY);
+ }
+ else if(strcmp(attr, "resource") == 0)
+ {
+ resource_curie = value;
+ resource = rdfa_resolve_curie(
+ context, resource_curie, CURIE_PARSE_ABOUT_RESOURCE);
+ }
+ else if(strcmp(attr, "href") == 0)
+ {
+ href_curie = value;
+ href =
+ rdfa_resolve_curie(context, href_curie, CURIE_PARSE_HREF_SRC);
+ }
+ else if(strcmp(attr, "content") == 0)
+ {
+ content = rdfa_replace_string(content, value);
+ }
+ else if(strcmp(attr, "datatype") == 0)
+ {
+ datatype_curie = value;
+
+ if(strlen(datatype_curie) == 0)
+ {
+ datatype = rdfa_replace_string(datatype, "");
+ }
+ else
+ {
+ datatype = rdfa_resolve_curie(context, datatype_curie,
+ CURIE_PARSE_INSTANCEOF_DATATYPE);
+ }
+ }
+ else if((attrns == NULL && strcmp(attr, "lang") == 0) ||
+ (attrns != NULL && strcmp(attrns, "xml") == 0 &&
+ strcmp(attr, "lang") == 0))
+ {
+ xml_lang = rdfa_replace_string(xml_lang, value);
+ }
+
+ free(value);
+ }
+ }
+
+ /* The root element has an implicit @about declaration */
+ if(context->depth == 1 && about == NULL && resource == NULL &&
+ href == NULL && src == NULL)
+ {
+ about_curie = "";
+ about = rdfa_resolve_curie(
+ context, about_curie, CURIE_PARSE_ABOUT_RESOURCE);
+ }
+
+ /* The HEAD and BODY element in XHTML and HTML has an implicit
+ * about="" on it.
+ */
+ if(about == NULL && resource == NULL && href == NULL && src == NULL &&
+ (context->parent_subject == NULL || type_of != NULL) &&
+ ((context->host_language == HOST_LANGUAGE_XHTML1 ||
+ context->host_language == HOST_LANGUAGE_HTML) &&
+ (strcasecmp(name, "head") == 0 || strcasecmp(name, "body") == 0)))
+ {
+ about_curie = "";
+ about = rdfa_resolve_curie(
+ context, about_curie, CURIE_PARSE_ABOUT_RESOURCE);
+ }
+
+ /* check to see if we should append an xml:lang to the XML Literal
+ * if one is defined in the context and does not exist on the
+ * element. */
+ if((xml_lang == NULL) && (context->language != NULL) &&
+ !context->xml_literal_xml_lang_defined)
+ {
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size,
+ " xml:lang=\"", strlen(" xml:lang=\""));
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size,
+ context->language, strlen(context->language));
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size, "\"", 1);
+
+ /* ensure that the lang isn't set in a subtree (unless it's overwritten) */
+ context->xml_literal_xml_lang_defined = 1;
+ }
+
+ /* close the XML Literal value */
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size, ">", 1);
+
+ /* 3. The [current element] is also parsed for any language
+ * information, and [language] is set in the [current
+ * evaluation context]; */
+ rdfa_update_language(context, xml_lang);
+
+ /***************** FOR DEBUGGING PURPOSES ONLY ******************/
+ if(DEBUG)
+ {
+ printf("DEBUG: depth = %u\n", context->depth);
+ if(about != NULL)
+ {
+ printf("DEBUG: @about = %s\n", about);
+ }
+ if(src != NULL)
+ {
+ printf("DEBUG: @src = %s\n", src);
+ }
+ if(type_of != NULL)
+ {
+ printf("DEBUG: @type_of = ");
+ rdfa_print_list(type_of);
+ }
+ if(context->inlist_present)
+ {
+ printf("DEBUG: @inlist = true\n");
+ }
+ if(rel != NULL)
+ {
+ printf("DEBUG: @rel = ");
+ rdfa_print_list(rel);
+ }
+ if(rev != NULL)
+ {
+ printf("DEBUG: @rev = ");
+ rdfa_print_list(rev);
+ }
+ if(property != NULL)
+ {
+ printf("DEBUG: @property = ");
+ rdfa_print_list(property);
+ }
+ if(resource != NULL)
+ {
+ printf("DEBUG: @resource = %s\n", resource);
+ }
+ if(href != NULL)
+ {
+ printf("DEBUG: @href = %s\n", href);
+ }
+ if(content != NULL)
+ {
+ printf("DEBUG: @content = %s\n", content);
+ }
+ if(datatype != NULL)
+ {
+ printf("DEBUG: @datatype = %s\n", datatype);
+ }
+ if(xml_lang != NULL)
+ {
+ printf("DEBUG: @xml:lang = %s\n", xml_lang);
+ }
+ }
+
+ /* TODO: This isn't part of the processing model, it needs to be
+ * included and is a correction for the last item in step #4. */
+ if((about == NULL) && (src == NULL) && (type_of == NULL) &&
+ (rel == NULL) && (rev == NULL) && (property == NULL) &&
+ (resource == NULL) && (href == NULL) &&
+ (context->default_vocabulary == NULL) && (prefix == NULL))
+ {
+ context->skip_element = 1;
+ }
+
+ if((rel == NULL) && (rev == NULL))
+ {
+ if(context->rdfa_version == RDFA_VERSION_1_0)
+ {
+ /* 4. If the [current element] contains no valid @rel or @rev
+ * URI, obtained according to the section on CURIE and URI
+ * Processing, then the next step is to establish a value for
+ * [new subject]. Any of the attributes that can carry a
+ * resource can set [new subject]; */
+ rdfa_establish_new_1_0_subject(
+ context, name, about, src, resource, href, type_of);
+ }
+ else
+ {
+ rdfa_establish_new_1_1_subject(
+ context, name, about, src, resource, href, type_of, property,
+ content, datatype);
+ }
+ }
+ else
+ {
+ if(context->rdfa_version == RDFA_VERSION_1_0)
+ {
+ /* 5. If the [current element] does contain a valid @rel or @rev
+ * URI, obtained according to the section on CURIE and URI
+ * Processing, then the next step is to establish both a value
+ * for [new subject] and a value for [current object resource]: */
+ rdfa_establish_new_1_0_subject_with_relrev(
+ context, name, about, src, resource, href, type_of);
+ }
+ else
+ {
+ rdfa_establish_new_1_1_subject_with_relrev(
+ context, name, about, src, resource, href, type_of);
+ }
+ }
+
+ if(context->new_subject != NULL)
+ {
+ if(DEBUG)
+ {
+ printf("DEBUG: new_subject = %s\n", context->new_subject);
+ }
+
+ /* RDFa 1.0: 6. If in any of the previous steps a [new subject] was set
+ * to a non-null value, it is now used to provide a subject for
+ * type values; */
+ /* RDFa 1.1: 7. If in any of the previous steps a typed resource was set
+ * to a non-null value, it is now used to provide a subject for type
+ * values;
+ */
+ if(type_of != NULL)
+ {
+ rdfa_complete_type_triples(context, type_of);
+ }
+
+ /* Note that none of this block is executed if there is no
+ * [new subject] value, i.e., [new subject] remains null. */
+ }
+
+ if(context->current_object_resource != NULL)
+ {
+ /* If the element contains both the @inlist and the @rel attributes:
+ * the @rel may contain one or more resources, obtained according to
+ * the section on CURIE and IRI Processing each of which is used to
+ * add an entry to the list mapping as follows:
+ * if the local list mapping does not contain a list associated with
+ * the IRI, instantiate a new list and add to local list mappings
+ * add the current object resource to the list associated with the
+ * resource in the local list mapping */
+ if(context->rdfa_version == RDFA_VERSION_1_1 && (rel != NULL) &&
+ context->inlist_present)
+ {
+ rdfresource_t object_type = RDF_TYPE_IRI;
+ if((property != NULL) || (content != NULL))
+ {
+ object_type = RDF_TYPE_PLAIN_LITERAL;
+ if(datatype != NULL)
+ {
+ object_type = RDF_TYPE_TYPED_LITERAL;
+ }
+ }
+ rdfa_establish_new_inlist_triples(
+ context, rel, context->current_object_resource, object_type);
+ }
+
+ /* 7. If in any of the previous steps a [current object resource]
+ * was set to a non-null value, it is now used to generate triples */
+ rdfa_complete_relrev_triples(context, rel, rev);
+ }
+
+ if((context->current_object_resource == NULL) &&
+ context->rdfa_version == RDFA_VERSION_1_1 && (rel != NULL) &&
+ context->inlist_present)
+ {
+ rdfa_save_incomplete_list_triples(context, rel);
+ }
+ else if((context->current_object_resource == NULL) &&
+ ((rel != NULL) || (rev != NULL)))
+ {
+ /* 8. If however [current object resource] was set to null, but
+ * there are predicates present, then they must be stored as
+ * [incomplete triple]s, pending the discovery of a subject that
+ * can be used as the object. Also, [current object resource]
+ * should be set to a newly created [bnode] */
+ rdfa_save_incomplete_triples(context, rel, rev);
+ }
+
+ /* Ensure to re-insert XML Literal namespace information from this
+ * point on... */
+ if(property != NULL)
+ {
+ context->xml_literal_namespaces_defined = 0;
+ }
+
+ /* save these for processing steps #9 and #10 */
+ context->about = rdfa_replace_string(context->about, about);
+ context->resource = rdfa_replace_string(context->resource, resource);
+ context->href = rdfa_replace_string(context->href, href);
+ context->src = rdfa_replace_string(context->src, src);
+ context->content = rdfa_replace_string(context->content, content);
+ context->datatype = rdfa_replace_string(context->datatype, datatype);
+ context->property = property;
+
+ /* free the resolved CURIEs */
+ free(about);
+ free(src);
+ rdfa_free_list(type_of);
+ rdfa_free_list(rel);
+ rdfa_free_list(rev);
+ free(xml_lang);
+ free(content);
+ free(resource);
+ free(href);
+ free(datatype);
+}
+
+static void character_data(
+ void *parser_context, const xmlChar *s, int len)
+{
+ /*xmlParserCtxtPtr parser = (xmlParserCtxtPtr)parser_context;*/
+ rdfalist* context_stack =
+ (rdfalist*)((rdfacontext*)parser_context)->context_stack;
+ rdfacontext* context = (rdfacontext*)
+ context_stack->items[context_stack->num_items - 1]->data;
+
+ char *buffer = (char*)malloc(len + 1);
+ memset(buffer, 0, len + 1);
+ memcpy(buffer, s, len);
+
+ /* append the text to the current context's plain literal */
+ if(context->plain_literal == NULL)
+ {
+ context->plain_literal =
+ rdfa_replace_string(context->plain_literal, buffer);
+ context->plain_literal_size = len;
+ }
+ else
+ {
+ context->plain_literal = rdfa_n_append_string(
+ context->plain_literal,
+ &context->plain_literal_size, buffer, len);
+ }
+
+ /* append the text to the current context's XML literal */
+ if(context->xml_literal == NULL)
+ {
+ context->xml_literal =
+ rdfa_replace_string(context->xml_literal, buffer);
+ context->xml_literal_size = len;
+ }
+ else
+ {
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size, buffer, len);
+ }
+
+ /*printf("plain_literal: %s\n", context->plain_literal);*/
+ /*printf("xml_literal: %s\n", context->xml_literal);*/
+
+ free(buffer);
+}
+
+static void end_element(void* parser_context, const char* name,
+ const char* prefix,const xmlChar* URI)
+{
+ /*xmlParserCtxtPtr parser = (xmlParserCtxtPtr)parser_context;*/
+ rdfalist* context_stack =
+ (rdfalist*)((rdfacontext*)parser_context)->context_stack;
+ rdfacontext* context = (rdfacontext*)rdfa_pop_item(context_stack);
+ rdfacontext* parent_context = (rdfacontext*)
+ context_stack->items[context_stack->num_items - 1]->data;
+
+ /* append the text to the current context's XML literal */
+ char* buffer = (char*)malloc(strlen(name) + 4);
+
+ if(DEBUG)
+ {
+ printf("DEBUG: </%s>\n", name);
+ printf("context->local_list_mappings (start of end_element): ");
+ rdfa_print_mapping(context->local_list_mappings,
+ (print_mapping_value_fp)rdfa_print_triple_list);
+ }
+
+ sprintf(buffer, "</%s>", name);
+ if(context->xml_literal == NULL)
+ {
+ context->xml_literal =
+ rdfa_replace_string(context->xml_literal, buffer);
+ context->xml_literal_size = strlen(buffer);
+ }
+ else
+ {
+ context->xml_literal = rdfa_n_append_string(
+ context->xml_literal, &context->xml_literal_size,
+ buffer, strlen(buffer));
+ }
+ free(buffer);
+
+ /* 9. The next step of the iteration is to establish any
+ * [current object literal]; */
+
+ /* generate the complete object literal triples */
+ if(context->property != NULL)
+ {
+ /* save the current xml literal */
+ char* saved_xml_literal = context->xml_literal;
+ char* content_start = NULL;
+ char* content_end = NULL;
+
+ /* ensure to mark only the inner-content of the XML node for
+ * processing the object literal. */
+ buffer = NULL;
+
+ if(context->xml_literal != NULL)
+ {
+ /* get the data between the first tag and the last tag */
+ content_start = strchr(context->xml_literal, '>');
+ content_end = strrchr(context->xml_literal, '<');
+
+ if((content_start != NULL) && (content_end != NULL))
+ {
+ /* set content end to null terminator */
+ context->xml_literal = ++content_start;
+ *content_end = '\0';
+ }
+ }
+
+ /* update the plain literal if the XML Literal is an empty string */
+ if(context->xml_literal != NULL && strlen(context->xml_literal) == 0)
+ {
+ context->plain_literal =
+ rdfa_replace_string(context->plain_literal, "");
+ }
+
+ /* process data between first tag and last tag
+ * this needs the xml literal to be null terminated */
+ if(context->rdfa_version == RDFA_VERSION_1_0)
+ {
+ rdfa_complete_object_literal_triples(context);
+ }
+ else
+ {
+ rdfa_complete_current_property_value_triples(context);
+ }
+
+ if(content_end != NULL)
+ {
+ /* set content end back */
+ *content_end = '<';
+ }
+
+ if(saved_xml_literal != NULL)
+ {
+ /* restore xml literal */
+ context->xml_literal = saved_xml_literal;
+ }
+ }
+
+ /*printf(context->plain_literal);*/
+
+ /* append the XML literal and plain text literals to the parent
+ * literals */
+ if(context->xml_literal != NULL)
+ {
+ if(parent_context->xml_literal == NULL)
+ {
+ parent_context->xml_literal =
+ rdfa_replace_string(
+ parent_context->xml_literal, context->xml_literal);
+ parent_context->xml_literal_size = context->xml_literal_size;
+ }
+ else
+ {
+ parent_context->xml_literal =
+ rdfa_n_append_string(
+ parent_context->xml_literal,
+ &parent_context->xml_literal_size,
+ context->xml_literal, context->xml_literal_size);
+ }
+
+ /* if there is an XML literal, there is probably a plain literal */
+ if(context->plain_literal != NULL)
+ {
+ if(parent_context->plain_literal == NULL)
+ {
+ parent_context->plain_literal =
+ rdfa_replace_string(
+ parent_context->plain_literal, context->plain_literal);
+ parent_context->plain_literal_size =
+ context->plain_literal_size;
+ }
+ else
+ {
+ parent_context->plain_literal =
+ rdfa_n_append_string(
+ parent_context->plain_literal,
+ &parent_context->plain_literal_size,
+ context->plain_literal,
+ context->plain_literal_size);
+ }
+ }
+ }
+
+ /* preserve the bnode count by copying it to the parent_context */
+ parent_context->bnode_count = context->bnode_count;
+ parent_context->underscore_colon_bnode_name = \
+ rdfa_replace_string(parent_context->underscore_colon_bnode_name,
+ context->underscore_colon_bnode_name);
+
+ /* 10. If the [ skip element ] flag is 'false', and [ new subject ]
+ * was set to a non-null value, then any [ incomplete triple ]s
+ * within the current context should be completed: */
+ if((context->skip_element == 0) && (context->new_subject != NULL))
+ {
+ rdfa_complete_incomplete_triples(context);
+ }
+
+ /* 14. Once all the child elements have been traversed, list triples are
+ * generated, if necessary. */
+ if(context->rdfa_version == RDFA_VERSION_1_1)
+ {
+ rdfa_complete_list_triples(context);
+
+ if(parent_context != NULL)
+ {
+ /* copy the current mapping to the parent mapping */
+ rdfa_free_mapping(parent_context->local_list_mappings,
+ (free_mapping_value_fp)rdfa_free_list);
+ parent_context->local_list_mappings = rdfa_copy_mapping(
+ (void**)context->local_list_mappings,
+ (copy_mapping_value_fp)rdfa_replace_list);
+
+ if(DEBUG)
+ {
+ printf("parent_context->local_list_mappings (after copy): ");
+ rdfa_print_mapping(context->local_list_mappings,
+ (print_mapping_value_fp)rdfa_print_triple_list);
+ }
+ rdfa_free_mapping(context->local_list_mappings,
+ (free_mapping_value_fp)rdfa_free_list);
+ context->local_list_mappings = NULL;
+ }
+ }
+
+ /* free the context */
+ rdfa_free_context(context);
+
+ if(DEBUG)
+ {
+ printf("-------------------------------------------------------------\n");
+ }
+}
+
+void rdfa_set_default_graph_triple_handler(
+ rdfacontext* context, triple_handler_fp th)
+{
+ context->default_graph_triple_callback = th;
+}
+
+void rdfa_set_processor_graph_triple_handler(
+ rdfacontext* context, triple_handler_fp th)
+{
+ context->processor_graph_triple_callback = th;
+}
+
+void rdfa_set_buffer_filler(rdfacontext* context, buffer_filler_fp bf)
+{
+ context->buffer_filler_callback = bf;
+}
+
+#ifdef LIBRDFA_IN_RAPTOR
+/* Raptor reports its errors a different way */
+#else
+static void rdfa_report_error(void* parser_context, char* msg, ...)
+{
+ char error[1024];
+ char* eptr;
+ va_list args;
+ rdfacontext* context = (rdfacontext*)parser_context;
+
+ /* format the error message */
+ va_start(args, msg);
+ vsprintf(error, msg, args);
+ va_end(args);
+
+ /* Remove any newlines from the libxml2 error */
+ eptr = error;
+ while(*eptr != '\0')
+ {
+ if(*eptr == '\n')
+ {
+ *eptr = '.';
+ }
+ eptr++;
+ }
+
+ /* Generate the processor error */
+ rdfa_processor_triples(context, RDFA_PROCESSOR_ERROR, error);
+}
+#endif
+
+#ifdef LIBRDFA_IN_RAPTOR
+
+static void raptor_rdfa_start_element(void *user_data,
+ raptor_xml_element *xml_element)
+{
+ raptor_qname* qname = raptor_xml_element_get_name(xml_element);
+ int nb_attributes = raptor_xml_element_get_attributes_count(xml_element);
+ raptor_qname** attrs = raptor_xml_element_get_attributes(xml_element);
+ unsigned char* localname = raptor_qname_to_counted_name(qname, NULL);
+ const raptor_namespace* qname_ns = raptor_qname_get_namespace(qname);
+ int nb_namespaces = 0;
+ const char** namespaces = NULL;
+ int nb_defaulted = 0;
+ char** attr = NULL;
+ int i;
+
+ if(nb_attributes > 0) {
+ /* Everything written into 'attr' is a shared pointer into
+ * xml_element or contained objects - qnames, namespaces, uris
+ * and values
+ */
+ attr = (char**)malloc(sizeof(char*) * (1 + (nb_attributes * 5)));
+ for(i = 0; i < nb_attributes; i++) {
+ const raptor_namespace* attr_ns = attrs[i]->nspace;
+ char** attri = &attr[5 * i];
+ /* 5 tuple: (localname, prefix, URI, value, end) */
+ attri[0] = (char*)attrs[i]->local_name;
+ attri[1] = attr_ns ? (char*)attr_ns->prefix : NULL;
+ attri[2] = attr_ns ? (char*)raptor_uri_as_string(attr_ns->uri) : NULL;
+ attri[3] = (char*)attrs[i]->value;
+ attri[4] = attri[3] + attrs[i]->value_length;
+ }
+ attr[5 * i] = NULL;
+ }
+
+/*
+ * @ctx: the user data (XML parser context)
+ * @localname: the local name of the element
+ * @prefix: the element namespace prefix if available
+ * @URI: the element namespace name if available
+ * @nb_namespaces: number of namespace definitions on that node
+ * @namespaces: pointer to the array of prefix/URI pairs namespace definitions
+ * @nb_attributes: the number of attributes on that node
+ * @nb_defaulted: the number of defaulted attributes. The defaulted
+ * ones are at the end of the array
+ * @attributes: pointer to the array of (localname/prefix/URI/value/end)
+ * attribute values.
+ */
+ start_element(user_data, (const char*)localname,
+ (const char*)raptor_namespace_get_prefix(qname_ns),
+ (const char*)raptor_uri_as_string(qname_ns->uri),
+ nb_namespaces,
+ (const char**)namespaces,
+ nb_attributes,
+ nb_defaulted,
+ (const char**)attr);
+ if(attr)
+ free(attr);
+ raptor_free_memory(localname);
+}
+
+static void raptor_rdfa_end_element(void *user_data,
+ raptor_xml_element* xml_element)
+{
+ raptor_qname* qname = raptor_xml_element_get_name(xml_element);
+ unsigned char* localname = raptor_qname_to_counted_name(qname, NULL);
+ const raptor_namespace* qname_ns = raptor_qname_get_namespace(qname);
+
+ if(qname_ns)
+ end_element(user_data, (const char*)localname,
+ (const char*)qname_ns->prefix,
+ (const xmlChar*)raptor_uri_as_string(qname_ns->uri));
+ else
+ end_element(user_data, (const char*)localname, NULL, NULL);
+
+ raptor_free_memory(localname);
+}
+
+static void raptor_rdfa_character_data(void *user_data,
+ raptor_xml_element* xml_element,
+ const unsigned char *s, int len)
+{
+ character_data(user_data, (const xmlChar *)s, len);
+}
+
+static void raptor_rdfa_namespace_handler(void *user_data,
+ raptor_namespace* nspace)
+{
+ rdfacontext* context = (rdfacontext*)user_data;
+
+ if(context->namespace_handler)
+ (*context->namespace_handler)(context->namespace_handler_user_data,
+ nspace);
+}
+
+#endif
+
+int rdfa_parse_start(rdfacontext* context)
+{
+ /* create the buffers and expat parser */
+ int rval = RDFA_PARSE_SUCCESS;
+
+ context->wb_allocated = sizeof(char) * READ_BUFFER_SIZE;
+ /* +1 for NUL at end, to allow strstr() etc. to work
+ * malloc - only the first char needs to be NUL */
+ context->working_buffer = (char*)malloc(context->wb_allocated + 1);
+ *context->working_buffer = '\0';
+ context->done = 0;
+ context->context_stack = rdfa_create_list(32);
+
+ /* initialize the context stack */
+ rdfa_push_item(context->context_stack, context, RDFALIST_FLAG_CONTEXT);
+
+#ifdef LIBRDFA_IN_RAPTOR
+ context->sax2 = raptor_new_sax2(context->world, context->locator,
+ context);
+#else
+ /* init libxml2 */
+ xmlInitParser();
+#endif
+
+ /* set up the context stack */
+#ifdef LIBRDFA_IN_RAPTOR
+ raptor_sax2_set_start_element_handler(context->sax2,
+ raptor_rdfa_start_element);
+ raptor_sax2_set_end_element_handler(context->sax2,
+ raptor_rdfa_end_element);
+ raptor_sax2_set_characters_handler(context->sax2,
+ raptor_rdfa_character_data);
+ raptor_sax2_set_namespace_handler(context->sax2,
+ raptor_rdfa_namespace_handler);
+#endif
+
+ rdfa_init_context(context);
+
+#ifdef LIBRDFA_IN_RAPTOR
+ context->base_uri = raptor_new_uri(context->sax2->world,
+ (const unsigned char*)context->base);
+ raptor_sax2_parse_start(context->sax2, context->base_uri);
+#endif
+
+ return rval;
+}
+
+int rdfa_parse_chunk(rdfacontext* context, char* data, size_t wblen, int done)
+{
+#ifdef LIBRDFA_IN_RAPTOR
+#else
+ xmlSAXHandler handler;
+ xmlParserCtxtPtr parser;
+#endif
+
+ /* it is an error to call this before rdfa_parse_start() */
+ if(context->done)
+ {
+ return RDFA_PARSE_FAILED;
+ }
+
+ if(!context->preread)
+ {
+ /* search for the <base> tag and use the href contained therein to
+ * set the parsing context. */
+ context->wb_preread = rdfa_init_base(context,
+ &context->working_buffer, &context->wb_allocated, data, wblen);
+
+ /* continue looking if in first 131072 bytes of data */
+ if(!context->base && context->wb_preread < (1<<17))
+ return RDFA_PARSE_SUCCESS;
+
+#ifdef LIBRDFA_IN_RAPTOR
+ /* term mappings are needed before SAX2 parsing */
+ rdfa_setup_initial_context(context);
+
+ if(raptor_sax2_parse_chunk(context->sax2,
+ (const unsigned char*)context->working_buffer,
+ context->wb_position, done))
+ {
+ return RDFA_PARSE_FAILED;
+ }
+#else
+ /* create the SAX2 handler structure */
+ memset(&handler, 0, sizeof(xmlSAXHandler));
+ handler.initialized = XML_SAX2_MAGIC;
+ handler.startElementNs = (startElementNsSAX2Func)start_element;
+ handler.endElementNs = (endElementNsSAX2Func)end_element;
+ handler.characters = (charactersSAXFunc)character_data;
+ handler.error = (errorSAXFunc)rdfa_report_error;
+
+ /* create a push-based parser */
+ parser = xmlCreatePushParserCtxt(
+ &handler, context, (const char*)context->working_buffer,
+ context->wb_position, NULL);
+
+ /* ensure that entity substitution is turned on by default */
+ xmlSubstituteEntitiesDefault(1);
+
+ context->parser = parser;
+
+ rdfa_setup_initial_context(context);
+#endif
+
+ context->preread = 1;
+
+ return RDFA_PARSE_SUCCESS;
+ }
+
+ /* otherwise just parse the block passed in */
+#ifdef LIBRDFA_IN_RAPTOR
+ if(raptor_sax2_parse_chunk(context->sax2,
+ (const unsigned char*)data, wblen, done))
+ {
+ return RDFA_PARSE_FAILED;
+ }
+#else
+ if(xmlParseChunk(context->parser, data, wblen, done))
+ {
+ return RDFA_PARSE_FAILED;
+ }
+#endif
+
+ return RDFA_PARSE_SUCCESS;
+}
+
+void rdfa_parse_end(rdfacontext* context)
+{
+ /* free context stack */
+ rdfa_free_context_stack(context);
+
+ /* Free the expat parser and the like */
+#ifdef LIBRDFA_IN_RAPTOR
+ if(context->base_uri)
+ raptor_free_uri(context->base_uri);
+ raptor_free_sax2(context->sax2);
+ context->sax2=NULL;
+#else
+ /* free parser */
+ xmlFreeParserCtxt(context->parser);
+ xmlCleanupParser();
+#endif
+}
+
+char* rdfa_get_buffer(rdfacontext* context, size_t* blen)
+{
+ *blen = context->wb_allocated;
+ return context->working_buffer;
+}
+
+int rdfa_parse_buffer(rdfacontext* context, size_t bytes)
+{
+ int rval;
+ int done;
+ done = (bytes == 0);
+ rval = rdfa_parse_chunk(context, context->working_buffer, bytes, done);
+ context->done = done;
+ return rval;
+}
+
+int rdfa_parse(rdfacontext* context)
+{
+ int rval;
+
+ rval = rdfa_parse_start(context);
+ if(rval != RDFA_PARSE_SUCCESS)
+ {
+ context->done = 1;
+ return rval;
+ }
+
+ do
+ {
+ size_t wblen;
+ int done;
+
+ wblen = context->buffer_filler_callback(
+ context->working_buffer, context->wb_allocated,
+ context->callback_data);
+ done = (wblen == 0);
+
+ rval = rdfa_parse_chunk(context, context->working_buffer, wblen, done);
+ context->done=done;
+ }
+ while(!context->done && rval == RDFA_PARSE_SUCCESS);
+
+ rdfa_parse_end(context);
+
+ return rval;
+}
diff --git a/librdfa/rdfa.h b/librdfa/rdfa.h
new file mode 100644
index 0000000..7c9cfb2
--- /dev/null
+++ b/librdfa/rdfa.h
@@ -0,0 +1,377 @@
+/**
+ * Copyright 2008-2010 Digital Bazaar, Inc.
+ *
+ * This file is part of librdfa.
+ *
+ * librdfa is Free Software, and can be licensed under any of the
+ * following three licenses:
+ *
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any
+ * newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE-* at the top of this software distribution for more
+ * information regarding the details of each license.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with librdfa. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The librdfa library is the Fastest RDFa Parser in the Universe. It is
+ * a stream parser, meaning that it takes an XML data as input and spits
+ * out RDF triples as it comes across them in the stream. Due to this
+ * processing approach, librdfa has a very, very small memory footprint.
+ * It is also very fast and can operate on hundreds of gigabytes of XML
+ * data without breaking a sweat.
+ *
+ * Usage:
+ *
+ * rdfacontext* context = rdfa_create_context(base_uri);
+ * context->callback_data = your_user_data;
+ * rdfa_set_triple_handler(context, triple_function);
+ * rdfa_set_buffer_filler(context, buffer_filler_function);
+ * rdfa_parse(context);
+ * rdfa_free_context(context);
+ *
+ * If you would like to get warnings/error triples from the processor graph:
+ *
+ * rdfa_set_issue_handler(context, triple_function);
+ *
+ * Usage if you need more control over when to fill rdfa's buffer:
+ *
+ * rdfacontext* context = rdfa_create_context(base_uri);
+ * context->callback_data = your_user_data;
+ * rdfa_set_triple_handler(context, triple_function);
+ * int rval = rdfa_parse_start(context);
+ * if(rval == RDFA_PARSE_SUCCESS)
+ * {
+ * FILE* myfile = fopen("myfilename");
+ * size_t buf_len = 0;
+ * size_t read = 0;
+ * do
+ * {
+ * char* buf = rdfa_get_buffer(context, &buf_len);
+ * if(buf_len > 0)
+ * {
+ * // fill buffer here up to buf_len bytes from your input stream
+ * read = fread(buf, sizeof(char), buf_len, myfile);
+ * }
+ *
+ * // parse the read data
+ * rdfa_parse_buffer(context, read);
+ * }
+ * while(read > 0);
+ * fclose(myfile);
+ *
+ * rdfa_parse_end(context);
+ * }
+ * rdfa_free_context(context);
+ *
+ */
+#ifndef _LIBRDFA_RDFA_H_
+#define _LIBRDFA_RDFA_H_
+#include <stdlib.h>
+#include <libxml/SAX2.h>
+
+/* Activate the stupid Windows DLL exporting mechanism if we're building for Windows */
+#ifdef WIN32
+#define DLLEXPORT __declspec(dllexport)
+#else
+#define DLLEXPORT
+#endif
+
+#ifdef LIBRDFA_IN_RAPTOR
+#include "raptor2.h"
+#include "raptor_internal.h"
+#endif /* LIBRDFA_IN_RAPTOR */
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define DEBUG 0
+
+/* RDFa version numbers */
+#define RDFA_VERSION_1_0 1
+#define RDFA_VERSION_1_1 2
+
+/* parse process return types */
+#define RDFA_PARSE_WARNING -2
+#define RDFA_PARSE_FAILED -1
+#define RDFA_PARSE_UNKNOWN 0
+#define RDFA_PARSE_SUCCESS 1
+
+/* maximum list lengths */
+#define MAX_LOCAL_LIST_MAPPINGS 32
+#define MAX_LIST_MAPPINGS 48
+#define MAX_LIST_ITEMS 16
+#define MAX_TERM_MAPPINGS 64
+#define MAX_URI_MAPPINGS 128
+#define MAX_INCOMPLETE_TRIPLES 128
+
+/* host language definitions */
+#define HOST_LANGUAGE_NONE 0
+#define HOST_LANGUAGE_XML1 1
+#define HOST_LANGUAGE_XHTML1 2
+#define HOST_LANGUAGE_HTML 3
+
+/* default mapping key for xmlns */
+#define XMLNS_DEFAULT_MAPPING "XMLNS_DEFAULT"
+
+/* whitespace characters for RDFa Core 1.1 */
+#define RDFA_WHITESPACE " \t\n\v\f\r"
+
+/**
+ * An RDF resource type is used to denote the content of a triple's
+ * object value.
+ */
+typedef enum
+{
+ RDF_TYPE_NAMESPACE_PREFIX,
+ RDF_TYPE_IRI,
+ RDF_TYPE_PLAIN_LITERAL,
+ RDF_TYPE_XML_LITERAL,
+ RDF_TYPE_TYPED_LITERAL,
+ RDF_TYPE_UNKNOWN
+} rdfresource_t;
+
+/**
+ * An RDF triple is the result of an RDFa statement that contains, at
+ * the very least, a subject, a predicate and an object. It is the
+ * smallest, complete statement one can make in RDF.
+ */
+typedef struct rdftriple
+{
+ char* subject;
+ char* predicate;
+ char* object;
+ rdfresource_t object_type;
+ char* datatype;
+ char* language;
+} rdftriple;
+
+/**
+ * The specification for a callback that is capable of handling
+ * triples. Produces a triple that must be freed once the application
+ * is done with the object.
+ */
+typedef void (*triple_handler_fp)(rdftriple*, void*);
+
+/**
+ * The specification for a callback that is used to fill the input buffer
+ * with data to parse.
+ */
+typedef size_t (*buffer_filler_fp)(char*, size_t, void*);
+
+/**
+ * An RDFA list item is used to hold each datum in an rdfa list. It
+ * contains a list of flags as well as the data for the list member.
+ */
+typedef struct rdfalistitem
+{
+ unsigned char flags;
+ void* data;
+} rdfalistitem;
+
+/**
+ * An RDFa list is used to store multiple text strings that have a set
+ * of attributes associated with them. These can be lists of CURIEs,
+ * or lists of incomplete triples. The structure grows with use, but
+ * cannot be shrunk.
+ */
+typedef struct rdfalist
+{
+ rdfalistitem** items;
+ size_t num_items;
+ size_t max_items;
+ unsigned int user_data;
+} rdfalist;
+
+/**
+ * The RDFa Parser structure is responsible for keeping track of the state of
+ * the current RDFa parser. Things such as the default namespace,
+ * CURIE mappings, and other context-specific
+ */
+typedef struct rdfacontext
+{
+ unsigned char rdfa_version;
+ char* base;
+ char* parent_subject;
+ char* parent_object;
+ char* default_vocabulary;
+#ifndef LIBRDFA_IN_RAPTOR
+ void** uri_mappings;
+#endif
+ void** term_mappings;
+ void** list_mappings;
+ void** local_list_mappings;
+ rdfalist* incomplete_triples;
+ rdfalist* local_incomplete_triples;
+ char* language;
+ unsigned char host_language;
+
+ triple_handler_fp default_graph_triple_callback;
+ buffer_filler_fp buffer_filler_callback;
+ triple_handler_fp processor_graph_triple_callback;
+
+ unsigned char recurse;
+ unsigned char skip_element;
+ char* new_subject;
+ char* current_object_resource;
+
+ char* about;
+ char* typed_resource;
+ char* resource;
+ char* href;
+ char* src;
+ char* content;
+ char* datatype;
+ rdfalist* property;
+ unsigned char inlist_present;
+ unsigned char rel_present;
+ unsigned char rev_present;
+ char* plain_literal;
+ size_t plain_literal_size;
+ char* xml_literal;
+ size_t xml_literal_size;
+
+ void* callback_data;
+
+ /* parse state */
+ size_t bnode_count;
+ char* underscore_colon_bnode_name;
+ unsigned char xml_literal_namespaces_defined;
+ unsigned char xml_literal_xml_lang_defined;
+ size_t wb_allocated;
+ char* working_buffer;
+ size_t wb_position;
+#ifdef LIBRDFA_IN_RAPTOR
+ raptor_world *world;
+ raptor_locator *locator;
+ /* a pointer (in every context) to the error_handlers structure
+ * held in the raptor_parser object */
+ raptor_uri* base_uri;
+ raptor_sax2* sax2;
+ raptor_namespace_handler namespace_handler;
+ void* namespace_handler_user_data;
+ int raptor_rdfa_version; /* 10 or 11 or otherwise default */
+#else
+ xmlParserCtxtPtr parser;
+#endif
+ int done;
+ rdfalist* context_stack;
+ size_t wb_preread;
+ int preread;
+ int depth;
+} rdfacontext;
+
+/**
+ * Creates an initial context for RDFa.
+ *
+ * @param base The base URI that should be used for the parser.
+ *
+ * @return a pointer to the base RDFa context, or NULL if memory
+ * allocation failed.
+ */
+DLLEXPORT rdfacontext* rdfa_create_context(const char* base);
+
+/**
+ * Sets the default graph triple handler for the application.
+ *
+ * @param context the base rdfa context for the application.
+ * @param th the triple handler function.
+ */
+DLLEXPORT void rdfa_set_default_graph_triple_handler(
+ rdfacontext* context, triple_handler_fp th);
+
+/**
+ * Sets the processor graph triple handler for the application.
+ *
+ * @param context the base rdfa context for the application.
+ * @param th the triple handler function.
+ */
+DLLEXPORT void rdfa_set_processor_graph_triple_handler(
+ rdfacontext* context, triple_handler_fp th);
+
+/**
+ * Sets the buffer filler for the application.
+ *
+ * @param context the base rdfa context for the application.
+ * @param bf the buffer filler function.
+ */
+DLLEXPORT void rdfa_set_buffer_filler(
+ rdfacontext* context, buffer_filler_fp bf);
+
+/**
+ * Starts processing given the base rdfa context.
+ *
+ * @param context the base rdfa context.
+ *
+ * @return RDFA_PARSE_SUCCESS if everything went well. RDFA_PARSE_FAILED
+ * if there was a fatal error and RDFA_PARSE_WARNING if there
+ * was a non-fatal error.
+ */
+DLLEXPORT int rdfa_parse(rdfacontext* context);
+
+DLLEXPORT int rdfa_parse_start(rdfacontext* context);
+
+DLLEXPORT int rdfa_parse_chunk(
+ rdfacontext* context, char* data, size_t wblen, int done);
+
+/**
+ * Gets the input buffer for the given context so it can be filled with data.
+ * A pointer to the buffer will be returned and the maximum number of bytes
+ * that can be written to that buffer will be set to the blen parameter. Once
+ * data has been written to the buffer, rdfa_parse_buffer() should be called.
+ *
+ * @param context the base rdfa context.
+ * @param blen the variable to set to the buffer length.
+ *
+ * @return a pointer to the context's input buffer.
+ */
+DLLEXPORT char* rdfa_get_buffer(rdfacontext* context, size_t* blen);
+
+/**
+ * Informs the parser to attempt to parse more of the given context's input
+ * buffer. To fill the input buffer with data, call rdfa_get_buffer().
+ *
+ * If any of the input buffer can be parsed, it will be. It is possible
+ * that none of the data will be parsed, in which case this function will
+ * still return RDFA_PARSE_SUCCESS. More data should be written to the input
+ * buffer using rdfa_get_buffer() as it is made available to the application.
+ * Once there is no more data to write, rdfa_parse_end() should be called.
+ *
+ * @param context the base rdfa context.
+ * @param bytes the number of bytes written to the input buffer via the last
+ * call to rdfa_get_buffer(), a value of 0 will indicate that there
+ * is no more data to parse.
+ *
+ * @return RDFA_PARSE_SUCCESS if everything went well. RDFA_PARSE_FAILED
+ * if there was a fatal error and RDFA_PARSE_WARNING if there
+ * was a non-fatal error.
+ */
+DLLEXPORT int rdfa_parse_buffer(rdfacontext* context, size_t bytes);
+
+DLLEXPORT void rdfa_parse_end(rdfacontext* context);
+
+DLLEXPORT void rdfa_init_context(rdfacontext* context);
+
+DLLEXPORT char* rdfa_iri_get_base(const char* iri);
+
+/**
+ * Destroys the given rdfa context by freeing all memory associated
+ * with the context.
+ *
+ * @param context the rdfa context.
+ */
+DLLEXPORT void rdfa_free_context(rdfacontext* context);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/librdfa/rdfa_utils.c b/librdfa/rdfa_utils.c
new file mode 100644
index 0000000..a10d784
--- /dev/null
+++ b/librdfa/rdfa_utils.c
@@ -0,0 +1,528 @@
+/*
+ * Copyright 2008-2011 Digital Bazaar, Inc.
+ *
+ * This file is part of librdfa.
+ *
+ * librdfa is Free Software, and can be licensed under any of the
+ * following three licenses:
+ *
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any
+ * newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE-* at the top of this software distribution for more
+ * information regarding the details of each license.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with librdfa. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include "rdfa_utils.h"
+#include "rdfa.h"
+#include "strtok_r.h"
+
+#define RDFA_WHITESPACE_CHARACTERS " \a\b\t\n\v\f\r"
+
+char* rdfa_join_string(const char* prefix, const char* suffix)
+{
+ char* rval = NULL;
+ size_t prefix_size = strlen(prefix);
+ size_t suffix_size = strlen(suffix);
+ rval = (char*)malloc(prefix_size + suffix_size + 1);
+
+ memcpy(rval, prefix, prefix_size);
+ memcpy(rval+prefix_size, suffix, suffix_size + 1);
+
+ return rval;
+}
+
+char* rdfa_n_append_string(
+ char* old_string, size_t* string_size,
+ const char* suffix, size_t suffix_size)
+{
+ char* rval = NULL;
+ rval = (char*)realloc(old_string, *string_size + suffix_size + 1);
+ memcpy(rval + *string_size, suffix, suffix_size + 1);
+ *string_size = *string_size + suffix_size;
+ return rval;
+}
+
+char* rdfa_replace_string(char* old_string, const char* new_string)
+{
+ char* rval = NULL;
+
+ if(new_string != NULL)
+ {
+ /* free the memory associated with the old string */
+ free(old_string);
+
+ /* copy the new string */
+ rval = strdup(new_string);
+ }
+
+ return rval;
+}
+
+char* rdfa_canonicalize_string(const char* str)
+{
+ char* rval = (char*)malloc(sizeof(char) * (strlen(str) + 2));
+ char* working_string = NULL;
+ char* token = NULL;
+ char* wptr = NULL;
+ char* offset = rval;
+
+ working_string = rdfa_replace_string(working_string, str);
+
+ /* split on any whitespace character that we may find */
+ token = strtok_r(working_string, RDFA_WHITESPACE_CHARACTERS, &wptr);
+ while(token != NULL)
+ {
+ size_t token_length = strlen(token);
+ memcpy(offset, token, token_length);
+ offset += token_length;
+ *offset++ = ' ';
+ *offset = '\0';
+
+ token = strtok_r(NULL, RDFA_WHITESPACE_CHARACTERS, &wptr);
+ }
+
+ if(offset != rval)
+ {
+ offset--;
+ *offset = '\0';
+ }
+
+ free(working_string);
+
+ return rval;
+}
+
+rdfalist* rdfa_create_list(size_t size)
+{
+ rdfalist* rval = (rdfalist*)malloc(sizeof(rdfalist));
+
+ rval->max_items = size;
+ rval->num_items = 0;
+ rval->items = (rdfalistitem**)malloc(
+ sizeof(rdfalistitem*) * rval->max_items);
+
+ return rval;
+}
+
+rdfalist* rdfa_replace_list(rdfalist* old_list, rdfalist* new_list)
+{
+ rdfalist* rval = NULL;
+
+ if(new_list != NULL)
+ {
+ /* free the memory associated with the old list */
+ rdfa_free_list(old_list);
+
+ /* copy the new list */
+ rval = rdfa_copy_list(new_list);
+ }
+
+ return rval;
+}
+
+rdfalist* rdfa_copy_list(rdfalist* list)
+{
+ rdfalist* rval = NULL;
+
+ if(list != NULL)
+ {
+ unsigned int i;
+ rval = rdfa_create_list(list->max_items);
+
+ /* copy the base list variables over */
+ rval->num_items = list->num_items;
+ rval->user_data = list->user_data;
+
+ /* copy the data of every list member along with all of the flags
+ * for each list member. */
+ for(i = 0; i < list->max_items; i++)
+ {
+ if(i < list->num_items)
+ {
+ rval->items[i] = (rdfalistitem*)malloc(sizeof(rdfalistitem));
+ rval->items[i]->data = NULL;
+ rval->items[i]->flags = list->items[i]->flags;
+
+ /* copy specific data type */
+ if(list->items[i]->flags & RDFALIST_FLAG_TEXT)
+ {
+ rval->items[i]->data = strdup((char*)list->items[i]->data);
+ }
+ else if(list->items[i]->flags & RDFALIST_FLAG_TRIPLE)
+ {
+ rdftriple* t = (rdftriple*)list->items[i]->data;
+ rval->items[i]->data =
+ rdfa_create_triple(t->subject, t->predicate, t->object,
+ t->object_type, t->datatype, t->language);
+ }
+ else if(list->items[i]->flags & RDFALIST_FLAG_CONTEXT)
+ {
+ /* TODO: Implement the copy for context, if it is needed. */
+ }
+ }
+ else
+ {
+ rval->items[i] = NULL;
+ }
+ }
+ }
+
+ return rval;
+}
+
+void rdfa_print_list(rdfalist* list)
+{
+ unsigned int i;
+
+ printf("[ ");
+
+ for(i = 0; i < list->num_items; i++)
+ {
+ if(i != 0)
+ {
+ printf(", ");
+ }
+
+ puts((const char*)list->items[i]->data);
+ }
+
+ printf(" ]\n");
+}
+
+void rdfa_print_triple_list(rdfalist* list)
+{
+ unsigned int i;
+
+ if(list != NULL)
+ {
+ printf("[ ");
+
+ for(i = 0; i < list->num_items; i++)
+ {
+ if(i != 0)
+ {
+ printf(", ");
+ }
+
+ rdfa_print_triple((rdftriple*)list->items[i]->data);
+ }
+
+ printf(" ]\n");
+ }
+ else
+ {
+ printf("NULL\n");
+ }
+}
+
+void rdfa_free_list(rdfalist* list)
+{
+ if(list != NULL)
+ {
+ unsigned int i;
+ for(i = 0; i < list->num_items; i++)
+ {
+ if(list->items[i]->flags & RDFALIST_FLAG_TEXT)
+ {
+ free(list->items[i]->data);
+ }
+ else if(list->items[i]->flags & RDFALIST_FLAG_TRIPLE)
+ {
+ rdftriple* t = (rdftriple*)list->items[i]->data;
+ rdfa_free_triple(t);
+ }
+
+ free(list->items[i]);
+ }
+
+ free(list->items);
+ free(list);
+ }
+}
+
+void rdfa_push_item(rdfalist* stack, void* data, liflag_t flags)
+{
+ rdfa_add_item(stack, data, flags);
+}
+
+void* rdfa_pop_item(rdfalist* stack)
+{
+ void* rval = NULL;
+
+ if(stack->num_items > 0)
+ {
+ --stack->num_items;
+ rval = stack->items[stack->num_items]->data;
+ free(stack->items[stack->num_items]);
+ stack->items[stack->num_items] = NULL;
+ }
+
+ return rval;
+}
+
+void rdfa_add_item(rdfalist* list, void* data, liflag_t flags)
+{
+ rdfalistitem* item;
+
+ if(!list)
+ return;
+
+ item = (rdfalistitem*)malloc(sizeof(rdfalistitem));
+
+ item->data = NULL;
+
+ if((flags & RDFALIST_FLAG_CONTEXT) || (flags & RDFALIST_FLAG_TRIPLE))
+ {
+ item->data = data;
+ }
+ else
+ {
+ item->data = (char*)rdfa_replace_string(
+ (char*)item->data, (const char*)data);
+ }
+
+ item->flags = flags;
+
+ if(list->num_items == list->max_items)
+ {
+ list->max_items = 1 + (list->max_items * 2);
+ list->items = (rdfalistitem**)realloc(
+ list->items, sizeof(rdfalistitem*) * list->max_items);
+ }
+
+ list->items[list->num_items] = item;
+ ++list->num_items;
+}
+
+void** rdfa_create_mapping(size_t elements)
+{
+ size_t mapping_size = sizeof(void*) * MAX_URI_MAPPINGS * 2;
+ void** mapping = (void**)malloc(mapping_size);
+
+ /* only initialize the mapping if it is not null. */
+ if(mapping != NULL)
+ {
+ memset(mapping, 0, mapping_size);
+ }
+
+ return mapping;
+}
+
+void rdfa_create_list_mapping(
+ rdfacontext* context, void** mapping,
+ const char* subject, const char* key)
+{
+ char* realkey = NULL;
+ size_t str_size;
+ rdfalist* value = NULL;
+ char* list_bnode;
+ rdftriple* triple;
+
+ /* Attempt to find the list mapping */
+ value = (rdfalist*)rdfa_get_list_mapping(mapping, subject, key);
+
+ if(value == NULL)
+ {
+ /* create the mapping */
+ value = rdfa_create_list(MAX_LIST_ITEMS);
+ value->user_data = context->depth;
+
+ /* build the real key to use when updating the mapping */
+ str_size = strlen(subject);
+ realkey = strdup(subject);
+ realkey = rdfa_n_append_string(realkey, &str_size, " ", 1);
+ realkey = rdfa_n_append_string(realkey, &str_size, key, strlen(key));
+ rdfa_update_mapping(mapping, realkey, value,
+ (update_mapping_value_fp)rdfa_replace_list);
+ free(realkey);
+ rdfa_free_list(value);
+
+ /* add the first item in the list as the bnode for the list */
+ list_bnode = rdfa_create_bnode(context);
+ triple = rdfa_create_triple(
+ list_bnode, list_bnode, list_bnode, RDF_TYPE_IRI, NULL, NULL);
+ rdfa_append_to_list_mapping(mapping, subject, key, (void*)triple);
+ free(list_bnode);
+ }
+}
+
+void rdfa_append_to_list_mapping(
+ void** mapping, const char* subject, const char* key, void* value)
+{
+ rdfalist* list = (rdfalist*)rdfa_get_list_mapping(mapping, subject, key);
+ rdfa_add_item(list, value, RDFALIST_FLAG_TRIPLE);
+}
+
+void** rdfa_copy_mapping(
+ void** mapping, copy_mapping_value_fp copy_mapping_value)
+{
+ void** rval = (void**)calloc(MAX_URI_MAPPINGS * 2, sizeof(void*));
+ void** mptr = mapping;
+ void** rptr = rval;
+
+ /* copy each element of the old mapping to the new mapping. */
+ while(*mptr != NULL)
+ {
+ /* copy the key */
+ *rptr = rdfa_replace_string((char*)*rptr, (const char*)*mptr);
+ rptr++;
+ mptr++;
+
+ /* copy the value */
+ *rptr = copy_mapping_value(*rptr, *mptr);
+ rptr++;
+ mptr++;
+ }
+
+ return rval;
+}
+
+void rdfa_update_mapping(void** mapping, const char* key, const void* value,
+ update_mapping_value_fp update_mapping_value)
+{
+ int found = 0;
+ void** mptr = mapping;
+
+ /* search the current mapping to see if the key exists in the mapping */
+ while(!found && (*mptr != NULL))
+ {
+ if(strcmp((char*)*mptr, key) == 0)
+ {
+ mptr++;
+ *mptr = update_mapping_value(*mptr, value);
+ found = 1;
+ }
+ else
+ {
+ mptr++;
+ }
+ mptr++;
+ }
+
+ /* if we made it through the entire URI mapping and the key was not
+ * found, create a new key-value pair. */
+ if(!found)
+ {
+ *mptr = rdfa_replace_string((char*)*mptr, key);
+ mptr++;
+ *mptr = update_mapping_value(*mptr, value);
+ }
+}
+
+const void* rdfa_get_mapping(void** mapping, const char* key)
+{
+ const void* rval = NULL;
+ char** mptr = (char**)mapping;
+
+ /* search the current mapping to see if the key exists in the mapping. */
+ while(*mptr != NULL)
+ {
+ if(strcmp(*mptr, key) == 0)
+ {
+ mptr++;
+ rval = *mptr;
+ }
+ else
+ {
+ mptr++;
+ }
+ mptr++;
+ }
+
+ return rval;
+}
+
+const void* rdfa_get_list_mapping(
+ void** mapping, const char* subject, const char* key)
+{
+ void* rval;
+ char* realkey = NULL;
+ size_t str_size = strlen(subject);
+
+ /* generate the real list mapping key and retrieve it from the mapping */
+ realkey = strdup(subject);
+ realkey = rdfa_n_append_string(realkey, &str_size, " ", 1);
+ realkey = rdfa_n_append_string(realkey, &str_size, key, strlen(key));
+ rval = (void*)rdfa_get_mapping(mapping, realkey);
+ free(realkey);
+
+ return (const void*)rval;
+}
+
+void rdfa_next_mapping(void** mapping, char** key, void** value)
+{
+ *key = NULL;
+ *value = NULL;
+
+ if(*mapping != NULL)
+ {
+ *key = *(char**)mapping++;
+ *value = *mapping++;
+ }
+}
+
+void rdfa_print_mapping(void** mapping, print_mapping_value_fp print_value)
+{
+ void** mptr = mapping;
+ printf("{\n");
+ while(*mptr != NULL)
+ {
+ char* key;
+ void* value;
+ key = (char*)*mptr++;
+ value = *mptr++;
+
+ printf(" %s : ", key);
+ print_value(value);
+
+ if(*mptr != NULL)
+ {
+ printf(",\n");
+ }
+ else
+ {
+ printf("\n");
+ }
+ }
+ printf("}\n");
+}
+
+void rdfa_print_string(const char* str)
+{
+ printf("%s", str);
+}
+
+void rdfa_free_mapping(void** mapping, free_mapping_value_fp free_value)
+{
+ void** mptr = mapping;
+
+ if(mapping != NULL)
+ {
+ /* free all of the memory in the mapping */
+ while(*mptr != NULL)
+ {
+ free(*mptr);
+ mptr++;
+ free_value(*mptr);
+ mptr++;
+ }
+
+ free(mapping);
+ }
+}
+
diff --git a/librdfa/rdfa_utils.h b/librdfa/rdfa_utils.h
new file mode 100644
index 0000000..df96265
--- /dev/null
+++ b/librdfa/rdfa_utils.h
@@ -0,0 +1,485 @@
+/**
+ * Copyright 2008 Digital Bazaar, Inc.
+ *
+ * This file is part of librdfa.
+ *
+ * librdfa is Free Software, and can be licensed under any of the
+ * following three licenses:
+ *
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any
+ * newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE-* at the top of this software distribution for more
+ * information regarding the details of each license.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with librdfa. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * This file contains functions used for common rdfa utility functions.
+ */
+#ifndef _RDFA_UTILS_H_
+#define _RDFA_UTILS_H_
+#include "rdfa.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/**
+ * A CURIE type can be safe, unsafe, and Internationalized Resource
+ * Identifier, reference-only or invalid.
+ */
+typedef enum
+{
+ CURIE_TYPE_SAFE,
+ CURIE_TYPE_IRI_OR_UNSAFE,
+ CURIE_TYPE_LINK_TYPE,
+ CURIE_TYPE_INVALID
+} curie_t;
+
+/**
+ * A CURIE parse type lets the CURIE processor know what type of CURIE
+ * is being parsed so that the proper namespace resolution may occur.
+ */
+typedef enum
+{
+ CURIE_PARSE_ABOUT_RESOURCE,
+ CURIE_PARSE_PROPERTY,
+ CURIE_PARSE_INSTANCEOF_DATATYPE,
+ CURIE_PARSE_HREF_SRC,
+ CURIE_PARSE_RELREV
+} curieparse_t;
+
+/**
+ * The list member flag type is used to attach attribute information
+ * to list member data.
+ */
+typedef enum
+{
+ RDFALIST_FLAG_NONE = 0,
+ RDFALIST_FLAG_DIR_NONE = (1 << 1),
+ RDFALIST_FLAG_DIR_FORWARD = (1 << 2),
+ RDFALIST_FLAG_DIR_REVERSE = (1 << 3),
+ RDFALIST_FLAG_TEXT = (1 << 4),
+ RDFALIST_FLAG_CONTEXT = (1 << 5),
+ RDFALIST_FLAG_TRIPLE = (1 << 6),
+ RDFALIST_FLAG_LAST = (1 << 7)
+} liflag_t;
+
+/*
+ * RDFa processor graph reporting types
+ */
+#define RDFA_PROCESSOR_INFO "http://www.w3.org/ns/rdfa#Info"
+#define RDFA_PROCESSOR_WARNING "http://www.w3.org/ns/rdfa#Warning"
+#define RDFA_PROCESSOR_ERROR "http://www.w3.org/ns/rdfa#Error"
+
+/* key establishing a deleted mapping entry */
+#define RDFA_MAPPING_DELETED_KEY "<DELETED-KEY>"
+
+/**
+ * A function pointer that will be used to copy mapping values.
+ */
+typedef void* (*copy_mapping_value_fp)(void*, void*);
+
+/**
+ * A function pointer that will be used to update mapping values.
+ */
+typedef void* (*update_mapping_value_fp)(const void*, const void*);
+
+/**
+ * A function pointer that will be used to print mapping values.
+ */
+typedef void (*print_mapping_value_fp)(void*);
+
+/**
+ * A function pointer that will be used to free memory associated with values.
+ */
+typedef void (*free_mapping_value_fp)(void*);
+
+/**
+ * Initializes a mapping given the number of elements the mapping is
+ * expected to hold.
+ *
+ * @param elements the maximum number of elements the mapping is
+ * supposed to hold.
+ *
+ * @return an initialized void**, with all of the elements set to NULL.
+ */
+void** rdfa_create_mapping(size_t elements);
+
+/**
+ * Adds a list to a mapping given a key to create. The result will be a
+ * zero-item list associated with the given key in the mapping.
+ *
+ * @param context the current active context.
+ * @param mapping the mapping to modify.
+ * @param subject the current active subject.
+ * @param key the key to add to the mapping.
+ * @param user_data the user-defined data to store with the list information.
+ */
+void rdfa_create_list_mapping(
+ rdfacontext* context, void** mapping, const char* subject, const char* key);
+
+/**
+ * Adds an item to the end of the list that is associated with the given
+ * key in the mapping.
+ *
+ * @param mapping the mapping to modify.
+ * @param subject the current active subject.
+ * @param key the key to use when looking up the list value.
+ * @param value the value to append to the end of the list.
+ */
+void rdfa_append_to_list_mapping(
+ void** mapping, const char* subject, const char* key, void* value);
+
+/**
+ * Gets the value for a given list mapping when presented with a subject
+ * and a key. If the subject-key combo doesn't exist in the mapping,
+ * NULL is returned.
+ *
+ * @param mapping the mapping to search.
+ * @param subject the current active subject.
+ * @param key the key.
+ *
+ * @return value the value in the mapping for the given key.
+ */
+const void* rdfa_get_list_mapping(
+ void** mapping, const char* subject, const char* key);
+
+/**
+ * Copies the entire contents of a mapping verbatim and returns a
+ * pointer to the copied mapping.
+ *
+ * @param mapping the mapping to copy
+ *
+ * @return the copied mapping, with all of the memory newly
+ * allocated. You MUST free the returned mapping when you are
+ * done with it.
+ */
+void** rdfa_copy_mapping(
+ void** mapping, copy_mapping_value_fp copy_mapping_value);
+
+/**
+ * Updates the given mapping when presented with a key and a value. If
+ * the key doesn't exist in the mapping, it is created.
+ *
+ * @param mapping the mapping to update.
+ * @param key the key.
+ * @param value the value.
+ * @param replace_mapping_value a pointer to a function that will replace the
+ * old
+ */
+void rdfa_update_mapping(void** mapping, const char* key, const void* value,
+ update_mapping_value_fp update_mapping_value);
+
+/**
+ * Gets the value for a given mapping when presented with a key. If
+ * the key doesn't exist in the mapping, NULL is returned.
+ *
+ * @param mapping the mapping to search.
+ * @param key the key.
+ *
+ * @return value the value in the mapping for the given key.
+ */
+const void* rdfa_get_mapping(void** mapping, const char* key);
+
+/**
+ * Gets the current mapping for the given mapping and increments the
+ * mapping to the next value in the chain.
+ *
+ * @param mapping the mapping to use and increment.
+ * @param key the key that will be retrieved, NULL if the mapping is
+ * blank or you are at the end of the mapping.
+ * @param value the value that is associated with the key. NULL if the
+ * mapping is blank or you are at the end of the mapping.
+ */
+void rdfa_next_mapping(void** mapping, char** key, void** value);
+
+/**
+ * Prints the mapping to the screen in a human-readable way.
+ *
+ * @param mapping the mapping to print to the screen.
+ * @param print_value the function pointer to use to print the mapping values.
+ */
+void rdfa_print_mapping(void** mapping, print_mapping_value_fp print_value);
+
+/**
+ * Frees all memory associated with a mapping.
+ *
+ * @param mapping the mapping to free.
+ * @param free_value the function to free mapping values.
+ */
+void rdfa_free_mapping(void** mapping, free_mapping_value_fp free_value);
+
+/**
+ * Creates a list and initializes it to the given size.
+ *
+ * @param size the starting size of the list.
+ */
+rdfalist* rdfa_create_list(size_t size);
+
+/**
+ * Copies the given list.
+ *
+ * @param list the list to copy.
+ *
+ * @return the copied list. You MUST free the memory associated with
+ * the returned list once you are done with it.
+ */
+rdfalist* rdfa_copy_list(rdfalist* list);
+
+/**
+ * Replaced the old_list by free'ing the memory associated with it. A
+ * copy is made of the new list and then returned.
+ *
+ * @param old_list the list to replace. The memory associated with this list
+ * is freed.
+ * @param new_list the new list to copy in replacement of the old list. A
+ * deep copy is performed on the new list.
+ *
+ * @return the copied list. You MUST free the memory associated with
+ * the returned list once you are done with it.
+ */
+rdfalist* rdfa_replace_list(rdfalist* old_list, rdfalist* new_list);
+
+/**
+ * Adds an item to the end of the list.
+ *
+ * @param list the list to add the item to.
+ * @param data the data to add to the list.
+ * @param flags the flags to attach to the item.
+ */
+void rdfa_add_item(rdfalist* list, void* data, liflag_t flags);
+
+/**
+ * Pushes an item onto the top of a stack. This function uses a list
+ * for the underlying implementation.
+ *
+ * @param stack the stack to add the item to.
+ * @param data the data to add to the stack.
+ * @param flags the flags to attach to the item.
+ */
+void rdfa_push_item(rdfalist* stack, void* data, liflag_t flags);
+
+/**
+ * Pops an item off of the top of a stack. This function uses a list
+ * for the underlying implementation
+ *
+ * @param stack the stack to pop the item off of.
+ *
+ * @return the item that was just popped off of the top of the
+ * stack. You MUST free the memory associated with the return
+ * value.
+ */
+void* rdfa_pop_item(rdfalist* stack);
+
+/**
+ * Prints the list to the screen in a human-readable way.
+ *
+ * @param list the list to print to the screen.
+ */
+void rdfa_print_list(rdfalist* list);
+
+/**
+ * Frees all memory associated with the given list.
+ *
+ * @param list the list to free.
+ */
+void rdfa_free_list(rdfalist* list);
+
+/**
+ * Replaces an old string with a new string, freeing the old memory
+ * and allocating new memory for the new string.
+ *
+ * @param old_string the old string to free and replace.
+ * @param new_string the new string to copy to the old_string's
+ * location.
+ *
+ * @return a pointer to the newly allocated string.
+ */
+char* rdfa_replace_string(char* old_string, const char* new_string);
+
+/**
+ * Appends a new string to the old string, expanding the old string's
+ * memory area if needed. The old string's size must be provided and
+ * will be updated to the new length.
+ *
+ * @param old_string the old string to reallocate if needed.
+ * @param string_size the old string's length, to be updated.
+ * @param suffix the string to append to the old_string.
+ * @param suffix_size the size of the suffix string.
+ *
+ * @return a pointer to the newly re-allocated string.
+ */
+char* rdfa_n_append_string(
+ char* old_string, size_t* string_size,
+ const char* suffix, size_t suffix_size);
+
+/**
+ * Joins two strings together and returns a newly allocated string
+ * with both strings joined.
+ *
+ * @param prefix the beginning part of the string.
+ * @param suffix the ending part of the string.
+ *
+ * @return a pointer to the newly allocated string that has both
+ * prefix and suffix in it.
+ */
+char* rdfa_join_string(const char* prefix, const char* suffix);
+
+/**
+ * Prints a string to stdout. This function is used by the rdfa_print_mapping
+ * function.
+ *
+ * @param str the string to print to stdout.
+ */
+void rdfa_print_string(const char* str);
+
+/**
+ * Canonicalizes a given string by condensing all whitespace to single
+ * spaces and stripping leading and trailing whitespace.
+ *
+ * @param str the string to canonicalize.
+ *
+ * @return a pointer to a newly allocated string that contains the
+ * canonicalized text.
+ */
+char* rdfa_canonicalize_string(const char* str);
+
+/**
+ * Creates a triple given the subject, predicate, object, datatype and
+ * language for the triple.
+ *
+ * @param subject the subject for the triple.
+ * @param predicate the predicate for the triple.
+ * @param object the object for the triple.
+ * @param object_type the type of the object, which must be an rdfresource_t.
+ * @param datatype the datatype of the triple.
+ * @param language the language for the triple.
+ *
+ * @return a newly allocated triple with all of the given
+ * information. This triple MUST be free()'d when you are done
+ * with it.
+ */
+rdftriple* rdfa_create_triple(const char* subject, const char* predicate,
+ const char* object, rdfresource_t object_type, const char* datatype,
+ const char* language);
+
+/**
+ * Prints a triple in a human-readable fashion.
+ *
+ * @triple the triple to display.
+ */
+void rdfa_print_triple(rdftriple* triple);
+
+/**
+ * Prints a list of triples in a human readable form.
+ *
+ * @triple the triple to display.
+ */
+void rdfa_print_triple_list(rdfalist* list);
+
+/**
+ * Frees the memory associated with a triple.
+ */
+void rdfa_free_triple(rdftriple* triple);
+
+/**
+ * Resolves a given uri by appending it to the context's base parameter.
+ *
+ * @param context the current processing context.
+ * @param uri the URI part to process.
+ *
+ * @return the fully qualified IRI. The memory returned from this
+ * function MUST be freed.
+ */
+char* rdfa_resolve_uri(rdfacontext* context, const char* uri);
+
+/**
+ * Resolves a given uri depending on whether or not it is a fully
+ * qualified IRI or a CURIE.
+ *
+ * @param context the current processing context.
+ * @param uri the URI part to process.
+ * @param mode the CURIE processing mode to use when parsing the CURIE.
+ *
+ * @return the fully qualified IRI. The memory returned from this
+ * function MUST be freed.
+ */
+char* rdfa_resolve_curie(
+ rdfacontext* context, const char* uri, curieparse_t mode);
+
+/**
+ * Resolves one or more CURIEs into fully qualified IRIs.
+ *
+ * @param rdfa_context the current processing context.
+ * @param uris a list of URIs.
+ * @param mode the CURIE parsing mode to use, one of
+ * CURIE_PARSE_INSTANCEOF, CURIE_PARSE_RELREV, or
+ * CURIE_PARSE_PROPERTY.
+ *
+ * @return an RDFa list if one or more IRIs were generated, NULL if not.
+ */
+rdfalist* rdfa_resolve_curie_list(
+ rdfacontext* rdfa_context, const char* uris, curieparse_t mode);
+
+char* rdfa_resolve_relrev_curie(rdfacontext* context, const char* uri);
+
+char* rdfa_resolve_property_curie(rdfacontext* context, const char* uri);
+
+void rdfa_update_language(rdfacontext* context, const char* lang);
+
+char* rdfa_create_bnode(rdfacontext* context);
+
+/* All functions that rdfa.c needs. */
+void rdfa_update_uri_mappings(rdfacontext* context, const char* attr, const char* value);
+void rdfa_establish_new_1_0_subject(
+ rdfacontext* context, const char* name, const char* about, const char* src,
+ const char* resource, const char* href, const rdfalist* type_of);
+void rdfa_establish_new_1_1_subject(
+ rdfacontext* context, const char* name, const char* about, const char* src,
+ const char* resource, const char* href, const rdfalist* type_of,
+ const rdfalist* property, const char* content, const char* datatype);
+void rdfa_establish_new_1_0_subject_with_relrev(
+ rdfacontext* context, const char* name, const char* about, const char* src,
+ const char* resource, const char* href, const rdfalist* type_of);
+void rdfa_establish_new_1_1_subject_with_relrev(
+ rdfacontext* context, const char* name, const char* about, const char* src,
+ const char* resource, const char* href, const rdfalist* type_of);
+void rdfa_complete_incomplete_triples(rdfacontext* context);
+void rdfa_save_incomplete_list_triples(
+ rdfacontext* context, const rdfalist* rel);
+void rdfa_complete_type_triples(rdfacontext* context, const rdfalist* type_of);
+void rdfa_complete_relrev_triples(
+ rdfacontext* context, const rdfalist* rel, const rdfalist* rev);
+void rdfa_save_incomplete_triples(
+ rdfacontext* context, const rdfalist* rel, const rdfalist* rev);
+void rdfa_complete_object_literal_triples(rdfacontext* context);
+void rdfa_complete_current_property_value_triples(rdfacontext* context);
+
+/* Declarations needed by namespace.c */
+void rdfa_generate_namespace_triple(
+ rdfacontext* context, const char* prefix, const char* iri);
+void rdfa_processor_triples(
+ rdfacontext* context, const char* type, const char* msg);
+
+/* Declarations needed by rdfa.c */
+void rdfa_setup_initial_context(rdfacontext* context);
+void rdfa_establish_new_inlist_triples(
+ rdfacontext* context, rdfalist* predicates, const char* object,
+ rdfresource_t object_type);
+void rdfa_complete_list_triples(rdfacontext* context);
+rdfacontext* rdfa_create_new_element_context(rdfalist* context_stack);
+void rdfa_free_context_stack(rdfacontext* context);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/librdfa/strtok_r.c b/librdfa/strtok_r.c
new file mode 100644
index 0000000..f07f9fb
--- /dev/null
+++ b/librdfa/strtok_r.c
@@ -0,0 +1,52 @@
+/* This file is in the public domain */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <string.h>
+#include "strtok_r.h"
+
+#ifdef NEED_RDFA_STRTOK_R
+
+char *
+rdfa_strtok_r(char *str, const char *delim, char **saveptr)
+{
+ char *p;
+
+ if (str == NULL)
+ str = *saveptr;
+
+ if (str == NULL)
+ return NULL;
+
+ while (*str && strchr(delim, *str))
+ str++;
+
+ if (*str == '\0')
+ {
+ *saveptr = NULL;
+ return NULL;
+ }
+
+ p = str;
+ while (*p && !strchr(delim, *p))
+ p++;
+
+ if (*p == '\0')
+ *saveptr = NULL;
+ else
+ {
+ *p = '\0';
+ p++;
+ *saveptr = p;
+ }
+
+ return str;
+}
+
+#else /* ! NEED_RDFA_STRTOK_R */
+
+typedef int blah; /* "ISO C forbids an empty translation unit" */
+
+#endif /* NEED_RDFA_STRTOK_R */
diff --git a/librdfa/strtok_r.h b/librdfa/strtok_r.h
new file mode 100644
index 0000000..fcfb5c7
--- /dev/null
+++ b/librdfa/strtok_r.h
@@ -0,0 +1,15 @@
+/* This file is in the public domain */
+
+#ifndef HAVE_STRTOK_R
+# define NEED_RDFA_STRTOK_R
+#endif
+
+#if defined(WIN32) && defined(_MSC_VER) && _MSC_VER >= 1400
+# define strtok_r(s,d,p) strtok_s(s,d,p)
+# undef NEED_RDFA_STRTOK_R
+#endif
+
+#ifdef NEED_RDFA_STRTOK_R
+char *rdfa_strtok_r(char *str, const char *delim, char **saveptr);
+# define strtok_r(s,d,p) rdfa_strtok_s(s,d,p)
+#endif
diff --git a/librdfa/subject.c b/librdfa/subject.c
new file mode 100644
index 0000000..c4d7811
--- /dev/null
+++ b/librdfa/subject.c
@@ -0,0 +1,534 @@
+/**
+ * Copyright 2008 Digital Bazaar, Inc.
+ *
+ * This file is part of librdfa.
+ *
+ * librdfa is Free Software, and can be licensed under any of the
+ * following three licenses:
+ *
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any
+ * newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE-* at the top of this software distribution for more
+ * information regarding the details of each license.
+ *
+ * This file is used to process RDFa subjects.
+ */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "rdfa_utils.h"
+#include "rdfa.h"
+
+/**
+ * Creates a new bnode given an RDFa context.
+ *
+ * @param context the RDFa context.
+ *
+ * @return a newly allocated string containing the bnode name. This
+ * string MUST be memory collected.
+ */
+char* rdfa_create_bnode(rdfacontext* context)
+{
+ char* rval = NULL;
+ char buffer[64];
+
+ /* print and increment the bnode count */
+ sprintf(buffer, "_:bnode%i", (int)context->bnode_count++);
+ rval = rdfa_replace_string(rval, buffer);
+
+ return rval;
+}
+
+/**
+ * Establishes a new subject for the given context given the
+ * attributes on the current element. The given context's new_subject
+ * value is updated if a new subject is found.
+ *
+ * @param context the RDFa context.
+ * @param name the name of the current element that is being processed.
+ * @param about the full IRI for about, or NULL if there isn't one.
+ * @param src the full IRI for src, or NULL if there isn't one.
+ * @param resource the full IRI for resource, or NULL if there isn't one.
+ * @param href the full IRI for href, or NULL if there isn't one.
+ * @param type_of The list of IRIs for type_of, or NULL if there was
+ * no type_of specified.
+ */
+void rdfa_establish_new_1_0_subject(
+ rdfacontext* context, const char* name, const char* about, const char* src,
+ const char* resource, const char* href, const rdfalist* type_of)
+{
+ /* 4. If the [current element] contains no valid @rel or @rev
+ * URI, obtained according to the section on CURIE and URI
+ * Processing, then the next step is to establish a value for
+ * [new subject]. Any of the attributes that can carry a
+ * resource can set [new subject]; */
+
+ if(about != NULL)
+ {
+ /* * by using the URI from @about, if present, obtained according
+ * to the section on CURIE and URI Processing; */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, about);
+ }
+ else if(src != NULL)
+ {
+ /* * otherwise, by using the URI from @src, if present, obtained
+ * according to the section on CURIE and URI Processing. */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, src);
+ }
+ else if(resource != NULL)
+ {
+ /* * otherwise, by using the URI from @resource, if present,
+ * obtained according to the section on CURIE and URI
+ * Processing; */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, resource);
+ }
+ else if(href != NULL)
+ {
+ /* * otherwise, by using the URI from @href, if present, obtained
+ * according to the section on CURIE and URI Processing. */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, href);
+ }
+ else if((type_of != NULL) && (type_of->num_items > 0))
+ {
+ /* * if @type_of is present, obtained according to the
+ * section on CURIE and URI Processing, then [new subject] is
+ * set to be a newly created [bnode]; */
+ char* bnode = rdfa_create_bnode(context);
+ context->new_subject = rdfa_replace_string(context->new_subject, bnode);
+ free(bnode);
+ }
+ else if(context->parent_object != NULL)
+ {
+ /* * otherwise, if [parent object] is present, [new subject] is
+ * set to that and the [skip element] flag is set to 'true'; */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, context->parent_object);
+
+ /* TODO: The skip element flag will be set even if there is a
+ * @property value, which is a bug, isn't it? */
+ /*context->skip_element = 1;*/
+ }
+}
+
+/**
+ * Establishes a new subject for the given context given the
+ * attributes on the current element. The given context's new_subject
+ * value is updated if a new subject is found.
+ *
+ * @param context the RDFa context.
+ * @param name the name of the current element that is being processed.
+ * @param about the full IRI for about, or NULL if there isn't one.
+ * @param src the full IRI for src, or NULL if there isn't one.
+ * @param resource the full IRI for resource, or NULL if there isn't one.
+ * @param href the full IRI for href, or NULL if there isn't one.
+ * @param type_of The list of IRIs for type_of, or NULL if there was
+ * no type_of specified.
+ * @param property a list of properties that were detected during processing.
+ */
+void rdfa_establish_new_1_1_subject(
+ rdfacontext* context, const char* name, const char* about, const char* src,
+ const char* resource, const char* href, const rdfalist* type_of,
+ const rdfalist* property, const char* content, const char* datatype)
+{
+ /*
+ * If the current element contains the @property attribute, but does not
+ * contain either the @content or @datatype attributes, then new subject
+ * is set to the resource obtained from the first match from the
+ * following rule:
+ */
+ if(property != NULL && content == NULL && datatype == NULL)
+ {
+ /* by using the resource from @about, if present, obtained according to
+ * the section on CURIE and IRI Processing;
+ */
+ if(about != NULL)
+ {
+ /* NOTE: this statement achieves this part of the processing rule
+ * as well because @about is set if depth == 1 in RDFa 1.1 in
+ * the calling function: otherwise, if the element is the root
+ * element of the document, then act as if there is an empty
+ * @about present, and process it according to the rule for
+ * @about, above;
+ */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, about);
+ }
+ else if(context->parent_object != NULL)
+ {
+ /* otherwise, if parent object is present, new subject is set
+ * to the value of parent object.
+ */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, context->parent_object);
+ }
+
+ /* If @typeof is present then typed resource is set to the resource
+ * obtained from the first match from the following rules:
+ */
+ if(type_of != NULL)
+ {
+ if(about != NULL)
+ {
+ /* by using the resource from @about, if present, obtained
+ * according to the section on CURIE and IRI Processing;
+ *
+ * NOTE: about is set to the document if this is the root
+ * element of the document, so the following rule is also applied
+ * in this case:
+ *
+ * otherwise, if the element is the root element of the
+ * document, then act as if there is an empty @about present
+ * and process it according to the previous rule;
+ */
+ context->typed_resource =
+ rdfa_replace_string(context->typed_resource, about);
+ }
+ else
+ {
+ if(resource != NULL)
+ {
+ /* by using the resource from @resource, if present, obtained
+ * according to the section on CURIE and IRI Processing;
+ */
+ context->typed_resource =
+ rdfa_replace_string(context->typed_resource, resource);
+ }
+ else if(href != NULL)
+ {
+ /* otherwise, by using the IRI from @href, if present, obtained
+ * according to the section on CURIE and IRI Processing;
+ */
+ context->typed_resource =
+ rdfa_replace_string(context->typed_resource, href);
+ }
+ else if(src != NULL)
+ {
+ /* otherwise, by using the IRI from @src, if present, obtained
+ * according to the section on CURIE and IRI Processing;
+ */
+ context->typed_resource =
+ rdfa_replace_string(context->typed_resource, src);
+ }
+ else
+ {
+ /* otherwise, the value of typed resource is set to a newly
+ * created bnode.
+ */
+ char* bnode = rdfa_create_bnode(context);
+ context->typed_resource = rdfa_replace_string(
+ context->typed_resource, bnode);
+ free(bnode);
+ }
+
+ /* The value of the current object resource is then set to the value
+ * of typed resource.
+ */
+ context->current_object_resource = rdfa_replace_string(
+ context->current_object_resource, context->typed_resource);
+ }
+ }
+ }
+ else
+ {
+ /* otherwise:
+ * If the element contains an @about, @href, @src, or @resource attribute,
+ * new subject is set to the resource obtained as follows:
+ */
+ if(about != NULL || href != NULL || src != NULL || resource != NULL)
+ {
+ if(about != NULL)
+ {
+ /* by using the resource from @about, if present, obtained
+ * according to the section on CURIE and IRI Processing;
+ */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, about);
+ }
+ else if(resource != NULL)
+ {
+ /* otherwise, by using the resource from @resource, if present,
+ * obtained according to the section on CURIE and IRI Processing;
+ */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, resource);
+ }
+ else if(href != NULL)
+ {
+ /* otherwise, by using the IRI from @href, if present, obtained
+ * according to the section on CURIE and IRI Processing;
+ */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, href);
+ }
+ else if(src != NULL)
+ {
+ /* otherwise, by using the IRI from @src, if present, obtained
+ * according to the section on CURIE and IRI Processing.
+ */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, src);
+ }
+ }
+ else
+ {
+ /* otherwise, if no resource is provided by a resource attribute,
+ * then the first match from the following rules will apply:
+ */
+
+ /* NOTE: this step is achieved via the parent function call as @about
+ * is set if the current element is the root element.
+ *
+ * if the element is the root element of the document, then act
+ * as if there is an empty @about present, and process it according
+ * to the rule for @about, above;
+ */
+ if(type_of != NULL)
+ {
+ /* otherwise, if @typeof is present, then new subject is set
+ * to be a newly created bnode;
+ */
+ char* bnode = rdfa_create_bnode(context);
+ context->new_subject = rdfa_replace_string(context->new_subject,
+ bnode);
+ free(bnode);
+ }
+ else if(context->parent_object != NULL)
+ {
+ /* otherwise, if parent object is present, new subject is set to
+ * the value of parent object.
+ */
+ context->new_subject = rdfa_replace_string(context->new_subject,
+ context->parent_object);
+
+ /* Additionally, if @property is not present then the skip
+ * element flag is set to 'true'.
+ */
+ if(property == NULL)
+ {
+ context->skip_element = 1;
+ }
+ }
+ }
+
+ if(type_of != NULL)
+ {
+ /* Finally, if @typeof is present, set the typed resource to the value
+ * of new subject.
+ */
+ context->typed_resource = rdfa_replace_string(context->typed_resource,
+ context->new_subject);
+ }
+ }
+}
+
+/**
+ * Establishes a new subject for the given context when @rel or @rev
+ * is present. The given context's new_subject and
+ * current_object_resource values are updated if a new subject is found.
+ *
+ * @param context the RDFa context.
+ * @param about the full IRI for about, or NULL if there isn't one.
+ * @param src the full IRI for src, or NULL if there isn't one.
+ * @param resource the full IRI for resource, or NULL if there isn't one.
+ * @param href the full IRI for href, or NULL if there isn't one.
+ * @param type_of the list of IRIs for type_of, or NULL if type_of
+ * wasn't specified on the current element.
+ */
+void rdfa_establish_new_1_0_subject_with_relrev(
+ rdfacontext* context, const char* name, const char* about, const char* src,
+ const char* resource, const char* href, const rdfalist* type_of)
+{
+ /* 5. If the [current element] does contain a valid @rel or @rev
+ * URI, obtained according to the section on CURIE and URI
+ * Processing, then the next step is to establish both a value
+ * for [new subject] and a value for [current object resource]:
+ *
+ * [new subject] is set to the URI obtained from the first match
+ * from the following rules: */
+
+ if(about != NULL)
+ {
+ /* * by using the URI from @about, if present, obtained
+ * according to the section on CURIE and URI Processing; */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, about);
+ }
+ else if(context->rdfa_version == RDFA_VERSION_1_0 && src != NULL)
+ {
+ /* * otherwise, by using the URI from @src, if present, obtained
+ * according to the section on CURIE and URI Processing. */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, src);
+ }
+ else if((type_of != NULL) && (type_of->num_items > 0))
+ {
+ /* * if @type_of is present, obtained according to the
+ * section on CURIE and URI Processing, then [new subject] is
+ * set to be a newly created [bnode]; */
+ char* bnode = rdfa_create_bnode(context);
+ context->new_subject = rdfa_replace_string(context->new_subject, bnode);
+ free(bnode);
+ }
+ else if(context->parent_object != NULL)
+ {
+ /* * otherwise, if [parent object] is present, [new subject] is
+ * set to that; */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, context->parent_object);
+ }
+
+ /* Then the [current object resource] is set to the URI obtained
+ * from the first match from the following rules: */
+ if(resource != NULL)
+ {
+ /* * by using the URI from @resource, if present, obtained
+ * according to the section on CURIE and URI Processing; */
+ context->current_object_resource =
+ rdfa_replace_string(context->current_object_resource, resource);
+ }
+ else if(href != NULL)
+ {
+ /* * otherwise, by using the URI from @href, if present,
+ * obtained according to the section on CURIE and URI Processing. */
+ context->current_object_resource =
+ rdfa_replace_string(context->current_object_resource, href);
+ }
+ else
+ {
+ /* * otherwise, null. */
+ context->current_object_resource = NULL;
+ }
+
+ /* Note that final value of the [current object resource] will
+ * either be null, or a full URI. */
+}
+
+/**
+ * Establishes a new subject for the given context when @rel or @rev
+ * is present. The given context's new_subject and
+ * current_object_resource values are updated if a new subject is found.
+ *
+ * @param context the RDFa context.
+ * @param about the full IRI for about, or NULL if there isn't one.
+ * @param src the full IRI for src, or NULL if there isn't one.
+ * @param resource the full IRI for resource, or NULL if there isn't one.
+ * @param href the full IRI for href, or NULL if there isn't one.
+ * @param type_of the list of IRIs for type_of, or NULL if type_of
+ * wasn't specified on the current element.
+ */
+void rdfa_establish_new_1_1_subject_with_relrev(
+ rdfacontext* context, const char* name, const char* about, const char* src,
+ const char* resource, const char* href, const rdfalist* type_of)
+{
+ /* If the current element does contain a @rel or @rev attribute, then
+ * the next step is to establish both a value for new subject and a
+ * value for current object resource:
+ */
+
+ /* new subject is set to the resource obtained from the first match from
+ * the following rules:
+ */
+
+ if(about != NULL)
+ {
+ /* by using the resource from @about, if present, obtained according
+ * to the section on CURIE and IRI Processing;
+ *
+ * NOTE: This will also catch the following rule due to @about being
+ * set in the calling function:
+ *
+ * if the element is the root element of the document then act as if
+ * there is an empty @about present, and process it according to the
+ * rule for @about, above;
+ */
+ context->new_subject =
+ rdfa_replace_string(context->new_subject, about);
+ }
+
+ if(type_of != NULL)
+ {
+ /* if the @typeof attribute is present, set typed resource to
+ * new subject.
+ */
+ context->typed_resource =
+ rdfa_replace_string(context->typed_resource, context->new_subject);
+ }
+
+ /* If no resource is provided then the first match from the following rules
+ * will apply:
+ *
+ */
+ if(context->new_subject == NULL && context->parent_object != NULL)
+ {
+ /* otherwise, if parent object is present, new subject is set to that.
+ */
+ context->new_subject = rdfa_replace_string(
+ context->new_subject, context->parent_object);
+ }
+
+ /* Then the current object resource is set to the resource obtained from
+ * the first match from the following rules:
+ */
+
+ if(resource != NULL)
+ {
+ /* by using the resource from @resource, if present, obtained according
+ * to the section on CURIE and IRI Processing;
+ */
+ context->current_object_resource = rdfa_replace_string(
+ context->current_object_resource, resource);
+ }
+ else if(href != NULL)
+ {
+ /* otherwise, by using the IRI from @href, if present, obtained
+ * according to the section on CURIE and IRI Processing;
+ */
+ context->current_object_resource = rdfa_replace_string(
+ context->current_object_resource, href);
+ }
+ else if(src != NULL)
+ {
+ /* otherwise, by using the IRI from @src, if present, obtained
+ * according to the section on CURIE and IRI Processing;
+ */
+ context->current_object_resource = rdfa_replace_string(
+ context->current_object_resource, src);
+ }
+ else if(type_of != NULL && about == NULL)
+ {
+ /* otherwise, if @typeof is present and @about is not, use a
+ * newly created bnode.
+ */
+ char* bnode = rdfa_create_bnode(context);
+ context->current_object_resource = rdfa_replace_string(
+ context->current_object_resource, bnode);
+ free(bnode);
+ }
+
+ if(type_of != NULL && about == NULL)
+ {
+ /* If @typeof is present and @about is not, set typed resource to current
+ * object resource.
+ */
+ context->typed_resource = rdfa_replace_string(
+ context->typed_resource, context->current_object_resource);
+ }
+
+ /* Note that final value of the current object resource will either be
+ * null (from initialization) or a full IRI or bnode.
+ */
+}
diff --git a/librdfa/triple.c b/librdfa/triple.c
new file mode 100644
index 0000000..42c4e2f
--- /dev/null
+++ b/librdfa/triple.c
@@ -0,0 +1,846 @@
+/**
+ * Copyright 2008 Digital Bazaar, Inc.
+ *
+ * This file is part of librdfa.
+ *
+ * librdfa is Free Software, and can be licensed under any of the
+ * following three licenses:
+ *
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any
+ * newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE-* at the top of this software distribution for more
+ * information regarding the details of each license.
+ *
+ * Handles all triple functionality including all incomplete triple
+ * functionality.
+ *
+ * @author Manu Sporny
+ */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include "rdfa_utils.h"
+#include "rdfa.h"
+
+rdftriple* rdfa_create_triple(const char* subject, const char* predicate,
+ const char* object, rdfresource_t object_type, const char* datatype,
+ const char* language)
+{
+ rdftriple* rval = (rdftriple*)malloc(sizeof(rdftriple));
+
+ /* clear the memory */
+ rval->subject = NULL;
+ rval->predicate = NULL;
+ rval->object = NULL;
+ rval->object_type = object_type;
+ rval->datatype = NULL;
+ rval->language = NULL;
+
+#if 0
+ printf("SUBJECT : %s\n", subject);
+ printf("PREDICATE: %s\n", predicate);
+ printf("OBJECT : %s\n", object);
+ printf("DATATYPE : %s\n", datatype);
+ printf("LANG : %s\n", language);
+#endif
+
+ /* a triple needs a subject, predicate and object at minimum to be
+ * considered a triple. */
+ if((subject != NULL) && (predicate != NULL) && (object != NULL))
+ {
+ rval->subject = rdfa_replace_string(rval->subject, subject);
+ rval->predicate = rdfa_replace_string(rval->predicate, predicate);
+ rval->object = rdfa_replace_string(rval->object, object);
+
+ /* if the datatype is present, set it */
+ if(datatype != NULL)
+ {
+ rval->datatype = rdfa_replace_string(rval->datatype, datatype);
+ }
+
+ /* if the language was specified, set it */
+ if(language != NULL)
+ {
+ rval->language = rdfa_replace_string(rval->language, language);
+ }
+ }
+
+ return rval;
+}
+
+void rdfa_print_triple(rdftriple* triple)
+{
+ if(triple->object_type == RDF_TYPE_NAMESPACE_PREFIX)
+ {
+ printf("%s %s: <%s> .\n",
+ triple->subject, triple->predicate, triple->object);
+ }
+ else
+ {
+ if(triple->subject != NULL)
+ {
+ if((triple->subject[0] == '_') && (triple->subject[1] == ':'))
+ {
+ printf("%s\n", triple->subject);
+ }
+ else
+ {
+ printf("<%s>\n", triple->subject);
+ }
+ }
+ else
+ {
+ printf("INCOMPLETE\n");
+ }
+
+ if(triple->predicate != NULL)
+ {
+ printf(" <%s>\n", triple->predicate);
+ }
+ else
+ {
+ printf(" INCOMPLETE\n");
+ }
+
+ if(triple->object != NULL)
+ {
+ if(triple->object_type == RDF_TYPE_IRI)
+ {
+ if((triple->object[0] == '_') && (triple->object[1] == ':'))
+ {
+ printf(" %s", triple->object);
+ }
+ else
+ {
+ printf(" <%s>", triple->object);
+ }
+ }
+ else if(triple->object_type == RDF_TYPE_PLAIN_LITERAL)
+ {
+ printf(" \"%s\"", triple->object);
+ if(triple->language != NULL)
+ {
+ printf("@%s", triple->language);
+ }
+ }
+ else if(triple->object_type == RDF_TYPE_XML_LITERAL)
+ {
+ printf(" \"%s\"^^rdf:XMLLiteral", triple->object);
+ }
+ else if(triple->object_type == RDF_TYPE_TYPED_LITERAL)
+ {
+ if((triple->datatype != NULL) && (triple->language != NULL))
+ {
+ printf(" \"%s\"@%s^^%s",
+ triple->object, triple->language, triple->datatype);
+ }
+ else if(triple->datatype != NULL)
+ {
+ printf(" \"%s\"^^%s", triple->object, triple->datatype);
+ }
+ }
+ else
+ {
+ printf(" <%s> <---- UNKNOWN OBJECT TYPE", triple->object);
+ }
+
+ printf(" .\n");
+ }
+ else
+ {
+ printf(" INCOMPLETE .");
+ }
+ }
+}
+
+void rdfa_free_triple(rdftriple* triple)
+{
+ free(triple->subject);
+ free(triple->predicate);
+ free(triple->object);
+ free(triple->datatype);
+ free(triple->language);
+ free(triple);
+}
+
+#ifndef LIBRDFA_IN_RAPTOR
+/**
+ * Generates a namespace prefix triple for any application that is
+ * interested in processing namespace changes.
+ *
+ * @param context the RDFa context.
+ * @param prefix the name of the prefix
+ * @param IRI the fully qualified IRI that the prefix maps to.
+ */
+void rdfa_generate_namespace_triple(
+ rdfacontext* context, const char* prefix, const char* iri)
+{
+ if(context->processor_graph_triple_callback != NULL)
+ {
+ rdftriple* triple = rdfa_create_triple(
+ "@prefix", prefix, iri, RDF_TYPE_NAMESPACE_PREFIX, NULL, NULL);
+ context->processor_graph_triple_callback(triple, context->callback_data);
+ }
+}
+
+/**
+ * Generates a set of triples that describe the location of a warning or
+ * error in a document.
+ *
+ * @param context the currently active context.
+ * @param subject the name of the subject that is associated with the triples.
+ */
+#if 1 /* remove when the prototype is in the header */
+void rdfa_processor_location_triples(rdfacontext* context, const char* subject);
+#endif
+void rdfa_processor_location_triples(rdfacontext* context, const char* subject)
+{
+}
+
+/**
+ * Generates a set of triples in the processor graph including the processor's
+ * position in the byte stream.
+ *
+ * @param context the current active context.
+ * @param type the type of the message, which may be any of the RDF Classes
+ * defined in the RDFa Core specification:
+ * http://www.w3.org/TR/rdfa-core/#processor-graph-reporting
+ * @param msg the message associated with the processor warning.
+ */
+void rdfa_processor_triples(
+ rdfacontext* context, const char* type, const char* msg)
+{
+ if(context->processor_graph_triple_callback != NULL)
+ {
+ char buffer[32];
+ char* subject = rdfa_create_bnode(context);
+ char* context_subject = rdfa_create_bnode(context);
+
+ /* generate the RDFa Processing Graph warning type triple */
+ rdftriple* triple = rdfa_create_triple(
+ subject, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
+ type, RDF_TYPE_IRI, NULL, NULL);
+ context->processor_graph_triple_callback(triple, context->callback_data);
+
+ /* generate the description */
+ triple = rdfa_create_triple(
+ subject, "http://purl.org/dc/terms/description", msg,
+ RDF_TYPE_PLAIN_LITERAL, NULL, "en");
+ context->processor_graph_triple_callback(triple, context->callback_data);
+
+ /* generate the context triple for the error */
+ triple = rdfa_create_triple(
+ subject, "http://www.w3.org/ns/rdfa#context",
+ context_subject, RDF_TYPE_IRI, NULL, NULL);
+ context->processor_graph_triple_callback(triple, context->callback_data);
+
+ /* generate the type for the context triple */
+ triple = rdfa_create_triple(
+ context_subject, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
+ "http://www.w3.org/2009/pointers#LineCharPointer",
+ RDF_TYPE_IRI, NULL, NULL);
+ context->processor_graph_triple_callback(triple, context->callback_data);
+
+ /* generate the line number */
+ snprintf(buffer, sizeof(buffer) - 1, "%d",
+ (int)xmlSAX2GetLineNumber(context->parser));
+ triple = rdfa_create_triple(
+ context_subject, "http://www.w3.org/2009/pointers#lineNumber",
+ buffer, RDF_TYPE_TYPED_LITERAL,
+ "http://www.w3.org/2001/XMLSchema#positiveInteger", NULL);
+ context->processor_graph_triple_callback(triple, context->callback_data);
+
+ free(context_subject);
+ free(subject);
+ }
+}
+#endif
+
+/**
+ * Completes all incomplete triples that are part of the current
+ * context by matching the new_subject with the list of incomplete
+ * triple predicates.
+ *
+ * @param context the RDFa context.
+ */
+void rdfa_complete_incomplete_triples(rdfacontext* context)
+{
+ /* 10. If the [ skip element ] flag is 'false', and [ new subject ]
+ * was set to a non-null value, then any [ incomplete triple ]s
+ * within the current context should be completed:
+ *
+ * The [ list of incomplete triples ] from the current [ evaluation
+ * context ] ( not the [ local list of incomplete triples ]) will
+ * contain zero or more predicate URIs. This list is iterated, and
+ * each of the predicates is used with [ parent subject ] and
+ * [ new subject ] to generate a triple. Note that at each level
+ * there are two , lists of [ incomplete triple ]s; one for the
+ * current processing level (which is passed to each child element
+ * in the previous step), and one that was received as part of the
+ * [ evaluation context ]. It is the latter that is used in
+ * processing during this step. */
+ unsigned int i;
+ for(i = 0; i < context->incomplete_triples->num_items; i++)
+ {
+ rdfalist* incomplete_triples = context->incomplete_triples;
+ rdfalistitem* incomplete_triple = incomplete_triples->items[i];
+
+ if(incomplete_triple->flags & RDFALIST_FLAG_DIR_NONE)
+ {
+ /* If direction is 'none', the new subject is added to the list
+ * from the iterated incomplete triple. */
+ const char* predicate = (const char*)incomplete_triple->data;
+ rdftriple* triple = rdfa_create_triple(context->parent_subject,
+ predicate, context->new_subject, RDF_TYPE_IRI, NULL, NULL);
+
+ /* ensure the list mapping exists */
+ rdfa_create_list_mapping(
+ context, context->local_list_mappings,
+ context->parent_subject, predicate);
+
+ /* add the predicate to the list mapping */
+ rdfa_append_to_list_mapping(context->local_list_mappings,
+ context->parent_subject, predicate, (void*)triple);
+ }
+ else if(incomplete_triple->flags & RDFALIST_FLAG_DIR_FORWARD)
+ {
+ /* If [direction] is 'forward' then the following triple is generated:
+ *
+ * subject
+ * [parent subject]
+ * predicate
+ * the predicate from the iterated incomplete triple
+ * object
+ * [new subject] */
+ rdftriple* triple =
+ rdfa_create_triple(context->parent_subject,
+ (const char*)incomplete_triple->data, context->new_subject,
+ RDF_TYPE_IRI, NULL, NULL);
+ context->default_graph_triple_callback(triple, context->callback_data);
+ }
+ else
+ {
+ /* If [direction] is not 'forward' then this is the triple generated:
+ *
+ * subject
+ * [new subject]
+ * predicate
+ * the predicate from the iterated incomplete triple
+ * object
+ * [parent subject] */
+ rdftriple* triple =
+ rdfa_create_triple(context->new_subject,
+ (const char*)incomplete_triple->data, context->parent_subject,
+ RDF_TYPE_IRI, NULL, NULL);
+ context->default_graph_triple_callback(triple, context->callback_data);
+ }
+ free(incomplete_triple->data);
+ free(incomplete_triple);
+ }
+ context->incomplete_triples->num_items = 0;
+}
+
+void rdfa_complete_type_triples(
+ rdfacontext* context, const rdfalist* type_of)
+{
+ unsigned int i;
+ rdfalistitem** iptr = type_of->items;
+ const char* subject;
+ const char* type;
+
+ if(context->rdfa_version == RDFA_VERSION_1_0)
+ {
+ /* RDFa 1.0: 6.1 One or more 'types' for the [new subject] can be set by
+ * using @type_of. If present, the attribute must contain one or
+ * more URIs, obtained according to the section on URI and CURIE
+ * Processing, each of which is used to generate a triple as follows:
+ *
+ * subject
+ * [new subject]
+ * predicate
+ * http://www.w3.org/1999/02/22-rdf-syntax-ns#type
+ * object
+ * full URI of 'type'
+ */
+ subject = context->new_subject;
+ }
+ else
+ {
+ /* RDFa 1.1: 7. One or more 'types' for the typed resource can be set by
+ * using @typeof. If present, the attribute may contain one or more IRIs,
+ * obtained according to the section on CURIE and IRI Processing, each of
+ * which is used to generate a triple as follows:
+ *
+ * subject
+ * typed resource
+ * predicate
+ * http://www.w3.org/1999/02/22-rdf-syntax-ns#type
+ * object
+ * current full IRI of 'type' from typed resource
+ */
+ subject = context->typed_resource;
+ }
+
+ for(i = 0; i < type_of->num_items; i++)
+ {
+ rdfalistitem* iri = *iptr;
+ rdftriple* triple;
+ type = (const char*)iri->data;
+
+ triple = rdfa_create_triple(subject,
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", type, RDF_TYPE_IRI,
+ NULL, NULL);
+
+ context->default_graph_triple_callback(triple, context->callback_data);
+ iptr++;
+ }
+}
+
+void rdfa_complete_relrev_triples(
+ rdfacontext* context, const rdfalist* rel, const rdfalist* rev)
+{
+ /* 7. If in any of the previous steps a [current object resource]
+ * was set to a non-null value, it is now used to generate triples */
+ unsigned int i;
+
+ /* Predicates for the [current object resource] can be set by using
+ * one or both of the @rel and @rev attributes. */
+
+ /* If present, @rel will contain one or more URIs, obtained
+ * according to the section on CURIE and URI Processing each of
+ * which is used to generate a triple as follows:
+ *
+ * subject
+ * [new subject]
+ * predicate
+ * full URI
+ * object
+ * [current object resource] */
+ if(rel != NULL)
+ {
+ rdfalistitem** relptr = rel->items;
+ for(i = 0; i < rel->num_items; i++)
+ {
+ rdfalistitem* curie = *relptr;
+
+ rdftriple* triple = rdfa_create_triple(context->new_subject,
+ (const char*)curie->data, context->current_object_resource,
+ RDF_TYPE_IRI, NULL, NULL);
+
+ context->default_graph_triple_callback(triple, context->callback_data);
+ relptr++;
+ }
+ }
+
+ /* If present, @rev will contain one or more URIs, obtained
+ * according to the section on CURIE and URI Processing each of which
+ * is used to generate a triple as follows:
+ *
+ * subject
+ * [current object resource]
+ * predicate
+ * full URI
+ * object
+ * [new subject] */
+ if(rev != NULL)
+ {
+ rdfalistitem** revptr = rev->items;
+ for(i = 0; i < rev->num_items; i++)
+ {
+ rdfalistitem* curie = *revptr;
+
+ rdftriple* triple = rdfa_create_triple(
+ context->current_object_resource, (const char*)curie->data,
+ context->new_subject, RDF_TYPE_IRI, NULL, NULL);
+
+ context->default_graph_triple_callback(triple, context->callback_data);
+ revptr++;
+ }
+ }
+}
+
+void rdfa_save_incomplete_triples(
+ rdfacontext* context, const rdfalist* rel, const rdfalist* rev)
+{
+ unsigned int i;
+ /* 8. If however [current object resource] was set to null, but
+ * there are predicates present, then they must be stored as
+ * [incomplete triple]s, pending the discovery of a subject that
+ * can be used as the object. Also, [current object resource]
+ * should be set to a newly created [bnode] */
+ if(context->current_object_resource == NULL)
+ {
+ context->current_object_resource = rdfa_create_bnode(context);
+ }
+
+ /* If present, @rel must contain one or more URIs, obtained
+ * according to the section on CURIE and URI Processing each of
+ * which is added to the [local local list of incomplete triples]
+ * as follows:
+ *
+ * predicate
+ * full URI
+ * direction
+ * forward */
+ if(rel != NULL)
+ {
+ rdfalistitem** relptr = rel->items;
+ for(i = 0; i < rel->num_items; i++)
+ {
+ rdfalistitem* curie = *relptr;
+
+ rdfa_add_item(
+ context->local_incomplete_triples, curie->data,
+ (liflag_t)(RDFALIST_FLAG_DIR_FORWARD | RDFALIST_FLAG_TEXT));
+
+ relptr++;
+ }
+ }
+
+ /* If present, @rev must contain one or more URIs, obtained
+ * according to the section on CURIE and URI Processing, each of
+ * which is added to the [local list of incomplete triples] as follows:
+ *
+ * predicate
+ * full URI
+ * direction
+ * reverse */
+ if(rev != NULL)
+ {
+ rdfalistitem** revptr = rev->items;
+ for(i = 0; i < rev->num_items; i++)
+ {
+ rdfalistitem* curie = *revptr;
+
+ rdfa_add_item(
+ context->local_incomplete_triples, curie->data,
+ (liflag_t)(RDFALIST_FLAG_DIR_REVERSE | RDFALIST_FLAG_TEXT));
+
+ revptr++;
+ }
+ }
+}
+
+void rdfa_complete_object_literal_triples(rdfacontext* context)
+{
+ /* 9. The next step of the iteration is to establish any
+ * [current object literal];
+ *
+ * Predicates for the [current object literal] can be set by using
+ * @property. If present, a URI is obtained according to the
+ * section on CURIE and URI Processing, and then the actual literal
+ * value is obtained as follows: */
+ char* current_object_literal = NULL;
+ rdfresource_t type = RDF_TYPE_UNKNOWN;
+
+ unsigned int i;
+ rdfalistitem** pptr;
+
+ /* * as a [plain literal] if:
+ * o @content is present;
+ * o or all children of the [current element] are text nodes;
+ * o or there are no child nodes; TODO: Is this needed?
+ * o or the body of the [current element] does have non-text
+ * child nodes but @datatype is present, with an empty value.
+ *
+ * Additionally, if there is a value for [current language] then
+ * the value of the [plain literal] should include this language
+ * information, as described in [RDF-CONCEPTS]. The actual literal
+ * is either the value of @content (if present) or a string created
+ * by concatenating the text content of each of the descendant
+ * elements of the [current element] in document order. */
+ if((context->content != NULL))
+ {
+ current_object_literal = context->content;
+ type = RDF_TYPE_PLAIN_LITERAL;
+ }
+ else if(strchr(context->xml_literal, '<') == NULL)
+ {
+ current_object_literal = context->plain_literal;
+ type = RDF_TYPE_PLAIN_LITERAL;
+ }
+ else if(strlen(context->plain_literal) == 0)
+ {
+ current_object_literal = (char*)"";
+ type = RDF_TYPE_PLAIN_LITERAL;
+ }
+ else if((context->xml_literal != NULL) &&
+ (context->datatype != NULL) &&
+ (strlen(context->xml_literal) > 0) &&
+ (strcmp(context->datatype, "") == 0))
+ {
+ current_object_literal = context->plain_literal;
+ type = RDF_TYPE_PLAIN_LITERAL;
+ }
+
+
+ /* * as an [XML literal] if:
+ * o the [current element] has any child nodes that are not
+ * simply text nodes, and @datatype is not present, or is
+ * present, but is set to rdf:XMLLiteral.
+ *
+ * The value of the [XML literal] is a string created by
+ * serializing to text, all nodes that are descendants of the
+ * [current element], i.e., not including the element itself, and
+ * giving it a datatype of rdf:XMLLiteral. */
+ if((current_object_literal == NULL) &&
+ (strchr(context->xml_literal, '<') != NULL) &&
+ ((context->datatype == NULL) ||
+ (strcmp(context->datatype,
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral") == 0)))
+ {
+ current_object_literal = context->xml_literal;
+ type = RDF_TYPE_XML_LITERAL;
+ }
+
+ /* * as a [typed literal] if:
+ * o @datatype is present, and does not have an empty
+ * value.
+ *
+ * The actual literal is either the value of @content (if present)
+ * or a string created by concatenating the value of all descendant
+ * text nodes, of the [current element] in turn. The final string
+ * includes the datatype URI, as described in [RDF-CONCEPTS], which
+ * will have been obtained according to the section on CURIE and
+ * URI Processing. */
+ if((context->datatype != NULL) && (strlen(context->datatype) > 0))
+ {
+ if(context->content != NULL)
+ {
+ /* Static code analyzer clang says next line is not needed;
+ * "Assigned value is always the same as the existing value"
+ */
+ /* current_object_literal = context->content; */
+ type = RDF_TYPE_TYPED_LITERAL;
+ }
+ else if(strcmp(context->datatype,
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral") != 0)
+ {
+ current_object_literal = context->plain_literal;
+ type = RDF_TYPE_TYPED_LITERAL;
+ }
+ }
+
+ /* TODO: Setting the current object literal to the plain literal in
+ * the case of xsd:string isn't mentioned in the syntax
+ * processing document. */
+ if((current_object_literal == NULL) && (context->datatype != NULL) &&
+ (strcmp(
+ context->datatype, "http://www.w3.org/2001/XMLSchema#string") == 0))
+ {
+ current_object_literal = context->plain_literal;
+ type = RDF_TYPE_TYPED_LITERAL;
+ }
+
+ /* The [current object literal] is then used with each predicate to
+ * generate a triple as follows:
+ *
+ * subject
+ * [new subject]
+ * predicate
+ * full URI
+ * object
+ * [current object literal] */
+ pptr = context->property->items;
+ for(i = 0; i < context->property->num_items; i++)
+ {
+
+ rdfalistitem* curie = *pptr;
+ rdftriple* triple = NULL;
+
+ triple = rdfa_create_triple(context->new_subject,
+ (const char*)curie->data, current_object_literal, type,
+ context->datatype, context->language);
+
+ context->default_graph_triple_callback(triple, context->callback_data);
+ pptr++;
+ }
+
+ /* TODO: Implement recurse flag being set to false
+ *
+ * Once the triple has been created, if the [datatype] of the
+ * [current object literal] is rdf:XMLLiteral, then the [recurse]
+ * flag is set to false */
+ context->recurse = 0;
+}
+
+void rdfa_complete_current_property_value_triples(rdfacontext* context)
+{
+ /* 11. The next step of the iteration is to establish any current property
+ * value;
+ * Predicates for the current property value can be set by using @property.
+ * If present, one or more resources are obtained according to the section
+ * on CURIE and IRI Processing, and then the actual literal value is
+ * obtained as follows: */
+ char* current_property_value = NULL;
+ rdfresource_t type = RDF_TYPE_UNKNOWN;
+
+ unsigned int i;
+ rdfalistitem** pptr;
+
+ /* as a typed literal if @datatype is present, does not have an empty
+ * value according to the section on CURIE and IRI Processing, and is not
+ * set to XMLLiteral in the vocabulary
+ * http://www.w3.org/1999/02/22-rdf-syntax-ns#. */
+ if((context->datatype != NULL) && (strcmp(context->datatype,
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral") != 0))
+ {
+ /* The actual literal is either the value of @content (if present) or a
+ * string created by concatenating the value of all descendant text nodes,
+ * of the current element in turn. */
+ if(context->content != NULL)
+ {
+ current_property_value = context->content;
+ }
+ else
+ {
+ current_property_value = context->plain_literal;
+ }
+
+ /* The final string includes the datatype
+ * IRI, as described in [RDF-CONCEPTS], which will have been obtained
+ * according to the section on CURIE and IRI Processing.
+ * otherwise, as a plain literal if @datatype is present but has an
+ * empty value according to the section on CURIE and IRI Processing. */
+ if(strlen(context->datatype) > 0)
+ {
+ type = RDF_TYPE_TYPED_LITERAL;
+ }
+ else
+ {
+ type = RDF_TYPE_PLAIN_LITERAL;
+ }
+ }
+ else if((context->datatype != NULL) && (strcmp(context->datatype,
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral") == 0))
+ {
+ /* otherwise, as an XML literal if @datatype is present and is set to
+ * XMLLiteral in the vocabulary
+ * http://www.w3.org/1999/02/22-rdf-syntax-ns#.
+ * The value of the XML literal is a string created by serializing to
+ * text, all nodes that are descendants of the current element, i.e., not
+ * including the element itself, and giving it a datatype of XMLLiteral
+ * in the vocabulary http://www.w3.org/1999/02/22-rdf-syntax-ns#. The
+ * format of the resulting serialized content is as defined in Exclusive
+ * XML Canonicalization Version [XML-EXC-C14N].
+ * In order to maintain maximum portability of this literal, any children
+ * of the current node that are elements must have the current XML
+ * namespace declarations (if any) declared on the serialized element.
+ * Since the child element node could also declare new XML namespaces,
+ * the RDFa Processor must be careful to merge these together when
+ * generating the serialized element definition. For avoidance of doubt,
+ * any re-declarations on the child node must take precedence over
+ * declarations that were active on the current node. */
+ current_property_value = context->xml_literal;
+ type = RDF_TYPE_XML_LITERAL;
+ }
+ else if(context->content != NULL)
+ {
+ /* otherwise, as an plain literal using the value of @content if
+ * @content is present. */
+ current_property_value = context->content;
+ type = RDF_TYPE_PLAIN_LITERAL;
+ }
+ else if((context->rel_present == 0) && (context->rev_present == 0) &&
+ (context->content == NULL))
+ {
+ /* otherwise, if the @rel, @rev, and @content attributes are not present,
+ * as a resource obtained from one of the following: */
+ if(context->resource != NULL)
+ {
+ /* by using the resource from @resource, if present, obtained
+ * according to the section on CURIE and IRI Processing; */
+ current_property_value = context->resource;
+ type = RDF_TYPE_IRI;
+ }
+ else if(context->href != NULL)
+ {
+ /* otherwise, by using the IRI from @href, if present, obtained
+ * according to the section on CURIE and IRI Processing; */
+ current_property_value = context->href;
+ type = RDF_TYPE_IRI;
+ }
+ else if(context->src != NULL)
+ {
+ /* otherwise, by using the IRI from @src, if present, obtained
+ * according to the section on CURIE and IRI Processing. */
+ current_property_value = context->src;
+ type = RDF_TYPE_IRI;
+ }
+ else if((context->about == NULL) && (context->typed_resource != NULL))
+ {
+ /* otherwise, if @typeof is present and @about is not, the value of
+ * typed resource. */
+ current_property_value = context->typed_resource;
+ type = RDF_TYPE_IRI;
+ }
+ else
+ {
+ /* otherwise as a plain literal. */
+ current_property_value = context->plain_literal;
+ type = RDF_TYPE_PLAIN_LITERAL;
+ }
+ }
+ else
+ {
+ /* otherwise as a plain literal. */
+ current_property_value = context->plain_literal;
+ type = RDF_TYPE_PLAIN_LITERAL;
+ }
+
+ /* Additionally, if there is a value for current language then the value
+ * of the plain literal should include this language information, as
+ * described in [RDF-CONCEPTS]. The actual literal is either the value
+ * of @content (if present) or a string created by concatenating the text
+ * content of each of the descendant elements of the current element in
+ * document order.
+ *
+ * NOTE: This happens automatically due to the way the code is setup. */
+
+ if(context->inlist_present)
+ {
+ /* The current property value is then used with each predicate as
+ * follows:
+ * If the element also includes the @inlist attribute, the current
+ * property value is added to the local list mapping as follows:
+ * if the local list mapping does not contain a list associated with
+ * the predicate IRI, instantiate a new list and add to local list
+ * mappings add the current property value to the list associated
+ * with the predicate IRI in the local list mapping */
+ rdfa_establish_new_inlist_triples(
+ context, context->property, current_property_value, type);
+ }
+ else
+ {
+ pptr = context->property->items;
+ for(i = 0; i < context->property->num_items; i++)
+ {
+ /* Otherwise the current property value is used to generate a triple
+ * as follows:
+ * subject
+ * new subject
+ * predicate
+ * full IRI
+ * object
+ * current property value */
+ rdfalistitem* curie = *pptr;
+ rdftriple* triple = triple = rdfa_create_triple(context->new_subject,
+ (const char*)curie->data, current_property_value, type,
+ context->datatype, context->language);
+
+ context->default_graph_triple_callback(triple, context->callback_data);
+
+ pptr++;
+ }
+ }
+}
diff --git a/mkinstalldirs b/mkinstalldirs
new file mode 100755
index 0000000..4191a45
--- /dev/null
+++ b/mkinstalldirs
@@ -0,0 +1,162 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2009-04-28.21; # UTC
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+IFS=" "" $nl"
+errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+ case $1 in
+ -h | --help | --h*) # -h for help
+ echo "$usage"
+ exit $?
+ ;;
+ -m) # -m PERM arg
+ shift
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+ dirmode=$1
+ shift
+ ;;
+ --version)
+ echo "$0 $scriptversion"
+ exit $?
+ ;;
+ --) # stop option processing
+ shift
+ break
+ ;;
+ -*) # unknown option
+ echo "$usage" 1>&2
+ exit 1
+ ;;
+ *) # first non-opt arg
+ break
+ ;;
+ esac
+done
+
+for file
+do
+ if test -d "$file"; then
+ shift
+ else
+ break
+ fi
+done
+
+case $# in
+ 0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error. This is a problem when calling mkinstalldirs
+# from a parallel make. We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+ '')
+ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ echo "mkdir -p -- $*"
+ exec mkdir -p -- "$@"
+ else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ test -d ./-p && rmdir ./-p
+ test -d ./--version && rmdir ./--version
+ fi
+ ;;
+ *)
+ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+ test ! -d ./--version; then
+ echo "mkdir -m $dirmode -p -- $*"
+ exec mkdir -m "$dirmode" -p -- "$@"
+ else
+ # Clean up after NextStep and OpenStep mkdir.
+ for d in ./-m ./-p ./--version "./$dirmode";
+ do
+ test -d $d && rmdir $d
+ done
+ fi
+ ;;
+esac
+
+for file
+do
+ case $file in
+ /*) pathcomp=/ ;;
+ *) pathcomp= ;;
+ esac
+ oIFS=$IFS
+ IFS=/
+ set fnord $file
+ shift
+ IFS=$oIFS
+
+ for d
+ do
+ test "x$d" = x && continue
+
+ pathcomp=$pathcomp$d
+ case $pathcomp in
+ -*) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp"
+
+ mkdir "$pathcomp" || lasterr=$?
+
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
+ else
+ if test ! -z "$dirmode"; then
+ echo "chmod $dirmode $pathcomp"
+ lasterr=
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+ if test ! -z "$lasterr"; then
+ errstatus=$lasterr
+ fi
+ fi
+ fi
+ fi
+
+ pathcomp=$pathcomp/
+ done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/raptor2.pc.in b/raptor2.pc.in
new file mode 100644
index 0000000..2c47402
--- /dev/null
+++ b/raptor2.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@/@PACKAGE@
+
+Name: Raptor RDF Parsing Library
+Description: RDF Parser Toolkit Library
+Version: @VERSION@
+Libs: -L${libdir} -lraptor2
+Libs.private: @RAPTOR_LDFLAGS@
+Cflags: -I${includedir}
+
diff --git a/raptor2.rdf.in b/raptor2.rdf.in
new file mode 100644
index 0000000..e1aa22d
--- /dev/null
+++ b/raptor2.rdf.in
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:foaf="http://xmlns.com/foaf/0.1/"
+ xmlns="http://usefulinc.com/ns/doap#">
+
+ <Project rdf:about="http://librdf.org/raptor/#raptor">
+ <name>Raptor</name>
+ <homepage rdf:resource="http://librdf.org/raptor/"/>
+
+ <shortdesc xml:lang="en">Raptor RDF Parser Toolkit Library.</shortdesc>
+
+ <description xml:lang="en">is a free software / Open Source C
+ library that provides a set of parsers and serializers that
+ generate Resource Description Framework (RDF) triples by parsing
+ syntaxes or serialize the triples into a syntax. The supported
+ parsing syntaxes are RDF/XML, N-Triples, TRiG, Turtle, RSS tag
+ soup including all versions of RSS, Atom 1.0 and 0.3, GRDDL and
+ microformats for HTML, XHTML and XML. The
+ serializing syntaxes are RDF/XML (regular, and abbreviated),
+ N-Triples, RSS 1.0, Atom 1.0, XMP, Turtle, GraphViz DOT and
+ JSON.</description>
+
+ <maintainer>
+ <foaf:Person>
+ <foaf:name>Dave Beckett</foaf:name>
+ <foaf:homepage rdf:resource="http://www.dajobe.org/"/>
+ <foaf:mbox_sha1sum>970987f991961f2553a1bf2574166fa29befbccb</foaf:mbox_sha1sum>
+ </foaf:Person>
+ </maintainer>
+
+ <release>
+ <Version>
+ <name>stable</name>
+ <created>2005-02-01</created>
+ <revision>@VERSION@</revision>
+ </Version>
+ </release>
+
+ <mailing-list rdf:resource="http://lists.usefulinc.com/mailman/listinfo/redland-dev" />
+ <mailing-list rdf:resource="http://lists.usefulinc.com/mailman/listinfo/redland-announce" />
+ <mailing-list rdf:resource="http://lists.usefulinc.com/mailman/listinfo/redland-commits" />
+
+ <download-page rdf:resource="http://download.librdf.org/sources/"/>
+ <download-mirror rdf:resource="http://sourceforge.net/projects/librdf/" />
+
+ <!-- Freshmeat category: Database Engines/Servers -->
+ <category rdf:resource="http://software.freshmeat.net/browse/67/" />
+ <!-- Internet :: WWW/HTTP :: Indexing/Search -->
+ <category rdf:resource="http://software.freshmeat.net/browse/93/" />
+ <!-- Software Development :: Libraries -->
+ <category rdf:resource="http://software.freshmeat.net/browse/809/" />
+ <!-- Software Development :: Libraries :: Application Frameworks -->
+ <category rdf:resource="http://software.freshmeat.net/browse/810/" />
+ <!-- Text Processing :: Markup :: XML -->
+ <category rdf:resource="http://software.freshmeat.net/browse/868/" />
+
+ <!-- Sourceforge category: -->
+ <category rdf:resource="http://sourceforge.net/softwaremap/trove_list.php?form_cat=237" />
+
+ <!-- Licensing details -->
+ <license rdf:resource="http://usefulinc.com/doap/licenses/gpl"/>
+ <license rdf:resource="http://usefulinc.com/doap/licenses/lgpl"/>
+ <license rdf:resource="http://usefulinc.com/doap/licenses/asl20"/>
+
+ <!-- source repository -->
+ <repository>
+ <GITRepository>
+ <location rdf:resource="git://github.com/dajobe/raptor.git" />
+ <browse rdf:resource="http://github.com/dajobe/raptor" />
+ </GITRepository>
+ </repository>
+ </Project>
+
+
+ <!--
+ optional administravia:
+ authoring tools can add more here if they'd like.
+ -->
+ <rdf:Description rdf:about="">
+ <foaf:maker>
+ <foaf:Person>
+ <foaf:name>Dave Beckett</foaf:name>
+ <foaf:homepage rdf:resource="http://www.dajobe.org/"/>
+ <foaf:mbox_sha1sum>970987f991961f2553a1bf2574166fa29befbccb</foaf:mbox_sha1sum>
+ </foaf:Person>
+ </foaf:maker>
+ </rdf:Description>
+
+</rdf:RDF>
+<!--
+Local variables:
+mode:nxml
+End:
+-->
diff --git a/raptor2.spec.in b/raptor2.spec.in
new file mode 100644
index 0000000..f735577
--- /dev/null
+++ b/raptor2.spec.in
@@ -0,0 +1,136 @@
+# -*- RPM-SPEC -*-
+%define name @PACKAGE@
+%define version @VERSION@
+%define release @RPM_RELEASE@
+
+Summary: Raptor RDF Parser Toolkit for Redland
+Name: %{name}
+Version: %{version}
+Release: %{release}
+Prefix: %{_prefix}
+License: LGPLv2+ or ASL 2.0
+Group: Development/Libraries
+Source: http://download.librdf.org/source/%{name}-%{version}.tar.gz
+URL: http://librdf.org/raptor/
+BuildRoot: /tmp/%{name}-%{version}
+BuildRequires: libxml2 libxml2-devel >= 2.6.8
+BuildRequires: curl curl-devel
+BuildRequires: libxslt libxslt-devel
+Packager: Dave Beckett <dave@dajobe.org>
+Docdir: %{_docdir}
+
+%description
+
+Raptor is the RDF Parser Toolkit for Redland that provides a set of
+Resource Description Framework (RDF) parsers and serializers,
+generating RDF triples from the following syntaxes: RDF/XML,
+N-Triples, TRiG, Turtle, RSS tag soup including all versions of RSS,
+Atom 1.0 and 0.3, GRDDL and microformats for HTML, XHTML and XML. The
+serializing RDF triples to syntaxes are: RDF/XML, RSS 1.0, Atom 1.0,
+N-Triples, XMP, Turtle, GraphViz DOT and JSON.
+
+%package devel
+Summary: Libraries, includes etc to develop with Raptor RDF parser library
+Group: Development/Libraries
+Requires: raptor = %{version}
+Requires: libxml2-devel
+
+%description devel
+Libraries, includes etc to develop with Raptor RDF parser and
+serializer library.
+
+%prep
+%setup -q
+
+%build
+
+%configure --enable-release
+
+%{__make} OPTIMIZE="$RPM_OPT_FLAGS"
+
+%install
+[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf $RPM_BUILD_ROOT
+
+install -d $RPM_BUILD_ROOT%{_mandir}/man1
+install -d $RPM_BUILD_ROOT%{_mandir}/man3
+
+%makeinstall
+
+%clean
+[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-, root, root)
+
+%doc AUTHORS COPYING COPYING.LIB ChangeLog LICENSE.txt NEWS README
+%doc LICENSE-2.0.txt NOTICE
+%doc *.html
+
+%doc %{_mandir}/man1/rapper.1*
+%doc %{_mandir}/man3/libraptor2.3*
+
+%doc %{_datadir}/gtk-doc/html/raptor2/*
+
+%{_libdir}/libraptor*.so.*
+%{prefix}/bin/rapper
+
+
+%files devel
+%defattr(-, root, root)
+
+%doc AUTHORS COPYING COPYING.LIB ChangeLog LICENSE.txt NEWS README
+%doc LICENSE-2.0.txt NOTICE
+
+%{_libdir}/libraptor*.so
+%{_libdir}/pkgconfig/raptor2.pc
+
+%{prefix}/include/raptor/*
+
+
+%changelog
+* Fri Jan 5 2007 Dave Beckett <dave@dajobe.org>
+- rename files for raptor 2.0.0
+- no more raptor-config
+- do not package libraptor*.la or libraptor*.a files
+- includes are in a subdir
+
+* Fri Jan 5 2007 Dave Beckett <dave@dajobe.org>
+- Document Turtle and DOT serializers
+
+* Wed Feb 15 2006 Dave Beckett <dave@dajobe.org>
+- Add libxslt and libxslt-devel for GRDDL
+
+* Wed Dec 20 2005 Dave Beckett <dave@dajobe.org>
+- Update description of parsers and serializers.
+
+* Wed Nov 9 2005 Dave Beckett <dave@dajobe.org>
+- Add gtk-doc documentation
+
+* Wed Aug 11 2005 Dave Beckett <dave.beckett@bristol.ac.uk>
+- Update Source:
+- Use %makeinstall
+
+* Wed Aug 10 2005 Dave Beckett <dave.beckett@bristol.ac.uk>
+- Use %configure and %{_make}
+
+* Thu Sep 9 2004 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+- License now LGPL/Apache 2
+- Added LICENSE-2.0.txt and NOTICE
+
+* Tue May 11 2004 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+- Added RELEASE.html
+
+* Thu Apr 17 2003 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+- Added pkgconfig raptor.pc, raptor-config
+- Requires curl
+
+* Mon Jan 13 2003 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+- rdfdump now rapper
+
+* Fri Dec 20 2002 Dave Beckett <Dave.Beckett@bristol.ac.uk>
+- Updated to have two RPMs for raptor and raptor-devel. Depend on
+ libxml2 as XML parser.
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
new file mode 100644
index 0000000..ebf7f49
--- /dev/null
+++ b/scripts/Makefile.am
@@ -0,0 +1,42 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor libraptor
+#
+# Copyright (C) 2010, David Beckett http://www.dajobe.org/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+
+EXTRA_DIST= \
+fix-bison \
+fix-flex \
+fix-groff-xhtml \
+fix-gtkdoc-header.pl \
+process-changes.pl
+
+CLEANFILES =
+
+if MAINTAINER_MODE
+EXTRA_PROGRAMS = build-formats
+
+CLEANFILES += build-formats
+
+build_formats_SOURCES = build-formats.c
+build_formats_LDADD= $(top_builddir)/src/libraptor2.la
+
+endif
+
+$(top_builddir)/src/libraptor2.la:
+ cd $(top_builddir)/src && $(MAKE) libraptor2.la
diff --git a/scripts/Makefile.in b/scripts/Makefile.in
new file mode 100644
index 0000000..9395ba1
--- /dev/null
+++ b/scripts/Makefile.in
@@ -0,0 +1,574 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor libraptor
+#
+# Copyright (C) 2010, David Beckett http://www.dajobe.org/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@MAINTAINER_MODE_TRUE@EXTRA_PROGRAMS = build-formats$(EXEEXT)
+@MAINTAINER_MODE_TRUE@am__append_1 = build-formats
+subdir = scripts
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__build_formats_SOURCES_DIST = build-formats.c
+@MAINTAINER_MODE_TRUE@am_build_formats_OBJECTS = \
+@MAINTAINER_MODE_TRUE@ build-formats.$(OBJEXT)
+build_formats_OBJECTS = $(am_build_formats_OBJECTS)
+@MAINTAINER_MODE_TRUE@build_formats_DEPENDENCIES = \
+@MAINTAINER_MODE_TRUE@ $(top_builddir)/src/libraptor2.la
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
+depcomp = $(SHELL) $(top_srcdir)/build/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(build_formats_SOURCES)
+DIST_SOURCES = $(am__build_formats_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+fix-bison \
+fix-flex \
+fix-groff-xhtml \
+fix-gtkdoc-header.pl \
+process-changes.pl
+
+CLEANFILES = $(am__append_1)
+@MAINTAINER_MODE_TRUE@build_formats_SOURCES = build-formats.c
+@MAINTAINER_MODE_TRUE@build_formats_LDADD = $(top_builddir)/src/libraptor2.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu scripts/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+build-formats$(EXEEXT): $(build_formats_OBJECTS) $(build_formats_DEPENDENCIES) $(EXTRA_build_formats_DEPENDENCIES)
+ @rm -f build-formats$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(build_formats_OBJECTS) $(build_formats_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/build-formats.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
+
+
+$(top_builddir)/src/libraptor2.la:
+ cd $(top_builddir)/src && $(MAKE) libraptor2.la
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/scripts/build-formats.c b/scripts/build-formats.c
new file mode 100644
index 0000000..460cd0c
--- /dev/null
+++ b/scripts/build-formats.c
@@ -0,0 +1,588 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * build-formats.c - Helper to print raptor syntaxes into docbook xml
+ *
+ * Copyright (C) 2010, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <raptor2.h>
+
+static const char * const program = "build-formats";
+
+static raptor_world* world = NULL;
+
+
+
+static void
+emit_literal(const char* literal, raptor_iostream* iostr)
+{
+ raptor_iostream_string_write("<literal>", iostr);
+ raptor_iostream_string_write(literal, iostr);
+ raptor_iostream_string_write("</literal>", iostr);
+}
+
+
+#if 0
+static void
+emit_function(const char* name, raptor_iostream* iostr)
+{
+ int i;
+ char c;
+
+ raptor_iostream_string_write("<link linkend=\">", iostr);
+ for(i = 0; (c = name[i]); i++) {
+ if(c == '_')
+ c = '-';
+ raptor_iostream_write_byte(c, iostr);
+ }
+ raptor_iostream_string_write("\"><function>", iostr);
+ raptor_iostream_string_write(name, iostr);
+ raptor_iostream_string_write("()</function></link>", iostr);
+}
+#endif
+
+
+static void
+emit_header(const char* id, raptor_iostream* iostr)
+{
+ raptor_iostream_string_write(
+"<!DOCTYPE refentry PUBLIC \"-//OASIS//DTD DocBook XML V4.3//EN\" \n"
+" \"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd\">\n"
+"<chapter id=\"",
+ iostr);
+ raptor_iostream_string_write(id, iostr);
+ raptor_iostream_string_write(
+"\">\n"
+"<title>Syntax Formats supported in Raptor</title>\n"
+"\n"
+"<para>This chapter describes the syntax formats supported\n"
+"by parsers and serializers in Raptor.\n"
+"</para>\n"
+"\n",
+ iostr);
+}
+
+
+static void
+emit_footer(raptor_iostream *iostr)
+{
+ raptor_iostream_string_write(
+"</chapter>\n"
+"\n"
+"<!--\n"
+"Local variables:\n"
+"mode: sgml\n"
+"sgml-parent-document: (\"raptor-docs.xml\" \"book\" \"part\")\n"
+"End:\n"
+"-->\n"
+"\n",
+ iostr);
+}
+
+
+static void
+emit_start_section(const char* id, const char* title, raptor_iostream* iostr)
+{
+ raptor_iostream_string_write("<section id=\"", iostr);
+ raptor_iostream_string_write(id, iostr);
+ raptor_iostream_string_write(
+"\">\n"
+"<title>",
+ iostr);
+ raptor_xml_escape_string_write((const unsigned char*)title, strlen(title),
+ '\0', iostr);
+ raptor_iostream_string_write("</title>\n", iostr);
+}
+
+
+static void
+emit_end_section(raptor_iostream *iostr)
+{
+ raptor_iostream_string_write(
+"</section>\n"
+"\n",
+ iostr);
+}
+
+
+static void
+emit_start_list(raptor_iostream *iostr)
+{
+ raptor_iostream_string_write(" <itemizedlist>\n", iostr);
+}
+
+
+static void
+emit_start_list_item(raptor_iostream *iostr)
+{
+ raptor_iostream_string_write(" <listitem><para>", iostr);
+}
+
+
+static void
+emit_end_list_item(raptor_iostream *iostr)
+{
+ raptor_iostream_string_write("</para></listitem>\n", iostr);
+}
+
+
+static void
+emit_end_list(raptor_iostream *iostr)
+{
+ raptor_iostream_string_write(" </itemizedlist>\n", iostr);
+}
+
+
+static void
+emit_start_desc_list(const char* title, raptor_iostream *iostr)
+{
+ raptor_iostream_string_write(
+ " <variablelist>\n",
+ iostr);
+ if(title) {
+ raptor_iostream_string_write(
+" <title>",
+ iostr);
+ raptor_iostream_string_write(title, iostr);
+ raptor_iostream_string_write("</title>\n", iostr);
+ }
+ raptor_iostream_write_byte('\n', iostr);
+}
+
+
+static void
+emit_start_desc_list_term(raptor_iostream *iostr)
+{
+ raptor_iostream_string_write(
+" <varlistentry><term>",
+ iostr);
+}
+
+
+static void
+emit_start_desc_list_defn(raptor_iostream *iostr)
+{
+ raptor_iostream_string_write(
+"</term>\n"
+" <listitem>",
+ iostr);
+}
+
+
+static void
+emit_end_desc_list_item(raptor_iostream *iostr)
+{
+ raptor_iostream_string_write(
+" </listitem>\n"
+" </varlistentry>\n"
+"\n",
+ iostr);
+}
+
+
+static void
+emit_end_desc_list(raptor_iostream *iostr)
+{
+ raptor_iostream_string_write(" </variablelist>\n", iostr);
+}
+
+
+static void
+emit_mime_type_name(const char *name, raptor_iostream* iostr)
+{
+ emit_literal(name, iostr);
+}
+
+static void
+emit_mime_type_q(unsigned char q, raptor_iostream* iostr)
+{
+ if(q < 10) {
+ raptor_iostream_string_write("q 0.", iostr);
+ raptor_iostream_decimal_write((int)q, iostr);
+ } else
+ raptor_iostream_string_write("q 1.0", iostr);
+}
+
+static void
+emit_mime_type(const raptor_type_q* mt, raptor_iostream* iostr)
+{
+ emit_mime_type_name(mt->mime_type, iostr);
+ raptor_iostream_string_write(" with ", iostr);
+ emit_mime_type_q(mt->q, iostr);
+}
+
+
+static void
+emit_format_description_name(const char* type_name,
+ const raptor_syntax_description* sd,
+ raptor_iostream* iostr)
+{
+ raptor_xml_escape_string_write((const unsigned char*)sd->label,
+ strlen(sd->label),
+ '\0', iostr);
+ if(type_name) {
+ raptor_iostream_write_byte(' ', iostr);
+ raptor_iostream_string_write(type_name, iostr);
+ }
+ raptor_iostream_string_write(" (", iostr);
+ emit_literal(sd->names[0], iostr);
+ raptor_iostream_write_byte(')', iostr);
+}
+
+
+static void
+emit_format_description(const char* type_name,
+ const raptor_syntax_description* sd,
+ raptor_iostream* iostr)
+{
+ unsigned int i;
+
+ if(!sd->mime_types_count)
+ return;
+
+ /* term */
+ emit_start_desc_list_term(iostr);
+ emit_format_description_name(type_name, sd, iostr);
+
+ /* definition */
+ emit_start_desc_list_defn(iostr);
+ raptor_iostream_string_write("\n ", iostr);
+
+ emit_start_list(iostr);
+ for(i = 0; i < sd->mime_types_count; i++) {
+ const raptor_type_q* mime_type = &sd->mime_types[i];
+ if(!sd)
+ break;
+ raptor_iostream_string_write(" ", iostr);
+ emit_start_list_item(iostr);
+ emit_mime_type(mime_type, iostr);
+ emit_end_list_item(iostr);
+ }
+ raptor_iostream_string_write(" ", iostr);
+ emit_end_list(iostr);
+
+ emit_end_desc_list_item(iostr);
+}
+
+
+static int
+sort_sd_by_name(const void *a, const void *b)
+{
+ raptor_syntax_description* sd_a = *(raptor_syntax_description**)a;
+ raptor_syntax_description* sd_b = *(raptor_syntax_description**)b;
+
+ return strcmp(sd_a->label, sd_b->label);
+}
+
+
+typedef struct
+{
+ const char *mime_type;
+ unsigned char q;
+ raptor_syntax_description* parser_sd;
+ raptor_syntax_description* serializer_sd;
+} type_syntax;
+
+
+static int
+sort_type_syntax_by_mime_type(const void *a, const void *b)
+{
+ int rc;
+
+ const char* mime_type_a = ((type_syntax*)a)->mime_type;
+ const char* mime_type_b = ((type_syntax*)b)->mime_type;
+
+ if(!mime_type_a || !mime_type_b) {
+ if(!mime_type_a && !mime_type_b)
+ return mime_type_b - mime_type_a;
+ return (mime_type_a) ? 1 : -1;
+ }
+
+ rc = strcmp(mime_type_a, mime_type_b);
+ if(rc)
+ return rc;
+ return ((type_syntax*)b)->q - ((type_syntax*)a)->q;
+}
+
+
+
+static void
+emit_format_to_syntax_list(raptor_iostream* iostr,
+ type_syntax* type_syntaxes,
+ const char* mime_type,
+ int start, int end)
+{
+ int i;
+ int parser_seen = 0;
+ int serializer_seen = 0;
+
+ /* term */
+ emit_start_desc_list_term(iostr);
+ emit_mime_type_name(mime_type, iostr);
+
+ /* definition */
+ emit_start_desc_list_defn(iostr);
+ raptor_iostream_string_write("\n ", iostr);
+
+ emit_start_list(iostr);
+ for(i = start; i <= end; i++) {
+ raptor_iostream_string_write(" ", iostr);
+ emit_start_list_item(iostr);
+ if(type_syntaxes[i].parser_sd) {
+ emit_format_description_name("Parser",
+ type_syntaxes[i].parser_sd,
+ iostr);
+ parser_seen++;
+ } else {
+ emit_format_description_name("Serializer",
+ type_syntaxes[i].serializer_sd,
+ iostr);
+ serializer_seen++;
+ }
+ raptor_iostream_string_write(" with ", iostr);
+ emit_mime_type_q(type_syntaxes[i].q, iostr);
+ emit_end_list_item(iostr);
+ }
+ if(!parser_seen || !serializer_seen) {
+ emit_start_list_item(iostr);
+ if(!parser_seen)
+ raptor_iostream_string_write("No parser.", iostr);
+ else
+ raptor_iostream_string_write("No serializer.", iostr);
+ emit_end_list_item(iostr);
+ }
+ raptor_iostream_string_write(" ", iostr);
+ emit_end_list(iostr);
+
+ emit_end_desc_list_item(iostr);
+}
+
+
+int
+main(int argc, char *argv[])
+{
+ int rc = 1;
+ int i;
+ int parsers_count = 0;
+ int serializers_count = 0;
+ int mime_types_count = 0;
+ raptor_syntax_description** parsers = NULL;
+ raptor_syntax_description** serializers = NULL;
+ raptor_iostream* iostr = NULL;
+ type_syntax* type_syntaxes = NULL;
+ int type_syntaxes_count = 0;
+
+ if(argc != 1) {
+ fprintf(stderr, "%s: USAGE: %s\n", program, program);
+ return 1;
+ }
+
+ world = raptor_new_world();
+ if(!world)
+ goto tidy;
+
+
+ for(i = 0; 1; i++) {
+ raptor_syntax_description* sd;
+ sd = (raptor_syntax_description*)raptor_world_get_parser_description(world, i);
+ if(!sd)
+ break;
+ parsers_count++;
+ mime_types_count += sd->mime_types_count;
+ }
+ for(i = 0; 1; i++) {
+ raptor_syntax_description* sd;
+ sd = (raptor_syntax_description*)raptor_world_get_serializer_description(world, i);
+ if(!sd)
+ break;
+ serializers_count++;
+ mime_types_count += sd->mime_types_count;
+ }
+
+ parsers = (raptor_syntax_description**)calloc(parsers_count,
+ sizeof(raptor_syntax_description*));
+ if(!parsers)
+ goto tidy;
+
+ serializers = (raptor_syntax_description**)calloc(serializers_count,
+ sizeof(raptor_syntax_description*));
+ if(!serializers)
+ goto tidy;
+
+ type_syntaxes = (type_syntax*)calloc(mime_types_count,
+ sizeof(type_syntax));
+ if(!type_syntaxes)
+ goto tidy;
+
+ type_syntaxes_count = 0;
+
+ for(i = 0; 1; i++) {
+ raptor_syntax_description* sd;
+ unsigned int m;
+
+ sd = (raptor_syntax_description*)raptor_world_get_parser_description(world, i);
+ if(!sd)
+ break;
+ parsers[i] = sd;
+
+ for(m = 0; m < sd->mime_types_count; m++) {
+ type_syntaxes[type_syntaxes_count].mime_type = sd->mime_types[m].mime_type;
+ type_syntaxes[type_syntaxes_count].q = sd->mime_types[m].q;
+ type_syntaxes[type_syntaxes_count].parser_sd = sd;
+ type_syntaxes_count++;
+ }
+ }
+
+ qsort(parsers, parsers_count, sizeof(raptor_syntax_description*),
+ sort_sd_by_name);
+
+ for(i = 0; 1; i++) {
+ raptor_syntax_description* sd;
+ unsigned int m;
+
+ sd = (raptor_syntax_description*)raptor_world_get_serializer_description(world, i);
+ if(!sd)
+ break;
+ serializers[i] = sd;
+
+ for(m = 0; m < sd->mime_types_count; m++) {
+ type_syntaxes[type_syntaxes_count].mime_type = sd->mime_types[m].mime_type;
+ type_syntaxes[type_syntaxes_count].q = sd->mime_types[m].q;
+ type_syntaxes[type_syntaxes_count].serializer_sd = sd;
+ type_syntaxes_count++;
+ }
+ }
+
+ qsort(serializers, serializers_count, sizeof(raptor_syntax_description*),
+ sort_sd_by_name);
+
+
+ iostr = raptor_new_iostream_to_file_handle(world, stdout);
+ if(!iostr)
+ goto tidy;
+
+
+ /* MIME Types by parser */
+ emit_header("raptor-formats", iostr);
+
+ emit_start_section("raptor-formats-intro",
+ "Introduction",
+ iostr);
+ raptor_iostream_string_write(
+"<para>\n"
+"The parsers and serializers in raptor can handle different MIME Types with different levels of quality (Q). A Q of 1.0 indicates that the parser or serializer will be able to read or write the full format with high quality, and it should be the prefered parser or serializer for that mime type. Lower Q values indicate either additional mime type support (for parsing) or less-preferred mime types (for serializing). A serializer typically has just 1 mime type of Q 1.0; the preferred type."
+"</para>\n"
+,
+ iostr);
+ emit_end_section(iostr);
+
+ emit_start_section("raptor-formats-types-by-parser",
+ "MIME Types by Parser",
+ iostr);
+ emit_start_desc_list(NULL, iostr);
+ for(i = 0; i < parsers_count; i++) {
+ emit_format_description(NULL, parsers[i],
+ iostr);
+ }
+ emit_end_desc_list(iostr);
+ emit_end_section(iostr);
+
+
+ /* MIME Types by serializer */
+ emit_start_section("raptor-formats-types-by-serializer",
+ "MIME Types by Serializer",
+ iostr);
+ emit_start_desc_list(NULL, iostr);
+ for(i = 0; i < serializers_count; i++) {
+ emit_format_description(NULL, serializers[i],
+ iostr);
+ }
+ emit_end_desc_list(iostr);
+ emit_end_section(iostr);
+
+
+ /* MIME Types index */
+ qsort(type_syntaxes, type_syntaxes_count, sizeof(type_syntax),
+ sort_type_syntax_by_mime_type);
+
+ emit_start_section("raptor-formats-types-index",
+ "MIME Types Index",
+ iostr);
+ emit_start_desc_list(NULL, iostr);
+ if(1) {
+ const char* last_mime_type = NULL;
+ int last_start_index = -1;
+ for(i = 0; i < type_syntaxes_count; i++) {
+ const char *this_mime_type = type_syntaxes[i].mime_type;
+
+ if(last_start_index < 0) {
+ last_mime_type = this_mime_type;
+ last_start_index = i;
+ continue;
+ }
+ /* continue if same mime type */
+ if(!strcmp(last_mime_type, this_mime_type))
+ continue;
+
+ emit_format_to_syntax_list(iostr, type_syntaxes,
+ last_mime_type, last_start_index, i-1);
+
+ last_mime_type = type_syntaxes[i].mime_type;
+ last_start_index = i;
+ }
+
+ emit_format_to_syntax_list(iostr, type_syntaxes,
+ last_mime_type, last_start_index, i-1);
+ }
+ emit_end_desc_list(iostr);
+ emit_end_section(iostr);
+
+
+
+ emit_footer(iostr);
+
+ raptor_free_iostream(iostr);
+ iostr = NULL;
+
+ /* success */
+ rc = 0;
+
+ tidy:
+ if(iostr)
+ raptor_free_iostream(iostr);
+
+ if(parsers)
+ free(parsers);
+
+ if(serializers)
+ free(serializers);
+
+ if(type_syntaxes)
+ free(type_syntaxes);
+
+ if(world)
+ raptor_free_world(world);
+
+ return rc;
+}
diff --git a/scripts/fix-bison b/scripts/fix-bison
new file mode 100644
index 0000000..58404f6
--- /dev/null
+++ b/scripts/fix-bison
@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+#
+# Format output generated by bison
+#
+# Usage:
+# bison -b brql_parser -p brql_parser_ -d -v brql_parser.y
+# perl fix-bison brql_parser.tab.c > $tmp
+# mv $tmp brql_parser.tab.c
+#
+# Copyright (C) 2004-2006, David Beckett http://www.dajobe.org/
+# Copyright (C) 2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+
+my $seen_yyerrlab1=0;
+my $line_offset=1; # #line directives always refer to the NEXT line
+while(<>) {
+ # Remove code that causes a warning
+ if(/Suppress GCC warning that yyerrlab1/) {
+ do {
+ $_=<>;
+ $line_offset--; # skipped a line
+ } while(!/^\#endif/);
+ $line_offset--; # skipped a line
+ next;
+ }
+
+ $seen_yyerrlab1=1 if /goto yyerrlab1/;
+
+ s/^yyerrlab1:// unless $seen_yyerrlab1;
+
+ # Do not use macro name for a temporary variable
+ s/unsigned int yylineno = /unsigned int yylineno_tmp = /;
+ s/yyrule - 1, yylineno\)/yyrule - 1, yylineno_tmp\)/;
+
+ # Do not (re)define prototypes that the system did better
+ if(m%^void \*malloc\s*\(%) {
+ $line_offset--; # skipped a line
+ next;
+ }
+ if(m%^void free\s*\(%) {
+ $line_offset--; # skipped a line
+ next;
+ }
+
+ # Suppress warnings about empty declarations
+ s/(^static int .*_init_globals.*);$/$1/;
+
+ # Fixup pending filename renaming, see above.
+ # Fix line numbers.
+ my $line=$. +$line_offset;
+ s/^(\#line) \d+ (.*)\.tab\.c/$1 $line $2.c/;
+
+ print;
+}
diff --git a/scripts/fix-flex b/scripts/fix-flex
new file mode 100755
index 0000000..34a15ef
--- /dev/null
+++ b/scripts/fix-flex
@@ -0,0 +1,87 @@
+#!/usr/bin/perl
+#
+# Format output generated by flex 2.5.31
+#
+# Usage:
+# flex -o$output $input
+# perl fix-flex $output > $tmp
+# mv $tmp $output
+#
+# (C) Copyright 2004-2010 Dave Beckett http://www.dajobe.org/
+# (C) Copyright 2004 University of Bristol
+#
+
+my $line_offset = 1; # #line directives always refer to the NEXT line
+
+print <<'EOT';
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+EOT
+$line_offset += 8; # added 8 lines to output
+
+my $prefix = undef;
+
+while(<>) {
+ # Remove generated yy_fatal_error declaration and definition to avoid warnings about unused/non-defined static function
+ # declaration
+ if(/^static void yy_fatal_error\s*\(.*\)\s*\;\s*$/) {
+ $line_offset--; # skipped 1 line
+ next;
+ }
+ # definition
+ if(/^static void yy_fatal_error\s*\(.*\)\s*[^\;]\s*$/) {
+ do {
+ $_=<>;
+ $line_offset--; # skipped 1 line
+ } while(!/^}/);
+ $line_offset--; # skipped 1 line
+ next;
+ }
+
+ # Replace calls to yy_fatal_error("msg", yyscanner) to YY_FATAL_ERROR("msg") macro
+ s/(^\s*)yy_fatal_error\s*\(\s*(\".*\")\s*,\s*yyscanner\s*\)/$1YY_FATAL_ERROR($2)/;
+
+ # flex has %option nounistd however it does not work in 2.5.31
+ # It is safe to add yet another wrapper.
+ if(m%^(\#include \<unistd.h\>)$%) {
+ $_=<<"EOT";
+#ifndef YY_NO_UNISTD_H
+$1
+#endif
+EOT
+ $line_offset += 2; # added 2 lines to output
+ }
+
+ # Add $prefix_cleanup() call at the end of $prefix_lex_destroy()
+ # find the start of lex_destroy function definition and capture prefix
+ if(/^int\s+(\S+)_lex_destroy\s*\(.*\)\s*[^\;]\s*$/) { $prefix=$1; }
+ # look for lexer_free(yyscanner, yyscanner) statement within the function and place the cleanup call before it
+ if($prefix) {
+ if(/(^\s*)(${prefix}_free\s*\(\s*yyscanner\s*,\s*yyscanner\s*\)\s*\;)\s*$/) {
+ $_=<<"EOT";
+$1/* clean up leaks if any before freeing yyscanner */
+$1${prefix}_cleanup(yyscanner);
+$1$2
+EOT
+ $line_offset += 2; # added 2 lines to output
+ $prefix = undef; # lex_destroy() patched
+ }
+ }
+
+ # Fix .[ch] line references because we have added lines to it
+ my $line = $. + $line_offset;
+ s/^#line \d+ (\".*\.[ch]\")/#line $line $1/;
+
+ # Fix signed / unsigned comparison gcc 4.x warning:
+ # int n : in the macro YY_INPUT definition
+ # (size_t)num_to_read : which is silly since num_to_read is an int!
+ s/yyg->yy_n_chars, \(size_t\) num_to_read \)/yyg->yy_n_chars, num_to_read \)/;
+
+ print;
+}
diff --git a/scripts/fix-groff-xhtml b/scripts/fix-groff-xhtml
new file mode 100755
index 0000000..5a2025f
--- /dev/null
+++ b/scripts/fix-groff-xhtml
@@ -0,0 +1,64 @@
+#!/usr/bin/perl
+#
+# Format XHTML generated by groff -Thtml (via tidy) for websites
+#
+# Usage: groff -Thtml -P-l something.man | tidy -asxml ... | fix-groff-xhtml OUTPUT-FILE
+#
+# (C) Copyright 2003-2006 Dave Beckett
+#
+
+use strict;
+use File::Basename;
+
+my $progname=basename $0;
+
+my $raptor_title="Raptor RDF Parser Toolkit";
+my $redland_title="Redland RDF Application Framework";
+my $rasqal_title="Rasqal RDF Query Library";
+
+die "USAGE: $progname OUTPUT-FILE\n" if @ARGV < 1;
+
+my $doc_title;
+
+my($file)=@ARGV;
+
+open(OUT, ">$file") or die "$progname: Cannot create $file - $!\n";
+open(IN, "-");
+while(<IN>) {
+
+ s%<title>libraptor</title>%<title>$raptor_title - Raptor API</title>%;
+ s%<h1 align="center">libraptor</h1>%<h1>$raptor_title - Raptor API</h1>%;
+
+ s%<title>rapper</title>%<title>$raptor_title - Raptor RDF parser utility</title>%;
+ s%<h1 align="center">rapper</h1>%<h1>$raptor_title - Raptor RDF parser utility</h1>%;
+
+ s%<title>rdfproc</title>%<title>$redland_title - Redland RDF processor utility</title>%;
+ s%<h1 align="center">rdfproc</h1>%<h1>$redland_title - Redland RDF processor utility</h1>%;
+
+ s%<title>librasqal</title>%<title>$rasqal_title - Rasqal API</title>%;
+ s%<h1 align="center">librasqal</h1>%<h1>$rasqal_title - Rasqal API</h1>%;
+
+ s%<title>roqet</title>%<title>$rasqal_title - Rasqal RDF parser utility</title>%;
+ s%<h1 align="center">roqet</h1>%<h1>$rasqal_title - Rasqal RDF parser utility</h1>%;
+
+ next if /^<link|meta/i;
+
+ s%^<body>%<body bgcolor="#ffffff" text="#000085">%;
+
+ # This is not xhtml
+ s% cols="\d+" % %;
+
+ s%(name|id)="([^"]+)"%my($at,$val)=($1,$2); $val =~ s/ /_/g; qq{$at="$val"};%eg;
+
+ s%(Dave Beckett|Institute for Learning and Research Technology .ILRT.|University of Bristol) (?:- |)(http://[^<]+)%<a href="$2">$1</a>%;
+
+ my $year=1900+(localtime)[5];
+ print OUT <<"EOT" if m%^</body>%;
+
+<p>Copyright 2002-$year <a href="http://www.dajobe.org/">Dave Beckett</a><br />2002-$year <a href="http://www.bristol.ac.uk/">University of Bristol</a></p>
+
+EOT
+ print OUT;
+}
+close(IN);
+close(OUT);
diff --git a/scripts/fix-gtkdoc-header.pl b/scripts/fix-gtkdoc-header.pl
new file mode 100644
index 0000000..d2abb8f
--- /dev/null
+++ b/scripts/fix-gtkdoc-header.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl -w
+#
+# Edit raptor.h so that gtk-doc is happy about it
+#
+# USAGE:
+# perl fix-gtkc-header.pl < raptor.h > raptor.i
+#
+# Copyright (C) 2010, David Beckett http://www.dajobe.org/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+
+while(<>) {
+ # Remove trailing macros
+ s{RAPTOR_PRINTF_FORMAT\(\d+, \d+\);}{;};
+
+ # gtk-doc hates const in some places
+ s/const char\* const\* (\w+)/const char\* $1/;
+ print;
+}
diff --git a/scripts/process-changes.pl b/scripts/process-changes.pl
new file mode 100755
index 0000000..904889f
--- /dev/null
+++ b/scripts/process-changes.pl
@@ -0,0 +1,836 @@
+#!/usr/bin/perl -w
+#
+# Format changes TSV file
+#
+# USAGE:
+# process-changes.pl [OPTIONS] CHANGES-TSV-FILE
+#
+# Copyright (C) 2010-2011, David Beckett http://www.dajobe.org/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+# Example of Format (9 fields):
+# OLD VERSION<tab>type | enum | OLD RETURN<tab>OLD NAME<tab>OLD ARGS<tab>NEW VERSION<tab>type | enum | NEW RETURN<tab>NEW NAME<tab>NEW ARGS<tab>NOTES
+#
+# Functions
+# 0.9.21<tab>void<tab>oldfunctionor-<tab>(args)<tab>0.9.22<tab>void<tab>newfunctionor-<tab>(args)<tab>NOTES
+# Types
+# 0.9.21<tab>type<tab>oldtypenameor-<tab>-<tab>0.9.22<tab>type<tab>newtypeor-<tab>-<tab>NOTES
+# Enums
+# 0.9.21<tab>enum<tab>oldenumvalueor-<tab>-<tab>0.9.22<tab>enum<tab>newenumvalueor-<tab>-<tab>NOTES
+#
+
+use strict;
+use File::Basename;
+use IO::File;
+use Getopt::Long;
+use Pod::Usage;
+
+our $program = basename $0;
+
+our $nbsp = '&#160;';
+
+our $id_prefix = undef;
+
+sub print_start_chapter_as_docbook_xml($$$$) {
+ my($fh, $id, $title, $intro_para)=@_;
+
+ print $fh <<"EOT";
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="$id">
+<title>$title</title>
+
+<para>$intro_para</para>
+EOT
+
+}
+
+sub print_end_chapter_as_docbook_xml($)
+{
+ my($fh)=@_;
+ print $fh <<"EOT";
+
+</chapter>
+EOT
+}
+
+
+
+sub print_docbook_xml($$$@) {
+ my($fh, $id, $title, @list)=@_;
+
+ print $fh <<"EOT";
+<section id="$id">
+<title>$title</title>
+EOT
+
+ print $fh <<"EOT";
+</section>
+EOT
+}
+
+sub print_start_section_as_docbook_xml($$$) {
+ my($fh, $id, $title)=@_;
+
+ print $fh <<"EOT";
+<section id="$id">
+<title>$title</title>
+
+EOT
+}
+
+
+sub format_function_name_as_docbook_xml($) {
+ my($name)=@_;
+
+ my $escaped_name = $name; $escaped_name =~ s/_/-/g;
+ return qq{<link linkend="$escaped_name"><function>$name</function></link>};
+}
+
+sub format_type_name_as_docbook_xml($) {
+ my($name)=@_;
+
+ my $escaped_name = $name; $escaped_name =~ s/_/-/g;
+ if($escaped_name =~ /^[-A-Z0-9]+$/) {
+ $escaped_name .= ":CAPS";
+ }
+ return qq{<link linkend="$escaped_name"><type>$name</type></link>};
+}
+
+sub format_enum_name_as_docbook_xml($) {
+ my($name)=@_;
+
+ my $escaped_name = $name; $escaped_name =~ s/_/-/g;
+ if($escaped_name =~ /^[-A-Z0-9]+$/) {
+ $escaped_name .= ":CAPS";
+ }
+ return qq{<link linkend="$escaped_name"><literal>$name</literal></link>};
+}
+
+
+sub format_fn_sig($$$$$) {
+ my($format_name, $show_sig, $fn_return, $fn_name, $fn_args)=@_;
+ my $formatted_name = $format_name ? format_function_name_as_docbook_xml($fn_name) : $fn_name;
+
+ return $show_sig ? $fn_return . " " . $formatted_name . $fn_args
+ : $formatted_name;
+}
+
+sub format_notes($$) {
+ my($is_inline,$notes)=@_;
+
+ if ($notes eq '') {
+ return $is_inline ? '' : $nbsp;
+ }
+
+ $notes =~ s{#((?:raptor|librdf|rasqal)\w+)}{format_type_name_as_docbook_xml($1)}ge;
+ $notes =~ s{#?((?:RAPTOR|LIBRDF|RASQAL)_\w+)}{format_enum_name_as_docbook_xml($1)}ge;
+ $notes =~ s{((?:raptor|librdf|rasqal)_\w+?)\(}{format_function_name_as_docbook_xml($1)."("}ge;
+
+ return $is_inline ? "- " . $notes : $notes;
+}
+
+sub print_functions_list_as_docbook_xml($$$$@) {
+ my($fh, $title, $format_name, $show_sig, @list)=@_;
+
+ return if !@list;
+
+ print $fh <<"EOT";
+ <itemizedlist>
+ <title>Functions</title>
+EOT
+
+ print $fh " <caption>$title</caption>\n"
+ if defined $title;
+
+ # Sort by fn_name name
+ @list = sort { $a->[1] cmp $b->[1] } @list;
+
+ for my $item (@list) {
+ my($fn_return, $fn_name, $fn_args, $notes) = @$item;
+ my $formatted_fn = format_fn_sig($format_name, $show_sig,
+ $fn_return, $fn_name, $fn_args);
+ $notes = format_notes(1, $notes);
+ print $fh " <listitem><para>$formatted_fn $notes</para></listitem>\n";
+ }
+ print $fh <<"EOT";
+ </itemizedlist>
+EOT
+}
+
+
+sub format_type_sig($$) {
+ my($format_name, $type_name)=@_;
+ return $format_name ? format_type_name_as_docbook_xml($type_name) : $type_name;
+}
+
+sub format_enum_sig($$) {
+ my($format_name, $enum_name)=@_;
+ return $format_name ? format_enum_name_as_docbook_xml($enum_name) : $enum_name;
+}
+
+
+sub print_types_list_as_docbook_xml($$$$@) {
+ my($fh, $title, $format_name, $show_sig, @list)=@_;
+
+ return if !@list;
+
+ print $fh <<"EOT";
+ <itemizedlist>
+ <title>Types</title>
+EOT
+
+ print $fh " <caption>$title</caption>\n"
+ if defined $title;
+
+ # Sort by type name
+ @list = sort { $a->[0] cmp $b->[0] } @list;
+
+ for my $item (@list) {
+ my($type_name, $notes) = @$item;
+ my $formatted_fn = format_type_sig($format_name, $type_name);
+ $notes = format_notes(1, $notes);
+ print $fh " <listitem><para>$formatted_fn $notes</para></listitem>\n";
+ }
+ print $fh <<"EOT";
+ </itemizedlist>
+EOT
+}
+
+
+sub print_enums_list_as_docbook_xml($$$$@) {
+ my($fh, $title, $format_name, $show_sig, @list)=@_;
+
+ return if !@list;
+
+ print $fh <<"EOT";
+ <itemizedlist>
+ <title>Enums</title>
+EOT
+
+ print $fh " <caption>$title</caption>\n"
+ if defined $title;
+
+ # Sort by format name
+ @list = sort { $a->[0] cmp $b->[0] } @list;
+
+ for my $item (@list) {
+ my($enum_name, $notes) = @$item;
+ my $formatted_fn = format_enum_sig($format_name, $enum_name);
+ $notes = format_notes(1, $notes);
+ print $fh " <listitem><para>$formatted_fn $notes</para></listitem>\n";
+ }
+ print $fh <<"EOT";
+ </itemizedlist>
+EOT
+}
+
+
+sub print_renamed_functions_as_docbook_xml($$$$@) {
+ my($fh, $title, $old_function_header, $new_function_header, @list)=@_;
+
+ return if !@list;
+
+ print $fh <<"EOT";
+<table border='1'>
+EOT
+
+ print $fh " <caption>$title</caption>\n"
+ if defined $title;
+
+ # Sort by from name
+ @list = sort { $a->[0] cmp $b->[0] } @list;
+
+ print $fh <<"EOT";
+ <thead>
+ </thead>
+ <tbody>
+ <tr>
+ <th>$old_function_header</th>
+ <th>$new_function_header</th>
+ <th>Notes</th>
+ </tr>
+EOT
+ for my $item (@list) {
+ my($from, $to, $notes) = @$item;
+ my $formatted_name = format_function_name_as_docbook_xml($to);
+
+ $notes = format_notes(0, $notes);
+ print $fh " <tr valign='top'>\n <td>$from</td> <td>$formatted_name</td> <td>$notes</td>\n </tr>\n";
+ }
+ print $fh <<"EOT";
+ </tbody>
+</table>
+EOT
+
+}
+
+sub print_changed_functions_as_docbook_xml($$$$@) {
+ my($fh, $title, $old_function_header, $new_function_header, @list)=@_;
+
+ return if !@list;
+
+ print $fh <<"EOT";
+<table border='1'>
+EOT
+
+ print $fh " <caption>$title</caption>\n"
+ if defined $title;
+
+ print $fh <<"EOT";
+ <thead>
+ </thead>
+ <tbody>
+ <tr>
+ <th>$old_function_header</th>
+ <th>$new_function_header</th>
+ <th>Notes</th>
+ </tr>
+EOT
+ for my $item (@list) {
+ my($old_fn_return, $old_fn_name, $old_fn_args,
+ $new_fn_return, $new_fn_name, $new_fn_args, $notes) = @$item;
+
+ my $old_formatted_fn = format_fn_sig(0, 1,
+ $old_fn_return, $old_fn_name, $old_fn_args);
+
+ my $new_formatted_fn = format_fn_sig(1, 1,
+ $new_fn_return, $new_fn_name, $new_fn_args);
+
+ $notes = format_notes(0, $notes);
+ print $fh " <tr valign='top'>\n <td>$old_formatted_fn</td> <td>$new_formatted_fn</td> <td>$notes</td>\n </tr>\n";
+ }
+ print $fh <<"EOT";
+ </tbody>
+</table>
+EOT
+
+}
+
+sub print_end_section_as_docbook_xml($)
+{
+ my($fh)=@_;
+ print $fh <<"EOT";
+
+</section>
+EOT
+}
+
+
+sub print_changed_types_as_docbook_xml($$$$@) {
+ my($fh, $title, $old_type_header, $new_type_header, @list)=@_;
+
+ return if !@list;
+
+ print $fh <<"EOT";
+<table border='1'>
+EOT
+
+ print $fh " <caption>$title</caption>\n"
+ if defined $title;
+
+ # Sort by old type name
+ @list = sort { $a->[0] cmp $b->[0] } @list;
+
+ print $fh <<"EOT";
+ <thead>
+ </thead>
+ <tbody>
+ <tr>
+ <th>$old_type_header</th>
+ <th>$new_type_header</th>
+ <th>Notes</th>
+ </tr>
+EOT
+ for my $item (@list) {
+ my($old_type_name, $new_type_name, $notes) = @$item;
+
+ my $old_formatted_type = format_type_sig(0, $old_type_name);
+ my $new_formatted_type = format_type_sig(1, $new_type_name);
+
+ $notes = format_notes(0, $notes);
+ print $fh " <tr valign='top'>\n <td>$old_formatted_type</td> <td>$new_formatted_type</td> <td>$notes</td>\n </tr>\n";
+ }
+ print $fh <<"EOT";
+ </tbody>
+</table>
+EOT
+
+}
+
+
+sub print_renamed_enums_as_docbook_xml($$$$@) {
+ my($fh, $title, $old_enum_header, $new_enum_header, @list)=@_;
+
+ return if !@list;
+
+ print $fh <<"EOT";
+<table border='1'>
+EOT
+
+ print $fh " <caption>$title</caption>\n"
+ if defined $title;
+
+ # Sort by from name
+ @list = sort { $a->[0] cmp $b->[0] } @list;
+
+ print $fh <<"EOT";
+ <thead>
+ </thead>
+ <tbody>
+ <tr>
+ <th>$old_enum_header</th>
+ <th>$new_enum_header</th>
+ <th>Notes</th>
+ </tr>
+EOT
+ for my $item (@list) {
+ my($from, $to, $notes) = @$item;
+ my $formatted_name = format_enum_name_as_docbook_xml($to);
+
+ $notes = format_notes(0, $notes);
+ print $fh " <tr valign='top'>\n <td>$from</td> <td>$formatted_name</td> <td>$notes</td>\n </tr>\n";
+ }
+ print $fh <<"EOT";
+ </tbody>
+</table>
+EOT
+
+}
+
+
+sub print_deletes_as_perl_script($$@) {
+ my($out_fh, $title, @names) = @_;
+
+ print $out_fh "\n# $title\n";
+
+ for my $entry (@names) {
+ my($name,$note)=@$entry;
+ $note ||= '';
+ print $out_fh qq{s|^(.*$name.*)\$|/\\* WARNING: $name - deleted. $note \\*/ \$1|g;\n};
+ }
+}
+
+
+sub print_renames_as_perl_script($$$@) {
+ my($out_fh, $title, $is_function, @names) = @_;
+
+ print $out_fh "\n# $title\n";
+
+ for my $entry (@names) {
+ my($from, $to, $note)=@$entry;
+ $note ||= '';
+ my $suffix = ($is_function ? '\\(' : '');
+ print $out_fh qq{s|$from$suffix|$to$suffix|g;\n};
+ }
+}
+
+
+sub print_changes_as_perl_script($$@) {
+ my($out_fh, $title, @names) = @_;
+
+ print $out_fh "\n# $title\n";
+
+ for my $entry (@names) {
+ my($from, $to, $note)=@$entry;
+ $note ||= '';
+ print $out_fh qq{s|^(.*)($from)(.*)\$|/\\* WARNING: $from. $note \\*/ \$\{1\}$to\$\{3\}|g;\n};
+ }
+}
+
+
+sub print_statement_field_renames_as_perl_script($) {
+ my($out_fh)=@_;
+ # These are tricky / tedious to deal with entirely by hand but
+ # the replacement for subject and object can only be determined by a person
+ my(%statement_field_maps) = (
+ 'subject' => 'subject.value.uri or subject.value.blank.string /* WARNING: must choose one */',
+ 'subject_type' => 'subject.type',
+ 'predicate' => 'predicate.value.uri',
+ 'predicate_type' => 'predicate.type',
+ 'object' => 'object.value.uri or object.value.literal.string or object.value.blank.string /* WARNING: must choose one */',
+ 'object_type' => 'object.type',
+ 'object_literal_datatype' => 'object.value.literal.datatype',
+ 'object_literal_language' => 'object.value.literal.language'
+ );
+ print $out_fh "\n# Replace statement fields with term fields.\n";
+ while(my($old,$new) = each %statement_field_maps) {
+ print $out_fh qq{s|->$old|->$new|g;\n};
+ }
+ print $out_fh "\n";
+}
+
+
+sub to_id($) {
+ my $id=shift;
+
+ $id =~ s/\W/-/g;
+ $id =~ s/\-+/-/g;
+ $id =~ s/^\-//;
+ $id =~ s/\-$//;
+
+ return $id;
+}
+
+
+# main
+
+my $docbook_xml_file = undef;
+my $upgrade_script_file = undef;
+my $usage = undef;
+
+GetOptions(
+ 'docbook-xml=s' => \$docbook_xml_file,
+ 'upgrade-script=s' => \$upgrade_script_file,
+ 'package=s' => \$id_prefix,
+ 'help|h|?' => \$usage
+) || pod2usage(2);
+
+pod2usage(-verbose => 2)
+ if $usage;
+
+# Arguments
+our($package, $file) = @ARGV;
+
+$id_prefix ||= $package;
+
+# Read in data
+
+our $expected_n_fields = 9;
+
+# "$old-$new" versions in order
+our(@version_pairs);
+# and seen
+our(%version_pairs_seen);
+
+# Hashes keyed by $version_pair. Value is array of descriptive
+# arrays specific to each type
+my(%new_functions);
+my(%deleted_functions);
+my(%renamed_functions);
+my(%changed_functions);
+
+my(%new_types);
+my(%deleted_types);
+my(%changed_types);
+
+my(%new_enums);
+my(%deleted_enums);
+my(%renamed_enums);
+
+open(IN, "<$file") or die "$program: Cannot read $file - $!\n";
+while(<IN>) {
+ chomp;
+
+ next if /^#/;
+
+ my(@fields)=split(/\t/);
+ die "$program: Bad line $.: $_\n"
+ unless scalar(@fields) == $expected_n_fields;
+
+ if($fields[1] eq 'type') {
+ my($old_ver, $dummy1, $old_name, $old_args, $new_ver, $dummy2, $new_name, $new_args,$notes)=@fields;
+
+ my $version_pair = $old_ver."-".$new_ver;
+ if(!$version_pairs_seen{$version_pair}) {
+ push(@version_pairs, [$old_ver, $new_ver]);
+ $version_pairs_seen{$version_pair} = 1;
+ }
+
+ $notes = '' if $notes eq '-';
+
+ if($old_name eq '-') {
+ push(@{$new_types{$version_pair}}, [$new_name, $notes]);
+ } elsif($new_name eq '-') {
+ push(@{$deleted_types{$version_pair}}, [$old_name, $notes]);
+ } elsif(($old_name eq $new_name) && $notes eq '') {
+ # same
+ } else {
+ # renamed and maybe something else changed - in the notes
+ push(@{$changed_types{$version_pair}}, [$old_name, $new_name, $notes]);
+ }
+
+ } elsif($fields[1] eq 'enum') {
+ my($old_ver, $dummy1, $old_name, $old_args, $new_ver, $dummy2, $new_name, $new_args,$notes)=@fields;
+
+ my $version_pair = $old_ver."-".$new_ver;
+ if(!$version_pairs_seen{$version_pair}) {
+ push(@version_pairs, [$old_ver, $new_ver]);
+ $version_pairs_seen{$version_pair} = 1;
+ }
+
+ $notes = '' if $notes eq '-';
+
+ if($old_name eq '-') {
+ push(@{$new_enums{$version_pair}}, [$new_name, $notes]);
+ } elsif($new_name eq '-') {
+ push(@{$deleted_enums{$version_pair}}, [$old_name, $notes]);
+ } elsif(($old_name eq $new_name) && $notes eq '') {
+ # same
+ } else {
+ push(@{$renamed_enums{$version_pair}}, [$old_name, $new_name, $notes]);
+ }
+
+ } else {
+ my($old_ver, $old_return, $old_name, $old_args, $new_ver, $new_return, $new_name, $new_args,$notes)=@fields;
+
+ my $version_pair = $old_ver."-".$new_ver;
+ if(!$version_pairs_seen{$version_pair}) {
+ push(@version_pairs, [$old_ver, $new_ver]);
+ $version_pairs_seen{$version_pair} = 1;
+ }
+
+ $notes = '' if $notes eq '-';
+
+ if($old_name eq '-') {
+ push(@{$new_functions{$version_pair}}, [$new_return, $new_name, $new_args, $notes]);
+ } elsif($new_name eq '-') {
+ push(@{$deleted_functions{$version_pair}}, [$old_return, $old_name, $old_args, $notes]);
+ } elsif($old_return eq $new_return && $old_name eq $new_name &&
+ $old_args eq $new_args) {
+ # same
+ } elsif($old_return eq $new_return && $old_name ne $new_name &&
+ $old_args eq $new_args) {
+ # renamed but nothing else changed
+ push(@{$renamed_functions{$version_pair}}, [$old_name, $new_name, $notes]);
+ } else {
+ # something changed - args and/or return
+ push(@{$changed_functions{$version_pair}}, [$old_return, $old_name, $old_args, $new_return, $new_name, $new_args, $notes]);
+ }
+ }
+}
+close(IN);
+
+
+
+
+# Write Docbook XML output
+
+if(defined $docbook_xml_file) {
+ my $out_fh = new IO::File;
+ $out_fh->open(">$docbook_xml_file");
+
+ our $intro_title = "API Changes";
+ our $intro_para = <<"EOT";
+This chapter describes the API changes for $package.
+EOT
+
+ print_start_chapter_as_docbook_xml($out_fh,
+ $id_prefix.'-changes',
+ $intro_title,
+ $intro_para);
+
+
+ print_start_section_as_docbook_xml($out_fh,
+ $id_prefix.'-changes-intro',
+ "Introduction");
+ print $out_fh <<"EOT";
+<para>
+The following sections describe the changes in the API between
+versions including additions, deletions, renames (retaining the same
+number of parameters, types and return value type) and more complex
+changes to functions, types and enums.
+</para>
+EOT
+
+ print_end_section_as_docbook_xml($out_fh);
+
+ # Sort by new version, newest first
+ for my $vp (sort { $b->[1] cmp $a->[1] } @version_pairs) {
+ my($old_version, $new_version)= @$vp;
+ my $id = to_id($old_version) . "-to-" . to_id($new_version);
+
+ my $version_pair = $old_version."-".$new_version;
+
+ print_start_section_as_docbook_xml($out_fh,
+ $id_prefix.'-changes-'.$id,
+ "Changes between $package $old_version and $new_version");
+
+ my(@f, @t, @e);
+ @f = @{$new_functions{$version_pair} || []};
+ @t = @{$new_types{$version_pair} || []};
+ @e = @{$new_enums{$version_pair} || []};
+
+ if(@f || @t || @e) {
+ print_start_section_as_docbook_xml($out_fh,
+ $id_prefix.'-changes-new-'.$id,
+ "New functions, types and enums");
+ print_functions_list_as_docbook_xml($out_fh,
+ undef, 1, 1, @f);
+ print_types_list_as_docbook_xml($out_fh,
+ undef, 1, 1, @t);
+ print_enums_list_as_docbook_xml($out_fh,
+ undef, 1, 1, @e);
+ print_end_section_as_docbook_xml($out_fh);
+ }
+
+ @f = @{$deleted_functions{$version_pair} || []};
+ @t = @{$deleted_types{$version_pair} || []};
+ @e = @{$deleted_enums{$version_pair} || []};
+ if(@f || @t || @e) {
+ print_start_section_as_docbook_xml($out_fh,
+ $id_prefix.'-changes-deleted-'.$id,
+ "Deleted functions, types and enums");
+ print_functions_list_as_docbook_xml($out_fh,
+ undef, 0, 0, @f);
+ print_types_list_as_docbook_xml($out_fh,
+ undef, 0, 1, @t);
+ print_enums_list_as_docbook_xml($out_fh,
+ undef, 0, 1, @e);
+ print_end_section_as_docbook_xml($out_fh);
+ }
+
+
+ @f = @{$renamed_functions{$version_pair} || []};
+ @e = @{$renamed_enums{$version_pair} || []};
+ if(@f || @e) {
+ print_start_section_as_docbook_xml($out_fh,
+ $id_prefix.'-changes-renamed-'.$id,
+ "Renamed function and enums");
+ print_renamed_functions_as_docbook_xml($out_fh,
+ undef,
+ "$old_version function",
+ "$new_version function",
+ @f);
+ print_renamed_enums_as_docbook_xml($out_fh,
+ undef,
+ "$old_version enum",
+ "$new_version enum",
+ @e);
+ print_end_section_as_docbook_xml($out_fh);
+ }
+
+ @f = @{$changed_functions{$version_pair} || []};
+ @t = @{$changed_types{$version_pair} || []};
+ if(@f || @t) {
+ print_start_section_as_docbook_xml($out_fh,
+ $id_prefix.'-changes-changed-'.$id,
+ "Changed functions and types");
+ print_changed_functions_as_docbook_xml($out_fh,
+ undef,
+ "$old_version function",
+ "$new_version function",
+ @f);
+ print_changed_types_as_docbook_xml($out_fh,
+ undef,
+ "$old_version type",
+ "$new_version type",
+ @t);
+ print_end_section_as_docbook_xml($out_fh);
+ }
+
+ print_end_section_as_docbook_xml($out_fh);
+
+ } # end pair of old/new versions
+
+ print_end_chapter_as_docbook_xml($out_fh);
+
+ $out_fh->close;
+}
+
+
+# Write Upgrade script output
+
+if(defined $upgrade_script_file) {
+ my $out_fh = new IO::File;
+ $out_fh->open(">$upgrade_script_file");
+
+ print $out_fh "#!/usr/bin/perl -pi~\n";
+
+ for my $vp (@version_pairs) {
+ my($old_version, $new_version)= @$vp;
+
+ my $version_pair = $old_version."-".$new_version;
+
+ print $out_fh "# Perl script to upgrade $package $old_version to $new_version\n\n";
+
+ print_statement_field_renames_as_perl_script($out_fh);
+
+ my(@f, @t, @e);
+
+ @f = @{$deleted_functions{$version_pair} || []};
+ @t = @{$deleted_types{$version_pair} || []};
+ @e = @{$deleted_enums{$version_pair} || []};
+
+ print_deletes_as_perl_script($out_fh, 'Deleted functions',
+ (map { [ $_->[1], $_->[3] ] } @f));
+
+ print_deletes_as_perl_script($out_fh, 'Deleted types',
+ @t);
+
+ print_deletes_as_perl_script($out_fh, 'Deleted enums',
+ @e);
+
+ @f = @{$renamed_functions{$version_pair} || []};
+ @e = @{$renamed_enums{$version_pair} || []};
+ print_renames_as_perl_script($out_fh, 'Renamed functions', 1,
+ @f);
+
+ print_renames_as_perl_script($out_fh, 'Renamed enums', 0,
+ @e);
+
+ @f = @{$changed_functions{$version_pair} || []};
+ @t = @{$changed_types{$version_pair} || []};
+ print_changes_as_perl_script($out_fh, 'Changed functions',
+ (map { [ $_->[1], $_->[4], $_->[6] ] } @f));
+
+ print_changes_as_perl_script($out_fh, 'Changed types',
+ @t);
+
+ } # end of version pair loop
+
+ $out_fh->close;
+}
+
+
+exit 0;
+
+
+__END__
+
+=head1 NAME
+
+process-changes - turn changes TSV into files
+
+=head1 SYNOPSIS
+
+process-changes [options] PACKAGE-NAME TSV-FILE
+
+=head1 OPTIONS
+
+=over 8
+
+=item B<--help>
+
+Give command help summary.
+
+=item B<--docbook-xml> DOCBOOK-XML
+
+Set the output docbook XML file
+
+=item B<--upgrade-script> UPGRADE-SCRIPT-PL
+
+Set the output perl script to upgrade the function and type names
+where possible.
+
+=back
+
+=head1 DESCRIPTION
+
+Turn a package's changes TSV file into docbook XML.
+
+=cut
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..06d2a8c
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,348 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor libraptor
+#
+# Copyright (C) 2000-2011, David Beckett http://www.dajobe.org/
+# Copyright (C) 2000-2005, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+
+lib_LTLIBRARIES = libraptor2.la
+
+pkginclude_HEADERS = raptor.h
+nodist_pkginclude_HEADERS = raptor2.h
+
+noinst_HEADERS = raptor_internal.h win32_raptor_config.h
+
+TESTS=raptor_parse_test raptor_rfc2396_test raptor_uri_test \
+raptor_namespace_test strcasecmp_test raptor_www_test \
+raptor_sequence_test raptor_stringbuffer_test \
+raptor_uri_win32_test raptor_iostream_test raptor_xml_writer_test \
+raptor_turtle_writer_test raptor_avltree_test raptor_term_test \
+raptor_permute_test raptor_snprintf_test
+if RAPTOR_PARSER_RDFXML
+TESTS += raptor_set_test raptor_xml_test
+endif
+
+CLEANFILES=$(TESTS) \
+turtle_lexer_test turtle_parser_test \
+*.plist \
+git-version.h
+
+MAINTAINERCLEANFILES=turtle_lexer.c turtle_lexer.h \
+turtle_parser.c turtle_parser.h turtle_parser.output
+
+# Memory debugging
+MEM=@MEM@
+MEM_LIBS=@MEM_LIBS@
+
+AM_CPPFLAGS = $(MEM)
+
+ANALYZE = clang
+ANALYZE_FLAGS = "--analyze"
+# Based on COMPILE target
+ANALYZE_COMMAND = $(ANALYZE) \
+ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) \
+ $(ANALYZE_FLAGS)
+
+BUILT_SOURCES = turtle_lexer.c turtle_lexer.h turtle_parser.c turtle_parser.h
+
+libraptor2_la_SOURCES = raptor_parse.c raptor_serialize.c \
+raptor_rfc2396.c raptor_uri.c raptor_log.c raptor_locator.c \
+raptor_namespace.c raptor_qname.c \
+raptor_option.c raptor_general.c raptor_unicode.c \
+raptor_www.c \
+raptor_statement.c \
+raptor_term.c \
+raptor_sequence.c raptor_stringbuffer.c raptor_iostream.c \
+raptor_xml.c raptor_xml_writer.c raptor_set.c turtle_common.c \
+raptor_turtle_writer.c raptor_avltree.c snprintf.c \
+raptor_json_writer.c raptor_memstr.c raptor_concepts.c \
+raptor_syntax_description.c \
+raptor_sax2.c
+if RAPTOR_XML_LIBXML
+libraptor2_la_SOURCES += raptor_libxml.c
+endif
+if RAPTOR_PARSER_RDFXML
+libraptor2_la_SOURCES += raptor_rdfxml.c
+endif
+if RAPTOR_PARSER_TURTLE
+libraptor2_la_SOURCES += turtle_lexer.c turtle_lexer.h turtle_parser.c turtle_parser.h turtle_common.h
+else
+if RAPTOR_PARSER_TRIG
+libraptor2_la_SOURCES += turtle_lexer.c turtle_lexer.h turtle_parser.c turtle_parser.h turtle_common.h
+endif
+endif
+if RAPTOR_PARSER_NTRIPLES
+libraptor2_la_SOURCES += ntriples_parse.c
+else
+if RAPTOR_PARSER_NQUADS
+libraptor2_la_SOURCES += ntriples_parse.c
+endif
+endif
+if RAPTOR_RSS_COMMON
+libraptor2_la_SOURCES += raptor_rss_common.c raptor_rss.h
+endif
+if RAPTOR_PARSER_RSS
+libraptor2_la_SOURCES += raptor_rss.c
+endif
+if RAPTOR_PARSER_GRDDL
+libraptor2_la_SOURCES += raptor_grddl.c
+endif
+if RAPTOR_PARSER_GUESS
+libraptor2_la_SOURCES += raptor_guess.c
+endif
+if RAPTOR_PARSER_RDFA
+libraptor2_la_SOURCES += raptor_librdfa.c
+endif
+if RAPTOR_PARSER_JSON
+libraptor2_la_SOURCES += raptor_json.c
+endif
+if RAPTOR_SERIALIZER_RDFXML
+libraptor2_la_SOURCES += raptor_serialize_rdfxml.c
+endif
+
+if RAPTOR_SERIALIZER_NTRIPLES
+libraptor2_la_SOURCES += raptor_serialize_ntriples.c
+else
+if RAPTOR_SERIALIZER_NQUADS
+libraptor2_la_SOURCES += raptor_serialize_ntriples.c
+endif
+endif
+
+#raptor_abbrev.c required by both turtle and xml-abbrev
+if RAPTOR_SERIALIZER_RDFXML_ABBREV
+libraptor2_la_SOURCES += raptor_abbrev.c
+else
+if RAPTOR_SERIALIZER_TURTLE
+libraptor2_la_SOURCES += raptor_abbrev.c
+endif
+endif
+
+if RAPTOR_SERIALIZER_RDFXML_ABBREV
+libraptor2_la_SOURCES += raptor_serialize_rdfxmla.c
+endif
+if RAPTOR_SERIALIZER_TURTLE
+libraptor2_la_SOURCES += raptor_serialize_turtle.c
+endif
+if RAPTOR_SERIALIZER_RSS_1_0
+libraptor2_la_SOURCES += raptor_serialize_rss.c
+endif
+if RAPTOR_SERIALIZER_DOT
+libraptor2_la_SOURCES += raptor_serialize_dot.c
+endif
+if RAPTOR_SERIALIZER_HTML
+libraptor2_la_SOURCES += raptor_serialize_html.c
+endif
+if RAPTOR_SERIALIZER_JSON
+libraptor2_la_SOURCES += raptor_serialize_json.c
+endif
+if STRCASECMP
+libraptor2_la_SOURCES += strcasecmp.c
+endif
+if PARSEDATE
+libraptor2_la_SOURCES += parsedate.c
+endif
+
+
+if LIBRDFA
+libraptor2_la_SOURCES += \
+$(top_srcdir)/librdfa/context.c \
+$(top_srcdir)/librdfa/curie.c \
+$(top_srcdir)/librdfa/iri.c \
+$(top_srcdir)/librdfa/language.c \
+$(top_srcdir)/librdfa/lists.c \
+$(top_srcdir)/librdfa/namespace.c \
+$(top_srcdir)/librdfa/rdfa.c \
+$(top_srcdir)/librdfa/rdfa_utils.c \
+$(top_srcdir)/librdfa/subject.c \
+$(top_srcdir)/librdfa/triple.c \
+$(top_srcdir)/librdfa/rdfa.h \
+$(top_srcdir)/librdfa/rdfa_utils.h
+
+if NEED_STRTOK_R
+libraptor2_la_SOURCES += \
+$(top_srcdir)/librdfa/strtok_r.c \
+$(top_srcdir)/librdfa/strtok_r.h
+endif
+
+AM_CPPFLAGS += -DLIBRDFA_IN_RAPTOR -I$(top_srcdir)/librdfa
+endif
+
+libraptor2_la_LDFLAGS = -version-info @RAPTOR_LIBTOOL_VERSION@ \
+@RAPTOR_LDFLAGS@ $(MEM_LIBS)
+libraptor2_la_LIBADD = @LTLIBOBJS@
+
+
+EXTRA_DIST=\
+raptor_permute_test.c \
+raptor_www_test.c \
+raptor_nfc_test.c \
+raptor_win32.c \
+$(man_MANS) \
+turtle_lexer.l turtle_parser.y \
+parsedate.y
+
+
+nodist_libraptor2_la_SOURCES =
+
+if MAINTAINER_MODE
+nodist_libraptor2_la_SOURCES += git-version.h
+
+# raptor_parse.c is the first source file so this ensures
+# git-version.h is created before it and before the actual file
+# dependencies are calculated as a side-effect of compilation
+raptor_parse.c: git-version.h
+
+# Actually it needs turtle_parser.h but nevermind
+turtle_lexer.c: $(srcdir)/turtle_lexer.l turtle_parser.c $(top_srcdir)/scripts/fix-flex
+ $(LEX) -o$@ $(srcdir)/turtle_lexer.l
+ $(PERL) $(top_srcdir)/scripts/fix-flex $@ > turtle_lexer.t || rm -f $@
+ mv -f turtle_lexer.t $@
+
+turtle_lexer.h: turtle_lexer.c ; @exit 0
+
+turtle_parser.c: $(srcdir)/turtle_parser.y $(top_srcdir)/scripts/fix-bison
+ $(YACC) -b turtle_parser -p turtle_parser_ -d -v $(srcdir)/turtle_parser.y
+ $(PERL) $(top_srcdir)/scripts/fix-bison turtle_parser.tab.c > $@
+ mv -f turtle_parser.tab.h turtle_parser.h
+ rm -f turtle_parser.tab.c
+
+turtle_parser.h: turtle_parser.c ; @exit 0
+
+endif
+
+# Actually it needs turtle_parser.h but nevermind
+turtle_lexer_test: $(srcdir)/turtle_lexer.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/turtle_lexer.c libraptor2.la $(LIBS)
+
+turtle_parser_test: $(srcdir)/turtle_parser.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/turtle_parser.c libraptor2.la $(LIBS)
+
+
+parsedate.c: $(srcdir)/parsedate.y
+ $(YACC) -b parsedate -p raptor_parsedate_ -d -v $(srcdir)/parsedate.y
+ sed -e '/Suppress GCC warning that yyerrlab1/,/^\#endif/d' -e "s/parsedate.tab.c/$@/" parsedate.tab.c > $@
+ mv parsedate.tab.h parsedate.h
+ rm -f parsedate.tab.c
+
+
+
+# Some people need a little help ;-)
+test: check
+
+raptor_parse_test: $(srcdir)/raptor_parse.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_parse.c libraptor2.la $(LIBS)
+
+raptor_rfc2396_test: $(srcdir)/raptor_rfc2396.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_rfc2396.c libraptor2.la $(LIBS)
+
+raptor_uri_test: $(srcdir)/raptor_uri.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_uri.c libraptor2.la $(LIBS)
+
+raptor_uri_win32_test: $(srcdir)/raptor_uri.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE -DWIN32_URI_TEST $(srcdir)/raptor_uri.c libraptor2.la $(LIBS)
+
+raptor_namespace_test: $(srcdir)/raptor_namespace.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_namespace.c libraptor2.la $(LIBS)
+
+strcasecmp_test: $(srcdir)/strcasecmp.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/strcasecmp.c libraptor2.la $(LIBS)
+
+raptor_www_test: $(srcdir)/raptor_www_test.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_www_test.c libraptor2.la $(LIBS)
+
+raptor_set_test: $(srcdir)/raptor_set.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_set.c libraptor2.la $(LIBS)
+
+raptor_xml_test: $(srcdir)/raptor_xml.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_xml.c libraptor2.la $(LIBS)
+
+raptor_sequence_test: $(srcdir)/raptor_sequence.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_sequence.c libraptor2.la $(LIBS)
+
+raptor_stringbuffer_test: $(srcdir)/raptor_stringbuffer.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_stringbuffer.c libraptor2.la $(LIBS)
+
+raptor_nfc_test: $(srcdir)/raptor_nfc_test.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_nfc_test.c libraptor2.la $(LIBS)
+
+raptor_iostream_test: $(srcdir)/raptor_iostream.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_iostream.c libraptor2.la $(LIBS)
+
+raptor_xml_writer_test: $(srcdir)/raptor_xml_writer.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_xml_writer.c libraptor2.la $(LIBS)
+
+raptor_turtle_writer_test: $(srcdir)/raptor_turtle_writer.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_turtle_writer.c libraptor2.la $(LIBS)
+
+raptor_avltree_test: $(srcdir)/raptor_avltree.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_avltree.c libraptor2.la $(LIBS)
+
+raptor_term_test: $(srcdir)/raptor_term.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_term.c libraptor2.la $(LIBS)
+
+raptor_permute_test: $(srcdir)/raptor_permute_test.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_permute_test.c libraptor2.la $(LIBS)
+
+raptor_snprintf_test: $(srcdir)/snprintf.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/snprintf.c libraptor2.la $(LIBS)
+
+
+if MAINTAINER_MODE
+git-version.h: check-version
+
+# Always run this in maintainer mode but do not always change git-version.h
+.PHONY: check-version
+check-version:
+ @file="git-version.h" ; \
+ if test -d ../.git; then \
+ git_version=`cd .. && git rev-parse HEAD`; \
+ else \
+ git_version="unknown"; \
+ fi; \
+ $(RECHO) "GIT version $$git_version"; \
+ tmp="$$file.tmp"; \
+ $(RECHO) "#define GIT_VERSION \"$$git_version\"" > $$tmp; \
+ if test -f $$file; then \
+ if cmp $$file $$tmp >/dev/null 2>&1; then \
+ rm $$tmp; \
+ else \
+ mv $$tmp $$file; \
+ fi; \
+ else \
+ mv $$tmp $$file; \
+ fi
+
+# Run Clang static analyzer over sources.
+analyze: $(SOURCES)
+ @list='$(SOURCES)'; \
+ result=0; \
+ for file in $$list; do \
+ if echo $$file | grep '\.c$$' >/dev/null 2>&1; then \
+ $(RECHO) "Analyzing $$file"; \
+ $(ANALYZE_COMMAND) $(srcdir)/$$file; \
+ status=$$?; \
+ if test $$status != 0; then \
+ result=1; \
+ fi; \
+ fi; \
+ done; \
+ set -e; exit $$result
+endif
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..44368e2
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,1278 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor libraptor
+#
+# Copyright (C) 2000-2011, David Beckett http://www.dajobe.org/
+# Copyright (C) 2000-2005, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@RAPTOR_PARSER_RDFXML_TRUE@am__append_1 = raptor_set_test raptor_xml_test
+@RAPTOR_XML_LIBXML_TRUE@am__append_2 = raptor_libxml.c
+@RAPTOR_PARSER_RDFXML_TRUE@am__append_3 = raptor_rdfxml.c
+@RAPTOR_PARSER_TURTLE_TRUE@am__append_4 = turtle_lexer.c turtle_lexer.h turtle_parser.c turtle_parser.h turtle_common.h
+@RAPTOR_PARSER_TRIG_TRUE@@RAPTOR_PARSER_TURTLE_FALSE@am__append_5 = turtle_lexer.c turtle_lexer.h turtle_parser.c turtle_parser.h turtle_common.h
+@RAPTOR_PARSER_NTRIPLES_TRUE@am__append_6 = ntriples_parse.c
+@RAPTOR_PARSER_NQUADS_TRUE@@RAPTOR_PARSER_NTRIPLES_FALSE@am__append_7 = ntriples_parse.c
+@RAPTOR_RSS_COMMON_TRUE@am__append_8 = raptor_rss_common.c raptor_rss.h
+@RAPTOR_PARSER_RSS_TRUE@am__append_9 = raptor_rss.c
+@RAPTOR_PARSER_GRDDL_TRUE@am__append_10 = raptor_grddl.c
+@RAPTOR_PARSER_GUESS_TRUE@am__append_11 = raptor_guess.c
+@RAPTOR_PARSER_RDFA_TRUE@am__append_12 = raptor_librdfa.c
+@RAPTOR_PARSER_JSON_TRUE@am__append_13 = raptor_json.c
+@RAPTOR_SERIALIZER_RDFXML_TRUE@am__append_14 = raptor_serialize_rdfxml.c
+@RAPTOR_SERIALIZER_NTRIPLES_TRUE@am__append_15 = raptor_serialize_ntriples.c
+@RAPTOR_SERIALIZER_NQUADS_TRUE@@RAPTOR_SERIALIZER_NTRIPLES_FALSE@am__append_16 = raptor_serialize_ntriples.c
+
+#raptor_abbrev.c required by both turtle and xml-abbrev
+@RAPTOR_SERIALIZER_RDFXML_ABBREV_TRUE@am__append_17 = raptor_abbrev.c
+@RAPTOR_SERIALIZER_RDFXML_ABBREV_FALSE@@RAPTOR_SERIALIZER_TURTLE_TRUE@am__append_18 = raptor_abbrev.c
+@RAPTOR_SERIALIZER_RDFXML_ABBREV_TRUE@am__append_19 = raptor_serialize_rdfxmla.c
+@RAPTOR_SERIALIZER_TURTLE_TRUE@am__append_20 = raptor_serialize_turtle.c
+@RAPTOR_SERIALIZER_RSS_1_0_TRUE@am__append_21 = raptor_serialize_rss.c
+@RAPTOR_SERIALIZER_DOT_TRUE@am__append_22 = raptor_serialize_dot.c
+@RAPTOR_SERIALIZER_HTML_TRUE@am__append_23 = raptor_serialize_html.c
+@RAPTOR_SERIALIZER_JSON_TRUE@am__append_24 = raptor_serialize_json.c
+@STRCASECMP_TRUE@am__append_25 = strcasecmp.c
+@PARSEDATE_TRUE@am__append_26 = parsedate.c
+@LIBRDFA_TRUE@am__append_27 = \
+@LIBRDFA_TRUE@$(top_srcdir)/librdfa/context.c \
+@LIBRDFA_TRUE@$(top_srcdir)/librdfa/curie.c \
+@LIBRDFA_TRUE@$(top_srcdir)/librdfa/iri.c \
+@LIBRDFA_TRUE@$(top_srcdir)/librdfa/language.c \
+@LIBRDFA_TRUE@$(top_srcdir)/librdfa/lists.c \
+@LIBRDFA_TRUE@$(top_srcdir)/librdfa/namespace.c \
+@LIBRDFA_TRUE@$(top_srcdir)/librdfa/rdfa.c \
+@LIBRDFA_TRUE@$(top_srcdir)/librdfa/rdfa_utils.c \
+@LIBRDFA_TRUE@$(top_srcdir)/librdfa/subject.c \
+@LIBRDFA_TRUE@$(top_srcdir)/librdfa/triple.c \
+@LIBRDFA_TRUE@$(top_srcdir)/librdfa/rdfa.h \
+@LIBRDFA_TRUE@$(top_srcdir)/librdfa/rdfa_utils.h
+
+@LIBRDFA_TRUE@@NEED_STRTOK_R_TRUE@am__append_28 = \
+@LIBRDFA_TRUE@@NEED_STRTOK_R_TRUE@$(top_srcdir)/librdfa/strtok_r.c \
+@LIBRDFA_TRUE@@NEED_STRTOK_R_TRUE@$(top_srcdir)/librdfa/strtok_r.h
+
+@LIBRDFA_TRUE@am__append_29 = -DLIBRDFA_IN_RAPTOR -I$(top_srcdir)/librdfa
+@MAINTAINER_MODE_TRUE@am__append_30 = git-version.h
+subdir = src
+DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) \
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/raptor2.h.in $(srcdir)/raptor_config.h.in \
+ $(srcdir)/win32_raptor_config.h.in raptor_nfc_icu.c \
+ raptor_www_curl.c raptor_www_libfetch.c raptor_www_libxml.c
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = raptor_config.h
+CONFIG_CLEAN_FILES = raptor2.h win32_raptor_config.h
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)" \
+ "$(DESTDIR)$(pkgincludedir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+libraptor2_la_DEPENDENCIES = @LTLIBOBJS@
+am__libraptor2_la_SOURCES_DIST = raptor_parse.c raptor_serialize.c \
+ raptor_rfc2396.c raptor_uri.c raptor_log.c raptor_locator.c \
+ raptor_namespace.c raptor_qname.c raptor_option.c \
+ raptor_general.c raptor_unicode.c raptor_www.c \
+ raptor_statement.c raptor_term.c raptor_sequence.c \
+ raptor_stringbuffer.c raptor_iostream.c raptor_xml.c \
+ raptor_xml_writer.c raptor_set.c turtle_common.c \
+ raptor_turtle_writer.c raptor_avltree.c snprintf.c \
+ raptor_json_writer.c raptor_memstr.c raptor_concepts.c \
+ raptor_syntax_description.c raptor_sax2.c raptor_libxml.c \
+ raptor_rdfxml.c turtle_lexer.c turtle_lexer.h turtle_parser.c \
+ turtle_parser.h turtle_common.h ntriples_parse.c \
+ raptor_rss_common.c raptor_rss.h raptor_rss.c raptor_grddl.c \
+ raptor_guess.c raptor_librdfa.c raptor_json.c \
+ raptor_serialize_rdfxml.c raptor_serialize_ntriples.c \
+ raptor_abbrev.c raptor_serialize_rdfxmla.c \
+ raptor_serialize_turtle.c raptor_serialize_rss.c \
+ raptor_serialize_dot.c raptor_serialize_html.c \
+ raptor_serialize_json.c strcasecmp.c parsedate.c \
+ $(top_srcdir)/librdfa/context.c $(top_srcdir)/librdfa/curie.c \
+ $(top_srcdir)/librdfa/iri.c $(top_srcdir)/librdfa/language.c \
+ $(top_srcdir)/librdfa/lists.c \
+ $(top_srcdir)/librdfa/namespace.c $(top_srcdir)/librdfa/rdfa.c \
+ $(top_srcdir)/librdfa/rdfa_utils.c \
+ $(top_srcdir)/librdfa/subject.c $(top_srcdir)/librdfa/triple.c \
+ $(top_srcdir)/librdfa/rdfa.h \
+ $(top_srcdir)/librdfa/rdfa_utils.h \
+ $(top_srcdir)/librdfa/strtok_r.c \
+ $(top_srcdir)/librdfa/strtok_r.h
+@RAPTOR_XML_LIBXML_TRUE@am__objects_1 = raptor_libxml.lo
+@RAPTOR_PARSER_RDFXML_TRUE@am__objects_2 = raptor_rdfxml.lo
+@RAPTOR_PARSER_TURTLE_TRUE@am__objects_3 = turtle_lexer.lo \
+@RAPTOR_PARSER_TURTLE_TRUE@ turtle_parser.lo
+@RAPTOR_PARSER_TRIG_TRUE@@RAPTOR_PARSER_TURTLE_FALSE@am__objects_4 = turtle_lexer.lo \
+@RAPTOR_PARSER_TRIG_TRUE@@RAPTOR_PARSER_TURTLE_FALSE@ turtle_parser.lo
+@RAPTOR_PARSER_NTRIPLES_TRUE@am__objects_5 = ntriples_parse.lo
+@RAPTOR_PARSER_NQUADS_TRUE@@RAPTOR_PARSER_NTRIPLES_FALSE@am__objects_6 = ntriples_parse.lo
+@RAPTOR_RSS_COMMON_TRUE@am__objects_7 = raptor_rss_common.lo
+@RAPTOR_PARSER_RSS_TRUE@am__objects_8 = raptor_rss.lo
+@RAPTOR_PARSER_GRDDL_TRUE@am__objects_9 = raptor_grddl.lo
+@RAPTOR_PARSER_GUESS_TRUE@am__objects_10 = raptor_guess.lo
+@RAPTOR_PARSER_RDFA_TRUE@am__objects_11 = raptor_librdfa.lo
+@RAPTOR_PARSER_JSON_TRUE@am__objects_12 = raptor_json.lo
+@RAPTOR_SERIALIZER_RDFXML_TRUE@am__objects_13 = \
+@RAPTOR_SERIALIZER_RDFXML_TRUE@ raptor_serialize_rdfxml.lo
+@RAPTOR_SERIALIZER_NTRIPLES_TRUE@am__objects_14 = \
+@RAPTOR_SERIALIZER_NTRIPLES_TRUE@ raptor_serialize_ntriples.lo
+@RAPTOR_SERIALIZER_NQUADS_TRUE@@RAPTOR_SERIALIZER_NTRIPLES_FALSE@am__objects_15 = raptor_serialize_ntriples.lo
+@RAPTOR_SERIALIZER_RDFXML_ABBREV_TRUE@am__objects_16 = \
+@RAPTOR_SERIALIZER_RDFXML_ABBREV_TRUE@ raptor_abbrev.lo
+@RAPTOR_SERIALIZER_RDFXML_ABBREV_FALSE@@RAPTOR_SERIALIZER_TURTLE_TRUE@am__objects_17 = raptor_abbrev.lo
+@RAPTOR_SERIALIZER_RDFXML_ABBREV_TRUE@am__objects_18 = raptor_serialize_rdfxmla.lo
+@RAPTOR_SERIALIZER_TURTLE_TRUE@am__objects_19 = \
+@RAPTOR_SERIALIZER_TURTLE_TRUE@ raptor_serialize_turtle.lo
+@RAPTOR_SERIALIZER_RSS_1_0_TRUE@am__objects_20 = \
+@RAPTOR_SERIALIZER_RSS_1_0_TRUE@ raptor_serialize_rss.lo
+@RAPTOR_SERIALIZER_DOT_TRUE@am__objects_21 = raptor_serialize_dot.lo
+@RAPTOR_SERIALIZER_HTML_TRUE@am__objects_22 = \
+@RAPTOR_SERIALIZER_HTML_TRUE@ raptor_serialize_html.lo
+@RAPTOR_SERIALIZER_JSON_TRUE@am__objects_23 = \
+@RAPTOR_SERIALIZER_JSON_TRUE@ raptor_serialize_json.lo
+@STRCASECMP_TRUE@am__objects_24 = strcasecmp.lo
+@PARSEDATE_TRUE@am__objects_25 = parsedate.lo
+@LIBRDFA_TRUE@am__objects_26 = context.lo curie.lo iri.lo language.lo \
+@LIBRDFA_TRUE@ lists.lo namespace.lo rdfa.lo rdfa_utils.lo \
+@LIBRDFA_TRUE@ subject.lo triple.lo
+@LIBRDFA_TRUE@@NEED_STRTOK_R_TRUE@am__objects_27 = strtok_r.lo
+am_libraptor2_la_OBJECTS = raptor_parse.lo raptor_serialize.lo \
+ raptor_rfc2396.lo raptor_uri.lo raptor_log.lo \
+ raptor_locator.lo raptor_namespace.lo raptor_qname.lo \
+ raptor_option.lo raptor_general.lo raptor_unicode.lo \
+ raptor_www.lo raptor_statement.lo raptor_term.lo \
+ raptor_sequence.lo raptor_stringbuffer.lo raptor_iostream.lo \
+ raptor_xml.lo raptor_xml_writer.lo raptor_set.lo \
+ turtle_common.lo raptor_turtle_writer.lo raptor_avltree.lo \
+ snprintf.lo raptor_json_writer.lo raptor_memstr.lo \
+ raptor_concepts.lo raptor_syntax_description.lo raptor_sax2.lo \
+ $(am__objects_1) $(am__objects_2) $(am__objects_3) \
+ $(am__objects_4) $(am__objects_5) $(am__objects_6) \
+ $(am__objects_7) $(am__objects_8) $(am__objects_9) \
+ $(am__objects_10) $(am__objects_11) $(am__objects_12) \
+ $(am__objects_13) $(am__objects_14) $(am__objects_15) \
+ $(am__objects_16) $(am__objects_17) $(am__objects_18) \
+ $(am__objects_19) $(am__objects_20) $(am__objects_21) \
+ $(am__objects_22) $(am__objects_23) $(am__objects_24) \
+ $(am__objects_25) $(am__objects_26) $(am__objects_27)
+am__objects_28 =
+nodist_libraptor2_la_OBJECTS = $(am__objects_28)
+libraptor2_la_OBJECTS = $(am_libraptor2_la_OBJECTS) \
+ $(nodist_libraptor2_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libraptor2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libraptor2_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libraptor2_la_SOURCES) $(nodist_libraptor2_la_SOURCES)
+DIST_SOURCES = $(am__libraptor2_la_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+HEADERS = $(nodist_pkginclude_HEADERS) $(noinst_HEADERS) \
+ $(pkginclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+
+# Memory debugging
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+lib_LTLIBRARIES = libraptor2.la
+pkginclude_HEADERS = raptor.h
+nodist_pkginclude_HEADERS = raptor2.h
+noinst_HEADERS = raptor_internal.h win32_raptor_config.h
+TESTS = raptor_parse_test raptor_rfc2396_test raptor_uri_test \
+ raptor_namespace_test strcasecmp_test raptor_www_test \
+ raptor_sequence_test raptor_stringbuffer_test \
+ raptor_uri_win32_test raptor_iostream_test \
+ raptor_xml_writer_test raptor_turtle_writer_test \
+ raptor_avltree_test raptor_term_test raptor_permute_test \
+ raptor_snprintf_test $(am__append_1)
+CLEANFILES = $(TESTS) \
+turtle_lexer_test turtle_parser_test \
+*.plist \
+git-version.h
+
+MAINTAINERCLEANFILES = turtle_lexer.c turtle_lexer.h \
+turtle_parser.c turtle_parser.h turtle_parser.output
+
+AM_CPPFLAGS = $(MEM) $(am__append_29)
+ANALYZE = clang
+ANALYZE_FLAGS = "--analyze"
+# Based on COMPILE target
+ANALYZE_COMMAND = $(ANALYZE) \
+ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) \
+ $(ANALYZE_FLAGS)
+
+BUILT_SOURCES = turtle_lexer.c turtle_lexer.h turtle_parser.c turtle_parser.h
+libraptor2_la_SOURCES = raptor_parse.c raptor_serialize.c \
+ raptor_rfc2396.c raptor_uri.c raptor_log.c raptor_locator.c \
+ raptor_namespace.c raptor_qname.c raptor_option.c \
+ raptor_general.c raptor_unicode.c raptor_www.c \
+ raptor_statement.c raptor_term.c raptor_sequence.c \
+ raptor_stringbuffer.c raptor_iostream.c raptor_xml.c \
+ raptor_xml_writer.c raptor_set.c turtle_common.c \
+ raptor_turtle_writer.c raptor_avltree.c snprintf.c \
+ raptor_json_writer.c raptor_memstr.c raptor_concepts.c \
+ raptor_syntax_description.c raptor_sax2.c $(am__append_2) \
+ $(am__append_3) $(am__append_4) $(am__append_5) \
+ $(am__append_6) $(am__append_7) $(am__append_8) \
+ $(am__append_9) $(am__append_10) $(am__append_11) \
+ $(am__append_12) $(am__append_13) $(am__append_14) \
+ $(am__append_15) $(am__append_16) $(am__append_17) \
+ $(am__append_18) $(am__append_19) $(am__append_20) \
+ $(am__append_21) $(am__append_22) $(am__append_23) \
+ $(am__append_24) $(am__append_25) $(am__append_26) \
+ $(am__append_27) $(am__append_28)
+libraptor2_la_LDFLAGS = -version-info @RAPTOR_LIBTOOL_VERSION@ \
+@RAPTOR_LDFLAGS@ $(MEM_LIBS)
+
+libraptor2_la_LIBADD = @LTLIBOBJS@
+EXTRA_DIST = \
+raptor_permute_test.c \
+raptor_www_test.c \
+raptor_nfc_test.c \
+raptor_win32.c \
+$(man_MANS) \
+turtle_lexer.l turtle_parser.y \
+parsedate.y
+
+nodist_libraptor2_la_SOURCES = $(am__append_30)
+all: $(BUILT_SOURCES) raptor_config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+raptor_config.h: stamp-h1
+ @if test ! -f $@; then rm -f stamp-h1; else :; fi
+ @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+
+stamp-h1: $(srcdir)/raptor_config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status src/raptor_config.h
+$(srcdir)/raptor_config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f raptor_config.h stamp-h1
+raptor2.h: $(top_builddir)/config.status $(srcdir)/raptor2.h.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+win32_raptor_config.h: $(top_builddir)/config.status $(srcdir)/win32_raptor_config.h.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+ }
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libraptor2.la: $(libraptor2_la_OBJECTS) $(libraptor2_la_DEPENDENCIES) $(EXTRA_libraptor2_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libraptor2_la_LINK) -rpath $(libdir) $(libraptor2_la_OBJECTS) $(libraptor2_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/raptor_nfc_icu.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/raptor_www_curl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/raptor_www_libfetch.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/raptor_www_libxml.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/context.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curie.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iri.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/language.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lists.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/namespace.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntriples_parse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parsedate.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_abbrev.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_avltree.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_concepts.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_general.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_grddl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_guess.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_iostream.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_json.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_json_writer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_librdfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_libxml.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_locator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_log.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_memstr.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_namespace.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_option.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_parse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_qname.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_rdfxml.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_rfc2396.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_rss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_rss_common.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_sax2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_sequence.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_serialize.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_serialize_dot.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_serialize_html.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_serialize_json.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_serialize_ntriples.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_serialize_rdfxml.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_serialize_rdfxmla.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_serialize_rss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_serialize_turtle.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_set.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_statement.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_stringbuffer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_syntax_description.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_term.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_turtle_writer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_unicode.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_uri.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_www.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_xml.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raptor_xml_writer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdfa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdfa_utils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snprintf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strcasecmp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtok_r.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subject.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/triple.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/turtle_common.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/turtle_lexer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/turtle_parser.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+context.lo: $(top_srcdir)/librdfa/context.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT context.lo -MD -MP -MF $(DEPDIR)/context.Tpo -c -o context.lo `test -f '$(top_srcdir)/librdfa/context.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/context.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/context.Tpo $(DEPDIR)/context.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/librdfa/context.c' object='context.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o context.lo `test -f '$(top_srcdir)/librdfa/context.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/context.c
+
+curie.lo: $(top_srcdir)/librdfa/curie.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curie.lo -MD -MP -MF $(DEPDIR)/curie.Tpo -c -o curie.lo `test -f '$(top_srcdir)/librdfa/curie.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/curie.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/curie.Tpo $(DEPDIR)/curie.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/librdfa/curie.c' object='curie.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curie.lo `test -f '$(top_srcdir)/librdfa/curie.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/curie.c
+
+iri.lo: $(top_srcdir)/librdfa/iri.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT iri.lo -MD -MP -MF $(DEPDIR)/iri.Tpo -c -o iri.lo `test -f '$(top_srcdir)/librdfa/iri.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/iri.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/iri.Tpo $(DEPDIR)/iri.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/librdfa/iri.c' object='iri.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o iri.lo `test -f '$(top_srcdir)/librdfa/iri.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/iri.c
+
+language.lo: $(top_srcdir)/librdfa/language.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT language.lo -MD -MP -MF $(DEPDIR)/language.Tpo -c -o language.lo `test -f '$(top_srcdir)/librdfa/language.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/language.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/language.Tpo $(DEPDIR)/language.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/librdfa/language.c' object='language.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o language.lo `test -f '$(top_srcdir)/librdfa/language.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/language.c
+
+lists.lo: $(top_srcdir)/librdfa/lists.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lists.lo -MD -MP -MF $(DEPDIR)/lists.Tpo -c -o lists.lo `test -f '$(top_srcdir)/librdfa/lists.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/lists.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lists.Tpo $(DEPDIR)/lists.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/librdfa/lists.c' object='lists.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lists.lo `test -f '$(top_srcdir)/librdfa/lists.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/lists.c
+
+namespace.lo: $(top_srcdir)/librdfa/namespace.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT namespace.lo -MD -MP -MF $(DEPDIR)/namespace.Tpo -c -o namespace.lo `test -f '$(top_srcdir)/librdfa/namespace.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/namespace.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/namespace.Tpo $(DEPDIR)/namespace.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/librdfa/namespace.c' object='namespace.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o namespace.lo `test -f '$(top_srcdir)/librdfa/namespace.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/namespace.c
+
+rdfa.lo: $(top_srcdir)/librdfa/rdfa.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT rdfa.lo -MD -MP -MF $(DEPDIR)/rdfa.Tpo -c -o rdfa.lo `test -f '$(top_srcdir)/librdfa/rdfa.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/rdfa.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/rdfa.Tpo $(DEPDIR)/rdfa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/librdfa/rdfa.c' object='rdfa.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o rdfa.lo `test -f '$(top_srcdir)/librdfa/rdfa.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/rdfa.c
+
+rdfa_utils.lo: $(top_srcdir)/librdfa/rdfa_utils.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT rdfa_utils.lo -MD -MP -MF $(DEPDIR)/rdfa_utils.Tpo -c -o rdfa_utils.lo `test -f '$(top_srcdir)/librdfa/rdfa_utils.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/rdfa_utils.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/rdfa_utils.Tpo $(DEPDIR)/rdfa_utils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/librdfa/rdfa_utils.c' object='rdfa_utils.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o rdfa_utils.lo `test -f '$(top_srcdir)/librdfa/rdfa_utils.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/rdfa_utils.c
+
+subject.lo: $(top_srcdir)/librdfa/subject.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT subject.lo -MD -MP -MF $(DEPDIR)/subject.Tpo -c -o subject.lo `test -f '$(top_srcdir)/librdfa/subject.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/subject.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/subject.Tpo $(DEPDIR)/subject.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/librdfa/subject.c' object='subject.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o subject.lo `test -f '$(top_srcdir)/librdfa/subject.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/subject.c
+
+triple.lo: $(top_srcdir)/librdfa/triple.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT triple.lo -MD -MP -MF $(DEPDIR)/triple.Tpo -c -o triple.lo `test -f '$(top_srcdir)/librdfa/triple.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/triple.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/triple.Tpo $(DEPDIR)/triple.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/librdfa/triple.c' object='triple.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o triple.lo `test -f '$(top_srcdir)/librdfa/triple.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/triple.c
+
+strtok_r.lo: $(top_srcdir)/librdfa/strtok_r.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strtok_r.lo -MD -MP -MF $(DEPDIR)/strtok_r.Tpo -c -o strtok_r.lo `test -f '$(top_srcdir)/librdfa/strtok_r.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/strtok_r.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/strtok_r.Tpo $(DEPDIR)/strtok_r.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/librdfa/strtok_r.c' object='strtok_r.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strtok_r.lo `test -f '$(top_srcdir)/librdfa/strtok_r.c' || echo '$(srcdir)/'`$(top_srcdir)/librdfa/strtok_r.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-nodist_pkgincludeHEADERS: $(nodist_pkginclude_HEADERS)
+ @$(NORMAL_INSTALL)
+ @list='$(nodist_pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
+ $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
+ done
+
+uninstall-nodist_pkgincludeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nodist_pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
+install-pkgincludeHEADERS: $(pkginclude_HEADERS)
+ @$(NORMAL_INSTALL)
+ @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
+ $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
+ done
+
+uninstall-pkgincludeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) raptor_config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) raptor_config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) raptor_config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) raptor_config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ fi; \
+ echo "$${col}$$dashes$${std}"; \
+ echo "$${col}$$banner$${std}"; \
+ test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
+ test -z "$$report" || echo "$${col}$$report$${std}"; \
+ echo "$${col}$$dashes$${std}"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS) raptor_config.h
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)" "$(DESTDIR)$(pkgincludedir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf $(DEPDIR) ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-hdr distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-nodist_pkgincludeHEADERS \
+ install-pkgincludeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf $(DEPDIR) ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libLTLIBRARIES \
+ uninstall-nodist_pkgincludeHEADERS uninstall-pkgincludeHEADERS
+
+.MAKE: all check check-am install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-generic clean-libLTLIBRARIES clean-libtool ctags \
+ distclean distclean-compile distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-libLTLIBRARIES install-man \
+ install-nodist_pkgincludeHEADERS install-pdf install-pdf-am \
+ install-pkgincludeHEADERS install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-libLTLIBRARIES uninstall-nodist_pkgincludeHEADERS \
+ uninstall-pkgincludeHEADERS
+
+
+# raptor_parse.c is the first source file so this ensures
+# git-version.h is created before it and before the actual file
+# dependencies are calculated as a side-effect of compilation
+@MAINTAINER_MODE_TRUE@raptor_parse.c: git-version.h
+
+# Actually it needs turtle_parser.h but nevermind
+@MAINTAINER_MODE_TRUE@turtle_lexer.c: $(srcdir)/turtle_lexer.l turtle_parser.c $(top_srcdir)/scripts/fix-flex
+@MAINTAINER_MODE_TRUE@ $(LEX) -o$@ $(srcdir)/turtle_lexer.l
+@MAINTAINER_MODE_TRUE@ $(PERL) $(top_srcdir)/scripts/fix-flex $@ > turtle_lexer.t || rm -f $@
+@MAINTAINER_MODE_TRUE@ mv -f turtle_lexer.t $@
+
+@MAINTAINER_MODE_TRUE@turtle_lexer.h: turtle_lexer.c ; @exit 0
+
+@MAINTAINER_MODE_TRUE@turtle_parser.c: $(srcdir)/turtle_parser.y $(top_srcdir)/scripts/fix-bison
+@MAINTAINER_MODE_TRUE@ $(YACC) -b turtle_parser -p turtle_parser_ -d -v $(srcdir)/turtle_parser.y
+@MAINTAINER_MODE_TRUE@ $(PERL) $(top_srcdir)/scripts/fix-bison turtle_parser.tab.c > $@
+@MAINTAINER_MODE_TRUE@ mv -f turtle_parser.tab.h turtle_parser.h
+@MAINTAINER_MODE_TRUE@ rm -f turtle_parser.tab.c
+
+@MAINTAINER_MODE_TRUE@turtle_parser.h: turtle_parser.c ; @exit 0
+
+# Actually it needs turtle_parser.h but nevermind
+turtle_lexer_test: $(srcdir)/turtle_lexer.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/turtle_lexer.c libraptor2.la $(LIBS)
+
+turtle_parser_test: $(srcdir)/turtle_parser.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/turtle_parser.c libraptor2.la $(LIBS)
+
+parsedate.c: $(srcdir)/parsedate.y
+ $(YACC) -b parsedate -p raptor_parsedate_ -d -v $(srcdir)/parsedate.y
+ sed -e '/Suppress GCC warning that yyerrlab1/,/^\#endif/d' -e "s/parsedate.tab.c/$@/" parsedate.tab.c > $@
+ mv parsedate.tab.h parsedate.h
+ rm -f parsedate.tab.c
+
+# Some people need a little help ;-)
+test: check
+
+raptor_parse_test: $(srcdir)/raptor_parse.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_parse.c libraptor2.la $(LIBS)
+
+raptor_rfc2396_test: $(srcdir)/raptor_rfc2396.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_rfc2396.c libraptor2.la $(LIBS)
+
+raptor_uri_test: $(srcdir)/raptor_uri.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_uri.c libraptor2.la $(LIBS)
+
+raptor_uri_win32_test: $(srcdir)/raptor_uri.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE -DWIN32_URI_TEST $(srcdir)/raptor_uri.c libraptor2.la $(LIBS)
+
+raptor_namespace_test: $(srcdir)/raptor_namespace.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_namespace.c libraptor2.la $(LIBS)
+
+strcasecmp_test: $(srcdir)/strcasecmp.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/strcasecmp.c libraptor2.la $(LIBS)
+
+raptor_www_test: $(srcdir)/raptor_www_test.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_www_test.c libraptor2.la $(LIBS)
+
+raptor_set_test: $(srcdir)/raptor_set.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_set.c libraptor2.la $(LIBS)
+
+raptor_xml_test: $(srcdir)/raptor_xml.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_xml.c libraptor2.la $(LIBS)
+
+raptor_sequence_test: $(srcdir)/raptor_sequence.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_sequence.c libraptor2.la $(LIBS)
+
+raptor_stringbuffer_test: $(srcdir)/raptor_stringbuffer.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_stringbuffer.c libraptor2.la $(LIBS)
+
+raptor_nfc_test: $(srcdir)/raptor_nfc_test.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_nfc_test.c libraptor2.la $(LIBS)
+
+raptor_iostream_test: $(srcdir)/raptor_iostream.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_iostream.c libraptor2.la $(LIBS)
+
+raptor_xml_writer_test: $(srcdir)/raptor_xml_writer.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_xml_writer.c libraptor2.la $(LIBS)
+
+raptor_turtle_writer_test: $(srcdir)/raptor_turtle_writer.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_turtle_writer.c libraptor2.la $(LIBS)
+
+raptor_avltree_test: $(srcdir)/raptor_avltree.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_avltree.c libraptor2.la $(LIBS)
+
+raptor_term_test: $(srcdir)/raptor_term.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_term.c libraptor2.la $(LIBS)
+
+raptor_permute_test: $(srcdir)/raptor_permute_test.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/raptor_permute_test.c libraptor2.la $(LIBS)
+
+raptor_snprintf_test: $(srcdir)/snprintf.c libraptor2.la
+ $(LINK) $(DEFS) $(CPPFLAGS) -I$(srcdir) -I. -DSTANDALONE $(srcdir)/snprintf.c libraptor2.la $(LIBS)
+
+@MAINTAINER_MODE_TRUE@git-version.h: check-version
+
+# Always run this in maintainer mode but do not always change git-version.h
+@MAINTAINER_MODE_TRUE@.PHONY: check-version
+@MAINTAINER_MODE_TRUE@check-version:
+@MAINTAINER_MODE_TRUE@ @file="git-version.h" ; \
+@MAINTAINER_MODE_TRUE@ if test -d ../.git; then \
+@MAINTAINER_MODE_TRUE@ git_version=`cd .. && git rev-parse HEAD`; \
+@MAINTAINER_MODE_TRUE@ else \
+@MAINTAINER_MODE_TRUE@ git_version="unknown"; \
+@MAINTAINER_MODE_TRUE@ fi; \
+@MAINTAINER_MODE_TRUE@ $(RECHO) "GIT version $$git_version"; \
+@MAINTAINER_MODE_TRUE@ tmp="$$file.tmp"; \
+@MAINTAINER_MODE_TRUE@ $(RECHO) "#define GIT_VERSION \"$$git_version\"" > $$tmp; \
+@MAINTAINER_MODE_TRUE@ if test -f $$file; then \
+@MAINTAINER_MODE_TRUE@ if cmp $$file $$tmp >/dev/null 2>&1; then \
+@MAINTAINER_MODE_TRUE@ rm $$tmp; \
+@MAINTAINER_MODE_TRUE@ else \
+@MAINTAINER_MODE_TRUE@ mv $$tmp $$file; \
+@MAINTAINER_MODE_TRUE@ fi; \
+@MAINTAINER_MODE_TRUE@ else \
+@MAINTAINER_MODE_TRUE@ mv $$tmp $$file; \
+@MAINTAINER_MODE_TRUE@ fi
+
+# Run Clang static analyzer over sources.
+@MAINTAINER_MODE_TRUE@analyze: $(SOURCES)
+@MAINTAINER_MODE_TRUE@ @list='$(SOURCES)'; \
+@MAINTAINER_MODE_TRUE@ result=0; \
+@MAINTAINER_MODE_TRUE@ for file in $$list; do \
+@MAINTAINER_MODE_TRUE@ if echo $$file | grep '\.c$$' >/dev/null 2>&1; then \
+@MAINTAINER_MODE_TRUE@ $(RECHO) "Analyzing $$file"; \
+@MAINTAINER_MODE_TRUE@ $(ANALYZE_COMMAND) $(srcdir)/$$file; \
+@MAINTAINER_MODE_TRUE@ status=$$?; \
+@MAINTAINER_MODE_TRUE@ if test $$status != 0; then \
+@MAINTAINER_MODE_TRUE@ result=1; \
+@MAINTAINER_MODE_TRUE@ fi; \
+@MAINTAINER_MODE_TRUE@ fi; \
+@MAINTAINER_MODE_TRUE@ done; \
+@MAINTAINER_MODE_TRUE@ set -e; exit $$result
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/ntriples_parse.c b/src/ntriples_parse.c
new file mode 100644
index 0000000..3c2edc6
--- /dev/null
+++ b/src/ntriples_parse.c
@@ -0,0 +1,1246 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * ntriples_parse.c - Raptor N-Triples Parser implementation
+ *
+ * N-Triples
+ * http://www.w3.org/TR/rdf-testcases/#ntriples
+ *
+ * Copyright (C) 2001-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2001-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+/* Set RAPTOR_DEBUG to > 1 to get lots of buffer related debugging */
+/*
+#undef RAPTOR_DEBUG
+#define RAPTOR_DEBUG 2
+*/
+
+
+/* Prototypes for local functions */
+static void raptor_ntriples_generate_statement(raptor_parser* parser, const unsigned char *subject, const raptor_term_type subject_type, const unsigned char *predicate, const raptor_term_type predicate_type, const void *object, const raptor_term_type object_type, const unsigned char *object_literal_language, const unsigned char *object_literal_datatype, const void *graph, const raptor_term_type graph_type);
+
+/*
+ * NTriples parser object
+ */
+struct raptor_ntriples_parser_context_s {
+ /* current line */
+ unsigned char *line;
+ /* current line length */
+ size_t line_length;
+ /* current char in line buffer */
+ size_t offset;
+
+ char last_char;
+
+ /* static statement for use in passing to user code */
+ raptor_statement statement;
+
+ /* Non-0 if N-Quads */
+ int is_nquads;
+
+ int literal_graph_warning;
+};
+
+
+typedef struct raptor_ntriples_parser_context_s raptor_ntriples_parser_context;
+
+
+
+/**
+ * raptor_ntriples_parse_init:
+ *
+ * Initialise the Raptor NTriples parser.
+ *
+ * Return value: non 0 on failure
+ **/
+
+static int
+raptor_ntriples_parse_init(raptor_parser* rdf_parser, const char *name)
+{
+ raptor_ntriples_parser_context *ntriples_parser;
+ ntriples_parser = (raptor_ntriples_parser_context*)rdf_parser->context;
+
+ raptor_statement_init(&ntriples_parser->statement, rdf_parser->world);
+
+ if(!strcmp(name, "nquads"))
+ ntriples_parser->is_nquads = 1;
+
+ return 0;
+}
+
+
+/* PUBLIC FUNCTIONS */
+
+
+/*
+ * raptor_ntriples_parse_terminate - Free the Raptor NTriples parser
+ * @rdf_parser: parser object
+ *
+ **/
+static void
+raptor_ntriples_parse_terminate(raptor_parser* rdf_parser)
+{
+ raptor_ntriples_parser_context *ntriples_parser;
+ ntriples_parser = (raptor_ntriples_parser_context*)rdf_parser->context;
+ if(ntriples_parser->line_length)
+ RAPTOR_FREE(cdata, ntriples_parser->line);
+}
+
+
+static void
+raptor_ntriples_generate_statement(raptor_parser* parser,
+ const unsigned char *subject,
+ const raptor_term_type subject_type,
+ const unsigned char *predicate,
+ const raptor_term_type predicate_type,
+ const void *object,
+ const raptor_term_type object_type,
+ const unsigned char *object_literal_language,
+ const unsigned char *object_literal_datatype,
+ const void *graph,
+ const raptor_term_type graph_type)
+{
+ /* raptor_ntriples_parser_context *ntriples_parser = (raptor_ntriples_parser_context*)parser->context; */
+ raptor_statement *statement = &parser->statement;
+ raptor_uri *predicate_uri = NULL;
+ raptor_uri *datatype_uri = NULL;
+
+ if(!parser->emitted_default_graph) {
+ raptor_parser_start_graph(parser, NULL, 0);
+ parser->emitted_default_graph++;
+ }
+
+ /* If there is no statement handler - there is nothing else to do */
+ if(!parser->statement_handler)
+ goto cleanup;
+
+ /* Two choices for subject from N-Triples */
+ if(subject_type == RAPTOR_TERM_TYPE_BLANK) {
+ statement->subject = raptor_new_term_from_blank(parser->world, subject);
+ } else {
+ raptor_uri *subject_uri;
+
+ /* must be RAPTOR_TERM_TYPE_URI */
+ subject_uri = raptor_new_uri(parser->world, subject);
+ if(!subject_uri) {
+ raptor_parser_error(parser, "Could not create subject uri '%s', skipping", subject);
+ goto cleanup;
+ }
+ statement->subject = raptor_new_term_from_uri(parser->world, subject_uri);
+ raptor_free_uri(subject_uri);
+ }
+
+ if(object_literal_datatype) {
+ datatype_uri = raptor_new_uri(parser->world, object_literal_datatype);
+ if(!datatype_uri) {
+ raptor_parser_error(parser, "Could not create object literal datatype uri '%s', skipping", object_literal_datatype);
+ goto cleanup;
+ }
+ object_literal_language = NULL;
+ }
+
+ /* Predicates in N-Triples are URIs but check for bad ordinals */
+ if(!strncmp((const char*)predicate, "http://www.w3.org/1999/02/22-rdf-syntax-ns#_", 44)) {
+ int predicate_ordinal = raptor_check_ordinal(predicate+44);
+ if(predicate_ordinal <= 0)
+ raptor_parser_error(parser, "Illegal ordinal value %d in property '%s'.", predicate_ordinal, predicate);
+ }
+
+ predicate_uri = raptor_new_uri(parser->world, predicate);
+ if(!predicate_uri) {
+ raptor_parser_error(parser, "Could not create predicate uri '%s', skipping", predicate);
+ goto cleanup;
+ }
+ statement->predicate = raptor_new_term_from_uri(parser->world, predicate_uri);
+ raptor_free_uri(predicate_uri);
+ predicate_uri = NULL;
+
+ /* Three choices for object from N-Triples */
+ if(object_type == RAPTOR_TERM_TYPE_URI) {
+ raptor_uri *object_uri;
+
+ object_uri = raptor_new_uri(parser->world, (const unsigned char*)object);
+ if(!object_uri) {
+ raptor_parser_error(parser, "Could not create object uri '%s', skipping", (const char *)object);
+ goto cleanup;
+ }
+ statement->object = raptor_new_term_from_uri(parser->world, object_uri);
+ raptor_free_uri(object_uri);
+ object_uri = NULL;
+ } else if(object_type == RAPTOR_TERM_TYPE_BLANK) {
+ statement->object = raptor_new_term_from_blank(parser->world,
+ (const unsigned char*)object);
+ } else {
+ /* RAPTOR_TERM_TYPE_LITERAL */
+ statement->object = raptor_new_term_from_literal(parser->world,
+ (const unsigned char*)object,
+ datatype_uri,
+ (const unsigned char*)object_literal_language);
+ }
+
+
+ if(graph) {
+ /* Three choices for graph/context from N-Quads according to
+ * http://sw.deri.org/2008/07/n-quads/ but I am IGNORING Literal
+ */
+ if(graph_type == RAPTOR_TERM_TYPE_URI) {
+ raptor_uri *graph_uri;
+
+ graph_uri = raptor_new_uri(parser->world, (const unsigned char*)graph);
+ if(!graph_uri) {
+ raptor_parser_error(parser,
+ "Could not create object uri '%s', skipping",
+ (const char *)graph);
+ goto cleanup;
+ }
+ statement->graph = raptor_new_term_from_uri(parser->world, graph_uri);
+ raptor_free_uri(graph_uri);
+ graph_uri = NULL;
+ } else if(graph_type == RAPTOR_TERM_TYPE_BLANK) {
+ statement->graph = raptor_new_term_from_blank(parser->world,
+ (const unsigned char*)graph);
+ } else {
+ /* Warning about literal graphs is handled below */
+ statement->graph = NULL;
+ }
+ }
+
+ /* Generate the statement */
+ (*parser->statement_handler)(parser->user_data, statement);
+
+ cleanup:
+ raptor_free_statement(statement);
+
+ if(predicate_uri)
+ raptor_free_uri(predicate_uri);
+ if(datatype_uri)
+ raptor_free_uri(datatype_uri);
+}
+
+
+/* These are for 7-bit ASCII and not locale-specific */
+#define IS_ASCII_ALPHA(c) (((c) > 0x40 && (c) < 0x5B) || ((c) > 0x60 && (c) < 0x7B))
+#define IS_ASCII_UPPER(c) ((c) > 0x40 && (c) < 0x5B)
+#define IS_ASCII_DIGIT(c) ((c) > 0x2F && (c) < 0x3A)
+#define IS_ASCII_PRINT(c) ((c) > 0x1F && (c) < 0x7F)
+#define TO_ASCII_LOWER(c) ((c)+0x20)
+
+typedef enum {
+ RAPTOR_TERM_CLASS_URI, /* ends on > */
+ RAPTOR_TERM_CLASS_BNODEID, /* ends on first non [A-Za-z][A-Za-z0-9]* */
+ RAPTOR_TERM_CLASS_STRING, /* ends on non-escaped " */
+ RAPTOR_TERM_CLASS_LANGUAGE, /* ends on first non [a-z0-9]+ ('-' [a-z0-9]+ )? */
+ RAPTOR_TERM_CLASS_FULL /* the entire string is used */
+} raptor_ntriples_term_class;
+
+
+static int
+raptor_ntriples_term_valid(raptor_parser* rdf_parser,
+ unsigned char c, int position,
+ raptor_ntriples_term_class term_class)
+{
+ int result = 0;
+
+ switch(term_class) {
+ case RAPTOR_TERM_CLASS_URI:
+ /* ends on > */
+ result = (c != '>');
+ break;
+
+ case RAPTOR_TERM_CLASS_BNODEID:
+ /* ends on first non [A-Za-z][A-Za-z0-9]* */
+ result = IS_ASCII_ALPHA(c);
+ if(position)
+ result = (result || IS_ASCII_DIGIT(c));
+ break;
+
+ case RAPTOR_TERM_CLASS_STRING:
+ /* ends on " */
+ result = (c != '"');
+ break;
+
+ case RAPTOR_TERM_CLASS_LANGUAGE:
+ /* ends on first non [a-z0-9]+ ('-' [a-z0-9]+ )? */
+ result = (IS_ASCII_ALPHA(c) || IS_ASCII_DIGIT(c));
+ if(position)
+ result = (result || c == '-');
+ break;
+
+ case RAPTOR_TERM_CLASS_FULL:
+ result = 1;
+ break;
+
+ default:
+ raptor_parser_error(rdf_parser, "Unknown N-Triples term class %d",
+ term_class);
+ }
+
+ return result;
+}
+
+
+/*
+ * raptor_ntriples_term:
+ * @parser: NTriples parser
+ * @start: pointer to starting character of string (in)
+ * @dest: destination of string (in)
+ * @lenp: pointer to length of string (in/out)
+ * @dest_lenp: pointer to length of destination string (out)
+ * @end_char: string ending character
+ * @class: string class
+ * @allow_utf8: Non-0 if UTF-8 chars are allowed in the term
+ *
+ * Parse an N-Triples term with escapes.
+ *
+ * Relies that @dest is long enough; it need only be as large as the
+ * input string @start since when UTF-8 encoding, the escapes are
+ * removed and the result is always less than or equal to length of
+ * input.
+ *
+ * N-Triples strings/URIs are written in ASCII at present; characters
+ * outside the printable ASCII range are discarded with a warning.
+ * See the grammar for full details of the allowed ranges.
+ *
+ * If the class is RAPTOR_TERM_CLASS_FULL, the end_char is ignored.
+ *
+ * UTF-8 is only allowed if allow_utf8 is non-0, otherwise the
+ * string is US-ASCII and only the \u and \U esapes are allowed.
+ * If enabled, both are allowed.
+ *
+ * Return value: Non 0 on failure
+ **/
+static int
+raptor_ntriples_term(raptor_parser* rdf_parser,
+ const unsigned char **start, unsigned char *dest,
+ size_t *lenp, size_t *dest_lenp,
+ char end_char,
+ raptor_ntriples_term_class term_class,
+ int allow_utf8)
+{
+ const unsigned char *p = *start;
+ unsigned char c = '\0';
+ size_t ulen = 0;
+ unsigned long unichar = 0;
+ unsigned int position = 0;
+ int end_char_seen = 0;
+
+ if(term_class == RAPTOR_TERM_CLASS_FULL)
+ end_char = '\0';
+
+ /* find end of string, fixing backslashed characters on the way */
+ while(*lenp > 0) {
+ int unichar_width;
+
+ c = *p;
+
+ p++;
+ (*lenp)--;
+ rdf_parser->locator.column++;
+ rdf_parser->locator.byte++;
+
+ if(allow_utf8) {
+ if(c > 0x7f) {
+ /* just copy the UTF-8 bytes through */
+ int unichar_len;
+ unichar_len = raptor_unicode_utf8_string_get_char(p - 1, 1 + *lenp, NULL);
+ if(unichar_len < 0 || RAPTOR_GOOD_CAST(size_t, unichar_len) > *lenp) {
+ raptor_parser_error(rdf_parser, "UTF-8 encoding error at character %d (0x%02X) found.", c, c);
+ /* UTF-8 encoding had an error or ended in the middle of a string */
+ return 1;
+ }
+ memcpy(dest, p-1, unichar_len);
+ dest += unichar_len;
+
+ unichar_len--; /* p, *lenp were moved on by 1 earlier */
+
+ p += unichar_len;
+ (*lenp) -= unichar_len;
+ rdf_parser->locator.column += unichar_len;
+ rdf_parser->locator.byte += unichar_len;
+ continue;
+ }
+ } else if(!IS_ASCII_PRINT(c)) {
+ /* This is an ASCII check, not a printable character check
+ * so isprint() is not appropriate, since that is a locale check.
+ */
+ raptor_parser_error(rdf_parser, "Non-printable ASCII character %d (0x%02X) found.", c, c);
+ continue;
+ }
+
+ if(c != '\\') {
+ /* finish at non-backslashed end_char */
+ if(end_char && c == end_char) {
+ end_char_seen = 1;
+ break;
+ }
+
+ if(!raptor_ntriples_term_valid(rdf_parser, c, position, term_class)) {
+ if(end_char) {
+ /* end char was expected, so finding an invalid thing is an error */
+ raptor_parser_error(rdf_parser, "Missing terminating '%c' (found '%c')", end_char, c);
+ return 0;
+ } else {
+ /* it's the end - so rewind 1 to save next char */
+ p--;
+ (*lenp)++;
+ rdf_parser->locator.column--;
+ rdf_parser->locator.byte--;
+ break;
+ }
+ }
+
+ /* otherwise store and move on */
+ *dest++ = c;
+ position++;
+ continue;
+ }
+
+ if(!*lenp) {
+ if(term_class != RAPTOR_TERM_CLASS_FULL)
+ raptor_parser_error(rdf_parser, "\\ at end of line");
+ return 0;
+ }
+
+ c = *p;
+
+ p++;
+ (*lenp)--;
+ rdf_parser->locator.column++;
+ rdf_parser->locator.byte++;
+
+ switch(c) {
+ case '"':
+ case '\\':
+ *dest++ = c;
+ break;
+ case 'n':
+ *dest++ = '\n';
+ break;
+ case 'r':
+ *dest++ = '\r';
+ break;
+ case 't':
+ *dest++ = '\t';
+ break;
+ case 'u':
+ case 'U':
+ ulen = (c == 'u') ? 4 : 8;
+
+ if(*lenp < ulen) {
+ raptor_parser_error(rdf_parser, "%c over end of line", c);
+ return 0;
+ }
+
+ if(1) {
+ int n;
+
+ n = sscanf((const char*)p, ((ulen == 4) ? "%04lx" : "%08lx"), &unichar);
+ if(n != 1) {
+ raptor_parser_error(rdf_parser, "Illegal Uncode escape '%c%s...'", c, p);
+ break;
+ }
+ }
+
+ p += ulen;
+ (*lenp) -= ulen;
+ rdf_parser->locator.column += RAPTOR_GOOD_CAST(int, ulen);
+ rdf_parser->locator.byte += RAPTOR_GOOD_CAST(int, ulen);
+
+ if(unichar > raptor_unicode_max_codepoint) {
+ raptor_parser_error(rdf_parser,
+ "Illegal Unicode character with code point #x%lX (max #x%lX).",
+ unichar, raptor_unicode_max_codepoint);
+ break;
+ }
+
+ unichar_width = raptor_unicode_utf8_string_put_char(unichar, dest, 4);
+ if(unichar_width < 0) {
+ raptor_parser_error(rdf_parser,
+ "Illegal Unicode character with code point #x%lX.",
+ unichar);
+ break;
+ }
+
+ /* The destination length is set here to 4 since we know that in
+ * all cases, the UTF-8 encoded output sequence is always shorter
+ * than the input sequence, and the buffer is edited in place.
+ * \uXXXX: 6 bytes input - UTF-8 max 3 bytes output
+ * \uXXXXXXXX: 10 bytes input - UTF-8 max 4 bytes output
+ */
+ dest += (int)unichar_width;
+ break;
+
+ default:
+ raptor_parser_error(rdf_parser,
+ "Illegal string escape \\%c in \"%s\"", c,
+ (char*)start);
+ return 0;
+ }
+
+ position++;
+ } /* end while */
+
+
+ if(end_char && !end_char_seen) {
+ raptor_parser_error(rdf_parser, "Missing terminating '%c' before end of line.", end_char);
+ return 1;
+ }
+
+ /* terminate dest, can be shorter than source */
+ *dest = '\0';
+
+ if(dest_lenp)
+ *dest_lenp = p - *start;
+
+ *start = p;
+
+ return 0;
+}
+
+
+#define MAX_NTRIPLES_TERMS 4
+
+static int
+raptor_ntriples_parse_line(raptor_parser* rdf_parser,
+ unsigned char *buffer, size_t len,
+ int max_terms)
+{
+ raptor_ntriples_parser_context *ntriples_parser = (raptor_ntriples_parser_context*)rdf_parser->context;
+ int i;
+ unsigned char *p;
+ unsigned char *dest;
+ unsigned char *terms[MAX_NTRIPLES_TERMS] = { NULL, NULL, NULL, NULL};
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ size_t term_lengths[MAX_NTRIPLES_TERMS] = {0, 0, 0, 0};
+#endif
+ raptor_term_type term_types[MAX_NTRIPLES_TERMS] = {RAPTOR_TERM_TYPE_UNKNOWN, RAPTOR_TERM_TYPE_UNKNOWN, RAPTOR_TERM_TYPE_UNKNOWN, RAPTOR_TERM_TYPE_UNKNOWN};
+ size_t term_length = 0;
+ unsigned char *object_literal_language = NULL;
+ unsigned char *object_literal_datatype = NULL;
+ int rc = 0;
+
+ /* ASSERTION:
+ * p always points to first char we are considering
+ * p[len-1] always points to last char
+ */
+
+ /* Handle empty lines */
+ if(!len)
+ return 0;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("handling line '%s' (%d bytes)\n", buffer, (unsigned int)len);
+#endif
+
+ p = buffer;
+
+ while(len > 0 && isspace((int)*p)) {
+ p++;
+ rdf_parser->locator.column++;
+ rdf_parser->locator.byte++;
+ len--;
+ }
+
+ /* Handle empty - all whitespace lines */
+ if(!len)
+ return 0;
+
+ /* Handle comment lines */
+ if(*p == '#')
+ return 0;
+
+ /* Remove trailing spaces */
+ while(len > 0 && isspace((int)p[len-1])) {
+ p[len-1] = '\0';
+ len--;
+ }
+
+ /* can't be empty now - that would have been caught above */
+
+ /* Check for terminating '.' */
+ if(p[len-1] != '.') {
+ /* Move current location to point to problem */
+ rdf_parser->locator.column += RAPTOR_BAD_CAST(int, len - 2);
+ rdf_parser->locator.byte += RAPTOR_BAD_CAST(int, len - 2);
+ raptor_parser_error(rdf_parser, "Missing . at end of line");
+ return 0;
+ }
+
+ p[len-1] = '\0';
+ len--;
+
+
+ /* Must be triple/quad */
+
+ for(i = 0; i < max_terms; i++) {
+ if(!len) {
+ /* context is optional in nquads */
+ if (i == 3)
+ break;
+ raptor_parser_error(rdf_parser, "Unexpected end of line");
+ goto cleanup;
+ }
+
+
+ if(i == 2) {
+ /* object term (2): expect either <URI> or _:name or literal */
+ if(*p != '<' && *p != '_' && *p != '"' && *p != 'x') {
+ raptor_parser_error(rdf_parser, "Saw '%c', expected <URIref>, _:bnodeID or \"literal\"", *p);
+ goto cleanup;
+ }
+ } else if(i == 1) {
+ /* predicate term (1): expect URI only */
+ if(*p != '<') {
+ raptor_parser_error(rdf_parser, "Saw '%c', expected <URIref>", *p);
+ goto cleanup;
+ }
+ } else {
+ /* subject (0) or graph (3) terms: expect <URI> or _:name */
+ if(*p != '<' && *p != '_') {
+ raptor_parser_error(rdf_parser, "Saw '%c', expected <URIref> or _:bnodeID", *p);
+ goto cleanup;
+ }
+ }
+
+
+ switch(*p) {
+ case '<':
+ term_types[i] = RAPTOR_TERM_TYPE_URI;
+
+ dest = p;
+
+ p++;
+ len--;
+ rdf_parser->locator.column++;
+ rdf_parser->locator.byte++;
+
+ if(raptor_ntriples_term(rdf_parser,
+ (const unsigned char**)&p,
+ dest, &len, &term_length,
+ '>', RAPTOR_TERM_CLASS_URI, 0)) {
+ rc = 1;
+ goto cleanup;
+ }
+ break;
+
+ case '"':
+ term_types[i] = RAPTOR_TERM_TYPE_LITERAL;
+
+ dest = p;
+
+ p++;
+ len--;
+ rdf_parser->locator.column++;
+ rdf_parser->locator.byte++;
+
+ if(raptor_ntriples_term(rdf_parser,
+ (const unsigned char**)&p,
+ dest, &len, &term_length,
+ '"', RAPTOR_TERM_CLASS_STRING, 0)) {
+ rc = 1;
+ goto cleanup;
+ }
+
+ if(len && (*p == '-' || *p == '@')) {
+ if(*p == '-')
+ raptor_parser_error(rdf_parser, "Old N-Triples language syntax using \"string\"-lang rather than \"string\"@lang.");
+
+ object_literal_language = p;
+
+ /* Skip - */
+ p++;
+ len--;
+ rdf_parser->locator.column++;
+ rdf_parser->locator.byte++;
+
+ if(!len) {
+ raptor_parser_error(rdf_parser, "Missing language after \"string\"-");
+ goto cleanup;
+ }
+
+
+ if(raptor_ntriples_term(rdf_parser,
+ (const unsigned char**)&p,
+ object_literal_language, &len, NULL,
+ '\0', RAPTOR_TERM_CLASS_LANGUAGE, 0)) {
+ rc = 1;
+ goto cleanup;
+ }
+ }
+
+ if(len >1 && *p == '^' && p[1] == '^') {
+
+ object_literal_datatype = p;
+
+ /* Skip ^^ */
+ p += 2;
+ len -= 2;
+ rdf_parser->locator.column += 2;
+ rdf_parser->locator.byte += 2;
+
+ if(!len || (len && *p != '<')) {
+ raptor_parser_error(rdf_parser, "Missing datatype URI-ref in\"string\"^^<URI-ref> after ^^");
+ goto cleanup;
+ }
+
+ p++;
+ len--;
+ rdf_parser->locator.column++;
+ rdf_parser->locator.byte++;
+
+ if(raptor_ntriples_term(rdf_parser,
+ (const unsigned char**)&p,
+ object_literal_datatype, &len, NULL,
+ '>', RAPTOR_TERM_CLASS_URI, 0)) {
+ rc = 1;
+ goto cleanup;
+ }
+
+ }
+
+ if(object_literal_datatype && object_literal_language) {
+ raptor_parser_warning(rdf_parser, "Typed literal used with a language - ignoring the language");
+ object_literal_language = NULL;
+ }
+
+ break;
+
+
+ case '_':
+ term_types[i] = RAPTOR_TERM_TYPE_BLANK;
+
+ /* store where _ was */
+ dest = p;
+
+ p++;
+ len--;
+ rdf_parser->locator.column++;
+ rdf_parser->locator.byte++;
+
+ if(!len || (len > 0 && *p != ':')) {
+ raptor_parser_error(rdf_parser, "Illegal bNodeID - _ not followed by :");
+ goto cleanup;
+ }
+
+ /* Found ':' - move on */
+
+ p++;
+ len--;
+ rdf_parser->locator.column++;
+ rdf_parser->locator.byte++;
+
+ if(raptor_ntriples_term(rdf_parser,
+ (const unsigned char**)&p,
+ dest, &len, &term_length,
+ '\0', RAPTOR_TERM_CLASS_BNODEID, 0)) {
+ rc = 1;
+ goto cleanup;
+ }
+
+ if(!term_length) {
+ raptor_parser_error(rdf_parser, "Bad or missing bNodeID after _:");
+ goto cleanup;
+ }
+
+ break;
+
+ default:
+ raptor_parser_fatal_error(rdf_parser, "Unknown term type");
+ rc = 1;
+ goto cleanup;
+ }
+
+
+ /* Store term */
+ terms[i] = dest;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ term_lengths[i] = term_length;
+#endif
+
+ /* Whitespace must separate the terms */
+ if(i < 2 && !isspace((int)*p)) {
+ raptor_parser_error(rdf_parser, "Missing whitespace after term '%s'", terms[i]);
+ rc = 1;
+ goto cleanup;
+ }
+
+ /* Skip whitespace after terms */
+ while(len > 0 && isspace((int)*p)) {
+ p++;
+ len--;
+ rdf_parser->locator.column++;
+ rdf_parser->locator.byte++;
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "item %d: term '%s' len %d type %d\n",
+ i, terms[i], (unsigned int)term_lengths[i], term_types[i]);
+#endif
+ }
+
+ if(len) {
+ raptor_parser_error(rdf_parser, "Junk before terminating \".\"");
+ return 0;
+ }
+
+
+ if(object_literal_language) {
+ unsigned char *q;
+ /* Normalize language to lowercase
+ * http://www.w3.org/TR/rdf-concepts/#dfn-language-identifier
+ */
+ for(q = object_literal_language; *q; q++) {
+ if(IS_ASCII_UPPER(*q))
+ *q = TO_ASCII_LOWER(*q);
+ }
+ }
+
+
+ /* Just to be sure */
+ if(!ntriples_parser->is_nquads)
+ terms[3] = NULL;
+
+ if(terms[3] && term_types[3] == RAPTOR_TERM_TYPE_LITERAL) {
+ if(!ntriples_parser->literal_graph_warning++)
+ raptor_parser_warning(rdf_parser, "Ignoring N-Quad literal contexts");
+
+ terms[3] = NULL;
+ }
+
+ raptor_ntriples_generate_statement(rdf_parser,
+ terms[0], term_types[0],
+ terms[1], term_types[1],
+ terms[2], term_types[2],
+ object_literal_language,
+ object_literal_datatype,
+ terms[3], term_types[3]);
+
+ rdf_parser->locator.byte += RAPTOR_BAD_CAST(int, len);
+
+ cleanup:
+
+ return rc;
+}
+
+
+static int
+raptor_ntriples_parse_chunk(raptor_parser* rdf_parser,
+ const unsigned char *s, size_t len,
+ int is_end)
+{
+ unsigned char *buffer;
+ unsigned char *ptr;
+ unsigned char *start;
+ raptor_ntriples_parser_context *ntriples_parser = (raptor_ntriples_parser_context*)rdf_parser->context;
+ int max_terms = ntriples_parser->is_nquads ? 4 : 3;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("adding %d bytes to buffer\n", (unsigned int)len);
+#endif
+
+ /* No data? It's the end */
+ if(!len)
+ return 0;
+
+ buffer = RAPTOR_MALLOC(unsigned char*, ntriples_parser->line_length + len + 1);
+ if(!buffer) {
+ raptor_parser_fatal_error(rdf_parser, "Out of memory");
+ return 1;
+ }
+
+ if(ntriples_parser->line_length) {
+ memcpy(buffer, ntriples_parser->line, ntriples_parser->line_length);
+ RAPTOR_FREE(char*, ntriples_parser->line);
+ }
+
+ ntriples_parser->line = buffer;
+
+ /* move pointer to end of cdata buffer */
+ ptr = buffer+ntriples_parser->line_length;
+
+ /* adjust stored length */
+ ntriples_parser->line_length += len;
+
+ /* now write new stuff at end of cdata buffer */
+ memcpy(ptr, s, len);
+ ptr += len;
+ *ptr = '\0';
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("buffer now %d bytes\n", ntriples_parser->line_length);
+#endif
+
+ ptr = buffer+ntriples_parser->offset;
+ while(*(start = ptr)) {
+ unsigned char *line_start = ptr;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("line buffer now '%s' (offset %d)\n", ptr, ptr-(buffer+ntriples_parser->offset));
+#endif
+
+ /* skip \n when just seen \r - i.e. \r\n or CR LF */
+ if(ntriples_parser->last_char == '\r' && *ptr == '\n') {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG1("skipping a \\n\n");
+#endif
+ ptr++;
+ rdf_parser->locator.byte++;
+ rdf_parser->locator.column = 0;
+ start = line_start = ptr;
+ }
+
+ while(*ptr && *ptr != '\n' && *ptr != '\r')
+ ptr++;
+
+ if(!*ptr)
+ break;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("found newline \\x%02x at offset %d\n", *ptr,
+ ptr-line_start);
+#endif
+ ntriples_parser->last_char = *ptr;
+
+ len = ptr-line_start;
+ rdf_parser->locator.column = 0;
+
+ *ptr = '\0';
+ if(raptor_ntriples_parse_line(rdf_parser, line_start, len, max_terms))
+ return 1;
+
+ rdf_parser->locator.line++;
+
+ /* go past newline */
+ ptr++;
+ rdf_parser->locator.byte++;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ /* Do not peek if too far */
+ if(ptr-buffer < ntriples_parser->line_length)
+ RAPTOR_DEBUG2("next char is \\x%02x\n", *ptr);
+ else
+ RAPTOR_DEBUG1("next char unknown - end of buffer\n");
+#endif
+ }
+
+ ntriples_parser->offset = start - buffer;
+
+ len = ntriples_parser->line_length - ntriples_parser->offset;
+
+ if(len) {
+ /* collapse buffer */
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("collapsing buffer from %d to %d bytes\n", ntriples_parser->line_length, (unsigned int)len);
+#endif
+ buffer = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(!buffer) {
+ raptor_parser_fatal_error(rdf_parser, "Out of memory");
+ return 1;
+ }
+
+ memcpy(buffer,
+ ntriples_parser->line + ntriples_parser->line_length - len,
+ len);
+ buffer[len] = '\0';
+
+ RAPTOR_FREE(char*, ntriples_parser->line);
+
+ ntriples_parser->line = buffer;
+ ntriples_parser->line_length -= ntriples_parser->offset;
+ ntriples_parser->offset = 0;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("buffer now '%s' (%d bytes)\n", ntriples_parser->line, ntriples_parser->line_length);
+#endif
+ }
+
+ /* exit now, no more input */
+ if(is_end) {
+ if(ntriples_parser->offset != ntriples_parser->line_length) {
+ raptor_parser_error(rdf_parser, "Junk at end of input.\"");
+ return 1;
+ }
+
+ if(rdf_parser->emitted_default_graph) {
+ raptor_parser_end_graph(rdf_parser, NULL, 0);
+ rdf_parser->emitted_default_graph--;
+ }
+
+ return 0;
+ }
+
+ return 0;
+}
+
+
+static int
+raptor_ntriples_parse_start(raptor_parser* rdf_parser)
+{
+ raptor_locator *locator = &rdf_parser->locator;
+ raptor_ntriples_parser_context *ntriples_parser = (raptor_ntriples_parser_context*)rdf_parser->context;
+
+ locator->line = 1;
+ locator->column = 0;
+ locator->byte = 0;
+
+ ntriples_parser->last_char = '\0';
+
+ return 0;
+}
+
+
+#if defined RAPTOR_PARSER_NTRIPLES || defined RAPTOR_PARSER_NQUADS
+static int
+raptor_ntriples_parse_recognise_syntax(raptor_parser_factory* factory,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier,
+ const unsigned char *suffix,
+ const char *mime_type)
+{
+ int score = 0;
+
+ if(suffix) {
+ if(!strcmp((const char*)suffix, "nt"))
+ score = 8;
+
+ /* Explicitly refuse to do anything with Turtle or N3 named content */
+ if(!strcmp((const char*)suffix, "ttl") ||
+ !strcmp((const char*)suffix, "n3")) {
+ return 0;
+ }
+ }
+
+ if(mime_type) {
+ if(strstr((const char*)mime_type, "ntriples"))
+ score += 6;
+ }
+
+ if(buffer && len) {
+ int has_ntriples_3;
+
+ /* recognizing N-Triples is tricky but rely that it is line based
+ * and that all URLs are absolute, and there are a lot of http:
+ * URLs
+ */
+#define HAS_AT_PREFIX (raptor_memstr((const char*)buffer, len, "@prefix ") != NULL)
+
+#define HAS_NTRIPLES_START_1_LEN 8
+#define HAS_NTRIPLES_START_1 (!memcmp((const char*)buffer, "<http://", HAS_NTRIPLES_START_1_LEN))
+#define HAS_NTRIPLES_START_2_LEN 2
+#define HAS_NTRIPLES_START_2 (!memcmp((const char*)buffer, "_:", HAS_NTRIPLES_START_2_LEN))
+
+#define HAS_NTRIPLES_1 (raptor_memstr((const char*)buffer, len, "\n<http://") != NULL)
+#define HAS_NTRIPLES_2 (raptor_memstr((const char*)buffer, len, "\r<http://") != NULL)
+#define HAS_NTRIPLES_3 (raptor_memstr((const char*)buffer, len, "> <http://") != NULL)
+#define HAS_NTRIPLES_4 (raptor_memstr((const char*)buffer, len, "> <") != NULL)
+#define HAS_NTRIPLES_5 (raptor_memstr((const char*)buffer, len, "> \"") != NULL)
+ if(HAS_AT_PREFIX)
+ /* Turtle */
+ return 0;
+
+ has_ntriples_3 = HAS_NTRIPLES_3;
+
+ /* Bonus if the first bytes look N-Triples-like */
+ if(len >= HAS_NTRIPLES_START_1_LEN && HAS_NTRIPLES_START_1)
+ score++;
+ if(len >= HAS_NTRIPLES_START_2_LEN && HAS_NTRIPLES_START_2)
+ score++;
+
+ if(HAS_NTRIPLES_1 || HAS_NTRIPLES_2) {
+ /* N-Triples file with newlines and HTTP subjects */
+ score += 6;
+ if(has_ntriples_3)
+ score++;
+ } else if(has_ntriples_3) {
+ /* an HTTP URL predicate or object but no HTTP subject */
+ score += 3;
+ } else if(HAS_NTRIPLES_4) {
+ /* non HTTP urls - weak check */
+ score += 2;
+ if(HAS_NTRIPLES_5)
+ /* bonus for a literal object */
+ score++;
+ }
+ }
+
+ return score;
+}
+
+
+static const char* const ntriples_names[2] = { "ntriples", NULL };
+
+static const char* const ntriples_uri_strings[3] = {
+ "http://www.w3.org/ns/formats/N-Triples",
+ "http://www.w3.org/TR/rdf-testcases/#ntriples",
+ NULL
+};
+
+#define NTRIPLES_TYPES_COUNT 1
+static const raptor_type_q ntriples_types[NTRIPLES_TYPES_COUNT + 1] = {
+ { "text/plain", 10, 1},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_ntriples_parser_register_factory(raptor_parser_factory *factory)
+{
+ int rc = 0;
+
+ factory->desc.names = ntriples_names;
+
+ factory->desc.mime_types = ntriples_types;
+
+ factory->desc.label = "N-Triples";
+ factory->desc.uri_strings = ntriples_uri_strings;
+
+ factory->desc.flags = 0;
+
+ factory->context_length = sizeof(raptor_ntriples_parser_context);
+
+ factory->init = raptor_ntriples_parse_init;
+ factory->terminate = raptor_ntriples_parse_terminate;
+ factory->start = raptor_ntriples_parse_start;
+ factory->chunk = raptor_ntriples_parse_chunk;
+ factory->recognise_syntax = raptor_ntriples_parse_recognise_syntax;
+
+ return rc;
+}
+
+
+int
+raptor_init_parser_ntriples(raptor_world* world)
+{
+ return !raptor_world_register_parser_factory(world,
+ &raptor_ntriples_parser_register_factory);
+}
+
+#endif
+
+
+#ifdef RAPTOR_PARSER_NQUADS
+static int
+raptor_nquads_parse_recognise_syntax(raptor_parser_factory* factory,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier,
+ const unsigned char *suffix,
+ const char *mime_type)
+{
+ int score = 0;
+ int ntriples_score;
+
+ if(suffix) {
+ if(!strcmp((const char*)suffix, "nq"))
+ score = 2;
+
+ /* Explicitly refuse to do anything with N-Triples, Turtle or N3
+ * named content
+ */
+ if(!strcmp((const char*)suffix, "nt") ||
+ !strcmp((const char*)suffix, "ttl") ||
+ !strcmp((const char*)suffix, "n3")) {
+ return 0;
+ }
+ }
+
+ if(mime_type) {
+ if(strstr((const char*)mime_type, "nquads"))
+ score += 2;
+ }
+
+ /* ntriples is a subset of nquads, score higher than ntriples */
+ ntriples_score = raptor_ntriples_parse_recognise_syntax(factory, buffer, len, identifier, suffix, mime_type);
+ if(ntriples_score > 0) {
+ score += ntriples_score + 1;
+ }
+
+ return score;
+}
+
+
+static const char* const nquads_names[2] = { "nquads", NULL };
+
+static const char* const nquads_uri_strings[2] = {
+ "http://sw.deri.org/2008/07/n-quads/",
+ NULL
+};
+
+#define NQUADS_TYPES_COUNT 1
+static const raptor_type_q nquads_types[NQUADS_TYPES_COUNT + 1] = {
+ { "text/x-nquads", 13, 10},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_nquads_parser_register_factory(raptor_parser_factory *factory)
+{
+ int rc = 0;
+
+ factory->desc.names = nquads_names;
+
+ factory->desc.mime_types = nquads_types;
+
+ factory->desc.label = "N-Quads";
+ factory->desc.uri_strings = nquads_uri_strings;
+
+ factory->desc.flags = 0;
+
+ factory->context_length = sizeof(raptor_ntriples_parser_context);
+
+ factory->init = raptor_ntriples_parse_init;
+ factory->terminate = raptor_ntriples_parse_terminate;
+ factory->start = raptor_ntriples_parse_start;
+ factory->chunk = raptor_ntriples_parse_chunk;
+ factory->recognise_syntax = raptor_nquads_parse_recognise_syntax;
+
+ return rc;
+}
+
+
+int
+raptor_init_parser_nquads(raptor_world* world)
+{
+ return !raptor_world_register_parser_factory(world,
+ &raptor_nquads_parser_register_factory);
+}
+#endif
diff --git a/src/parsedate.c b/src/parsedate.c
new file mode 100644
index 0000000..7160f36
--- /dev/null
+++ b/src/parsedate.c
@@ -0,0 +1,3191 @@
+/* A Bison parser, made by GNU Bison 2.5. */
+
+/* Bison implementation for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "2.5"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 1
+
+/* Push parsers. */
+#define YYPUSH 0
+
+/* Pull parsers. */
+#define YYPULL 1
+
+/* Using locations. */
+#define YYLSP_NEEDED 0
+
+/* Substitute the variable and function names. */
+#define yyparse raptor_parsedate_parse
+#define yylex raptor_parsedate_lex
+#define yyerror raptor_parsedate_error
+#define yylval raptor_parsedate_lval
+#define yychar raptor_parsedate_char
+#define yydebug raptor_parsedate_debug
+#define yynerrs raptor_parsedate_nerrs
+
+
+/* Copy the first part of user declarations. */
+
+/* Line 268 of yacc.c */
+#line 1 "./parsedate.y"
+
+/*
+ * Imported from
+ * PHP CVS 1.56.2.2
+ * Fri May 20 07:14:01 2005
+ * http://cvs.php.net/php-src/ext/standard/parsedate.y
+ *
+ * and patched from there
+ *
+ * 1.59 removed this from PHP CVS and replaced it with entirely new
+ * code written under the PHP license:
+ * http://viewcvs.php.net/viewcvs.cgi/php-src/ext/date/lib/
+ * That code is not used here and cannot be used.
+ *
+ * The old version is now in the CVS Attic:
+ * http://viewcvs.php.net/viewcvs.cgi/php-src/ext/standard/Attic/parsedate.y
+ */
+
+
+/*
+** Originally written by Steven M. Bellovin <smb@research.att.com> while
+** at the University of North Carolina at Chapel Hill. Later tweaked by
+** a couple of people on Usenet. Completely overhauled by Rich $alz
+** <rsalz@bbn.com> and Jim Berets <jberets@bbn.com> in August, 1990.
+**
+** This code is in the public domain and has no copyright.
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <time.h>
+#include <ctype.h>
+
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#if defined(_HPUX_SOURCE)
+#include <alloca.h>
+#endif
+
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
+# define IN_CTYPE_DOMAIN(c) 1
+#else
+# define IN_CTYPE_DOMAIN(c) isascii(c)
+#endif
+
+#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c))
+#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c))
+#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c))
+#define ISDIGIT_LOCALE(c) (IN_CTYPE_DOMAIN (c) && isdigit (c))
+
+/* ISDIGIT differs from ISDIGIT_LOCALE, as follows:
+ - Its arg may be any int or unsigned int; it need not be an unsigned char.
+ - It's guaranteed to evaluate its argument exactly once.
+ - It's typically faster.
+ Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
+ only '0' through '9' are digits. Prefer ISDIGIT to ISDIGIT_LOCALE unless
+ it's important to use the locale's definition of `digit' even when the
+ host does not conform to Posix. */
+#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
+
+#ifdef HAVE_STRING_H
+# include <string.h>
+#endif
+
+#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+# define __attribute__(x)
+#endif
+
+#ifndef ATTRIBUTE_UNUSED
+# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif
+
+/* Some old versions of bison generate parsers that use bcopy.
+ That loses on systems that don't provide the function, so we have
+ to redefine it here. */
+#if !defined (HAVE_BCOPY) && defined (HAVE_MEMCPY) && !defined (bcopy)
+# define bcopy(from, to, len) memcpy ((to), (from), (len))
+#endif
+
+/* Prototypes */
+static int raptor_parsedate_error(const char *msg);
+
+
+#define EPOCH 1970
+#define HOUR(x) ((x) * 60)
+
+#define MAX_BUFF_LEN 128 /* size of buffer to read the date into */
+
+/*
+** An entry in the lexical lookup table.
+*/
+typedef struct _TABLE {
+ const char *name;
+ int type;
+ int value;
+} TABLE;
+
+
+/*
+** Meridian: am, pm, or 24-hour style.
+*/
+typedef enum _MERIDIAN {
+ MERam, MERpm, MER24
+} MERIDIAN;
+
+struct date_yy {
+ const char *yyInput;
+ int yyDayOrdinal;
+ int yyDayNumber;
+ int yyHaveDate;
+ int yyHaveDay;
+ int yyHaveRel;
+ int yyHaveTime;
+ int yyHaveZone;
+ int yyTimezone;
+ int yyDay;
+ int yyHour;
+ int yyMinutes;
+ int yyMonth;
+ int yySeconds;
+ int yyYear;
+ MERIDIAN yyMeridian;
+ int yyRelDay;
+ int yyRelHour;
+ int yyRelMinutes;
+ int yyRelMonth;
+ int yyRelSeconds;
+ int yyRelYear;
+};
+
+typedef union _date_ll {
+ int Number;
+ enum _MERIDIAN Meridian;
+} date_ll;
+
+#define YYPARSE_PARAM parm
+#define YYLEX_PARAM parm
+#define YYSTYPE date_ll
+#define YYLTYPE void
+
+static int yylex (YYSTYPE *lvalp, void *parm);
+
+static int ToHour (int Hours, MERIDIAN Meridian);
+static int ToYear (int Year);
+static int LookupWord (YYSTYPE *lvalp, char *buff);
+
+
+
+/* Line 268 of yacc.c */
+#line 246 "parsedate.c"
+
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table. */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ tAGO = 258,
+ tDAY = 259,
+ tDAY_UNIT = 260,
+ tDAYZONE = 261,
+ tDST = 262,
+ tHOUR_UNIT = 263,
+ tID = 264,
+ tTZONE = 265,
+ tWZONE = 266,
+ tZZONE = 267,
+ tMERIDIAN = 268,
+ tMINUTE_UNIT = 269,
+ tMONTH = 270,
+ tMONTH_UNIT = 271,
+ tSEC_UNIT = 272,
+ tSNUMBER = 273,
+ tUNUMBER = 274,
+ tYEAR_UNIT = 275,
+ tZONE = 276
+ };
+#endif
+/* Tokens. */
+#define tAGO 258
+#define tDAY 259
+#define tDAY_UNIT 260
+#define tDAYZONE 261
+#define tDST 262
+#define tHOUR_UNIT 263
+#define tID 264
+#define tTZONE 265
+#define tWZONE 266
+#define tZZONE 267
+#define tMERIDIAN 268
+#define tMINUTE_UNIT 269
+#define tMONTH 270
+#define tMONTH_UNIT 271
+#define tSEC_UNIT 272
+#define tSNUMBER 273
+#define tUNUMBER 274
+#define tYEAR_UNIT 275
+#define tZONE 276
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+/* Copy the second part of user declarations. */
+
+
+/* Line 343 of yacc.c */
+#line 329 "parsedate.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int yyi)
+#else
+static int
+YYID (yyi)
+ int yyi;
+#endif
+{
+ return yyi;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+};
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+# define YYCOPY_NEEDED 1
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (YYID (0))
+
+#endif
+
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 2
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 110
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 26
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 22
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 77
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 100
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 276
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 24, 2, 22, 25, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 23, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const yytype_uint8 yyprhs[] =
+{
+ 0, 0, 3, 4, 7, 9, 11, 13, 15, 17,
+ 19, 21, 24, 26, 30, 34, 38, 42, 44, 46,
+ 48, 49, 52, 53, 55, 59, 63, 67, 69, 71,
+ 73, 75, 77, 80, 82, 85, 88, 92, 101, 107,
+ 109, 111, 115, 119, 122, 127, 130, 134, 138, 142,
+ 146, 149, 152, 155, 159, 161, 165, 168, 170, 173,
+ 176, 178, 181, 184, 186, 189, 192, 194, 197, 200,
+ 202, 205, 208, 210, 213, 216, 218, 220
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yytype_int8 yyrhs[] =
+{
+ 27, 0, -1, -1, 27, 28, -1, 29, -1, 37,
+ -1, 39, -1, 38, -1, 44, -1, 46, -1, 47,
+ -1, 19, 13, -1, 30, -1, 35, 32, 44, -1,
+ 36, 32, 44, -1, 35, 32, 31, -1, 36, 32,
+ 31, -1, 33, -1, 34, -1, 37, -1, -1, 22,
+ 19, -1, -1, 18, -1, 18, 23, 19, -1, 36,
+ 23, 19, -1, 19, 23, 19, -1, 10, -1, 11,
+ -1, 12, -1, 21, -1, 6, -1, 21, 7, -1,
+ 4, -1, 4, 24, -1, 19, 4, -1, 19, 25,
+ 19, -1, 15, 19, 19, 23, 19, 23, 19, 19,
+ -1, 19, 25, 19, 25, 19, -1, 41, -1, 40,
+ -1, 19, 15, 18, -1, 15, 19, 19, -1, 15,
+ 19, -1, 15, 19, 24, 19, -1, 19, 15, -1,
+ 19, 15, 19, -1, 41, 10, 43, -1, 19, 10,
+ 43, -1, 19, 18, 18, -1, 19, 18, -1, 19,
+ 42, -1, 11, 19, -1, 11, 19, 18, -1, 30,
+ -1, 19, 32, 31, -1, 45, 3, -1, 45, -1,
+ 19, 20, -1, 18, 20, -1, 20, -1, 19, 16,
+ -1, 18, 16, -1, 16, -1, 19, 5, -1, 18,
+ 5, -1, 5, -1, 19, 8, -1, 18, 8, -1,
+ 8, -1, 19, 14, -1, 18, 14, -1, 14, -1,
+ 19, 17, -1, 18, 17, -1, 17, -1, 19, -1,
+ 13, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const yytype_uint16 yyrline[] =
+{
+ 0, 182, 182, 183, 186, 189, 192, 195, 198, 201,
+ 202, 205, 211, 215, 218, 222, 225, 231, 234, 237,
+ 240, 243, 245, 248, 258, 264, 270, 286, 289, 292,
+ 295, 298, 301, 306, 310, 314, 320, 324, 335, 353,
+ 354, 357, 363, 368, 376, 381, 389, 396, 397, 416,
+ 422, 428, 440, 443, 449, 450, 475, 489, 492, 495,
+ 498, 501, 504, 507, 510, 513, 516, 519, 522, 525,
+ 528, 531, 534, 537, 540, 543, 548, 583
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "tAGO", "tDAY", "tDAY_UNIT", "tDAYZONE",
+ "tDST", "tHOUR_UNIT", "tID", "tTZONE", "tWZONE", "tZZONE", "tMERIDIAN",
+ "tMINUTE_UNIT", "tMONTH", "tMONTH_UNIT", "tSEC_UNIT", "tSNUMBER",
+ "tUNUMBER", "tYEAR_UNIT", "tZONE", "'.'", "':'", "','", "'/'", "$accept",
+ "spec", "item", "time", "iso8601time_colon", "iso8601zonepart",
+ "sec_fraction_part", "zonepart_numeric_without_colon",
+ "zonepart_numeric_with_colon", "HMStime_with_colon", "HMtime_with_colon",
+ "zone", "day", "date", "iso8601datetime", "iso8601date",
+ "iso8601weekspec", "iso8601time", "rel", "relunit", "number", "o_merid", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const yytype_uint16 yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 46, 58, 44, 47
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 26, 27, 27, 28, 28, 28, 28, 28, 28,
+ 28, 29, 29, 30, 30, 30, 30, 31, 31, 31,
+ 31, 32, 32, 33, 34, 35, 36, 37, 37, 37,
+ 37, 37, 37, 38, 38, 38, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 40, 40, 41,
+ 41, 41, 42, 42, 43, 43, 44, 44, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 46, 47
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 3, 3, 3, 3, 1, 1, 1,
+ 0, 2, 0, 1, 3, 3, 3, 1, 1, 1,
+ 1, 1, 2, 1, 2, 2, 3, 8, 5, 1,
+ 1, 3, 3, 2, 4, 2, 3, 3, 3, 3,
+ 2, 2, 2, 3, 1, 3, 2, 1, 2, 2,
+ 1, 2, 2, 1, 2, 2, 1, 2, 2, 1,
+ 2, 2, 1, 2, 2, 1, 1, 1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint8 yydefact[] =
+{
+ 2, 0, 1, 33, 66, 31, 69, 27, 28, 29,
+ 77, 72, 0, 63, 75, 0, 76, 60, 30, 3,
+ 4, 12, 22, 22, 5, 7, 6, 40, 39, 8,
+ 57, 9, 10, 34, 43, 65, 68, 71, 62, 74,
+ 59, 35, 64, 67, 0, 0, 11, 70, 45, 61,
+ 73, 50, 58, 0, 0, 51, 32, 0, 20, 0,
+ 20, 0, 56, 42, 0, 22, 54, 48, 52, 41,
+ 46, 49, 26, 36, 21, 23, 0, 15, 17, 18,
+ 19, 13, 25, 16, 14, 47, 0, 44, 20, 53,
+ 0, 0, 0, 23, 55, 38, 24, 0, 0, 37
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int8 yydefgoto[] =
+{
+ -1, 1, 19, 20, 66, 77, 58, 78, 79, 22,
+ 23, 80, 25, 26, 27, 28, 55, 67, 29, 30,
+ 31, 32
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -60
+static const yytype_int8 yypact[] =
+{
+ -60, 2, -60, -13, -60, -60, -60, -60, -60, -60,
+ -60, -60, 13, -60, -60, 69, 20, -60, 32, -60,
+ -60, -60, 29, 4, -60, -60, -60, -60, 44, -60,
+ 58, -60, -60, -60, -15, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, 46, 48, -60, -60, 28, -60,
+ -60, 37, -60, 56, 57, -60, -60, 59, 52, 61,
+ 52, 46, -60, 64, 62, 26, -60, -60, 66, -60,
+ -60, -60, -60, 68, -60, 36, 74, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, 76, -60, 86, -60,
+ 80, 81, 78, 79, -60, -60, -60, 84, 87, -60
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yytype_int8 yypgoto[] =
+{
+ -60, -60, -60, -60, 104, -59, -23, -60, -60, -60,
+ -60, 107, -60, -60, -60, -60, -60, 49, -55, -60,
+ -60, -60
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -1
+static const yytype_uint8 yytable[] =
+{
+ 60, 83, 2, 81, 63, 84, 3, 4, 5, 64,
+ 6, 33, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 41, 42, 57, 59, 43, 94,
+ 44, 45, 34, 46, 47, 48, 49, 50, 51, 56,
+ 52, 35, 88, 53, 36, 54, 69, 70, 57, 53,
+ 37, 57, 38, 39, 61, 71, 40, 4, 5, 91,
+ 6, 62, 7, 8, 9, 65, 11, 68, 13, 14,
+ 75, 76, 17, 18, 35, 72, 73, 36, 74, 42,
+ 82, 87, 43, 37, 89, 38, 39, 86, 47, 40,
+ 49, 50, 5, 90, 52, 92, 7, 8, 9, 95,
+ 96, 97, 91, 98, 93, 21, 99, 18, 24, 0,
+ 85
+};
+
+#define yypact_value_is_default(yystate) \
+ ((yystate) == (-60))
+
+#define yytable_value_is_error(yytable_value) \
+ YYID (0)
+
+static const yytype_int8 yycheck[] =
+{
+ 23, 60, 0, 58, 19, 60, 4, 5, 6, 24,
+ 8, 24, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 4, 5, 22, 23, 8, 88,
+ 10, 11, 19, 13, 14, 15, 16, 17, 18, 7,
+ 20, 5, 65, 23, 8, 25, 18, 19, 22, 23,
+ 14, 22, 16, 17, 10, 18, 20, 5, 6, 23,
+ 8, 3, 10, 11, 12, 19, 14, 19, 16, 17,
+ 18, 19, 20, 21, 5, 19, 19, 8, 19, 5,
+ 19, 19, 8, 14, 18, 16, 17, 23, 14, 20,
+ 16, 17, 6, 25, 20, 19, 10, 11, 12, 19,
+ 19, 23, 23, 19, 18, 1, 19, 21, 1, -1,
+ 61
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint8 yystos[] =
+{
+ 0, 27, 0, 4, 5, 6, 8, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 28,
+ 29, 30, 35, 36, 37, 38, 39, 40, 41, 44,
+ 45, 46, 47, 24, 19, 5, 8, 14, 16, 17,
+ 20, 4, 5, 8, 10, 11, 13, 14, 15, 16,
+ 17, 18, 20, 23, 25, 42, 7, 22, 32, 23,
+ 32, 10, 3, 19, 24, 19, 30, 43, 19, 18,
+ 19, 18, 19, 19, 19, 18, 19, 31, 33, 34,
+ 37, 44, 19, 31, 44, 43, 23, 19, 32, 18,
+ 25, 23, 19, 18, 31, 19, 19, 23, 19, 19
+};
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. However,
+ YYFAIL appears to be in use. Nevertheless, it is formally deprecated
+ in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+ discussed. */
+
+#define YYFAIL goto yyerrlab
+#if defined YYFAIL
+ /* This is here to suppress warnings from the GCC cpp's
+ -Wunused-macros. Normally we don't worry about that warning, but
+ some users do, and we want to make it easy for users to remove
+ YYFAIL uses, which will produce warnings from Bison 2.5. */
+#endif
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (0))
+
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (YYID (0))
+#endif
+
+
+/* This macro is provided for backward compatibility. */
+
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, YYLEX_PARAM)
+#else
+# define YYLEX yylex (&yylval)
+#endif
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+#else
+static void
+yy_stack_print (yybottom, yytop)
+ yytype_int16 *yybottom;
+ yytype_int16 *yytop;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+ YYSTYPE *yyvsp;
+ int yyrule;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
+ YYFPRINTF (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule); \
+} while (YYID (0))
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+#endif
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYSIZE_T yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
+
+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+{
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = 0;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ int yycount = 0;
+
+ /* There are many possibilities here to consider:
+ - Assume YYFAIL is not used. It's too flawed to consider. See
+ <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+ for details. YYERROR is fine as it does not invoke this
+ function.
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yytoken != YYEMPTY)
+ {
+ int yyn = yypact[*yyssp];
+ yyarg[yycount++] = yytname[yytoken];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
+
+ switch (yycount)
+ {
+# define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+ }
+
+ yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
+ }
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyformat += 2;
+ }
+ else
+ {
+ yyp++;
+ yyformat++;
+ }
+ }
+ return 0;
+}
+#endif /* YYERROR_VERBOSE */
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+ const char *yymsg;
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
+{
+ YYUSE (yyvaluep);
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ switch (yytype)
+ {
+
+ default:
+ break;
+ }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes. */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+/* The lookahead symbol. */
+int yychar;
+
+/* The semantic value of the lookahead symbol. */
+YYSTYPE yylval;
+
+ /* Number of syntax errors so far. */
+ int yynerrs;
+
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+
+ /* The stacks and their tools:
+ `yyss': related to states.
+ `yyvs': related to semantic values.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
+
+ YYSIZE_T yystacksize;
+
+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken;
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ yytoken = 0;
+ yyss = yyssa;
+ yyvs = yyvsa;
+ yystacksize = YYINITDEPTH;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+ yyssp = yyss;
+ yyvsp = yyvs;
+
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+ /* Do appropriate processing given the current state. Read a
+ lookahead token if we need one and don't already have one. */
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+ if (yypact_value_is_default (yyn))
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the lookahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 4:
+
+/* Line 1806 of yacc.c */
+#line 186 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyHaveTime++;
+ }
+ break;
+
+ case 5:
+
+/* Line 1806 of yacc.c */
+#line 189 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyHaveZone++;
+ }
+ break;
+
+ case 6:
+
+/* Line 1806 of yacc.c */
+#line 192 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyHaveDate++;
+ }
+ break;
+
+ case 7:
+
+/* Line 1806 of yacc.c */
+#line 195 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyHaveDay++;
+ }
+ break;
+
+ case 8:
+
+/* Line 1806 of yacc.c */
+#line 198 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyHaveRel++;
+ }
+ break;
+
+ case 11:
+
+/* Line 1806 of yacc.c */
+#line 205 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyHour = (yyvsp[(1) - (2)].Number);
+ ((struct date_yy *)parm)->yyMinutes = 0;
+ ((struct date_yy *)parm)->yySeconds = 0;
+ ((struct date_yy *)parm)->yyMeridian = (yyvsp[(2) - (2)].Meridian);
+ }
+ break;
+
+ case 13:
+
+/* Line 1806 of yacc.c */
+#line 215 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyMeridian = MER24;
+ }
+ break;
+
+ case 14:
+
+/* Line 1806 of yacc.c */
+#line 218 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyMeridian = MER24;
+ ((struct date_yy *)parm)->yySeconds = 0;
+ }
+ break;
+
+ case 15:
+
+/* Line 1806 of yacc.c */
+#line 222 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyMeridian = MER24;
+ }
+ break;
+
+ case 16:
+
+/* Line 1806 of yacc.c */
+#line 225 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyMeridian = MER24;
+ ((struct date_yy *)parm)->yySeconds = 0;
+ }
+ break;
+
+ case 17:
+
+/* Line 1806 of yacc.c */
+#line 231 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyHaveZone++;
+ }
+ break;
+
+ case 18:
+
+/* Line 1806 of yacc.c */
+#line 234 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyHaveZone++;
+ }
+ break;
+
+ case 19:
+
+/* Line 1806 of yacc.c */
+#line 237 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyHaveZone++;
+ }
+ break;
+
+ case 21:
+
+/* Line 1806 of yacc.c */
+#line 243 "./parsedate.y"
+ {
+ }
+ break;
+
+ case 23:
+
+/* Line 1806 of yacc.c */
+#line 248 "./parsedate.y"
+ {
+ /* format: [+-]hhmm */
+ if((yyvsp[(1) - (1)].Number) <= -100 || (yyvsp[(1) - (1)].Number) >= 100) {
+ ((struct date_yy *)parm)->yyTimezone = (-(yyvsp[(1) - (1)].Number) / 100) * 60 + (-(yyvsp[(1) - (1)].Number) % 100);
+ } else if((yyvsp[(1) - (1)].Number) >= -99 || (yyvsp[(1) - (1)].Number) <= 99) {
+ ((struct date_yy *)parm)->yyTimezone = -(yyvsp[(1) - (1)].Number) * 60;
+ }
+ }
+ break;
+
+ case 24:
+
+/* Line 1806 of yacc.c */
+#line 258 "./parsedate.y"
+ {
+ /* format: [+-]hh:mm */
+ ((struct date_yy *)parm)->yyTimezone = -(yyvsp[(1) - (3)].Number) * 60 + ((yyvsp[(1) - (3)].Number) > 0 ? -(yyvsp[(3) - (3)].Number): (yyvsp[(3) - (3)].Number));
+ }
+ break;
+
+ case 25:
+
+/* Line 1806 of yacc.c */
+#line 264 "./parsedate.y"
+ {
+ /* format: hh:mm:ss */
+ ((struct date_yy *)parm)->yySeconds = (yyvsp[(3) - (3)].Number);
+ }
+ break;
+
+ case 26:
+
+/* Line 1806 of yacc.c */
+#line 270 "./parsedate.y"
+ {
+ /* format: hh:mm */
+ ((struct date_yy *)parm)->yyHour = (yyvsp[(1) - (3)].Number);
+ ((struct date_yy *)parm)->yyMinutes = (yyvsp[(3) - (3)].Number);
+ }
+ break;
+
+ case 27:
+
+/* Line 1806 of yacc.c */
+#line 286 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyTimezone = (yyvsp[(1) - (1)].Number);
+ }
+ break;
+
+ case 28:
+
+/* Line 1806 of yacc.c */
+#line 289 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyTimezone = (yyvsp[(1) - (1)].Number);
+ }
+ break;
+
+ case 29:
+
+/* Line 1806 of yacc.c */
+#line 292 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyTimezone = (yyvsp[(1) - (1)].Number);
+ }
+ break;
+
+ case 30:
+
+/* Line 1806 of yacc.c */
+#line 295 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyTimezone = (yyvsp[(1) - (1)].Number);
+ }
+ break;
+
+ case 31:
+
+/* Line 1806 of yacc.c */
+#line 298 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyTimezone = (yyvsp[(1) - (1)].Number) - 60;
+ }
+ break;
+
+ case 32:
+
+/* Line 1806 of yacc.c */
+#line 301 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyTimezone = (yyvsp[(1) - (2)].Number) - 60;
+ }
+ break;
+
+ case 33:
+
+/* Line 1806 of yacc.c */
+#line 306 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyDayOrdinal = 1;
+ ((struct date_yy *)parm)->yyDayNumber = (yyvsp[(1) - (1)].Number);
+ }
+ break;
+
+ case 34:
+
+/* Line 1806 of yacc.c */
+#line 310 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyDayOrdinal = 1;
+ ((struct date_yy *)parm)->yyDayNumber = (yyvsp[(1) - (2)].Number);
+ }
+ break;
+
+ case 35:
+
+/* Line 1806 of yacc.c */
+#line 314 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyDayOrdinal = (yyvsp[(1) - (2)].Number);
+ ((struct date_yy *)parm)->yyDayNumber = (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 36:
+
+/* Line 1806 of yacc.c */
+#line 320 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyMonth = (yyvsp[(1) - (3)].Number);
+ ((struct date_yy *)parm)->yyDay = (yyvsp[(3) - (3)].Number);
+ }
+ break;
+
+ case 37:
+
+/* Line 1806 of yacc.c */
+#line 324 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(8) - (8)].Number);
+ ((struct date_yy *)parm)->yyMonth = (yyvsp[(1) - (8)].Number);
+ ((struct date_yy *)parm)->yyDay = (yyvsp[(2) - (8)].Number);
+
+ ((struct date_yy *)parm)->yyHour = (yyvsp[(3) - (8)].Number);
+ ((struct date_yy *)parm)->yyMinutes = (yyvsp[(5) - (8)].Number);
+ ((struct date_yy *)parm)->yySeconds = (yyvsp[(7) - (8)].Number);
+
+ ((struct date_yy *)parm)->yyHaveTime = 1;
+ }
+ break;
+
+ case 38:
+
+/* Line 1806 of yacc.c */
+#line 335 "./parsedate.y"
+ {
+ /* Interpret as YYYY/MM/DD if $1 >= 1000, otherwise as MM/DD/YY.
+ The goal in recognizing YYYY/MM/DD is solely to support legacy
+ machine-generated dates like those in an RCS log listing. If
+ you want portability, use the ISO 8601 format. */
+ if((yyvsp[(1) - (5)].Number) >= 1000)
+ {
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(1) - (5)].Number);
+ ((struct date_yy *)parm)->yyMonth = (yyvsp[(3) - (5)].Number);
+ ((struct date_yy *)parm)->yyDay = (yyvsp[(5) - (5)].Number);
+ }
+ else
+ {
+ ((struct date_yy *)parm)->yyMonth = (yyvsp[(1) - (5)].Number);
+ ((struct date_yy *)parm)->yyDay = (yyvsp[(3) - (5)].Number);
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(5) - (5)].Number);
+ }
+ }
+ break;
+
+ case 40:
+
+/* Line 1806 of yacc.c */
+#line 354 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyHaveTime++;
+ }
+ break;
+
+ case 41:
+
+/* Line 1806 of yacc.c */
+#line 357 "./parsedate.y"
+ {
+ /* e.g. 17-JUN-1992. */
+ ((struct date_yy *)parm)->yyDay = (yyvsp[(1) - (3)].Number);
+ ((struct date_yy *)parm)->yyMonth = (yyvsp[(2) - (3)].Number);
+ ((struct date_yy *)parm)->yyYear = -(yyvsp[(3) - (3)].Number);
+ }
+ break;
+
+ case 42:
+
+/* Line 1806 of yacc.c */
+#line 363 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyMonth = (yyvsp[(1) - (3)].Number);
+ ((struct date_yy *)parm)->yyDay = (yyvsp[(2) - (3)].Number);
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(3) - (3)].Number);
+ }
+ break;
+
+ case 43:
+
+/* Line 1806 of yacc.c */
+#line 368 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyMonth = (yyvsp[(1) - (2)].Number);
+ if((yyvsp[(2) - (2)].Number) > 1000) {
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(2) - (2)].Number);
+ } else {
+ ((struct date_yy *)parm)->yyDay = (yyvsp[(2) - (2)].Number);
+ }
+ }
+ break;
+
+ case 44:
+
+/* Line 1806 of yacc.c */
+#line 376 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyMonth = (yyvsp[(1) - (4)].Number);
+ ((struct date_yy *)parm)->yyDay = (yyvsp[(2) - (4)].Number);
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(4) - (4)].Number);
+ }
+ break;
+
+ case 45:
+
+/* Line 1806 of yacc.c */
+#line 381 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyMonth = (yyvsp[(2) - (2)].Number);
+ if((yyvsp[(1) - (2)].Number) > 1000) {
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(1) - (2)].Number);
+ } else {
+ ((struct date_yy *)parm)->yyDay = (yyvsp[(1) - (2)].Number);
+ }
+ }
+ break;
+
+ case 46:
+
+/* Line 1806 of yacc.c */
+#line 389 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyMonth = (yyvsp[(2) - (3)].Number);
+ ((struct date_yy *)parm)->yyDay = (yyvsp[(1) - (3)].Number);
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(3) - (3)].Number);
+ }
+ break;
+
+ case 48:
+
+/* Line 1806 of yacc.c */
+#line 397 "./parsedate.y"
+ {
+ int i = (yyvsp[(1) - (3)].Number);
+
+ if(i >= 10000) {
+ /* format: yyyymmdd */
+ ((struct date_yy *)parm)->yyYear = i / 10000;
+ i %= 10000;
+ ((struct date_yy *)parm)->yyMonth = i / 100;
+ i %= 100;
+ ((struct date_yy *)parm)->yyDay = i;
+ } else if(i >= 1000 && i <= 9999) {
+ /* format: yyyy */
+ ((struct date_yy *)parm)->yyYear = i;
+ ((struct date_yy *)parm)->yyDay= 1;
+ ((struct date_yy *)parm)->yyMonth = 1;
+ }
+ }
+ break;
+
+ case 49:
+
+/* Line 1806 of yacc.c */
+#line 416 "./parsedate.y"
+ {
+ /* ISO 8601 format. yyyy-mm-dd. */
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(1) - (3)].Number);
+ ((struct date_yy *)parm)->yyMonth = -(yyvsp[(2) - (3)].Number);
+ ((struct date_yy *)parm)->yyDay = -(yyvsp[(3) - (3)].Number);
+ }
+ break;
+
+ case 50:
+
+/* Line 1806 of yacc.c */
+#line 422 "./parsedate.y"
+ {
+ /* ISO 8601 format yyyy-mm */
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(1) - (2)].Number);
+ ((struct date_yy *)parm)->yyMonth = -(yyvsp[(2) - (2)].Number);
+ ((struct date_yy *)parm)->yyDay = 1;
+ }
+ break;
+
+ case 51:
+
+/* Line 1806 of yacc.c */
+#line 428 "./parsedate.y"
+ {
+ const int om = (1 + 9) % 12; /* offset month */
+ const int oy = (yyvsp[(1) - (2)].Number) - 1; /* offset year */
+
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(1) - (2)].Number);
+ ((struct date_yy *)parm)->yyMonth = 1;
+ /* Zeller's formula */
+ ((struct date_yy *)parm)->yyDay -= ((13 * om + 12) / 5 +
+ oy + oy / 4 + oy / 400 - oy / 100) % 7 - 1;
+ }
+ break;
+
+ case 52:
+
+/* Line 1806 of yacc.c */
+#line 440 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyDay = ((yyvsp[(2) - (2)].Number) / 10) * 7 + ((yyvsp[(2) - (2)].Number) % 10) - 8;
+ }
+ break;
+
+ case 53:
+
+/* Line 1806 of yacc.c */
+#line 443 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyDay = (yyvsp[(2) - (3)].Number) * 7 - (yyvsp[(3) - (3)].Number) - 8;
+ }
+ break;
+
+ case 55:
+
+/* Line 1806 of yacc.c */
+#line 450 "./parsedate.y"
+ {
+ int i = (yyvsp[(1) - (3)].Number);
+
+ if(i <= -100000 || i >= 100000) {
+ ((struct date_yy *)parm)->yyHour = i / 10000;
+ i %= 10000;
+ ((struct date_yy *)parm)->yyMinutes = i / 100;
+ i %= 100;
+ ((struct date_yy *)parm)->yySeconds = i;
+ } else if(i <= -1000 || i >= 1000) {
+ ((struct date_yy *)parm)->yyHour = i / 100;
+ i %= 100;
+ ((struct date_yy *)parm)->yyMinutes = i;
+ ((struct date_yy *)parm)->yySeconds = 0;
+ } else if(i >= -99 || i <= 99) {
+ ((struct date_yy *)parm)->yyHour = (yyvsp[(1) - (3)].Number);
+ ((struct date_yy *)parm)->yyMinutes = 0;
+ ((struct date_yy *)parm)->yySeconds = 0;
+ } else {
+ ((struct date_yy *)parm)->yyHaveTime = 0;
+ }
+ ((struct date_yy *)parm)->yyMeridian = MER24;
+ }
+ break;
+
+ case 56:
+
+/* Line 1806 of yacc.c */
+#line 475 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelSeconds =
+ -((struct date_yy *)parm)->yyRelSeconds;
+ ((struct date_yy *)parm)->yyRelMinutes =
+ -((struct date_yy *)parm)->yyRelMinutes;
+ ((struct date_yy *)parm)->yyRelHour =
+ -((struct date_yy *)parm)->yyRelHour;
+ ((struct date_yy *)parm)->yyRelDay =
+ -((struct date_yy *)parm)->yyRelDay;
+ ((struct date_yy *)parm)->yyRelMonth =
+ -((struct date_yy *)parm)->yyRelMonth;
+ ((struct date_yy *)parm)->yyRelYear =
+ -((struct date_yy *)parm)->yyRelYear;
+ }
+ break;
+
+ case 58:
+
+/* Line 1806 of yacc.c */
+#line 492 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelYear += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 59:
+
+/* Line 1806 of yacc.c */
+#line 495 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelYear += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 60:
+
+/* Line 1806 of yacc.c */
+#line 498 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelYear += (yyvsp[(1) - (1)].Number);
+ }
+ break;
+
+ case 61:
+
+/* Line 1806 of yacc.c */
+#line 501 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelMonth += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 62:
+
+/* Line 1806 of yacc.c */
+#line 504 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelMonth += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 63:
+
+/* Line 1806 of yacc.c */
+#line 507 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelMonth += (yyvsp[(1) - (1)].Number);
+ }
+ break;
+
+ case 64:
+
+/* Line 1806 of yacc.c */
+#line 510 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelDay += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 65:
+
+/* Line 1806 of yacc.c */
+#line 513 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelDay += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 66:
+
+/* Line 1806 of yacc.c */
+#line 516 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelDay += (yyvsp[(1) - (1)].Number);
+ }
+ break;
+
+ case 67:
+
+/* Line 1806 of yacc.c */
+#line 519 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelHour += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 68:
+
+/* Line 1806 of yacc.c */
+#line 522 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelHour += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 69:
+
+/* Line 1806 of yacc.c */
+#line 525 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelHour += (yyvsp[(1) - (1)].Number);
+ }
+ break;
+
+ case 70:
+
+/* Line 1806 of yacc.c */
+#line 528 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelMinutes += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 71:
+
+/* Line 1806 of yacc.c */
+#line 531 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelMinutes += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 72:
+
+/* Line 1806 of yacc.c */
+#line 534 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelMinutes += (yyvsp[(1) - (1)].Number);
+ }
+ break;
+
+ case 73:
+
+/* Line 1806 of yacc.c */
+#line 537 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelSeconds += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 74:
+
+/* Line 1806 of yacc.c */
+#line 540 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelSeconds += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);
+ }
+ break;
+
+ case 75:
+
+/* Line 1806 of yacc.c */
+#line 543 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyRelSeconds += (yyvsp[(1) - (1)].Number);
+ }
+ break;
+
+ case 76:
+
+/* Line 1806 of yacc.c */
+#line 549 "./parsedate.y"
+ {
+ if(((struct date_yy *)parm)->yyHaveTime &&
+ ((struct date_yy *)parm)->yyHaveDate &&
+ !((struct date_yy *)parm)->yyHaveRel)
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(1) - (1)].Number);
+ else
+ {
+ if((yyvsp[(1) - (1)].Number) > 10000)
+ {
+ ((struct date_yy *)parm)->yyHaveDate++;
+ ((struct date_yy *)parm)->yyDay= ((yyvsp[(1) - (1)].Number))%100;
+ ((struct date_yy *)parm)->yyMonth= ((yyvsp[(1) - (1)].Number)/100)%100;
+ ((struct date_yy *)parm)->yyYear = (yyvsp[(1) - (1)].Number)/10000;
+ }
+ else
+ {
+ ((struct date_yy *)parm)->yyHaveTime++;
+ if((yyvsp[(1) - (1)].Number) < 100)
+ {
+ ((struct date_yy *)parm)->yyHour = (yyvsp[(1) - (1)].Number);
+ ((struct date_yy *)parm)->yyMinutes = 0;
+ }
+ else
+ {
+ ((struct date_yy *)parm)->yyHour = (yyvsp[(1) - (1)].Number) / 100;
+ ((struct date_yy *)parm)->yyMinutes = (yyvsp[(1) - (1)].Number) % 100;
+ }
+ ((struct date_yy *)parm)->yySeconds = 0;
+ ((struct date_yy *)parm)->yyMeridian = MER24;
+ }
+ }
+ }
+ break;
+
+ case 77:
+
+/* Line 1806 of yacc.c */
+#line 584 "./parsedate.y"
+ {
+ ((struct date_yy *)parm)->yyMeridian = (yyvsp[(1) - (1)].Meridian);
+ }
+ break;
+
+
+
+/* Line 1806 of yacc.c */
+#line 2382 "parsedate.c"
+ default: break;
+ }
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if ! YYERROR_VERBOSE
+ yyerror (YY_("syntax error"));
+#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
+ {
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == 1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ if (!yymsg)
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = 2;
+ }
+ else
+ {
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ yymsgp = yymsg;
+ }
+ }
+ yyerror (yymsgp);
+ if (yysyntax_error_status == 2)
+ goto yyexhaustedlab;
+ }
+# undef YYSYNTAX_ERROR
+#endif
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval);
+ yychar = YYEMPTY;
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (!yypact_value_is_default (yyn))
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ *++yyvsp = yylval;
+
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#if !defined(yyoverflow) || YYERROR_VERBOSE
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+ if (yychar != YYEMPTY)
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ }
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+
+
+/* Line 2067 of yacc.c */
+#line 589 "./parsedate.y"
+
+
+time_t get_date (char *p, time_t *now);
+
+/* Month and day table. */
+static TABLE const MonthDayTable[] = {
+ { "january", tMONTH, 1 },
+ { "february", tMONTH, 2 },
+ { "march", tMONTH, 3 },
+ { "april", tMONTH, 4 },
+ { "may", tMONTH, 5 },
+ { "june", tMONTH, 6 },
+ { "july", tMONTH, 7 },
+ { "august", tMONTH, 8 },
+ { "september", tMONTH, 9 },
+ { "sept", tMONTH, 9 },
+ { "october", tMONTH, 10 },
+ { "november", tMONTH, 11 },
+ { "december", tMONTH, 12 },
+ { "sunday", tDAY, 0 },
+ { "monday", tDAY, 1 },
+ { "tuesday", tDAY, 2 },
+ { "tues", tDAY, 2 },
+ { "wednesday", tDAY, 3 },
+ { "wednes", tDAY, 3 },
+ { "thursday", tDAY, 4 },
+ { "thur", tDAY, 4 },
+ { "thurs", tDAY, 4 },
+ { "friday", tDAY, 5 },
+ { "saturday", tDAY, 6 },
+ { NULL, 0, 0 }
+};
+
+/* Time units table. */
+static TABLE const UnitsTable[] = {
+ { "year", tYEAR_UNIT, 1 },
+ { "month", tMONTH_UNIT, 1 },
+ { "fortnight", tDAY_UNIT, 14 },
+ { "week", tDAY_UNIT, 7 },
+ { "day", tDAY_UNIT, 1 },
+ { "hour", tHOUR_UNIT, 1 },
+ { "minute", tMINUTE_UNIT, 1 },
+ { "min", tMINUTE_UNIT, 1 },
+ { "second", tSEC_UNIT, 1 },
+ { "sec", tSEC_UNIT, 1 },
+ { NULL, 0, 0 }
+};
+
+/* Assorted relative-time words. */
+static TABLE const OtherTable[] = {
+ { "tomorrow", tDAY_UNIT, 1 },
+ { "yesterday", tDAY_UNIT, -1 },
+ { "today", tDAY_UNIT, 0 },
+ { "now", tDAY_UNIT, 0 },
+ { "last", tUNUMBER, -1 },
+ { "this", tUNUMBER, 0 },
+ { "next", tUNUMBER, 1 },
+ { "first", tUNUMBER, 1 },
+/* { "second", tUNUMBER, 2 }, */
+ { "third", tUNUMBER, 3 },
+ { "fourth", tUNUMBER, 4 },
+ { "fifth", tUNUMBER, 5 },
+ { "sixth", tUNUMBER, 6 },
+ { "seventh", tUNUMBER, 7 },
+ { "eighth", tUNUMBER, 8 },
+ { "ninth", tUNUMBER, 9 },
+ { "tenth", tUNUMBER, 10 },
+ { "eleventh", tUNUMBER, 11 },
+ { "twelfth", tUNUMBER, 12 },
+ { "ago", tAGO, 1 },
+ { NULL, 0, 0 }
+};
+
+/* The timezone table. */
+static TABLE const TimezoneTable[] = {
+ { "gmt", tZONE, HOUR ( 0) }, /* Greenwich Mean */
+ { "ut", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */
+ { "utc", tZONE, HOUR ( 0) },
+ { "wet", tZONE, HOUR ( 0) }, /* Western European */
+ { "bst", tDAYZONE, HOUR ( 0) }, /* British Summer */
+ { "wat", tZONE, HOUR ( 1) }, /* West Africa */
+ { "at", tZONE, HOUR ( 2) }, /* Azores */
+#if 0
+ /* For completeness. BST is also British Summer, and GST is
+ * also Guam Standard. */
+ { "bst", tZONE, HOUR ( 3) }, /* Brazil Standard */
+ { "gst", tZONE, HOUR ( 3) }, /* Greenland Standard */
+#endif
+#if 0
+ { "nft", tZONE, HOUR (3.5) }, /* Newfoundland */
+ { "nst", tZONE, HOUR (3.5) }, /* Newfoundland Standard */
+ { "ndt", tDAYZONE, HOUR (3.5) }, /* Newfoundland Daylight */
+#endif
+ { "ast", tZONE, HOUR ( 4) }, /* Atlantic Standard */
+ { "adt", tDAYZONE, HOUR ( 4) }, /* Atlantic Daylight */
+ { "est", tZONE, HOUR ( 5) }, /* Eastern Standard */
+ { "edt", tDAYZONE, HOUR ( 5) }, /* Eastern Daylight */
+ { "cst", tZONE, HOUR ( 6) }, /* Central Standard */
+ { "cdt", tDAYZONE, HOUR ( 6) }, /* Central Daylight */
+ { "mst", tZONE, HOUR ( 7) }, /* Mountain Standard */
+ { "mdt", tDAYZONE, HOUR ( 7) }, /* Mountain Daylight */
+ { "pst", tZONE, HOUR ( 8) }, /* Pacific Standard */
+ { "pdt", tDAYZONE, HOUR ( 8) }, /* Pacific Daylight */
+ { "yst", tZONE, HOUR ( 9) }, /* Yukon Standard */
+ { "ydt", tDAYZONE, HOUR ( 9) }, /* Yukon Daylight */
+ { "hst", tZONE, HOUR (10) }, /* Hawaii Standard */
+ { "hdt", tDAYZONE, HOUR (10) }, /* Hawaii Daylight */
+ { "cat", tZONE, HOUR (10) }, /* Central Alaska */
+ { "akst", tZONE, HOUR (10) }, /* Alaska Standard */
+ { "akdt", tZONE, HOUR (10) }, /* Alaska Daylight */
+ { "ahst", tZONE, HOUR (10) }, /* Alaska-Hawaii Standard */
+ { "nt", tZONE, HOUR (11) }, /* Nome */
+ { "idlw", tZONE, HOUR (12) }, /* International Date Line West */
+ { "cet", tZONE, -HOUR (1) }, /* Central European */
+ { "cest", tDAYZONE, -HOUR (1) }, /* Central European Summer */
+ { "met", tZONE, -HOUR (1) }, /* Middle European */
+ { "mewt", tZONE, -HOUR (1) }, /* Middle European Winter */
+ { "mest", tDAYZONE, -HOUR (1) }, /* Middle European Summer */
+ { "mesz", tDAYZONE, -HOUR (1) }, /* Middle European Summer */
+ { "swt", tZONE, -HOUR (1) }, /* Swedish Winter */
+ { "sst", tDAYZONE, -HOUR (1) }, /* Swedish Summer */
+ { "fwt", tZONE, -HOUR (1) }, /* French Winter */
+ { "fst", tDAYZONE, -HOUR (1) }, /* French Summer */
+ { "eet", tZONE, -HOUR (2) }, /* Eastern Europe, USSR Zone 1 */
+ { "bt", tZONE, -HOUR (3) }, /* Baghdad, USSR Zone 2 */
+#if 0
+ { "it", tZONE, -HOUR (3.5) },/* Iran */
+#endif
+ { "zp4", tZONE, -HOUR (4) }, /* USSR Zone 3 */
+ { "zp5", tZONE, -HOUR (5) }, /* USSR Zone 4 */
+#if 0
+ { "ist", tZONE, -HOUR (5.5) },/* Indian Standard */
+#endif
+ { "zp6", tZONE, -HOUR (6) }, /* USSR Zone 5 */
+#if 0
+ /* For completeness. NST is also Newfoundland Standard, and SST is
+ * also Swedish Summer. */
+ { "nst", tZONE, -HOUR (6.5) },/* North Sumatra */
+ { "sst", tZONE, -HOUR (7) }, /* South Sumatra, USSR Zone 6 */
+#endif /* 0 */
+ { "wast", tZONE, -HOUR (7) }, /* West Australian Standard */
+ { "wadt", tDAYZONE, -HOUR (7) }, /* West Australian Daylight */
+#if 0
+ { "jt", tZONE, -HOUR (7.5) },/* Java (3pm in Cronusland!) */
+#endif
+ { "cct", tZONE, -HOUR (8) }, /* China Coast, USSR Zone 7 */
+ { "jst", tZONE, -HOUR (9) }, /* Japan Standard, USSR Zone 8 */
+#if 0
+ { "cast", tZONE, -HOUR (9.5) },/* Central Australian Standard */
+ { "cadt", tDAYZONE, -HOUR (9.5) },/* Central Australian Daylight */
+#endif
+ { "east", tZONE, -HOUR (10) }, /* Eastern Australian Standard */
+ { "eadt", tDAYZONE, -HOUR (10) }, /* Eastern Australian Daylight */
+ { "gst", tZONE, -HOUR (10) }, /* Guam Standard, USSR Zone 9 */
+ { "nzt", tZONE, -HOUR (12) }, /* New Zealand */
+ { "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */
+ { "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */
+ { "idle", tZONE, -HOUR (12) }, /* International Date Line East */
+ { NULL, 0, 0 }
+};
+
+/* Military timezone table. */
+static TABLE const MilitaryTable[] = {
+ { "a", tZONE, HOUR (- 1) },
+ { "b", tZONE, HOUR (- 2) },
+ { "c", tZONE, HOUR (- 3) },
+ { "d", tZONE, HOUR (- 4) },
+ { "e", tZONE, HOUR (- 5) },
+ { "f", tZONE, HOUR (- 6) },
+ { "g", tZONE, HOUR (- 7) },
+ { "h", tZONE, HOUR (- 8) },
+ { "i", tZONE, HOUR (- 9) },
+ { "k", tZONE, HOUR (-10) },
+ { "l", tZONE, HOUR (-11) },
+ { "m", tZONE, HOUR (-12) },
+ { "n", tZONE, HOUR ( 1) },
+ { "o", tZONE, HOUR ( 2) },
+ { "p", tZONE, HOUR ( 3) },
+ { "q", tZONE, HOUR ( 4) },
+ { "r", tZONE, HOUR ( 5) },
+ { "s", tZONE, HOUR ( 6) },
+ { "t", tTZONE, HOUR ( 7) },
+ { "u", tZONE, HOUR ( 8) },
+ { "v", tZONE, HOUR ( 9) },
+ { "w", tWZONE, HOUR ( 10) },
+ { "x", tZONE, HOUR ( 11) },
+ { "y", tZONE, HOUR ( 12) },
+ { "z", tZZONE, HOUR ( 0) },
+ { NULL, 0, 0 }
+};
+
+
+
+
+/* ARGSUSED */
+static int
+yyerror(const char *s)
+{
+ return 0;
+}
+
+static int
+ToHour(int Hours, MERIDIAN Meridian)
+{
+ switch (Meridian)
+ {
+ case MER24:
+ if(Hours < 0 || Hours > 23)
+ return -1;
+ return Hours;
+ case MERam:
+ if(Hours < 1 || Hours > 12)
+ return -1;
+ if(Hours == 12)
+ Hours = 0;
+ return Hours;
+ case MERpm:
+ if(Hours < 1 || Hours > 12)
+ return -1;
+ if(Hours == 12)
+ Hours = 0;
+ return Hours + 12;
+ default:
+#ifdef RAPTOR_DEBUG
+ fprintf(stderr, "%s:%d:%s: UNKNOWN Meridian %d - add a new case",
+ __FILE__, __LINE__, __func__, (int)Meridian);
+#endif
+ return -1;
+ }
+ /* NOTREACHED */
+}
+
+static int
+ToYear(int Year)
+{
+ if(Year < 0)
+ Year = -Year;
+
+ /* XPG4 suggests that years 00-68 map to 2000-2068, and
+ years 69-99 map to 1969-1999. */
+ if(Year < 69)
+ Year += 2000;
+ else if(Year < 100)
+ Year += 1900;
+
+ return Year;
+}
+
+static int
+LookupWord (YYSTYPE *lvalp, char *buff)
+{
+ char *p;
+ char *q;
+ const TABLE *tp;
+ int i;
+ int abbrev;
+
+ /* Make it lowercase. */
+ for(p = buff; *p; p++)
+ if(ISUPPER ((unsigned char) *p))
+ *p = tolower (*p);
+
+ if(strcmp (buff, "am") == 0 || strcmp (buff, "a.m.") == 0)
+ {
+ lvalp->Meridian = MERam;
+ return tMERIDIAN;
+ }
+ if(strcmp (buff, "pm") == 0 || strcmp (buff, "p.m.") == 0)
+ {
+ lvalp->Meridian = MERpm;
+ return tMERIDIAN;
+ }
+
+ /* See if we have an abbreviation for a month. */
+ if(strlen (buff) == 3)
+ abbrev = 1;
+ else if(strlen (buff) == 4 && buff[3] == '.')
+ {
+ abbrev = 1;
+ buff[3] = '\0';
+ }
+ else
+ abbrev = 0;
+
+ for(tp = MonthDayTable; tp->name; tp++)
+ {
+ if(abbrev)
+ {
+ if(strncmp (buff, tp->name, 3) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+ }
+ else if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+ }
+
+ for(tp = TimezoneTable; tp->name; tp++)
+ if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+
+ if(strcmp (buff, "dst") == 0)
+ return tDST;
+
+ for(tp = UnitsTable; tp->name; tp++)
+ if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+
+ /* Strip off any plural and try the units table again. */
+ i = RAPTOR_BAD_CAST(int, strlen(buff)) - 1;
+ if(buff[i] == 's')
+ {
+ buff[i] = '\0';
+ for(tp = UnitsTable; tp->name; tp++)
+ if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+ buff[i] = 's'; /* Put back for "this" in OtherTable. */
+ }
+
+ for(tp = OtherTable; tp->name; tp++)
+ if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+
+ /* Military timezones. */
+ if(buff[1] == '\0' && ISALPHA ((unsigned char) *buff))
+ {
+ for(tp = MilitaryTable; tp->name; tp++)
+ if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+ }
+
+ /* Drop out any periods and try the timezone table again. */
+ for(i = 0, p = q = buff; *q; q++)
+ if(*q != '.')
+ *p++ = *q;
+ else
+ i++;
+ *p = '\0';
+ if(i)
+ for(tp = TimezoneTable; tp->name; tp++)
+ if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+
+ return tID;
+}
+
+int yylex(YYSTYPE *lvalp, void *parm)
+{
+ unsigned char c;
+ char *p;
+ char buff[20];
+ int Count;
+ int sign;
+ struct date_yy * date = (struct date_yy *)parm;
+
+ for(;;)
+ {
+ while(ISSPACE ((unsigned char) *date->yyInput))
+ date->yyInput++;
+
+ if(ISDIGIT (c = *date->yyInput) || c == '-' || c == '+')
+ {
+ if(c == '-' || c == '+')
+ {
+ sign = c == '-' ? -1 : 1;
+ if(!ISDIGIT (*++date->yyInput))
+ /* skip the '-' sign */
+ continue;
+ }
+ else
+ sign = 0;
+ for(lvalp->Number = 0; ISDIGIT (c = *date->yyInput++);)
+ lvalp->Number = 10 * lvalp->Number + c - '0';
+ date->yyInput--;
+ if(sign < 0)
+ lvalp->Number = -lvalp->Number;
+ /* Ignore ordinal suffixes on numbers */
+ c = *date->yyInput;
+ if(c == 's' || c == 'n' || c == 'r' || c == 't') {
+ c = *++date->yyInput;
+ if(c == 't' || c == 'd' || c == 'h') {
+ date->yyInput++;
+ } else {
+ date->yyInput--;
+ }
+ }
+ return sign ? tSNUMBER : tUNUMBER;
+ }
+ if(ISALPHA (c))
+ {
+ for(p = buff; (c = *date->yyInput++, ISALPHA (c)) || c == '.';)
+ if(p < &buff[sizeof buff - 1])
+ *p++ = c;
+ *p = '\0';
+ date->yyInput--;
+ return LookupWord (lvalp, buff);
+ }
+ if(c != '(')
+ return *date->yyInput++;
+ Count = 0;
+ do
+ {
+ c = *date->yyInput++;
+ if(c == '\0')
+ return c;
+ if(c == '(')
+ Count++;
+ else if(c == ')')
+ Count--;
+ }
+ while(Count > 0);
+ }
+}
+
+#define TM_YEAR_ORIGIN 1900
+
+/* Yield A - B, measured in seconds. */
+static long
+difftm (struct tm *a, struct tm *b)
+{
+ int ay = a->tm_year + (TM_YEAR_ORIGIN - 1);
+ int by = b->tm_year + (TM_YEAR_ORIGIN - 1);
+ long days = (
+ /* difference in day of year */
+ a->tm_yday - b->tm_yday
+ /* + intervening leap days */
+ + ((ay >> 2) - (by >> 2))
+ - (ay / 100 - by / 100)
+ + ((ay / 100 >> 2) - (by / 100 >> 2))
+ /* + difference in years * 365 */
+ + (long) (ay - by) * 365
+ );
+ return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
+ + (a->tm_min - b->tm_min))
+ + (a->tm_sec - b->tm_sec));
+}
+
+time_t raptor_parse_date(const char *p, time_t *now)
+{
+ struct tm tm, tm0, *tmp;
+ time_t Start;
+ struct date_yy date;
+
+ date.yyInput = p;
+ Start = now ? *now : time ((time_t *) NULL);
+ tmp = localtime (&Start);
+ if(!tmp)
+ return -1;
+ date.yyYear = tmp->tm_year + TM_YEAR_ORIGIN;
+ date.yyMonth = tmp->tm_mon + 1;
+ date.yyDay = tmp->tm_mday;
+ date.yyHour = tmp->tm_hour;
+ date.yyMinutes = tmp->tm_min;
+ date.yySeconds = tmp->tm_sec;
+ tm.tm_isdst = tmp->tm_isdst;
+ date.yyMeridian = MER24;
+ date.yyRelSeconds = 0;
+ date.yyRelMinutes = 0;
+ date.yyRelHour = 0;
+ date.yyRelDay = 0;
+ date.yyRelMonth = 0;
+ date.yyRelYear = 0;
+ date.yyHaveDate = 0;
+ date.yyHaveDay = 0;
+ date.yyHaveRel = 0;
+ date.yyHaveTime = 0;
+ date.yyHaveZone = 0;
+
+ if(yyparse ((void *)&date)
+ || date.yyHaveTime > 1 || date.yyHaveZone > 1
+ || date.yyHaveDate > 1 || date.yyHaveDay > 1) {
+ return -1;
+ }
+ tm.tm_year = ToYear (date.yyYear) - TM_YEAR_ORIGIN + date.yyRelYear;
+ tm.tm_mon = date.yyMonth - 1 + date.yyRelMonth;
+ tm.tm_mday = date.yyDay + date.yyRelDay;
+ if(date.yyHaveTime || (date.yyHaveRel && !date.yyHaveDate && !date.yyHaveDay))
+ {
+ tm.tm_hour = ToHour (date.yyHour, date.yyMeridian);
+ if(tm.tm_hour < 0)
+ return -1;
+ tm.tm_min = date.yyMinutes;
+ tm.tm_sec = date.yySeconds;
+ }
+ else
+ {
+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+ }
+ tm.tm_hour += date.yyRelHour;
+ tm.tm_min += date.yyRelMinutes;
+ tm.tm_sec += date.yyRelSeconds;
+
+ /* Let mktime deduce tm_isdst if we have an absolute timestamp,
+ or if the relative timestamp mentions days, months, or years. */
+ if(date.yyHaveDate | date.yyHaveDay | date.yyHaveTime | date.yyRelDay | date.yyRelMonth | date.yyRelYear)
+ tm.tm_isdst = -1;
+
+ tm0 = tm;
+
+ Start = mktime (&tm);
+
+ if(Start == (time_t) -1)
+ {
+
+ /* Guard against falsely reporting errors near the time_t boundaries
+ when parsing times in other time zones. For example, if the min
+ time_t value is 1970-01-01 00:00:00 UTC and we are 8 hours ahead
+ of UTC, then the min localtime value is 1970-01-01 08:00:00; if
+ we apply mktime to 1970-01-01 00:00:00 we will get an error, so
+ we apply mktime to 1970-01-02 08:00:00 instead and adjust the time
+ zone by 24 hours to compensate. This algorithm assumes that
+ there is no DST transition within a day of the time_t boundaries. */
+ if(date.yyHaveZone)
+ {
+ tm = tm0;
+ if(tm.tm_year <= EPOCH - TM_YEAR_ORIGIN)
+ {
+ tm.tm_mday++;
+ date.yyTimezone -= 24 * 60;
+ }
+ else
+ {
+ tm.tm_mday--;
+ date.yyTimezone += 24 * 60;
+ }
+ Start = mktime (&tm);
+ }
+
+ if(Start == (time_t) -1)
+ return Start;
+ }
+
+ if(date.yyHaveDay && !date.yyHaveDate)
+ {
+ tm.tm_mday += ((date.yyDayNumber - tm.tm_wday + 7) % 7
+ + 7 * (date.yyDayOrdinal - (0 < date.yyDayOrdinal)));
+ Start = mktime (&tm);
+ if(Start == (time_t) -1)
+ return Start;
+ }
+
+ if(date.yyHaveZone)
+ {
+ long delta;
+ struct tm *gmt = gmtime (&Start);
+ if(!gmt)
+ return -1;
+ delta = date.yyTimezone * 60L + difftm (&tm, gmt);
+
+ if((Start + delta < Start) != (delta < 0))
+ return -1; /* time_t overflow */
+ Start += delta;
+ }
+
+ return Start;
+}
+
diff --git a/src/parsedate.y b/src/parsedate.y
new file mode 100644
index 0000000..285fb63
--- /dev/null
+++ b/src/parsedate.y
@@ -0,0 +1,1166 @@
+%{
+/*
+ * Imported from
+ * PHP CVS 1.56.2.2
+ * Fri May 20 07:14:01 2005
+ * http://cvs.php.net/php-src/ext/standard/parsedate.y
+ *
+ * and patched from there
+ *
+ * 1.59 removed this from PHP CVS and replaced it with entirely new
+ * code written under the PHP license:
+ * http://viewcvs.php.net/viewcvs.cgi/php-src/ext/date/lib/
+ * That code is not used here and cannot be used.
+ *
+ * The old version is now in the CVS Attic:
+ * http://viewcvs.php.net/viewcvs.cgi/php-src/ext/standard/Attic/parsedate.y
+ */
+
+
+/*
+** Originally written by Steven M. Bellovin <smb@research.att.com> while
+** at the University of North Carolina at Chapel Hill. Later tweaked by
+** a couple of people on Usenet. Completely overhauled by Rich $alz
+** <rsalz@bbn.com> and Jim Berets <jberets@bbn.com> in August, 1990.
+**
+** This code is in the public domain and has no copyright.
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <time.h>
+#include <ctype.h>
+
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#if defined(_HPUX_SOURCE)
+#include <alloca.h>
+#endif
+
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
+# define IN_CTYPE_DOMAIN(c) 1
+#else
+# define IN_CTYPE_DOMAIN(c) isascii(c)
+#endif
+
+#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c))
+#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c))
+#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c))
+#define ISDIGIT_LOCALE(c) (IN_CTYPE_DOMAIN (c) && isdigit (c))
+
+/* ISDIGIT differs from ISDIGIT_LOCALE, as follows:
+ - Its arg may be any int or unsigned int; it need not be an unsigned char.
+ - It's guaranteed to evaluate its argument exactly once.
+ - It's typically faster.
+ Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
+ only '0' through '9' are digits. Prefer ISDIGIT to ISDIGIT_LOCALE unless
+ it's important to use the locale's definition of `digit' even when the
+ host does not conform to Posix. */
+#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
+
+#ifdef HAVE_STRING_H
+# include <string.h>
+#endif
+
+#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+# define __attribute__(x)
+#endif
+
+#ifndef ATTRIBUTE_UNUSED
+# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif
+
+/* Some old versions of bison generate parsers that use bcopy.
+ That loses on systems that don't provide the function, so we have
+ to redefine it here. */
+#if !defined (HAVE_BCOPY) && defined (HAVE_MEMCPY) && !defined (bcopy)
+# define bcopy(from, to, len) memcpy ((to), (from), (len))
+#endif
+
+/* Prototypes */
+static int raptor_parsedate_error(const char *msg);
+
+
+#define EPOCH 1970
+#define HOUR(x) ((x) * 60)
+
+#define MAX_BUFF_LEN 128 /* size of buffer to read the date into */
+
+/*
+** An entry in the lexical lookup table.
+*/
+typedef struct _TABLE {
+ const char *name;
+ int type;
+ int value;
+} TABLE;
+
+
+/*
+** Meridian: am, pm, or 24-hour style.
+*/
+typedef enum _MERIDIAN {
+ MERam, MERpm, MER24
+} MERIDIAN;
+
+struct date_yy {
+ const char *yyInput;
+ int yyDayOrdinal;
+ int yyDayNumber;
+ int yyHaveDate;
+ int yyHaveDay;
+ int yyHaveRel;
+ int yyHaveTime;
+ int yyHaveZone;
+ int yyTimezone;
+ int yyDay;
+ int yyHour;
+ int yyMinutes;
+ int yyMonth;
+ int yySeconds;
+ int yyYear;
+ MERIDIAN yyMeridian;
+ int yyRelDay;
+ int yyRelHour;
+ int yyRelMinutes;
+ int yyRelMonth;
+ int yyRelSeconds;
+ int yyRelYear;
+};
+
+typedef union _date_ll {
+ int Number;
+ enum _MERIDIAN Meridian;
+} date_ll;
+
+#define YYPARSE_PARAM parm
+#define YYLEX_PARAM parm
+#define YYSTYPE date_ll
+#define YYLTYPE void
+
+static int yylex (YYSTYPE *lvalp, void *parm);
+
+static int ToHour (int Hours, MERIDIAN Meridian);
+static int ToYear (int Year);
+static int LookupWord (YYSTYPE *lvalp, char *buff);
+
+%}
+
+/* This grammar has 56 shift/reduce conflicts. */
+%expect 56
+%pure_parser
+
+%token tAGO tDAY tDAY_UNIT tDAYZONE tDST tHOUR_UNIT tID tTZONE tWZONE tZZONE
+%token tMERIDIAN tMINUTE_UNIT tMONTH tMONTH_UNIT
+%token tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE
+
+%type <Number> tDAY tDAY_UNIT tDAYZONE tHOUR_UNIT tMINUTE_UNIT
+%type <Number> tMONTH tMONTH_UNIT
+%type <Number> tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE tTZONE tWZONE tZZONE
+%type <Meridian> tMERIDIAN
+
+%%
+
+spec : /* NULL */
+ | spec item
+ ;
+
+item : time {
+ ((struct date_yy *)parm)->yyHaveTime++;
+ }
+ | zone {
+ ((struct date_yy *)parm)->yyHaveZone++;
+ }
+ | date {
+ ((struct date_yy *)parm)->yyHaveDate++;
+ }
+ | day {
+ ((struct date_yy *)parm)->yyHaveDay++;
+ }
+ | rel {
+ ((struct date_yy *)parm)->yyHaveRel++;
+ }
+ | number
+ | o_merid
+ ;
+
+time : tUNUMBER tMERIDIAN {
+ ((struct date_yy *)parm)->yyHour = $1;
+ ((struct date_yy *)parm)->yyMinutes = 0;
+ ((struct date_yy *)parm)->yySeconds = 0;
+ ((struct date_yy *)parm)->yyMeridian = $2;
+ }
+ | iso8601time_colon
+ /* | pgsqltime ... shares a common spec with ISO8601 */
+ ;
+
+iso8601time_colon: HMStime_with_colon sec_fraction_part rel {
+ ((struct date_yy *)parm)->yyMeridian = MER24;
+ }
+ | HMtime_with_colon sec_fraction_part rel {
+ ((struct date_yy *)parm)->yyMeridian = MER24;
+ ((struct date_yy *)parm)->yySeconds = 0;
+ }
+ | HMStime_with_colon sec_fraction_part iso8601zonepart {
+ ((struct date_yy *)parm)->yyMeridian = MER24;
+ }
+ | HMtime_with_colon sec_fraction_part iso8601zonepart {
+ ((struct date_yy *)parm)->yyMeridian = MER24;
+ ((struct date_yy *)parm)->yySeconds = 0;
+ }
+ ;
+
+iso8601zonepart: zonepart_numeric_without_colon {
+ ((struct date_yy *)parm)->yyHaveZone++;
+ }
+ | zonepart_numeric_with_colon {
+ ((struct date_yy *)parm)->yyHaveZone++;
+ }
+ | zone {
+ ((struct date_yy *)parm)->yyHaveZone++;
+ }
+ | /* empty */
+ ;
+
+sec_fraction_part: '.' tUNUMBER {
+ }
+ | /* empty */
+ ;
+
+zonepart_numeric_without_colon: tSNUMBER {
+ /* format: [+-]hhmm */
+ if($1 <= -100 || $1 >= 100) {
+ ((struct date_yy *)parm)->yyTimezone = (-$1 / 100) * 60 + (-$1 % 100);
+ } else if($1 >= -99 || $1 <= 99) {
+ ((struct date_yy *)parm)->yyTimezone = -$1 * 60;
+ }
+ }
+ ;
+
+zonepart_numeric_with_colon: tSNUMBER ':' tUNUMBER {
+ /* format: [+-]hh:mm */
+ ((struct date_yy *)parm)->yyTimezone = -$1 * 60 + ($1 > 0 ? -$3: $3);
+ }
+ ;
+
+HMStime_with_colon: HMtime_with_colon ':' tUNUMBER {
+ /* format: hh:mm:ss */
+ ((struct date_yy *)parm)->yySeconds = $3;
+ }
+ ;
+
+HMtime_with_colon: tUNUMBER ':' tUNUMBER {
+ /* format: hh:mm */
+ ((struct date_yy *)parm)->yyHour = $1;
+ ((struct date_yy *)parm)->yyMinutes = $3;
+ }
+ ;
+
+
+ /* we have to deal with a special case for the datetime format
+ of XML Schema here: '2003-11-18T22:40:00Z'
+ the combination of a 'T' timezone specifier later followed
+ by a 'Z' is now recognized and allowed
+ TODO: change the grammer so that the exact positions are checked
+ right now '2003-11-18 22:40:00 TZ' is also accepted (hartmut)
+ */
+
+zone : tTZONE {
+ ((struct date_yy *)parm)->yyTimezone = $1;
+ }
+ | tWZONE {
+ ((struct date_yy *)parm)->yyTimezone = $1;
+ }
+ | tZZONE {
+ ((struct date_yy *)parm)->yyTimezone = $1;
+ }
+ | tZONE {
+ ((struct date_yy *)parm)->yyTimezone = $1;
+ }
+ | tDAYZONE {
+ ((struct date_yy *)parm)->yyTimezone = $1 - 60;
+ }
+ | tZONE tDST {
+ ((struct date_yy *)parm)->yyTimezone = $1 - 60;
+ }
+ ;
+
+day : tDAY {
+ ((struct date_yy *)parm)->yyDayOrdinal = 1;
+ ((struct date_yy *)parm)->yyDayNumber = $1;
+ }
+ | tDAY ',' {
+ ((struct date_yy *)parm)->yyDayOrdinal = 1;
+ ((struct date_yy *)parm)->yyDayNumber = $1;
+ }
+ | tUNUMBER tDAY {
+ ((struct date_yy *)parm)->yyDayOrdinal = $1;
+ ((struct date_yy *)parm)->yyDayNumber = $2;
+ }
+ ;
+
+date : tUNUMBER '/' tUNUMBER {
+ ((struct date_yy *)parm)->yyMonth = $1;
+ ((struct date_yy *)parm)->yyDay = $3;
+ }
+ | tMONTH tUNUMBER tUNUMBER ':' tUNUMBER ':' tUNUMBER tUNUMBER {
+ ((struct date_yy *)parm)->yyYear = $8;
+ ((struct date_yy *)parm)->yyMonth = $1;
+ ((struct date_yy *)parm)->yyDay = $2;
+
+ ((struct date_yy *)parm)->yyHour = $3;
+ ((struct date_yy *)parm)->yyMinutes = $5;
+ ((struct date_yy *)parm)->yySeconds = $7;
+
+ ((struct date_yy *)parm)->yyHaveTime = 1;
+ }
+ | tUNUMBER '/' tUNUMBER '/' tUNUMBER {
+ /* Interpret as YYYY/MM/DD if $1 >= 1000, otherwise as MM/DD/YY.
+ The goal in recognizing YYYY/MM/DD is solely to support legacy
+ machine-generated dates like those in an RCS log listing. If
+ you want portability, use the ISO 8601 format. */
+ if($1 >= 1000)
+ {
+ ((struct date_yy *)parm)->yyYear = $1;
+ ((struct date_yy *)parm)->yyMonth = $3;
+ ((struct date_yy *)parm)->yyDay = $5;
+ }
+ else
+ {
+ ((struct date_yy *)parm)->yyMonth = $1;
+ ((struct date_yy *)parm)->yyDay = $3;
+ ((struct date_yy *)parm)->yyYear = $5;
+ }
+ }
+ | iso8601date
+ | iso8601datetime {
+ ((struct date_yy *)parm)->yyHaveTime++;
+ }
+ | tUNUMBER tMONTH tSNUMBER {
+ /* e.g. 17-JUN-1992. */
+ ((struct date_yy *)parm)->yyDay = $1;
+ ((struct date_yy *)parm)->yyMonth = $2;
+ ((struct date_yy *)parm)->yyYear = -$3;
+ }
+ | tMONTH tUNUMBER tUNUMBER {
+ ((struct date_yy *)parm)->yyMonth = $1;
+ ((struct date_yy *)parm)->yyDay = $2;
+ ((struct date_yy *)parm)->yyYear = $3;
+ }
+ | tMONTH tUNUMBER {
+ ((struct date_yy *)parm)->yyMonth = $1;
+ if($2 > 1000) {
+ ((struct date_yy *)parm)->yyYear = $2;
+ } else {
+ ((struct date_yy *)parm)->yyDay = $2;
+ }
+ }
+ | tMONTH tUNUMBER ',' tUNUMBER {
+ ((struct date_yy *)parm)->yyMonth = $1;
+ ((struct date_yy *)parm)->yyDay = $2;
+ ((struct date_yy *)parm)->yyYear = $4;
+ }
+ | tUNUMBER tMONTH {
+ ((struct date_yy *)parm)->yyMonth = $2;
+ if($1 > 1000) {
+ ((struct date_yy *)parm)->yyYear = $1;
+ } else {
+ ((struct date_yy *)parm)->yyDay = $1;
+ }
+ }
+ | tUNUMBER tMONTH tUNUMBER {
+ ((struct date_yy *)parm)->yyMonth = $2;
+ ((struct date_yy *)parm)->yyDay = $1;
+ ((struct date_yy *)parm)->yyYear = $3;
+ }
+ ;
+
+iso8601datetime: iso8601date tTZONE iso8601time
+ | tUNUMBER tTZONE iso8601time {
+ int i = $1;
+
+ if(i >= 10000) {
+ /* format: yyyymmdd */
+ ((struct date_yy *)parm)->yyYear = i / 10000;
+ i %= 10000;
+ ((struct date_yy *)parm)->yyMonth = i / 100;
+ i %= 100;
+ ((struct date_yy *)parm)->yyDay = i;
+ } else if(i >= 1000 && i <= 9999) {
+ /* format: yyyy */
+ ((struct date_yy *)parm)->yyYear = i;
+ ((struct date_yy *)parm)->yyDay= 1;
+ ((struct date_yy *)parm)->yyMonth = 1;
+ }
+ }
+ ;
+
+iso8601date: tUNUMBER tSNUMBER tSNUMBER {
+ /* ISO 8601 format. yyyy-mm-dd. */
+ ((struct date_yy *)parm)->yyYear = $1;
+ ((struct date_yy *)parm)->yyMonth = -$2;
+ ((struct date_yy *)parm)->yyDay = -$3;
+ }
+ | tUNUMBER tSNUMBER {
+ /* ISO 8601 format yyyy-mm */
+ ((struct date_yy *)parm)->yyYear = $1;
+ ((struct date_yy *)parm)->yyMonth = -$2;
+ ((struct date_yy *)parm)->yyDay = 1;
+ }
+ | tUNUMBER iso8601weekspec {
+ const int om = (1 + 9) % 12; /* offset month */
+ const int oy = $1 - 1; /* offset year */
+
+ ((struct date_yy *)parm)->yyYear = $1;
+ ((struct date_yy *)parm)->yyMonth = 1;
+ /* Zeller's formula */
+ ((struct date_yy *)parm)->yyDay -= ((13 * om + 12) / 5 +
+ oy + oy / 4 + oy / 400 - oy / 100) % 7 - 1;
+ }
+ ;
+
+iso8601weekspec: tWZONE tUNUMBER {
+ ((struct date_yy *)parm)->yyDay = ($2 / 10) * 7 + ($2 % 10) - 8;
+ }
+ | tWZONE tUNUMBER tSNUMBER {
+ ((struct date_yy *)parm)->yyDay = $2 * 7 - $3 - 8;
+ }
+ ;
+
+iso8601time:
+ iso8601time_colon
+ | tUNUMBER sec_fraction_part iso8601zonepart {
+ int i = $1;
+
+ if(i <= -100000 || i >= 100000) {
+ ((struct date_yy *)parm)->yyHour = i / 10000;
+ i %= 10000;
+ ((struct date_yy *)parm)->yyMinutes = i / 100;
+ i %= 100;
+ ((struct date_yy *)parm)->yySeconds = i;
+ } else if(i <= -1000 || i >= 1000) {
+ ((struct date_yy *)parm)->yyHour = i / 100;
+ i %= 100;
+ ((struct date_yy *)parm)->yyMinutes = i;
+ ((struct date_yy *)parm)->yySeconds = 0;
+ } else if(i >= -99 || i <= 99) {
+ ((struct date_yy *)parm)->yyHour = $1;
+ ((struct date_yy *)parm)->yyMinutes = 0;
+ ((struct date_yy *)parm)->yySeconds = 0;
+ } else {
+ ((struct date_yy *)parm)->yyHaveTime = 0;
+ }
+ ((struct date_yy *)parm)->yyMeridian = MER24;
+ }
+ ;
+
+rel : relunit tAGO {
+ ((struct date_yy *)parm)->yyRelSeconds =
+ -((struct date_yy *)parm)->yyRelSeconds;
+ ((struct date_yy *)parm)->yyRelMinutes =
+ -((struct date_yy *)parm)->yyRelMinutes;
+ ((struct date_yy *)parm)->yyRelHour =
+ -((struct date_yy *)parm)->yyRelHour;
+ ((struct date_yy *)parm)->yyRelDay =
+ -((struct date_yy *)parm)->yyRelDay;
+ ((struct date_yy *)parm)->yyRelMonth =
+ -((struct date_yy *)parm)->yyRelMonth;
+ ((struct date_yy *)parm)->yyRelYear =
+ -((struct date_yy *)parm)->yyRelYear;
+ }
+ | relunit
+ ;
+
+relunit : tUNUMBER tYEAR_UNIT {
+ ((struct date_yy *)parm)->yyRelYear += $1 * $2;
+ }
+ | tSNUMBER tYEAR_UNIT {
+ ((struct date_yy *)parm)->yyRelYear += $1 * $2;
+ }
+ | tYEAR_UNIT {
+ ((struct date_yy *)parm)->yyRelYear += $1;
+ }
+ | tUNUMBER tMONTH_UNIT {
+ ((struct date_yy *)parm)->yyRelMonth += $1 * $2;
+ }
+ | tSNUMBER tMONTH_UNIT {
+ ((struct date_yy *)parm)->yyRelMonth += $1 * $2;
+ }
+ | tMONTH_UNIT {
+ ((struct date_yy *)parm)->yyRelMonth += $1;
+ }
+ | tUNUMBER tDAY_UNIT {
+ ((struct date_yy *)parm)->yyRelDay += $1 * $2;
+ }
+ | tSNUMBER tDAY_UNIT {
+ ((struct date_yy *)parm)->yyRelDay += $1 * $2;
+ }
+ | tDAY_UNIT {
+ ((struct date_yy *)parm)->yyRelDay += $1;
+ }
+ | tUNUMBER tHOUR_UNIT {
+ ((struct date_yy *)parm)->yyRelHour += $1 * $2;
+ }
+ | tSNUMBER tHOUR_UNIT {
+ ((struct date_yy *)parm)->yyRelHour += $1 * $2;
+ }
+ | tHOUR_UNIT {
+ ((struct date_yy *)parm)->yyRelHour += $1;
+ }
+ | tUNUMBER tMINUTE_UNIT {
+ ((struct date_yy *)parm)->yyRelMinutes += $1 * $2;
+ }
+ | tSNUMBER tMINUTE_UNIT {
+ ((struct date_yy *)parm)->yyRelMinutes += $1 * $2;
+ }
+ | tMINUTE_UNIT {
+ ((struct date_yy *)parm)->yyRelMinutes += $1;
+ }
+ | tUNUMBER tSEC_UNIT {
+ ((struct date_yy *)parm)->yyRelSeconds += $1 * $2;
+ }
+ | tSNUMBER tSEC_UNIT {
+ ((struct date_yy *)parm)->yyRelSeconds += $1 * $2;
+ }
+ | tSEC_UNIT {
+ ((struct date_yy *)parm)->yyRelSeconds += $1;
+ }
+ ;
+
+number : tUNUMBER
+ {
+ if(((struct date_yy *)parm)->yyHaveTime &&
+ ((struct date_yy *)parm)->yyHaveDate &&
+ !((struct date_yy *)parm)->yyHaveRel)
+ ((struct date_yy *)parm)->yyYear = $1;
+ else
+ {
+ if($1 > 10000)
+ {
+ ((struct date_yy *)parm)->yyHaveDate++;
+ ((struct date_yy *)parm)->yyDay= ($1)%100;
+ ((struct date_yy *)parm)->yyMonth= ($1/100)%100;
+ ((struct date_yy *)parm)->yyYear = $1/10000;
+ }
+ else
+ {
+ ((struct date_yy *)parm)->yyHaveTime++;
+ if($1 < 100)
+ {
+ ((struct date_yy *)parm)->yyHour = $1;
+ ((struct date_yy *)parm)->yyMinutes = 0;
+ }
+ else
+ {
+ ((struct date_yy *)parm)->yyHour = $1 / 100;
+ ((struct date_yy *)parm)->yyMinutes = $1 % 100;
+ }
+ ((struct date_yy *)parm)->yySeconds = 0;
+ ((struct date_yy *)parm)->yyMeridian = MER24;
+ }
+ }
+ }
+ ;
+
+o_merid : tMERIDIAN
+ {
+ ((struct date_yy *)parm)->yyMeridian = $1;
+ }
+ ;
+
+%%
+
+time_t get_date (char *p, time_t *now);
+
+/* Month and day table. */
+static TABLE const MonthDayTable[] = {
+ { "january", tMONTH, 1 },
+ { "february", tMONTH, 2 },
+ { "march", tMONTH, 3 },
+ { "april", tMONTH, 4 },
+ { "may", tMONTH, 5 },
+ { "june", tMONTH, 6 },
+ { "july", tMONTH, 7 },
+ { "august", tMONTH, 8 },
+ { "september", tMONTH, 9 },
+ { "sept", tMONTH, 9 },
+ { "october", tMONTH, 10 },
+ { "november", tMONTH, 11 },
+ { "december", tMONTH, 12 },
+ { "sunday", tDAY, 0 },
+ { "monday", tDAY, 1 },
+ { "tuesday", tDAY, 2 },
+ { "tues", tDAY, 2 },
+ { "wednesday", tDAY, 3 },
+ { "wednes", tDAY, 3 },
+ { "thursday", tDAY, 4 },
+ { "thur", tDAY, 4 },
+ { "thurs", tDAY, 4 },
+ { "friday", tDAY, 5 },
+ { "saturday", tDAY, 6 },
+ { NULL, 0, 0 }
+};
+
+/* Time units table. */
+static TABLE const UnitsTable[] = {
+ { "year", tYEAR_UNIT, 1 },
+ { "month", tMONTH_UNIT, 1 },
+ { "fortnight", tDAY_UNIT, 14 },
+ { "week", tDAY_UNIT, 7 },
+ { "day", tDAY_UNIT, 1 },
+ { "hour", tHOUR_UNIT, 1 },
+ { "minute", tMINUTE_UNIT, 1 },
+ { "min", tMINUTE_UNIT, 1 },
+ { "second", tSEC_UNIT, 1 },
+ { "sec", tSEC_UNIT, 1 },
+ { NULL, 0, 0 }
+};
+
+/* Assorted relative-time words. */
+static TABLE const OtherTable[] = {
+ { "tomorrow", tDAY_UNIT, 1 },
+ { "yesterday", tDAY_UNIT, -1 },
+ { "today", tDAY_UNIT, 0 },
+ { "now", tDAY_UNIT, 0 },
+ { "last", tUNUMBER, -1 },
+ { "this", tUNUMBER, 0 },
+ { "next", tUNUMBER, 1 },
+ { "first", tUNUMBER, 1 },
+/* { "second", tUNUMBER, 2 }, */
+ { "third", tUNUMBER, 3 },
+ { "fourth", tUNUMBER, 4 },
+ { "fifth", tUNUMBER, 5 },
+ { "sixth", tUNUMBER, 6 },
+ { "seventh", tUNUMBER, 7 },
+ { "eighth", tUNUMBER, 8 },
+ { "ninth", tUNUMBER, 9 },
+ { "tenth", tUNUMBER, 10 },
+ { "eleventh", tUNUMBER, 11 },
+ { "twelfth", tUNUMBER, 12 },
+ { "ago", tAGO, 1 },
+ { NULL, 0, 0 }
+};
+
+/* The timezone table. */
+static TABLE const TimezoneTable[] = {
+ { "gmt", tZONE, HOUR ( 0) }, /* Greenwich Mean */
+ { "ut", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */
+ { "utc", tZONE, HOUR ( 0) },
+ { "wet", tZONE, HOUR ( 0) }, /* Western European */
+ { "bst", tDAYZONE, HOUR ( 0) }, /* British Summer */
+ { "wat", tZONE, HOUR ( 1) }, /* West Africa */
+ { "at", tZONE, HOUR ( 2) }, /* Azores */
+#if 0
+ /* For completeness. BST is also British Summer, and GST is
+ * also Guam Standard. */
+ { "bst", tZONE, HOUR ( 3) }, /* Brazil Standard */
+ { "gst", tZONE, HOUR ( 3) }, /* Greenland Standard */
+#endif
+#if 0
+ { "nft", tZONE, HOUR (3.5) }, /* Newfoundland */
+ { "nst", tZONE, HOUR (3.5) }, /* Newfoundland Standard */
+ { "ndt", tDAYZONE, HOUR (3.5) }, /* Newfoundland Daylight */
+#endif
+ { "ast", tZONE, HOUR ( 4) }, /* Atlantic Standard */
+ { "adt", tDAYZONE, HOUR ( 4) }, /* Atlantic Daylight */
+ { "est", tZONE, HOUR ( 5) }, /* Eastern Standard */
+ { "edt", tDAYZONE, HOUR ( 5) }, /* Eastern Daylight */
+ { "cst", tZONE, HOUR ( 6) }, /* Central Standard */
+ { "cdt", tDAYZONE, HOUR ( 6) }, /* Central Daylight */
+ { "mst", tZONE, HOUR ( 7) }, /* Mountain Standard */
+ { "mdt", tDAYZONE, HOUR ( 7) }, /* Mountain Daylight */
+ { "pst", tZONE, HOUR ( 8) }, /* Pacific Standard */
+ { "pdt", tDAYZONE, HOUR ( 8) }, /* Pacific Daylight */
+ { "yst", tZONE, HOUR ( 9) }, /* Yukon Standard */
+ { "ydt", tDAYZONE, HOUR ( 9) }, /* Yukon Daylight */
+ { "hst", tZONE, HOUR (10) }, /* Hawaii Standard */
+ { "hdt", tDAYZONE, HOUR (10) }, /* Hawaii Daylight */
+ { "cat", tZONE, HOUR (10) }, /* Central Alaska */
+ { "akst", tZONE, HOUR (10) }, /* Alaska Standard */
+ { "akdt", tZONE, HOUR (10) }, /* Alaska Daylight */
+ { "ahst", tZONE, HOUR (10) }, /* Alaska-Hawaii Standard */
+ { "nt", tZONE, HOUR (11) }, /* Nome */
+ { "idlw", tZONE, HOUR (12) }, /* International Date Line West */
+ { "cet", tZONE, -HOUR (1) }, /* Central European */
+ { "cest", tDAYZONE, -HOUR (1) }, /* Central European Summer */
+ { "met", tZONE, -HOUR (1) }, /* Middle European */
+ { "mewt", tZONE, -HOUR (1) }, /* Middle European Winter */
+ { "mest", tDAYZONE, -HOUR (1) }, /* Middle European Summer */
+ { "mesz", tDAYZONE, -HOUR (1) }, /* Middle European Summer */
+ { "swt", tZONE, -HOUR (1) }, /* Swedish Winter */
+ { "sst", tDAYZONE, -HOUR (1) }, /* Swedish Summer */
+ { "fwt", tZONE, -HOUR (1) }, /* French Winter */
+ { "fst", tDAYZONE, -HOUR (1) }, /* French Summer */
+ { "eet", tZONE, -HOUR (2) }, /* Eastern Europe, USSR Zone 1 */
+ { "bt", tZONE, -HOUR (3) }, /* Baghdad, USSR Zone 2 */
+#if 0
+ { "it", tZONE, -HOUR (3.5) },/* Iran */
+#endif
+ { "zp4", tZONE, -HOUR (4) }, /* USSR Zone 3 */
+ { "zp5", tZONE, -HOUR (5) }, /* USSR Zone 4 */
+#if 0
+ { "ist", tZONE, -HOUR (5.5) },/* Indian Standard */
+#endif
+ { "zp6", tZONE, -HOUR (6) }, /* USSR Zone 5 */
+#if 0
+ /* For completeness. NST is also Newfoundland Standard, and SST is
+ * also Swedish Summer. */
+ { "nst", tZONE, -HOUR (6.5) },/* North Sumatra */
+ { "sst", tZONE, -HOUR (7) }, /* South Sumatra, USSR Zone 6 */
+#endif /* 0 */
+ { "wast", tZONE, -HOUR (7) }, /* West Australian Standard */
+ { "wadt", tDAYZONE, -HOUR (7) }, /* West Australian Daylight */
+#if 0
+ { "jt", tZONE, -HOUR (7.5) },/* Java (3pm in Cronusland!) */
+#endif
+ { "cct", tZONE, -HOUR (8) }, /* China Coast, USSR Zone 7 */
+ { "jst", tZONE, -HOUR (9) }, /* Japan Standard, USSR Zone 8 */
+#if 0
+ { "cast", tZONE, -HOUR (9.5) },/* Central Australian Standard */
+ { "cadt", tDAYZONE, -HOUR (9.5) },/* Central Australian Daylight */
+#endif
+ { "east", tZONE, -HOUR (10) }, /* Eastern Australian Standard */
+ { "eadt", tDAYZONE, -HOUR (10) }, /* Eastern Australian Daylight */
+ { "gst", tZONE, -HOUR (10) }, /* Guam Standard, USSR Zone 9 */
+ { "nzt", tZONE, -HOUR (12) }, /* New Zealand */
+ { "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */
+ { "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */
+ { "idle", tZONE, -HOUR (12) }, /* International Date Line East */
+ { NULL, 0, 0 }
+};
+
+/* Military timezone table. */
+static TABLE const MilitaryTable[] = {
+ { "a", tZONE, HOUR (- 1) },
+ { "b", tZONE, HOUR (- 2) },
+ { "c", tZONE, HOUR (- 3) },
+ { "d", tZONE, HOUR (- 4) },
+ { "e", tZONE, HOUR (- 5) },
+ { "f", tZONE, HOUR (- 6) },
+ { "g", tZONE, HOUR (- 7) },
+ { "h", tZONE, HOUR (- 8) },
+ { "i", tZONE, HOUR (- 9) },
+ { "k", tZONE, HOUR (-10) },
+ { "l", tZONE, HOUR (-11) },
+ { "m", tZONE, HOUR (-12) },
+ { "n", tZONE, HOUR ( 1) },
+ { "o", tZONE, HOUR ( 2) },
+ { "p", tZONE, HOUR ( 3) },
+ { "q", tZONE, HOUR ( 4) },
+ { "r", tZONE, HOUR ( 5) },
+ { "s", tZONE, HOUR ( 6) },
+ { "t", tTZONE, HOUR ( 7) },
+ { "u", tZONE, HOUR ( 8) },
+ { "v", tZONE, HOUR ( 9) },
+ { "w", tWZONE, HOUR ( 10) },
+ { "x", tZONE, HOUR ( 11) },
+ { "y", tZONE, HOUR ( 12) },
+ { "z", tZZONE, HOUR ( 0) },
+ { NULL, 0, 0 }
+};
+
+
+
+
+/* ARGSUSED */
+static int
+yyerror(const char *s)
+{
+ return 0;
+}
+
+static int
+ToHour(int Hours, MERIDIAN Meridian)
+{
+ switch (Meridian)
+ {
+ case MER24:
+ if(Hours < 0 || Hours > 23)
+ return -1;
+ return Hours;
+ case MERam:
+ if(Hours < 1 || Hours > 12)
+ return -1;
+ if(Hours == 12)
+ Hours = 0;
+ return Hours;
+ case MERpm:
+ if(Hours < 1 || Hours > 12)
+ return -1;
+ if(Hours == 12)
+ Hours = 0;
+ return Hours + 12;
+ default:
+#ifdef RAPTOR_DEBUG
+ fprintf(stderr, "%s:%d:%s: UNKNOWN Meridian %d - add a new case",
+ __FILE__, __LINE__, __func__, (int)Meridian);
+#endif
+ return -1;
+ }
+ /* NOTREACHED */
+}
+
+static int
+ToYear(int Year)
+{
+ if(Year < 0)
+ Year = -Year;
+
+ /* XPG4 suggests that years 00-68 map to 2000-2068, and
+ years 69-99 map to 1969-1999. */
+ if(Year < 69)
+ Year += 2000;
+ else if(Year < 100)
+ Year += 1900;
+
+ return Year;
+}
+
+static int
+LookupWord (YYSTYPE *lvalp, char *buff)
+{
+ char *p;
+ char *q;
+ const TABLE *tp;
+ int i;
+ int abbrev;
+
+ /* Make it lowercase. */
+ for(p = buff; *p; p++)
+ if(ISUPPER ((unsigned char) *p))
+ *p = tolower (*p);
+
+ if(strcmp (buff, "am") == 0 || strcmp (buff, "a.m.") == 0)
+ {
+ lvalp->Meridian = MERam;
+ return tMERIDIAN;
+ }
+ if(strcmp (buff, "pm") == 0 || strcmp (buff, "p.m.") == 0)
+ {
+ lvalp->Meridian = MERpm;
+ return tMERIDIAN;
+ }
+
+ /* See if we have an abbreviation for a month. */
+ if(strlen (buff) == 3)
+ abbrev = 1;
+ else if(strlen (buff) == 4 && buff[3] == '.')
+ {
+ abbrev = 1;
+ buff[3] = '\0';
+ }
+ else
+ abbrev = 0;
+
+ for(tp = MonthDayTable; tp->name; tp++)
+ {
+ if(abbrev)
+ {
+ if(strncmp (buff, tp->name, 3) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+ }
+ else if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+ }
+
+ for(tp = TimezoneTable; tp->name; tp++)
+ if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+
+ if(strcmp (buff, "dst") == 0)
+ return tDST;
+
+ for(tp = UnitsTable; tp->name; tp++)
+ if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+
+ /* Strip off any plural and try the units table again. */
+ i = RAPTOR_BAD_CAST(int, strlen(buff)) - 1;
+ if(buff[i] == 's')
+ {
+ buff[i] = '\0';
+ for(tp = UnitsTable; tp->name; tp++)
+ if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+ buff[i] = 's'; /* Put back for "this" in OtherTable. */
+ }
+
+ for(tp = OtherTable; tp->name; tp++)
+ if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+
+ /* Military timezones. */
+ if(buff[1] == '\0' && ISALPHA ((unsigned char) *buff))
+ {
+ for(tp = MilitaryTable; tp->name; tp++)
+ if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+ }
+
+ /* Drop out any periods and try the timezone table again. */
+ for(i = 0, p = q = buff; *q; q++)
+ if(*q != '.')
+ *p++ = *q;
+ else
+ i++;
+ *p = '\0';
+ if(i)
+ for(tp = TimezoneTable; tp->name; tp++)
+ if(strcmp (buff, tp->name) == 0)
+ {
+ lvalp->Number = tp->value;
+ return tp->type;
+ }
+
+ return tID;
+}
+
+int yylex(YYSTYPE *lvalp, void *parm)
+{
+ unsigned char c;
+ char *p;
+ char buff[20];
+ int Count;
+ int sign;
+ struct date_yy * date = (struct date_yy *)parm;
+
+ for(;;)
+ {
+ while(ISSPACE ((unsigned char) *date->yyInput))
+ date->yyInput++;
+
+ if(ISDIGIT (c = *date->yyInput) || c == '-' || c == '+')
+ {
+ if(c == '-' || c == '+')
+ {
+ sign = c == '-' ? -1 : 1;
+ if(!ISDIGIT (*++date->yyInput))
+ /* skip the '-' sign */
+ continue;
+ }
+ else
+ sign = 0;
+ for(lvalp->Number = 0; ISDIGIT (c = *date->yyInput++);)
+ lvalp->Number = 10 * lvalp->Number + c - '0';
+ date->yyInput--;
+ if(sign < 0)
+ lvalp->Number = -lvalp->Number;
+ /* Ignore ordinal suffixes on numbers */
+ c = *date->yyInput;
+ if(c == 's' || c == 'n' || c == 'r' || c == 't') {
+ c = *++date->yyInput;
+ if(c == 't' || c == 'd' || c == 'h') {
+ date->yyInput++;
+ } else {
+ date->yyInput--;
+ }
+ }
+ return sign ? tSNUMBER : tUNUMBER;
+ }
+ if(ISALPHA (c))
+ {
+ for(p = buff; (c = *date->yyInput++, ISALPHA (c)) || c == '.';)
+ if(p < &buff[sizeof buff - 1])
+ *p++ = c;
+ *p = '\0';
+ date->yyInput--;
+ return LookupWord (lvalp, buff);
+ }
+ if(c != '(')
+ return *date->yyInput++;
+ Count = 0;
+ do
+ {
+ c = *date->yyInput++;
+ if(c == '\0')
+ return c;
+ if(c == '(')
+ Count++;
+ else if(c == ')')
+ Count--;
+ }
+ while(Count > 0);
+ }
+}
+
+#define TM_YEAR_ORIGIN 1900
+
+/* Yield A - B, measured in seconds. */
+static long
+difftm (struct tm *a, struct tm *b)
+{
+ int ay = a->tm_year + (TM_YEAR_ORIGIN - 1);
+ int by = b->tm_year + (TM_YEAR_ORIGIN - 1);
+ long days = (
+ /* difference in day of year */
+ a->tm_yday - b->tm_yday
+ /* + intervening leap days */
+ + ((ay >> 2) - (by >> 2))
+ - (ay / 100 - by / 100)
+ + ((ay / 100 >> 2) - (by / 100 >> 2))
+ /* + difference in years * 365 */
+ + (long) (ay - by) * 365
+ );
+ return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
+ + (a->tm_min - b->tm_min))
+ + (a->tm_sec - b->tm_sec));
+}
+
+time_t raptor_parse_date(const char *p, time_t *now)
+{
+ struct tm tm, tm0, *tmp;
+ time_t Start;
+ struct date_yy date;
+
+ date.yyInput = p;
+ Start = now ? *now : time ((time_t *) NULL);
+ tmp = localtime (&Start);
+ if(!tmp)
+ return -1;
+ date.yyYear = tmp->tm_year + TM_YEAR_ORIGIN;
+ date.yyMonth = tmp->tm_mon + 1;
+ date.yyDay = tmp->tm_mday;
+ date.yyHour = tmp->tm_hour;
+ date.yyMinutes = tmp->tm_min;
+ date.yySeconds = tmp->tm_sec;
+ tm.tm_isdst = tmp->tm_isdst;
+ date.yyMeridian = MER24;
+ date.yyRelSeconds = 0;
+ date.yyRelMinutes = 0;
+ date.yyRelHour = 0;
+ date.yyRelDay = 0;
+ date.yyRelMonth = 0;
+ date.yyRelYear = 0;
+ date.yyHaveDate = 0;
+ date.yyHaveDay = 0;
+ date.yyHaveRel = 0;
+ date.yyHaveTime = 0;
+ date.yyHaveZone = 0;
+
+ if(yyparse ((void *)&date)
+ || date.yyHaveTime > 1 || date.yyHaveZone > 1
+ || date.yyHaveDate > 1 || date.yyHaveDay > 1) {
+ return -1;
+ }
+ tm.tm_year = ToYear (date.yyYear) - TM_YEAR_ORIGIN + date.yyRelYear;
+ tm.tm_mon = date.yyMonth - 1 + date.yyRelMonth;
+ tm.tm_mday = date.yyDay + date.yyRelDay;
+ if(date.yyHaveTime || (date.yyHaveRel && !date.yyHaveDate && !date.yyHaveDay))
+ {
+ tm.tm_hour = ToHour (date.yyHour, date.yyMeridian);
+ if(tm.tm_hour < 0)
+ return -1;
+ tm.tm_min = date.yyMinutes;
+ tm.tm_sec = date.yySeconds;
+ }
+ else
+ {
+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+ }
+ tm.tm_hour += date.yyRelHour;
+ tm.tm_min += date.yyRelMinutes;
+ tm.tm_sec += date.yyRelSeconds;
+
+ /* Let mktime deduce tm_isdst if we have an absolute timestamp,
+ or if the relative timestamp mentions days, months, or years. */
+ if(date.yyHaveDate | date.yyHaveDay | date.yyHaveTime | date.yyRelDay | date.yyRelMonth | date.yyRelYear)
+ tm.tm_isdst = -1;
+
+ tm0 = tm;
+
+ Start = mktime (&tm);
+
+ if(Start == (time_t) -1)
+ {
+
+ /* Guard against falsely reporting errors near the time_t boundaries
+ when parsing times in other time zones. For example, if the min
+ time_t value is 1970-01-01 00:00:00 UTC and we are 8 hours ahead
+ of UTC, then the min localtime value is 1970-01-01 08:00:00; if
+ we apply mktime to 1970-01-01 00:00:00 we will get an error, so
+ we apply mktime to 1970-01-02 08:00:00 instead and adjust the time
+ zone by 24 hours to compensate. This algorithm assumes that
+ there is no DST transition within a day of the time_t boundaries. */
+ if(date.yyHaveZone)
+ {
+ tm = tm0;
+ if(tm.tm_year <= EPOCH - TM_YEAR_ORIGIN)
+ {
+ tm.tm_mday++;
+ date.yyTimezone -= 24 * 60;
+ }
+ else
+ {
+ tm.tm_mday--;
+ date.yyTimezone += 24 * 60;
+ }
+ Start = mktime (&tm);
+ }
+
+ if(Start == (time_t) -1)
+ return Start;
+ }
+
+ if(date.yyHaveDay && !date.yyHaveDate)
+ {
+ tm.tm_mday += ((date.yyDayNumber - tm.tm_wday + 7) % 7
+ + 7 * (date.yyDayOrdinal - (0 < date.yyDayOrdinal)));
+ Start = mktime (&tm);
+ if(Start == (time_t) -1)
+ return Start;
+ }
+
+ if(date.yyHaveZone)
+ {
+ long delta;
+ struct tm *gmt = gmtime (&Start);
+ if(!gmt)
+ return -1;
+ delta = date.yyTimezone * 60L + difftm (&tm, gmt);
+
+ if((Start + delta < Start) != (delta < 0))
+ return -1; /* time_t overflow */
+ Start += delta;
+ }
+
+ return Start;
+}
diff --git a/src/raptor.h b/src/raptor.h
new file mode 100644
index 0000000..91d361e
--- /dev/null
+++ b/src/raptor.h
@@ -0,0 +1 @@
+#include <raptor2.h>
diff --git a/src/raptor2.h.in b/src/raptor2.h.in
new file mode 100644
index 0000000..8e1d59c
--- /dev/null
+++ b/src/raptor2.h.in
@@ -0,0 +1,2097 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor.h - Redland Parser Toolkit for RDF (Raptor) - public API
+ *
+ * Copyright (C) 2000-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2000-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+
+#ifndef RAPTOR_H
+#define RAPTOR_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+/* Required for va_list in raptor_vsnprintf */
+#include <stdarg.h>
+
+
+/**
+ * RAPTOR_V2_AVAILABLE
+ *
+ * Flag for marking raptor2 API availability.
+ */
+#define RAPTOR_V2_AVAILABLE 1
+
+
+/**
+ * RAPTOR_VERSION:
+ *
+ * Raptor library version number
+ *
+ * Format: major * 10000 + minor * 100 + release
+ */
+#define RAPTOR_VERSION @RAPTOR_VERSION_DECIMAL@
+
+/**
+ * RAPTOR_VERSION_STRING:
+ *
+ * Raptor library version string
+ */
+#define RAPTOR_VERSION_STRING "@VERSION@"
+
+/**
+ * RAPTOR_VERSION_MAJOR:
+ *
+ * Raptor library major version
+ */
+#define RAPTOR_VERSION_MAJOR @RAPTOR_VERSION_MAJOR@
+
+/**
+ * RAPTOR_VERSION_MINOR:
+ *
+ * Raptor library minor version
+ */
+#define RAPTOR_VERSION_MINOR @RAPTOR_VERSION_MINOR@
+
+/**
+ * RAPTOR_VERSION_RELEASE:
+ *
+ * Raptor library release
+ */
+#define RAPTOR_VERSION_RELEASE @RAPTOR_VERSION_RELEASE@
+
+/**
+ * RAPTOR_API:
+ *
+ * Macro for wrapping API function call declarations.
+ *
+ */
+#ifndef RAPTOR_API
+# ifdef WIN32
+# ifdef __GNUC__
+# undef _declspec
+# define _declspec(x) __declspec(x)
+# endif
+# ifdef RAPTOR_STATIC
+# define RAPTOR_API
+# else
+# ifdef RAPTOR_INTERNAL
+# define RAPTOR_API _declspec(dllexport)
+# else
+# define RAPTOR_API _declspec(dllimport)
+# endif
+# endif
+# else
+# define RAPTOR_API
+# endif
+#endif
+
+/* Use gcc 3.1+ feature to allow marking of deprecated API calls.
+ * This gives a warning during compiling.
+ */
+#if( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3
+#define RAPTOR_DEPRECATED __attribute__((deprecated))
+#else
+#define RAPTOR_DEPRECATED
+#endif
+
+/**
+ * RAPTOR_PRINTF_FORMAT:
+ * @string_index: ignore me
+ * @first_to_check_index: ignore me
+ *
+ * Internal macro
+ */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
+#define RAPTOR_PRINTF_FORMAT(string_index, first_to_check_index) \
+ __attribute__((__format__(__printf__, string_index, first_to_check_index)))
+#else
+#define RAPTOR_PRINTF_FORMAT(string_index, first_to_check_index)
+#endif
+
+/**
+ * raptor_uri:
+ *
+ * Raptor URI Class.
+ */
+typedef struct raptor_uri_s raptor_uri;
+
+
+/* Public statics */
+
+/**
+ * raptor_short_copyright_string:
+ *
+ * Short copyright string (one line).
+ */
+RAPTOR_API
+extern const char * const raptor_short_copyright_string;
+
+/**
+ * raptor_copyright_string:
+ *
+ * Copyright string (multiple lines).
+ */
+RAPTOR_API
+extern const char * const raptor_copyright_string;
+
+/**
+ * raptor_version_string:
+ *
+ * Raptor version as a string.
+ */
+RAPTOR_API
+extern const char * const raptor_version_string;
+
+/**
+ * raptor_version_major:
+ *
+ * Raptor major version number.
+ */
+RAPTOR_API
+extern const unsigned int raptor_version_major;
+
+/**
+ * raptor_version_minor:
+ *
+ * Raptor minor version number.
+ */
+RAPTOR_API
+extern const unsigned int raptor_version_minor;
+
+/**
+ * raptor_version_release:
+ *
+ * Raptor release version number.
+ */
+RAPTOR_API
+extern const unsigned int raptor_version_release;
+
+/**
+ * raptor_version_decimal:
+ *
+ * Raptor version as a decimal number.
+ *
+ * Format: major * 10000 + minor * 100 + release
+ */
+RAPTOR_API
+extern const unsigned int raptor_version_decimal;
+
+/**
+ * raptor_license_string:
+ *
+ * Raptor license string.
+ */
+RAPTOR_API
+extern const char * const raptor_license_string;
+
+/**
+ * raptor_home_url_string:
+ *
+ * Raptor home page URL.
+ */
+RAPTOR_API
+extern const char * const raptor_home_url_string;
+
+/**
+ * raptor_xml_namespace_uri:
+ *
+ * XML Namespace (xml:) URI string.
+ */
+RAPTOR_API
+extern const unsigned char * const raptor_xml_namespace_uri;
+
+
+/**
+ * raptor_rdf_namespace_uri:
+ *
+ * RDF Namespace (rdf:) URI string.
+ */
+RAPTOR_API
+extern const unsigned char * const raptor_rdf_namespace_uri;
+
+/**
+ * raptor_rdf_namespace_uri_len:
+ *
+ * Length of #raptor_rdf_namespace_uri string
+ */
+RAPTOR_API
+extern const unsigned int raptor_rdf_namespace_uri_len;
+
+/**
+ * raptor_rdf_schema_namespace_uri:
+ *
+ * RDF Schema (rdfs:) Namespace URI string.
+ */
+RAPTOR_API
+extern const unsigned char * const raptor_rdf_schema_namespace_uri;
+
+/**
+ * raptor_xmlschema_datatypes_namespace_uri:
+ *
+ * XML Schema datatypes (xsd:) namespace URI string.
+ */
+RAPTOR_API
+extern const unsigned char * const raptor_xmlschema_datatypes_namespace_uri;
+
+/**
+ * raptor_owl_namespace_uri:
+ *
+ * OWL (owl:) Namespace URI string.
+ */
+RAPTOR_API
+extern const unsigned char * const raptor_owl_namespace_uri;
+
+/**
+ * raptor_xml_literal_datatype_uri_string:
+ *
+ * XML Literal datatype (rdf:XMLLiteral) URI string.
+ */
+RAPTOR_API
+extern const unsigned char * const raptor_xml_literal_datatype_uri_string;
+
+/**
+ * raptor_xml_literal_datatype_uri_string_len:
+ *
+ * Length of #raptor_xml_literal_datatype_uri_string
+ */
+RAPTOR_API
+extern const unsigned int raptor_xml_literal_datatype_uri_string_len;
+
+
+/* Public structure */
+/**
+ * raptor_world:
+ *
+ * Raptor world class.
+ */
+typedef struct raptor_world_s raptor_world;
+/**
+ * raptor_parser:
+ *
+ * Raptor Parser class
+ */
+typedef struct raptor_parser_s raptor_parser;
+/**
+ * raptor_serializer:
+ *
+ * Raptor Serializer class
+ */
+typedef struct raptor_serializer_s raptor_serializer;
+
+/**
+ * raptor_www:
+ *
+ * Raptor WWW class
+ */
+typedef struct raptor_www_s raptor_www;
+/**
+ * raptor_iostream:
+ *
+ * Raptor I/O Stream class
+ */
+typedef struct raptor_iostream_s raptor_iostream;
+/**
+ * raptor_xml_element:
+ *
+ * Raptor XML Element class
+ */
+typedef struct raptor_xml_element_s raptor_xml_element;
+/**
+ * raptor_xml_writer:
+ *
+ * Raptor XML Writer class
+ */
+typedef struct raptor_xml_writer_s raptor_xml_writer;
+/**
+ * raptor_qname:
+ *
+ * Raptor XML qname class
+ */
+typedef struct raptor_qname_s raptor_qname;
+/**
+ * raptor_namespace:
+ *
+ * Raptor XML Namespace class
+ */
+typedef struct raptor_namespace_s raptor_namespace;
+/**
+ * raptor_namespace_stack:
+ *
+ * Raptor XML Namespace Stack class
+ */
+typedef struct raptor_namespace_stack_s raptor_namespace_stack;
+
+/**
+ * raptor_sax2:
+ *
+ * Raptor SAX2 class
+ */
+typedef struct raptor_sax2_s raptor_sax2;
+
+
+/**
+ * raptor_type_q:
+ * @mime_type: MIME type string
+ * @mime_type_len: length of @mime_type
+ * @q: Q value 0-10 standing for decimal 0.0-1.0
+ *
+ * (MIME Type, Q) pair
+ */
+typedef struct {
+ const char* mime_type;
+ size_t mime_type_len;
+ unsigned char q;
+} raptor_type_q;
+
+
+/**
+ * raptor_syntax_bitflags:
+ * @RAPTOR_SYNTAX_NEED_BASE_URI: the syntax requires a base URI
+ *
+ * Bit flags for #raptor_syntax_description flags field
+ */
+typedef enum {
+ RAPTOR_SYNTAX_NEED_BASE_URI = 1
+} raptor_syntax_bitflags;
+
+
+/**
+ * raptor_syntax_description:
+ * @names: array of syntax names - the first one (required) is the public name, the rest are aliases. The array is NULL terminated.
+ * @names_count: size of @names array
+ * @label: long descriptive label for syntax
+ * @mime_types: Array of (MIME type, Q) values associated with the syntax (or NULL). If present the array is NULL terminated.
+ * @mime_types_count: size of @mime_types array
+ * @uri_strings: array of URIs identifying the syntax (or NULL). The first one if present is the main URI, the rest are aliases. The array is NULL terminated.
+ * @uri_strings_count: size of @uri_strings array
+ * @flags: See #raptor_syntax_bitflags for the bits
+ *
+ * Description of a syntax or file format.
+ *
+ */
+typedef struct {
+ const char* const* names;
+ unsigned int names_count;
+
+ const char* label;
+
+ const raptor_type_q* mime_types;
+ unsigned int mime_types_count;
+
+ const char* const* uri_strings;
+ unsigned int uri_strings_count;
+
+ unsigned int flags;
+} raptor_syntax_description;
+
+
+/**
+ * raptor_term_type:
+ * @RAPTOR_TERM_TYPE_URI: RDF URI
+ * @RAPTOR_TERM_TYPE_LITERAL: RDF literal
+ * @RAPTOR_TERM_TYPE_BLANK: RDF blank node
+ * @RAPTOR_TERM_TYPE_UNKNOWN: Internal
+ *
+ * Type of term in a #raptor_statement
+ *
+ * Node type 3 is unused but exists to preserve numeric compatibility
+ * with librdf_node_type values.
+ */
+typedef enum {
+ RAPTOR_TERM_TYPE_UNKNOWN = 0,
+ RAPTOR_TERM_TYPE_URI = 1,
+ RAPTOR_TERM_TYPE_LITERAL = 2,
+ /* unused type 3 */
+ RAPTOR_TERM_TYPE_BLANK = 4
+} raptor_term_type;
+
+
+/**
+ * raptor_locator:
+ * @uri: URI of location (or NULL)
+ * @file: Filename of location (or NULL)
+ * @line: Line number of location (or <0 for no line)
+ * @column: Column number of location (or <0 for no column)
+ * @byte: Byte number of location (or <0 for no byte)
+ *
+ * Location information for an error, warning or information message.
+ */
+typedef struct {
+ raptor_uri *uri;
+ const char *file;
+ int line;
+ int column;
+ int byte;
+} raptor_locator;
+
+/**
+ * raptor_option:
+ * @RAPTOR_OPTION_SCANNING: If true (default false), the RDF/XML
+ * parser will look for embedded rdf:RDF elements inside the XML
+ * content, and not require that the XML start with an rdf:RDF root
+ * element.
+ * @RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES: If true (default true)
+ * then the RDF/XML parser will allow non-XML namespaced attributes
+ * to be accepted as well as rdf: namespaced ones. For example,
+ * 'about' and 'ID' will be interpreted as if they were rdf:about
+ * and rdf:ID respectively.
+ * @RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES: If true (default true)
+ * then the RDF/XML parser will allow unknown parsetypes to be
+ * present and will pass them on to the user. Unimplemented at
+ * present.
+ * @RAPTOR_OPTION_ALLOW_BAGID: If true (default true) then the
+ * RDF/XML parser will support the rdf:bagID attribute that was
+ * removed from the RDF/XML language when it was revised. This
+ * support may be removed in future.
+ * @RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST: If true (default false)
+ * then the RDF/XML parser will generate the idList rdf:type
+ * rdf:List triple in the handling of rdf:parseType="Collection".
+ * This triple was removed during the revising of RDF/XML after
+ * collections were initially added.
+ * @RAPTOR_OPTION_NORMALIZE_LANGUAGE: If true (default true) then
+ * XML language values such as from xml:lang will be normalized to
+ * lowercase.
+ * @RAPTOR_OPTION_NON_NFC_FATAL: If true (default false) then
+ * illegal Unicode Normal Form C in literals will give a fatal
+ * error, otherwise just a warning.
+ * @RAPTOR_OPTION_WARN_OTHER_PARSETYPES: If true (default true) then
+ * the RDF/XML parser will warn about unknown rdf:parseType values.
+ * @RAPTOR_OPTION_CHECK_RDF_ID: If true (default true) then the
+ * RDF/XML will check rdf:ID attribute values for duplicates and
+ * cause an error if any are found.
+ * @RAPTOR_OPTION_RELATIVE_URIS: If true (default true) then
+ * relative URIs will be used wherever possible when serializing.
+ * @RAPTOR_OPTION_WRITER_AUTO_INDENT: Automatically indent elements when
+ * seriailizing.
+ * @RAPTOR_OPTION_WRITER_AUTO_EMPTY: Automatically detect and
+ * abbreviate empty elements when serializing.
+ * @RAPTOR_OPTION_WRITER_INDENT_WIDTH: Integer number of spaces to use
+ * for each indent level when serializing with auto indent.
+ * @RAPTOR_OPTION_WRITER_XML_VERSION: Integer XML version XML 1.0 (10) or XML 1.1 (11)
+ * @RAPTOR_OPTION_WRITER_XML_DECLARATION: Write XML 1.0 or 1.1 declaration.
+ * @RAPTOR_OPTION_NO_NET: Deny network requests inside other requests.
+ * @RAPTOR_OPTION_RESOURCE_BORDER: Border color of resource
+ * nodes for GraphViz DOT serializer.
+ * @RAPTOR_OPTION_LITERAL_BORDER: Border color of literal nodes
+ * for GraphViz DOT serializer.
+ * @RAPTOR_OPTION_BNODE_BORDER: Border color of blank nodes for
+ * GraphViz DOT serializer.
+ * @RAPTOR_OPTION_RESOURCE_FILL: Fill color of resource nodes
+ * for GraphViz DOT serializer.
+ * @RAPTOR_OPTION_LITERAL_FILL: Fill color of literal nodes for
+ * GraphViz DOT serializer.
+ * @RAPTOR_OPTION_BNODE_FILL: Fill color of blank nodes for
+ * GraphViz DOT serializer.
+ * @RAPTOR_OPTION_HTML_TAG_SOUP: Use a lax HTML parser if an XML parser
+ * fails when read HTML for GRDDL parser.
+ * @RAPTOR_OPTION_MICROFORMATS: Look for microformats for GRDDL parser.
+ * @RAPTOR_OPTION_HTML_LINK: Look for head &lt;link&gt; to type rdf/xml
+ * for GRDDL parser.
+ * @RAPTOR_OPTION_WWW_TIMEOUT: Set timeout for internal WWW URI requests
+ * for GRDDL parser.
+ * @RAPTOR_OPTION_WRITE_BASE_URI: Write @base directive for Turtle/N3.
+ * @RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL: HTTP Cache-Control: header
+ * @RAPTOR_OPTION_WWW_HTTP_USER_AGENT: HTTP User-Agent: header
+ * @RAPTOR_OPTION_JSON_CALLBACK: JSON serializer callback function.
+ * @RAPTOR_OPTION_JSON_EXTRA_DATA: JSON serializer extra top-level data
+ * @RAPTOR_OPTION_RSS_TRIPLES: Atom/RSS serializer writes extra RDF triples it finds (none, rdf-xml, atom-triples)
+ * @RAPTOR_OPTION_ATOM_ENTRY_URI: Atom entry URI. If given, generate an Atom Entry Document with the item having the given URI, otherwise generate an Atom Feed Document with any items found.
+ * @RAPTOR_OPTION_PREFIX_ELEMENTS: Integer. If set, generate Atom/RSS1.0 documents with prefixed elements, otherwise unprefixed.
+ * @RAPTOR_OPTION_STRICT: Boolean. If set, operate in strict conformance mode.
+ * @RAPTOR_OPTION_WWW_CERT_FILENAME: String. SSL client certificate filename
+ * @RAPTOR_OPTION_WWW_CERT_TYPE: String. SSL client certificate type
+ * @RAPTOR_OPTION_WWW_CERT_PASSPHRASE: String. SSL client certificate passphrase
+ * @RAPTOR_OPTION_WWW_SSL_VERIFY_PEER: Integer. SSL verify peer - non-0 to verify peer SSL certificate (default)
+ * @RAPTOR_OPTION_WWW_SSL_VERIFY_HOST: Integer. SSL verify host - 0 none, 1 CN match, 2 host match (default). Other values are ignored.
+ * @RAPTOR_OPTION_NO_FILE: Deny file reading requests inside other requests.
+ * @RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES: When reading XML, load external entities.
+ * @RAPTOR_OPTION_LAST: Internal
+ *
+ * Raptor parser, serializer or XML writer options.
+ */
+typedef enum {
+ RAPTOR_OPTION_SCANNING,
+ RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES,
+ RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES,
+ RAPTOR_OPTION_ALLOW_BAGID,
+ RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST,
+ RAPTOR_OPTION_NORMALIZE_LANGUAGE,
+ RAPTOR_OPTION_NON_NFC_FATAL,
+ RAPTOR_OPTION_WARN_OTHER_PARSETYPES,
+ RAPTOR_OPTION_CHECK_RDF_ID,
+ RAPTOR_OPTION_RELATIVE_URIS,
+ RAPTOR_OPTION_WRITER_AUTO_INDENT,
+ RAPTOR_OPTION_WRITER_AUTO_EMPTY,
+ RAPTOR_OPTION_WRITER_INDENT_WIDTH,
+ RAPTOR_OPTION_WRITER_XML_VERSION,
+ RAPTOR_OPTION_WRITER_XML_DECLARATION,
+ RAPTOR_OPTION_NO_NET,
+ RAPTOR_OPTION_RESOURCE_BORDER,
+ RAPTOR_OPTION_LITERAL_BORDER,
+ RAPTOR_OPTION_BNODE_BORDER,
+ RAPTOR_OPTION_RESOURCE_FILL,
+ RAPTOR_OPTION_LITERAL_FILL,
+ RAPTOR_OPTION_BNODE_FILL,
+ RAPTOR_OPTION_HTML_TAG_SOUP,
+ RAPTOR_OPTION_MICROFORMATS,
+ RAPTOR_OPTION_HTML_LINK,
+ RAPTOR_OPTION_WWW_TIMEOUT,
+ RAPTOR_OPTION_WRITE_BASE_URI,
+ RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL,
+ RAPTOR_OPTION_WWW_HTTP_USER_AGENT,
+ RAPTOR_OPTION_JSON_CALLBACK,
+ RAPTOR_OPTION_JSON_EXTRA_DATA,
+ RAPTOR_OPTION_RSS_TRIPLES,
+ RAPTOR_OPTION_ATOM_ENTRY_URI,
+ RAPTOR_OPTION_PREFIX_ELEMENTS,
+ RAPTOR_OPTION_STRICT,
+ RAPTOR_OPTION_WWW_CERT_FILENAME,
+ RAPTOR_OPTION_WWW_CERT_TYPE,
+ RAPTOR_OPTION_WWW_CERT_PASSPHRASE,
+ RAPTOR_OPTION_NO_FILE,
+ RAPTOR_OPTION_WWW_SSL_VERIFY_PEER,
+ RAPTOR_OPTION_WWW_SSL_VERIFY_HOST,
+ RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES,
+ RAPTOR_OPTION_LAST = RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES
+} raptor_option;
+
+
+/**
+ * raptor_term_literal_value:
+ * @string: literal string
+ * @string_len: length of string
+ * @datatype: datatype URI (or NULL)
+ * @language: literal language (or NULL)
+ * @language_len: length of language
+ *
+ * Literal term value - this typedef exists solely for use in #raptor_term
+ *
+ * Either @datatype or @language may be non-NULL but not both.
+ */
+typedef struct {
+ unsigned char *string;
+ unsigned int string_len;
+
+ raptor_uri *datatype;
+
+ unsigned char *language;
+ unsigned char language_len;
+} raptor_term_literal_value;
+
+
+/**
+ * raptor_term_blank_value:
+ * @string: literal string
+ * @string_len: length of string
+ *
+ * Blank term value - this typedef exists solely for use in #raptor_term
+ *
+ */
+typedef struct {
+ unsigned char *string;
+ unsigned int string_len;
+} raptor_term_blank_value;
+
+
+/**
+ * raptor_term_value:
+ * @uri: uri value when term type is #RAPTOR_TERM_TYPE_URI
+ * @literal: literal value when term type is #RAPTOR_TERM_TYPE_LITERAL
+ * @blank: blank value when term type is #RAPTOR_TERM_TYPE_BLANK
+ *
+ * Term value - this typedef exists solely for use in #raptor_term
+ *
+ **/
+typedef union {
+ raptor_uri *uri;
+
+ raptor_term_literal_value literal;
+
+ raptor_term_blank_value blank;
+} raptor_term_value;
+
+
+/**
+ * raptor_term:
+ * @world: world
+ * @usage: usage reference count (if >0)
+ * @type: term type
+ * @value: term values per type
+ *
+ * An RDF statement term
+ *
+ */
+typedef struct {
+ raptor_world* world;
+
+ int usage;
+
+ raptor_term_type type;
+
+ raptor_term_value value;
+
+} raptor_term;
+
+
+/**
+ * raptor_statement:
+ * @world: world pointer
+ * @usage: usage count
+ * @subject: statement subject
+ * @predicate: statement predicate
+ * @object: statement object
+ * @graph: statement graph name (or NULL if not present)
+ *
+ * An RDF triple with optional graph name (quad)
+ *
+ * See #raptor_term for a description of how the fields may be used.
+ * As returned by a parser statement_handler.
+ */
+typedef struct {
+ raptor_world* world;
+ int usage;
+ raptor_term* subject;
+ raptor_term* predicate;
+ raptor_term* object;
+ raptor_term* graph;
+} raptor_statement;
+
+
+/**
+ * raptor_log_level:
+ * @RAPTOR_LOG_LEVEL_NONE: Internal
+ * @RAPTOR_LOG_LEVEL_TRACE: very fine-grained tracing messages information
+ * @RAPTOR_LOG_LEVEL_DEBUG: fine-grained tracing messages suitable for debugging
+ * @RAPTOR_LOG_LEVEL_INFO: coarse-grained information messages
+ * @RAPTOR_LOG_LEVEL_WARN: warning messages of potentially harmful problems
+ * @RAPTOR_LOG_LEVEL_ERROR: error messages where the application can continue
+ * @RAPTOR_LOG_LEVEL_FATAL: fatal error message where the application will likely abort
+ * @RAPTOR_LOG_LEVEL_LAST: Internal
+ *
+ * Log levels
+ */
+typedef enum {
+ RAPTOR_LOG_LEVEL_NONE,
+ RAPTOR_LOG_LEVEL_TRACE,
+ RAPTOR_LOG_LEVEL_DEBUG,
+ RAPTOR_LOG_LEVEL_INFO,
+ RAPTOR_LOG_LEVEL_WARN,
+ RAPTOR_LOG_LEVEL_ERROR,
+ RAPTOR_LOG_LEVEL_FATAL,
+ RAPTOR_LOG_LEVEL_LAST = RAPTOR_LOG_LEVEL_FATAL
+} raptor_log_level;
+
+
+/**
+ * raptor_domain:
+ * @RAPTOR_DOMAIN_IOSTREAM: I/O stream
+ * @RAPTOR_DOMAIN_NAMESPACE: XML Namespace / namespace stack
+ * @RAPTOR_DOMAIN_PARSER: RDF Parser
+ * @RAPTOR_DOMAIN_QNAME: XML QName
+ * @RAPTOR_DOMAIN_SAX2: XML SAX2
+ * @RAPTOR_DOMAIN_SERIALIZER: RDF Serializer
+ * @RAPTOR_DOMAIN_TERM: RDF Term
+ * @RAPTOR_DOMAIN_TURTLE_WRITER: Turtle Writer
+ * @RAPTOR_DOMAIN_URI: RDF Uri
+ * @RAPTOR_DOMAIN_WORLD: RDF world
+ * @RAPTOR_DOMAIN_WWW: WWW
+ * @RAPTOR_DOMAIN_XML_WRITER: XML Writer
+ * @RAPTOR_DOMAIN_NONE: Internal
+ * @RAPTOR_DOMAIN_LAST: Internal
+ *
+ * Log domain
+ */
+typedef enum {
+ RAPTOR_DOMAIN_NONE,
+ RAPTOR_DOMAIN_IOSTREAM,
+ RAPTOR_DOMAIN_NAMESPACE,
+ RAPTOR_DOMAIN_PARSER,
+ RAPTOR_DOMAIN_QNAME,
+ RAPTOR_DOMAIN_SAX2,
+ RAPTOR_DOMAIN_SERIALIZER,
+ RAPTOR_DOMAIN_TERM,
+ RAPTOR_DOMAIN_TURTLE_WRITER,
+ RAPTOR_DOMAIN_URI,
+ RAPTOR_DOMAIN_WORLD,
+ RAPTOR_DOMAIN_WWW,
+ RAPTOR_DOMAIN_XML_WRITER,
+ RAPTOR_DOMAIN_LAST = RAPTOR_DOMAIN_XML_WRITER
+} raptor_domain;
+
+
+/**
+ * raptor_log_message:
+ * @code: error code or < 0 if not used or known
+ * @domain: message domain or #RAPTOR_DOMAIN_NONE if not used or known
+ * @level: log message level
+ * @locator: location associated with message or NULL if not known
+ * @text: message string
+ *
+ * Log message.
+ */
+typedef struct {
+ int code;
+ raptor_domain domain;
+ raptor_log_level level;
+ raptor_locator *locator;
+ const char *text;
+} raptor_log_message;
+
+
+/**
+ * raptor_log_handler:
+ * @user_data: user data
+ * @message: log message
+ *
+ * Handler function for log messages with location
+ *
+ * Used during parsing and serializing for errors and warnings that
+ * may include location information. Handlers may be set
+ * by raptor_world_set_log_handler().
+ *
+ */
+typedef void (*raptor_log_handler)(void *user_data, raptor_log_message *message);
+
+
+/**
+ * raptor_statement_handler:
+ * @user_data: user data
+ * @statement: statement to report
+ *
+ * Statement (triple) reporting handler function.
+ *
+ * This handler function set with
+ * raptor_parser_set_statement_handler() on a parser receives
+ * statements as the parsing proceeds. The @statement argument to the
+ * handler is shared and must be copied by the caller with
+ * raptor_statement_copy().
+ */
+typedef void (*raptor_statement_handler)(void *user_data, raptor_statement *statement);
+
+/**
+ * raptor_graph_mark_flags:
+ * @RAPTOR_GRAPH_MARK_START: mark is start of graph (otherwise is end)
+ * @RAPTOR_GRAPH_MARK_DECLARED: mark was declared in syntax rather than implict
+ *
+ * Graph mark handler bitmask flags
+ */
+typedef enum {
+ RAPTOR_GRAPH_MARK_START = 1,
+ RAPTOR_GRAPH_MARK_DECLARED = 2
+} raptor_graph_mark_flags;
+
+
+/**
+ * raptor_graph_mark_handler:
+ * @user_data: user data
+ * @graph: graph to report, NULL for the default graph
+ * @flags: bitmask of #raptor_graph_mark_flags flags
+ *
+ * Graph start/end mark handler function.
+ *
+ * Records start and end of graphs happening in a stream of generated
+ * #raptor_statement via the statement handler. The callback starts a
+ * graph when @flags has #RAPTOR_GRAPH_MARK_START bit set.
+ *
+ * The start and ends may be either declared in the syntax via some
+ * keyword or mechanism such as TRiG {} syntax when @flags has bit
+ * #RAPTOR_GRAPH_MARK_DECLARED set, or be implied by the start/end of
+ * the data in other syntaxes, and the bit will be unset.
+ */
+typedef void (*raptor_graph_mark_handler)(void *user_data, raptor_uri *graph, int flags);
+
+/**
+ * raptor_generate_bnodeid_handler:
+ * @user_data: user data
+ * @user_bnodeid: a user-specified ID or NULL if none available.
+ *
+ * Generate a blank node identifier handler function.
+ *
+ * Return value: new blank node ID to use
+ */
+typedef unsigned char* (*raptor_generate_bnodeid_handler)(void *user_data, unsigned char* user_bnodeid);
+
+/**
+ * raptor_namespace_handler:
+ * @user_data: user data
+ * @nspace: #raptor_namespace declared
+ *
+ * XML Namespace declaration reporting handler set by
+ * raptor_parser_set_namespace_handler().
+ */
+typedef void (*raptor_namespace_handler)(void* user_data, raptor_namespace *nspace);
+
+
+/**
+ * raptor_www_write_bytes_handler:
+ * @www: WWW object
+ * @userdata: user data
+ * @ptr: data pointer
+ * @size: size of individual item
+ * @nmemb: number of items
+ *
+ * Receiving bytes of data from WWW retrieval handler.
+ *
+ * Set by raptor_www_set_write_bytes_handler().
+ */
+typedef void (*raptor_www_write_bytes_handler)(raptor_www* www, void *userdata, const void *ptr, size_t size, size_t nmemb);
+
+/**
+ * raptor_www_content_type_handler:
+ * @www: WWW object
+ * @userdata: user data
+ * @content_type: content type seen
+ *
+ * Receiving Content-Type: header from WWW retrieval handler.
+ *
+ * Set by raptor_www_set_content_type_handler().
+ */
+typedef void (*raptor_www_content_type_handler)(raptor_www* www, void *userdata, const char *content_type);
+
+/**
+ * raptor_www_final_uri_handler:
+ * @www: WWW object
+ * @userdata: user data
+ * @final_uri: final URI seen
+ *
+ * Receiving the final resolved URI from a WWW retrieval
+ *
+ * Set by raptor_www_set_final_uri_handler().
+ */
+typedef void (*raptor_www_final_uri_handler)(raptor_www* www, void *userdata, raptor_uri *final_uri);
+
+/**
+ * raptor_uri_filter_func:
+ * @user_data: user data
+ * @uri: #raptor_uri URI to check
+ *
+ * Callback function for #raptor_www_set_uri_filter
+ *
+ * Return value: non-0 to filter the URI
+ */
+typedef int (*raptor_uri_filter_func)(void *user_data, raptor_uri* uri);
+
+
+/**
+ * raptor_world_flag:
+ * @RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE: if set (non-0 value) - save/restore the libxml generic error handler when raptor library initializes (default set)
+ * @RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE: if set (non-0 value) - save/restore the libxml structured error handler when raptor library terminates (default set)
+ * @RAPTOR_WORLD_FLAG_URI_INTERNING: if set (non-0 value) - each URI is saved interned in-memory and reused (default set)
+ * @RAPTOR_WORLD_FLAG_WWW_SKIP_INIT_FINISH: if set (non-0 value) the raptor will neither initialise or terminate the lower level WWW library. Usually in raptor initialising either curl_global_init (for libcurl) are called and in raptor cleanup, curl_global_cleanup is called. This flag allows the application finer control over these libraries such as setting other global options or potentially calling and terminating raptor several times. It does mean that applications which use this call must do their own extra work in order to allocate and free all resources to the system.
+ *
+ * Raptor world flags
+ *
+ * These are used by raptor_world_set_flags() to control raptor-wide
+ * options across classes. These must be set before
+ * raptor_world_open() is called explicitly or implicitly (by
+ * creating a raptor object). There is no enumeration function for
+ * these flags because they are not user options and must be set
+ * before the library is initialised. For similar reasons, there is
+ * no get function.
+ *
+ * If any libxml handler saving/restoring is enabled, any existing
+ * handler and context is saved before parsing and restored
+ * afterwards. Otherwise, no saving/restoring is performed.
+ *
+ */
+typedef enum {
+ RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE = 1,
+ RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE = 2,
+ RAPTOR_WORLD_FLAG_URI_INTERNING = 3,
+ RAPTOR_WORLD_FLAG_WWW_SKIP_INIT_FINISH = 4
+} raptor_world_flag;
+
+
+/**
+ * raptor_data_compare_handler:
+ * @data1: first data object
+ * @data2: second data object
+ *
+ * Function to compare two data objects - signature like strcmp() and function pssed to qsort()
+ *
+ * Designed to be passed into generic data structure constructors
+ * like raptor_new_avltree().
+ *
+ * Return value: compare value <0 if @data1 is before @data2, =0 if equal, >0 if @data1 is after @data2
+ */
+typedef int (*raptor_data_compare_handler)(const void* data1, const void* data2);
+
+
+/**
+ * raptor_data_malloc_handler:
+ * @size: data size
+ *
+ * Typedef for a function to allocate memory - signature like malloc()
+ *
+ * Designed to be passed into constructors
+ * like raptor_www_fetch_to_string
+ *
+ * Return value: pointer to newly allocated memory or NULL on failure
+ */
+typedef void* (*raptor_data_malloc_handler)(size_t size);
+
+
+/**
+ * raptor_data_free_handler:
+ * @data: data object or NULL
+ *
+ * Typedef for function to free a data object - signature like free()
+ *
+ * Designed to be passed into generic data structure constructors
+ * like raptor_new_avltree(). If @data is NULL, nothing should be done.
+ */
+typedef void (*raptor_data_free_handler)(void* data);
+
+
+/**
+ * raptor_data_context_free_handler:
+ * @context: context data for the free function
+ * @object: object to free
+ *
+ * Handler function for freeing a sequence item with a contextual pointer.
+ *
+ * Set by raptor_new_sequence_with_context().
+*/
+typedef void (*raptor_data_context_free_handler)(void* context, void* object);
+
+/**
+ * raptor_data_print_handler:
+ * @object: object to print
+ * @fh: FILE* to print to
+ *
+ * Handler function for printing an object to a stream.
+ *
+ * Set by raptor_new_sequence()
+ *
+ * Return value: non-0 on failure
+ */
+typedef int (*raptor_data_print_handler)(void *object, FILE *fh);
+
+/**
+ * raptor_data_context_print_handler:
+ * @context: context data for the print function
+ * @object: object to print
+ * @fh: FILE* to print to
+ *
+ * Function function for printing an object with data context to a stream.
+ *
+ * Set by raptor_new_sequence_with_context()
+ *
+ * Return value: non-0 on failure
+ */
+typedef int (*raptor_data_context_print_handler)(void *context, void *object, FILE *fh);
+
+/**
+ * raptor_stringbuffer:
+ *
+ * Raptor string buffer class
+ */
+typedef struct raptor_stringbuffer_s raptor_stringbuffer;
+
+
+/* Public functions */
+
+#define raptor_new_world() raptor_new_world_internal(RAPTOR_VERSION)
+/* The real target of the raptor_new_world() macro */
+RAPTOR_API
+raptor_world *raptor_new_world_internal(unsigned int version_decimal);
+RAPTOR_API
+int raptor_world_open(raptor_world* world);
+RAPTOR_API
+void raptor_free_world(raptor_world* world);
+RAPTOR_API
+int raptor_world_set_libxslt_security_preferences(raptor_world *world, void *security_preferences);
+RAPTOR_API
+int raptor_world_set_flag(raptor_world *world, raptor_world_flag flag, int value);
+RAPTOR_API
+int raptor_world_set_log_handler(raptor_world *world, void *user_data, raptor_log_handler handler);
+RAPTOR_API
+void raptor_world_set_generate_bnodeid_handler(raptor_world* world, void *user_data, raptor_generate_bnodeid_handler handler);
+RAPTOR_API
+unsigned char* raptor_world_generate_bnodeid(raptor_world *world);
+RAPTOR_API
+void raptor_world_set_generate_bnodeid_parameters(raptor_world* world, char *prefix, int base);
+RAPTOR_API
+const char* raptor_log_level_get_label(raptor_log_level level);
+RAPTOR_API
+const char* raptor_domain_get_label(raptor_domain domain);
+
+/* Names */
+RAPTOR_API
+int raptor_world_is_parser_name(raptor_world* world, const char *name);
+RAPTOR_API
+const char* raptor_world_guess_parser_name(raptor_world* world, raptor_uri *uri, const char *mime_type, const unsigned char *buffer, size_t len, const unsigned char *identifier);
+RAPTOR_API
+int raptor_world_is_serializer_name(raptor_world* world, const char *name);
+
+/* Syntax descriptions */
+RAPTOR_API
+const raptor_syntax_description* raptor_world_get_parser_description(raptor_world* world, unsigned int counter);
+RAPTOR_API
+const raptor_syntax_description* raptor_world_get_serializer_description(raptor_world* world, unsigned int counter);
+RAPTOR_API
+int raptor_syntax_description_validate(raptor_syntax_description* desc);
+
+RAPTOR_API
+raptor_option raptor_world_get_option_from_uri(raptor_world* world, raptor_uri *uri);
+
+
+/* Term Class */
+RAPTOR_API
+raptor_term* raptor_new_term_from_uri(raptor_world* world, raptor_uri* uri);
+RAPTOR_API
+raptor_term* raptor_new_term_from_counted_uri_string(raptor_world* world, const unsigned char *uri_string, size_t length);
+RAPTOR_API
+raptor_term* raptor_new_term_from_uri_string(raptor_world* world, const unsigned char *uri_string);
+RAPTOR_API
+raptor_term* raptor_new_term_from_literal(raptor_world* world, const unsigned char* literal, raptor_uri* datatype, const unsigned char* language);
+RAPTOR_API
+raptor_term* raptor_new_term_from_counted_literal(raptor_world* world, const unsigned char* literal, size_t literal_len, raptor_uri* datatype, const unsigned char* language, unsigned char language_len);
+RAPTOR_API
+raptor_term* raptor_new_term_from_blank(raptor_world* world, const unsigned char* blank);
+RAPTOR_API
+raptor_term* raptor_new_term_from_counted_blank(raptor_world* world, const unsigned char* blank, size_t length);
+RAPTOR_API
+raptor_term* raptor_term_copy(raptor_term* term);
+RAPTOR_API
+int raptor_term_compare(const raptor_term *t1, const raptor_term *t2);
+RAPTOR_API
+int raptor_term_equals(raptor_term* t1, raptor_term* t2);
+RAPTOR_API
+void raptor_free_term(raptor_term *term);
+
+RAPTOR_API
+unsigned char* raptor_term_to_counted_string(raptor_term *term, size_t* len_p);
+RAPTOR_API
+unsigned char* raptor_term_to_string(raptor_term *term);
+RAPTOR_API
+int raptor_term_ntriples_write(const raptor_term *term, raptor_iostream* iostr);
+RAPTOR_API
+int raptor_uri_turtle_write(raptor_world *world, raptor_iostream* iostr, raptor_uri* uri, raptor_namespace_stack *nstack, raptor_uri *base_uri);
+RAPTOR_API
+int raptor_term_turtle_write(raptor_iostream* iostr, raptor_term* term, raptor_namespace_stack *nstack, raptor_uri *base_uri);
+RAPTOR_API
+unsigned char* raptor_uri_to_turtle_counted_string(raptor_world *world, raptor_uri* uri, raptor_namespace_stack *nstack, raptor_uri *base_uri, size_t *len_p);
+RAPTOR_API
+unsigned char* raptor_uri_to_turtle_string(raptor_world *world, raptor_uri* uri, raptor_namespace_stack *nstack, raptor_uri *base_uri);
+RAPTOR_API
+unsigned char* raptor_term_to_turtle_counted_string(raptor_term* term, raptor_namespace_stack *nstack, raptor_uri *base_uri, size_t *len_p);
+RAPTOR_API
+unsigned char* raptor_term_to_turtle_string(raptor_term* term, raptor_namespace_stack *nstack, raptor_uri *base_uri);
+
+
+/* Statement Class */
+RAPTOR_API
+void raptor_statement_init(raptor_statement *statement, raptor_world *world);
+RAPTOR_API
+void raptor_statement_clear(raptor_statement *statement);
+RAPTOR_API
+raptor_statement* raptor_new_statement(raptor_world *world);
+RAPTOR_API
+raptor_statement* raptor_new_statement_from_nodes(raptor_world* world, raptor_term *subject, raptor_term *predicate, raptor_term *object, raptor_term *graph);
+RAPTOR_API
+raptor_statement* raptor_statement_copy(raptor_statement *statement);
+RAPTOR_API
+void raptor_free_statement(raptor_statement *statement);
+
+RAPTOR_API
+int raptor_statement_print(const raptor_statement * statement, FILE *stream);
+RAPTOR_API
+int raptor_statement_print_as_ntriples(const raptor_statement * statement, FILE *stream);
+RAPTOR_API
+int raptor_statement_compare(const raptor_statement *s1, const raptor_statement *s2);
+RAPTOR_API
+int raptor_statement_equals(const raptor_statement* s1, const raptor_statement* s2);
+
+
+/* Parser Class */
+RAPTOR_API
+raptor_parser* raptor_new_parser(raptor_world* world, const char *name);
+RAPTOR_API
+raptor_parser* raptor_new_parser_for_content(raptor_world* world, raptor_uri *uri, const char *mime_type, const unsigned char *buffer, size_t len, const unsigned char *identifier);
+RAPTOR_API
+void raptor_free_parser(raptor_parser* parser);
+
+/* methods */
+
+/* Handlers */
+RAPTOR_API
+void raptor_parser_set_statement_handler(raptor_parser* parser, void *user_data, raptor_statement_handler handler);
+RAPTOR_API
+void raptor_parser_set_graph_mark_handler(raptor_parser* parser, void *user_data, raptor_graph_mark_handler handler);
+RAPTOR_API
+void raptor_parser_set_namespace_handler(raptor_parser* parser, void *user_data, raptor_namespace_handler handler);
+RAPTOR_API
+void raptor_parser_set_uri_filter(raptor_parser* parser, raptor_uri_filter_func filter, void* user_data);
+RAPTOR_API
+raptor_locator* raptor_parser_get_locator(raptor_parser* rdf_parser);
+
+
+/* Parsing functions */
+RAPTOR_API
+int raptor_parser_parse_start(raptor_parser *rdf_parser, raptor_uri *uri);
+RAPTOR_API
+int raptor_parser_parse_chunk(raptor_parser* rdf_parser, const unsigned char *buffer, size_t len, int is_end);
+RAPTOR_API
+int raptor_parser_parse_file_stream(raptor_parser* rdf_parser, FILE *stream, const char *filename, raptor_uri *base_uri);
+RAPTOR_API
+int raptor_parser_parse_file(raptor_parser* rdf_parser, raptor_uri *uri, raptor_uri *base_uri);
+RAPTOR_API
+int raptor_parser_parse_uri(raptor_parser* rdf_parser, raptor_uri *uri, raptor_uri *base_uri);
+RAPTOR_API
+int raptor_parser_parse_uri_with_connection(raptor_parser* rdf_parser, raptor_uri *uri, raptor_uri *base_uri, void *connection);
+RAPTOR_API
+int raptor_parser_parse_iostream(raptor_parser* rdf_parser, raptor_iostream *iostr, raptor_uri *base_uri);
+RAPTOR_API
+void raptor_parser_parse_abort(raptor_parser* rdf_parser);
+RAPTOR_API
+const char* raptor_parser_get_name(raptor_parser *rdf_parser);
+RAPTOR_API
+const raptor_syntax_description* raptor_parser_get_description(raptor_parser *rdf_parser);
+
+/* parser option methods */
+RAPTOR_API
+int raptor_parser_set_option(raptor_parser *parser, raptor_option option, const char* string, int integer);
+RAPTOR_API
+int raptor_parser_get_option(raptor_parser *parser, raptor_option option, char** string_p, int* integer_p);
+
+/* parser utility methods */
+RAPTOR_API
+const char* raptor_parser_get_accept_header(raptor_parser* rdf_parser);
+RAPTOR_API
+raptor_world* raptor_parser_get_world(raptor_parser* rdf_parser);
+RAPTOR_API
+raptor_uri* raptor_parser_get_graph(raptor_parser* rdf_parser);
+
+
+/* Locator Class */
+/* methods */
+RAPTOR_API
+int raptor_locator_print(raptor_locator* locator, FILE *stream);
+RAPTOR_API
+int raptor_locator_format(char *buffer, size_t length, raptor_locator* locator);
+RAPTOR_API
+int raptor_locator_line(raptor_locator *locator);
+RAPTOR_API
+int raptor_locator_column(raptor_locator *locator);
+RAPTOR_API
+int raptor_locator_byte(raptor_locator *locator);
+RAPTOR_API
+const char* raptor_locator_file(raptor_locator *locator);
+RAPTOR_API
+const char* raptor_locator_uri(raptor_locator *locator);
+
+
+/* Serializer Class */
+RAPTOR_API
+raptor_serializer* raptor_new_serializer(raptor_world* world, const char *name);
+RAPTOR_API
+void raptor_free_serializer(raptor_serializer* rdf_serializer);
+
+/* methods */
+RAPTOR_API
+int raptor_serializer_start_to_iostream(raptor_serializer *rdf_serializer, raptor_uri *uri, raptor_iostream *iostream);
+RAPTOR_API
+int raptor_serializer_start_to_filename(raptor_serializer *rdf_serializer, const char *filename);
+RAPTOR_API
+int raptor_serializer_start_to_string(raptor_serializer *rdf_serializer, raptor_uri *uri, void **string_p, size_t *length_p);
+RAPTOR_API
+int raptor_serializer_start_to_file_handle(raptor_serializer *rdf_serializer, raptor_uri *uri, FILE *fh);
+RAPTOR_API
+int raptor_serializer_set_namespace(raptor_serializer* rdf_serializer, raptor_uri *uri, const unsigned char *prefix);
+RAPTOR_API
+int raptor_serializer_set_namespace_from_namespace(raptor_serializer* rdf_serializer, raptor_namespace *nspace);
+RAPTOR_API
+int raptor_serializer_serialize_statement(raptor_serializer* rdf_serializer, raptor_statement *statement);
+RAPTOR_API
+int raptor_serializer_serialize_end(raptor_serializer *rdf_serializer);
+RAPTOR_API
+raptor_iostream* raptor_serializer_get_iostream(raptor_serializer *serializer);
+RAPTOR_API
+raptor_locator* raptor_serializer_get_locator(raptor_serializer *rdf_serializer);
+RAPTOR_API
+int raptor_serializer_flush(raptor_serializer *rdf_serializer);
+RAPTOR_API
+const raptor_syntax_description* raptor_serializer_get_description(raptor_serializer *rdf_serializer);
+
+/* serializer option methods */
+RAPTOR_API
+int raptor_serializer_set_option(raptor_serializer *serializer, raptor_option option, const char* string, int integer);
+RAPTOR_API
+int raptor_serializer_get_option(raptor_serializer *serializer, raptor_option option, char** string_p, int* integer_p);
+
+/* utility methods */
+RAPTOR_API
+raptor_world* raptor_serializer_get_world(raptor_serializer* rdf_serializer);
+
+
+/* memory functions */
+RAPTOR_API
+void raptor_free_memory(void *ptr);
+RAPTOR_API
+void* raptor_alloc_memory(size_t size);
+RAPTOR_API
+void* raptor_calloc_memory(size_t nmemb, size_t size);
+
+
+/* URI Class */
+RAPTOR_API
+raptor_uri* raptor_new_uri_from_counted_string(raptor_world* world, const unsigned char *uri_string, size_t length);
+RAPTOR_API
+raptor_uri* raptor_new_uri(raptor_world* world, const unsigned char *uri_string);
+RAPTOR_API
+raptor_uri* raptor_new_uri_from_uri_local_name(raptor_world* world, raptor_uri *uri, const unsigned char *local_name);
+RAPTOR_API
+raptor_uri* raptor_new_uri_relative_to_base(raptor_world* world, raptor_uri *base_uri, const unsigned char *uri_string);
+RAPTOR_API
+raptor_uri* raptor_new_uri_relative_to_base_counted(raptor_world* world, raptor_uri *base_uri, const unsigned char *uri_string, size_t uri_len);
+RAPTOR_API
+raptor_uri* raptor_new_uri_from_id(raptor_world* world, raptor_uri *base_uri, const unsigned char *id);
+RAPTOR_API
+raptor_uri* raptor_new_uri_from_uri_or_file_string(raptor_world* world, raptor_uri* base_uri, const unsigned char* uri_or_file_string);
+RAPTOR_API
+raptor_uri* raptor_new_uri_for_rdf_concept(raptor_world* world, const unsigned char *name);
+RAPTOR_API
+raptor_uri* raptor_new_uri_for_xmlbase(raptor_uri* old_uri);
+RAPTOR_API
+raptor_uri* raptor_new_uri_for_retrieval(raptor_uri* old_uri);
+RAPTOR_API
+void raptor_free_uri(raptor_uri *uri);
+
+/* methods */
+RAPTOR_API
+int raptor_uri_equals(raptor_uri* uri1, raptor_uri* uri2);
+RAPTOR_API
+int raptor_uri_compare(raptor_uri* uri1, raptor_uri* uri2);
+RAPTOR_API
+raptor_uri* raptor_uri_copy(raptor_uri *uri);
+RAPTOR_API
+unsigned char* raptor_uri_as_string(raptor_uri *uri);
+RAPTOR_API
+unsigned char* raptor_uri_as_counted_string(raptor_uri *uri, size_t* len_p);
+RAPTOR_API
+unsigned char* raptor_uri_to_relative_counted_uri_string(raptor_uri *base_uri, raptor_uri *reference_uri, size_t *length_p);
+RAPTOR_API
+unsigned char* raptor_uri_to_relative_uri_string(raptor_uri *base_uri, raptor_uri *reference_uri);
+RAPTOR_API
+int raptor_uri_print(const raptor_uri* uri, FILE *stream);
+RAPTOR_API
+unsigned char* raptor_uri_to_counted_string(raptor_uri *uri, size_t *len_p);
+RAPTOR_API
+unsigned char* raptor_uri_to_string(raptor_uri *uri);
+RAPTOR_API
+raptor_world* raptor_uri_get_world(raptor_uri *uri);
+RAPTOR_API
+int raptor_uri_file_exists(raptor_uri* uri);
+
+/* XML utility functions */
+RAPTOR_API
+int raptor_xml_escape_string_any(raptor_world* world, const unsigned char *string, size_t len, unsigned char *buffer, size_t length, char quote, int xml_version);
+RAPTOR_API
+int raptor_xml_escape_string_any_write(const unsigned char *string, size_t len, char quote, int xml_version, raptor_iostream* iostr);
+RAPTOR_API
+int raptor_xml_escape_string(raptor_world *world, const unsigned char *string, size_t len, unsigned char *buffer, size_t length, char quote);
+RAPTOR_API
+int raptor_xml_escape_string_write(const unsigned char *string, size_t len, char quote, raptor_iostream* iostr);
+RAPTOR_API
+int raptor_xml_name_check(const unsigned char *string, size_t length, int xml_version);
+
+
+/* portable vsnprintf utility function */
+RAPTOR_API RAPTOR_DEPRECATED
+char* raptor_vsnprintf(const char *format, va_list arguments) RAPTOR_PRINTF_FORMAT(1, 0);
+RAPTOR_API
+int raptor_vsnprintf2(char *buffer, size_t size, const char *format, va_list arguments) RAPTOR_PRINTF_FORMAT(3, 0);
+RAPTOR_API
+int raptor_snprintf(char *buffer, size_t size, const char *format, ...) RAPTOR_PRINTF_FORMAT(3, 4);
+RAPTOR_API
+int raptor_vasprintf(char **ret, const char *format, va_list arguments) RAPTOR_PRINTF_FORMAT(2, 0);
+
+/* RFC2396 URI resolving functions */
+RAPTOR_API
+size_t raptor_uri_resolve_uri_reference(const unsigned char *base_uri, const unsigned char *reference_uri, unsigned char* buffer, size_t length);
+
+/* URI String utility functions */
+RAPTOR_API
+unsigned char* raptor_uri_filename_to_uri_string(const char *filename);
+RAPTOR_API
+int raptor_uri_filename_exists(const unsigned char* path);
+RAPTOR_API
+char* raptor_uri_uri_string_to_filename(const unsigned char *uri_string);
+RAPTOR_API
+char* raptor_uri_uri_string_to_filename_fragment(const unsigned char *uri_string, unsigned char **fragment_p);
+RAPTOR_API
+int raptor_uri_uri_string_is_file_uri(const unsigned char* uri_string);
+RAPTOR_API
+int raptor_stringbuffer_append_uri_escaped_counted_string(raptor_stringbuffer* sb, const char* string, size_t length, int space_is_plus);
+RAPTOR_API
+char* raptor_uri_uri_string_to_counted_filename_fragment(const unsigned char *uri_string, size_t* len_p, unsigned char **fragment_p, size_t* fragment_len_p);
+
+
+/**
+ * RAPTOR_RDF_MS_URI:
+ *
+ * RDF Namespace URI (rdf:).
+ *
+ * Copy with raptor_uri_copy() to use.
+ */
+#define RAPTOR_RDF_MS_URI raptor_rdf_namespace_uri
+
+/**
+ * RAPTOR_RDF_SCHEMA_URI:
+ *
+ * RDF Schema Namespace URI (rdfs:).
+ *
+ * Copy with raptor_uri_copy() to use.
+ */
+#define RAPTOR_RDF_SCHEMA_URI raptor_rdf_schema_namespace_uri
+
+/**
+ * RAPTOR_XMLSCHEMA_DATATYPES_URI:
+ *
+ * XML Schema Datatypes URI (xsd:).
+ *
+ * Copy with raptor_uri_copy() to use.
+ */
+#define RAPTOR_XMLSCHEMA_DATATYPES_URI raptor_xmlschema_datatypes_namespace_uri
+
+/**
+ * RAPTOR_OWL_URI:
+ *
+ * OWL Namespace URI (owl:).
+ *
+ * Copy with raptor_uri_copy() to use.
+ */
+#define RAPTOR_OWL_URI raptor_owl_namespace_uri
+
+
+/* raptor_www */
+RAPTOR_API
+raptor_www* raptor_new_www(raptor_world* world);
+RAPTOR_API
+raptor_www* raptor_new_www_with_connection(raptor_world* world, void* connection);
+RAPTOR_API
+void raptor_free_www(raptor_www *www);
+RAPTOR_API
+int raptor_www_set_ssl_cert_options(raptor_www* www, const char* cert_filename, const char* cert_type, const char* cert_passphrase);
+RAPTOR_API
+int raptor_www_set_ssl_verify_options(raptor_www* www, int verify_peer, int verify_host);
+RAPTOR_API
+void raptor_www_set_user_agent(raptor_www *www, const char *user_agent);
+RAPTOR_API
+void raptor_www_set_proxy(raptor_www *www, const char *proxy);
+RAPTOR_API
+void raptor_www_set_http_accept(raptor_www *www, const char *value);
+RAPTOR_API
+void raptor_www_set_write_bytes_handler(raptor_www *www, raptor_www_write_bytes_handler handler, void *user_data);
+RAPTOR_API
+void raptor_www_set_content_type_handler(raptor_www *www, raptor_www_content_type_handler handler, void *user_data);
+RAPTOR_API
+void raptor_www_set_final_uri_handler(raptor_www* www, raptor_www_final_uri_handler handler, void *user_data);
+RAPTOR_API
+void raptor_www_set_uri_filter(raptor_www* www, raptor_uri_filter_func filter, void* user_data);
+RAPTOR_API
+void raptor_www_set_connection_timeout(raptor_www* www, int timeout);
+RAPTOR_API
+int raptor_www_set_http_cache_control(raptor_www* www, const char* cache_control);
+RAPTOR_API
+int raptor_www_fetch(raptor_www *www, raptor_uri *uri);
+RAPTOR_API
+int raptor_www_fetch_to_string(raptor_www *www, raptor_uri *uri, void **string_p, size_t *length_p, raptor_data_malloc_handler const malloc_handler);
+RAPTOR_API
+void* raptor_www_get_connection(raptor_www *www);
+RAPTOR_API
+void raptor_www_abort(raptor_www *www, const char *reason);
+RAPTOR_API
+raptor_uri* raptor_www_get_final_uri(raptor_www* www);
+
+
+/* XML QNames Class */
+RAPTOR_API
+raptor_qname* raptor_new_qname(raptor_namespace_stack *nstack, const unsigned char *name, const unsigned char *value);
+RAPTOR_API
+raptor_qname* raptor_new_qname_from_namespace_local_name(raptor_world* world, raptor_namespace *ns, const unsigned char *local_name, const unsigned char *value);
+
+/* methods */
+RAPTOR_API
+raptor_qname* raptor_qname_copy(raptor_qname *qname);
+RAPTOR_API
+void raptor_free_qname(raptor_qname* name);
+RAPTOR_API
+int raptor_qname_equal(raptor_qname *name1, raptor_qname *name2);
+RAPTOR_API
+unsigned char* raptor_qname_to_counted_name(raptor_qname *qname, size_t* length_p);
+RAPTOR_API
+const raptor_namespace* raptor_qname_get_namespace(raptor_qname* name);
+RAPTOR_API
+const unsigned char* raptor_qname_get_local_name(raptor_qname* name);
+RAPTOR_API
+const unsigned char* raptor_qname_get_value(raptor_qname* name);
+RAPTOR_API
+const unsigned char* raptor_qname_get_counted_value(raptor_qname* name, size_t* length_p);
+RAPTOR_API
+int raptor_qname_write(raptor_qname *qname, raptor_iostream* iostr);
+
+/* QName String utility functions */
+RAPTOR_API
+raptor_uri* raptor_qname_string_to_uri(raptor_namespace_stack *nstack, const unsigned char *name, size_t name_len);
+
+/* XML Namespaces Stack class */
+RAPTOR_API
+raptor_namespace* raptor_new_namespace_from_uri(raptor_namespace_stack *nstack, const unsigned char *prefix, raptor_uri* ns_uri, int depth);
+RAPTOR_API
+raptor_namespace_stack* raptor_new_namespaces(raptor_world* world, int defaults);
+RAPTOR_API
+int raptor_namespaces_init(raptor_world* world, raptor_namespace_stack *nstack, int defaults);
+RAPTOR_API
+void raptor_namespaces_clear(raptor_namespace_stack *nstack);
+RAPTOR_API
+void raptor_free_namespaces(raptor_namespace_stack *nstack);
+
+/* methods */
+RAPTOR_API
+void raptor_namespaces_start_namespace(raptor_namespace_stack *nstack, raptor_namespace *nspace);
+RAPTOR_API
+int raptor_namespaces_start_namespace_full(raptor_namespace_stack *nstack, const unsigned char *prefix, const unsigned char *ns_uri_string, int depth);
+RAPTOR_API
+void raptor_namespaces_end_for_depth(raptor_namespace_stack *nstack, int depth);
+RAPTOR_API
+raptor_namespace* raptor_namespaces_get_default_namespace(raptor_namespace_stack *nstack);
+RAPTOR_API
+raptor_namespace* raptor_namespaces_find_namespace(raptor_namespace_stack *nstack, const unsigned char *prefix, int prefix_length);
+RAPTOR_API
+raptor_namespace* raptor_namespaces_find_namespace_by_uri(raptor_namespace_stack *nstack, raptor_uri *ns_uri);
+RAPTOR_API
+int raptor_namespaces_namespace_in_scope(raptor_namespace_stack *nstack, const raptor_namespace *nspace);
+RAPTOR_API
+raptor_qname* raptor_new_qname_from_namespace_uri(raptor_namespace_stack *nstack, raptor_uri *uri, int xml_version);
+
+
+/* XML Namespace Class */
+RAPTOR_API
+raptor_namespace* raptor_new_namespace(raptor_namespace_stack *nstack, const unsigned char *prefix, const unsigned char *ns_uri_string, int depth);
+RAPTOR_API
+void raptor_free_namespace(raptor_namespace *ns);
+RAPTOR_API
+int raptor_namespace_stack_start_namespace(raptor_namespace_stack *nstack, raptor_namespace *ns, int new_depth);
+RAPTOR_API
+raptor_uri* raptor_namespace_get_uri(const raptor_namespace *ns);
+RAPTOR_API
+const unsigned char* raptor_namespace_get_prefix(const raptor_namespace *ns);
+RAPTOR_API
+const unsigned char* raptor_namespace_get_counted_prefix(const raptor_namespace *ns, size_t *length_p);
+RAPTOR_API
+unsigned char* raptor_namespace_format_as_xml(const raptor_namespace *ns, size_t *length_p);
+RAPTOR_API
+int raptor_namespace_write(raptor_namespace *ns, raptor_iostream* iostr);
+
+/* namespace string utility function */
+RAPTOR_API
+int raptor_xml_namespace_string_parse(const unsigned char *string, unsigned char **prefix, unsigned char **uri_string);
+
+/* Sequence class */
+/**
+ * raptor_sequence:
+ *
+ * Raptor sequence class
+ */
+typedef struct raptor_sequence_s raptor_sequence;
+
+/* Sequence Class */
+RAPTOR_API
+raptor_sequence* raptor_new_sequence(raptor_data_free_handler free_handler, raptor_data_print_handler print_handler);
+RAPTOR_API
+raptor_sequence* raptor_new_sequence_with_context(raptor_data_context_free_handler free_handler, raptor_data_context_print_handler print_handler, void* handler_context);
+RAPTOR_API
+void raptor_free_sequence(raptor_sequence* seq);
+
+/* methods */
+RAPTOR_API
+int raptor_sequence_size(raptor_sequence* seq);
+RAPTOR_API
+int raptor_sequence_set_at(raptor_sequence* seq, int idx, void *data);
+RAPTOR_API
+int raptor_sequence_push(raptor_sequence* seq, void *data);
+RAPTOR_API
+int raptor_sequence_shift(raptor_sequence* seq, void *data);
+RAPTOR_API
+void* raptor_sequence_get_at(raptor_sequence* seq, int idx);
+RAPTOR_API
+void* raptor_sequence_pop(raptor_sequence* seq);
+RAPTOR_API
+void* raptor_sequence_unshift(raptor_sequence* seq);
+RAPTOR_API
+void* raptor_sequence_delete_at(raptor_sequence* seq, int idx);
+
+RAPTOR_API
+void raptor_sequence_sort(raptor_sequence* seq, raptor_data_compare_handler compare);
+RAPTOR_API
+int raptor_sequence_swap(raptor_sequence* seq, int i, int j);
+RAPTOR_API
+int raptor_sequence_reverse(raptor_sequence* seq, int start_index, int length);
+RAPTOR_API
+int raptor_sequence_next_permutation(raptor_sequence *seq, raptor_data_compare_handler compare);
+
+/* helper for printing sequences of strings */
+RAPTOR_API
+int raptor_sequence_print(raptor_sequence* seq, FILE* fh);
+RAPTOR_API
+int raptor_sequence_join(raptor_sequence* dest, raptor_sequence *src);
+
+/* Unicode and UTF8 */
+
+/**
+ * raptor_unichar:
+ *
+ * raptor Unicode codepoint
+ */
+typedef unsigned long raptor_unichar;
+RAPTOR_API
+int raptor_unicode_utf8_string_put_char(raptor_unichar c, unsigned char *output, size_t length);
+RAPTOR_API
+int raptor_unicode_utf8_string_get_char(const unsigned char *input, size_t length, raptor_unichar *output);
+RAPTOR_API
+int raptor_unicode_is_xml11_namestartchar(raptor_unichar c);
+RAPTOR_API
+int raptor_unicode_is_xml10_namestartchar(raptor_unichar c);
+RAPTOR_API
+int raptor_unicode_is_xml11_namechar(raptor_unichar c);
+RAPTOR_API
+int raptor_unicode_is_xml10_namechar(raptor_unichar c);
+RAPTOR_API
+int raptor_unicode_check_utf8_string(const unsigned char *string, size_t length);
+RAPTOR_API
+int raptor_unicode_utf8_strlen(const unsigned char *string, size_t length);
+RAPTOR_API
+size_t raptor_unicode_utf8_substr(unsigned char* dest, size_t* dest_length_p, const unsigned char* src, size_t src_length, int startingLoc, int length);
+
+/* Stringbuffer Class */
+RAPTOR_API
+raptor_stringbuffer* raptor_new_stringbuffer(void);
+RAPTOR_API
+void raptor_free_stringbuffer(raptor_stringbuffer *stringbuffer);
+
+/* methods */
+RAPTOR_API
+int raptor_stringbuffer_append_counted_string(raptor_stringbuffer* stringbuffer, const unsigned char *string, size_t length, int do_copy);
+RAPTOR_API
+int raptor_stringbuffer_append_string(raptor_stringbuffer* stringbuffer, const unsigned char *string, int do_copy);
+RAPTOR_API
+int raptor_stringbuffer_append_decimal(raptor_stringbuffer* stringbuffer, int integer);
+RAPTOR_API
+int raptor_stringbuffer_append_hexadecimal(raptor_stringbuffer* stringbuffer, int hex);
+RAPTOR_API
+int raptor_stringbuffer_append_stringbuffer(raptor_stringbuffer* stringbuffer, raptor_stringbuffer* append);
+RAPTOR_API
+int raptor_stringbuffer_prepend_counted_string(raptor_stringbuffer* stringbuffer, const unsigned char *string, size_t length, int do_copy);
+RAPTOR_API
+int raptor_stringbuffer_prepend_string(raptor_stringbuffer* stringbuffer, const unsigned char *string, int do_copy);
+RAPTOR_API
+unsigned char* raptor_stringbuffer_as_string(raptor_stringbuffer* stringbuffer);
+RAPTOR_API
+size_t raptor_stringbuffer_length(raptor_stringbuffer* stringbuffer);
+RAPTOR_API
+int raptor_stringbuffer_copy_to_string(raptor_stringbuffer* stringbuffer, unsigned char *string, size_t length);
+
+/**
+ * raptor_iostream_init_func:
+ * @context: stream context data
+ *
+ * Handler function for #raptor_iostream initialising.
+ *
+ * Return value: non-0 on failure.
+ */
+typedef int (*raptor_iostream_init_func) (void *context);
+
+/**
+ * raptor_iostream_finish_func:
+ * @context: stream context data
+ *
+ * Handler function for #raptor_iostream terminating.
+ *
+ */
+typedef void (*raptor_iostream_finish_func) (void *context);
+
+/**
+ * raptor_iostream_write_byte_func
+ * @context: stream context data
+ * @byte: byte to write
+ *
+ * Handler function for implementing raptor_iostream_write_byte().
+ *
+ * Return value: non-0 on failure.
+ */
+typedef int (*raptor_iostream_write_byte_func) (void *context, const int byte);
+
+/**
+ * raptor_iostream_write_bytes_func:
+ * @context: stream context data
+ * @ptr: pointer to bytes to write
+ * @size: size of item
+ * @nmemb: number of items
+ *
+ * Handler function for implementing raptor_iostream_write_bytes().
+ *
+ * Return value: non-0 on failure.
+ */
+typedef int (*raptor_iostream_write_bytes_func) (void *context, const void *ptr, size_t size, size_t nmemb);
+
+/**
+ * raptor_iostream_write_end_func:
+ * @context: stream context data
+ *
+ * Handler function for implementing raptor_iostream_write_end().
+ *
+ * Return value: non-0 on failure.
+ */
+typedef int (*raptor_iostream_write_end_func) (void *context);
+
+/**
+ * raptor_iostream_read_bytes_func:
+ * @context: stream context data
+ * @ptr: pointer to buffer to read into
+ * @size: size of buffer
+ * @nmemb: number of items
+ *
+ * Handler function for implementing raptor_iostream_read_bytes().
+ *
+ * Return value: number of items read, 0 or < @size on EOF, <0 on failure
+ */
+typedef int (*raptor_iostream_read_bytes_func) (void *context, void *ptr, size_t size, size_t nmemb);
+
+/**
+ * raptor_iostream_read_eof_func:
+ * @context: stream context data
+ *
+ * Handler function for implementing raptor_iostream_read_eof().
+ *
+ * Return value: non-0 if EOF
+ */
+typedef int (*raptor_iostream_read_eof_func) (void *context);
+
+/**
+ * raptor_iostream_handler:
+ * @version: interface version. Presently 1 or 2.
+ * @init: initialisation handler - optional, called at most once (V1)
+ * @finish: finishing handler - optional, called at most once (V1)
+ * @write_byte: write byte handler - required (for writing) (V1)
+ * @write_bytes: write bytes handler - required (for writing) (V1)
+ * @write_end: write end handler - optional (for writing), called at most once (V1)
+ * @read_bytes: read bytes handler - required (for reading) (V2)
+ * @read_eof: read EOF handler - required (for reading) (V2)
+ *
+ * I/O stream implementation handler structure.
+ *
+ */
+typedef struct {
+ int version;
+
+ /* V1 functions */
+ raptor_iostream_init_func init;
+ raptor_iostream_finish_func finish;
+ raptor_iostream_write_byte_func write_byte;
+ raptor_iostream_write_bytes_func write_bytes;
+ raptor_iostream_write_end_func write_end;
+
+ /* V2 functions */
+ raptor_iostream_read_bytes_func read_bytes;
+ raptor_iostream_read_eof_func read_eof;
+} raptor_iostream_handler;
+
+
+/* I/O Stream Class */
+RAPTOR_API
+raptor_iostream* raptor_new_iostream_from_handler(raptor_world* world, void *user_data, const raptor_iostream_handler* const handler);
+RAPTOR_API
+raptor_iostream* raptor_new_iostream_to_sink(raptor_world* world);
+RAPTOR_API
+raptor_iostream* raptor_new_iostream_to_filename(raptor_world* world, const char *filename);
+RAPTOR_API
+raptor_iostream* raptor_new_iostream_to_file_handle(raptor_world* world, FILE *handle);
+RAPTOR_API
+raptor_iostream* raptor_new_iostream_to_string(raptor_world* world, void **string_p, size_t *length_p, raptor_data_malloc_handler const malloc_handler);
+RAPTOR_API
+raptor_iostream* raptor_new_iostream_from_sink(raptor_world* world);
+RAPTOR_API
+raptor_iostream* raptor_new_iostream_from_filename(raptor_world* world, const char *filename);
+RAPTOR_API
+raptor_iostream* raptor_new_iostream_from_file_handle(raptor_world* world, FILE *handle);
+RAPTOR_API
+raptor_iostream* raptor_new_iostream_from_string(raptor_world* world, void *string, size_t length);
+RAPTOR_API
+void raptor_free_iostream(raptor_iostream *iostr);
+
+RAPTOR_API
+int raptor_iostream_write_bytes(const void *ptr, size_t size, size_t nmemb, raptor_iostream *iostr);
+RAPTOR_API
+int raptor_iostream_write_byte(const int byte, raptor_iostream *iostr);
+RAPTOR_API
+int raptor_iostream_write_end(raptor_iostream *iostr);
+RAPTOR_API
+int raptor_iostream_string_write(const void *string, raptor_iostream *iostr);
+RAPTOR_API
+int raptor_iostream_counted_string_write(const void *string, size_t len, raptor_iostream *iostr);
+RAPTOR_API
+unsigned long raptor_iostream_tell(raptor_iostream *iostr);
+RAPTOR_API
+int raptor_iostream_decimal_write(int integer, raptor_iostream* iostr);
+RAPTOR_API
+int raptor_iostream_hexadecimal_write(unsigned int integer, int width, raptor_iostream* iostr);
+RAPTOR_API
+int raptor_stringbuffer_write(raptor_stringbuffer *sb, raptor_iostream* iostr);
+RAPTOR_API
+int raptor_uri_write(raptor_uri *uri, raptor_iostream *iostr);
+RAPTOR_API
+int raptor_iostream_read_bytes(void *ptr, size_t size, size_t nmemb, raptor_iostream* iostr);
+RAPTOR_API
+int raptor_iostream_read_eof(raptor_iostream *iostr);
+
+/* I/O Stream utility functions */
+RAPTOR_API
+int raptor_string_ntriples_write(const unsigned char *string, size_t len, const char delim, raptor_iostream *iostr);
+RAPTOR_API
+int raptor_bnodeid_ntriples_write(const unsigned char *bnodeid, size_t len, raptor_iostream *iostr);
+RAPTOR_API
+int raptor_string_python_write(const unsigned char *string, size_t len, const char delim, int flags, raptor_iostream *iostr);
+RAPTOR_API
+int raptor_statement_ntriples_write(const raptor_statement *statement, raptor_iostream* iostr, int write_graph_term);
+
+
+
+/* Parser and Serializer options */
+
+/**
+ * raptor_option_value_type:
+ * @RAPTOR_OPTION_VALUE_TYPE_BOOL: Boolean integer value. Non-0 is true
+ * @RAPTOR_OPTION_VALUE_TYPE_INT: Decimal integer value
+ * @RAPTOR_OPTION_VALUE_TYPE_STRING: String value
+ * @RAPTOR_OPTION_VALUE_TYPE_URI: URI String value.
+ * @RAPTOR_OPTION_VALUE_TYPE_LAST: internal
+ *
+ * Option value types.
+ */
+typedef enum {
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ RAPTOR_OPTION_VALUE_TYPE_INT,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ RAPTOR_OPTION_VALUE_TYPE_URI,
+ RAPTOR_OPTION_VALUE_TYPE_LAST = RAPTOR_OPTION_VALUE_TYPE_URI
+} raptor_option_value_type;
+
+
+/**
+ * raptor_option_description:
+ * @domain: domain ID
+ * @option: option ID
+ * @value_type: data type of option value
+ * @name: short name for option
+ * @name_len: length of @name
+ * @label: description of option
+ * @uri: URI identifying option
+ *
+ * Description of an option for a domain.
+ */
+typedef struct {
+ raptor_domain domain;
+ raptor_option option;
+ raptor_option_value_type value_type;
+ const char* name;
+ size_t name_len;
+ const char* label;
+ raptor_uri* uri;
+} raptor_option_description;
+
+
+RAPTOR_API
+unsigned int raptor_option_get_count(void);
+RAPTOR_API
+const char* raptor_option_get_value_type_label(const raptor_option_value_type type);
+RAPTOR_API
+void raptor_free_option_description(raptor_option_description* option_description);
+RAPTOR_API
+raptor_option_description* raptor_world_get_option_description(raptor_world* world, const raptor_domain domain, const raptor_option option);
+
+
+/* SAX2 element Class (raptor_xml_element) */
+RAPTOR_API
+raptor_xml_element* raptor_new_xml_element(raptor_qname* name, const unsigned char* xml_language, raptor_uri* xml_base);
+RAPTOR_API
+raptor_xml_element* raptor_new_xml_element_from_namespace_local_name(raptor_namespace *ns, const unsigned char *name, const unsigned char *xml_language, raptor_uri *xml_base);
+RAPTOR_API
+void raptor_free_xml_element(raptor_xml_element *element);
+
+/* methods */
+RAPTOR_API
+raptor_qname* raptor_xml_element_get_name(raptor_xml_element *xml_element);
+RAPTOR_API
+void raptor_xml_element_set_attributes(raptor_xml_element* xml_element, raptor_qname **attributes, int count);
+RAPTOR_API
+raptor_qname** raptor_xml_element_get_attributes(raptor_xml_element* xml_element);
+RAPTOR_API
+int raptor_xml_element_get_attributes_count(raptor_xml_element* xml_element);
+RAPTOR_API
+int raptor_xml_element_declare_namespace(raptor_xml_element* xml_element, raptor_namespace *nspace);
+RAPTOR_API
+int raptor_xml_element_write(raptor_xml_element *element, raptor_namespace_stack *nstack, int is_empty, int is_end, int depth, raptor_iostream *iostr);
+RAPTOR_API
+int raptor_xml_element_is_empty(raptor_xml_element* xml_element);
+RAPTOR_API
+const unsigned char* raptor_xml_element_get_language(raptor_xml_element* xml_element);
+
+
+/* XML Writer Class (raptor_xml_writer) */
+RAPTOR_API
+raptor_xml_writer* raptor_new_xml_writer(raptor_world* world, raptor_namespace_stack *nstack, raptor_iostream* iostr);
+RAPTOR_API
+void raptor_free_xml_writer(raptor_xml_writer* xml_writer);
+
+/* methods */
+RAPTOR_API
+void raptor_xml_writer_empty_element(raptor_xml_writer* xml_writer, raptor_xml_element *element);
+RAPTOR_API
+void raptor_xml_writer_start_element(raptor_xml_writer* xml_writer, raptor_xml_element *element);
+RAPTOR_API
+void raptor_xml_writer_end_element(raptor_xml_writer* xml_writer, raptor_xml_element *element);
+RAPTOR_API
+void raptor_xml_writer_newline(raptor_xml_writer* xml_writer);
+RAPTOR_API
+void raptor_xml_writer_cdata(raptor_xml_writer* xml_writer, const unsigned char *s);
+RAPTOR_API
+void raptor_xml_writer_cdata_counted(raptor_xml_writer* xml_writer, const unsigned char *s, unsigned int len);
+RAPTOR_API
+void raptor_xml_writer_raw(raptor_xml_writer* xml_writer, const unsigned char *s);
+RAPTOR_API
+void raptor_xml_writer_raw_counted(raptor_xml_writer* xml_writer, const unsigned char *s, unsigned int len);
+RAPTOR_API
+void raptor_xml_writer_comment(raptor_xml_writer* xml_writer, const unsigned char *s);
+RAPTOR_API
+void raptor_xml_writer_comment_counted(raptor_xml_writer* xml_writer, const unsigned char *s, unsigned int len);
+RAPTOR_API
+void raptor_xml_writer_flush(raptor_xml_writer* xml_writer);
+RAPTOR_API
+int raptor_xml_writer_set_option(raptor_xml_writer *xml_writer, raptor_option option, char* string, int integer);
+RAPTOR_API
+int raptor_xml_writer_get_option(raptor_xml_writer *xml_writer, raptor_option option, char** string_p, int* integer_p);
+RAPTOR_API
+int raptor_xml_writer_get_depth(raptor_xml_writer *xml_writer);
+
+/**
+ * raptor_sax2_start_element_handler:
+ * @user_data: user data
+ * @xml_element: XML element
+ *
+ * SAX2 start element handler
+ */
+typedef void (*raptor_sax2_start_element_handler)(void *user_data, raptor_xml_element *xml_element);
+
+/**
+ * raptor_sax2_end_element_handler:
+ * @user_data: user data
+ * @xml_element: XML element
+ *
+ * SAX2 end element handler
+ */
+typedef void (*raptor_sax2_end_element_handler)(void *user_data, raptor_xml_element* xml_element);
+
+/**
+ * raptor_sax2_characters_handler:
+ * @user_data: user data
+ * @xml_element: XML element
+ * @s: string
+ * @len: string len
+ *
+ * SAX2 characters handler
+ */
+typedef void (*raptor_sax2_characters_handler)(void *user_data, raptor_xml_element* xml_element, const unsigned char *s, int len);
+
+/**
+ * raptor_sax2_cdata_handler:
+ * @user_data: user data
+ * @xml_element: XML element
+ * @s: string
+ * @len: string len
+
+ * SAX2 CDATA section handler
+ */
+typedef void (*raptor_sax2_cdata_handler)(void *user_data, raptor_xml_element* xml_element, const unsigned char *s, int len);
+
+/**
+ * raptor_sax2_comment_handler:
+ * @user_data: user data
+ * @xml_element: XML element
+ * @s: string
+ *
+ * SAX2 XML comment handler
+ */
+typedef void (*raptor_sax2_comment_handler)(void *user_data, raptor_xml_element* xml_element, const unsigned char *s);
+
+/**
+ * raptor_sax2_unparsed_entity_decl_handler:
+ * @user_data: user data
+ * @entityName: entity name
+ * @base: base URI
+ * @systemId: system ID
+ * @publicId: public ID
+ * @notationName: notation name
+ *
+ * SAX2 unparsed entity (NDATA) handler
+ */
+typedef void (*raptor_sax2_unparsed_entity_decl_handler)(void *user_data, const unsigned char* entityName, const unsigned char* base, const unsigned char* systemId, const unsigned char* publicId, const unsigned char* notationName);
+
+/**
+ * raptor_sax2_external_entity_ref_handler:
+ * @user_data: user data
+ * @context: context
+ * @base: base URI
+ * @systemId: system ID
+ * @publicId: public ID
+ *
+ * SAX2 external entity reference handler
+ *
+ * Return value: 0 if processing should not continue because of a
+ * fatal error in the handling of the external entity.
+ */
+typedef int (*raptor_sax2_external_entity_ref_handler)(void *user_data, const unsigned char* context, const unsigned char* base, const unsigned char* systemId, const unsigned char* publicId);
+
+
+/* SAX2 API */
+RAPTOR_API
+raptor_sax2* raptor_new_sax2(raptor_world *world, raptor_locator *locator, void* user_data);
+RAPTOR_API
+void raptor_free_sax2(raptor_sax2 *sax2);
+
+/* methods */
+RAPTOR_API
+void raptor_sax2_set_start_element_handler(raptor_sax2* sax2, raptor_sax2_start_element_handler handler);
+RAPTOR_API
+void raptor_sax2_set_end_element_handler(raptor_sax2* sax2, raptor_sax2_end_element_handler handler);
+RAPTOR_API
+void raptor_sax2_set_characters_handler(raptor_sax2* sax2, raptor_sax2_characters_handler handler);
+RAPTOR_API
+void raptor_sax2_set_cdata_handler(raptor_sax2* sax2, raptor_sax2_cdata_handler handler);
+RAPTOR_API
+void raptor_sax2_set_comment_handler(raptor_sax2* sax2, raptor_sax2_comment_handler handler);
+RAPTOR_API
+void raptor_sax2_set_unparsed_entity_decl_handler(raptor_sax2* sax2, raptor_sax2_unparsed_entity_decl_handler handler);
+RAPTOR_API
+void raptor_sax2_set_external_entity_ref_handler(raptor_sax2* sax2, raptor_sax2_external_entity_ref_handler handler);
+RAPTOR_API
+void raptor_sax2_set_namespace_handler(raptor_sax2* sax2, raptor_namespace_handler handler);
+RAPTOR_API
+void raptor_sax2_set_uri_filter(raptor_sax2* sax2, raptor_uri_filter_func filter, void *user_data);
+RAPTOR_API
+void raptor_sax2_parse_start(raptor_sax2 *sax2, raptor_uri *base_uri);
+RAPTOR_API
+int raptor_sax2_parse_chunk(raptor_sax2* sax2, const unsigned char *buffer, size_t len, int is_end);
+RAPTOR_API
+const unsigned char* raptor_sax2_inscope_xml_language(raptor_sax2* sax2);
+RAPTOR_API
+raptor_uri* raptor_sax2_inscope_base_uri(raptor_sax2* sax2);
+
+
+
+/* AVL Trees */
+
+/**
+ * raptor_avltree:
+ *
+ * AVL Tree
+ */
+typedef struct raptor_avltree_s raptor_avltree;
+
+/**
+ * raptor_avltree_iterator:
+ *
+ * AVL Tree Iterator as created by raptor_new_avltree_iterator()
+ */
+typedef struct raptor_avltree_iterator_s raptor_avltree_iterator;
+
+/**
+ * raptor_avltree_visit_handler:
+ * @depth: depth of object in tree
+ * @data: data object being visited
+ * @user_data: user data arg to raptor_avltree_visit()
+ *
+ * AVL Tree visitor function as given to raptor_avltree_visit()
+ *
+ * Return value: non-0 to terminate visit early.
+ */
+typedef int (*raptor_avltree_visit_handler)(int depth, void* data, void *user_data);
+
+
+/**
+ * raptor_avltree_bitflags:
+ * @RAPTOR_AVLTREE_FLAG_REPLACE_DUPLICATES: If set raptor_avltree_add() will replace any duplicate items. If not set, raptor_avltree_add() will not replace them and will return status >0 when adding a duplicate. (Default is not set)
+ *
+ * Bit flags for AVL Tree class constructor raptor_new_avltree()
+ **/
+typedef enum {
+ RAPTOR_AVLTREE_FLAG_REPLACE_DUPLICATES = 1
+} raptor_avltree_bitflags;
+
+
+RAPTOR_API
+raptor_avltree* raptor_new_avltree(raptor_data_compare_handler compare_handler, raptor_data_free_handler free_handler, unsigned int flags);
+RAPTOR_API
+void raptor_free_avltree(raptor_avltree* tree);
+
+/* methods */
+RAPTOR_API
+int raptor_avltree_add(raptor_avltree* tree, void* p_data);
+RAPTOR_API
+void* raptor_avltree_remove(raptor_avltree* tree, void* p_data);
+RAPTOR_API
+int raptor_avltree_delete(raptor_avltree* tree, void* p_data);
+RAPTOR_API
+void* raptor_avltree_search(raptor_avltree* tree, const void* p_data);
+RAPTOR_API
+int raptor_avltree_visit(raptor_avltree* tree, raptor_avltree_visit_handler visit_handler, void* user_data);
+RAPTOR_API
+int raptor_avltree_size(raptor_avltree* tree);
+RAPTOR_API
+void raptor_avltree_set_print_handler(raptor_avltree* tree, raptor_data_print_handler print_handler);
+RAPTOR_API
+int raptor_avltree_print(raptor_avltree* tree, FILE* stream);
+
+RAPTOR_API
+raptor_avltree_iterator* raptor_new_avltree_iterator(raptor_avltree* tree, void* range, raptor_data_free_handler range_free_handler, int direction);
+RAPTOR_API
+void raptor_free_avltree_iterator(raptor_avltree_iterator* iterator);
+
+RAPTOR_API
+int raptor_avltree_iterator_is_end(raptor_avltree_iterator* iterator);
+RAPTOR_API
+int raptor_avltree_iterator_next(raptor_avltree_iterator* iterator);
+RAPTOR_API
+void* raptor_avltree_iterator_get(raptor_avltree_iterator* iterator);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/raptor_abbrev.c b/src/raptor_abbrev.c
new file mode 100644
index 0000000..172c913
--- /dev/null
+++ b/src/raptor_abbrev.c
@@ -0,0 +1,643 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_abbrev.c - Code common to abbreviating serializers (ttl/rdfxmla)
+ *
+ * Copyright (C) 2006, Dave Robillard
+ * Copyright (C) 2004-2011, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2004-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ * Copyright (C) 2005, Steve Shepard steveshep@gmail.com
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/*
+ * raptor_abbrev_node implementation
+ *
+ */
+
+
+static raptor_abbrev_subject* raptor_new_abbrev_subject(raptor_abbrev_node* node);
+
+/**
+ * raptor_new_abbrev_node:
+ * @world: raptor world
+ * @term: term to use
+ *
+ * INTERNAL - Constructor for raptor_abbrev_node
+ *
+ * The @term is copied by the constructor.
+ *
+ * Return value: new raptor abbrev node or NULL on failure
+ **/
+raptor_abbrev_node*
+raptor_new_abbrev_node(raptor_world* world, raptor_term *term)
+{
+ raptor_abbrev_node* node = NULL;
+
+ if(term->type == RAPTOR_TERM_TYPE_UNKNOWN)
+ return NULL;
+
+ node = RAPTOR_CALLOC(raptor_abbrev_node*, 1, sizeof(*node));
+ if(node) {
+ node->world = world;
+ node->ref_count = 1;
+ node->term = raptor_term_copy(term);
+ }
+
+ return node;
+}
+
+
+/**
+ * raptor_new_abbrev_node:
+ * @node: raptor abbrev node
+ *
+ * INTERNAL - Destructor for raptor_abbrev_node
+ */
+void
+raptor_free_abbrev_node(raptor_abbrev_node* node)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN(node, raptor_abbrev_node);
+
+ if(--node->ref_count)
+ return;
+
+ if(node->term)
+ raptor_free_term(node->term);
+
+ RAPTOR_FREE(raptor_abbrev_node, node);
+}
+
+
+/**
+ * raptor_abbrev_node_compare:
+ * @node1: node 1
+ * @node2: node 2
+ *
+ * INTERNAL - compare two raptor_abbrev_nodes.
+ *
+ * This needs to be a strong ordering for use by raptor_avltree.
+ * This is very performance critical, anything to make it faster is worth it.
+ *
+ * Return value: <0, 0 or 1 if @node1 less than, equal or greater
+ * than @node2 respectively
+ */
+int
+raptor_abbrev_node_compare(raptor_abbrev_node* node1, raptor_abbrev_node* node2)
+{
+ if(node1 == node2)
+ return 0;
+
+ return raptor_term_compare(node1->term, node2->term);
+}
+
+
+/**
+ * raptor_abbrev_node_equals:
+ * @node1: node 1
+ * @node2: node 2
+ *
+ * INTERNAL - compare two raptor_abbrev_nodes for equality
+ *
+ * Return value: non-0 if nodes are equal
+ */
+int
+raptor_abbrev_node_equals(raptor_abbrev_node* node1, raptor_abbrev_node* node2)
+{
+ return raptor_term_equals(node1->term, node2->term);
+}
+
+
+/**
+ * raptor_abbrev_node_lookup:
+ * @nodes: Tree of nodes to search
+ * @node: Node value to search for
+ *
+ * INTERNAL - Look in an avltree of nodes for a node described by parameters
+ * and if present create it, add it and return it
+ *
+ * Return value: the node found/created or NULL on failure
+ */
+raptor_abbrev_node*
+raptor_abbrev_node_lookup(raptor_avltree* nodes, raptor_term* term)
+{
+ raptor_abbrev_node *lookup_node;
+ raptor_abbrev_node *rv_node;
+
+ /* Create a temporary node for search comparison. */
+ lookup_node = raptor_new_abbrev_node(term->world, term);
+
+ if(!lookup_node)
+ return NULL;
+
+ rv_node = (raptor_abbrev_node*)raptor_avltree_search(nodes, lookup_node);
+
+ /* If not found, insert/return a new one */
+ if(!rv_node) {
+
+ if(raptor_avltree_add(nodes, lookup_node))
+ return NULL;
+ else
+ return lookup_node;
+
+ /* Found */
+ } else {
+ raptor_free_abbrev_node(lookup_node);
+ return rv_node;
+ }
+}
+
+
+static raptor_abbrev_node**
+raptor_new_abbrev_po(raptor_abbrev_node* predicate, raptor_abbrev_node* object)
+{
+ raptor_abbrev_node** nodes = NULL;
+ nodes = RAPTOR_CALLOC(raptor_abbrev_node**, 2, sizeof(raptor_abbrev_node*));
+ if(!nodes)
+ return NULL;
+
+ nodes[0] = predicate;
+ nodes[1] = object;
+
+ return nodes;
+}
+
+
+static void
+raptor_free_abbrev_po(raptor_abbrev_node** nodes)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN(nodes, raptor_abbrev_node_pair);
+
+ if(nodes[0])
+ raptor_free_abbrev_node(nodes[0]);
+ if(nodes[1])
+ raptor_free_abbrev_node(nodes[1]);
+
+ RAPTOR_FREE(raptor_abbrev_nodes, nodes);
+}
+
+
+static int
+raptor_compare_abbrev_po(raptor_abbrev_node** nodes1,
+ raptor_abbrev_node** nodes2)
+{
+ int d;
+ d = raptor_abbrev_node_compare(nodes1[0], nodes2[0]);
+ if(!d)
+ d = raptor_abbrev_node_compare(nodes1[1], nodes2[1]);
+
+ return d;
+}
+
+
+#ifdef RAPTOR_DEBUG
+static void
+raptor_print_abbrev_po(raptor_abbrev_node** nodes, FILE* handle)
+{
+ raptor_abbrev_node* p = nodes[0];
+ raptor_abbrev_node* o = nodes[1];
+
+ if(p && o) {
+ fputc('[', handle);
+ raptor_term_print_as_ntriples(p->term, handle);
+ fputs(" : ", handle);
+ raptor_term_print_as_ntriples(o->term, handle);
+ fputs("]\n", handle);
+ }
+}
+#endif
+
+
+/*
+ * raptor_abbrev_subject implementation
+ *
+ * The subject of triples, with all predicates and values
+ * linked from them.
+ *
+ **/
+
+
+static raptor_abbrev_subject*
+raptor_new_abbrev_subject(raptor_abbrev_node* node)
+{
+ raptor_abbrev_subject* subject;
+
+ if(!(node->term->type == RAPTOR_TERM_TYPE_URI ||
+ node->term->type == RAPTOR_TERM_TYPE_BLANK)) {
+ raptor_log_error(node->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Subject node is type %d not a uri or blank node");
+ return NULL;
+ }
+
+ subject = RAPTOR_CALLOC(raptor_abbrev_subject*, 1, sizeof(*subject));
+
+ if(subject) {
+ subject->node = node;
+ subject->node->ref_count++;
+ subject->node->count_as_subject++;
+
+ subject->node_type = NULL;
+
+ subject->valid = 1;
+
+ subject->properties =
+ raptor_new_avltree((raptor_data_compare_handler)raptor_compare_abbrev_po,
+ (raptor_data_free_handler)raptor_free_abbrev_po,
+ 0);
+#ifdef RAPTOR_DEBUG
+ raptor_avltree_set_print_handler(subject->properties,
+ (raptor_data_print_handler)raptor_print_abbrev_po);
+#endif
+
+ subject->list_items =
+ raptor_new_sequence((raptor_data_free_handler)raptor_free_abbrev_node, NULL);
+
+ if(!subject->node || !subject->properties || !subject->list_items) {
+ raptor_free_abbrev_subject(subject);
+ subject = NULL;
+ }
+
+ }
+
+ return subject;
+}
+
+
+void
+raptor_free_abbrev_subject(raptor_abbrev_subject* subject)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN(subject, raptor_abbrev_subject);
+
+ if(subject->node)
+ raptor_free_abbrev_node(subject->node);
+
+ if(subject->node_type)
+ raptor_free_abbrev_node(subject->node_type);
+
+ if(subject->properties)
+ raptor_free_avltree(subject->properties);
+
+ if(subject->list_items)
+ raptor_free_sequence(subject->list_items);
+
+ RAPTOR_FREE(raptor_subject, subject);
+}
+
+
+int
+raptor_abbrev_subject_valid(raptor_abbrev_subject *subject)
+{
+ return subject->valid;
+}
+
+
+int
+raptor_abbrev_subject_invalidate(raptor_abbrev_subject *subject)
+{
+ subject->valid = 0;
+ return 0;
+}
+
+
+
+
+/**
+ * raptor_subject_add_property:
+ * @subject: subject node to add to
+ * @predicate: predicate node
+ * @object: object node
+ *
+ * INTERNAL - Add predicate/object pair into properties array of a subject node.
+ *
+ * The subject node takes ownership of the predicate/object nodes.
+ * On error, predicate/object are freed immediately.
+ *
+ * Return value: <0 on failure, >0 if pair is a duplicate and it was not added
+ **/
+int
+raptor_abbrev_subject_add_property(raptor_abbrev_subject* subject,
+ raptor_abbrev_node* predicate,
+ raptor_abbrev_node* object)
+{
+ int err;
+ raptor_abbrev_node** nodes;
+
+ nodes = raptor_new_abbrev_po(predicate, object);
+ if(!nodes)
+ return -1;
+
+ predicate->ref_count++;
+ object->ref_count++;
+
+ if(raptor_avltree_search(subject->properties, nodes)) {
+ /* Already present - do not add a duplicate triple (s->[p o]) */
+ raptor_free_abbrev_po(nodes);
+ return 1;
+ }
+
+#if 0
+ fprintf(stderr, "Adding P,O ");
+ raptor_print_abbrev_po(stderr, nodes);
+
+ raptor_avltree_dump(subject->properties, stderr);
+#endif
+ err = raptor_avltree_add(subject->properties, nodes);
+ if(err)
+ return -1;
+#if 0
+ fprintf(stderr, "Result ");
+ raptor_avltree_print(subject->properties, stderr);
+
+ raptor_avltree_dump(subject->properties, stderr);
+
+ raptor_avltree_check(subject->properties);
+
+ fprintf(stderr, "\n\n");
+#endif
+
+ return 0;
+}
+
+
+int
+raptor_abbrev_subject_compare(raptor_abbrev_subject* subject1,
+ raptor_abbrev_subject* subject2)
+{
+ return raptor_abbrev_node_compare(subject1->node, subject2->node);
+}
+
+
+/**
+ * raptor_abbrev_subject_find:
+ * @subjects: AVL-Tree of subject nodes
+ * @term: node to find
+ *
+ * INTERNAL - Find a subject node in an AVL-Tree of subject nodes
+ *
+ * Return value: node or NULL if not found or failure
+ */
+raptor_abbrev_subject*
+raptor_abbrev_subject_find(raptor_avltree *subjects, raptor_term* node)
+{
+ raptor_abbrev_subject* rv_subject = NULL;
+ raptor_abbrev_node* lookup_node = NULL;
+ raptor_abbrev_subject* lookup = NULL;
+
+ /* datatype and language are both NULL for a subject node */
+
+ lookup_node = raptor_new_abbrev_node(node->world, node);
+ if(!lookup_node)
+ return NULL;
+
+ lookup = raptor_new_abbrev_subject(lookup_node);
+ if(!lookup) {
+ raptor_free_abbrev_node(lookup_node);
+ return NULL;
+ }
+
+ rv_subject = (raptor_abbrev_subject*) raptor_avltree_search(subjects, lookup);
+
+ raptor_free_abbrev_subject(lookup);
+ raptor_free_abbrev_node(lookup_node);
+
+ return rv_subject;
+}
+
+
+/**
+ * raptor_abbrev_subject_lookup:
+ * @nodes: AVL-Tree of subject nodes
+ * @subjects: AVL-Tree of URI-subject nodes
+ * @blanks: AVL-Tree of blank-subject nodes
+ * @term: node to find
+ *
+ * INTERNAL - Find a subject node in the appropriate uri/blank AVL-Tree of subject nodes or add it
+ *
+ * Return value: node or NULL on failure
+ */
+raptor_abbrev_subject*
+raptor_abbrev_subject_lookup(raptor_avltree* nodes,
+ raptor_avltree* subjects, raptor_avltree* blanks,
+ raptor_term* term)
+{
+ raptor_avltree *tree;
+ raptor_abbrev_subject* rv_subject;
+
+ /* Search for specified resource. */
+ tree = (term->type == RAPTOR_TERM_TYPE_BLANK) ? blanks : subjects;
+ rv_subject = raptor_abbrev_subject_find(tree, term);
+
+ /* If not found, create one and insert it */
+ if(!rv_subject) {
+ raptor_abbrev_node* node = raptor_abbrev_node_lookup(nodes, term);
+ if(node) {
+ rv_subject = raptor_new_abbrev_subject(node);
+ if(rv_subject) {
+ if(raptor_avltree_add(tree, rv_subject)) {
+ rv_subject = NULL;
+ }
+ }
+ }
+ }
+
+ return rv_subject;
+}
+
+
+#ifdef ABBREV_DEBUG
+void
+raptor_print_subject(raptor_abbrev_subject* subject)
+{
+ int i;
+ unsigned char *subj;
+ unsigned char *pred;
+ unsigned char *obj;
+ raptor_avltree_iterator* iter = NULL;
+
+ /* Note: The raptor_abbrev_node field passed as the first argument for
+ * raptor_term_to_string() is somewhat arbitrary, since as
+ * the data structure is designed, the first word in the value union
+ * is what was passed as the subject/predicate/object of the
+ * statement.
+ */
+ subj = raptor_term_to_string(subject);
+
+ if(subject->type) {
+ obj = raptor_term_to_string(subject);
+ fprintf(stderr,"[%s, http://www.w3.org/1999/02/22-rdf-syntax-ns#type, %s]\n", subj, obj);
+ RAPTOR_FREE(char*, obj);
+ }
+
+ for(i = 0; i < raptor_sequence_size(subject->elements); i++) {
+
+ raptor_abbrev_node* o = raptor_sequence_get_at(subject->elements, i);
+ if(o) {
+ obj = raptor_term_to_string(o);
+ fprintf(stderr,"[%s, [rdf:_%d], %s]\n", subj, i, obj);
+ RAPTOR_FREE(char*, obj);
+ }
+
+ }
+
+
+ iter = raptor_new_avltree_iterator(subject->properties, NULL, NULL, 1);
+ while(iter) {
+ raptor_abbrev_node** nodes;
+ nodes = (raptor_abbrev_node**)raptor_avltree_iterator_get(iter);
+ if(!nodes)
+ break;
+ raptor_print_abbrev_po(stderr, nodes);
+
+ if(raptor_avltree_iterator_next(iter))
+ break;
+ }
+ if(iter)
+ raptor_free_avltree_iterator(iter);
+
+ RAPTOR_FREE(char*, subj);
+
+}
+#endif
+
+
+/* helper functions */
+
+/**
+ * raptor_new_qname_from_resource:
+ * @namespaces: sequence of namespaces (corresponding to nstack)
+ * @nstack: #raptor_namespace_stack to use/update
+ * @namespace_count: size of nstack (may be modified)
+ * @node: #raptor_abbrev_node to use
+ *
+ * INTERNAL - Make an XML QName from the URI associated with the node.
+ *
+ * Return value: the QName or NULL on failure
+ **/
+raptor_qname*
+raptor_new_qname_from_resource(raptor_sequence* namespaces,
+ raptor_namespace_stack* nstack,
+ int* namespace_count,
+ raptor_abbrev_node* node)
+{
+ unsigned char* name = NULL; /* where to split predicate name */
+ size_t name_len = 1;
+ unsigned char *uri_string;
+ size_t uri_len;
+ unsigned char *p;
+ raptor_uri *ns_uri;
+ raptor_namespace *ns;
+ raptor_qname *qname;
+ unsigned char *ns_uri_string;
+ size_t ns_uri_string_len;
+
+ if(node->term->type != RAPTOR_TERM_TYPE_URI) {
+#ifdef RAPTOR_DEBUG
+ RAPTOR_FATAL1("Node must be a URI\n");
+#endif
+ return NULL;
+ }
+
+ qname = raptor_new_qname_from_namespace_uri(nstack, node->term->value.uri, 10);
+ if(qname)
+ return qname;
+
+ uri_string = raptor_uri_as_counted_string(node->term->value.uri, &uri_len);
+
+ p= uri_string;
+ name_len = uri_len;
+ while(name_len >0) {
+ if(raptor_xml_name_check(p, name_len, 10)) {
+ name = p;
+ break;
+ }
+ p++; name_len--;
+ }
+
+ if(!name || (name == uri_string))
+ return NULL;
+
+ ns_uri_string_len = uri_len - name_len;
+ ns_uri_string = RAPTOR_MALLOC(unsigned char*, ns_uri_string_len + 1);
+ if(!ns_uri_string)
+ return NULL;
+ memcpy(ns_uri_string, (const char*)uri_string, ns_uri_string_len);
+ ns_uri_string[ns_uri_string_len] = '\0';
+
+ ns_uri = raptor_new_uri_from_counted_string(node->world, ns_uri_string,
+ ns_uri_string_len);
+ RAPTOR_FREE(char*, ns_uri_string);
+
+ if(!ns_uri)
+ return NULL;
+
+ ns = raptor_namespaces_find_namespace_by_uri(nstack, ns_uri);
+ if(!ns) {
+ /* The namespace was not declared, so create one */
+ unsigned char prefix[2 + MAX_ASCII_INT_SIZE + 1];
+ (*namespace_count)++;
+ prefix[0] = 'n';
+ prefix[1] = 's';
+ (void)raptor_format_integer(RAPTOR_GOOD_CAST(char*,&prefix[2]),
+ MAX_ASCII_INT_SIZE + 1, *namespace_count,
+ /* base */ 10, -1, '\0');
+
+ ns = raptor_new_namespace_from_uri(nstack, prefix, ns_uri, 0);
+
+ /* We'll most likely need this namespace again. Push it on our
+ * stack. It will be deleted in raptor_rdfxmla_serialize_terminate()
+ */
+ if(raptor_sequence_push(namespaces, ns)) {
+ /* namespaces sequence has no free handler so we have to free
+ * the ns ourselves on error
+ */
+ raptor_free_namespace(ns);
+ raptor_free_uri(ns_uri);
+ return NULL;
+ }
+ }
+
+ qname = raptor_new_qname_from_namespace_local_name(node->world, ns, name,
+ NULL);
+
+ raptor_free_uri(ns_uri);
+
+ return qname;
+}
diff --git a/src/raptor_avltree.c b/src/raptor_avltree.c
new file mode 100644
index 0000000..62ff93c
--- /dev/null
+++ b/src/raptor_avltree.c
@@ -0,0 +1,1766 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_avltree.c - Balanced Binary Tree / AVL Tree
+ *
+ * This file is in the public domain.
+ *
+ * Based on public domain sources posted to comp.sources.misc in 1993
+ *
+ * From: p...@vix.com (Paul Vixie)
+ * Newsgroups: comp.sources.unix
+ * Subject: v27i034: REPOST AVL Tree subroutines (replaces v11i020 from 1987), Part01/01
+ * Date: 6 Sep 1993 13:51:22 -0700
+ * Message-ID: <1.747348668.4037@gw.home.vix.com>
+ *
+ * ----------------------------------------------------------------------
+ * Original headers below
+ */
+
+/* as_tree - tree library for as
+ * vix 14dec85 [written]
+ * vix 02feb86 [added tree balancing from wirth "a+ds=p" p. 220-221]
+ * vix 06feb86 [added tree_mung()]
+ * vix 20jun86 [added tree_delete per wirth a+ds (mod2 v.) p. 224]
+ * vix 23jun86 [added delete uar to add for replaced nodes]
+ * vix 22jan93 [revisited; uses RCS, ANSI, POSIX; has bug fixes]
+ */
+
+
+/* This program text was created by Paul Vixie using examples from the book:
+ * "Algorithms & Data Structures," Niklaus Wirth, Prentice-Hall, 1986, ISBN
+ * 0-13-022005-1. This code and associated documentation is hereby placed
+ * in the public domain.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+#define RAPTOR_AVLTREE_DEBUG1(msg) RAPTOR_DEBUG1(msg)
+#else
+#define RAPTOR_AVLTREE_DEBUG1(msg)
+#endif
+
+
+#define RAPTOR_AVLTREE_ENOMEM -1
+#define RAPTOR_AVLTREE_EXISTS 1
+
+
+#ifndef STANDALONE
+
+/* raptor_avltree.c */
+typedef struct raptor_avltree_node_s raptor_avltree_node;
+
+/* AVL-tree */
+struct raptor_avltree_s {
+ /* root node of tree */
+ raptor_avltree_node* root;
+
+ /* node comparison function (optional) */
+ raptor_data_compare_handler compare_handler;
+
+ /* node deletion function (optional) */
+ raptor_data_free_handler free_handler;
+
+ /* node print function (optional) */
+ raptor_data_print_handler print_handler;
+
+ /* tree bitflags - bitmask of #raptor_avltree_bitflags flags */
+ unsigned int flags;
+
+ /* number of nodes in tree */
+ unsigned int size;
+};
+
+
+/* AVL-tree node */
+struct raptor_avltree_node_s {
+ /* parent tree */
+ struct raptor_avltree_node_s *parent;
+
+ /* left child tree */
+ struct raptor_avltree_node_s *left;
+
+ /* right child tree */
+ struct raptor_avltree_node_s *right;
+
+ /* balance factor =
+ * height of the right tree minus the height of the left tree
+ * i.e. equal: 0 left larger: -1 right larger: 1
+ */
+ signed char balance;
+
+ /* actual data */
+ void* data;
+};
+
+
+#ifndef TRUE
+#define TRUE 1
+#define FALSE 0
+#endif
+
+
+/* local prototypes */
+static int raptor_avltree_sprout(raptor_avltree* tree, raptor_avltree_node* parent, raptor_avltree_node** node_pp, void* p_data, int *rebalancing_p);
+static void* raptor_avltree_delete_internal(raptor_avltree* tree, raptor_avltree_node** node_pp, void* p_data, int *rebalancing_p);
+static void* raptor_avltree_delete_internal2(raptor_avltree* tree, raptor_avltree_node** ppr_r, int *rebalancing_p, raptor_avltree_node** ppr_q);
+static void raptor_avltree_balance_left(raptor_avltree* tree, raptor_avltree_node** node_pp, int *rebalancing_p);
+static void raptor_avltree_balance_right(raptor_avltree* tree, raptor_avltree_node** node_pp, int *rebalancing_p);
+static raptor_avltree_node* raptor_avltree_search_internal(raptor_avltree* tree, raptor_avltree_node* node, const void* p_data);
+static int raptor_avltree_visit_internal(raptor_avltree* tree, raptor_avltree_node* node, int depth, raptor_avltree_visit_handler visit_fn, void* user_data);
+static void raptor_free_avltree_internal(raptor_avltree* tree, raptor_avltree_node* node);
+#ifdef RAPTOR_DEBUG
+static void raptor_avltree_check_internal(raptor_avltree* tree, raptor_avltree_node* node, unsigned int* count_p);
+#endif
+
+
+/**
+ * raptor_new_avltree:
+ * @compare_handler: item comparison handler for ordering
+ * @free_handler: item free handler (or NULL)
+ * @flags: AVLTree flags - bitmask of #raptor_avltree_bitflags flags.
+ *
+ * AVL Tree Constructor
+ *
+ * Return value: new AVL Tree or NULL on failure
+ */
+raptor_avltree*
+raptor_new_avltree(raptor_data_compare_handler compare_handler,
+ raptor_data_free_handler free_handler,
+ unsigned int flags)
+{
+ raptor_avltree* tree;
+
+ tree = RAPTOR_MALLOC(raptor_avltree*, sizeof(*tree));
+ if(!tree)
+ return NULL;
+
+ tree->root = NULL;
+ tree->compare_handler = compare_handler;
+ tree->free_handler = free_handler;
+ tree->print_handler = NULL;
+ tree->flags = flags;
+ tree->size = 0;
+
+ return tree;
+}
+
+
+/**
+ * raptor_free_avltree:
+ * @tree: AVLTree object
+ *
+ * AVL Tree destructor
+ */
+void
+raptor_free_avltree(raptor_avltree* tree)
+{
+ if(!tree)
+ return;
+
+ raptor_free_avltree_internal(tree, tree->root);
+
+ RAPTOR_FREE(raptor_avltree, tree);
+}
+
+
+static void
+raptor_free_avltree_internal(raptor_avltree* tree, raptor_avltree_node* node)
+{
+ if(node) {
+ raptor_free_avltree_internal(tree, node->left);
+
+ raptor_free_avltree_internal(tree, node->right);
+
+ if(tree->free_handler)
+ tree->free_handler(node->data);
+ tree->size--;
+ RAPTOR_FREE(raptor_avltree_node, node);
+ }
+}
+
+
+/* methods */
+
+static raptor_avltree_node*
+raptor_avltree_search_internal(raptor_avltree* tree, raptor_avltree_node* node,
+ const void* p_data)
+{
+ if(node) {
+ int cmp= tree->compare_handler(p_data, node->data);
+
+ if(cmp > 0)
+ return raptor_avltree_search_internal(tree, node->right, p_data);
+ else if(cmp < 0)
+ return raptor_avltree_search_internal(tree, node->left, p_data);
+
+ /* found */
+ return node;
+ }
+
+ /* otherwise not found */
+ return NULL;
+}
+
+
+/**
+ * raptor_avltree_search:
+ * @tree: AVL Tree object
+ * @p_data: pointer to data item
+ *
+ * Find an item in an AVL Tree
+ *
+ * Return value: shared pointer to item (still owned by AVL Tree) or NULL on failure or if not found
+ */
+void*
+raptor_avltree_search(raptor_avltree* tree, const void* p_data)
+{
+ raptor_avltree_node* node;
+ node = raptor_avltree_search_internal(tree, tree->root, p_data);
+ return node ? node->data : NULL;
+}
+
+
+/**
+ * raptor_avltree_add:
+ * @tree: AVL Tree object
+ * @p_data: pointer to data item
+ *
+ * add an item to an AVL Tree
+ *
+ * The item added becomes owned by the AVL Tree, and will be freed by
+ * the free_handler argument given to raptor_new_avltree().
+ *
+ * Return value: 0 on success, >0 if equivalent item exists (and the old element remains in the tree), <0 on failure
+ */
+int
+raptor_avltree_add(raptor_avltree* tree, void* p_data)
+{
+ int rebalancing = FALSE;
+ int rv;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_AVLTREE_DEBUG1("Checking tree before adding\n");
+ raptor_avltree_check(tree);
+#endif
+
+ rv = raptor_avltree_sprout(tree, NULL, &tree->root, p_data,
+ &rebalancing);
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_AVLTREE_DEBUG1("Checking tree after adding\n");
+ raptor_avltree_check(tree);
+#endif
+
+ return rv;
+}
+
+
+/**
+ * raptor_avltree_remove:
+ * @tree: AVL Tree object
+ * @p_data: pointer to data item
+ *
+ * Remove an item from an AVL Tree and return it
+ *
+ * The item removed is no longer owned by the AVL Tree and is
+ * owned by the caller.
+ *
+ * Return value: object or NULL on failure or if not found
+ */
+void*
+raptor_avltree_remove(raptor_avltree* tree, void* p_data)
+{
+ int rebalancing = FALSE;
+ void* rdata;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_AVLTREE_DEBUG1("Checking tree before removing\n");
+ raptor_avltree_dump(tree,stderr);
+ raptor_avltree_check(tree);
+#endif
+ rdata = raptor_avltree_delete_internal(tree, &tree->root, p_data,
+ &rebalancing);
+ if(rdata)
+ tree->size--;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_AVLTREE_DEBUG1("Checking tree after removing\n");
+ raptor_avltree_dump(tree,stderr);
+ raptor_avltree_check(tree);
+#endif
+
+ return rdata;
+}
+
+
+/**
+ * raptor_avltree_delete:
+ * @tree: AVL Tree object
+ * @p_data: pointer to data item
+ *
+ * Remove an item from an AVL Tree and free it
+ *
+ * Return value: non-0 on failure
+ */
+int
+raptor_avltree_delete(raptor_avltree* tree, void* p_data)
+{
+ void* rdata;
+
+ rdata = raptor_avltree_remove(tree, p_data);
+ if(rdata) {
+ if(tree->free_handler)
+ tree->free_handler(rdata);
+ }
+
+ return (rdata != NULL);
+}
+
+
+static int
+raptor_avltree_visit_internal(raptor_avltree* tree, raptor_avltree_node* node,
+ int depth,
+ raptor_avltree_visit_handler visit_handler,
+ void* user_data)
+{
+ if(!node)
+ return TRUE;
+
+ if(!raptor_avltree_visit_internal(tree, node->left, depth+1,
+ visit_handler, user_data))
+ return FALSE;
+
+ if(!visit_handler(depth, node->data, user_data))
+ return FALSE;
+
+ if(!raptor_avltree_visit_internal(tree, node->right, depth+1,
+ visit_handler, user_data))
+ return FALSE;
+
+ return TRUE;
+}
+
+
+/**
+ * raptor_avltree_visit:
+ * @tree: AVL Tree object
+ * @visit_handler: visit function to call at each item
+ * @user_data: user data pointer fo visit function
+ *
+ * Perform an in-order visit of the items in the AVL Tree
+ *
+ * Return value: non-0 if traversal was terminated early by @visit_handler
+*/
+int
+raptor_avltree_visit(raptor_avltree* tree,
+ raptor_avltree_visit_handler visit_handler,
+ void* user_data)
+{
+ return raptor_avltree_visit_internal(tree, tree->root, 0,
+ visit_handler, user_data);
+}
+
+
+#ifdef RAPTOR_DEBUG
+static void
+raptor_avltree_print_node(raptor_avltree_node* node)
+{
+ fprintf(stderr, "%p: parent %p left %p right %p data %p",
+ node, node->parent, node->left, node->right, node->data);
+}
+
+
+static void
+raptor_avltree_check_node(raptor_avltree* tree, raptor_avltree_node* node,
+ const char* fn, const char* where)
+{
+ if(node->parent) {
+ if((node->parent == node->left) || (node->parent == node->right)) {
+ if(fn && where)
+ fprintf(stderr, "%s (%s): ", fn, where);
+ fputs("ERROR bad node ", stderr);
+ raptor_avltree_print_node(node);
+ fputc('\n', stderr);
+ fflush(stderr);
+ abort();
+ }
+
+ if(node->parent->left != node && node->parent->right != node) {
+ if(fn && where)
+ fprintf(stderr, "%s (%s): ", fn, where);
+ fputs("ERROR parent node ", stderr);
+ raptor_avltree_print_node(node->parent);
+ fputs(" has no reference to child node ", stderr);
+ raptor_avltree_print_node(node);
+ fputc('\n', stderr);
+ fflush(stderr);
+ abort();
+ }
+ }
+
+ if(node->left) {
+ if(node->left->parent != node) {
+ if(fn && where)
+ fprintf(stderr, "%s (%s): ", fn, where);
+ fputs("ERROR left child node ", stderr);
+ raptor_avltree_print_node(node->left);
+ fputs(" has no reference to this[parent] node ", stderr);
+ raptor_avltree_print_node(node);
+ fputc('\n', stderr);
+ fflush(stderr);
+ abort();
+ }
+ }
+ if(node->right) {
+ if(node->right->parent != node) {
+ if(fn && where)
+ fprintf(stderr, "%s (%s): ", fn, where);
+ fputs("ERROR right child node ", stderr);
+ raptor_avltree_print_node(node->right);
+ fputs(" has no reference to this[parent] node ", stderr);
+ raptor_avltree_print_node(node);
+ fputc('\n', stderr);
+ fflush(stderr);
+ abort();
+ }
+ }
+}
+#endif
+
+
+static int
+raptor_avltree_sprout_left(raptor_avltree* tree, raptor_avltree_node** node_pp,
+ void* p_data, int *rebalancing_p)
+{
+ raptor_avltree_node *p1, *p2, *p_parent;
+ int rc;
+
+ RAPTOR_AVLTREE_DEBUG1("LESS. raptor_avltree_sprouting left.\n");
+
+ p_parent = (*node_pp)->parent;
+
+ rc = raptor_avltree_sprout(tree, *node_pp, &(*node_pp)->left, p_data,
+ rebalancing_p);
+ if(rc)
+ return rc;
+
+ if(!*rebalancing_p)
+ return FALSE;
+
+ /* left branch has grown longer */
+ RAPTOR_AVLTREE_DEBUG1("LESS: left branch has grown\n");
+ switch((*node_pp)->balance) {
+ case 1:
+ /* right branch WAS longer; balance is ok now */
+ RAPTOR_AVLTREE_DEBUG1("LESS: case 1.. balance restored implicitly\n");
+ (*node_pp)->balance = 0;
+ *rebalancing_p = FALSE;
+ break;
+
+ case 0:
+ /* balance WAS okay; now left branch longer */
+ RAPTOR_AVLTREE_DEBUG1("LESS: case 0.. balance bad but still ok\n");
+ (*node_pp)->balance = -1;
+ break;
+
+ case -1:
+ /* left branch was already too long. rebalance */
+ RAPTOR_AVLTREE_DEBUG1("LESS: case -1: rebalancing\n");
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_AVLTREE_DEBUG1("Tree before rebalancing\n");
+ raptor_avltree_dump(tree, stderr);
+#endif
+ p1 = (*node_pp)->left;
+
+ if(p1->balance == -1) {
+ /* LL */
+ RAPTOR_AVLTREE_DEBUG1("LESS: single LL\n");
+ (*node_pp)->left = p1->right;
+ if((*node_pp)->left)
+ (*node_pp)->left->parent = (*node_pp);
+ p1->right = *node_pp;
+ if(p1->right)
+ p1->right->parent = p1;
+ (*node_pp)->balance = 0;
+ *node_pp = p1;
+ (*node_pp)->parent = p_parent;
+ } else {
+ /* double LR */
+ RAPTOR_AVLTREE_DEBUG1("LESS: double LR\n");
+ p2 = p1->right;
+ p1->right= p2->left;
+ if(p1->right)
+ p1->right->parent = p1;
+ p2->left = p1;
+ if(p2->left)
+ p2->left->parent = p2;
+
+ (*node_pp)->left = p2->right;
+ if((*node_pp)->left)
+ (*node_pp)->left->parent = (*node_pp);
+ p2->right = *node_pp;
+ if(p2->right)
+ p2->right->parent = p2;
+
+ if(p2->balance == -1)
+ (*node_pp)->balance = 1;
+ else
+ (*node_pp)->balance = 0;
+
+ if(p2->balance == 1)
+ p1->balance = -1;
+ else
+ p1->balance = 0;
+
+ *node_pp = p2;
+ (*node_pp)->parent = p_parent;
+ } /* end else */
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_AVLTREE_DEBUG1("Tree after rebalancing\n");
+ raptor_avltree_dump(tree, stderr);
+#endif
+
+ (*node_pp)->balance = 0;
+ *rebalancing_p = FALSE;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ if(1) {
+ unsigned int discard = 0;
+ raptor_avltree_check_internal(tree, *node_pp, &discard);
+ }
+#endif
+ } /* end switch */
+
+ return FALSE;
+}
+
+
+static int
+raptor_avltree_sprout_right(raptor_avltree* tree,
+ raptor_avltree_node** node_pp,
+ void* p_data, int *rebalancing_p)
+{
+ raptor_avltree_node *p1, *p2, *p_parent;
+ int rc;
+
+ RAPTOR_AVLTREE_DEBUG1("MORE: raptor_avltree_sprouting to the right\n");
+
+ p_parent = (*node_pp)->parent;
+
+ rc = raptor_avltree_sprout(tree, *node_pp, &(*node_pp)->right, p_data,
+ rebalancing_p);
+ if(rc)
+ return rc;
+
+ if(!*rebalancing_p)
+ return FALSE;
+
+ /* right branch has grown longer */
+ RAPTOR_AVLTREE_DEBUG1("MORE: right branch has grown\n");
+
+ switch((*node_pp)->balance) {
+ case -1:
+ RAPTOR_AVLTREE_DEBUG1("MORE: balance was off, fixed implicitly\n");
+ (*node_pp)->balance = 0;
+ *rebalancing_p = FALSE;
+ break;
+
+ case 0:
+ RAPTOR_AVLTREE_DEBUG1("MORE: balance was okay, now off but ok\n");
+ (*node_pp)->balance = 1;
+ break;
+
+ case 1:
+ RAPTOR_AVLTREE_DEBUG1("MORE: balance was off, need to rebalance\n");
+ p1 = (*node_pp)->right;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_AVLTREE_DEBUG1("Tree before rebalancing\n");
+ raptor_avltree_dump(tree, stderr);
+#endif
+ if(p1->balance == 1) {
+ /* RR */
+ RAPTOR_AVLTREE_DEBUG1("MORE: single RR\n");
+ (*node_pp)->right = p1->left;
+ if((*node_pp)->right)
+ (*node_pp)->right->parent = (*node_pp);
+ p1->left = *node_pp;
+ if(p1->left)
+ p1->left->parent = p1;
+ (*node_pp)->balance = 0;
+ *node_pp = p1;
+ (*node_pp)->parent = p_parent;
+ } else {
+ /* double RL */
+ RAPTOR_AVLTREE_DEBUG1("MORE: double RL\n");
+
+ p2 = p1->left;
+ p1->left = p2->right;
+ if(p1->left)
+ p1->left->parent = p1;
+ p2->right = p1;
+ if(p2->right)
+ p2->right->parent = p2;
+
+ (*node_pp)->right = p2->left;
+ if((*node_pp)->right)
+ (*node_pp)->right->parent = (*node_pp);
+ p2->left = *node_pp;
+ if(p2->left)
+ p2->left->parent = p2;
+
+ if(p2->balance == 1)
+ (*node_pp)->balance = -1;
+ else
+ (*node_pp)->balance = 0;
+
+ if(p2->balance == -1)
+ p1->balance = 1;
+ else
+ p1->balance = 0;
+
+ *node_pp = p2;
+ (*node_pp)->parent = p_parent;
+ } /* end else */
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_AVLTREE_DEBUG1("Tree after rebalancing\n");
+ raptor_avltree_dump(tree, stderr);
+#endif
+ (*node_pp)->balance = 0;
+ *rebalancing_p = FALSE;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ if(1) {
+ unsigned int discard = 0;
+ raptor_avltree_check_internal(tree, *node_pp, &discard);
+ }
+#endif
+ } /* end switch */
+
+ return FALSE;
+}
+
+
+/* grow a tree by sprouting with a new node
+ *
+ * Return values:
+ * 0 on success
+ * >0 if equivalent item exists (and the old element remains in the tree)
+ * <0 if memory is exhausted.
+ */
+static int
+raptor_avltree_sprout(raptor_avltree* tree, raptor_avltree_node* parent,
+ raptor_avltree_node** node_pp, void* p_data,
+ int *rebalancing_p)
+{
+ int cmp;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_AVLTREE_DEBUG1("Enter\n");
+ if ( *node_pp) {
+ raptor_avltree_print_node(*node_pp);
+ RAPTOR_AVLTREE_DEBUG1("\n");
+ }
+ else {
+ RAPTOR_AVLTREE_DEBUG1("Nil node\n");
+ }
+#endif
+
+ /* If grounded, add the node here, set the rebalance flag and return */
+ if(!*node_pp) {
+ RAPTOR_AVLTREE_DEBUG1("grounded. adding new node, setting rebalancing flag true\n");
+ *node_pp = RAPTOR_MALLOC(raptor_avltree_node*, sizeof(**node_pp));
+ if(!*node_pp) {
+ if(tree->free_handler)
+ tree->free_handler(p_data);
+ return RAPTOR_AVLTREE_ENOMEM;
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("Creating new node %p\n", *node_pp);
+#endif
+
+ (*node_pp)->parent = parent;
+ (*node_pp)->left = NULL;
+ (*node_pp)->right = NULL;
+ (*node_pp)->balance = 0;
+ (*node_pp)->data= p_data;
+ *rebalancing_p = TRUE;
+
+ tree->size++;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ raptor_avltree_check_node(tree, *node_pp, 0, 0);
+
+ RAPTOR_AVLTREE_DEBUG1("Tree now looks this way\n");
+ raptor_avltree_dump(tree,stderr);
+#endif
+
+ return FALSE;
+ }
+
+ /* check node */
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ raptor_avltree_check_node(tree, *node_pp, 0, 0);
+#endif
+ /* compare the data */
+ cmp = tree->compare_handler(p_data, (*node_pp)->data);
+ if(cmp < 0)
+ /* if LESS, prepare to move to the left. */
+ return raptor_avltree_sprout_left(tree, node_pp, p_data, rebalancing_p);
+ else if(cmp > 0)
+ /* if MORE, prepare to move to the right. */
+ return raptor_avltree_sprout_right(tree, node_pp, p_data, rebalancing_p);
+
+ /* otherwise equivalent key */
+ *rebalancing_p = FALSE;
+
+ if(tree->flags & RAPTOR_AVLTREE_FLAG_REPLACE_DUPLICATES) {
+ /* replace item with equivalent key */
+ if(tree->free_handler)
+ tree->free_handler((*node_pp)->data);
+ (*node_pp)->data= p_data;
+
+ return FALSE;
+ } else {
+ /* ignore item with equivalent key */
+ if(tree->free_handler)
+ tree->free_handler(p_data);
+ return RAPTOR_AVLTREE_EXISTS;
+ }
+}
+
+
+static void*
+raptor_avltree_delete_internal(raptor_avltree* tree,
+ raptor_avltree_node** node_pp,
+ void* p_data,
+ int *rebalancing_p)
+{
+ int cmp;
+ void* rdata = NULL;
+
+ RAPTOR_AVLTREE_DEBUG1("Enter\n");
+
+ if(*node_pp == NULL) {
+ RAPTOR_AVLTREE_DEBUG1("key not in tree\n");
+ return rdata;
+ }
+
+ cmp = tree->compare_handler((*node_pp)->data, p_data);
+
+ if(cmp > 0) {
+ RAPTOR_AVLTREE_DEBUG1("too high - scan left\n");
+ rdata = raptor_avltree_delete_internal(tree, &(*node_pp)->left, p_data,
+ rebalancing_p);
+ if(*rebalancing_p)
+ raptor_avltree_balance_left(tree, node_pp, rebalancing_p);
+
+ } else if(cmp < 0) {
+ RAPTOR_AVLTREE_DEBUG1("too low - scan right\n");
+ rdata = raptor_avltree_delete_internal(tree, &(*node_pp)->right, p_data,
+ rebalancing_p);
+ if(*rebalancing_p)
+ raptor_avltree_balance_right(tree, node_pp, rebalancing_p);
+
+ } else {
+ raptor_avltree_node *pr_q;
+
+ RAPTOR_AVLTREE_DEBUG1("equal\n");
+ pr_q = *node_pp;
+
+ rdata = pr_q->data;
+
+ if(pr_q->right == NULL) {
+ RAPTOR_AVLTREE_DEBUG1("right subtree null\n");
+ *node_pp = pr_q->left;
+ if(*node_pp)
+ (*node_pp)->parent = pr_q->parent;
+ *rebalancing_p = TRUE;
+ } else if(pr_q->left == NULL) {
+ RAPTOR_AVLTREE_DEBUG1("right subtree non-null, left subtree null\n");
+ *node_pp = pr_q->right;
+ if(*node_pp)
+ (*node_pp)->parent = pr_q->parent;
+ *rebalancing_p = TRUE;
+ } else {
+ RAPTOR_AVLTREE_DEBUG1("neither subtree null\n");
+ rdata = raptor_avltree_delete_internal2(tree, &pr_q->left, rebalancing_p,
+ &pr_q);
+ if(*rebalancing_p)
+ raptor_avltree_balance_left(tree, node_pp, rebalancing_p);
+ }
+
+ RAPTOR_FREE(raptor_avltree_node, pr_q);
+ }
+
+ return rdata;
+}
+
+
+static void*
+raptor_avltree_delete_internal2(raptor_avltree* tree,
+ raptor_avltree_node** ppr_r,
+ int *rebalancing_p,
+ raptor_avltree_node** ppr_q)
+{
+ void* rdata = NULL;
+
+ RAPTOR_AVLTREE_DEBUG1("Enter\n");
+
+ if((*ppr_r)->right != NULL) {
+ rdata = raptor_avltree_delete_internal2(tree,
+ &(*ppr_r)->right,
+ rebalancing_p,
+ ppr_q);
+ if(*rebalancing_p)
+ raptor_avltree_balance_right(tree, ppr_r, rebalancing_p);
+
+ } else {
+ raptor_avltree_node* ppr_r_left_new_parent;
+ rdata = (*ppr_q)->data;
+
+ (*ppr_q)->data = (*ppr_r)->data;
+ *ppr_q = *ppr_r;
+ ppr_r_left_new_parent = (*ppr_r)->parent;
+ *ppr_r = (*ppr_r)->left;
+ if(*ppr_r)
+ (*ppr_r)->parent = ppr_r_left_new_parent;
+ *rebalancing_p = TRUE;
+ }
+
+ return rdata;
+}
+
+
+static void
+raptor_avltree_balance_left(raptor_avltree* tree,
+ raptor_avltree_node** node_pp, int *rebalancing_p)
+{
+ raptor_avltree_node *p1, *p2, *p_parent;
+ int b1, b2;
+
+ RAPTOR_AVLTREE_DEBUG1("left branch has shrunk\n");
+
+ p_parent = (*node_pp)->parent;
+
+ switch((*node_pp)->balance) {
+ case -1:
+ RAPTOR_AVLTREE_DEBUG1("was imbalanced, fixed implicitly\n");
+ (*node_pp)->balance = 0;
+ break;
+
+ case 0:
+ RAPTOR_AVLTREE_DEBUG1("was okay, is now one off\n");
+ (*node_pp)->balance = 1;
+ *rebalancing_p = FALSE;
+ break;
+
+ case 1:
+ RAPTOR_AVLTREE_DEBUG1("was already off, this is too much\n");
+ p1 = (*node_pp)->right;
+ b1 = p1->balance;
+
+ if(b1 >= 0) {
+ RAPTOR_AVLTREE_DEBUG1("single RR\n");
+ (*node_pp)->right = p1->left;
+ if((*node_pp)->right)
+ (*node_pp)->right->parent = (*node_pp);
+ p1->left = *node_pp;
+ if(p1->left)
+ p1->left->parent = p1;
+ if(b1 == 0) {
+ RAPTOR_AVLTREE_DEBUG1("b1 == 0\n");
+ (*node_pp)->balance = 1;
+ p1->balance = -1;
+ *rebalancing_p = FALSE;
+ } else {
+ RAPTOR_AVLTREE_DEBUG1("b1 != 0\n");
+ (*node_pp)->balance = 0;
+ p1->balance = 0;
+ }
+ *node_pp = p1;
+ (*node_pp)->parent = p_parent;
+ } else {
+ RAPTOR_AVLTREE_DEBUG1("double RL\n");
+ p2 = p1->left;
+ b2 = p2->balance;
+ p1->left = p2->right;
+ if(p1->left)
+ p1->left->parent = p1;
+ p2->right = p1;
+ if(p2->right)
+ p2->right->parent = p2;
+ (*node_pp)->right = p2->left;
+ if((*node_pp)->right)
+ (*node_pp)->right->parent = (*node_pp);
+ p2->left = *node_pp;
+ if(p2->left)
+ p2->left->parent = p2;
+ if(b2 == 1)
+ (*node_pp)->balance = -1;
+ else
+ (*node_pp)->balance = 0;
+ if(b2 == -1)
+ p1->balance = 1;
+ else
+ p1->balance = 0;
+ *node_pp = p2;
+ (*node_pp)->parent = p_parent;
+ p2->balance = 0;
+ }
+ break;
+ } /* end switch */
+
+}
+
+
+static void
+raptor_avltree_balance_right(raptor_avltree* tree,
+ raptor_avltree_node** node_pp, int *rebalancing_p)
+{
+ raptor_avltree_node *p1, *p2, *p_parent;
+ int b1, b2;
+
+ RAPTOR_AVLTREE_DEBUG1("right branch has shrunk\n");
+
+ p_parent = (*node_pp)->parent;
+
+ switch((*node_pp)->balance) {
+ case 1:
+ RAPTOR_AVLTREE_DEBUG1("was imbalanced, fixed implicitly\n");
+ (*node_pp)->balance = 0;
+ break;
+
+ case 0:
+ RAPTOR_AVLTREE_DEBUG1("was okay, is now one off\n");
+ (*node_pp)->balance = -1;
+ *rebalancing_p = FALSE;
+ break;
+
+ case -1:
+ RAPTOR_AVLTREE_DEBUG1("was already off, this is too much\n");
+ p1 = (*node_pp)->left;
+ b1 = p1->balance;
+
+ if(b1 <= 0) {
+ RAPTOR_AVLTREE_DEBUG1("single LL\n");
+ (*node_pp)->left = p1->right;
+ if((*node_pp)->left)
+ (*node_pp)->left->parent = (*node_pp);
+ p1->right = *node_pp;
+ if(p1->right)
+ p1->right->parent = p1;
+ if(b1 == 0) {
+ RAPTOR_AVLTREE_DEBUG1("b1 == 0\n");
+ (*node_pp)->balance = -1;
+ p1->balance = 1;
+ *rebalancing_p = FALSE;
+ } else {
+ RAPTOR_AVLTREE_DEBUG1("b1 != 0\n");
+ (*node_pp)->balance = 0;
+ p1->balance = 0;
+ }
+ *node_pp = p1;
+ (*node_pp)->parent = p_parent;
+ } else {
+ RAPTOR_AVLTREE_DEBUG1("double LR\n");
+ p2 = p1->right;
+ b2 = p2->balance;
+ p1->right = p2->left;
+ if(p1->right)
+ p1->right->parent = p1;
+ p2->left = p1;
+ if(p2->left)
+ p2->left->parent = p2;
+ (*node_pp)->left = p2->right;
+ if((*node_pp)->left)
+ (*node_pp)->left->parent = (*node_pp);
+ p2->right = *node_pp;
+ if(p2->right)
+ p2->right->parent = p2;
+ if(b2 == -1)
+ (*node_pp)->balance = 1;
+ else
+ (*node_pp)->balance = 0;
+ if(b2 == 1)
+ p1->balance = -1;
+ else
+ p1->balance = 0;
+ *node_pp = p2;
+ (*node_pp)->parent = p_parent;
+ p2->balance = 0;
+ }
+ } /* end switch */
+
+}
+
+
+/**
+ * raptor_avltree_size:
+ * @tree: AVL Tree object
+ *
+ * Get the number of items in the AVL Tree
+ *
+ * Return value: number of items in tree
+ */
+int
+raptor_avltree_size(raptor_avltree* tree)
+{
+ return tree->size;
+}
+
+
+/**
+ * raptor_avltree_set_print_handler:
+ * @tree: AVL Tree object
+ * @print_handler: print function
+ *
+ * Set the handler for printing an item in a tree
+ *
+ */
+void
+raptor_avltree_set_print_handler(raptor_avltree* tree,
+ raptor_data_print_handler print_handler)
+{
+ tree->print_handler = print_handler;
+}
+
+
+/* Follow left children until a match for range is found (if range not NULL) */
+static raptor_avltree_node*
+raptor_avltree_node_leftmost(raptor_avltree* tree, raptor_avltree_node* node,
+ void* range)
+{
+ /*assert(node);
+ assert(!range || tree->compare_handler(range, node->data) == 0);*/
+ if(range)
+ while(node && node->left &&
+ tree->compare_handler(range, node->left->data) == 0)
+ node = node->left;
+ else
+ while(node && node->left)
+ node = node->left;
+
+ return node;
+}
+
+
+static raptor_avltree_node*
+raptor_avltree_node_rightmost(raptor_avltree* tree, raptor_avltree_node* node,
+ void* range)
+{
+ /*assert(node);
+ assert(!range || tree->compare_handler(range, node->data) == 0);*/
+ if(range)
+ while(node && node->right &&
+ tree->compare_handler(range, node->right->data) == 0)
+ node = node->right;
+ else
+ while(node && node->right)
+ node = node->right;
+ return node;
+}
+
+
+/* Follow right children until a match for range is found (range required) */
+static raptor_avltree_node*
+raptor_avltree_node_search_right(raptor_avltree* tree,
+ raptor_avltree_node* node, void* range)
+{
+ raptor_avltree_node* result;
+
+ if(!node)
+ return NULL;
+
+ result = node->right;
+ while(result) {
+ if(tree->compare_handler(range, result->data) == 0) {
+ return result;
+ } else {
+ result = result->right;
+ }
+ }
+
+ return node;
+}
+
+
+/* Follow left children until a match for range is found (range required) */
+static raptor_avltree_node*
+raptor_avltree_node_search_left(raptor_avltree* tree,
+ raptor_avltree_node* node, void* range)
+{
+ raptor_avltree_node* result;
+
+ if(!node)
+ return NULL;
+
+ result = node->left;
+ while(result) {
+ if(tree->compare_handler(range, result->data) == 0) {
+ return result;
+ } else {
+ result = result->left;
+ }
+ }
+
+ return node;
+}
+
+
+static raptor_avltree_node*
+raptor_avltree_node_prev(raptor_avltree* tree, raptor_avltree_node* node,
+ void* range)
+{
+ int up = 0;
+
+ /*assert(!range || tree->compare_handler(range, node->data) == 0);*/
+
+ if(node->left) {
+ /* Should never go left if the current node is already < range */
+ raptor_avltree_node* prev;
+ prev = raptor_avltree_node_rightmost(tree, node->left, NULL);
+ /*assert(!range ||tree->compare_handler(range, node->data) <= 0);*/
+ if(range) {
+ if(tree->compare_handler(range, prev->data) == 0) {
+ up = 0;
+ node = prev;
+ } else {
+ up = 1;
+ }
+ } else {
+ node = prev;
+ up = 0;
+ }
+ } else {
+ up = 1;
+ }
+
+ if(up) {
+ raptor_avltree_node* last = node;
+ /* Need to go up */
+ node = node->parent;
+ while(node) {
+
+ /* moving from right subtree to this node */
+ if(node->right && last == node->right) {
+ break;
+ }
+
+ /* moved up to find an unvisited left subtree */
+ if(node->left && last != node->left) {
+ /* Should never go left if the current node is already > range */
+ /*assert(!range ||tree->compare_handler(range, node->data) <= 0);*/
+ node = raptor_avltree_node_rightmost(tree, node->left, range);
+ break;
+ }
+ last = node;
+ node = node->parent;
+ }
+ }
+
+ if(node && range) {
+ if(tree->compare_handler(range, node->data) == 0)
+ return node;
+ else
+ return NULL;
+ } else {
+ return node;
+ }
+}
+
+
+/* Follow right children until a match for range is found (if range not NULL) */
+static raptor_avltree_node*
+raptor_avltree_node_next(raptor_avltree* tree, raptor_avltree_node* node,
+ void* range)
+{
+ int up = 0;
+
+ /*assert(!range || tree->compare_handler(range, node->data) == 0);*/
+
+ if(node->right) {
+ /* Should never go right if the current node is already > range */
+ raptor_avltree_node* next;
+ next = raptor_avltree_node_leftmost(tree, node->right, NULL);
+ /*assert(!range ||tree->compare_handler(range, node->data) <= 0);*/
+ if(range) {
+ if(tree->compare_handler(range, next->data) == 0) {
+ up = 0;
+ node = next;
+ } else {
+ up = 1;
+ }
+ } else {
+ node = next;
+ up = 0;
+ }
+ } else {
+ up = 1;
+ }
+
+ if(up) {
+ raptor_avltree_node* last = node;
+ /* Need to go up */
+ node = node->parent;
+ while(node) {
+
+ /* moving from left subtree to this node */
+ if(node->left && last == node->left) {
+ break;
+ }
+
+ /* moved up to find an unvisited right subtree */
+ if(node->right && last != node->right) {
+ /* Should never go right if the current node is already > range */
+ /*assert(!range ||tree->compare_handler(range, node->data) <= 0);*/
+ node = raptor_avltree_node_leftmost(tree, node->right, range);
+ break;
+ }
+ last = node;
+ node = node->parent;
+ }
+ }
+
+ if(node && range) {
+ if(tree->compare_handler(range, node->data) == 0)
+ return node;
+ else
+ return NULL;
+ } else {
+ return node;
+ }
+}
+
+
+struct raptor_avltree_iterator_s {
+ raptor_avltree* tree;
+ raptor_avltree_node* root;
+ raptor_avltree_node* current;
+ void* range;
+ raptor_data_free_handler range_free_handler;
+ int direction;
+ int is_finished;
+};
+
+
+/**
+ * raptor_new_avltree_iterator:
+ * @tree: #raptor_avltree object
+ * @range: range
+ * @range_free_handler: function to free @range object
+ * @direction: <0 to go 'backwards' otherwise 'forwards'
+ *
+ * Get an in-order iterator for the start of a range, or the entire contents
+ *
+ * If range is NULL, the entire tree is walked in order. If range
+ * specifies a range (i.e. the tree comparison function will 'match'
+ * (return 0 for) range and /several/ nodes), the iterator will be
+ * placed at the leftmost child matching range, and
+ * raptor_avltree_iterator_next will iterate over all nodes (and only
+ * nodes) that match range.
+ *
+ * Return value: a new #raptor_avltree_iterator object or NULL on failure
+ **/
+raptor_avltree_iterator*
+raptor_new_avltree_iterator(raptor_avltree* tree, void* range,
+ raptor_data_free_handler range_free_handler,
+ int direction)
+{
+ raptor_avltree_iterator* iterator;
+
+ iterator = RAPTOR_CALLOC(raptor_avltree_iterator*, 1, sizeof(*iterator));
+ if(!iterator)
+ return NULL;
+
+ iterator->is_finished = 0;
+ iterator->current = NULL;
+
+ iterator->tree = tree;
+ iterator->range = range;
+ iterator->range_free_handler = range_free_handler;
+ iterator->direction = direction;
+
+ if(range) {
+ /* find the topmost match (range is contained entirely in tree
+ * rooted here)
+ */
+ iterator->current = raptor_avltree_search_internal(tree, tree->root, range);
+ } else {
+ iterator->current = tree->root;
+ }
+
+ iterator->root = iterator->current;
+
+ if(iterator->current) {
+ if(iterator->direction < 0) {
+ /* go down to find END of range (or tree) */
+ while(1) {
+ raptor_avltree_node* pred;
+ iterator->current = raptor_avltree_node_rightmost(tree,
+ iterator->current,
+ range);
+ /* move left until a match is found */
+ pred = raptor_avltree_node_search_left(tree, iterator->current->right,
+ range);
+
+ if(pred && tree->compare_handler(range, pred->data) == 0)
+ iterator->current = pred;
+ else
+ break;
+ }
+ } else {
+ /* go down to find START of range (or tree) */
+ while(1) {
+ raptor_avltree_node* pred;
+ iterator->current = raptor_avltree_node_leftmost(tree,
+ iterator->current,
+ range);
+ /* move right until a match is found */
+ pred = raptor_avltree_node_search_right(tree, iterator->current->left,
+ range);
+
+ if(pred && tree->compare_handler(range, pred->data) == 0)
+ iterator->current = pred;
+ else
+ break;
+ }
+ }
+ }
+
+ return iterator;
+}
+
+
+/**
+ * raptor_free_avltree_iterator:
+ * @iterator: AVL Tree iterator object
+ *
+ * AVL Tree Iterator destructor
+ */
+void
+raptor_free_avltree_iterator(raptor_avltree_iterator* iterator)
+{
+ if(!iterator)
+ return;
+
+ if(iterator->range && iterator->range_free_handler)
+ iterator->range_free_handler(iterator->range);
+
+ RAPTOR_FREE(raptor_avltree_iterator, iterator);
+}
+
+
+/**
+ * raptor_avltree_iterator_is_end:
+ * @iterator: AVL Tree iterator object
+ *
+ * Test if an iteration is finished
+ *
+ * Return value: non-0 if iteration is finished
+ */
+int
+raptor_avltree_iterator_is_end(raptor_avltree_iterator* iterator)
+{
+ raptor_avltree_node *node = iterator->current;
+
+ if(iterator->is_finished)
+ return 1;
+ iterator->is_finished = (node == NULL);
+
+ return iterator->is_finished;
+}
+
+
+/**
+ * raptor_avltree_iterator_next:
+ * @iterator: AVL Tree iterator object
+ *
+ * Move iteration to next/prev object
+ *
+ * Return value: non-0 if iteration is finished
+ */
+int
+raptor_avltree_iterator_next(raptor_avltree_iterator* iterator)
+{
+ raptor_avltree_node *node = iterator->current;
+
+ if(!node || iterator->is_finished)
+ return 1;
+
+ if(iterator->direction < 0)
+ iterator->current = raptor_avltree_node_prev(iterator->tree, node,
+ iterator->range);
+ else
+ iterator->current = raptor_avltree_node_next(iterator->tree, node,
+ iterator->range);
+ /* Stay within rooted subtree */
+ if(iterator->root->parent == iterator->current)
+ iterator->current = NULL;
+
+ iterator->is_finished = (iterator->current == NULL);
+
+ return iterator->is_finished;
+}
+
+
+/**
+ * raptor_avltree_iterator_get:
+ * @iterator: AVL Tree iterator object
+ *
+ * Get current iteration object
+ *
+ * Return value: object or NULL if iteration is finished
+ */
+void*
+raptor_avltree_iterator_get(raptor_avltree_iterator* iterator)
+{
+ raptor_avltree_node *node = iterator->current;
+
+ if(iterator->is_finished)
+ return NULL;
+
+ iterator->is_finished = (node == NULL);
+ if(iterator->is_finished)
+ return NULL;
+
+ return node->data;
+}
+
+
+/**
+ * raptor_avltree_print:
+ * @tree: AVL Tree
+ * @stream: stream to print to
+ *
+ * Print the items in the tree in order to a stream (for debugging)
+ *
+ * Return value: non-0 on failure
+ */
+int
+raptor_avltree_print(raptor_avltree* tree, FILE* stream)
+{
+ int i;
+ int rv = 0;
+ raptor_avltree_iterator* iter = NULL;
+
+ fprintf(stream, "AVL Tree size %u\n", tree->size);
+ for(i = 0, (iter = raptor_new_avltree_iterator(tree, NULL, NULL, 1));
+ iter && !rv;
+ i++, (rv = raptor_avltree_iterator_next(iter))) {
+ void* data = raptor_avltree_iterator_get(iter);
+ if(!data)
+ continue;
+ fprintf(stream, "%d) ", i);
+ if(tree->print_handler)
+ tree->print_handler(data, stream);
+ else
+ fprintf(stream, "Data Node %p\n", data);
+ }
+ /*assert(i == tree->size);*/
+
+ if(iter)
+ raptor_free_avltree_iterator(iter);
+
+ return 0;
+}
+
+
+#ifdef RAPTOR_DEBUG
+
+static int
+raptor_avltree_dump_internal(raptor_avltree* tree, raptor_avltree_node* node,
+ int depth, FILE* stream)
+{
+ int i;
+ if(!node)
+ return TRUE;
+
+ for(i = 0; i < depth; i++)
+ fputs(" ", stream);
+ fprintf(stream, "Node %p: parent %p left %p right %p data %p\n",
+ node, node->parent, node->left, node->right, node->data);
+ if(tree->print_handler) {
+ for(i= 0; i < depth; i++)
+ fputs(" ", stream);
+ tree->print_handler(node->data, stream);
+ }
+
+ if(!raptor_avltree_dump_internal(tree, node->left, depth+1, stream))
+ return FALSE;
+
+ if(!raptor_avltree_dump_internal(tree, node->right, depth+1, stream))
+ return FALSE;
+
+ return TRUE;
+}
+
+
+/* debugging tree dump with pointers and depth indenting */
+int
+raptor_avltree_dump(raptor_avltree* tree, FILE* stream)
+{
+ fprintf(stream, "Dumping avltree %p size %u\n", tree, tree->size);
+
+ return raptor_avltree_dump_internal(tree, tree->root, 0, stream);
+}
+
+
+static void
+raptor_avltree_check_internal(raptor_avltree* tree, raptor_avltree_node* node,
+ unsigned int* count_p)
+{
+ if(!node)
+ return;
+
+ (*count_p)++;
+
+ raptor_avltree_check_node(tree, node, NULL, NULL);
+
+ raptor_avltree_check_internal(tree, node->left, count_p);
+
+ raptor_avltree_check_internal(tree, node->right, count_p);
+}
+
+
+/* debugging tree check - parent/child pointers and counts */
+void
+raptor_avltree_check(raptor_avltree* tree)
+{
+ unsigned int count = 0;
+
+ raptor_avltree_check_internal(tree, tree->root, &count);
+ if(count != tree->size) {
+ fprintf(stderr, "Tree %p nodes count is %u. actual count %d\n",
+ tree, tree->size, count);
+ abort();
+ }
+}
+
+#endif
+
+#endif
+
+
+#ifdef STANDALONE
+
+#include <string.h>
+
+typedef struct
+{
+ FILE *fh;
+ int count;
+ const char** results;
+ int failed;
+} visit_state;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+static int
+print_string(int depth, void* data, void *user_data)
+{
+ visit_state* vs = (visit_state*)user_data;
+
+ fprintf(vs->fh, "%3d: %s\n", vs->count, (char*) data);
+ vs->count++;
+ return 1;
+}
+#endif
+
+static int
+check_string(int depth, void* data, void *user_data)
+{
+ visit_state* vs = (visit_state*)user_data;
+ const char* result = vs->results[vs->count];
+
+ if(strcmp((const char*)data, result)) {
+ fprintf(vs->fh, "%3d: Expected '%s' but found '%s'\n", vs->count,
+ result, (char*)data);
+ vs->failed = 1;
+ }
+ vs->count++;
+
+ return 1;
+}
+
+static int
+compare_strings(const void *l, const void *r)
+{
+ return strcmp((const char*)l, (const char*)r);
+}
+
+
+/* one more prototype */
+int main(int argc, char *argv[]);
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world;
+ const char *program = raptor_basename(argv[0]);
+#define ITEM_COUNT 8
+ const char *items[ITEM_COUNT+1] = { "ron", "amy", "jen", "bij", "jib", "daj", "jim", "def", NULL };
+#define DELETE_COUNT 2
+ const char *delete_items[DELETE_COUNT+1] = { "jen", "jim", NULL };
+#define RESULT_COUNT (ITEM_COUNT-DELETE_COUNT)
+ const char *results[RESULT_COUNT+1] = { "amy", "bij", "daj", "def", "jib", "ron", NULL};
+
+ raptor_avltree* tree;
+ raptor_avltree_iterator* iter;
+ visit_state vs;
+ int i;
+
+ world = raptor_new_world();
+ if(!world || raptor_world_open(world))
+ exit(1);
+
+ tree = raptor_new_avltree(compare_strings,
+ NULL, /* no free as they are static pointers above */
+ 0);
+ if(!tree) {
+ fprintf(stderr, "%s: Failed to create tree\n", program);
+ exit(1);
+ }
+ for(i = 0; items[i]; i++) {
+ int rc;
+ void* node;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Adding tree item '%s'\n", program, items[i]);
+#endif
+
+ rc = raptor_avltree_add(tree, (void*)items[i]);
+ if(rc) {
+ fprintf(stderr,
+ "%s: Adding tree item %d '%s' failed, returning error %d\n",
+ program, i, items[i], rc);
+ exit(1);
+ }
+
+#ifdef RAPTOR_DEBUG
+ raptor_avltree_check(tree);
+#endif
+
+ node = raptor_avltree_search(tree, (void*)items[i]);
+ if(!node) {
+ fprintf(stderr,
+ "%s: Tree did NOT contain item %d '%s' as expected\n",
+ program, i, items[i]);
+ exit(1);
+ }
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Printing tree\n", program);
+ vs.fh = stderr;
+ vs.count = 0;
+ raptor_avltree_visit(tree, print_string, &vs);
+
+ fprintf(stderr, "%s: Dumping tree\n", program);
+ raptor_avltree_dump(tree, stderr);
+#endif
+
+
+
+ for(i = 0; delete_items[i]; i++) {
+ int rc;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Deleting tree item '%s'\n", program, delete_items[i]);
+#endif
+
+ rc = raptor_avltree_delete(tree, (void*)delete_items[i]);
+ if(!rc) {
+ fprintf(stderr,
+ "%s: Deleting tree item %d '%s' failed, returning error %d\n",
+ program, i, delete_items[i], rc);
+ exit(1);
+ }
+
+#ifdef RAPTOR_DEBUG
+ raptor_avltree_check(tree);
+#endif
+ }
+
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Walking tree forwards via iterator\n", program);
+#endif
+ iter = raptor_new_avltree_iterator(tree, NULL, NULL, 1);
+ for(i = 0; 1; i++) {
+ const char* data = (const char*)raptor_avltree_iterator_get(iter);
+ const char* result = results[i];
+ if((!data && data != result) || (data && strcmp(data, result))) {
+ fprintf(stderr, "%3d: Forwards iterator expected '%s' but found '%s'\n",
+ i, result, data);
+ exit(1);
+ }
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%3d: Got '%s'\n", i, data);
+#endif
+ if(raptor_avltree_iterator_next(iter))
+ break;
+ if(i > RESULT_COUNT) {
+ fprintf(stderr, "Forward iterator did not end on result %i as expected\n", i);
+ exit(1);
+ }
+ }
+ raptor_free_avltree_iterator(iter);
+
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Checking tree\n", program);
+#endif
+ vs.count = 0;
+ vs.results = results;
+ vs.failed = 0;
+ raptor_avltree_visit(tree, check_string, &vs);
+ if(vs.failed) {
+ fprintf(stderr, "%s: Checking tree failed\n", program);
+ exit(1);
+ }
+
+
+ for(i = 0; results[i]; i++) {
+ const char* result = results[i];
+ char* data = (char*)raptor_avltree_remove(tree, (void*)result);
+ if(!data) {
+ fprintf(stderr, "%s: remove %i failed at item '%s'\n", program, i,
+ result);
+ exit(1);
+ }
+ if(strcmp(data, result)) {
+ fprintf(stderr, "%s: remove %i returned %s not %s as expected\n", program,
+ i, data, result);
+ exit(1);
+ }
+ }
+
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Freeing tree\n", program);
+#endif
+ raptor_free_avltree(tree);
+
+ raptor_free_world(world);
+
+ /* keep gcc -Wall happy */
+ return(0);
+}
+
+#endif
diff --git a/src/raptor_concepts.c b/src/raptor_concepts.c
new file mode 100644
index 0000000..78d22a4
--- /dev/null
+++ b/src/raptor_concepts.c
@@ -0,0 +1,167 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_concepts.c - Raptor RDF namespace concepts
+ *
+ * Copyright (C) 2010, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/*
+ * http://www.w3.org/TR/rdf-syntax-grammar/#section-grammar-summary
+ *
+ * coreSyntaxTerms := rdf:RDF | rdf:ID | rdf:about | rdf:bagID |
+ rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype
+ * syntaxTerms := coreSyntaxTerms | rdf:Description | rdf:li
+ * oldTerms := rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID
+ *
+ * nodeElementURIs := anyURI - ( coreSyntaxTerms | rdf:li | oldTerms )
+ * propertyElementURIs := anyURI - ( coreSyntaxTerms | rdf:Description | oldTerms )
+ * propertyAttributeURIs := anyURI - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms )
+ *
+ * So, forbidden terms in the RDF namespace are:
+ * nodeElements
+ * RDF | ID | about | bagID | parseType | resource | nodeID | datatype |
+ * li | aboutEach | aboutEachPrefix | bagID
+ *
+ * propertyElements
+ * RDF | ID | about | bagID | parseType | resource | nodeID | datatype |
+ * Description | aboutEach | aboutEachPrefix | bagID
+ *
+ * propertyAttributes
+ * RDF | ID | about | bagID | parseType | resource | nodeID | datatype |
+ * Description | li | aboutEach | aboutEachPrefix | bagID
+ *
+ * Information about rdf attributes:
+ * raptor_term_type type
+ * Set when the attribute is a property rather than just syntax
+ * NOTE: raptor_rdfxml_process_property_attributes() expects only
+ * RAPTOR_TERM_TYPE_NONE,
+ * RAPTOR_TERM_TYPE_LITERAL or RAPTOR_TERM_TYPE_URI
+ * allowed_unprefixed_on_attribute
+ * If allowed for legacy reasons to be unprefixed as an attribute.
+ *
+ */
+
+/* (number of terms in RDF NS) + 1: for final sentinel row */
+const raptor_rdf_ns_term_info raptor_rdf_ns_terms_info[RDF_NS_LAST + 2] = {
+ /* term allowed boolean flags:
+ * node element; property element; property attr; unprefixed attr
+ */
+ /* syntax only */
+ { "RDF", RAPTOR_TERM_TYPE_UNKNOWN, 0, 0, 0, 0 }, /* just root */
+ { "Description", RAPTOR_TERM_TYPE_UNKNOWN, 1, 0, 0, 0 },
+ { "li", RAPTOR_TERM_TYPE_UNKNOWN, 0, 1, 0, 0 },
+ { "about", RAPTOR_TERM_TYPE_UNKNOWN, 0, 0, 0, 1 },
+ { "aboutEach", RAPTOR_TERM_TYPE_UNKNOWN, 0, 0, 0, 0 }, /* deprecated */
+ { "aboutEachPrefix", RAPTOR_TERM_TYPE_UNKNOWN, 0, 0, 0, 0 }, /* deprecated */
+ { "ID", RAPTOR_TERM_TYPE_UNKNOWN, 0, 0, 0, 1 },
+ { "bagID", RAPTOR_TERM_TYPE_UNKNOWN, 0, 0, 0, 1 },
+ { "resource", RAPTOR_TERM_TYPE_UNKNOWN, 0, 0, 0, 1 },
+ { "parseType", RAPTOR_TERM_TYPE_UNKNOWN, 0, 0, 0, 1 },
+ { "nodeID", RAPTOR_TERM_TYPE_UNKNOWN, 0, 0, 0, 0 },
+ { "datatype", RAPTOR_TERM_TYPE_UNKNOWN, 0, 0, 0, 0 },
+
+ /* rdf:Property-s */
+ { "type", RAPTOR_TERM_TYPE_URI , 1, 1, 1, 1 },
+ { "value", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+ { "subject", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+ { "predicate", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+ { "object", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+ { "first", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+ { "rest", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+
+ /* rdfs:Class-s */
+ { "Seq", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+ { "Bag", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+ { "Alt", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+ { "Statement", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+ { "Property", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+ { "List", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+
+ /* rdfs:Resource-s */
+ { "nil", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+
+ /* datatypes */
+ { "XMLLiteral", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+ { "PlainLiteral", RAPTOR_TERM_TYPE_LITERAL, 1, 1, 1, 0 },
+
+ /* internal */
+ { NULL , RAPTOR_TERM_TYPE_UNKNOWN, 1, 1, 1, 0 }
+};
+
+
+
+int
+raptor_concepts_init(raptor_world* world)
+{
+ int i;
+
+ for(i = 0; i < RDF_NS_LAST + 1; i++) {
+ unsigned char* name = (unsigned char*)raptor_rdf_ns_terms_info[i].name;
+ world->concepts[i] = raptor_new_uri_for_rdf_concept(world, name);
+ if(!world->concepts[i])
+ return 1;
+
+ /* only make a term for things that are not syntax-only */
+ /* OR use:
+ raptor_rdf_ns_terms_info[i].allowed_as_nodeElement ||
+ raptor_rdf_ns_terms_info[i].allowed_as_propertyElement ||
+ raptor_rdf_ns_terms_info[i].allowed_as_propertyAttribute)
+ */
+ if(i > RDF_NS_LAST_SYNTAX_TERM) {
+ world->terms[i] = raptor_new_term_from_uri(world, world->concepts[i]);
+ if(!world->terms[i])
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+
+
+void
+raptor_concepts_finish(raptor_world* world)
+{
+ int i;
+
+ for(i = 0; i < RDF_NS_LAST + 1; i++) {
+ raptor_uri* concept_uri = world->concepts[i];
+ if(concept_uri) {
+ raptor_free_uri(concept_uri);
+ world->concepts[i] = NULL;
+ }
+ if(world->terms[i])
+ raptor_free_term(world->terms[i]);
+ }
+
+}
diff --git a/src/raptor_config.h.in b/src/raptor_config.h.in
new file mode 100644
index 0000000..4626fe4
--- /dev/null
+++ b/src/raptor_config.h.in
@@ -0,0 +1,338 @@
+/* src/raptor_config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* have to check C99 vsnprintf at runtime because cross compiling */
+#undef CHECK_VSNPRINTF_RUNTIME
+
+/* vsnprintf has C99 compatible return value */
+#undef HAVE_C99_VSNPRINTF
+
+/* Have curl/curl.h */
+#undef HAVE_CURL_CURL_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <errno.h> header file. */
+#undef HAVE_ERRNO_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the <fetch.h> header file. */
+#undef HAVE_FETCH_H
+
+/* Define to 1 if you have the `getopt' function. */
+#undef HAVE_GETOPT
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getopt_long' function. */
+#undef HAVE_GETOPT_LONG
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* INN parsedate function present */
+#undef HAVE_INN_PARSEDATE
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `isascii' function. */
+#undef HAVE_ISASCII
+
+/* Define to 1 if you have the <libxml/hash.h> header file. */
+#undef HAVE_LIBXML_HASH_H
+
+/* Define to 1 if you have the <libxml/HTMLparser.h> header file. */
+#undef HAVE_LIBXML_HTMLPARSER_H
+
+/* Define to 1 if you have the <libxml/nanohttp.h> header file. */
+#undef HAVE_LIBXML_NANOHTTP_H
+
+/* Define to 1 if you have the <libxml/parser.h> header file. */
+#undef HAVE_LIBXML_PARSER_H
+
+/* Define to 1 if you have the <libxml/SAX2.h> header file. */
+#undef HAVE_LIBXML_SAX2_H
+
+/* Define to 1 if you have the <libxslt/xslt.h> header file. */
+#undef HAVE_LIBXSLT_XSLT_H
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define to 1 if you have the <math.h> header file. */
+#undef HAVE_MATH_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Raptor raptor_parse_date available */
+#undef HAVE_RAPTOR_PARSE_DATE
+
+/* Define to 1 if you have the `setjmp' function. */
+#undef HAVE_SETJMP
+
+/* Define to 1 if you have the <setjmp.h> header file. */
+#undef HAVE_SETJMP_H
+
+/* Define to 1 if you have the `stat' function. */
+#undef HAVE_STAT
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#undef HAVE_STDDEF_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#undef HAVE_STRCASECMP
+
+/* Define to 1 if you have the `stricmp' function. */
+#undef HAVE_STRICMP
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strtok_r' function. */
+#undef HAVE_STRTOK_R
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `vasprintf' function. */
+#undef HAVE_VASPRINTF
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF
+
+/* Define to 1 if you have the `xmlCtxtUseOptions' function. */
+#undef HAVE_XMLCTXTUSEOPTIONS
+
+/* Define to 1 if you have the `xmlSAX2InternalSubset' function. */
+#undef HAVE_XMLSAX2INTERNALSUBSET
+
+/* YAJL has API version 2 */
+#undef HAVE_YAJL2
+
+/* Define to 1 if you have the <yajl/yajl_parse.h> header file. */
+#undef HAVE_YAJL_YAJL_PARSE_H
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Define to 1 if maintainer mode is enabled. */
+#undef MAINTAINER_MODE
+
+/* need 'extern int optind' declaration? */
+#undef NEED_OPTIND_DECLARATION
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if debug messages are enabled. */
+#undef RAPTOR_DEBUG
+
+/* Use ICU for Unicode NFC check */
+#undef RAPTOR_ICU_NFC
+
+/* does libxml struct xmlEntity have a field etype */
+#undef RAPTOR_LIBXML_ENTITY_ETYPE
+
+/* does libxml struct xmlEntity have a field name_length */
+#undef RAPTOR_LIBXML_ENTITY_NAME_LENGTH
+
+/* does libxml have HTML_PARSE_NONET */
+#undef RAPTOR_LIBXML_HTML_PARSE_NONET
+
+/* does libxml xmlSAXHandler have externalSubset field */
+#undef RAPTOR_LIBXML_XMLSAXHANDLER_EXTERNALSUBSET
+
+/* does libxml xmlSAXHandler have initialized field */
+#undef RAPTOR_LIBXML_XMLSAXHANDLER_INITIALIZED
+
+/* does libxml have XML_PARSE_NONET */
+#undef RAPTOR_LIBXML_XML_PARSE_NONET
+
+/* Minimum supported package version */
+#undef RAPTOR_MIN_VERSION_DECIMAL
+
+/* Building GRDDL parser */
+#undef RAPTOR_PARSER_GRDDL
+
+/* Building guess parser */
+#undef RAPTOR_PARSER_GUESS
+
+/* Building JSON parser */
+#undef RAPTOR_PARSER_JSON
+
+/* Building N-Quads parser */
+#undef RAPTOR_PARSER_NQUADS
+
+/* Building N-Triples parser */
+#undef RAPTOR_PARSER_NTRIPLES
+
+/* Building RDFA parser */
+#undef RAPTOR_PARSER_RDFA
+
+/* Building RDF/XML parser */
+#undef RAPTOR_PARSER_RDFXML
+
+/* Building RSS Tag Soup parser */
+#undef RAPTOR_PARSER_RSS
+
+/* Building TRiG parser */
+#undef RAPTOR_PARSER_TRIG
+
+/* Building Turtle parser */
+#undef RAPTOR_PARSER_TURTLE
+
+/* Building Atom 1.0 serializer */
+#undef RAPTOR_SERIALIZER_ATOM
+
+/* Building GraphViz DOT serializer */
+#undef RAPTOR_SERIALIZER_DOT
+
+/* Building HTML Table serializer */
+#undef RAPTOR_SERIALIZER_HTML
+
+/* Building JSON serializer */
+#undef RAPTOR_SERIALIZER_JSON
+
+/* Building N-Quads serializer */
+#undef RAPTOR_SERIALIZER_NQUADS
+
+/* Building N-Triples serializer */
+#undef RAPTOR_SERIALIZER_NTRIPLES
+
+/* Building RDF/XML serializer */
+#undef RAPTOR_SERIALIZER_RDFXML
+
+/* Building RDF/XML-abbreviated serializer */
+#undef RAPTOR_SERIALIZER_RDFXML_ABBREV
+
+/* Building RSS 1.0 serializer */
+#undef RAPTOR_SERIALIZER_RSS_1_0
+
+/* Building Turtle serializer */
+#undef RAPTOR_SERIALIZER_TURTLE
+
+/* Release version as a decimal */
+#undef RAPTOR_VERSION_DECIMAL
+
+/* Major version number */
+#undef RAPTOR_VERSION_MAJOR
+
+/* Minor version number */
+#undef RAPTOR_VERSION_MINOR
+
+/* Release version number */
+#undef RAPTOR_VERSION_RELEASE
+
+/* Have libcurl WWW library */
+#undef RAPTOR_WWW_LIBCURL
+
+/* Have libfetch WWW library */
+#undef RAPTOR_WWW_LIBFETCH
+
+/* Have libxml available as a WWW library */
+#undef RAPTOR_WWW_LIBXML
+
+/* No WWW library */
+#undef RAPTOR_WWW_NONE
+
+/* Check XML 1.1 Names */
+#undef RAPTOR_XML_1_1
+
+/* Use libxml XML parser */
+#undef RAPTOR_XML_LIBXML
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Version number of package */
+#undef VERSION
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+# undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+ `char[]'. */
+#undef YYTEXT_POINTER
+
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#undef inline
+#endif
diff --git a/src/raptor_general.c b/src/raptor_general.c
new file mode 100644
index 0000000..b10cac1
--- /dev/null
+++ b/src/raptor_general.c
@@ -0,0 +1,780 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_general.c - Raptor general routines
+ *
+ * Copyright (C) 2000-2011, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2000-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#ifdef MAINTAINER_MODE
+#include <git-version.h>
+#endif
+
+/* statics */
+
+const char * const raptor_short_copyright_string = "Copyright 2000-2012 David Beckett. Copyright 2000-2005 University of Bristol";
+
+const char * const raptor_copyright_string = "Copyright (C) 2000-2012 David Beckett - http://www.dajobe.org/\nCopyright (C) 2000-2005 University of Bristol - http://www.bristol.ac.uk/";
+
+const char * const raptor_license_string = "LGPL 2.1 or newer, GPL 2 or newer, Apache 2.0 or newer.\nSee http://librdf.org/raptor/LICENSE.html for full terms.";
+
+const char * const raptor_home_url_string = "http://librdf.org/raptor/";
+
+/**
+ * raptor_version_string:
+ *
+ * Library full version as a string.
+ *
+ * See also #raptor_version_decimal.
+ */
+const char * const raptor_version_string = RAPTOR_VERSION_STRING
+#ifdef GIT_VERSION
+" GIT " GIT_VERSION
+#endif
+;
+
+/**
+ * raptor_version_major:
+ *
+ * Library major version number as a decimal integer.
+ */
+const unsigned int raptor_version_major = RAPTOR_VERSION_MAJOR;
+
+/**
+ * raptor_version_minor:
+ *
+ * Library minor version number as a decimal integer.
+ */
+const unsigned int raptor_version_minor = RAPTOR_VERSION_MINOR;
+
+/**
+ * raptor_version_release:
+ *
+ * Library release version number as a decimal integer.
+ */
+const unsigned int raptor_version_release = RAPTOR_VERSION_RELEASE;
+
+/**
+ * raptor_version_decimal:
+ *
+ * Library full version as a decimal integer.
+ *
+ * See also #raptor_version_string.
+ */
+const unsigned int raptor_version_decimal = RAPTOR_VERSION_DECIMAL;
+
+
+/**
+ * raptor_new_world:
+ * @version_decimal: raptor version as a decimal integer as defined by the macro #RAPTOR_VERSION and static int #raptor_version_decimal
+ *
+ * Allocate a new raptor_world object.
+ *
+ * Allocation of the world and initialization are decoupled to allow
+ * changing settings on the world object before init.
+ *
+ * Settings and configuration of the world may be made after creating
+ * the object and before the world is initialized using methods such
+ * as raptor_world_set_flag(), raptor_world_set_log_handler(),
+ * raptor_world_set_generate_bnodeid_handler(). Some configuration
+ * may not be changed after initialization.
+ *
+ * The raptor_world is initialized with raptor_world_open().
+ *
+ * Return value: uninitialized raptor_world object or NULL on failure
+ */
+raptor_world *
+raptor_new_world_internal(unsigned int version_decimal)
+{
+ raptor_world *world;
+
+ if(version_decimal < RAPTOR_MIN_VERSION_DECIMAL) {
+ fprintf(stderr,
+ "raptor_new_world() called via header from version %u but minimum supported version is %u\n",
+ version_decimal, RAPTOR_MIN_VERSION_DECIMAL);
+ return NULL;
+ }
+
+ world = RAPTOR_CALLOC(raptor_world*, 1, sizeof(*world));
+ if(world) {
+ world->magic = RAPTOR2_WORLD_MAGIC;
+
+ /* set default flags - can be updated by raptor_world_set_flag() */
+
+ /* set: RAPTOR_LIBXML_FLAGS_GENERIC_ERROR_SAVE
+ * set: RAPTOR_LIBXML_FLAGS_STRUCTURED_ERROR_SAVE
+ */
+ world->libxml_flags = RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE |
+ RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE ;
+ /* set: URI Interning */
+ world->uri_interning = 1;
+
+ world->internal_ignore_errors = 0;
+ }
+
+ return world;
+}
+
+
+/**
+ * raptor_world_open:
+ * @world: raptor_world object
+ *
+ * Initialise the raptor library.
+ *
+ * Initializes a #raptor_world object created by raptor_new_world().
+ * Allocation and initialization are decoupled to allow
+ * changing settings on the world object before init.
+ *
+ * The initialized world object is used with subsequent raptor API calls.
+ *
+ * Return value: non-0 on failure
+ */
+int
+raptor_world_open(raptor_world* world)
+{
+ int rc;
+
+ if(!world)
+ return -1;
+
+ if(world->opened)
+ return 0; /* not an error */
+
+ world->opened = 1;
+
+ rc = raptor_uri_init(world);
+ if(rc)
+ return rc;
+
+ rc = raptor_concepts_init(world);
+ if(rc)
+ return rc;
+
+ rc = raptor_parsers_init(world);
+ if(rc)
+ return rc;
+
+ rc = raptor_serializers_init(world);
+ if(rc)
+ return rc;
+
+ rc = raptor_sax2_init(world);
+ if(rc)
+ return rc;
+
+ rc = raptor_www_init(world);
+ if(rc)
+ return rc;
+
+#ifdef RAPTOR_XML_LIBXML
+ rc = raptor_libxml_init(world);
+ if(rc)
+ return rc;
+#endif
+
+ return 0;
+}
+
+
+/**
+ * raptor_free_world:
+ * @world: raptor_world object
+ *
+ * Terminate the raptor library.
+ *
+ * Destroys the raptor_world object and all related information.
+ */
+void
+raptor_free_world(raptor_world* world)
+{
+ if(!world)
+ return;
+
+ if(world->default_generate_bnodeid_handler_prefix)
+ RAPTOR_FREE(char*, world->default_generate_bnodeid_handler_prefix);
+
+#ifdef RAPTOR_XML_LIBXML
+ raptor_libxml_finish(world);
+#endif
+
+ raptor_www_finish(world);
+
+ raptor_sax2_finish(world);
+
+ raptor_serializers_finish(world);
+
+ raptor_parsers_finish(world);
+
+ raptor_concepts_finish(world);
+
+ raptor_uri_finish(world);
+
+ RAPTOR_FREE(raptor_world, world);
+}
+
+
+/**
+ * raptor_world_set_generate_bnodeid_handler:
+ * @world: #raptor_world world object
+ * @user_data: user data pointer for callback
+ * @handler: generate ID callback function
+ *
+ * Set the generate ID handler function.
+ *
+ * Sets the function to generate IDs for the library. The handler is
+ * called with the @user_data parameter.
+ *
+ * The final argument of the callback method is user_bnodeid, the value of
+ * the rdf:nodeID attribute that the user provided if any (or NULL).
+ * It can either be returned directly as the generated value when present or
+ * modified. The passed in value must be free()d if it is not used.
+ *
+ * If handler is NULL, the default method is used
+ *
+ **/
+void
+raptor_world_set_generate_bnodeid_handler(raptor_world* world,
+ void *user_data,
+ raptor_generate_bnodeid_handler handler)
+{
+ world->generate_bnodeid_handler_user_data = user_data;
+ world->generate_bnodeid_handler = handler;
+}
+
+
+static unsigned char*
+raptor_world_default_generate_bnodeid_handler(void *user_data,
+ unsigned char *user_bnodeid)
+{
+ raptor_world *world = (raptor_world*)user_data;
+ int id;
+ unsigned char *buffer;
+ const char* prefix;
+ unsigned int prefix_length;
+ size_t id_length;
+
+ if(user_bnodeid)
+ return user_bnodeid;
+
+ id = ++world->default_generate_bnodeid_handler_base;
+
+ id_length = raptor_format_integer(NULL, 0, id, /* base */ 10, -1, '\0');
+
+ if(world->default_generate_bnodeid_handler_prefix) {
+ prefix = world->default_generate_bnodeid_handler_prefix;
+ prefix_length = world->default_generate_bnodeid_handler_prefix_length;
+ } else {
+ prefix = "genid";
+ prefix_length = 5; /* strlen("genid") */
+ }
+
+ buffer = RAPTOR_MALLOC(unsigned char*, id_length + prefix_length + 1);
+ if(!buffer)
+ return NULL;
+
+ memcpy(buffer, prefix, prefix_length);
+ (void)raptor_format_integer(RAPTOR_GOOD_CAST(char*, &buffer[prefix_length]),
+ id_length + 1, id, /* base */ 10,-1, '\0');
+
+ return buffer;
+}
+
+
+/**
+ * raptor_world_generate_bnodeid:
+ * @world: #raptor_parser parser object
+ *
+ * Generate an new blank node ID
+ *
+ * Return value: newly allocated generated ID or NULL on failure
+ **/
+unsigned char*
+raptor_world_generate_bnodeid(raptor_world *world)
+{
+ return raptor_world_internal_generate_id(world, NULL);
+}
+
+
+unsigned char*
+raptor_world_internal_generate_id(raptor_world *world,
+ unsigned char *user_bnodeid)
+{
+ if(world->generate_bnodeid_handler)
+ return world->generate_bnodeid_handler(world->generate_bnodeid_handler_user_data,
+ user_bnodeid);
+ else
+ return raptor_world_default_generate_bnodeid_handler(world, user_bnodeid);
+}
+
+
+/**
+ * raptor_world_set_generate_bnodeid_parameters:
+ * @world: #raptor_world object
+ * @prefix: prefix string
+ * @base: integer base identifier
+ *
+ * Set default ID generation parameters.
+ *
+ * Sets the parameters for the default algorithm used to generate IDs.
+ * The default algorithm uses both @prefix and @base to generate a new
+ * identifier. The exact identifier generated is not guaranteed to
+ * be a strict concatenation of @prefix and @base but will use both
+ * parts. The @prefix parameter is copied to generate an ID.
+ *
+ * For finer control of the generated identifiers, use
+ * raptor_world_set_generate_bnodeid_handler().
+ *
+ * If @prefix is NULL, the default prefix is used (currently "genid")
+ * If @base is less than 1, it is initialised to 1.
+ *
+ **/
+void
+raptor_world_set_generate_bnodeid_parameters(raptor_world* world,
+ char *prefix, int base)
+{
+ char *prefix_copy = NULL;
+ unsigned int length = 0;
+
+ if(--base < 0)
+ base = 0;
+
+ if(prefix) {
+ length = RAPTOR_BAD_CAST(unsigned int, strlen(prefix));
+
+ prefix_copy = RAPTOR_MALLOC(char*, length + 1);
+ if(!prefix_copy)
+ return;
+
+ memcpy(prefix_copy, prefix, length+1);
+ }
+
+ if(world->default_generate_bnodeid_handler_prefix)
+ RAPTOR_FREE(char*, world->default_generate_bnodeid_handler_prefix);
+
+ world->default_generate_bnodeid_handler_prefix = prefix_copy;
+ world->default_generate_bnodeid_handler_prefix_length = length;
+ world->default_generate_bnodeid_handler_base = base;
+}
+
+
+/**
+ * raptor_world_set_libxslt_security_preferences:
+ * @world: world
+ * @security_preferences: security preferences (an #xsltSecurityPrefsPtr) or NULL
+ *
+ * Set libxslt security preferences policy object
+ *
+ * The @security_preferences object will NOT become owned by
+ * #raptor_world.
+ *
+ * If libxslt is compiled into the library, @security_preferences
+ * should be an #xsltSecurityPrefsPtr and will be used to call
+ * xsltSetCtxtSecurityPrefs() when an XSLT engine is initialised.
+ * If @security_preferences is NULL, this will disable all raptor's
+ * calls to xsltSetCtxtSecurityPrefs().
+ *
+ * If libxslt is not compiled in, the object set here is not used.
+ *
+ * Return value: 0 on success, non-0 on failure: <0 on errors and >0 if world is already opened
+ */
+int
+raptor_world_set_libxslt_security_preferences(raptor_world *world,
+ void *security_preferences)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, -1);
+
+ if(world->opened)
+ return 1;
+
+ world->xslt_security_preferences = security_preferences;
+ world->xslt_security_preferences_policy = 1;
+
+ return 0;
+}
+
+
+/**
+ * raptor_world_set_flag:
+ * @world: world
+ * @flag: flag
+ * @value: value
+ *
+ * Set library-wide configuration
+ *
+ * This function is used to control raptor-wide options across
+ * classes. These options must be set before raptor_world_open() is
+ * called explicitly or implicitly (by creating a raptor object).
+ * There is no enumeration function for these flags because they are
+ * not user options and must be set before the library is
+ * initialised. For similar reasons, there is no get function.
+ *
+ * See the #raptor_world_flags documentation for full details of
+ * what the flags mean.
+ *
+ * Return value: 0 on success, non-0 on failure: <0 on errors (-1 if flag is unknown, -2 if value is illegal) and >0 if world is already opened
+ */
+int
+raptor_world_set_flag(raptor_world *world, raptor_world_flag flag, int value)
+{
+ int rc = 0;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, -1);
+
+ if(world->opened)
+ return 1;
+
+ switch(flag) {
+ case RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE:
+ case RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE:
+ if(value)
+ world->libxml_flags |= (int)flag;
+ else
+ world->libxml_flags &= ~(int)flag;
+ break;
+
+ case RAPTOR_WORLD_FLAG_URI_INTERNING:
+ world->uri_interning = value;
+ break;
+
+ case RAPTOR_WORLD_FLAG_WWW_SKIP_INIT_FINISH:
+ world->www_skip_www_init_finish = value;
+ break;
+
+ default:
+ rc = -1;
+ }
+
+ return rc;
+}
+
+
+/**
+ * raptor_world_set_log_handler:
+ * @world: world object
+ * @user_data: user data to pass to function
+ * @handler: pointer to the function
+ *
+ * Set the message (error, warning, info) handling function.
+ *
+ * The function will receive callbacks when messages are generated
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_world_set_log_handler(raptor_world *world, void *user_data,
+ raptor_log_handler handler)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, -1);
+
+ world->message_handler_user_data = user_data;
+ world->message_handler = handler;
+
+ return 0;
+}
+
+
+/**
+ * raptor_basename:
+ * @name: path
+ *
+ * Get the basename of a path
+ *
+ * Return value: filename part of a pathname
+ **/
+const char*
+raptor_basename(const char *name)
+{
+ const char *p;
+ if((p = strrchr(name, '/')))
+ name = p+1;
+ else if((p = strrchr(name, '\\')))
+ name = p+1;
+
+ return name;
+}
+
+
+const unsigned char * const raptor_xml_literal_datatype_uri_string = (const unsigned char *)"http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral";
+const unsigned int raptor_xml_literal_datatype_uri_string_len = 53;
+
+/**
+ * raptor_check_ordinal:
+ * @name: ordinal string
+ *
+ * Check an RDF property ordinal, the n in rdf:_n
+ *
+ * Return value: ordinal integer or <0 if string is not a valid ordinal
+ */
+int
+raptor_check_ordinal(const unsigned char *name)
+{
+ int ordinal= -1;
+ unsigned char c;
+
+ while((c=*name++)) {
+ if(c < '0' || c > '9')
+ return -1;
+ if(ordinal <0)
+ ordinal = 0;
+ ordinal *= 10;
+ ordinal += (c - '0');
+ }
+ return ordinal;
+}
+
+
+static const char* const raptor_domain_labels[RAPTOR_DOMAIN_LAST + 1] = {
+ "none",
+ "I/O Stream",
+ "XML Namespace",
+ "RDF Parser",
+ "XML QName",
+ "XML SAX2",
+ "RDF Serializer",
+ "RDF Term",
+ "Turtle Writer",
+ "URI",
+ "World",
+ "WWW",
+ "XML Writer"
+};
+
+
+/**
+ * raptor_domain_get_label:
+ * @domain: domain
+ *
+ * Get label for a domain
+ *
+ * Return value: label string or NULL if domain is not valid
+ */
+const char*
+raptor_domain_get_label(raptor_domain domain)
+{
+ return (domain <= RAPTOR_DOMAIN_LAST) ? raptor_domain_labels[domain] : NULL;
+}
+
+
+
+/* internal */
+void
+raptor_world_internal_set_ignore_errors(raptor_world* world, int flag)
+{
+ world->internal_ignore_errors = flag;
+}
+
+
+/**
+ * raptor_free_memory:
+ * @ptr: memory pointer
+ *
+ * Free memory allocated inside raptor.
+ *
+ * Some systems require memory allocated in a library to
+ * be deallocated in that library. This function allows
+ * memory allocated by raptor to be freed.
+ *
+ * Examples include the result of the '_to_' methods that returns
+ * allocated memory such as raptor_uri_filename_to_uri_string,
+ * raptor_uri_filename_to_uri_string
+ * and raptor_uri_uri_string_to_filename_fragment
+ *
+ **/
+void
+raptor_free_memory(void *ptr)
+{
+ if(!ptr)
+ return;
+
+ RAPTOR_FREE(void, ptr);
+}
+
+
+/**
+ * raptor_alloc_memory:
+ * @size: size of memory to allocate
+ *
+ * Allocate memory inside raptor.
+ *
+ * Some systems require memory allocated in a library to
+ * be deallocated in that library. This function allows
+ * memory to be allocated inside the raptor shared library
+ * that can be freed inside raptor either internally or via
+ * raptor_free_memory.
+ *
+ * Examples include using this in the raptor_world_generate_bnodeid() handler
+ * code to create new strings that will be used internally
+ * as short identifiers and freed later on by the parsers.
+ *
+ * Return value: the address of the allocated memory or NULL on failure
+ *
+ **/
+void*
+raptor_alloc_memory(size_t size)
+{
+ return RAPTOR_MALLOC(void*, size);
+}
+
+
+/**
+ * raptor_calloc_memory:
+ * @nmemb: number of members
+ * @size: size of item
+ *
+ * Allocate zeroed array of items inside raptor.
+ *
+ * Some systems require memory allocated in a library to
+ * be deallocated in that library. This function allows
+ * memory to be allocated inside the raptor shared library
+ * that can be freed inside raptor either internally or via
+ * raptor_free_memory.
+ *
+ * Examples include using this in the raptor_world_generate_bnodeid() handler
+ * code to create new strings that will be used internally
+ * as short identifiers and freed later on by the parsers.
+ *
+ * Return value: the address of the allocated memory or NULL on failure
+ *
+ **/
+void*
+raptor_calloc_memory(size_t nmemb, size_t size)
+{
+ return RAPTOR_CALLOC(void*, nmemb, size);
+}
+
+
+#if defined (RAPTOR_DEBUG) && defined(RAPTOR_MEMORY_SIGN)
+void*
+raptor_sign_malloc(size_t size)
+{
+ int *p;
+
+ size += sizeof(int);
+
+ p = (int*)malloc(size);
+ *p++ = RAPTOR_SIGN_KEY;
+ return p;
+}
+
+void*
+raptor_sign_calloc(size_t nmemb, size_t size)
+{
+ int *p;
+
+ /* turn into bytes */
+ size = nmemb*size + sizeof(int);
+
+ p = (int*)calloc(1, size);
+ *p++ = RAPTOR_SIGN_KEY;
+ return p;
+}
+
+void*
+raptor_sign_realloc(void *ptr, size_t size)
+{
+ int *p;
+
+ if(!ptr)
+ return raptor_sign_malloc(size);
+
+ p = (int*)ptr;
+ p--;
+
+ if(*p != RAPTOR_SIGN_KEY)
+ RAPTOR_FATAL3("memory signature %08X != %08X", *p, RAPTOR_SIGN_KEY);
+
+ size += sizeof(int);
+
+ p = (int*)realloc(p, size);
+ *p++= RAPTOR_SIGN_KEY;
+ return p;
+}
+
+void
+raptor_sign_free(void *ptr)
+{
+ int *p;
+
+ if(!ptr)
+ return;
+
+ p = (int*)ptr;
+ p--;
+
+ if(*p != RAPTOR_SIGN_KEY)
+ RAPTOR_FATAL3("memory signature %08X != %08X", *p, RAPTOR_SIGN_KEY);
+
+ free(p);
+}
+#endif
+
+
+int
+raptor_check_world_internal(raptor_world* world, const char* name)
+{
+ static int __warned = 0;
+
+ if(!world) {
+ fprintf(stderr, "%s called with NULL world object\n", name);
+ RAPTOR_ASSERT_DIE
+ return 1;
+ }
+
+ /* In Raptor V1 ABI the first int of raptor_world is the 'opened' field */
+ if(world->magic == RAPTOR1_WORLD_MAGIC_1 ||
+ world->magic == RAPTOR1_WORLD_MAGIC_2) {
+ if(!__warned++)
+ fprintf(stderr, "%s called with Raptor V1 world object\n", name);
+ return 1;
+ }
+
+ if(world->magic != RAPTOR2_WORLD_MAGIC) {
+ if(!__warned++)
+ fprintf(stderr, "%s called with invalid Raptor V2 world object\n", name);
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/src/raptor_grddl.c b/src/raptor_grddl.c
new file mode 100644
index 0000000..7c1714b
--- /dev/null
+++ b/src/raptor_grddl.c
@@ -0,0 +1,2105 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_grddl.c - Raptor GRDDL (+microformats) Parser implementation
+ *
+ * Copyright (C) 2005-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+/*
+ * Specifications:
+ * Gleaning Resource Descriptions from Dialects of Languages (GRDDL)
+ * W3C Recommendation 11 September 2007
+ * http://www.w3.org/TR/2007/REC-grddl-20070911/
+ * http://www.w3.org/TR/grddl/
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#include <libxml/xpath.h>
+/* for xmlXPathRegisterNs() */
+#include <libxml/xpathInternals.h>
+#include <libxml/xinclude.h>
+#include <libxml/HTMLparser.h>
+
+#include <libxslt/xslt.h>
+#include <libxslt/transform.h>
+#include <libxslt/xsltutils.h>
+#include <libxslt/security.h>
+
+
+/*
+ * libxslt API notes
+ *
+ * Inputs to an XSLT transformation process with libxslt are:
+ * 1. A set of (key:value) parameters.
+ * 2. An xsltStylesheetPtr for the XSLT sheet
+ * Which could be made from a file or an xmlDoc; and the xmlDoc.
+ * made from a file or memory buffer.
+ * 3. An xmlDoc for the XML source
+ * Which could be made from a file or a memory buffer.
+ *
+ */
+
+
+static void raptor_grddl_filter_triples(void *user_data, raptor_statement *statement);
+
+static void raptor_grddl_xsltGenericError_handler(void *user_data, const char *msg, ...) RAPTOR_PRINTF_FORMAT(2, 0);
+
+static void raptor_libxslt_set_global_state(raptor_parser *rdf_parser);
+static void raptor_libxslt_reset_global_state(raptor_parser *rdf_parser);
+
+
+typedef struct
+{
+ /* transformation (XSLT) or profile URI */
+ raptor_uri* uri;
+ /* base URI in effect when the above was found */
+ raptor_uri* base_uri;
+} grddl_xml_context;
+
+
+/*
+ * XSLT parser object
+ */
+struct raptor_grddl_parser_context_s {
+ raptor_world* world;
+ raptor_parser* rdf_parser;
+
+ /* HTML document ctxt */
+ htmlParserCtxtPtr html_ctxt;
+ /* XML document ctxt */
+ xmlParserCtxtPtr xml_ctxt;
+
+ /* Create xpath evaluation context */
+ xmlXPathContextPtr xpathCtx;
+
+ /* parser for dealing with the result */
+ raptor_parser* internal_parser;
+ /* ... constructed with this name */
+ const char* internal_parser_name;
+
+ /* URI of root namespace of document */
+ raptor_uri* root_ns_uri;
+
+ /* List of transformation URIs for document */
+ raptor_sequence* doc_transform_uris;
+
+ /* Copy of the user data statement_handler overwritten to point to
+ * raptor_grddl_filter_triples()
+ */
+ void* saved_user_data;
+ raptor_statement_handler saved_statement_handler;
+
+ /* URI data-view:namespaceTransformation */
+ raptor_uri* namespace_transformation_uri;
+
+ /* URI data-view:profileTransformation */
+ raptor_uri* profile_transformation_uri;
+
+ /* List of namespace / <head profile> URIs */
+ raptor_sequence* profile_uris;
+
+ /* List of visited URIs */
+ raptor_sequence* visited_uris;
+
+ /* Depth of GRDDL parsers - 0 means that the lists above
+ * are owned by this parser: visited_uris
+ * */
+ int grddl_depth;
+
+ /* Content-Type of top-level document */
+ char* content_type;
+
+ /* Check content type once */
+ int content_type_check;
+
+ /* stringbuffer to use to store retrieved document */
+ raptor_stringbuffer* sb;
+
+ /* non-0 to perform an additional RDF/XML parse on a retrieved document
+ * because it has been identified as RDF/XML. */
+ int process_this_as_rdfxml;
+
+ /* non-0 to perform GRDL processing on document */
+ int grddl_processing;
+
+ /* non-0 to perform XML Include processing on document */
+ int xinclude_processing;
+
+ /* non-0 to perform HTML Base processing on document */
+ int html_base_processing;
+
+ /* non-0 to perform HTML <link> processing on document */
+ int html_link_processing;
+
+ xmlGenericErrorFunc saved_xsltGenericError;
+ void *saved_xsltGenericErrorContext;
+
+ xsltSecurityPrefsPtr saved_xsltSecurityPrefs;
+};
+
+
+typedef struct raptor_grddl_parser_context_s raptor_grddl_parser_context;
+
+
+static void
+raptor_grddl_xsltGenericError_handler(void *user_data, const char *msg, ...)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)user_data;
+ va_list arguments;
+ size_t msg_len;
+ size_t length;
+ char *nmsg;
+
+ if(!msg || *msg == '\n')
+ return;
+
+ va_start(arguments, msg);
+
+ msg_len = strlen(msg);
+
+#define PREFIX "libxslt error: "
+#define PREFIX_LENGTH 15
+ length = PREFIX_LENGTH + msg_len + 1;
+ nmsg = RAPTOR_MALLOC(char*, length);
+ if(nmsg) {
+ memcpy(nmsg, PREFIX, PREFIX_LENGTH);
+ memcpy(nmsg + PREFIX_LENGTH, msg, msg_len + 1);
+ if(nmsg[length-1] == '\n')
+ nmsg[length-1] = '\0';
+ }
+
+ raptor_parser_log_error_varargs(rdf_parser, RAPTOR_LOG_LEVEL_ERROR,
+ nmsg ? nmsg : msg, arguments);
+ if(nmsg)
+ RAPTOR_FREE(char*, nmsg);
+
+ va_end(arguments);
+}
+
+
+static grddl_xml_context*
+raptor_new_xml_context(raptor_world* world, raptor_uri* uri,
+ raptor_uri* base_uri)
+{
+ grddl_xml_context* xml_context;
+
+ xml_context = RAPTOR_MALLOC(grddl_xml_context*, sizeof(*xml_context));
+ if(uri)
+ uri = raptor_uri_copy(uri);
+ if(base_uri)
+ base_uri = raptor_uri_copy(base_uri);
+ xml_context->uri = uri;
+ xml_context->base_uri = base_uri;
+
+ return xml_context;
+}
+
+
+static void
+grddl_free_xml_context(void *context, void* userdata)
+{
+ grddl_xml_context* xml_context = (grddl_xml_context*)userdata;
+
+ if(xml_context->uri)
+ raptor_free_uri(xml_context->uri);
+ if(xml_context->base_uri)
+ raptor_free_uri(xml_context->base_uri);
+ RAPTOR_FREE(grddl_xml_context, xml_context);
+}
+
+
+static int
+raptor_grddl_parse_init_common(raptor_parser* rdf_parser, const char *name)
+{
+ raptor_grddl_parser_context* grddl_parser;
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ grddl_parser->world = rdf_parser->world;
+ grddl_parser->rdf_parser = rdf_parser;
+
+ /* Sequence of URIs of XSLT sheets to transform the document */
+ grddl_parser->doc_transform_uris = raptor_new_sequence_with_context((raptor_data_context_free_handler)grddl_free_xml_context, NULL, rdf_parser->world);
+
+ grddl_parser->grddl_processing = 1;
+ grddl_parser->xinclude_processing = 1;
+ grddl_parser->html_base_processing = 0;
+ grddl_parser->html_link_processing = 1;
+
+ return 0;
+}
+
+
+/* 58 == strlen(grddl_namespaceTransformation_uri_string) */
+#define GRDDL_NAMESPACETRANSFORMATION_URI_STRING_LEN 58
+static const unsigned char * const grddl_namespaceTransformation_uri_string = (const unsigned char*)"http://www.w3.org/2003/g/data-view#namespaceTransformation";
+
+/* 56 == strlen(grddl_profileTransformation_uri_string) */
+#define GRDDL_PROFILETRANSFORMATION_URI_STRING_LEN 56
+static const unsigned char * const grddl_profileTransformation_uri_string = (const unsigned char*)"http://www.w3.org/2003/g/data-view#profileTransformation";
+
+
+static int
+raptor_grddl_parse_init(raptor_parser* rdf_parser, const char *name)
+{
+ raptor_grddl_parser_context* grddl_parser;
+ raptor_world* world = rdf_parser->world;
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ raptor_grddl_parse_init_common(rdf_parser, name);
+
+ /* Sequence of URIs from <head profile> */
+ grddl_parser->profile_uris = raptor_new_sequence_with_context((raptor_data_context_free_handler)grddl_free_xml_context, NULL, (void*)world);
+
+ grddl_parser->namespace_transformation_uri = raptor_new_uri_from_counted_string(world, grddl_namespaceTransformation_uri_string, GRDDL_NAMESPACETRANSFORMATION_URI_STRING_LEN);
+ grddl_parser->profile_transformation_uri = raptor_new_uri_from_counted_string(world, grddl_profileTransformation_uri_string, GRDDL_PROFILETRANSFORMATION_URI_STRING_LEN);
+
+ /* Sequence of URIs visited - may be overwritten if this is not
+ * the depth 0 grddl parser
+ */
+ grddl_parser->visited_uris = raptor_new_sequence((raptor_data_free_handler)raptor_free_uri, (raptor_data_print_handler)raptor_uri_print);
+
+ return 0;
+}
+
+
+static void
+raptor_grddl_parse_terminate(raptor_parser *rdf_parser)
+{
+ raptor_grddl_parser_context *grddl_parser;
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ if(grddl_parser->xml_ctxt) {
+ if(grddl_parser->xml_ctxt->myDoc) {
+ xmlFreeDoc(grddl_parser->xml_ctxt->myDoc);
+ grddl_parser->xml_ctxt->myDoc = NULL;
+ }
+ xmlFreeParserCtxt(grddl_parser->xml_ctxt);
+ }
+
+ if(grddl_parser->html_ctxt) {
+ if(grddl_parser->html_ctxt->myDoc) {
+ xmlFreeDoc(grddl_parser->html_ctxt->myDoc);
+ grddl_parser->html_ctxt->myDoc = NULL;
+ }
+ htmlFreeParserCtxt(grddl_parser->html_ctxt);
+ }
+
+ if(grddl_parser->xpathCtx)
+ xmlXPathFreeContext(grddl_parser->xpathCtx);
+
+ if(grddl_parser->internal_parser)
+ raptor_free_parser(grddl_parser->internal_parser);
+
+ if(grddl_parser->root_ns_uri)
+ raptor_free_uri(grddl_parser->root_ns_uri);
+
+ if(grddl_parser->doc_transform_uris)
+ raptor_free_sequence(grddl_parser->doc_transform_uris);
+
+ if(grddl_parser->profile_uris)
+ raptor_free_sequence(grddl_parser->profile_uris);
+
+ if(grddl_parser->namespace_transformation_uri)
+ raptor_free_uri(grddl_parser->namespace_transformation_uri);
+
+ if(grddl_parser->profile_transformation_uri)
+ raptor_free_uri(grddl_parser->profile_transformation_uri);
+
+ if(!grddl_parser->grddl_depth) {
+ if(grddl_parser->visited_uris)
+ raptor_free_sequence(grddl_parser->visited_uris);
+ }
+
+ if(grddl_parser->content_type)
+ RAPTOR_FREE(char*, grddl_parser->content_type);
+
+ if(grddl_parser->sb)
+ raptor_free_stringbuffer(grddl_parser->sb);
+}
+
+
+static void
+raptor_grddl_parser_add_parent(raptor_parser *rdf_parser,
+ raptor_grddl_parser_context* parent_grddl_parser)
+{
+ raptor_grddl_parser_context* grddl_parser;
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ /* Do not set parent twice */
+ if(grddl_parser->visited_uris == parent_grddl_parser->visited_uris)
+ return;
+
+ /* free any sequence here */
+ if(grddl_parser->visited_uris)
+ raptor_free_sequence(grddl_parser->visited_uris);
+
+ /* share parent's list and do not free it here */
+ grddl_parser->visited_uris = parent_grddl_parser->visited_uris;
+ grddl_parser->grddl_depth = parent_grddl_parser->grddl_depth + 1;
+
+ grddl_parser->saved_user_data = parent_grddl_parser->rdf_parser;
+ grddl_parser->saved_statement_handler = raptor_grddl_filter_triples;
+}
+
+
+
+static int
+raptor_grddl_parse_start(raptor_parser *rdf_parser)
+{
+ raptor_grddl_parser_context* grddl_parser;
+ raptor_locator *locator = &rdf_parser->locator;
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ locator->line = 1;
+
+ grddl_parser->content_type_check = 0;
+ grddl_parser->process_this_as_rdfxml = 0;
+
+ return 0;
+}
+
+
+#define MATCH_IS_VALUE_LIST 1
+#define MATCH_IS_PROFILE 2
+#define MATCH_IS_HARDCODED 4
+/* stop looking for other hardcoded matches */
+#define MATCH_LAST 8
+static struct {
+ const xmlChar* xpath;
+ int flags;
+ const xmlChar* xslt_sheet_uri;
+} match_table[]={
+ /* XHTML document where the GRDDL profile is in
+ * <link ref='transform' href='url'> inside the html <head>
+ * Value of @rel is a space-separated list of link types.
+ */
+ {
+ (const xmlChar*)"/html:html/html:head[contains(@profile,\"http://www.w3.org/2003/g/data-view\")]/html:link[contains(@rel,\"transformation\")]/@href",
+ 0,
+ NULL
+ }
+ ,
+ /* XHTML document where the GRDDL profile is in
+ * <a rel='transform' href='url'> inside the html <body>
+ * Value of @rel is a space-separated list of link types.
+ */
+ {
+ (const xmlChar*)"/html:html/html:head[contains(@profile,\"http://www.w3.org/2003/g/data-view\")]/../..//html:a[contains(@rel,\"transformation\")]/@href",
+ 0,
+ NULL
+ }
+ ,
+ /* XML document linking to transform via attribute dataview:transformation
+ * on the root element.
+ * Example: http://www.w3.org/2004/01/rdxh/grddl-p3p-example
+ **/
+ {
+ (const xmlChar*)"/*/@dataview:transformation",
+ MATCH_IS_VALUE_LIST,
+ NULL
+ }
+ ,
+ /* hCalendar microformat http://microformats.org/wiki/hcalendar */
+ {
+ (const xmlChar*)"//*[contains(concat(' ', concat(normalize-space(@class),' ')),' vevent ')]",
+ MATCH_IS_HARDCODED,
+ (const xmlChar*)"http://www.w3.org/2002/12/cal/glean-hcal.xsl"
+ }
+ ,
+ /* hReview microformat http://microformats.org/wiki/review */
+ {
+ (const xmlChar*)"//*[contains(concat(' ', concat(normalize-space(@class),' ')),' hreview ')]",
+ MATCH_IS_HARDCODED | MATCH_LAST, /* stop here since hCard is inside hReview */
+ (const xmlChar*)"http://www.w3.org/2001/sw/grddl-wg/doc29/hreview2rdfxml.xsl"
+ }
+ ,
+ /* hCard microformat http://microformats.org/wiki/hcard */
+ {
+ (const xmlChar*)"//*[contains(concat(' ', concat(normalize-space(@class),' ')),' vcard ')]",
+ MATCH_IS_HARDCODED,
+ (const xmlChar*)"http://www.w3.org/2006/vcard/hcard2rdf.xsl"
+ }
+ ,
+ {
+ NULL,
+ 0,
+ NULL
+ }
+};
+
+
+static const char* const grddl_namespace_uris_ignore_list[] = {
+ "http://www.w3.org/1999/xhtml",
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
+ "http://www.w3.org/2001/XMLSchema",
+ NULL
+};
+
+
+/* add URI to XSLT transformation URI list */
+static void
+raptor_grddl_add_transform_xml_context(raptor_grddl_parser_context* grddl_parser,
+ grddl_xml_context* xml_context)
+{
+ int i;
+ raptor_uri* uri = xml_context->uri;
+ int size;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("Found document transformation URI '%s'\n",
+ raptor_uri_as_string(uri));
+#endif
+
+ size = raptor_sequence_size(grddl_parser->doc_transform_uris);
+ for(i = 0; i < size; i++) {
+ grddl_xml_context* xc;
+ xc = (grddl_xml_context*)raptor_sequence_get_at(grddl_parser->doc_transform_uris, i);
+ if(raptor_uri_equals(uri, xc->uri)) {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("Already seen XSLT URI '%s'\n", raptor_uri_as_string(uri));
+#endif
+ grddl_free_xml_context(grddl_parser->world, xml_context);
+ return;
+ }
+ }
+
+ RAPTOR_DEBUG3("Adding new document transformation XSLT URI %s with base URI %s\n",
+ (uri ? (const char*)raptor_uri_as_string(uri): "(NONE)"),
+ (xml_context->base_uri ? (const char*)raptor_uri_as_string(xml_context->base_uri) : "(NONE)"));
+
+ raptor_sequence_push(grddl_parser->doc_transform_uris, xml_context);
+}
+
+
+static void
+raptor_grddl_filter_triples(void *user_data, raptor_statement *statement)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)user_data;
+ raptor_grddl_parser_context* grddl_parser;
+ int i;
+ raptor_uri* predicate_uri;
+ int size;
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ /* Look for a triple <uri> <uri> <uri> */
+ if(!statement->subject->type == RAPTOR_TERM_TYPE_URI ||
+ !statement->predicate->type == RAPTOR_TERM_TYPE_URI ||
+ !statement->object->type == RAPTOR_TERM_TYPE_URI)
+ return;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+ RAPTOR_DEBUG2("Parser %p: Relaying statement: ", rdf_parser);
+ raptor_statement_print(statement, stderr);
+ fputc('\n', stderr);
+#endif
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("Parser %p: Checking against %d profile URIs\n",
+ rdf_parser, raptor_sequence_size(grddl_parser->profile_uris));
+#endif
+
+ /* Look for(i = 0, root namespace URI)
+ * <document-root-element-namespace-URI> data-view:namespaceTransformation ?tr
+ * or (i>0, profile URIs)
+ * <document-root-element-namespace-URI> data-view:profileTransformation ?tr
+ * and then ?tr becomes a new document transformation URI
+ */
+ predicate_uri = grddl_parser->namespace_transformation_uri;
+ size = raptor_sequence_size(grddl_parser->profile_uris);
+ for(i = 0; i < size; i++) {
+ grddl_xml_context* xml_context;
+ raptor_uri* profile_uri;
+ grddl_xml_context* new_xml_context;
+
+ xml_context = (grddl_xml_context*)raptor_sequence_get_at(grddl_parser->profile_uris, i);
+ profile_uri = xml_context->uri;
+
+ if(i == 1)
+ predicate_uri = grddl_parser->profile_transformation_uri;
+
+ if(!profile_uri)
+ continue;
+
+ if(raptor_uri_equals(statement->subject->value.uri, profile_uri) &&
+ raptor_uri_equals(statement->predicate->value.uri, predicate_uri)) {
+ raptor_uri* uri = statement->object->value.uri;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG4("Parser %p: Matches profile URI #%d '%s'\n",
+ rdf_parser, i, raptor_uri_as_string(profile_uri));
+#endif
+
+ new_xml_context = raptor_new_xml_context(rdf_parser->world, uri,
+ rdf_parser->base_uri);
+ raptor_grddl_add_transform_xml_context(grddl_parser, new_xml_context);
+ } else {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG4("Parser %p: Failed to match profile URI #%d '%s'\n",
+ rdf_parser, i, raptor_uri_as_string(profile_uri));
+#endif
+ }
+
+ }
+
+}
+
+
+static int
+raptor_grddl_ensure_internal_parser(raptor_parser* rdf_parser,
+ const char* parser_name, int filter)
+{
+ raptor_grddl_parser_context* grddl_parser;
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ if(!grddl_parser->internal_parser_name ||
+ !strcmp(parser_name, "guess") ||
+ strcmp(grddl_parser->internal_parser_name, parser_name)) {
+ /* construct a new parser if none in use or not what is required */
+ if(grddl_parser->internal_parser) {
+ int our_emit_flags = rdf_parser->emit_graph_marks;
+
+ /* copy back bit flags from parser about to be destroyed */
+ raptor_parser_copy_flags_state(rdf_parser,
+ grddl_parser->internal_parser);
+
+ /* restore whatever graph makrs state we had here */
+ rdf_parser->emit_graph_marks = our_emit_flags;
+
+ RAPTOR_DEBUG3("Parser %p: Freeing internal %s parser.\n",
+ rdf_parser, grddl_parser->internal_parser_name);
+
+ raptor_free_parser(grddl_parser->internal_parser);
+ grddl_parser->internal_parser = NULL;
+ grddl_parser->internal_parser_name = NULL;
+ }
+
+ RAPTOR_DEBUG3("Parser %p: Allocating new internal %s parser.\n",
+ rdf_parser, parser_name);
+ grddl_parser->internal_parser = raptor_new_parser(rdf_parser->world,
+ parser_name);
+ if(!grddl_parser->internal_parser) {
+ raptor_parser_error(rdf_parser, "Failed to create %s parser",
+ parser_name);
+ return 1;
+ }
+
+ /* initialise the new parser with the outer state */
+ grddl_parser->internal_parser_name = parser_name;
+ if(raptor_parser_copy_user_state(grddl_parser->internal_parser, rdf_parser))
+ return 1;
+
+ /* Disable graph marks in newly constructed internal parser */
+ grddl_parser->internal_parser->emit_graph_marks = 0;
+
+ grddl_parser->saved_user_data = rdf_parser->user_data;
+ grddl_parser->saved_statement_handler = rdf_parser->statement_handler;
+ }
+
+ /* Filter the triples for profile/namespace URIs */
+ if(filter) {
+ grddl_parser->internal_parser->user_data = rdf_parser;
+ grddl_parser->internal_parser->statement_handler = raptor_grddl_filter_triples;
+ } else {
+ grddl_parser->internal_parser->user_data = grddl_parser->saved_user_data;
+ grddl_parser->internal_parser->statement_handler = grddl_parser->saved_statement_handler;
+ }
+
+ return 0;
+}
+
+
+/* Run a GRDDL transform using a pre-parsed XSLT stylesheet already
+ * formed into a libxml document (with URI)
+ */
+static int
+raptor_grddl_run_grddl_transform_doc(raptor_parser* rdf_parser,
+ grddl_xml_context* xml_context,
+ xmlDocPtr xslt_doc,
+ xmlDocPtr doc)
+{
+ raptor_world* world = rdf_parser->world;
+ raptor_grddl_parser_context* grddl_parser;
+ int ret = 0;
+ xsltStylesheetPtr sheet = NULL;
+ xmlDocPtr res = NULL;
+ xmlChar *doc_txt = NULL;
+ int doc_txt_len = 0;
+ const char* parser_name;
+ const char* params[7];
+ const unsigned char* base_uri_string;
+ size_t base_uri_len;
+ raptor_uri* xslt_uri;
+ raptor_uri* base_uri;
+ char *quoted_base_uri = NULL;
+ xsltTransformContextPtr userCtxt = NULL;
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ xslt_uri = xml_context->uri;
+ base_uri = xml_context->base_uri ? xml_context->base_uri : xml_context->uri;
+
+ base_uri_string = raptor_uri_as_counted_string(base_uri, &base_uri_len);
+
+ RAPTOR_DEBUG3("Running GRDDL transform with XSLT URI '%s' with doc base URI '%s'\n",
+ raptor_uri_as_string(xslt_uri),
+ base_uri_string);
+
+ raptor_libxslt_set_global_state(rdf_parser);
+
+ /* This calls xsltGetDefaultSecurityPrefs() */
+ sheet = xsltParseStylesheetDoc(xslt_doc);
+ if(!sheet) {
+ raptor_parser_error(rdf_parser, "Failed to parse stylesheet in '%s'",
+ raptor_uri_as_string(xslt_uri));
+ ret = 1;
+ goto cleanup_xslt;
+ }
+
+ /* This calls xsltGetDefaultSecurityPrefs() */
+ userCtxt = xsltNewTransformContext(sheet, doc);
+
+ /* set per-transform security preferences */
+ if(world->xslt_security_preferences)
+ xsltSetCtxtSecurityPrefs((xsltSecurityPrefs*)world->xslt_security_preferences,
+ userCtxt);
+
+ /* set per-transform generic error handler */
+ xsltSetTransformErrorFunc(userCtxt, rdf_parser,
+ raptor_grddl_xsltGenericError_handler);
+
+
+ /*
+ * Define 'base', 'Base' and 'url' params to allow some XSLT sheets to work:
+ * base:
+ * http://www.w3.org/2000/07/uri43/uri.xsl
+ * Base:
+ * http://www.w3.org/2000/08/w3c-synd/home2rss.xsl
+ * url: (optional)
+ * http://www.w3.org/2001/sw/grddl-wg/td/RDFa2RDFXML.xsl
+ */
+ quoted_base_uri = RAPTOR_MALLOC(char*, base_uri_len + 3);
+ quoted_base_uri[0] = '\'';
+ memcpy(quoted_base_uri + 1, (const char*)base_uri_string, base_uri_len);
+ quoted_base_uri[base_uri_len + 1] = '\'';
+ quoted_base_uri[base_uri_len + 2] = '\0';
+
+ params[0] = "base";
+ params[1] = (const char*)quoted_base_uri;
+ params[2] = "Base";
+ params[3] = (const char*)quoted_base_uri;
+ params[4] = "url";
+ params[5] = (const char*)quoted_base_uri;
+ params[6] = NULL;
+
+ res = xsltApplyStylesheetUser(sheet, doc, params, NULL, NULL, userCtxt);
+
+ if(!res) {
+ raptor_parser_error(rdf_parser, "Failed to apply stylesheet in '%s'",
+ raptor_uri_as_string(xslt_uri));
+ ret = 1;
+ goto cleanup_xslt;
+ }
+
+ if(res->type == XML_HTML_DOCUMENT_NODE) {
+ if(sheet->method != NULL)
+ xmlFree(sheet->method);
+ sheet->method = (xmlChar*)xmlMalloc(5);
+ memcpy(sheet->method, "html", 5);
+ }
+
+ /* write the resulting XML to a string */
+ xsltSaveResultToString(&doc_txt, &doc_txt_len, res, sheet);
+
+ if(!doc_txt || !doc_txt_len) {
+ raptor_parser_warning(rdf_parser, "XSLT returned an empty document");
+ goto cleanup_xslt;
+ }
+
+ RAPTOR_DEBUG4("XSLT returned %d bytes document method %s media type %s\n",
+ doc_txt_len,
+ (sheet->method ? (const char*)sheet->method : "NULL"),
+ (sheet->mediaType ? (const char*)sheet->mediaType : "NULL"));
+
+ /* Set mime types for XSLT <xsl:output method> content */
+ if(sheet->mediaType == NULL && sheet->method) {
+ if(!(strcmp((const char*)sheet->method, "text"))) {
+ sheet->mediaType = (xmlChar*)xmlMalloc(11);
+ memcpy(sheet->mediaType, "text/plain",11);
+ } else if(!(strcmp((const char*)sheet->method, "xml"))) {
+ sheet->mediaType = (xmlChar*)xmlMalloc(16);
+ memcpy(sheet->mediaType, "application/xml",16);
+ } else if(!(strcmp((const char*)sheet->method, "html"))) {
+ sheet->mediaType = (xmlChar*)xmlMalloc(10);
+ memcpy(sheet->mediaType, "text/html",10);
+ }
+ }
+
+ /* Assume all that all media XML is RDF/XML and also that
+ * with no information at all we have RDF/XML
+ */
+ if(!sheet->mediaType ||
+ (sheet->mediaType &&
+ !strcmp((const char*)sheet->mediaType, "application/xml"))) {
+ if(sheet->mediaType)
+ xmlFree(sheet->mediaType);
+ sheet->mediaType = (xmlChar*)xmlMalloc(20);
+ memcpy(sheet->mediaType, "application/rdf+xml",20);
+ }
+
+ parser_name = raptor_world_guess_parser_name(rdf_parser->world, NULL,
+ (const char*)sheet->mediaType,
+ doc_txt, doc_txt_len, NULL);
+ if(!parser_name) {
+ RAPTOR_DEBUG3("Parser %p: Guessed no parser from mime type '%s' and content - ending",
+ rdf_parser, sheet->mediaType);
+ goto cleanup_xslt;
+ }
+
+ RAPTOR_DEBUG4("Parser %p: Guessed parser %s from mime type '%s' and content\n",
+ rdf_parser, parser_name, sheet->mediaType);
+
+ if(!strcmp((const char*)parser_name, "grddl")) {
+ RAPTOR_DEBUG2("Parser %p: Ignoring guess to run grddl parser - ending",
+ rdf_parser);
+ goto cleanup_xslt;
+ }
+
+ ret = raptor_grddl_ensure_internal_parser(rdf_parser, parser_name, 0);
+ if(ret)
+ goto cleanup_xslt;
+
+ if(grddl_parser->internal_parser) {
+ /* generate the triples */
+ raptor_parser_parse_start(grddl_parser->internal_parser, base_uri);
+ raptor_parser_parse_chunk(grddl_parser->internal_parser,
+ doc_txt, doc_txt_len, 1);
+ }
+
+ cleanup_xslt:
+
+ if(userCtxt)
+ xsltFreeTransformContext(userCtxt);
+
+ if(quoted_base_uri)
+ RAPTOR_FREE(char*, quoted_base_uri);
+
+ if(doc_txt)
+ xmlFree(doc_txt);
+
+ if(res)
+ xmlFreeDoc(res);
+
+ if(sheet)
+ xsltFreeStylesheet(sheet);
+
+ raptor_libxslt_reset_global_state(rdf_parser);
+
+ return ret;
+}
+
+
+typedef struct
+{
+ raptor_parser* rdf_parser;
+ xmlParserCtxtPtr xc;
+ raptor_uri* base_uri;
+} raptor_grddl_xml_parse_bytes_context;
+
+
+static void
+raptor_grddl_uri_xml_parse_bytes(raptor_www* www,
+ void *userdata,
+ const void *ptr, size_t size, size_t nmemb)
+{
+ raptor_grddl_xml_parse_bytes_context* xpbc;
+ size_t len = size * nmemb;
+ int rc = 0;
+
+ xpbc = (raptor_grddl_xml_parse_bytes_context*)userdata;
+
+ if(!xpbc->xc) {
+ xmlParserCtxtPtr xc;
+
+ xc = xmlCreatePushParserCtxt(NULL, NULL,
+ (const char*)ptr, RAPTOR_BAD_CAST(int, len),
+ (const char*)raptor_uri_as_string(xpbc->base_uri));
+ if(!xc)
+ rc = 1;
+ else {
+ int libxml_options = 0;
+
+#ifdef RAPTOR_LIBXML_XML_PARSE_NONET
+ if(RAPTOR_OPTIONS_GET_NUMERIC(xpbc->rdf_parser, RAPTOR_OPTION_NO_NET))
+ libxml_options |= XML_PARSE_NONET;
+#endif
+#ifdef HAVE_XMLCTXTUSEOPTIONS
+ xmlCtxtUseOptions(xc, libxml_options);
+#endif
+
+ xc->replaceEntities = 1;
+ xc->loadsubset = 1;
+ }
+ xpbc->xc = xc;
+ } else
+ rc = xmlParseChunk(xpbc->xc, (const char*)ptr, RAPTOR_BAD_CAST(int, len), 0);
+
+ if(rc)
+ raptor_parser_error(xpbc->rdf_parser, "XML Parsing failed");
+}
+
+
+#define FETCH_IGNORE_ERRORS 1
+#define FETCH_ACCEPT_XSLT 2
+
+static int
+raptor_grddl_fetch_uri(raptor_parser* rdf_parser,
+ raptor_uri* uri,
+ raptor_www_write_bytes_handler write_bytes_handler,
+ void* write_bytes_user_data,
+ raptor_www_content_type_handler content_type_handler,
+ void* content_type_user_data,
+ int flags)
+{
+ raptor_www *www;
+ const char *accept_h;
+ int ret = 0;
+ int ignore_errors = (flags & FETCH_IGNORE_ERRORS);
+
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NO_NET)) {
+ if(!raptor_uri_uri_string_is_file_uri(raptor_uri_as_string(uri)))
+ return 1;
+ }
+
+ www = raptor_new_www(rdf_parser->world);
+ if(!www)
+ return 1;
+
+ raptor_www_set_user_agent(www, "grddl/0.1");
+
+ if(flags & FETCH_ACCEPT_XSLT) {
+ raptor_www_set_http_accept(www, "application/xml");
+ } else {
+ accept_h = raptor_parser_get_accept_header(rdf_parser);
+ if(accept_h) {
+ raptor_www_set_http_accept(www, accept_h);
+ RAPTOR_FREE(char*, accept_h);
+ }
+ }
+ if(rdf_parser->uri_filter)
+ raptor_www_set_uri_filter(www, rdf_parser->uri_filter,
+ rdf_parser->uri_filter_user_data);
+ if(ignore_errors)
+ raptor_world_internal_set_ignore_errors(rdf_parser->world, 1);
+
+ raptor_www_set_write_bytes_handler(www, write_bytes_handler,
+ write_bytes_user_data);
+ raptor_www_set_content_type_handler(www, content_type_handler,
+ content_type_user_data);
+
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_WWW_TIMEOUT) > 0)
+ raptor_www_set_connection_timeout(www,
+ RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_WWW_TIMEOUT));
+
+ ret = raptor_www_fetch(www, uri);
+
+ raptor_free_www(www);
+
+ if(ignore_errors)
+ raptor_world_internal_set_ignore_errors(rdf_parser->world, 0);
+
+ return ret;
+}
+
+
+/* Run a GRDDL transform using a XSLT stylesheet at a given URI */
+static int
+raptor_grddl_run_grddl_transform_uri(raptor_parser* rdf_parser,
+ grddl_xml_context* xml_context,
+ xmlDocPtr doc)
+{
+ xmlParserCtxtPtr xslt_ctxt = NULL;
+ raptor_grddl_xml_parse_bytes_context xpbc;
+ int ret = 0;
+ raptor_uri* xslt_uri;
+ raptor_uri* base_uri;
+ raptor_uri* old_locator_uri;
+ raptor_locator *locator = &rdf_parser->locator;
+
+ xslt_uri = xml_context->uri;
+ base_uri = xml_context->base_uri ? xml_context->base_uri : xml_context->uri;
+
+ RAPTOR_DEBUG3("Running GRDDL transform with XSLT URI %s and base URI %s\n",
+ raptor_uri_as_string(xslt_uri),
+ raptor_uri_as_string(base_uri));
+
+ /* make an xsltStylesheetPtr via the raptor_grddl_uri_xml_parse_bytes
+ * callback as bytes are returned
+ */
+ xpbc.xc = NULL;
+ xpbc.rdf_parser = rdf_parser;
+ xpbc.base_uri = base_uri;
+
+ old_locator_uri = locator->uri;
+ locator->uri = xslt_uri;
+ ret = raptor_grddl_fetch_uri(rdf_parser,
+ xslt_uri,
+ raptor_grddl_uri_xml_parse_bytes, &xpbc,
+ NULL, NULL,
+ FETCH_ACCEPT_XSLT);
+ xslt_ctxt = xpbc.xc;
+ if(ret) {
+ locator->uri = old_locator_uri;
+ raptor_parser_warning(rdf_parser, "Fetching XSLT document URI '%s' failed",
+ raptor_uri_as_string(xslt_uri));
+ ret = 0;
+ } else {
+ xmlParseChunk(xpbc.xc, NULL, 0, 1);
+
+ ret = raptor_grddl_run_grddl_transform_doc(rdf_parser,
+ xml_context,
+ xslt_ctxt->myDoc,
+ doc);
+ locator->uri = old_locator_uri;
+ }
+
+ if(xslt_ctxt)
+ xmlFreeParserCtxt(xslt_ctxt);
+
+ return ret;
+}
+
+
+static int
+raptor_grddl_seen_uri(raptor_grddl_parser_context* grddl_parser,
+ raptor_uri* uri)
+{
+ int i;
+ int seen = 0;
+ raptor_sequence* seq = grddl_parser->visited_uris;
+ int size;
+
+ size = raptor_sequence_size(seq);
+ for(i = 0; i < size; i++) {
+ raptor_uri* vuri = (raptor_uri*)raptor_sequence_get_at(seq, i);
+ if(raptor_uri_equals(uri, vuri)) {
+ seen = 1;
+ break;
+ }
+ }
+
+#ifdef RAPTOR_DEBUG
+ if(seen)
+ RAPTOR_DEBUG2("Already seen URI '%s'\n", raptor_uri_as_string(uri));
+#endif
+
+ return seen;
+}
+
+
+static void
+raptor_grddl_done_uri(raptor_grddl_parser_context* grddl_parser,
+ raptor_uri* uri)
+{
+ if(!grddl_parser->visited_uris)
+ return;
+
+ if(!raptor_grddl_seen_uri(grddl_parser, uri)) {
+ raptor_sequence* seq = grddl_parser->visited_uris;
+ raptor_sequence_push(seq, raptor_uri_copy(uri));
+ }
+}
+
+
+static raptor_sequence*
+raptor_grddl_run_xpath_match(raptor_parser* rdf_parser,
+ xmlDocPtr doc,
+ const xmlChar* xpathExpr,
+ int flags)
+{
+ raptor_grddl_parser_context* grddl_parser;
+ /* Evaluate xpath expression */
+ xmlXPathObjectPtr xpathObj = NULL;
+ raptor_sequence* seq = NULL;
+ xmlNodeSetPtr nodes;
+ int i;
+ int size;
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ seq = raptor_new_sequence((raptor_data_free_handler)grddl_free_xml_context, NULL);
+
+ /* Evaluate xpath expression */
+ xpathObj = xmlXPathEvalExpression(xpathExpr,
+ grddl_parser->xpathCtx);
+ if(!xpathObj) {
+ raptor_parser_error(rdf_parser,
+ "Unable to evaluate XPath expression \"%s\"",
+ xpathExpr);
+ raptor_free_sequence(seq); seq = NULL;
+ goto cleanup_xpath_match;
+ }
+
+ nodes = xpathObj->nodesetval;
+ if(!nodes || xmlXPathNodeSetIsEmpty(nodes)) {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("No match found with XPath expression \"%s\" over '%s'\n",
+ xpathExpr, raptor_uri_as_string(rdf_parser->base_uri));
+#endif
+ raptor_free_sequence(seq); seq = NULL;
+ goto cleanup_xpath_match;
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("Found match with XPath expression \"%s\" over '%s'\n",
+ xpathExpr, raptor_uri_as_string(rdf_parser->base_uri));
+#endif
+
+ size = xmlXPathNodeSetGetLength(nodes);
+ for(i = 0; i < size; i++) {
+ xmlNodePtr node = nodes->nodeTab[i];
+ const unsigned char* uri_string = NULL;
+ xmlChar *base_uri_string;
+ raptor_uri* base_uri = NULL;
+ raptor_uri* uri = NULL;
+
+ if(node->type != XML_ATTRIBUTE_NODE &&
+ node->type != XML_ELEMENT_NODE) {
+ raptor_parser_error(rdf_parser, "Got unexpected node type %d",
+ node->type);
+ continue;
+ }
+
+
+ /* xmlNodeGetBase() returns base URI or NULL and must be freed
+ * with xmlFree()
+ */
+ if(grddl_parser->html_base_processing) {
+ xmlElementType savedType = doc->type;
+ doc->type = XML_HTML_DOCUMENT_NODE;
+ base_uri_string = xmlNodeGetBase(doc, node);
+ doc->type = savedType;
+ } else
+ base_uri_string = xmlNodeGetBase(doc, node);
+
+
+ if(node->type == XML_ATTRIBUTE_NODE)
+ uri_string = (const unsigned char*)node->children->content;
+ else { /* XML_ELEMENT_NODE */
+ if(node->ns)
+ uri_string = (const unsigned char*)node->ns->href;
+ }
+
+
+ if(base_uri_string) {
+ base_uri = raptor_new_uri(rdf_parser->world, base_uri_string);
+ xmlFree(base_uri_string);
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("XML base URI of match is '%s'\n",
+ raptor_uri_as_string(base_uri));
+#endif
+ } else if(rdf_parser->base_uri)
+ base_uri = raptor_uri_copy(rdf_parser->base_uri);
+ else
+ base_uri = NULL;
+
+ if(flags & MATCH_IS_VALUE_LIST) {
+ char *start;
+ char *end;
+ char* buffer;
+ size_t list_len = strlen((const char*)uri_string);
+
+ buffer = RAPTOR_MALLOC(char*, list_len + 1);
+ memcpy(buffer, uri_string, list_len + 1);
+
+ for(start = end = buffer; end; start = end+1) {
+ grddl_xml_context* xml_context;
+
+ end = strchr(start, ' ');
+ if(end)
+ *end = '\0';
+
+ if(start == end)
+ continue;
+
+ RAPTOR_DEBUG2("Got list match URI '%s'\n", start);
+
+ uri = raptor_new_uri_relative_to_base(rdf_parser->world,
+ base_uri,
+ (const unsigned char*)start);
+ if(flags & MATCH_IS_PROFILE &&
+ !strcmp((const char*)raptor_uri_as_string(uri),
+ "http://www.w3.org/2003/g/data-view'")) {
+ raptor_free_uri(uri);
+ continue;
+ }
+
+ xml_context = raptor_new_xml_context(rdf_parser->world, uri, base_uri);
+ raptor_sequence_push(seq, xml_context);
+ }
+ RAPTOR_FREE(char*, buffer);
+ } else if(flags & MATCH_IS_HARDCODED) {
+ RAPTOR_DEBUG2("Got hardcoded XSLT match for %s\n", xpathExpr);
+ /* return at first match, that's enough */
+ break;
+ } else {
+ grddl_xml_context* xml_context;
+ RAPTOR_DEBUG2("Got single match URI '%s'\n", uri_string);
+
+ uri = raptor_new_uri_relative_to_base(rdf_parser->world, base_uri,
+ uri_string);
+ xml_context = raptor_new_xml_context(rdf_parser->world, uri, base_uri);
+ raptor_sequence_push(seq, xml_context);
+ raptor_free_uri(uri);
+ }
+
+ if(base_uri)
+ raptor_free_uri(base_uri);
+ }
+
+ cleanup_xpath_match:
+ if(xpathObj)
+ xmlXPathFreeObject(xpathObj);
+
+ return seq;
+}
+
+
+static void
+raptor_grddl_check_recursive_content_type_handler(raptor_www* www,
+ void* userdata,
+ const char* content_type)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)userdata;
+ raptor_grddl_parser_context* grddl_parser;
+ size_t len;
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ if(!content_type)
+ return;
+
+ len = strlen(content_type)+1;
+ if(grddl_parser->content_type)
+ RAPTOR_FREE(char*, grddl_parser->content_type);
+ grddl_parser->content_type = RAPTOR_MALLOC(char*, len + 1);
+ memcpy(grddl_parser->content_type, content_type, len + 1);
+
+ if(!strncmp(content_type, "application/rdf+xml", 19)) {
+ grddl_parser->process_this_as_rdfxml = 1;
+
+ RAPTOR_DEBUG2("Parser %p: Found RDF/XML content type\n", rdf_parser);
+ raptor_parser_save_content(rdf_parser, 1);
+ }
+
+ if(!strncmp(content_type, "text/html", 9) ||
+ !strncmp(content_type, "application/html+xml", 20)) {
+ RAPTOR_DEBUG3("Parser %p: Found HTML content type '%s'\n",
+ rdf_parser, content_type);
+ grddl_parser->html_base_processing = 1;
+ }
+
+}
+
+#define RECURSIVE_FLAGS_IGNORE_ERRORS 1
+#define RECURSIVE_FLAGS_FILTER 2
+
+static int
+raptor_grddl_run_recursive(raptor_parser* rdf_parser, raptor_uri* uri,
+ const char *parser_name, int flags)
+{
+ raptor_grddl_parser_context* grddl_parser;
+ raptor_www_content_type_handler content_type_handler = NULL;
+ int ret = 0;
+ const unsigned char* ibuffer = NULL;
+ size_t ibuffer_len = 0;
+ raptor_parse_bytes_context rpbc;
+ int ignore_errors = (flags & RECURSIVE_FLAGS_IGNORE_ERRORS) > 0;
+ int filter = (flags & RECURSIVE_FLAGS_FILTER) > 0;
+ int fetch_uri_flags = 0;
+ int is_grddl=!strcmp(parser_name, "grddl");
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ if(raptor_grddl_seen_uri(grddl_parser, uri))
+ return 0;
+
+ if(is_grddl)
+ content_type_handler = raptor_grddl_check_recursive_content_type_handler;
+
+ if(raptor_grddl_ensure_internal_parser(rdf_parser, parser_name, filter))
+ return !ignore_errors;
+
+ RAPTOR_DEBUG3("Running recursive %s operation on URI '%s'\n",
+ parser_name, raptor_uri_as_string(uri));
+
+ if(is_grddl)
+ raptor_grddl_parser_add_parent(grddl_parser->internal_parser, grddl_parser);
+
+ rpbc.rdf_parser = grddl_parser->internal_parser;
+ rpbc.base_uri = NULL;
+ rpbc.final_uri = NULL;
+ rpbc.started = 0;
+
+ if(ignore_errors)
+ fetch_uri_flags |=FETCH_IGNORE_ERRORS;
+
+ if(raptor_grddl_fetch_uri(grddl_parser->internal_parser,
+ uri,
+ raptor_parser_parse_uri_write_bytes, &rpbc,
+ content_type_handler, grddl_parser->internal_parser,
+ fetch_uri_flags)) {
+ if(!ignore_errors)
+ raptor_parser_warning(rdf_parser,
+ "Fetching GRDDL document URI '%s' failed\n",
+ raptor_uri_as_string(uri));
+ ret = 0;
+ goto tidy;
+ }
+
+ if(ignore_errors)
+ raptor_world_internal_set_ignore_errors(rdf_parser->world, 1);
+
+ raptor_parser_parse_chunk(grddl_parser->internal_parser, NULL, 0, 1);
+
+ /* If content was saved, process it as RDF/XML */
+ ibuffer = raptor_parser_get_content(grddl_parser->internal_parser,
+ &ibuffer_len);
+ if(ibuffer && strcmp(parser_name, "rdfxml")) {
+ RAPTOR_DEBUG2("Running additional RDF/XML parse on URI '%s' content\n",
+ raptor_uri_as_string(uri));
+
+ if(raptor_grddl_ensure_internal_parser(rdf_parser, "rdfxml", 1))
+ ret = 1;
+ else {
+ if(raptor_parser_parse_start(grddl_parser->internal_parser, uri))
+ ret = 1;
+ else {
+ ret = raptor_parser_parse_chunk(grddl_parser->internal_parser, ibuffer,
+ ibuffer_len, 1);
+ }
+ }
+
+ RAPTOR_FREE(char*, ibuffer);
+ raptor_parser_save_content(grddl_parser->internal_parser, 0);
+ }
+
+ if(rpbc.final_uri)
+ raptor_free_uri(rpbc.final_uri);
+
+ if(ignore_errors) {
+ raptor_world_internal_set_ignore_errors(rdf_parser->world, 0);
+ ret = 0;
+ }
+
+ tidy:
+
+ return ret;
+}
+
+
+static void
+raptor_grddl_libxml_discard_error(void* user_data, const char *msg, ...)
+{
+ return;
+}
+
+
+static int
+raptor_grddl_parse_chunk(raptor_parser* rdf_parser,
+ const unsigned char *s, size_t len,
+ int is_end)
+{
+ raptor_grddl_parser_context* grddl_parser;
+ int i;
+ int ret = 0;
+ const unsigned char* uri_string;
+ raptor_uri* uri;
+ /* XML document DOM */
+ xmlDocPtr doc;
+ int expri;
+ unsigned char* buffer = NULL;
+ size_t buffer_len = 0;
+ int buffer_is_libxml = 0;
+ int loop;
+
+ if(!is_end && !rdf_parser->emitted_default_graph) {
+ /* Cannot tell if we have a statement yet but must ensure that
+ * the start default graph mark is done once and done before any
+ * statements.
+ */
+ raptor_parser_start_graph(rdf_parser, NULL, 0);
+ rdf_parser->emitted_default_graph++;
+ }
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ if(grddl_parser->content_type && !grddl_parser->content_type_check) {
+ grddl_parser->content_type_check++;
+ if(!strncmp(grddl_parser->content_type, "application/rdf+xml", 19)) {
+ RAPTOR_DEBUG3("Parser %p: Found document with type '%s' is RDF/XML\n",
+ rdf_parser, grddl_parser->content_type);
+ grddl_parser->process_this_as_rdfxml = 1;
+ }
+ if(!strncmp(grddl_parser->content_type, "text/html", 9) ||
+ !strncmp(grddl_parser->content_type, "application/html+xml", 20)) {
+ RAPTOR_DEBUG3("Parser %p: Found document with type '%s' is HTML\n",
+ rdf_parser, grddl_parser->content_type);
+ grddl_parser->html_base_processing = 1;
+ }
+ }
+
+ if(!grddl_parser->sb)
+ grddl_parser->sb = raptor_new_stringbuffer();
+
+ raptor_stringbuffer_append_counted_string(grddl_parser->sb, s, len, 1);
+
+ if(!is_end)
+ return 0;
+
+ buffer_len = raptor_stringbuffer_length(grddl_parser->sb);
+ buffer = RAPTOR_MALLOC(unsigned char*, buffer_len + 1);
+ if(buffer)
+ raptor_stringbuffer_copy_to_string(grddl_parser->sb,
+ buffer, buffer_len);
+
+
+ uri_string = raptor_uri_as_string(rdf_parser->base_uri);
+
+ /* Discard parsing errors */
+ raptor_world_internal_set_ignore_errors(rdf_parser->world, 1);
+
+ RAPTOR_DEBUG4("Parser %p: URI %s: processing %d bytes of content\n",
+ rdf_parser, uri_string, (int)buffer_len);
+
+ for(loop = 0; loop < 2; loop++) {
+ int rc;
+
+ if(loop == 0) {
+ int libxml_options = 0;
+
+ RAPTOR_DEBUG2("Parser %p: Creating an XML parser\n", rdf_parser);
+
+ /* try to create an XML parser context */
+ grddl_parser->xml_ctxt = xmlCreatePushParserCtxt(NULL, NULL,
+ (const char*)buffer,
+ RAPTOR_BAD_CAST(int, buffer_len),
+ (const char*)uri_string);
+ if(!grddl_parser->xml_ctxt) {
+ RAPTOR_DEBUG2("Parser %p: Creating an XML parser failed\n", rdf_parser);
+ continue;
+ }
+
+#ifdef RAPTOR_LIBXML_XML_PARSE_NONET
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NO_NET))
+ libxml_options |= XML_PARSE_NONET;
+#endif
+#ifdef HAVE_XMLCTXTUSEOPTIONS
+ xmlCtxtUseOptions(grddl_parser->xml_ctxt, libxml_options);
+#endif
+
+
+ grddl_parser->xml_ctxt->vctxt.warning = raptor_grddl_libxml_discard_error;
+ grddl_parser->xml_ctxt->vctxt.error = raptor_grddl_libxml_discard_error;
+
+ grddl_parser->xml_ctxt->replaceEntities = 1;
+ grddl_parser->xml_ctxt->loadsubset = 1;
+ } else if(loop == 1) {
+
+ /* try to create an HTML parser context */
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_HTML_TAG_SOUP)) {
+ xmlCharEncoding enc;
+ int options;
+
+ RAPTOR_DEBUG2("Parser %p: Creating an HTML parser\n", rdf_parser);
+
+ enc = xmlDetectCharEncoding((const unsigned char*)buffer,
+ RAPTOR_BAD_CAST(int, buffer_len));
+ grddl_parser->html_ctxt = htmlCreatePushParserCtxt(/*sax*/ NULL,
+ /*user_data*/ NULL,
+ (const char *)buffer,
+ RAPTOR_BAD_CAST(int, buffer_len),
+ (const char *)uri_string,
+ enc);
+ if(!grddl_parser->html_ctxt) {
+ RAPTOR_DEBUG2("Parser %p: Creating an HTML parser failed\n",
+ rdf_parser);
+ continue;
+ }
+
+ /* HTML parser */
+ grddl_parser->html_ctxt->replaceEntities = 1;
+ grddl_parser->html_ctxt->loadsubset = 1;
+
+ grddl_parser->html_ctxt->vctxt.error = raptor_grddl_libxml_discard_error;
+
+ /* HTML_PARSE_NOWARNING disables sax->warning, vxtxt.warning */
+ /* HTML_PARSE_NOERROR disables sax->error, vctxt.error */
+ options = HTML_PARSE_NOERROR | HTML_PARSE_NOWARNING;
+#ifdef HTML_PARSE_RECOVER
+ options |= HTML_PARSE_RECOVER;
+#endif
+#ifdef RAPTOR_LIBXML_HTML_PARSE_NONET
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NO_NET))
+ options |= HTML_PARSE_NONET;
+#endif
+
+ htmlCtxtUseOptions(grddl_parser->html_ctxt, options);
+
+ } else
+ continue;
+ } else
+ continue;
+
+
+ if(grddl_parser->html_ctxt) {
+ RAPTOR_DEBUG2("Parser %p: Parsing as HTML\n", rdf_parser);
+ rc = htmlParseChunk(grddl_parser->html_ctxt, (const char*)s, 0, 1);
+ RAPTOR_DEBUG3("Parser %p: Parsing as HTML %s\n", rdf_parser,
+ (rc ? "failed" : "succeeded"));
+ if(rc) {
+ if(grddl_parser->html_ctxt->myDoc) {
+ xmlFreeDoc(grddl_parser->html_ctxt->myDoc);
+ grddl_parser->html_ctxt->myDoc = NULL;
+ }
+ htmlFreeParserCtxt(grddl_parser->html_ctxt);
+ grddl_parser->html_ctxt = NULL;
+ }
+ } else {
+ RAPTOR_DEBUG2("Parser %p: Parsing as XML\n", rdf_parser);
+ rc = xmlParseChunk(grddl_parser->xml_ctxt, (const char*)s, 0, 1);
+ RAPTOR_DEBUG3("Parser %p: Parsing as XML %s\n", rdf_parser,
+ (rc ? "failed" : "succeeded"));
+ if(rc) {
+ if(grddl_parser->xml_ctxt->myDoc) {
+ xmlFreeDoc(grddl_parser->xml_ctxt->myDoc);
+ grddl_parser->xml_ctxt->myDoc = NULL;
+ }
+ xmlFreeParserCtxt(grddl_parser->xml_ctxt);
+ grddl_parser->xml_ctxt = NULL;
+ }
+ }
+
+ if(!rc)
+ break;
+
+ }
+
+ /* Restore error handling */
+ raptor_world_internal_set_ignore_errors(rdf_parser->world, 0);
+
+ if(!grddl_parser->html_ctxt && !grddl_parser->xml_ctxt) {
+ raptor_parser_error(rdf_parser, "Failed to create HTML or XML parsers");
+ ret = 1;
+ goto tidy;
+ }
+
+ raptor_grddl_done_uri(grddl_parser, rdf_parser->base_uri);
+
+ if(grddl_parser->html_ctxt)
+ doc = grddl_parser->html_ctxt->myDoc;
+ else
+ doc = grddl_parser->xml_ctxt->myDoc;
+ if(!doc) {
+ raptor_parser_error(rdf_parser,
+ "Failed to create XML DOM for GRDDL document");
+ ret = 1;
+ goto tidy;
+ }
+
+ if(!grddl_parser->grddl_processing)
+ goto transform;
+
+
+ if(grddl_parser->xinclude_processing) {
+ RAPTOR_DEBUG3("Parser %p: Running XInclude processing on URI '%s'\n",
+ rdf_parser, raptor_uri_as_string(rdf_parser->base_uri));
+ if(xmlXIncludeProcess(doc) < 0) {
+ raptor_parser_error(rdf_parser,
+ "XInclude processing failed for GRDDL document");
+ ret = 1;
+ goto tidy;
+ } else {
+ int blen;
+
+ /* write the result of XML Include to buffer */
+ RAPTOR_FREE(char*, buffer);
+ xmlDocDumpFormatMemory(doc, (xmlChar**)&buffer, &blen,
+ 1 /* indent the result */);
+ buffer_len = blen;
+ buffer_is_libxml = 1;
+
+ RAPTOR_DEBUG3("Parser %p: XML Include processing returned %d bytes document\n",
+ rdf_parser, (int)buffer_len);
+ }
+ }
+
+
+ RAPTOR_DEBUG3("Parser %p: Running top-level GRDDL on URI '%s'\n",
+ rdf_parser, raptor_uri_as_string(rdf_parser->base_uri));
+
+ /* Work out if there is a root namespace URI */
+ if(1) {
+ xmlNodePtr xnp;
+ xmlNsPtr rootNs = NULL;
+ const unsigned char* ns_uri_string = NULL;
+
+ xnp = xmlDocGetRootElement(doc);
+ if(xnp) {
+ rootNs = xnp->ns;
+ if(rootNs)
+ ns_uri_string = (const unsigned char*)(rootNs->href);
+ }
+
+ if(ns_uri_string) {
+ int n;
+
+ RAPTOR_DEBUG3("Parser %p: Root namespace URI is %s\n",
+ rdf_parser, ns_uri_string);
+
+ if(!strcmp((const char*)ns_uri_string,
+ (const char*)raptor_rdf_namespace_uri) &&
+ !strcmp((const char*)xnp->name, "RDF")) {
+ RAPTOR_DEBUG3("Parser %p: Root element of %s is rdf:RDF - process this as RDF/XML later\n",
+ rdf_parser, raptor_uri_as_string(rdf_parser->base_uri));
+ grddl_parser->process_this_as_rdfxml = 1;
+ }
+
+ for(n = 0; grddl_namespace_uris_ignore_list[n]; n++) {
+ if(!strcmp(grddl_namespace_uris_ignore_list[n],
+ (const char*)ns_uri_string)) {
+ /* ignore this namespace */
+ RAPTOR_DEBUG3("Parser %p: Ignoring GRDDL for namespace URI '%s'\n",
+ rdf_parser, ns_uri_string);
+ ns_uri_string = NULL;
+ break;
+ }
+ }
+ if(ns_uri_string) {
+ grddl_xml_context* xml_context;
+
+ grddl_parser->root_ns_uri = raptor_new_uri_relative_to_base(rdf_parser->world,
+ rdf_parser->base_uri,
+ ns_uri_string);
+ xml_context = raptor_new_xml_context(rdf_parser->world,
+ grddl_parser->root_ns_uri,
+ rdf_parser->base_uri);
+ raptor_sequence_push(grddl_parser->profile_uris, xml_context);
+
+ RAPTOR_DEBUG3("Parser %p: Processing GRDDL namespace URI '%s'\n",
+ rdf_parser,
+ raptor_uri_as_string(grddl_parser->root_ns_uri));
+ raptor_grddl_run_recursive(rdf_parser, grddl_parser->root_ns_uri,
+ "grddl",
+ RECURSIVE_FLAGS_IGNORE_ERRORS |
+ RECURSIVE_FLAGS_FILTER);
+ }
+
+ }
+ }
+
+ /* Always put something at the start of the list even if NULL
+ * so later it can be searched for in output triples
+ */
+ if(!grddl_parser->root_ns_uri) {
+ grddl_xml_context* xml_context;
+ xml_context = raptor_new_xml_context(rdf_parser->world, NULL, NULL);
+ raptor_sequence_push(grddl_parser->profile_uris, xml_context);
+ }
+
+
+ /* Create the XPath evaluation context */
+ if(!grddl_parser->xpathCtx) {
+ grddl_parser->xpathCtx = xmlXPathNewContext(doc);
+ if(!grddl_parser->xpathCtx) {
+ raptor_parser_error(rdf_parser,
+ "Failed to create XPath context for GRDDL document");
+ ret = 1;
+ goto tidy;
+ }
+
+ xmlXPathRegisterNs(grddl_parser->xpathCtx,
+ (const xmlChar*)"html",
+ (const xmlChar*)"http://www.w3.org/1999/xhtml");
+ xmlXPathRegisterNs(grddl_parser->xpathCtx,
+ (const xmlChar*)"dataview",
+ (const xmlChar*)"http://www.w3.org/2003/g/data-view#");
+ }
+
+ /* Try <head profile> URIs */
+ if(1) {
+ raptor_sequence* result;
+ result = raptor_grddl_run_xpath_match(rdf_parser, doc,
+ (const xmlChar*)"/html:html/html:head/@profile",
+ MATCH_IS_VALUE_LIST | MATCH_IS_PROFILE);
+ if(result) {
+ int size;
+
+ RAPTOR_DEBUG4("Parser %p: Found %d <head profile> URIs in URI '%s'\n",
+ rdf_parser, raptor_sequence_size(result),
+ raptor_uri_as_string(rdf_parser->base_uri));
+
+
+ /* Store profile URIs, skipping NULLs or the GRDDL profile itself */
+ while(raptor_sequence_size(result)) {
+ grddl_xml_context* xml_context;
+
+ xml_context = (grddl_xml_context*)raptor_sequence_unshift(result);
+ if(!xml_context)
+ continue;
+ uri = xml_context->uri;
+ if(!strcmp("http://www.w3.org/2003/g/data-view",
+ (const char*)raptor_uri_as_string(uri))) {
+ RAPTOR_DEBUG3("Ignoring <head profile> of URI %s: URI %s\n",
+ raptor_uri_as_string(rdf_parser->base_uri),
+ raptor_uri_as_string(uri));
+ grddl_free_xml_context(rdf_parser->world, xml_context);
+ continue;
+ }
+ raptor_sequence_push(grddl_parser->profile_uris, xml_context);
+ }
+ raptor_free_sequence(result);
+
+
+ /* Recursive GRDDL through all the <head profile> URIs */
+ size = raptor_sequence_size(grddl_parser->profile_uris);
+ for(i = 1; i < size; i++) {
+ grddl_xml_context* xml_context;
+
+ xml_context = (grddl_xml_context*)raptor_sequence_get_at(grddl_parser->profile_uris, i);
+ uri = xml_context->uri;
+ if(!uri)
+ continue;
+
+ RAPTOR_DEBUG4("Processing <head profile> #%d of URI %s: URI %s\n",
+ i, raptor_uri_as_string(rdf_parser->base_uri),
+ raptor_uri_as_string(uri));
+ ret = raptor_grddl_run_recursive(rdf_parser, uri,
+ "grddl",
+ RECURSIVE_FLAGS_IGNORE_ERRORS|
+ RECURSIVE_FLAGS_FILTER);
+ }
+ }
+
+ } /* end head profile URIs */
+
+
+ /* Try XHTML document with alternate forms
+ * <link type="application/rdf+xml" href="URI" />
+ * Value of @href is a URI
+ */
+ if(grddl_parser->html_link_processing &&
+ RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_HTML_LINK)) {
+ raptor_sequence* result;
+ result = raptor_grddl_run_xpath_match(rdf_parser, doc,
+ (const xmlChar*)"/html:html/html:head/html:link[@type=\"application/rdf+xml\"]/@href",
+ 0);
+ if(result) {
+ RAPTOR_DEBUG4("Parser %p: Found %d <link> URIs in URI '%s'\n",
+ rdf_parser, raptor_sequence_size(result),
+ raptor_uri_as_string(rdf_parser->base_uri));
+
+ /* Recursively parse all the <link> URIs, skipping NULLs */
+ i = 0;
+ while(raptor_sequence_size(result)) {
+ grddl_xml_context* xml_context;
+
+ xml_context = (grddl_xml_context*)raptor_sequence_unshift(result);
+ if(!xml_context)
+ continue;
+
+ uri = xml_context->uri;
+ if(uri) {
+ RAPTOR_DEBUG4("Processing <link> #%d of URI %s: URI %s\n",
+ i, raptor_uri_as_string(rdf_parser->base_uri),
+ raptor_uri_as_string(uri));
+ i++;
+ ret = raptor_grddl_run_recursive(rdf_parser, uri, "guess",
+ RECURSIVE_FLAGS_IGNORE_ERRORS);
+ }
+ grddl_free_xml_context(rdf_parser->world, xml_context);
+ }
+
+ raptor_free_sequence(result);
+ }
+ }
+
+
+ /* Try all XPaths */
+ for(expri = 0; match_table[expri].xpath; expri++) {
+ raptor_sequence* result;
+ int flags = match_table[expri].flags;
+
+ if((flags & MATCH_IS_HARDCODED) &&
+ !RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_MICROFORMATS))
+ continue;
+
+ result = raptor_grddl_run_xpath_match(rdf_parser, doc,
+ match_table[expri].xpath, flags);
+ if(result) {
+ if(match_table[expri].xslt_sheet_uri) {
+ grddl_xml_context* xml_context;
+
+ /* Ignore what matched, use a hardcoded XSLT URI */
+ uri_string = match_table[expri].xslt_sheet_uri;
+ RAPTOR_DEBUG3("Parser %p: Using hard-coded XSLT URI '%s'\n",
+ rdf_parser, uri_string);
+
+ raptor_free_sequence(result);
+ result = raptor_new_sequence((raptor_data_free_handler)grddl_free_xml_context, NULL);
+
+ uri = raptor_new_uri_relative_to_base(rdf_parser->world,
+ rdf_parser->base_uri, uri_string);
+
+ xml_context = raptor_new_xml_context(rdf_parser->world, uri,
+ rdf_parser->base_uri);
+ raptor_sequence_push(result, xml_context);
+
+ raptor_free_uri(uri);
+ }
+
+ while(raptor_sequence_size(result)) {
+ grddl_xml_context* xml_context;
+
+ xml_context = (grddl_xml_context*)raptor_sequence_unshift(result);
+ if(!xml_context)
+ break;
+
+ raptor_grddl_add_transform_xml_context(grddl_parser, xml_context);
+ }
+ raptor_free_sequence(result);
+
+ if(flags & MATCH_LAST)
+ break;
+ }
+
+
+ if(rdf_parser->failed)
+ break;
+
+ } /* end XPath expression loop */
+
+ if(rdf_parser->failed) {
+ ret = 1;
+ goto tidy;
+ }
+
+
+ /* Process this document's content buffer as RDF/XML */
+ if(grddl_parser->process_this_as_rdfxml && buffer) {
+ RAPTOR_DEBUG3("Parser %p: Running additional RDF/XML parse on root document URI '%s' content\n",
+ rdf_parser, raptor_uri_as_string(rdf_parser->base_uri));
+
+ if(raptor_grddl_ensure_internal_parser(rdf_parser, "rdfxml", 0))
+ ret = 1;
+ else {
+ if(raptor_parser_parse_start(grddl_parser->internal_parser,
+ rdf_parser->base_uri))
+ ret = 1;
+ else {
+ ret = raptor_parser_parse_chunk(grddl_parser->internal_parser, buffer,
+ buffer_len, 1);
+ }
+ }
+
+ }
+
+
+ /* Apply all transformation URIs seen */
+ transform:
+ while(raptor_sequence_size(grddl_parser->doc_transform_uris)) {
+ grddl_xml_context* xml_context;
+
+ xml_context = (grddl_xml_context*)raptor_sequence_unshift(grddl_parser->doc_transform_uris);
+ ret = raptor_grddl_run_grddl_transform_uri(rdf_parser, xml_context, doc);
+ grddl_free_xml_context(rdf_parser->world, xml_context);
+ if(ret)
+ break;
+ }
+
+ if(rdf_parser->emitted_default_graph) {
+ /* May or may not have generated statements but we must close the
+ * start default graph mark above
+ */
+ raptor_parser_end_graph(rdf_parser, NULL, 0);
+ rdf_parser->emitted_default_graph--;
+ }
+
+
+ tidy:
+ if(buffer) {
+ if(buffer_is_libxml)
+ xmlFree((xmlChar*)buffer);
+ else
+ RAPTOR_FREE(char*, buffer);
+ }
+
+ if(grddl_parser->sb) {
+ raptor_free_stringbuffer(grddl_parser->sb);
+ grddl_parser->sb = NULL;
+ }
+
+ if(grddl_parser->xml_ctxt) {
+ if(grddl_parser->xml_ctxt->myDoc) {
+ xmlFreeDoc(grddl_parser->xml_ctxt->myDoc);
+ grddl_parser->xml_ctxt->myDoc = NULL;
+ }
+ xmlFreeParserCtxt(grddl_parser->xml_ctxt);
+ grddl_parser->xml_ctxt = NULL;
+ }
+ if(grddl_parser->html_ctxt) {
+ if(grddl_parser->html_ctxt->myDoc) {
+ xmlFreeDoc(grddl_parser->html_ctxt->myDoc);
+ grddl_parser->html_ctxt->myDoc = NULL;
+ }
+ xmlFreeParserCtxt(grddl_parser->html_ctxt);
+ grddl_parser->html_ctxt = NULL;
+ }
+
+ if(grddl_parser->xpathCtx) {
+ xmlXPathFreeContext(grddl_parser->xpathCtx);
+ grddl_parser->xpathCtx = NULL;
+ }
+
+ return (ret != 0);
+}
+
+
+static int
+raptor_grddl_parse_recognise_syntax(raptor_parser_factory* factory,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier,
+ const unsigned char *suffix,
+ const char *mime_type)
+{
+ int score = 0;
+
+ if(suffix) {
+ if(!strcmp((const char*)suffix, "xhtml"))
+ score = 4;
+ if(!strcmp((const char*)suffix, "html"))
+ score = 2;
+ } else if(identifier) {
+ if(strstr((const char*)identifier, "xhtml"))
+ score = 4;
+ }
+
+ return score;
+}
+
+
+static void
+raptor_grddl_parse_content_type_handler(raptor_parser* rdf_parser,
+ const char* content_type)
+{
+ raptor_grddl_parser_context* grddl_parser;
+
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ if(content_type) {
+ size_t len = strlen(content_type) + 1;
+ if(grddl_parser->content_type)
+ RAPTOR_FREE(char*, grddl_parser->content_type);
+
+ grddl_parser->content_type = RAPTOR_MALLOC(char*, len + 1);
+ memcpy(grddl_parser->content_type, content_type, len + 1);
+ }
+}
+
+
+
+static const char* const grddl_names[2] = { "grddl", NULL };
+
+#define GRDDL_TYPES_COUNT 2
+static const raptor_type_q grddl_types[GRDDL_TYPES_COUNT + 1] = {
+ { "text/html", 9, 2},
+ { "application/xhtml+xml", 21, 4},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_grddl_parser_register_factory(raptor_parser_factory *factory)
+{
+ int rc = 0;
+
+ factory->desc.names = grddl_names;
+
+ factory->desc.mime_types = grddl_types;
+
+ factory->desc.label = "Gleaning Resource Descriptions from Dialects of Languages";
+ factory->desc.uri_strings = NULL;
+
+ factory->desc.flags = RAPTOR_SYNTAX_NEED_BASE_URI;
+
+ factory->context_length = sizeof(raptor_grddl_parser_context);
+
+ factory->init = raptor_grddl_parse_init;
+ factory->terminate = raptor_grddl_parse_terminate;
+ factory->start = raptor_grddl_parse_start;
+ factory->chunk = raptor_grddl_parse_chunk;
+ factory->recognise_syntax = raptor_grddl_parse_recognise_syntax;
+ factory->content_type_handler= raptor_grddl_parse_content_type_handler;
+
+ return rc;
+}
+
+
+int
+raptor_init_parser_grddl_common(raptor_world* world)
+{
+#ifdef HAVE_XSLTINIT
+ xsltInit();
+#endif
+
+ if(!world->xslt_security_preferences &&
+ !world->xslt_security_preferences_policy) {
+ xsltSecurityPrefsPtr raptor_xslt_sec = NULL;
+
+ raptor_xslt_sec = xsltNewSecurityPrefs();
+
+ /* no read from file (read from URI with scheme = file) */
+ xsltSetSecurityPrefs(raptor_xslt_sec, XSLT_SECPREF_READ_FILE,
+ xsltSecurityForbid);
+
+ /* no create/write to file */
+ xsltSetSecurityPrefs(raptor_xslt_sec, XSLT_SECPREF_WRITE_FILE,
+ xsltSecurityForbid);
+
+ /* no create directory */
+ xsltSetSecurityPrefs(raptor_xslt_sec, XSLT_SECPREF_CREATE_DIRECTORY,
+ xsltSecurityForbid);
+
+ /* yes read from URI with scheme != file (XSLT_SECPREF_READ_NETWORK) */
+
+ /* no write to network (you can 'write' with GET params anyway) */
+ xsltSetSecurityPrefs(raptor_xslt_sec, XSLT_SECPREF_WRITE_NETWORK,
+ xsltSecurityForbid);
+
+ world->xslt_security_preferences = (void*)raptor_xslt_sec;
+ }
+
+ return 0;
+}
+
+
+int
+raptor_init_parser_grddl(raptor_world* world)
+{
+ return !raptor_world_register_parser_factory(world,
+ &raptor_grddl_parser_register_factory);
+}
+
+
+void
+raptor_terminate_parser_grddl_common(raptor_world *world)
+{
+ if(world->xslt_security_preferences &&
+ !world->xslt_security_preferences_policy) {
+
+ /* Free the security preferences object owned by raptor world */
+ xsltFreeSecurityPrefs((xsltSecurityPrefsPtr)world->xslt_security_preferences);
+ world->xslt_security_preferences = NULL;
+ }
+
+ xsltCleanupGlobals();
+}
+
+
+
+/*
+ * Save libxslt global state that needs overwriting.
+ *
+ * Initialise the global state with raptor GRDDL parser values.
+ *
+ * Restored by raptor_libxslt_reset_global_state()
+ */
+static void
+raptor_libxslt_set_global_state(raptor_parser *rdf_parser)
+{
+ raptor_grddl_parser_context* grddl_parser;
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ /* save global (libxslt-wide) generic error handler */
+ grddl_parser->saved_xsltGenericError = xsltGenericError;
+ grddl_parser->saved_xsltGenericErrorContext = xsltGenericErrorContext;
+
+ /* set global (libxslt-wide) generic error handler to raptor GRDDL parser */
+ xsltSetGenericErrorFunc(rdf_parser,
+ raptor_grddl_xsltGenericError_handler);
+
+ /* save global (libxslt-wide) default security prefs */
+ grddl_parser->saved_xsltSecurityPrefs = xsltGetDefaultSecurityPrefs();
+
+ if(grddl_parser->world->xslt_security_preferences &&
+ !grddl_parser->world->xslt_security_preferences_policy) {
+ /* set global (libxslt-wide) security preferences to raptor */
+ xsltSetDefaultSecurityPrefs((xsltSecurityPrefs*)grddl_parser->world->xslt_security_preferences);
+ }
+}
+
+
+/*
+ * Restore libxslt global state that raptor_libxslt_set_global_state()
+ * overwrote back to the original values.
+ *
+ */
+static void
+raptor_libxslt_reset_global_state(raptor_parser* rdf_parser)
+{
+ raptor_grddl_parser_context* grddl_parser;
+ grddl_parser = (raptor_grddl_parser_context*)rdf_parser->context;
+
+ /* restore global (libxslt-wide) default security prefs */
+ xsltSetDefaultSecurityPrefs(grddl_parser->saved_xsltSecurityPrefs);
+
+ /* restore global (libxslt-wide) generic error handler */
+ xsltSetGenericErrorFunc(grddl_parser->saved_xsltGenericErrorContext,
+ grddl_parser->saved_xsltGenericError);
+}
+
diff --git a/src/raptor_guess.c b/src/raptor_guess.c
new file mode 100644
index 0000000..07cf8c0
--- /dev/null
+++ b/src/raptor_guess.c
@@ -0,0 +1,267 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_guess.c - Raptor guessing real parser implementation
+ *
+ * Copyright (C) 2005-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/*
+ * guess parser object
+ */
+struct raptor_guess_parser_context_s {
+ /* content type got from URI request */
+ char* content_type;
+
+ /* URI from start_parse */
+ raptor_uri* uri;
+
+ /* Non-0 when we need to guess */
+ int do_guess;
+
+ /* Actual parser to use */
+ raptor_parser* parser;
+};
+
+
+typedef struct raptor_guess_parser_context_s raptor_guess_parser_context;
+
+
+static int
+raptor_guess_parse_init(raptor_parser* rdf_parser, const char *name)
+{
+ raptor_guess_parser_context *guess_parser = (raptor_guess_parser_context*)rdf_parser->context;
+ guess_parser->content_type = NULL;
+
+ guess_parser->do_guess = 1;
+
+ return 0;
+}
+
+
+static void
+raptor_guess_parse_terminate(raptor_parser *rdf_parser)
+{
+ raptor_guess_parser_context *guess_parser = (raptor_guess_parser_context*)rdf_parser->context;
+
+ if(guess_parser->content_type)
+ RAPTOR_FREE(char*, guess_parser->content_type);
+
+ if(guess_parser->parser)
+ raptor_free_parser(guess_parser->parser);
+}
+
+
+static void
+raptor_guess_parse_content_type_handler(raptor_parser* rdf_parser,
+ const char* content_type)
+{
+ raptor_guess_parser_context* guess_parser = (raptor_guess_parser_context*)rdf_parser->context;
+
+ if(content_type) {
+ const char *p;
+ size_t len;
+
+ if((p = strchr(content_type,';')))
+ len = p-content_type;
+ else
+ len = strlen(content_type);
+
+ guess_parser->content_type = RAPTOR_MALLOC(char*, len + 1);
+ memcpy(guess_parser->content_type, content_type, len);
+ guess_parser->content_type[len]='\0';
+
+ RAPTOR_DEBUG2("Got content type '%s'\n", guess_parser->content_type);
+ }
+}
+
+
+static int
+raptor_guess_parse_chunk(raptor_parser* rdf_parser,
+ const unsigned char *buffer, size_t len,
+ int is_end)
+{
+ raptor_guess_parser_context* guess_parser = (raptor_guess_parser_context*)rdf_parser->context;
+
+ if(guess_parser->do_guess) {
+ const unsigned char *identifier = NULL;
+ const char *name;
+
+ guess_parser->do_guess = 0;
+
+ if(rdf_parser->base_uri)
+ identifier = raptor_uri_as_string(rdf_parser->base_uri);
+
+ name = raptor_world_guess_parser_name(rdf_parser->world,
+ NULL, guess_parser->content_type,
+ buffer, len, identifier);
+ if(!name) {
+ raptor_parser_error(rdf_parser,
+ "Failed to guess parser from content type '%s'",
+ guess_parser->content_type ?
+ guess_parser->content_type : "(none)");
+ raptor_parser_parse_abort(rdf_parser);
+ if(guess_parser->parser) {
+ raptor_free_parser(guess_parser->parser);
+ guess_parser->parser = NULL;
+ }
+ return 1;
+ } else {
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("Guessed parser name '%s'\n", name);
+#endif
+
+ /* If there is an existing guessed parser factory present and
+ * it's different from the wanted parser, free it
+ */
+ if(guess_parser->parser) {
+ raptor_parser_factory* factory = raptor_world_get_parser_factory(rdf_parser->world, name);
+
+ if(guess_parser->parser->factory != factory) {
+ raptor_free_parser(guess_parser->parser);
+ guess_parser->parser = NULL;
+ }
+ }
+
+ if(!guess_parser->parser) {
+ guess_parser->parser = raptor_new_parser(rdf_parser->world, name);
+ if(!guess_parser->parser)
+ return 1;
+ }
+
+ /* copy any user data to the grddl parser */
+ if(raptor_parser_copy_user_state(guess_parser->parser, rdf_parser))
+ return 1;
+
+ if(raptor_parser_parse_start(guess_parser->parser, rdf_parser->base_uri))
+ return 1;
+ }
+ }
+
+
+ /* now we can pass on calls to internal guess_parser */
+ return raptor_parser_parse_chunk(guess_parser->parser, buffer, len, is_end);
+}
+
+
+static const char*
+raptor_guess_accept_header(raptor_parser* rdf_parser)
+{
+ return raptor_parser_get_accept_header_all(rdf_parser->world);
+}
+
+
+static const char*
+raptor_guess_guess_get_name(raptor_parser* rdf_parser)
+{
+ raptor_guess_parser_context *guess_parser;
+ guess_parser = (raptor_guess_parser_context*)rdf_parser->context;
+
+ if(guess_parser)
+ return raptor_parser_get_name(guess_parser->parser);
+ else
+ return rdf_parser->factory->desc.names[0];
+}
+
+
+static const raptor_syntax_description*
+raptor_guess_guess_get_description(raptor_parser* rdf_parser)
+{
+ raptor_guess_parser_context *guess_parser;
+ guess_parser = (raptor_guess_parser_context*)rdf_parser->context;
+
+ if(guess_parser && guess_parser->parser)
+ return raptor_parser_get_description(guess_parser->parser);
+ else
+ return &rdf_parser->factory->desc;
+}
+
+
+static raptor_locator *
+raptor_guess_guess_get_locator(raptor_parser *rdf_parser)
+{
+ raptor_guess_parser_context *guess_parser;
+ guess_parser = (raptor_guess_parser_context*)rdf_parser->context;
+
+ if(guess_parser && guess_parser->parser)
+ return raptor_parser_get_locator(guess_parser->parser);
+ else
+ return &rdf_parser->locator;
+}
+
+
+static const char* const guess_names[2] = { "guess", NULL };
+
+static int
+raptor_guess_parser_register_factory(raptor_parser_factory *factory)
+{
+ factory->desc.names = guess_names;
+
+ factory->desc.mime_types = NULL;
+
+ factory->desc.label = "Pick the parser to use using content type and URI";
+ factory->desc.uri_strings = NULL;
+
+ factory->desc.flags = RAPTOR_SYNTAX_NEED_BASE_URI;
+
+ factory->context_length = sizeof(raptor_guess_parser_context);
+
+ factory->init = raptor_guess_parse_init;
+ factory->terminate = raptor_guess_parse_terminate;
+ factory->chunk = raptor_guess_parse_chunk;
+ factory->content_type_handler = raptor_guess_parse_content_type_handler;
+ factory->accept_header = raptor_guess_accept_header;
+ factory->get_name = raptor_guess_guess_get_name;
+ factory->get_description = raptor_guess_guess_get_description;
+ factory->get_locator = raptor_guess_guess_get_locator;
+
+ return 0;
+}
+
+
+int
+raptor_init_parser_guess(raptor_world* world)
+{
+ return !raptor_world_register_parser_factory(world,
+ &raptor_guess_parser_register_factory);
+}
diff --git a/src/raptor_internal.h b/src/raptor_internal.h
new file mode 100644
index 0000000..5920150
--- /dev/null
+++ b/src/raptor_internal.h
@@ -0,0 +1,1444 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_internal.h - Redland Parser Toolkit for RDF (Raptor) internals
+ *
+ * Copyright (C) 2002-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2002-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+
+#ifndef RAPTOR_INTERNAL_H
+#define RAPTOR_INTERNAL_H
+
+#ifdef __cplusplus
+extern "C" {
+#define RAPTOR_EXTERN_C extern "C"
+#else
+#define RAPTOR_EXTERN_C
+#endif
+
+#ifdef RAPTOR_INTERNAL
+
+/* for the memory allocation functions */
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#undef HAVE_STDLIB_H
+#endif
+
+/* Can be over-ridden or undefined in a config.h file or -Ddefine */
+#ifndef RAPTOR_INLINE
+#define RAPTOR_INLINE inline
+#endif
+
+#ifdef LIBRDF_DEBUG
+#define RAPTOR_DEBUG 1
+#endif
+
+#if defined(RAPTOR_MEMORY_SIGN)
+#define RAPTOR_SIGN_KEY 0x08A61080
+void* raptor_sign_malloc(size_t size);
+void* raptor_sign_calloc(size_t nmemb, size_t size);
+void* raptor_sign_realloc(void *ptr, size_t size);
+void raptor_sign_free(void *ptr);
+
+#define RAPTOR_MALLOC(type, size) (type)raptor_sign_malloc(size)
+#define RAPTOR_CALLOC(type, nmemb, size) (type)raptor_sign_calloc(nmemb, size)
+#define RAPTOR_REALLOC(type, ptr, size) (type)raptor_sign_realloc(ptr, size)
+#define RAPTOR_FREE(type, ptr) raptor_sign_free((void*)ptr)
+
+#else
+#define RAPTOR_MALLOC(type, size) (type)malloc(size)
+#define RAPTOR_CALLOC(type, nmemb, size) (type)calloc(nmemb, size)
+#define RAPTOR_REALLOC(type, ptr, size) (type)realloc(ptr, size)
+#define RAPTOR_FREE(type, ptr) free((void*)ptr)
+
+#endif
+
+#ifdef RAPTOR_DEBUG
+/* Debugging messages */
+#define RAPTOR_DEBUG1(msg) do {fprintf(stderr, "%s:%d:%s: " msg, __FILE__, __LINE__, __func__); } while(0)
+#define RAPTOR_DEBUG2(msg, arg1) do {fprintf(stderr, "%s:%d:%s: " msg, __FILE__, __LINE__, __func__, arg1);} while(0)
+#define RAPTOR_DEBUG3(msg, arg1, arg2) do {fprintf(stderr, "%s:%d:%s: " msg, __FILE__, __LINE__, __func__, arg1, arg2);} while(0)
+#define RAPTOR_DEBUG4(msg, arg1, arg2, arg3) do {fprintf(stderr, "%s:%d:%s: " msg, __FILE__, __LINE__, __func__, arg1, arg2, arg3);} while(0)
+#define RAPTOR_DEBUG5(msg, arg1, arg2, arg3, arg4) do {fprintf(stderr, "%s:%d:%s: " msg, __FILE__, __LINE__, __func__, arg1, arg2, arg3, arg4);} while(0)
+#define RAPTOR_DEBUG6(msg, arg1, arg2, arg3, arg4, arg5) do {fprintf(stderr, "%s:%d:%s: " msg, __FILE__, __LINE__, __func__, arg1, arg2, arg3, arg4, arg5);} while(0)
+
+#ifndef RAPTOR_ASSERT_DIE
+#define RAPTOR_ASSERT_DIE abort();
+#endif
+
+#else
+/* DEBUGGING TURNED OFF */
+
+/* No debugging messages */
+#define RAPTOR_DEBUG1(msg)
+#define RAPTOR_DEBUG2(msg, arg1)
+#define RAPTOR_DEBUG3(msg, arg1, arg2)
+#define RAPTOR_DEBUG4(msg, arg1, arg2, arg3)
+#define RAPTOR_DEBUG5(msg, arg1, arg2, arg3, arg4)
+#define RAPTOR_DEBUG6(msg, arg1, arg2, arg3, arg4, arg5)
+
+#define SYSTEM_MALLOC(size) malloc(size)
+#define SYSTEM_FREE(ptr) free(ptr)
+
+#ifndef RAPTOR_ASSERT_DIE
+#define RAPTOR_ASSERT_DIE
+#endif
+
+#endif
+
+
+#ifdef RAPTOR_DISABLE_ASSERT_MESSAGES
+#define RAPTOR_ASSERT_REPORT(line)
+#else
+#define RAPTOR_ASSERT_REPORT(msg) fprintf(stderr, "%s:%d: (%s) assertion failed: " msg "\n", __FILE__, __LINE__, __func__);
+#endif
+
+
+#ifdef RAPTOR_DISABLE_ASSERT
+
+#define RAPTOR_ASSERT(condition, msg)
+#define RAPTOR_ASSERT_RETURN(condition, msg, ret)
+#define RAPTOR_ASSERT_OBJECT_POINTER_RETURN(pointer, type) do { \
+ if(!pointer) \
+ return; \
+} while(0)
+#define RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(pointer, type, ret)
+
+#else
+
+#define RAPTOR_ASSERT(condition, msg) do { \
+ if(condition) { \
+ RAPTOR_ASSERT_REPORT(msg) \
+ RAPTOR_ASSERT_DIE \
+ } \
+} while(0)
+
+#define RAPTOR_ASSERT_RETURN(condition, msg, ret) do { \
+ if(condition) { \
+ RAPTOR_ASSERT_REPORT(msg) \
+ RAPTOR_ASSERT_DIE \
+ return ret; \
+ } \
+} while(0)
+
+#define RAPTOR_ASSERT_OBJECT_POINTER_RETURN(pointer, type) do { \
+ if(!pointer) { \
+ RAPTOR_ASSERT_REPORT("object pointer of type " #type " is NULL.") \
+ RAPTOR_ASSERT_DIE \
+ return; \
+ } \
+} while(0)
+
+#define RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(pointer, type, ret) do { \
+ if(!pointer) { \
+ RAPTOR_ASSERT_REPORT("object pointer of type " #type " is NULL.") \
+ RAPTOR_ASSERT_DIE \
+ return ret; \
+ } \
+} while(0)
+
+#endif
+
+
+/* Fatal errors - always happen */
+#define RAPTOR_FATAL1(msg) do {fprintf(stderr, "%s:%d:%s: fatal error: " msg, __FILE__, __LINE__ , __func__); abort();} while(0)
+#define RAPTOR_FATAL2(msg,arg) do {fprintf(stderr, "%s:%d:%s: fatal error: " msg, __FILE__, __LINE__ , __func__, arg); abort();} while(0)
+#define RAPTOR_FATAL3(msg,arg1,arg2) do {fprintf(stderr, "%s:%d:%s: fatal error: " msg, __FILE__, __LINE__ , __func__, arg1, arg2); abort();} while(0)
+
+#define MAX_ASCII_INT_SIZE 13
+
+/* XML parser includes */
+
+#ifdef RAPTOR_XML_LIBXML
+
+#include <libxml/parser.h>
+
+
+/* libxml-only prototypes */
+
+
+/* raptor_libxml.c exports */
+extern void raptor_libxml_sax_init(raptor_sax2* sax2);
+extern void raptor_libxml_generic_error(void* user_data, const char *msg, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+
+extern int raptor_libxml_init(raptor_world* world);
+extern void raptor_libxml_finish(raptor_world* world);
+
+extern void raptor_libxml_validation_error(void *context, const char *msg, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+extern void raptor_libxml_validation_warning(void *context, const char *msg, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+void raptor_libxml_free(xmlParserCtxtPtr xc);
+
+/* raptor_parse.c - exported to libxml part */
+extern void raptor_libxml_update_document_locator(raptor_sax2* sax2, raptor_locator* locator);
+
+/* end of libxml-only */
+#endif
+
+
+typedef struct raptor_parser_factory_s raptor_parser_factory;
+typedef struct raptor_serializer_factory_s raptor_serializer_factory;
+typedef struct raptor_id_set_s raptor_id_set;
+typedef struct raptor_uri_detail_s raptor_uri_detail;
+
+
+/* raptor_option.c */
+
+/* These are bits and may be bit-ORed */
+/**
+ * raptor_option_area:
+ * @RAPTOR_OPTION_AREA_NONE: internal
+ * @RAPTOR_OPTION_AREA_PARSER: #raptor_parser (public)
+ * @RAPTOR_OPTION_AREA_SERIALIZER: #raptor_serializer (public)
+ * @RAPTOR_OPTION_AREA_XML_WRITER: #raptor_xml_writer (public)
+ * @RAPTOR_OPTION_AREA_TURTLE_WRITER: #raptor_turtle_writer (internal)
+ * @RAPTOR_OPTION_AREA_SAX2: #raptor_sax2 (public)
+ *
+ * Internal - raptor option areas
+*/
+typedef enum {
+ RAPTOR_OPTION_AREA_NONE = 0,
+ RAPTOR_OPTION_AREA_PARSER = 1,
+ RAPTOR_OPTION_AREA_SERIALIZER = 2,
+ RAPTOR_OPTION_AREA_XML_WRITER = 4,
+ RAPTOR_OPTION_AREA_TURTLE_WRITER = 8,
+ RAPTOR_OPTION_AREA_SAX2 = 16
+} raptor_option_area;
+
+typedef union
+{
+ char* string;
+ int integer;
+} raptor_str_int;
+
+typedef struct
+{
+ raptor_option_area area;
+ raptor_str_int options[RAPTOR_OPTION_LAST+1];
+} raptor_object_options;
+
+
+#define RAPTOR_OPTIONS_GET_NUMERIC(object, option) \
+ ((object)->options.options[(int)option].integer)
+#define RAPTOR_OPTIONS_GET_STRING(object, option) \
+ ((object)->options.options[(int)option].string)
+
+#define RAPTOR_OPTIONS_SET_NUMERIC(object, option, value) do { \
+ (object)->options.options[(int)option].integer = value; \
+} while(0)
+#define RAPTOR_OPTIONS_SET_STRING(object, option, value) do { \
+ (object)->options.options[(int)option].string = value; \
+} while(0)
+
+int raptor_option_value_is_numeric(const raptor_option option);
+int raptor_option_is_valid_for_area(const raptor_option option, raptor_option_area area);
+
+void raptor_object_options_init(raptor_object_options* options, raptor_option_area area);
+void raptor_object_options_clear(raptor_object_options* options);
+int raptor_object_options_copy_state(raptor_object_options* to, raptor_object_options* from);
+int raptor_object_options_get_option(raptor_object_options *options, raptor_option option, char** string_p, int* integer_p);
+int raptor_object_options_set_option(raptor_object_options *options, raptor_option option, const char* string, int integer);
+
+
+
+
+/* raptor_concepts.c */
+
+/*
+ * raptor_rdf_ns_term_id:
+ *
+ * RDF namespace syntax terms, properties and classes.
+ *
+ * The order must match names in the raptor_rdf_ns_terms_info table
+ *
+ */
+typedef enum {
+ /* These terms are used only in the RDF/XML syntax; never in RDF graph */
+ RDF_NS_RDF = 0,
+ RDF_NS_Description = 1,
+ RDF_NS_li = 2,
+ RDF_NS_about = 3,
+ RDF_NS_aboutEach = 4,
+ RDF_NS_aboutEachPrefix = 5,
+ RDF_NS_ID = 6,
+ RDF_NS_bagID = 7,
+ RDF_NS_resource = 8,
+ RDF_NS_parseType = 9,
+ RDF_NS_nodeID = 10,
+ RDF_NS_datatype = 11,
+ /* These terms are all properties in RDF model (of type rdf:Property) */
+ RDF_NS_type = 12,
+ RDF_NS_value = 13,
+ RDF_NS_subject = 14,
+ RDF_NS_predicate = 15,
+ RDF_NS_object = 16,
+ RDF_NS_first = 17,
+ RDF_NS_rest = 18,
+ /* These terms are all classes in the RDF model (of type rdfs:Class) */
+ RDF_NS_Seq = 19,
+ RDF_NS_Bag = 20,
+ RDF_NS_Alt = 21,
+ RDF_NS_Statement = 22,
+ RDF_NS_Property = 23,
+ RDF_NS_List = 24,
+ /* These terms are all resources in the RDF model (of type rdfs:Resource) */
+ RDF_NS_nil = 25,
+
+ /* These terms are datatypes (used as a literal datatype URI) */
+ RDF_NS_XMLLiteral = 26,
+ RDF_NS_PlainLiteral = 27, /* http://www.w3.org/TR/rdf-text/ */
+
+ /* These terms are internal */
+ RDF_NS_LAST_SYNTAX_TERM = RDF_NS_datatype,
+
+ RDF_NS_LAST = RDF_NS_PlainLiteral
+} raptor_rdf_ns_term_id;
+
+
+typedef struct {
+ /* term name */
+ const char *name;
+
+ /* RDF/XML: the statement object type of this when used as an attribute */
+ raptor_term_type type;
+
+ /* RDF/XML: name restrictions */
+ unsigned int allowed_as_nodeElement : 1;
+ unsigned int allowed_as_propertyElement : 1;
+ unsigned int allowed_as_propertyAttribute : 1;
+ unsigned int allowed_unprefixed_on_attribute : 1;
+} raptor_rdf_ns_term_info;
+
+
+extern const raptor_rdf_ns_term_info raptor_rdf_ns_terms_info[(RDF_NS_LAST + 1) + 1];
+
+#define RAPTOR_RDF_RDF_URI(world) world->concepts[RDF_NS_RDF]
+#define RAPTOR_RDF_Description_URI(world) world->concepts[RDF_NS_Description]
+#define RAPTOR_RDF_li_URI(world) world->concepts[RDF_NS_li]
+#define RAPTOR_RDF_about(world) world->concepts[RDF_NS_about]
+#define RAPTOR_RDF_aboutEach(world) world->concepts[RDF_NS_aboutEach]
+#define RAPTOR_RDF_aboutEachPrefix(world) world->concepts[RDF_NS_aboutEachPrefix]
+#define RAPTOR_RDF_ID_URI(world) world->concepts[RDF_NS_ID]
+#define RAPTOR_RDF_bagID_URI(world) world->concepts[RDF_NS_bagID]
+#define RAPTOR_RDF_resource_URI(world) world->concepts[RDF_NS_resource]
+#define RAPTOR_RDF_parseType_URI(world) world->concepts[RDF_NS_parseType]
+#define RAPTOR_RDF_nodeID_URI(world) world->concepts[RDF_NS_nodeID]
+#define RAPTOR_RDF_datatype_URI(world) world->concepts[RDF_NS_datatype]
+
+#define RAPTOR_RDF_type_URI(world) world->concepts[RDF_NS_type]
+#define RAPTOR_RDF_value_URI(world) world->concepts[RDF_NS_value]
+#define RAPTOR_RDF_subject_URI(world) world->concepts[RDF_NS_subject]
+#define RAPTOR_RDF_predicate_URI(world) world->concepts[RDF_NS_predicate]
+#define RAPTOR_RDF_object_URI(world) world->concepts[RDF_NS_object]
+#define RAPTOR_RDF_first_URI(world) world->concepts[RDF_NS_first]
+#define RAPTOR_RDF_rest_URI(world) world->concepts[RDF_NS_rest]
+
+#define RAPTOR_RDF_Seq_URI(world) world->concepts[RDF_NS_Seq]
+#define RAPTOR_RDF_Bag_URI(world) world->concepts[RDF_NS_Bag]
+#define RAPTOR_RDF_Alt_URI(world) world->concepts[RDF_NS_Alt]
+#define RAPTOR_RDF_Statement_URI(world) world->concepts[RDF_NS_Statement]
+#define RAPTOR_RDF_Property_URI(world) world->concepts[RDF_NS_Property]
+#define RAPTOR_RDF_List_URI(world) world->concepts[RDF_NS_List]
+
+#define RAPTOR_RDF_nil_URI(world) world->concepts[RDF_NS_nil]
+#define RAPTOR_RDF_XMLLiteral_URI(world) world->concepts[RDF_NS_XMLLiteral]
+#define RAPTOR_RDF_PlainLiteral_URI(world) world->concepts[RDF_NS_PlainLiteral]
+
+
+/* syntax only (RDF:RDF ... RDF:datatype) are not provided as terms */
+
+#define RAPTOR_RDF_type_term(world) world->terms[RDF_NS_type]
+#define RAPTOR_RDF_value_term(world) world->terms[RDF_NS_value]
+#define RAPTOR_RDF_subject_term(world) world->terms[RDF_NS_subject]
+#define RAPTOR_RDF_predicate_term(world) world->terms[RDF_NS_predicate]
+#define RAPTOR_RDF_object_term(world) world->terms[RDF_NS_object]
+#define RAPTOR_RDF_first_term(world) world->terms[RDF_NS_first]
+#define RAPTOR_RDF_rest_term(world) world->terms[RDF_NS_rest]
+
+#define RAPTOR_RDF_Seq_term(world) world->terms[RDF_NS_Seq]
+#define RAPTOR_RDF_Bag_term(world) world->terms[RDF_NS_Bag]
+#define RAPTOR_RDF_Alt_term(world) world->terms[RDF_NS_Alt]
+#define RAPTOR_RDF_Statement_term(world) world->terms[RDF_NS_Statement]
+#define RAPTOR_RDF_Property_term(world) world->terms[RDF_NS_Property]
+#define RAPTOR_RDF_List_term(world) world->terms[RDF_NS_List]
+
+#define RAPTOR_RDF_nil_term(world) world->terms[RDF_NS_nil]
+#define RAPTOR_RDF_XMLLiteral_term(world) world->terms[RDF_NS_XMLLiteral]
+#define RAPTOR_RDF_PlainLiteral_term(world) world->terms[RDF_NS_PlainLiteral]
+
+
+int raptor_concepts_init(raptor_world* world);
+void raptor_concepts_finish(raptor_world* world);
+
+
+
+/* raptor_iostream.c */
+raptor_world* raptor_iostream_get_world(raptor_iostream *iostr);
+
+
+/* Raptor Namespace Stack node */
+struct raptor_namespace_stack_s {
+ raptor_world* world;
+ int size;
+
+ int table_size;
+ raptor_namespace** table;
+ raptor_namespace* def_namespace;
+
+ raptor_uri *rdf_ms_uri;
+ raptor_uri *rdf_schema_uri;
+};
+
+
+/* Forms:
+ * 1) prefix=NULL uri=<URI> - default namespace defined
+ * 2) prefix=NULL, uri=NULL - no default namespace
+ * 3) prefix=<prefix>, uri=<URI> - regular pair defined <prefix>:<URI>
+ */
+struct raptor_namespace_s {
+ /* next down the stack, NULL at bottom */
+ struct raptor_namespace_s* next;
+
+ raptor_namespace_stack *nstack;
+
+ /* NULL means is the default namespace */
+ const unsigned char *prefix;
+ /* needed to safely compare prefixed-names */
+ unsigned int prefix_length;
+ /* URI of namespace or NULL for default */
+ raptor_uri *uri;
+ /* parsing depth that this ns was added. It will
+ * be deleted when the parser leaves this depth
+ */
+ int depth;
+ /* Non 0 if is xml: prefixed name */
+ int is_xml;
+ /* Non 0 if is RDF M&S Namespace */
+ int is_rdf_ms;
+ /* Non 0 if is RDF Schema Namespace */
+ int is_rdf_schema;
+};
+
+raptor_namespace** raptor_namespace_stack_to_array(raptor_namespace_stack *nstack, size_t *size_p);
+
+#ifdef RAPTOR_XML_LIBXML
+#define RAPTOR_LIBXML_MAGIC 0x8AF108
+#endif
+
+
+/* Size of buffer to use when reading from a file */
+#ifdef BUFSIZ
+#define RAPTOR_READ_BUFFER_SIZE BUFSIZ
+#else
+#define RAPTOR_READ_BUFFER_SIZE 4096
+#endif
+
+
+/*
+ * Raptor parser object
+ */
+struct raptor_parser_s {
+ raptor_world* world;
+
+#ifdef RAPTOR_XML_LIBXML
+ int magic;
+#endif
+
+ /* can be filled with error location information */
+ raptor_locator locator;
+
+ /* non-0 if parser had fatal error and cannot continue */
+ int failed : 1;
+
+ /* non-0 to enable emitting graph marks (default set). Intended
+ * for use by GRDDL the parser on it's child parsers to prevent
+ * multiple start/end marks on the default graph.
+ */
+ int emit_graph_marks : 1;
+
+ /* non-0 if have emitted start default graph mark */
+ int emitted_default_graph : 1;
+
+ /* generated ID counter */
+ int genid;
+
+ /* base URI of RDF/XML */
+ raptor_uri *base_uri;
+
+ /* static statement for use in passing to user code */
+ raptor_statement statement;
+
+ /* Options (per-object) */
+ raptor_object_options options;
+
+ /* stuff for our user */
+ void *user_data;
+
+ /* parser callbacks */
+ raptor_statement_handler statement_handler;
+
+ raptor_graph_mark_handler graph_mark_handler;
+
+ void* uri_filter_user_data;
+ raptor_uri_filter_func uri_filter;
+
+ /* parser specific stuff */
+ void *context;
+
+ struct raptor_parser_factory_s* factory;
+
+ /* namespace callback */
+ raptor_namespace_handler namespace_handler;
+
+ void* namespace_handler_user_data;
+
+ raptor_stringbuffer* sb;
+
+ /* raptor_www pointer stored here to allow cleanup on error */
+ raptor_www* www;
+
+ /* internal data for lexers */
+ void* lexer_user_data;
+
+ /* internal read buffer */
+ unsigned char buffer[RAPTOR_READ_BUFFER_SIZE + 1];
+};
+
+
+/** A Parser Factory */
+struct raptor_parser_factory_s {
+ raptor_world* world;
+
+ struct raptor_parser_factory_s* next;
+
+ /* the rest of this structure is populated by the
+ parser-specific register function */
+
+ size_t context_length;
+
+ /* static desc that the parser registration initialises */
+ raptor_syntax_description desc;
+
+ /* create a new parser */
+ int (*init)(raptor_parser* parser, const char *name);
+
+ /* destroy a parser */
+ void (*terminate)(raptor_parser* parser);
+
+ /* start a parse */
+ int (*start)(raptor_parser* parser);
+
+ /* parse a chunk of memory */
+ int (*chunk)(raptor_parser* parser, const unsigned char *buffer, size_t len, int is_end);
+
+ /* finish the parser factory */
+ void (*finish_factory)(raptor_parser_factory* factory);
+
+ /* score recognition of the syntax by a block of characters, the
+ * content identifier or it's suffix or a mime type
+ * (different from the factory-registered one)
+ */
+ int (*recognise_syntax)(raptor_parser_factory* factory, const unsigned char *buffer, size_t len, const unsigned char *identifier, const unsigned char *suffix, const char *mime_type);
+
+ /* get the Content-Type value of a URI request */
+ void (*content_type_handler)(raptor_parser* rdf_parser, const char* content_type);
+
+ /* get the Accept header of a URI request (OPTIONAL) */
+ const char* (*accept_header)(raptor_parser* rdf_parser);
+
+ /* get the name (OPTIONAL) */
+ const char* (*get_name)(raptor_parser* rdf_parser);
+
+ /* get the description (OPTIONAL) */
+ const raptor_syntax_description* (*get_description)(raptor_parser* rdf_parser);
+
+ /* get the current graph (OPTIONAL) - if not implemented, the current graph is always the default (NULL) and start/end graph marks are synthesised */
+ raptor_uri* (*get_graph)(raptor_parser* rdf_parser);
+
+ /* get the locator (OPTIONAL) */
+ raptor_locator* (*get_locator)(raptor_parser* rdf_parser);
+};
+
+
+/*
+ * Raptor serializer object
+ */
+struct raptor_serializer_s {
+ raptor_world* world;
+
+ /* can be filled with error location information */
+ raptor_locator locator;
+
+ /* non 0 if serializer had fatal error and cannot continue */
+ int failed;
+
+ /* base URI of RDF/XML */
+ raptor_uri *base_uri;
+
+ /* serializer specific stuff */
+ void *context;
+
+ /* destination stream for the serialization */
+ raptor_iostream *iostream;
+
+ /* if true, iostream was made here so free it */
+ int free_iostream_on_end;
+
+ struct raptor_serializer_factory_s* factory;
+
+ /* Options (per-object) */
+ raptor_object_options options;
+};
+
+
+/** A Serializer Factory for a syntax */
+struct raptor_serializer_factory_s {
+ raptor_world* world;
+
+ struct raptor_serializer_factory_s* next;
+
+ /* the rest of this structure is populated by the
+ serializer-specific register function */
+ size_t context_length;
+
+ /* static desc that the parser registration initialises */
+ raptor_syntax_description desc;
+
+ /* create a new serializer */
+ int (*init)(raptor_serializer* serializer, const char *name);
+
+ /* destroy a serializer */
+ void (*terminate)(raptor_serializer* serializer);
+
+ /* add a namespace */
+ int (*declare_namespace)(raptor_serializer* serializer, raptor_uri *uri, const unsigned char *prefix);
+
+ /* start a serialization */
+ int (*serialize_start)(raptor_serializer* serializer);
+
+ /* serialize a statement */
+ int (*serialize_statement)(raptor_serializer* serializer, raptor_statement *statment);
+
+ /* end a serialization */
+ int (*serialize_end)(raptor_serializer* serializer);
+
+ /* finish the serializer factory */
+ void (*finish_factory)(raptor_serializer_factory* factory);
+
+ /* add a namespace using an existing namespace */
+ int (*declare_namespace_from_namespace)(raptor_serializer* serializer, raptor_namespace *nspace);
+
+ /* flush current serialization state */
+ int (*serialize_flush)(raptor_serializer* serializer);
+};
+
+
+/* for raptor_parser_parse_uri_write_bytes() when used as a handler for
+ * raptor_www_set_write_bytes_handler()
+ */
+typedef struct
+{
+ raptor_parser* rdf_parser;
+ raptor_uri* base_uri;
+ raptor_uri* final_uri;
+ int started;
+} raptor_parse_bytes_context;
+
+
+/* raptor_serialize.c */
+raptor_serializer_factory* raptor_serializer_register_factory(raptor_world* world, int (*factory) (raptor_serializer_factory*));
+
+
+/* raptor_general.c */
+
+raptor_parser_factory* raptor_world_register_parser_factory(raptor_world* world, int (*factory) (raptor_parser_factory*));
+int raptor_parser_factory_add_mime_type(raptor_parser_factory* factory, const char* mime_type, int q);
+
+unsigned char* raptor_world_internal_generate_id(raptor_world *world, unsigned char *user_bnodeid);
+
+#ifdef RAPTOR_DEBUG
+void raptor_stats_print(raptor_parser *rdf_parser, FILE *stream);
+#endif
+const char* raptor_basename(const char *name);
+int raptor_term_print_as_ntriples(const raptor_term *term, FILE* stream);
+
+/* raptor_parse.c */
+raptor_parser_factory* raptor_world_get_parser_factory(raptor_world* world, const char *name);
+void raptor_delete_parser_factories(void);
+const char* raptor_parser_get_accept_header_all(raptor_world* world);
+int raptor_parser_set_uri_filter_no_net(void *user_data, raptor_uri* uri);
+void raptor_parser_parse_uri_write_bytes(raptor_www* www, void *userdata, const void *ptr, size_t size, size_t nmemb);
+void raptor_parser_fatal_error(raptor_parser* parser, const char *message, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+void raptor_parser_error(raptor_parser* parser, const char *message, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+void raptor_parser_log_error_varargs(raptor_parser* parser, raptor_log_level level, const char *message, va_list arguments) RAPTOR_PRINTF_FORMAT(3, 0);
+void raptor_parser_warning(raptor_parser* parser, const char *message, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+
+/* logging */
+void raptor_world_internal_set_ignore_errors(raptor_world* world, int flag);
+void raptor_log_error_varargs(raptor_world* world, raptor_log_level level, raptor_locator* locator, const char* message, va_list arguments) RAPTOR_PRINTF_FORMAT(4, 0);
+void raptor_log_error_formatted(raptor_world* world, raptor_log_level level, raptor_locator* locator, const char* message, ...) RAPTOR_PRINTF_FORMAT(4, 5);
+void raptor_log_error(raptor_world* world, raptor_log_level level, raptor_locator* locator, const char* message);
+
+
+/* raptor_parse.c */
+
+typedef struct raptor_rdfxml_parser_s raptor_rdfxml_parser;
+
+/* Prototypes for common libxml parsing event-handling functions */
+extern void raptor_xml_start_element_handler(void *user_data, const unsigned char *name, const unsigned char **atts);
+extern void raptor_xml_end_element_handler(void *user_data, const unsigned char *name);
+/* s is not 0 terminated. */
+extern void raptor_xml_characters_handler(void *user_data, const unsigned char *s, int len);
+extern void raptor_xml_cdata_handler(void *user_data, const unsigned char *s, int len);
+void raptor_xml_comment_handler(void *user_data, const unsigned char *s);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+void raptor_rdfxml_parser_stats_print(raptor_rdfxml_parser* rdf_xml_parser, FILE *stream);
+#endif
+
+void raptor_parser_copy_flags_state(raptor_parser *to_parser, raptor_parser *from_parser);
+int raptor_parser_copy_user_state(raptor_parser *to_parser, raptor_parser *from_parser);
+
+/* raptor_general.c */
+extern int raptor_valid_xml_ID(raptor_parser *rdf_parser, const unsigned char *string);
+int raptor_check_ordinal(const unsigned char *name);
+
+/* raptor_locator.c */
+
+
+#ifdef HAVE_STRCASECMP
+#define raptor_strcasecmp strcasecmp
+#define raptor_strncasecmp strncasecmp
+#else
+#ifdef HAVE_STRICMP
+#define raptor_strcasecmp stricmp
+#define raptor_strncasecmp strnicmp
+#endif
+#endif
+
+
+/* raptor_nfc_icu.c */
+int raptor_nfc_icu_check (const unsigned char* string, size_t len, int *error);
+
+
+/* raptor_namespace.c */
+
+#ifdef RAPTOR_DEBUG
+void raptor_namespace_print(FILE *stream, raptor_namespace* ns);
+#endif
+
+void raptor_parser_start_namespace(raptor_parser* rdf_parser, raptor_namespace* nspace);
+
+
+/*
+ * Raptor XML-namespace qualified name (qname), for elements or attributes
+ *
+ * namespace is only defined when the XML name has a namespace and
+ * only then is uri also given.
+ */
+struct raptor_qname_s {
+ raptor_world* world;
+ /* Name - always present */
+ const unsigned char *local_name;
+ int local_name_length;
+ /* Namespace or NULL if not in a namespace */
+ const raptor_namespace *nspace;
+ /* URI of namespace+local_name or NULL if not defined */
+ raptor_uri *uri;
+ /* optional value - used when name is an attribute */
+ const unsigned char *value;
+ size_t value_length;
+};
+
+
+
+/* raptor_qname.c */
+#ifdef RAPTOR_DEBUG
+void raptor_qname_print(FILE *stream, raptor_qname* name);
+#endif
+
+
+/* raptor_uri.c */
+
+int raptor_uri_init(raptor_world* world);
+void raptor_uri_finish(raptor_world* world);
+raptor_uri* raptor_new_uri_from_rdf_ordinal(raptor_world* world, int ordinal);
+
+/* parsers */
+int raptor_init_parser_rdfxml(raptor_world* world);
+int raptor_init_parser_ntriples(raptor_world* world);
+int raptor_init_parser_turtle(raptor_world* world);
+int raptor_init_parser_trig(raptor_world* world);
+int raptor_init_parser_n3(raptor_world* world);
+int raptor_init_parser_grddl_common(raptor_world* world);
+int raptor_init_parser_grddl(raptor_world* world);
+int raptor_init_parser_guess(raptor_world* world);
+int raptor_init_parser_rss(raptor_world* world);
+int raptor_init_parser_rdfa(raptor_world* world);
+int raptor_init_parser_json(raptor_world* world);
+int raptor_init_parser_nquads(raptor_world* world);
+
+void raptor_terminate_parser_grddl_common(raptor_world *world);
+
+#ifdef RAPTOR_PARSER_RDFA
+#define rdfa_add_item raptor_librdfa_rdfa_add_item
+#define rdfa_append_to_list_mapping raptor_librdfa_rdfa_append_to_list_mapping
+#define rdfa_canonicalize_string raptor_librdfa_rdfa_canonicalize_string
+#define rdfa_complete_current_property_value_triples raptor_librdfa_rdfa_complete_current_property_value_triples
+#define rdfa_complete_incomplete_triples raptor_librdfa_rdfa_complete_incomplete_triples
+#define rdfa_complete_list_triples raptor_librdfa_rdfa_complete_list_triples
+#define rdfa_complete_object_literal_triples raptor_librdfa_rdfa_complete_object_literal_triples
+#define rdfa_complete_relrev_triples raptor_librdfa_rdfa_complete_relrev_triples
+#define rdfa_complete_type_triples raptor_librdfa_rdfa_complete_type_triples
+#define rdfa_copy_list raptor_librdfa_rdfa_copy_list
+#define rdfa_copy_mapping raptor_librdfa_rdfa_copy_mapping
+#define rdfa_create_bnode raptor_librdfa_rdfa_create_bnode
+#define rdfa_create_context raptor_librdfa_rdfa_create_context
+#define rdfa_create_list raptor_librdfa_rdfa_create_list
+#define rdfa_create_list_mapping raptor_librdfa_rdfa_create_list_mapping
+#define rdfa_create_mapping raptor_librdfa_rdfa_create_mapping
+#define rdfa_create_new_element_context raptor_librdfa_rdfa_create_new_element_context
+#define rdfa_create_triple raptor_librdfa_rdfa_create_triple
+#define rdfa_establish_new_1_0_subject raptor_librdfa_rdfa_establish_new_1_0_subject
+#define rdfa_establish_new_1_0_subject_with_relrev raptor_librdfa_ablish_new_1_0_subject_with_relrev
+#define rdfa_establish_new_1_1_subject raptor_librdfa_ablish_new_1_1_subject
+#define rdfa_establish_new_1_1_subject_with_relrev raptor_librdfa_ablish_new_1_1_subject_with_relrev
+#define rdfa_establish_new_inlist_triples raptor_librdfa_ablish_new_inlist_triples
+#define rdfa_free_context raptor_librdfa_free_context
+#define rdfa_free_context_stack raptor_librdfa_free_context_stack
+#define rdfa_free_list raptor_librdfa_rdfa_free_list
+#define rdfa_free_mapping raptor_librdfa_rdfa_free_mapping
+#define rdfa_free_triple raptor_librdfa_rdfa_free_triple
+#define rdfa_get_buffer raptor_librdfa_rdfa_get_buffer
+#define rdfa_get_curie_type raptor_librdfa_rdfa_get_curie_type
+#define rdfa_get_list_mapping raptor_librdfa_rdfa_get_list_mapping
+#define rdfa_get_mapping raptor_librdfa_rdfa_get_mapping
+#define rdfa_init_base raptor_librdfa_rdfa_init_base
+#define rdfa_init_context raptor_librdfa_rdfa_init_context
+#define rdfa_iri_get_base raptor_librdfa_rdfa_iri_get_base
+#define rdfa_join_string raptor_librdfa_rdfa_join_string
+#define rdfa_n_append_string raptor_librdfa_rdfa_n_append_string
+#define rdfa_names raptor_librdfa_rdfa_names
+#define rdfa_next_mapping raptor_librdfa_rdfa_next_mapping
+#define rdfa_parse raptor_librdfa_rdfa_parse
+#define rdfa_parse_buffer raptor_librdfa_rdfa_parse_buffer
+#define rdfa_parse_chunk raptor_librdfa_rdfa_parse_chunk
+#define rdfa_parse_end raptor_librdfa_rdfa_parse_end
+#define rdfa_parse_start raptor_librdfa_rdfa_parse_start
+#define rdfa_pop_item raptor_librdfa_rdfa_pop_item
+#define rdfa_print_list raptor_librdfa_rdfa_print_list
+#define rdfa_print_mapping raptor_librdfa_rdfa_print_mapping
+#define rdfa_print_string raptor_librdfa_rdfa_print_string
+#define rdfa_print_triple raptor_librdfa_rdfa_print_triple
+#define rdfa_print_triple_list raptor_librdfa_rdfa_print_triple_list
+#define rdfa_push_item raptor_librdfa_rdfa_push_item
+#define rdfa_replace_list raptor_librdfa_rdfa_replace_list
+#define rdfa_replace_string raptor_librdfa_rdfa_replace_string
+#define rdfa_resolve_curie raptor_librdfa_rdfa_resolve_curie
+#define rdfa_resolve_curie_list raptor_librdfa_rdfa_resolve_curie_list
+#define rdfa_resolve_relrev_curie raptor_librdfa_rdfa_resolve_relrev_curie
+#define rdfa_resolve_uri raptor_librdfa_rdfa_resolve_uri
+#define rdfa_save_incomplete_list_triples raptor_librdfa_rdfa_save_incomplete_list_triples
+#define rdfa_save_incomplete_triples raptor_librdfa_rdfa_save_incomplete_triples
+#define rdfa_set_buffer_filler raptor_librdfa_rdfa_set_buffer_filler
+#define rdfa_set_default_graph_triple_handler raptor_librdfa_rdfa_set_default_graph_triple_handler
+#define rdfa_set_processor_graph_triple_handler raptor_librdfa_rdfa_set_processor_graph_triple_handler
+#define rdfa_setup_initial_context raptor_librdfa_rdfa_setup_initial_context
+#define rdfa_update_language raptor_librdfa_rdfa_update_language
+#define rdfa_update_mapping raptor_librdfa_rdfa_update_mapping
+#define rdfa_update_uri_mappings raptor_librdfa_rdfa_update_uri_mappings
+#define rdfa_uri_strings raptor_librdfa_rdfa_uri_strings
+#endif
+
+/* raptor_parse.c */
+int raptor_parsers_init(raptor_world* world);
+void raptor_parsers_finish(raptor_world *world);
+
+void raptor_parser_save_content(raptor_parser* rdf_parser, int save);
+const unsigned char* raptor_parser_get_content(raptor_parser* rdf_parser, size_t* length_p);
+void raptor_parser_start_graph(raptor_parser* parser, raptor_uri* uri, int is_declared);
+void raptor_parser_end_graph(raptor_parser* parser, raptor_uri* uri, int is_declared);
+
+/* raptor_rss.c */
+int raptor_init_serializer_rss10(raptor_world* world);
+int raptor_init_serializer_atom(raptor_world* world);
+
+extern const unsigned char * const raptor_atom_namespace_uri;
+
+/* raptor_rfc2396.c */
+raptor_uri_detail* raptor_new_uri_detail(const unsigned char *uri_string);
+void raptor_free_uri_detail(raptor_uri_detail* uri_detail);
+unsigned char* raptor_uri_detail_to_string(raptor_uri_detail *ud, size_t* len_p);
+
+/* serializers */
+/* raptor_serializer.c */
+int raptor_serializers_init(raptor_world* world);
+void raptor_serializers_finish(raptor_world* world);
+
+/* raptor_serializer_dot.c */
+int raptor_init_serializer_dot(raptor_world* world);
+
+/* raptor_serializer_ntriples.c */
+int raptor_init_serializer_ntriples(raptor_world* world);
+int raptor_init_serializer_nquads(raptor_world* world);
+
+/* raptor_serialize_rdfxml.c */
+int raptor_init_serializer_rdfxml(raptor_world* world);
+
+/* raptor_serialize_rdfxmla.c */
+int raptor_init_serializer_rdfxmla(raptor_world* world);
+
+/* raptor_serialize_turtle.c */
+int raptor_init_serializer_turtle(raptor_world* world);
+
+/* raptor_serialize_html.c */
+int raptor_init_serializer_html(raptor_world* world);
+
+/* raptor_serialize_json.c */
+int raptor_init_serializer_json(raptor_world* world);
+
+/* raptor_unicode.c */
+extern const raptor_unichar raptor_unicode_max_codepoint;
+
+int raptor_unicode_is_namestartchar(raptor_unichar c);
+int raptor_unicode_is_namechar(raptor_unichar c);
+int raptor_unicode_check_utf8_nfc_string(const unsigned char *input, size_t length, int* error);
+
+/* raptor_www*.c */
+#ifdef RAPTOR_WWW_LIBXML
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
+#include <libxml/nanohttp.h>
+#endif
+
+#ifdef RAPTOR_WWW_LIBCURL
+#include <curl/curl.h>
+#include <curl/easy.h>
+#endif
+
+/* Size of buffer used in various raptor_www places for I/O */
+#ifndef RAPTOR_WWW_BUFFER_SIZE
+#define RAPTOR_WWW_BUFFER_SIZE 4096
+#endif
+
+/* WWW library state */
+struct raptor_www_s {
+ raptor_world* world;
+ char *type;
+ int free_type;
+ size_t total_bytes;
+ int failed;
+ int status_code;
+
+ raptor_uri *uri;
+
+#ifdef RAPTOR_WWW_LIBCURL
+ CURL* curl_handle;
+ char error_buffer[CURL_ERROR_SIZE];
+ int curl_init_here;
+ int checked_status;
+#endif
+
+#ifdef RAPTOR_WWW_LIBXML
+ void *ctxt;
+ int is_end;
+ void *old_xmlGenericErrorContext;
+#endif
+
+ char buffer[RAPTOR_WWW_BUFFER_SIZE + 1];
+
+ char *user_agent;
+
+ /* proxy URL string or NULL for none */
+ char *proxy;
+
+ void *write_bytes_userdata;
+ raptor_www_write_bytes_handler write_bytes;
+ void *content_type_userdata;
+ raptor_www_content_type_handler content_type;
+
+ void* uri_filter_user_data;
+ raptor_uri_filter_func uri_filter;
+
+ /* can be filled with error location information */
+ raptor_locator locator;
+
+ char *http_accept;
+
+ FILE* handle;
+
+ int connection_timeout;
+
+ /* The URI returned after any redirections */
+ raptor_uri* final_uri;
+
+ void *final_uri_userdata;
+ raptor_www_final_uri_handler final_uri_handler;
+
+ char* cache_control;
+};
+
+
+
+/* internal */
+void raptor_www_libxml_init(raptor_www *www);
+void raptor_www_libxml_free(raptor_www *www);
+int raptor_www_libxml_fetch(raptor_www *www);
+
+void raptor_www_error(raptor_www *www, const char *message, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+
+void raptor_www_curl_init(raptor_www *www);
+void raptor_www_curl_free(raptor_www *www);
+int raptor_www_curl_fetch(raptor_www *www);
+int raptor_www_curl_set_ssl_cert_options(raptor_www* www, const char* cert_filename, const char* cert_type, const char* cert_passphrase);
+int raptor_www_curl_set_ssl_verify_options(raptor_www* www, int verify_peer, int verify_host);
+
+void raptor_www_libfetch_init(raptor_www *www);
+void raptor_www_libfetch_free(raptor_www *www);
+int raptor_www_libfetch_fetch(raptor_www *www);
+
+/* raptor_set.c */
+raptor_id_set* raptor_new_id_set(raptor_world* world);
+void raptor_free_id_set(raptor_id_set* set);
+int raptor_id_set_add(raptor_id_set* set, raptor_uri* base_uri, const unsigned char *item, size_t item_len);
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+void raptor_id_set_stats_print(raptor_id_set* set, FILE *stream);
+#endif
+
+/* raptor_sax2.c */
+/*
+ * SAX2 elements/attributes on stack
+ */
+struct raptor_xml_element_s {
+ /* NULL at bottom of stack */
+ struct raptor_xml_element_s *parent;
+ raptor_qname *name;
+ raptor_qname **attributes;
+ unsigned int attribute_count;
+
+ /* value of xml:lang attribute on this element or NULL */
+ const unsigned char *xml_language;
+
+ /* URI of xml:base attribute value on this element or NULL */
+ raptor_uri *base_uri;
+
+ /* CDATA content of element and checks for mixed content */
+ raptor_stringbuffer* content_cdata_sb;
+ unsigned int content_cdata_length;
+ /* how many cdata blocks seen */
+ unsigned int content_cdata_seen;
+ /* how many contained elements seen */
+ unsigned int content_element_seen;
+
+ raptor_sequence *declared_nspaces;
+
+ void* user_data;
+};
+
+
+struct raptor_sax2_s {
+#ifdef RAPTOR_XML_LIBXML
+ int magic;
+#endif
+ raptor_world* world;
+ void* user_data;
+
+#ifdef RAPTOR_XML_LIBXML
+ /* structure holding sax event handlers */
+ xmlSAXHandler sax;
+ /* parser context */
+ xmlParserCtxtPtr xc;
+ /* pointer to SAX document locator */
+ xmlSAXLocatorPtr loc;
+
+#if LIBXML_VERSION < 20425
+ /* flag for some libxml eversions*/
+ int first_read;
+#endif
+
+#endif
+
+ /* element depth */
+ int depth;
+
+ /* stack of elements - elements add after current_element */
+ raptor_xml_element *root_element;
+ raptor_xml_element *current_element;
+
+ /* start of an element */
+ raptor_sax2_start_element_handler start_element_handler;
+ /* end of an element */
+ raptor_sax2_end_element_handler end_element_handler;
+ /* characters */
+ raptor_sax2_characters_handler characters_handler;
+ /* like <![CDATA[...]> */
+ raptor_sax2_cdata_handler cdata_handler;
+ /* comment */
+ raptor_sax2_comment_handler comment_handler;
+ /* unparsed (NDATA) entity */
+ raptor_sax2_unparsed_entity_decl_handler unparsed_entity_decl_handler;
+ /* external entity reference */
+ raptor_sax2_external_entity_ref_handler external_entity_ref_handler;
+
+ raptor_locator *locator;
+
+ /* New XML namespace callback */
+ raptor_namespace_handler namespace_handler;
+
+ raptor_object_options options;
+
+ /* stack of namespaces, most recently added at top */
+ raptor_namespace_stack namespaces; /* static */
+
+ /* base URI for resolving relative URIs or xml:base URIs */
+ raptor_uri* base_uri;
+
+ /* sax2 init failed - do not try to do anything with it */
+ int failed;
+
+ /* call SAX2 handlers if non-0 */
+ int enabled;
+
+ void* uri_filter_user_data;
+ raptor_uri_filter_func uri_filter;
+};
+
+int raptor_sax2_init(raptor_world* world);
+void raptor_sax2_finish(raptor_world* world);
+
+
+raptor_xml_element* raptor_xml_element_pop(raptor_sax2* sax2);
+void raptor_xml_element_push(raptor_sax2* sax2, raptor_xml_element* element);
+int raptor_sax2_get_depth(raptor_sax2* sax2);
+void raptor_sax2_inc_depth(raptor_sax2* sax2);
+void raptor_sax2_dec_depth(raptor_sax2* sax2);
+void raptor_sax2_update_document_locator(raptor_sax2* sax2, raptor_locator* locator);
+int raptor_sax2_set_option(raptor_sax2 *sax2, raptor_option option, char* string, int integer);
+
+#ifdef RAPTOR_DEBUG
+void raptor_print_xml_element(raptor_xml_element *element, FILE* stream);
+#endif
+
+void raptor_sax2_start_element(void* user_data, const unsigned char *name, const unsigned char **atts);
+void raptor_sax2_end_element(void* user_data, const unsigned char *name);
+void raptor_sax2_characters(void* user_data, const unsigned char *s, int len);
+void raptor_sax2_cdata(void* user_data, const unsigned char *s, int len);
+void raptor_sax2_comment(void* user_data, const unsigned char *s);
+void raptor_sax2_unparsed_entity_decl(void* user_data, const unsigned char* entityName, const unsigned char* base, const unsigned char* systemId, const unsigned char* publicId, const unsigned char* notationName);
+int raptor_sax2_external_entity_ref(void* user_data, const unsigned char* context, const unsigned char* base, const unsigned char* systemId, const unsigned char* publicId);
+int raptor_sax2_check_load_uri_string(raptor_sax2* sax2, const unsigned char* uri_string);
+
+/* turtle_parser.y and turtle_lexer.l */
+typedef struct raptor_turtle_parser_s raptor_turtle_parser;
+
+/* n3_parser.y and n3_lexer.l */
+typedef struct raptor_n3_parser_s raptor_n3_parser;
+
+/* raptor_rfc2396.c */
+struct raptor_uri_detail_s
+{
+ size_t uri_len;
+ /* buffer is the same size as the original uri_len */
+ unsigned char *buffer;
+
+ /* URI Components. These all point into buffer */
+ unsigned char *scheme;
+ unsigned char *authority;
+ unsigned char *path;
+ unsigned char *query;
+ unsigned char *fragment;
+
+ /* Lengths of the URI Components */
+ size_t scheme_len;
+ size_t authority_len;
+ size_t path_len;
+ size_t query_len;
+ size_t fragment_len;
+
+ /* Flags */
+ int is_hierarchical;
+};
+
+
+/* for time_t */
+#ifdef TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# include <time.h>
+# endif
+#endif
+
+/* parsedate.c */
+#ifdef HAVE_INN_PARSEDATE
+#include <libinn.h>
+#define RAPTOR_PARSEDATE_FUNCTION parsedate
+#else
+#ifdef HAVE_RAPTOR_PARSE_DATE
+time_t raptor_parse_date(const char *p, time_t *now);
+#define RAPTOR_PARSEDATE_FUNCTION raptor_parse_date
+#else
+#ifdef HAVE_CURL_CURL_H
+#include <curl/curl.h>
+#define RAPTOR_PARSEDATE_FUNCTION curl_getdate
+#endif
+#endif
+#endif
+
+/* only used internally now */
+typedef void (*raptor_simple_message_handler)(void *user_data, const char *message, ...);
+
+
+/* turtle_common.c */
+int raptor_stringbuffer_append_turtle_string(raptor_stringbuffer* stringbuffer, const unsigned char *text, size_t len, int delim, raptor_simple_message_handler error_handler, void *error_data);
+
+
+/* raptor_abbrev.c */
+
+typedef struct {
+ raptor_world* world;
+ int ref_count; /* count of references to this node */
+ int count_as_subject; /* count of this blank/resource node as subject */
+ int count_as_object; /* count of this blank/resource node as object */
+
+ raptor_term* term;
+} raptor_abbrev_node;
+
+
+typedef struct {
+ raptor_abbrev_node* node; /* node representing the subject of
+ * this resource */
+ raptor_abbrev_node* node_type; /* the rdf:type of this resource */
+ raptor_avltree *properties; /* list of properties
+ * (predicate/object pair) of this
+ * subject */
+ raptor_sequence *list_items; /* list of container elements if
+ * is rdf container */
+ int valid; /* set 0 for blank nodes that do not
+ * need to be referred to again */
+} raptor_abbrev_subject;
+
+
+raptor_abbrev_node* raptor_new_abbrev_node(raptor_world* world, raptor_term* term);
+void raptor_free_abbrev_node(raptor_abbrev_node* node);
+int raptor_abbrev_node_compare(raptor_abbrev_node* node1, raptor_abbrev_node* node2);
+int raptor_abbrev_node_equals(raptor_abbrev_node* node1, raptor_abbrev_node* node2);
+raptor_abbrev_node* raptor_abbrev_node_lookup(raptor_avltree* nodes, raptor_term* term);
+
+void raptor_free_abbrev_subject(raptor_abbrev_subject* subject);
+int raptor_abbrev_subject_add_property(raptor_abbrev_subject* subject, raptor_abbrev_node* predicate, raptor_abbrev_node* object);
+int raptor_abbrev_subject_compare(raptor_abbrev_subject* subject1, raptor_abbrev_subject* subject2);
+raptor_abbrev_subject* raptor_abbrev_subject_find(raptor_avltree *subjects, raptor_term* node);
+raptor_abbrev_subject* raptor_abbrev_subject_lookup(raptor_avltree* nodes, raptor_avltree* subjects, raptor_avltree* blanks, raptor_term* term);
+int raptor_abbrev_subject_valid(raptor_abbrev_subject *subject);
+int raptor_abbrev_subject_invalidate(raptor_abbrev_subject *subject);
+
+
+/* avltree */
+#ifdef RAPTOR_DEBUG
+int raptor_avltree_dump(raptor_avltree* tree, FILE* stream);
+void raptor_avltree_check(raptor_avltree* tree);
+#endif
+
+
+raptor_qname* raptor_new_qname_from_resource(raptor_sequence* namespaces, raptor_namespace_stack* nstack, int* namespace_count, raptor_abbrev_node* node);
+
+
+/**
+ * raptor_turtle_writer:
+ *
+ * Raptor Turtle Writer class
+ */
+typedef struct raptor_turtle_writer_s raptor_turtle_writer;
+
+/* Turtle Writer Class (raptor_turtle_writer) */
+raptor_turtle_writer* raptor_new_turtle_writer(raptor_world* world, raptor_uri* base_uri, int write_base_uri, raptor_namespace_stack *nstack, raptor_iostream* iostr);
+void raptor_free_turtle_writer(raptor_turtle_writer* turtle_writer);
+void raptor_turtle_writer_raw(raptor_turtle_writer* turtle_writer, const unsigned char *s);
+void raptor_turtle_writer_raw_counted(raptor_turtle_writer* turtle_writer, const unsigned char *s, unsigned int len);
+void raptor_turtle_writer_namespace_prefix(raptor_turtle_writer* turtle_writer, raptor_namespace* ns);
+void raptor_turtle_writer_base(raptor_turtle_writer* turtle_writer, raptor_uri* base_uri);
+void raptor_turtle_writer_increase_indent(raptor_turtle_writer *turtle_writer);
+void raptor_turtle_writer_decrease_indent(raptor_turtle_writer *turtle_writer);
+void raptor_turtle_writer_newline(raptor_turtle_writer *turtle_writer);
+void raptor_turtle_writer_reference(raptor_turtle_writer* turtle_writer, raptor_uri* uri);
+int raptor_turtle_writer_literal(raptor_turtle_writer* turtle_writer, raptor_namespace_stack *nstack, const unsigned char *s, const unsigned char* lang, raptor_uri* datatype);
+void raptor_turtle_writer_qname(raptor_turtle_writer* turtle_writer, raptor_qname* qname);
+int raptor_turtle_writer_quoted_counted_string(raptor_turtle_writer* turtle_writer, const unsigned char *s, size_t length);
+void raptor_turtle_writer_comment(raptor_turtle_writer* turtle_writer, const unsigned char *s);
+int raptor_turtle_writer_set_option(raptor_turtle_writer *turtle_writer, raptor_option option, int value);
+int raptor_turtle_writer_set_option_string(raptor_turtle_writer *turtle_writer, raptor_option option, const unsigned char *value);
+int raptor_turtle_writer_get_option(raptor_turtle_writer *turtle_writer, raptor_option option);
+const unsigned char *raptor_turtle_writer_get_option_string(raptor_turtle_writer *turtle_writer, raptor_option option);
+void raptor_turtle_writer_bnodeid(raptor_turtle_writer* turtle_writer, const unsigned char *bnodeid, size_t len);
+
+
+/**
+ * raptor_json_writer:
+ *
+ * Raptor JSON Writer class
+ */
+typedef struct raptor_json_writer_s raptor_json_writer;
+
+/* raptor_json_writer.c */
+raptor_json_writer* raptor_new_json_writer(raptor_world* world, raptor_uri* base_uri, raptor_iostream* iostr);
+void raptor_free_json_writer(raptor_json_writer* json_writer);
+
+int raptor_json_writer_newline(raptor_json_writer* json_writer);
+int raptor_json_writer_key_value(raptor_json_writer* json_writer, const char* key, size_t key_len, const char* value, size_t value_len);
+int raptor_json_writer_start_block(raptor_json_writer* json_writer, char c);
+int raptor_json_writer_end_block(raptor_json_writer* json_writer, char c);
+int raptor_json_writer_literal_object(raptor_json_writer* json_writer, unsigned char* s, unsigned char* lang, raptor_uri* datatype, const char* key, const char* type_key);
+int raptor_json_writer_blank_object(raptor_json_writer* json_writer, const unsigned char* blank);
+int raptor_json_writer_uri_object(raptor_json_writer* json_writer, raptor_uri* uri);
+int raptor_json_writer_key_uri_value(raptor_json_writer* json_writer, const char* key, size_t key_len, raptor_uri* uri);
+
+/* raptor_memstr.c */
+const char* raptor_memstr(const char *haystack, size_t haystack_len, const char *needle);
+
+/* raptor_serialize_rdfxmla.c special functions for embedding rdf/xml */
+int raptor_rdfxmla_serialize_set_write_rdf_RDF(raptor_serializer* serializer, int value);
+int raptor_rdfxmla_serialize_set_xml_writer(raptor_serializer* serializer, raptor_xml_writer* xml_writer, raptor_namespace_stack *nstack);
+int raptor_rdfxmla_serialize_set_single_node(raptor_serializer* serializer, raptor_uri* uri);
+int raptor_rdfxmla_serialize_set_write_typed_nodes(raptor_serializer* serializer, int value);
+
+/* snprintf.c */
+size_t raptor_format_integer(char* buffer, size_t bufsize, int integer, unsigned int base, int width, char padding);
+
+/* raptor_world structure */
+#define RAPTOR1_WORLD_MAGIC_1 0
+#define RAPTOR1_WORLD_MAGIC_2 1
+#define RAPTOR2_WORLD_MAGIC 0xC4129CEF
+
+#define RAPTOR_CHECK_CONSTRUCTOR_WORLD(world) \
+ do { \
+ if(raptor_check_world_internal(world, __func__)) \
+ return NULL; \
+ } while(0)
+
+
+int raptor_check_world_internal(raptor_world* world, const char* name);
+
+
+
+struct raptor_world_s {
+ /* signature to check this is a world object */
+ unsigned int magic;
+
+ /* world has been initialized with raptor_world_open() */
+ int opened;
+
+ /* internal flag used to ignore errors for e.g. child GRDDL parsers */
+ int internal_ignore_errors;
+
+ void* message_handler_user_data;
+ raptor_log_handler message_handler;
+
+ /* sequence of parser factories */
+ raptor_sequence *parsers;
+
+ /* sequence of serializer factories */
+ raptor_sequence *serializers;
+
+ /* raptor_rss_common initialisation counter */
+ int rss_common_initialised;
+
+ /* raptor_rss_{namespaces,types,fields}_info const data initialized to raptor_uri,raptor_qname objects */
+ raptor_uri **rss_namespaces_info_uris;
+ raptor_uri **rss_types_info_uris;
+ raptor_qname **rss_types_info_qnames;
+ raptor_uri **rss_fields_info_uris;
+ raptor_qname **rss_fields_info_qnames;
+
+ /* raptor_www v2 flags */
+ int www_skip_www_init_finish;
+ int www_initialized;
+
+ /* This is used to store a #xsltSecurityPrefsPtr typed object
+ * pointer when libxslt is compiled in.
+ */
+ void* xslt_security_preferences;
+ /* 0 raptor owns the above object and should free it with
+ * xsltFreeSecurityPrefs() on exit
+ * 1 user set the above object and raptor does not own it
+ */
+ int xslt_security_preferences_policy;
+
+ /* Flags for libxml set by raptor_world_set_libxml_flags().
+ * See #raptor_libxml_flags for meanings
+ */
+ int libxml_flags;
+
+#ifdef RAPTOR_XML_LIBXML
+ void *libxml_saved_structured_error_context;
+ xmlStructuredErrorFunc libxml_saved_structured_error_handler;
+
+ void *libxml_saved_generic_error_context;
+ xmlGenericErrorFunc libxml_saved_generic_error_handler;
+#endif
+
+ raptor_avltree *uris_tree;
+
+ raptor_uri* concepts[RDF_NS_LAST + 1];
+
+ raptor_term* terms[RDF_NS_LAST + 1];
+
+ /* last log message - points to data it does not own */
+ raptor_log_message message;
+
+ /* should */
+ int uri_interning;
+
+ /* generate blank node ID policy */
+ void *generate_bnodeid_handler_user_data;
+ raptor_generate_bnodeid_handler generate_bnodeid_handler;
+
+ int default_generate_bnodeid_handler_base;
+ char *default_generate_bnodeid_handler_prefix;
+ unsigned int default_generate_bnodeid_handler_prefix_length;
+};
+
+/* raptor_www.c */
+int raptor_www_init(raptor_world* world);
+void raptor_www_finish(raptor_world* world);
+
+
+
+#define RAPTOR_LANG_LEN_FROM_INT(len) (int)(len)
+#define RAPTOR_LANG_LEN_TO_SIZE_T(len) (size_t)(len)
+
+/* Safe casts: widening a value */
+#define RAPTOR_GOOD_CAST(t, v) (t)(v)
+
+/* Unsafe casts: narrowing a value */
+#define RAPTOR_BAD_CAST(t, v) (t)(v)
+
+/* end of RAPTOR_INTERNAL */
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/raptor_iostream.c b/src/raptor_iostream.c
new file mode 100644
index 0000000..4d386db
--- /dev/null
+++ b/src/raptor_iostream.c
@@ -0,0 +1,1657 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_iostream.c - Raptor I/O-stream class for abstracting I/O
+ *
+ * Copyright (C) 2004-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+#ifndef STANDALONE
+
+#define RAPTOR_IOSTREAM_MODE_READ 1
+#define RAPTOR_IOSTREAM_MODE_WRITE 2
+
+#define RAPTOR_IOSTREAM_FLAGS_EOF 1
+#define RAPTOR_IOSTREAM_FLAGS_FREE_HANDLER 2
+
+struct raptor_iostream_s
+{
+ raptor_world *world;
+
+ void *user_data;
+ const raptor_iostream_handler* handler;
+ size_t offset;
+ unsigned int mode;
+ int flags;
+};
+
+
+
+/* prototypes for local functions */
+
+
+static int
+raptor_iostream_calculate_modes(const raptor_iostream_handler * const handler)
+{
+ int mode = 0;
+
+ /* API V1 checks */
+ if((handler->version >= 1) &&
+ handler->read_bytes)
+ mode |= RAPTOR_IOSTREAM_MODE_READ;
+
+ /* API V2 checks */
+ if((handler->version >= 2) &&
+ (handler->write_byte || handler->write_bytes))
+ mode |= RAPTOR_IOSTREAM_MODE_WRITE;
+
+ return mode;
+}
+
+
+/* Return non-0 if handler is legal and OK for given mode (if not 0 = ANY) */
+static int
+raptor_iostream_check_handler(const raptor_iostream_handler * const handler,
+ unsigned int user_mode)
+{
+ int mode;
+
+ if(handler->version < 1 || handler->version > 2)
+ return 0;
+
+ mode = raptor_iostream_calculate_modes(handler);
+ if(user_mode && !(user_mode & mode))
+ return 0;
+
+ return (mode != 0);
+}
+
+
+/**
+ * raptor_new_iostream_from_handler:
+ * @world: raptor_world object
+ * @user_data: pointer to context information to pass in to calls
+ * @handler: pointer to handler methods
+ *
+ * Create a new iostream over a user-defined handler
+ *
+ * Return value: new #raptor_iostream object or NULL on failure
+ **/
+raptor_iostream*
+raptor_new_iostream_from_handler(raptor_world *world,
+ void *user_data,
+ const raptor_iostream_handler* const handler)
+{
+ raptor_iostream* iostr;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(handler, raptor_iostream_handler, NULL);
+
+ raptor_world_open(world);
+
+ if(!raptor_iostream_check_handler(handler, 0))
+ return NULL;
+
+ iostr = RAPTOR_CALLOC(raptor_iostream*, 1, sizeof(*iostr));
+ if(!iostr)
+ return NULL;
+
+ iostr->world = world;
+ iostr->handler = handler;
+ iostr->user_data = (void*)user_data;
+ iostr->mode = raptor_iostream_calculate_modes(handler);
+
+ if(iostr->handler->init &&
+ iostr->handler->init(iostr->user_data)) {
+ RAPTOR_FREE(raptor_iostream, iostr);
+ return NULL;
+ }
+ return iostr;
+}
+
+
+
+/* Local handlers for reading/writing to/from a sink */
+
+static int
+raptor_sink_iostream_write_byte(void *user_data, const int byte)
+{
+ return 0;
+}
+
+static int
+raptor_sink_iostream_write_bytes(void *user_data, const void *ptr,
+ size_t size, size_t nmemb)
+{
+ return RAPTOR_BAD_CAST(int, size * nmemb); /* success */
+}
+
+static int
+raptor_sink_iostream_read_bytes(void *user_data, void *ptr,
+ size_t size, size_t nmemb)
+{
+ return 0;
+}
+
+static int
+raptor_sink_iostream_read_eof(void *user_data)
+{
+ return 1; /* EOF always */
+}
+
+static const raptor_iostream_handler raptor_iostream_sink_handler = {
+ /* .version = */ 2,
+ /* .init = */ NULL,
+ /* .finish = */ NULL,
+ /* .write_byte = */ raptor_sink_iostream_write_byte,
+ /* .write_bytes = */ raptor_sink_iostream_write_bytes,
+ /* .write_end = */ NULL,
+ /* .read_bytes = */ raptor_sink_iostream_read_bytes,
+ /* .read_eof = */ raptor_sink_iostream_read_eof
+};
+
+
+/**
+ * raptor_new_iostream_to_sink:
+ * @world: raptor_world object
+ *
+ * Create a new write iostream to a sink.
+ *
+ * Return value: new #raptor_iostream object or NULL on failure
+ **/
+raptor_iostream*
+raptor_new_iostream_to_sink(raptor_world *world)
+{
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ return raptor_new_iostream_from_handler(world,
+ NULL, &raptor_iostream_sink_handler);
+}
+
+
+/* Local handlers for reading/writing from a filename */
+
+static void
+raptor_filename_iostream_finish(void *user_data)
+{
+ FILE* handle = (FILE*)user_data;
+ fclose(handle);
+}
+
+static int
+raptor_filename_iostream_write_byte(void *user_data, const int byte)
+{
+ FILE* handle = (FILE*)user_data;
+ return (fputc(byte, handle) == byte);
+}
+
+static int
+raptor_filename_iostream_write_bytes(void *user_data,
+ const void *ptr, size_t size, size_t nmemb)
+{
+ FILE* handle = (FILE*)user_data;
+ return RAPTOR_BAD_CAST(int, fwrite(ptr, size, nmemb, handle));
+}
+
+static int
+raptor_filename_iostream_write_end(void *user_data)
+{
+ FILE* handle = (FILE*)user_data;
+ return fclose(handle);
+}
+
+static int
+raptor_filename_iostream_read_bytes(void *user_data,
+ void *ptr, size_t size, size_t nmemb)
+{
+ FILE* handle = (FILE*)user_data;
+ return RAPTOR_BAD_CAST(int, fread(ptr, size, nmemb, handle));
+}
+
+static int
+raptor_filename_iostream_read_eof(void *user_data)
+{
+ FILE* handle = (FILE*)user_data;
+ return feof(handle);
+}
+
+static const raptor_iostream_handler raptor_iostream_write_filename_handler = {
+ /* .version = */ 2,
+ /* .init = */ NULL,
+ /* .finish = */ raptor_filename_iostream_finish,
+ /* .write_byte = */ raptor_filename_iostream_write_byte,
+ /* .write_bytes = */ raptor_filename_iostream_write_bytes,
+ /* .write_end = */ raptor_filename_iostream_write_end,
+ /* .read_bytes = */ NULL,
+ /* .read_eof = */ NULL
+};
+
+
+/**
+ * raptor_new_iostream_to_filename:
+ * @world: raptor world
+ * @filename: Output filename to open and write to
+ *
+ * Constructor - create a new iostream writing to a filename.
+ *
+ * Return value: new #raptor_iostream object or NULL on failure
+ **/
+raptor_iostream*
+raptor_new_iostream_to_filename(raptor_world *world, const char *filename)
+{
+ FILE *handle;
+ raptor_iostream* iostr;
+ const raptor_iostream_handler* handler;
+ const unsigned int mode = RAPTOR_IOSTREAM_MODE_WRITE;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ if(!filename)
+ return NULL;
+
+ handler = &raptor_iostream_write_filename_handler;
+ if(!raptor_iostream_check_handler(handler, mode))
+ return NULL;
+
+ handle = fopen(filename, "wb");
+ if(!handle)
+ return NULL;
+
+ iostr = RAPTOR_CALLOC(raptor_iostream*, 1, sizeof(*iostr));
+ if(!iostr) {
+ fclose(handle);
+ return NULL;
+ }
+
+ iostr->world = world;
+ iostr->handler = handler;
+ iostr->user_data = (void*)handle;
+ iostr->mode = mode;
+
+ if(iostr->handler->init &&
+ iostr->handler->init(iostr->user_data)) {
+ raptor_free_iostream(iostr);
+ return NULL;
+ }
+ return iostr;
+}
+
+
+static const raptor_iostream_handler raptor_iostream_write_file_handler = {
+ /* .version = */ 2,
+ /* .init = */ NULL,
+ /* .finish = */ NULL,
+ /* .write_byte = */ raptor_filename_iostream_write_byte,
+ /* .write_bytes = */ raptor_filename_iostream_write_bytes,
+ /* .write_end = */ NULL,
+ /* .read_bytes = */ NULL,
+ /* .read_eof = */ NULL
+};
+
+
+/**
+ * raptor_new_iostream_to_file_handle:
+ * @world: raptor world
+ * @handle: FILE* handle to write to
+ *
+ * Constructor - create a new iostream writing to a FILE*.
+ *
+ * The @handle must already be open for writing.
+ * NOTE: This does not fclose the @handle when it is finished.
+ *
+ * Return value: new #raptor_iostream object or NULL on failure
+ **/
+raptor_iostream*
+raptor_new_iostream_to_file_handle(raptor_world *world, FILE *handle)
+{
+ raptor_iostream* iostr;
+ const raptor_iostream_handler* handler;
+ const unsigned int mode = RAPTOR_IOSTREAM_MODE_WRITE;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ if(!handle)
+ return NULL;
+
+ handler = &raptor_iostream_write_file_handler;
+ if(!raptor_iostream_check_handler(handler, mode))
+ return NULL;
+
+ iostr = RAPTOR_CALLOC(raptor_iostream*, 1, sizeof(*iostr));
+ if(!iostr)
+ return NULL;
+
+ iostr->world = world;
+ iostr->handler = handler;
+ iostr->user_data = (void*)handle;
+ iostr->mode = mode;
+
+ if(iostr->handler->init && iostr->handler->init(iostr->user_data)) {
+ RAPTOR_FREE(raptor_iostream, iostr);
+ return NULL;
+ }
+ return iostr;
+}
+
+
+
+struct raptor_write_string_iostream_context {
+ raptor_stringbuffer *sb;
+ void *(*malloc_handler)(size_t size);
+ void **string_p;
+ size_t *length_p;
+};
+
+
+/* Local handlers for writing to a string */
+
+static void
+raptor_write_string_iostream_finish(void *user_data)
+{
+ struct raptor_write_string_iostream_context* con;
+ size_t len;
+ void *str = NULL;
+
+ con = (struct raptor_write_string_iostream_context*)user_data;
+ len = raptor_stringbuffer_length(con->sb);
+
+ *con->string_p = NULL;
+ if(con->length_p)
+ *con->length_p = len;
+
+ str = (void*)con->malloc_handler(len+1);
+ if(str) {
+ if(len)
+ raptor_stringbuffer_copy_to_string(con->sb, (unsigned char*)str, len+1);
+ else
+ *(char*)str='\0';
+ *con->string_p = str;
+ }
+
+ if(!str && con->length_p)
+ *con->length_p = 0;
+
+ raptor_free_stringbuffer(con->sb);
+ RAPTOR_FREE(raptor_write_string_iostream_context, con);
+ return;
+}
+
+static int
+raptor_write_string_iostream_write_byte(void *user_data, const int byte)
+{
+ struct raptor_write_string_iostream_context* con;
+ unsigned char buf = (unsigned char)byte;
+
+ con = (struct raptor_write_string_iostream_context*)user_data;
+ return raptor_stringbuffer_append_counted_string(con->sb, &buf, 1, 1);
+}
+
+
+static int
+raptor_write_string_iostream_write_bytes(void *user_data, const void *ptr,
+ size_t size, size_t nmemb)
+{
+ struct raptor_write_string_iostream_context* con;
+
+ con = (struct raptor_write_string_iostream_context*)user_data;
+ if(raptor_stringbuffer_append_counted_string(con->sb,
+ (const unsigned char*)ptr, size * nmemb, 1))
+ return 0; /* failure */
+ return RAPTOR_BAD_CAST(int, size * nmemb); /* success */
+}
+
+static const raptor_iostream_handler raptor_iostream_write_string_handler = {
+ /* .version = */ 2,
+ /* .init = */ NULL,
+ /* .finish = */ raptor_write_string_iostream_finish,
+ /* .write_byte = */ raptor_write_string_iostream_write_byte,
+ /* .write_bytes = */ raptor_write_string_iostream_write_bytes,
+ /* .write_end = */ NULL,
+ /* .read_bytes = */ NULL,
+ /* .read_eof = */ NULL
+};
+
+
+/**
+ * raptor_new_iostream_to_string:
+ * @world: raptor world
+ * @string_p: pointer to location to hold string
+ * @length_p: pointer to location to hold length of string (or NULL)
+ * @malloc_handler: pointer to malloc() to use to make string (or NULL)
+ *
+ * Constructor - create a new iostream writing to a string.
+ *
+ * If @malloc_handler is null, raptor will allocate it using it's
+ * own memory allocator. *@string_p is set to NULL on failure (and
+ * *@length_p to 0 if @length_p is not NULL).
+ *
+ * Return value: new #raptor_iostream object or NULL on failure
+ **/
+RAPTOR_EXTERN_C
+raptor_iostream*
+raptor_new_iostream_to_string(raptor_world *world,
+ void **string_p, size_t *length_p,
+ raptor_data_malloc_handler const malloc_handler)
+{
+ raptor_iostream* iostr;
+ struct raptor_write_string_iostream_context* con;
+ const raptor_iostream_handler* handler;
+ const unsigned int mode = RAPTOR_IOSTREAM_MODE_WRITE;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!string_p)
+ return NULL;
+
+ raptor_world_open(world);
+
+ handler = &raptor_iostream_write_string_handler;
+ if(!raptor_iostream_check_handler(handler, mode))
+ return NULL;
+
+ iostr = RAPTOR_CALLOC(raptor_iostream*, 1, sizeof(*iostr));
+ if(!iostr)
+ return NULL;
+
+ con = RAPTOR_CALLOC(struct raptor_write_string_iostream_context*, 1,
+ sizeof(*con));
+ if(!con) {
+ RAPTOR_FREE(raptor_iostream, iostr);
+ return NULL;
+ }
+
+ con->sb = raptor_new_stringbuffer();
+ if(!con->sb) {
+ RAPTOR_FREE(raptor_iostream, iostr);
+ RAPTOR_FREE(raptor_write_string_iostream_context, con);
+ return NULL;
+ }
+
+ con->string_p = string_p;
+ *string_p = NULL;
+
+ con->length_p = length_p;
+ if(length_p)
+ *length_p = 0;
+
+ if(malloc_handler)
+ con->malloc_handler = malloc_handler;
+ else
+ con->malloc_handler = raptor_alloc_memory;
+
+ iostr->world = world;
+ iostr->handler = handler;
+ iostr->user_data = (void*)con;
+ iostr->mode = mode;
+
+ if(iostr->handler->init && iostr->handler->init(iostr->user_data)) {
+ raptor_free_iostream(iostr);
+ return NULL;
+ }
+ return iostr;
+}
+
+
+/**
+ * raptor_new_iostream_from_sink:
+ * @world: raptor world
+ *
+ * Create a new read iostream from a sink.
+ *
+ * Return value: new #raptor_iostream object or NULL on failure
+ **/
+raptor_iostream*
+raptor_new_iostream_from_sink(raptor_world *world)
+{
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ return raptor_new_iostream_from_handler(world, NULL,
+ &raptor_iostream_sink_handler);
+}
+
+
+static const raptor_iostream_handler raptor_iostream_read_filename_handler = {
+ /* .version = */ 2,
+ /* .init = */ NULL,
+ /* .finish = */ raptor_filename_iostream_finish,
+ /* .write_byte = */ NULL,
+ /* .write_bytes = */ NULL,
+ /* .write_end = */ NULL,
+ /* .read_bytes = */ raptor_filename_iostream_read_bytes,
+ /* .read_eof = */ raptor_filename_iostream_read_eof
+};
+
+
+/**
+ * raptor_new_iostream_from_filename:
+ * @world: raptor world
+ * @filename: Input filename to open and read from
+ *
+ * Constructor - create a new iostream reading from a filename.
+ *
+ * Return value: new #raptor_iostream object or NULL on failure
+ **/
+raptor_iostream*
+raptor_new_iostream_from_filename(raptor_world *world, const char *filename)
+{
+ FILE *handle;
+ raptor_iostream* iostr;
+ const raptor_iostream_handler* handler;
+ const unsigned int mode = RAPTOR_IOSTREAM_MODE_READ;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!filename)
+ return NULL;
+
+ raptor_world_open(world);
+
+ handler = &raptor_iostream_read_filename_handler;
+ if(!raptor_iostream_check_handler(handler, mode))
+ return NULL;
+
+ handle = fopen(filename, "rb");
+ if(!handle)
+ return NULL;
+
+ iostr = RAPTOR_CALLOC(raptor_iostream*, 1, sizeof(*iostr));
+ if(!iostr) {
+ fclose(handle);
+ return NULL;
+ }
+
+ iostr->world = world;
+ iostr->handler = handler;
+ iostr->user_data = (void*)handle;
+ iostr->mode = mode;
+
+ if(iostr->handler->init &&
+ iostr->handler->init(iostr->user_data)) {
+ raptor_free_iostream(iostr);
+ return NULL;
+ }
+ return iostr;
+}
+
+
+static const raptor_iostream_handler raptor_iostream_read_file_handle_handler = {
+ /* .version = */ 2,
+ /* .init = */ NULL,
+ /* .finish = */ NULL,
+ /* .write_byte = */ NULL,
+ /* .write_bytes = */ NULL,
+ /* .write_end = */ NULL,
+ /* .read_bytes = */ raptor_filename_iostream_read_bytes,
+ /* .read_eof = */ raptor_filename_iostream_read_eof
+};
+
+
+/**
+ * raptor_new_iostream_from_file_handle:
+ * @world: raptor world
+ * @handle: Input file_handle to open and read from
+ *
+ * Constructor - create a new iostream reading from a file_handle.
+ *
+ * The @handle must already be open for reading.
+ * NOTE: This does not fclose the @handle when it is finished.
+ *
+ * Return value: new #raptor_iostream object or NULL on failure
+ **/
+raptor_iostream*
+raptor_new_iostream_from_file_handle(raptor_world *world, FILE *handle)
+{
+ raptor_iostream* iostr;
+ const raptor_iostream_handler* handler;
+ const unsigned int mode = RAPTOR_IOSTREAM_MODE_READ;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!handle)
+ return NULL;
+
+ raptor_world_open(world);
+
+ handler = &raptor_iostream_read_file_handle_handler;
+ if(!raptor_iostream_check_handler(handler, mode))
+ return NULL;
+
+ iostr = RAPTOR_CALLOC(raptor_iostream*, 1, sizeof(*iostr));
+ if(!iostr)
+ return NULL;
+
+ iostr->world = world;
+ iostr->handler = handler;
+ iostr->user_data = (void*)handle;
+ iostr->mode = mode;
+
+ if(iostr->handler->init &&
+ iostr->handler->init(iostr->user_data)) {
+ RAPTOR_FREE(raptor_iostream, iostr);
+ return NULL;
+ }
+ return iostr;
+}
+
+
+/**
+ * raptor_free_iostream:
+ * @iostr: iostream object
+ *
+ * Destructor - destroy an iostream.
+ **/
+void
+raptor_free_iostream(raptor_iostream *iostr)
+{
+ if(!iostr)
+ return;
+
+ if(iostr->flags & RAPTOR_IOSTREAM_FLAGS_EOF)
+ raptor_iostream_write_end(iostr);
+
+ if(iostr->handler->finish)
+ iostr->handler->finish(iostr->user_data);
+
+ if((iostr->flags & RAPTOR_IOSTREAM_FLAGS_FREE_HANDLER))
+ RAPTOR_FREE(raptor_iostream_handler, iostr->handler);
+
+ RAPTOR_FREE(raptor_iostream, iostr);
+}
+
+
+
+/**
+ * raptor_iostream_write_byte:
+ * @byte: byte to write
+ * @iostr: raptor iostream
+ *
+ * Write a byte to the iostream.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_iostream_write_byte(const int byte, raptor_iostream *iostr)
+{
+ iostr->offset++;
+
+ if(iostr->flags & RAPTOR_IOSTREAM_FLAGS_EOF)
+ return 1;
+ if(!iostr->handler->write_byte)
+ return 1;
+ if(!(iostr->mode & RAPTOR_IOSTREAM_MODE_WRITE))
+ return 1;
+ return iostr->handler->write_byte(iostr->user_data, byte);
+}
+
+
+/**
+ * raptor_iostream_write_bytes:
+ * @ptr: start of objects to write
+ * @size: size of object
+ * @nmemb: number of objects
+ * @iostr: raptor iostream
+ *
+ * Write bytes to the iostream.
+ *
+ * Return value: number of objects actually written, which may be less than nmemb. <0 on failure
+ **/
+int
+raptor_iostream_write_bytes(const void *ptr, size_t size, size_t nmemb,
+ raptor_iostream *iostr)
+{
+ int nobj;
+
+ if(iostr->flags & RAPTOR_IOSTREAM_FLAGS_EOF)
+ return -1;
+ if(!iostr->handler->write_bytes)
+ return -1;
+ if(!(iostr->mode & RAPTOR_IOSTREAM_MODE_WRITE))
+ return -1;
+
+ nobj = iostr->handler->write_bytes(iostr->user_data, ptr, size, nmemb);
+ if(nobj > 0)
+ iostr->offset += (size * nobj);
+
+ return nobj;
+}
+
+
+/**
+ * raptor_iostream_string_write:
+ * @string: string
+ * @iostr: raptor iostream
+ *
+ * Write a NULL-terminated string to the iostream.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_iostream_string_write(const void *string, raptor_iostream *iostr)
+{
+ size_t len = strlen((const char*)string);
+ return (raptor_iostream_write_bytes(string, 1, len, iostr) != RAPTOR_BAD_CAST(int, len));
+}
+
+
+/**
+ * raptor_iostream_counted_string_write:
+ * @string: string
+ * @len: string length
+ * @iostr: raptor iostream
+ *
+ * Write a counted string to the iostream.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_iostream_counted_string_write(const void *string, size_t len,
+ raptor_iostream *iostr)
+{
+ return (raptor_iostream_write_bytes(string, 1, len, iostr) != RAPTOR_BAD_CAST(int, len));
+}
+
+
+/**
+ * raptor_uri_write:
+ * @uri: URI
+ * @iostr: raptor iostream
+ *
+ * Write a raptor URI to the iostream.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_uri_write(raptor_uri* uri, raptor_iostream* iostr)
+{
+ size_t len;
+ const void *string = raptor_uri_as_counted_string(uri, &len);
+ return (raptor_iostream_write_bytes(string, 1, len, iostr) != RAPTOR_BAD_CAST(int, len));
+}
+
+
+/**
+ * raptor_iostream_write_end:
+ * @iostr: raptor iostream
+ *
+ * End writing to the iostream.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_iostream_write_end(raptor_iostream *iostr)
+{
+ int rc = 0;
+
+ if(iostr->flags & RAPTOR_IOSTREAM_FLAGS_EOF)
+ return 1;
+ if(iostr->handler->write_end)
+ rc = iostr->handler->write_end(iostr->user_data);
+ iostr->flags |= RAPTOR_IOSTREAM_FLAGS_EOF;
+
+ return rc;
+}
+
+
+/**
+ * raptor_stringbuffer_write:
+ * @sb: #raptor_stringbuffer to write
+ * @iostr: raptor iostream
+ *
+ * Write a stringbuffer to an iostream.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_stringbuffer_write(raptor_stringbuffer *sb, raptor_iostream* iostr)
+{
+ size_t length;
+ if(!sb)
+ return 1;
+
+ length = raptor_stringbuffer_length(sb);
+ if(length) {
+ int count = raptor_iostream_write_bytes(raptor_stringbuffer_as_string(sb),
+ 1, length, iostr);
+ return (RAPTOR_BAD_CAST(size_t, count) != length);
+ } else
+ return 0;
+}
+
+
+/**
+ * raptor_iostream_decimal_write:
+ * @integer: integer to format as decimal
+ * @iostr: raptor iostream
+ *
+ * Write an integer in decimal to the iostream.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_iostream_decimal_write(int integer, raptor_iostream* iostr)
+{
+ /* enough for 64 bit signed integer
+ * INT64_MAX is 9223372036854775807 (19 digits) + 1 for sign
+ */
+ unsigned char buf[20];
+ unsigned char *p;
+ int i = integer;
+ size_t length = 1;
+ if(integer < 0) {
+ length++;
+ i= -integer;
+ }
+ while(i /= 10)
+ length++;
+
+ p = buf+length-1;
+ i = integer;
+ if(i < 0)
+ i= -i;
+ do {
+ *p-- ='0'+(i %10);
+ i /= 10;
+ } while(i);
+ if(integer < 0)
+ *p= '-';
+
+ return raptor_iostream_write_bytes(buf, 1, length, iostr);
+}
+
+
+/**
+ * raptor_iostream_hexadecimal_write:
+ * @integer: unsigned integer to format as hexadecimal
+ * @width: field width
+ * @iostr: raptor iostream
+ *
+ * Write an integer in hexadecimal to the iostream.
+ *
+ * Always 0-fills the entire field and writes in uppercase A-F
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_iostream_hexadecimal_write(unsigned int integer, int width,
+ raptor_iostream* iostr)
+{
+ char *buf;
+ int rc;
+
+ if(width < 1)
+ return 1;
+
+ buf = RAPTOR_MALLOC(char*, width + 1);
+ if(!buf)
+ return 1;
+
+ (void)raptor_format_integer(buf, width + 1, integer, /* base */ 16,
+ width, '0');
+
+ rc = raptor_iostream_write_bytes(buf, 1, width, iostr);
+ RAPTOR_FREE(char*, buf);
+ return rc;
+}
+
+
+
+/**
+ * raptor_iostream_read_bytes:
+ * @ptr: start of buffer to read objects into
+ * @size: size of object
+ * @nmemb: number of objects to read
+ * @iostr: raptor iostream
+ *
+ * Read bytes to the iostream.
+ *
+ * Return value: number of objects read, 0 or less than nmemb on EOF, <0 on failure
+ **/
+int
+raptor_iostream_read_bytes(void *ptr, size_t size, size_t nmemb,
+ raptor_iostream *iostr)
+{
+ int count;
+
+ if(!(iostr->mode & RAPTOR_IOSTREAM_MODE_READ))
+ return -1;
+
+ if(iostr->flags & RAPTOR_IOSTREAM_FLAGS_EOF)
+ return 0;
+
+ if(!iostr->handler->read_bytes)
+ count= -1;
+ else
+ count = iostr->handler->read_bytes(iostr->user_data, ptr, size, nmemb);
+
+ if(count > 0)
+ iostr->offset += (size*count);
+
+ if(RAPTOR_BAD_CAST(size_t, count) < nmemb)
+ iostr->flags |= RAPTOR_IOSTREAM_FLAGS_EOF;
+
+ return count;
+}
+
+
+/**
+ * raptor_iostream_read_eof:
+ * @iostr: raptor read iostream
+ *
+ * Check if an read iostream has ended
+ *
+ * Return value: non-0 if EOF (or not a read iostream)
+ **/
+int
+raptor_iostream_read_eof(raptor_iostream *iostr)
+{
+ /* Streams without read are always EOF */
+ if(!(iostr->mode & RAPTOR_IOSTREAM_MODE_READ))
+ return 1;
+
+ if(!(iostr->flags & RAPTOR_IOSTREAM_FLAGS_EOF) &&
+ iostr->handler->read_eof &&
+ iostr->handler->read_eof(iostr->user_data))
+ iostr->flags |= RAPTOR_IOSTREAM_FLAGS_EOF;
+
+ return ((iostr->flags & RAPTOR_IOSTREAM_FLAGS_EOF) != 0);
+}
+
+
+struct raptor_read_string_iostream_context {
+ /* input buffer */
+ void* string;
+ size_t length;
+ /* pointer into buffer */
+ size_t offset;
+};
+
+
+/* Local handlers for reading from a string */
+
+static void
+raptor_read_string_iostream_finish(void *user_data)
+{
+ struct raptor_read_string_iostream_context* con;
+
+ con = (struct raptor_read_string_iostream_context*)user_data;
+ RAPTOR_FREE(raptor_read_string_iostream_context, con);
+ return;
+}
+
+static int
+raptor_read_string_iostream_read_bytes(void *user_data, void *ptr,
+ size_t size, size_t nmemb)
+{
+ struct raptor_read_string_iostream_context* con;
+ size_t avail;
+ size_t blen;
+
+ if(!ptr || size <= 0 || !nmemb)
+ return -1;
+
+ con = (struct raptor_read_string_iostream_context*)user_data;
+ if(con->offset >= con->length)
+ return 0;
+
+ avail = (con->length - con->offset) / size;
+ if(avail > nmemb)
+ avail = nmemb;
+ blen = (avail * size);
+ memcpy(ptr, (char*)con->string + con->offset, blen);
+ con->offset += blen;
+
+ return RAPTOR_BAD_CAST(int, avail);
+}
+
+static int
+raptor_read_string_iostream_read_eof(void *user_data)
+{
+ struct raptor_read_string_iostream_context* con;
+
+ con = (struct raptor_read_string_iostream_context*)user_data;
+ return (con->offset >= con->length);
+}
+
+
+static const raptor_iostream_handler raptor_iostream_read_string_handler = {
+ /* .version = */ 2,
+ /* .init = */ NULL,
+ /* .finish = */ raptor_read_string_iostream_finish,
+ /* .write_byte = */ NULL,
+ /* .write_bytes = */ NULL,
+ /* .write_end = */ NULL,
+ /* .read_bytes = */ raptor_read_string_iostream_read_bytes,
+ /* .read_eof = */ raptor_read_string_iostream_read_eof
+};
+
+
+/**
+ * raptor_new_iostream_from_string:
+ * @world: raptor world
+ * @string: pointer to string
+ * @length: length of string
+ *
+ * Constructor - create a new iostream reading from a string.
+ *
+ * Return value: new #raptor_iostream object or NULL on failure
+ **/
+raptor_iostream*
+raptor_new_iostream_from_string(raptor_world *world,
+ void *string, size_t length)
+{
+ raptor_iostream* iostr;
+ struct raptor_read_string_iostream_context* con;
+ const raptor_iostream_handler* handler;
+ const unsigned int mode = RAPTOR_IOSTREAM_MODE_READ;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!string)
+ return NULL;
+
+ raptor_world_open(world);
+
+ handler = &raptor_iostream_read_string_handler;
+ if(!raptor_iostream_check_handler(handler, mode))
+ return NULL;
+
+ iostr = RAPTOR_CALLOC(raptor_iostream*, 1, sizeof(*iostr));
+ if(!iostr)
+ return NULL;
+
+ con = RAPTOR_CALLOC(struct raptor_read_string_iostream_context*, 1,
+ sizeof(*con));
+ if(!con) {
+ RAPTOR_FREE(raptor_iostream, iostr);
+ return NULL;
+ }
+
+ con->string = string;
+ con->length = length;
+
+ iostr->world = world;
+ iostr->handler = handler;
+ iostr->user_data = (void*)con;
+ iostr->mode = mode;
+
+ if(iostr->handler->init && iostr->handler->init(iostr->user_data)) {
+ raptor_free_iostream(iostr);
+ return NULL;
+ }
+ return iostr;
+}
+
+
+/**
+ * raptor_iostream_tell:
+ * @iostr: raptor iostream
+ *
+ * Get the offset in the iostream.
+ *
+ * Return value: offset in iostream
+ **/
+unsigned long
+raptor_iostream_tell(raptor_iostream *iostr)
+{
+ return RAPTOR_BAD_CAST(unsigned long, iostr->offset);
+}
+
+
+/* internal */
+raptor_world*
+raptor_iostream_get_world(raptor_iostream *iostr)
+{
+ return iostr->world;
+}
+
+
+#endif
+
+
+
+#ifdef STANDALONE
+
+/* one more prototype */
+int main(int argc, char *argv[]);
+
+
+static const char *program;
+
+#define READ_BUFFER_SIZE 256
+
+
+static int
+test_write_to_filename(raptor_world *world, const char* filename,
+ const char* test_string, size_t test_string_len,
+ const unsigned int expected_bytes_count)
+{
+ raptor_iostream *iostr = NULL;
+ unsigned long count;
+ int rc = 0;
+ const char* const label="write iostream to filename";
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Testing %s '%s'\n", program, label, filename);
+#endif
+
+ iostr = raptor_new_iostream_to_filename(world, filename);
+ if(!iostr) {
+ fprintf(stderr, "%s: Failed to create %s '%s'\n", program, label, filename);
+ rc = 1;
+ goto tidy;
+ }
+
+ raptor_iostream_write_bytes(test_string, 1, test_string_len, iostr);
+ raptor_iostream_write_byte('\n', iostr);
+
+ count = raptor_iostream_tell(iostr);
+ if(count != expected_bytes_count) {
+ fprintf(stderr, "%s: %s wrote %d bytes, expected %d\n", program, label,
+ (int)count, expected_bytes_count);
+ rc = 1;
+ goto tidy;
+ }
+
+ tidy:
+ if(iostr)
+ raptor_free_iostream(iostr);
+ remove(filename);
+
+ if(rc)
+ fprintf(stderr, "%s: FAILED Testing %s\n", program, label);
+
+ return rc;
+}
+
+
+static int
+test_write_to_file_handle(raptor_world *world, FILE* handle,
+ const char* test_string, size_t test_string_len,
+ const unsigned int expected_bytes_count)
+{
+ raptor_iostream *iostr = NULL;
+ unsigned long count;
+ int rc = 0;
+ const char* const label="write iostream to file handle";
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Testing %s\n", program, label);
+#endif
+
+ iostr = raptor_new_iostream_to_file_handle(world, handle);
+ if(!iostr) {
+ fprintf(stderr, "%s: Failed to create %s\n", program, label);
+ rc = 1;
+ goto tidy;
+ }
+
+ raptor_iostream_write_bytes(test_string, 1, test_string_len, iostr);
+ raptor_iostream_write_byte('\n', iostr);
+
+ count = raptor_iostream_tell(iostr);
+ if(count != expected_bytes_count) {
+ fprintf(stderr, "%s: %s wrote %d bytes, expected %d\n", program, label,
+ (int)count, expected_bytes_count);
+ rc = 1;
+ }
+
+ tidy:
+ if(iostr)
+ raptor_free_iostream(iostr);
+
+ if(rc)
+ fprintf(stderr, "%s: FAILED Testing %s\n", program, label);
+
+ return rc;
+}
+
+
+static int
+test_write_to_string(raptor_world *world,
+ const char* test_string, size_t test_string_len,
+ const unsigned int expected_bytes_count)
+{
+ raptor_iostream *iostr = NULL;
+ unsigned long count;
+ int rc = 0;
+ void *string = NULL;
+ size_t string_len;
+ const char* const label="write iostream to a string";
+
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Testing %s\n", program, label);
+#endif
+
+ iostr = raptor_new_iostream_to_string(world, &string, &string_len, NULL);
+ if(!iostr) {
+ fprintf(stderr, "%s: Failed to create write iostream to string\n",
+ program);
+ rc = 1;
+ goto tidy;
+ }
+
+ raptor_iostream_write_bytes(test_string, 1, test_string_len, iostr);
+ raptor_iostream_write_byte('\n', iostr);
+
+ count = raptor_iostream_tell(iostr);
+ if(count != expected_bytes_count) {
+ fprintf(stderr, "%s: %s wrote %d bytes, expected %d\n", program, label,
+ (int)count, expected_bytes_count);
+ rc = 1;
+ }
+
+ raptor_free_iostream(iostr); iostr = NULL;
+
+ if(!string) {
+ fprintf(stderr, "%s: %s failed to create a string\n", program, label);
+ return 1;
+ }
+ if(string_len != count) {
+ fprintf(stderr, "%s: %s created a string length %d, expected %d\n",
+ program, label, (int)string_len, (int)count);
+ return 1;
+ }
+
+ tidy:
+ if(string)
+ raptor_free_memory(string);
+ if(iostr)
+ raptor_free_iostream(iostr);
+
+ if(rc)
+ fprintf(stderr, "%s: FAILED Testing %s\n", program, label);
+
+ return rc;
+}
+
+
+static int
+test_write_to_sink(raptor_world *world,
+ const char* test_string, size_t test_string_len,
+ const unsigned int expected_bytes_count)
+{
+ raptor_iostream *iostr = NULL;
+ unsigned long count;
+ int rc = 0;
+ const char* const label="write iostream to sink";
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Testing %s\n", program, label);
+#endif
+
+ iostr = raptor_new_iostream_to_sink(world);
+ if(!iostr) {
+ fprintf(stderr, "%s: Failed to create %s\n", program, label);
+ rc = 1;
+ goto tidy;
+ }
+
+ raptor_iostream_write_bytes(test_string, 1, test_string_len, iostr);
+ raptor_iostream_write_byte('\n', iostr);
+
+ count = raptor_iostream_tell(iostr);
+ if(count != expected_bytes_count) {
+ fprintf(stderr, "%s: %s wrote %d bytes, expected %d\n", program, label,
+ (int)count, expected_bytes_count);
+ rc = 1;
+ }
+
+ tidy:
+ if(iostr)
+ raptor_free_iostream(iostr);
+
+ if(rc)
+ fprintf(stderr, "%s: FAILED Testing %s\n", program, label);
+
+ return rc;
+}
+
+
+static int
+test_read_from_filename(raptor_world *world,
+ const char* filename,
+ const char* test_string, size_t test_string_len,
+ const unsigned int expected_len,
+ const unsigned int expected_len2)
+{
+ raptor_iostream *iostr = NULL;
+ char buffer[READ_BUFFER_SIZE];
+ unsigned long count;
+ int rc = 0;
+ const char* const label="read iostream from filename";
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Testing %s '%s'\n", program, label, filename);
+#endif
+
+ iostr = raptor_new_iostream_from_filename(world, filename);
+ if(!iostr) {
+ fprintf(stderr, "%s: Failed to create %s '%s'\n", program, label, filename);
+ rc = 1;
+ goto tidy;
+ }
+
+ count = raptor_iostream_read_bytes(buffer, 1, test_string_len, iostr);
+ if(count != expected_len) {
+ fprintf(stderr, "%s: %s read %d bytes, expected %d\n", program, label,
+ (int)count, (int)expected_len);
+ rc = 1;
+ goto tidy;
+ }
+
+ count = raptor_iostream_read_bytes(buffer, 1, test_string_len, iostr);
+ if(count != expected_len2) {
+ fprintf(stderr, "%s: %s read %d bytes, expected %d\n", program, label,
+ (int)count, (int)expected_len2);
+ rc = 1;
+ goto tidy;
+ }
+
+ if(!raptor_iostream_read_eof(iostr)) {
+ fprintf(stderr, "%s: %s not EOF as expected\n", program, label);
+ rc = 1;
+ goto tidy;
+ }
+
+ if(strncmp(buffer, test_string, test_string_len)) {
+ fprintf(stderr, "%s: %s returned '%s' expected '%s'\n", program, label,
+ buffer, test_string);
+ rc = 1;
+ }
+
+ tidy:
+ if(iostr)
+ raptor_free_iostream(iostr);
+
+ if(rc)
+ fprintf(stderr, "%s: FAILED Testing %s\n", program, label);
+
+ return rc;
+}
+
+
+static int
+test_read_from_file_handle(raptor_world *world, FILE* handle,
+ const char* test_string, size_t test_string_len,
+ const unsigned int expected_len,
+ const unsigned int expected_len2)
+{
+ raptor_iostream *iostr = NULL;
+ char buffer[READ_BUFFER_SIZE];
+ unsigned long count;
+ int rc = 0;
+ const char* const label="read iostream from file handle";
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Testing %s\n", program, label);
+#endif
+
+ iostr = raptor_new_iostream_from_file_handle(world, handle);
+ if(!iostr) {
+ fprintf(stderr, "%s: Failed to create %s\n", program, label);
+ rc = 1;
+ goto tidy;
+ }
+
+ count = raptor_iostream_read_bytes(buffer, 1, test_string_len, iostr);
+ if(count != expected_len) {
+ fprintf(stderr, "%s: %s read %d bytes, expected %d\n", program, label,
+ (int)count, (int)expected_len);
+ rc = 1;
+ }
+
+ count = raptor_iostream_read_bytes(buffer, 1, test_string_len, iostr);
+ if(count != expected_len2) {
+ fprintf(stderr, "%s: %s read %d bytes, expected %d\n", program, label,
+ (int)count, (int)expected_len2);
+ rc = 1;
+ goto tidy;
+ }
+
+ if(!raptor_iostream_read_eof(iostr)) {
+ fprintf(stderr, "%s: %s not EOF as expected\n", program, label);
+ rc = 1;
+ }
+
+ if(strncmp(buffer, test_string, test_string_len)) {
+ fprintf(stderr, "%s: %s returned '%s' expected '%s'\n", program, label,
+ buffer, test_string);
+ rc = 1;
+ }
+
+ tidy:
+ if(iostr)
+ raptor_free_iostream(iostr);
+
+ if(rc)
+ fprintf(stderr, "%s: FAILED Testing %s\n", program, label);
+
+ return rc;
+}
+
+
+static int
+test_read_from_string(raptor_world *world,
+ const char* test_string, size_t test_string_len,
+ const unsigned int expected_len)
+{
+ raptor_iostream *iostr = NULL;
+ char buffer[READ_BUFFER_SIZE];
+ unsigned long count;
+ int rc = 0;
+ const char* const label="read iostream from a string";
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Testing %s\n", program, label);
+#endif
+
+ iostr = raptor_new_iostream_from_string(world,
+ (void*)test_string, test_string_len);
+ if(!iostr) {
+ fprintf(stderr, "%s: Failed to create %s\n", program, label);
+ rc = 1;
+ goto tidy;
+ }
+
+ count = raptor_iostream_read_bytes(buffer, 1, test_string_len, iostr);
+ if(count != expected_len) {
+ fprintf(stderr, "%s: %s read %d bytes, expected %d\n", program, label,
+ (int)count, (int)expected_len);
+ rc = 1;
+ }
+
+ if(!raptor_iostream_read_eof(iostr)) {
+ fprintf(stderr, "%s: %s not EOF as expected\n", program, label);
+ rc = 1;
+ }
+
+ if(strncmp(buffer, test_string, test_string_len)) {
+ fprintf(stderr, "%s: %s returned '%s' expected '%s'\n", program, label,
+ buffer, test_string);
+ rc = 1;
+ }
+
+ tidy:
+ if(iostr)
+ raptor_free_iostream(iostr);
+
+ if(rc)
+ fprintf(stderr, "%s: FAILED Testing %s\n", program, label);
+
+ return rc;
+}
+
+
+static int
+test_read_from_sink(raptor_world *world, size_t read_len, size_t expected_len)
+{
+ raptor_iostream *iostr = NULL;
+ char buffer[READ_BUFFER_SIZE];
+ unsigned long count;
+ int rc = 0;
+ const char* const label="read iostream from sink";
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Testing %s\n", program, label);
+#endif
+ expected_len = 0;
+ iostr = raptor_new_iostream_from_sink(world);
+ if(!iostr) {
+ fprintf(stderr, "%s: Failed to create %s\n", program, label);
+ rc = 1;
+ goto tidy;
+ }
+
+ count = raptor_iostream_read_bytes(buffer, 1, read_len, iostr);
+ if(count != expected_len) {
+ fprintf(stderr, "%s: %s read %d bytes, expected %d\n", program, label,
+ (int)count, (int)expected_len);
+ rc = 1;
+ }
+
+ if(!raptor_iostream_read_eof(iostr)) {
+ fprintf(stderr, "%s: %s not EOF as expected\n", program, label);
+ rc = 1;
+ }
+
+ tidy:
+ if(iostr)
+ raptor_free_iostream(iostr);
+
+ if(rc)
+ fprintf(stderr, "%s: FAILED Testing %s\n", program, label);
+
+ return rc;
+}
+
+
+#define OUT_FILENAME "out.bin"
+#define OUT_BYTES_COUNT 14
+#define TEST_STRING "Hello, world!"
+#define TEST_STRING_LEN 13
+#define IN_FILENAME "in.bin"
+
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world;
+ FILE *handle = NULL;
+ int failures = 0;
+
+ program = raptor_basename(argv[0]);
+
+ world = raptor_new_world();
+ if(!world || raptor_world_open(world))
+ exit(1);
+
+ /* Write tests */
+ failures+= test_write_to_filename(world, (const char*)OUT_FILENAME,
+ TEST_STRING, TEST_STRING_LEN, (int)OUT_BYTES_COUNT);
+ handle = fopen((const char*)OUT_FILENAME, "wb");
+ if(!handle) {
+ fprintf(stderr, "%s: Failed to create write file handle to file %s\n",
+ program, OUT_FILENAME);
+ failures++;
+ } else {
+ failures+= test_write_to_file_handle(world,
+ handle, TEST_STRING, TEST_STRING_LEN,
+ (int)OUT_BYTES_COUNT);
+ fclose(handle);
+ remove(OUT_FILENAME);
+ }
+
+ failures+= test_write_to_string(world,
+ TEST_STRING,
+ TEST_STRING_LEN, (int)OUT_BYTES_COUNT);
+ failures+= test_write_to_sink(world,
+ TEST_STRING,
+ TEST_STRING_LEN, (int)OUT_BYTES_COUNT);
+
+ remove(OUT_FILENAME);
+
+
+ /* Read tests */
+ handle = fopen((const char*)IN_FILENAME, "wb");
+ if(!handle) {
+ fprintf(stderr, "%s: Failed to create write handle to file %s\n",
+ program, IN_FILENAME);
+ failures++;
+ } else {
+ fwrite(TEST_STRING, 1, TEST_STRING_LEN, handle);
+ fclose(handle);
+
+ failures+= test_read_from_filename(world,
+ (const char*)IN_FILENAME,
+ TEST_STRING, TEST_STRING_LEN,
+ TEST_STRING_LEN, 0);
+ handle = fopen((const char*)IN_FILENAME, "rb");
+ if(!handle) {
+ fprintf(stderr, "%s: Failed to create read file handle to file %s\n",
+ program, IN_FILENAME);
+ failures++;
+ } else {
+ failures+= test_read_from_file_handle(world,
+ handle,
+ TEST_STRING, TEST_STRING_LEN,
+ TEST_STRING_LEN, 0);
+ fclose(handle); handle = NULL;
+ }
+ }
+
+ failures+= test_read_from_string(world,
+ TEST_STRING, TEST_STRING_LEN,
+ TEST_STRING_LEN);
+ failures+= test_read_from_sink(world, TEST_STRING_LEN, 0);
+
+ remove(IN_FILENAME);
+
+ raptor_free_world(world);
+
+ return failures;
+}
+
+#endif
diff --git a/src/raptor_json.c b/src/raptor_json.c
new file mode 100644
index 0000000..b05a608
--- /dev/null
+++ b/src/raptor_json.c
@@ -0,0 +1,785 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_json.c - Raptor JSON Parser
+ *
+ * RDF/JSON
+ * http://n2.talis.com/wiki/RDF_JSON_Specification
+ *
+ * Copyright (C) 2001-2010, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <yajl/yajl_parse.h>
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+typedef enum {
+ RAPTOR_JSON_STATE_ROOT,
+ RAPTOR_JSON_STATE_MAP_ROOT,
+ RAPTOR_JSON_STATE_TRIPLES_KEY,
+ RAPTOR_JSON_STATE_TRIPLES_ARRAY,
+ RAPTOR_JSON_STATE_TRIPLES_TRIPLE,
+ RAPTOR_JSON_STATE_TRIPLES_TERM,
+ RAPTOR_JSON_STATE_RESOURCES_SUBJECT_KEY,
+ RAPTOR_JSON_STATE_RESOURCES_PREDICATE,
+ RAPTOR_JSON_STATE_RESOURCES_OBJECT_ARRAY,
+ RAPTOR_JSON_STATE_RESOURCES_OBJECT
+} raptor_json_parse_state;
+
+typedef enum {
+ RAPTOR_JSON_TERM_UNKNOWN,
+ RAPTOR_JSON_TERM_SUBJECT,
+ RAPTOR_JSON_TERM_PREDICATE,
+ RAPTOR_JSON_TERM_OBJECT
+} raptor_json_term;
+
+typedef enum {
+ RAPTOR_JSON_ATTRIB_UNKNOWN,
+ RAPTOR_JSON_ATTRIB_VALUE,
+ RAPTOR_JSON_ATTRIB_LANG,
+ RAPTOR_JSON_ATTRIB_TYPE,
+ RAPTOR_JSON_ATTRIB_DATATYPE
+} raptor_json_term_attrib;
+
+
+/* When YAJL V1 support is dropped, this can be removed */
+#ifdef HAVE_YAJL2
+#define RAPTOR_YAJL_LEN_TYPE size_t
+#else
+#define RAPTOR_YAJL_LEN_TYPE unsigned int
+#endif
+
+/*
+ * JSON parser object
+ */
+struct raptor_json_parser_context_s {
+#ifdef HAVE_YAJL2
+#else
+ yajl_parser_config config;
+#endif
+ yajl_handle handle;
+
+ /* Parser state */
+ raptor_json_parse_state state;
+ raptor_json_term term;
+ raptor_json_term_attrib attrib;
+
+ /* Temporary storage, while creating terms */
+ raptor_term_type term_type;
+ unsigned char* term_value;
+ unsigned char* term_datatype;
+ unsigned char* term_lang;
+
+ /* Temporary storage, while creating statements */
+ raptor_statement statement;
+};
+
+typedef struct raptor_json_parser_context_s raptor_json_parser_context;
+
+
+static void
+raptor_json_reset_term(raptor_json_parser_context *context)
+{
+ if(context->term_value)
+ RAPTOR_FREE(char*, context->term_value);
+ if(context->term_lang)
+ RAPTOR_FREE(char*, context->term_lang);
+ if(context->term_datatype)
+ RAPTOR_FREE(char*, context->term_datatype);
+
+ context->term_value = NULL;
+ context->term_lang = NULL;
+ context->term_datatype = NULL;
+ context->term_type = RAPTOR_TERM_TYPE_UNKNOWN;
+ context->attrib = RAPTOR_JSON_ATTRIB_UNKNOWN;
+}
+
+static unsigned char*
+raptor_json_cstring_from_counted_string(raptor_parser *rdf_parser, const unsigned char* str, RAPTOR_YAJL_LEN_TYPE len)
+{
+ unsigned char *cstr = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(!cstr) {
+ raptor_parser_fatal_error(rdf_parser, "Out of memory");
+ return NULL;
+ }
+
+ memcpy(cstr, str, len);
+ cstr[len] = '\0';
+
+ return cstr;
+}
+
+static raptor_term*
+raptor_json_new_term_from_counted_string(raptor_parser *rdf_parser, const unsigned char* str, size_t len)
+{
+ raptor_term *term = NULL;
+
+ if(len > 2 && str[0] == '_' && str[1] == ':') {
+ const unsigned char *node_id = &str[2];
+ term = raptor_new_term_from_counted_blank(rdf_parser->world, node_id, len - 2);
+
+ } else {
+ raptor_uri *uri = raptor_new_uri_from_counted_string(rdf_parser->world, str, len);
+ if(!uri) {
+ unsigned char* cstr = raptor_json_cstring_from_counted_string(rdf_parser, str, RAPTOR_BAD_CAST(int, len));
+ raptor_parser_error(rdf_parser, "Could not create uri from '%s'", cstr);
+ RAPTOR_FREE(char*, cstr);
+ return NULL;
+ }
+
+ term = raptor_new_term_from_uri(rdf_parser->world, uri);
+ raptor_free_uri(uri);
+ }
+
+ return term;
+}
+
+
+static raptor_term*
+raptor_json_generate_term(raptor_parser *rdf_parser)
+{
+ raptor_json_parser_context *context = (raptor_json_parser_context*)rdf_parser->context;
+ raptor_term *term = NULL;
+
+ if(!context->term_value) {
+ raptor_parser_error(rdf_parser, "No value for term defined");
+ return NULL;
+ }
+
+ switch(context->term_type) {
+ case RAPTOR_TERM_TYPE_URI: {
+ raptor_uri *uri = raptor_new_uri(rdf_parser->world, context->term_value);
+ if(!uri) {
+ raptor_parser_error(rdf_parser, "Could not create uri from '%s'", context->term_value);
+ return NULL;
+ }
+ term = raptor_new_term_from_uri(rdf_parser->world, uri);
+ raptor_free_uri(uri);
+ break;
+ }
+ case RAPTOR_TERM_TYPE_LITERAL: {
+ raptor_uri *datatype_uri = NULL;
+ if(context->term_datatype) {
+ datatype_uri = raptor_new_uri(rdf_parser->world, context->term_datatype);
+ }
+ term = raptor_new_term_from_literal(rdf_parser->world, context->term_value, datatype_uri, context->term_lang);
+ if(datatype_uri)
+ raptor_free_uri(datatype_uri);
+ break;
+ }
+ case RAPTOR_TERM_TYPE_BLANK: {
+ unsigned char *node_id = context->term_value;
+ if(strlen((const char*)node_id) > 2 && node_id[0] == '_' && node_id[1] == ':') {
+ node_id = &node_id[2];
+ }
+ term = raptor_new_term_from_blank(rdf_parser->world, node_id);
+ break;
+ }
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ raptor_parser_error(rdf_parser, "No type for term defined");
+ break;
+ }
+
+ return term;
+}
+
+
+static int raptor_json_yajl_null(void * ctx)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)ctx;
+ raptor_parser_error(rdf_parser, "Nulls are not valid in RDF/JSON");
+ return 0;
+}
+
+static int raptor_json_yajl_boolean(void * ctx, int b)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)ctx;
+ raptor_parser_error(rdf_parser, "Booleans are not valid in RDF/JSON");
+ return 0;
+}
+
+#ifdef HAVE_YAJL2
+#define YAJL_INTEGER_CALLBACK_ARG_TYPE long long
+#else
+#define YAJL_INTEGER_CALLBACK_ARG_TYPE long
+#endif
+static int raptor_json_yajl_integer(void * ctx,
+ YAJL_INTEGER_CALLBACK_ARG_TYPE integerVal)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)ctx;
+ raptor_parser_error(rdf_parser, "Integers are not valid in RDF/JSON");
+ return 0;
+}
+
+static int raptor_json_yajl_double(void * ctx, double d)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)ctx;
+ raptor_parser_error(rdf_parser, "Floats are not valid in RDF/JSON");
+ return 0;
+}
+
+static int raptor_json_yajl_string(void * ctx, const unsigned char * str,
+ RAPTOR_YAJL_LEN_TYPE len)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)ctx;
+ raptor_json_parser_context *context;
+ context = (raptor_json_parser_context*)rdf_parser->context;
+
+ if(context->state == RAPTOR_JSON_STATE_TRIPLES_TERM ||
+ context->state == RAPTOR_JSON_STATE_RESOURCES_OBJECT) {
+ switch(context->attrib) {
+ case RAPTOR_JSON_ATTRIB_VALUE:
+ context->term_value = raptor_json_cstring_from_counted_string(rdf_parser, str, len);
+ break;
+ case RAPTOR_JSON_ATTRIB_LANG:
+ context->term_lang = raptor_json_cstring_from_counted_string(rdf_parser, str, len);
+ break;
+ case RAPTOR_JSON_ATTRIB_TYPE:
+ if(!strncmp((const char*)str, "uri", len)) {
+ context->term_type = RAPTOR_TERM_TYPE_URI;
+ } else if(!strncmp((const char*)str, "literal", len)) {
+ context->term_type = RAPTOR_TERM_TYPE_LITERAL;
+ } else if(!strncmp((const char*)str, "bnode", len)) {
+ context->term_type = RAPTOR_TERM_TYPE_BLANK;
+ } else {
+ unsigned char * cstr = raptor_json_cstring_from_counted_string(rdf_parser, str, len);
+ context->term_type = RAPTOR_TERM_TYPE_UNKNOWN;
+ raptor_parser_error(rdf_parser, "Unknown term type: %s", cstr);
+ RAPTOR_FREE(char*, cstr);
+ }
+ break;
+ case RAPTOR_JSON_ATTRIB_DATATYPE:
+ context->term_datatype = raptor_json_cstring_from_counted_string(rdf_parser, str, len);
+ break;
+ case RAPTOR_JSON_ATTRIB_UNKNOWN:
+ default:
+ raptor_parser_error(rdf_parser, "Unsupported term attribute in raptor_json_string");
+ break;
+ }
+ } else {
+ raptor_parser_error(rdf_parser, "Unexpected JSON string");
+ return 0;
+ }
+ return 1;
+}
+
+static int raptor_json_yajl_map_key(void * ctx, const unsigned char * str,
+ RAPTOR_YAJL_LEN_TYPE len)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)ctx;
+ raptor_json_parser_context *context;
+ context = (raptor_json_parser_context*)rdf_parser->context;
+
+ if(context->state == RAPTOR_JSON_STATE_MAP_ROOT) {
+ if(!strncmp((const char*)str, "triples", len)) {
+ context->state = RAPTOR_JSON_STATE_TRIPLES_KEY;
+ return 1;
+ } else {
+ if(context->statement.subject)
+ raptor_free_term(context->statement.subject);
+ context->statement.subject = raptor_json_new_term_from_counted_string(rdf_parser, str, len);
+ if(!context->statement.subject)
+ return 0;
+ context->state = RAPTOR_JSON_STATE_RESOURCES_SUBJECT_KEY;
+ return 1;
+ }
+ } else if(context->state == RAPTOR_JSON_STATE_RESOURCES_PREDICATE) {
+ if(context->statement.predicate)
+ raptor_free_term(context->statement.predicate);
+ context->statement.predicate = raptor_json_new_term_from_counted_string(rdf_parser, str, len);
+ if(!context->statement.predicate)
+ return 0;
+ return 1;
+ } else if(context->state == RAPTOR_JSON_STATE_TRIPLES_TRIPLE) {
+ if(!strncmp((const char*)str, "subject", len)) {
+ context->term = RAPTOR_JSON_TERM_SUBJECT;
+ return 1;
+ } else if(!strncmp((const char*)str, "predicate", len)) {
+ context->term = RAPTOR_JSON_TERM_PREDICATE;
+ return 1;
+ } else if(!strncmp((const char*)str, "object", len)) {
+ context->term = RAPTOR_JSON_TERM_OBJECT;
+ return 1;
+ } else {
+ raptor_parser_error(rdf_parser, "Unexpected JSON key name in triple definition");
+ return 0;
+ }
+ } else if(context->state == RAPTOR_JSON_STATE_TRIPLES_TERM ||
+ context->state == RAPTOR_JSON_STATE_RESOURCES_OBJECT) {
+ if(!strncmp((const char*)str, "value", len)) {
+ context->attrib = RAPTOR_JSON_ATTRIB_VALUE;
+ return 1;
+ } else if(!strncmp((const char*)str, "type", len)) {
+ context->attrib = RAPTOR_JSON_ATTRIB_TYPE;
+ return 1;
+ } else if(!strncmp((const char*)str, "datatype", len)) {
+ context->attrib = RAPTOR_JSON_ATTRIB_DATATYPE;
+ return 1;
+ } else if(!strncmp((const char*)str, "lang", len)) {
+ context->attrib = RAPTOR_JSON_ATTRIB_LANG;
+ return 1;
+ } else {
+ context->attrib = RAPTOR_JSON_ATTRIB_UNKNOWN;
+ raptor_parser_error(rdf_parser, "Unexpected key name in triple definition");
+ return 0;
+ }
+ return 1;
+ } else {
+ raptor_parser_error(rdf_parser, "Unexpected JSON map key");
+ return 0;
+ }
+}
+
+static int raptor_json_yajl_start_map(void * ctx)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)ctx;
+ raptor_json_parser_context *context;
+ context = (raptor_json_parser_context*)rdf_parser->context;
+
+ if(context->state == RAPTOR_JSON_STATE_ROOT) {
+ context->state = RAPTOR_JSON_STATE_MAP_ROOT;
+ return 1;
+ } else if(context->state == RAPTOR_JSON_STATE_RESOURCES_SUBJECT_KEY) {
+ context->state = RAPTOR_JSON_STATE_RESOURCES_PREDICATE;
+ return 1;
+ } else if(context->state == RAPTOR_JSON_STATE_RESOURCES_OBJECT_ARRAY) {
+ context->state = RAPTOR_JSON_STATE_RESOURCES_OBJECT;
+ return 1;
+ } else if(context->state == RAPTOR_JSON_STATE_TRIPLES_ARRAY) {
+ raptor_statement_clear(&context->statement);
+ context->term = RAPTOR_JSON_TERM_UNKNOWN;
+ context->state = RAPTOR_JSON_STATE_TRIPLES_TRIPLE;
+ return 1;
+ } else if(context->state == RAPTOR_JSON_STATE_TRIPLES_TRIPLE) {
+ context->state = RAPTOR_JSON_STATE_TRIPLES_TERM;
+ raptor_json_reset_term(context);
+ return 1;
+ } else {
+ raptor_parser_error(rdf_parser, "Unexpected start of JSON map");
+ return 0;
+ }
+}
+
+
+static int raptor_json_yajl_end_map(void * ctx)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)ctx;
+ raptor_json_parser_context *context;
+ context = (raptor_json_parser_context*)rdf_parser->context;
+
+ if(context->state == RAPTOR_JSON_STATE_RESOURCES_OBJECT) {
+ context->statement.object = raptor_json_generate_term(rdf_parser);
+ if(!context->statement.object)
+ return 0;
+
+ /* Generate the statement */
+ (*rdf_parser->statement_handler)(rdf_parser->user_data, &context->statement);
+
+ raptor_free_term(context->statement.object);
+ context->statement.object = NULL;
+ raptor_json_reset_term(context);
+
+ context->state = RAPTOR_JSON_STATE_RESOURCES_OBJECT_ARRAY;
+ return 1;
+ } else if(context->state == RAPTOR_JSON_STATE_RESOURCES_PREDICATE) {
+ context->state = RAPTOR_JSON_STATE_MAP_ROOT;
+ return 1;
+ } else if(context->state == RAPTOR_JSON_STATE_TRIPLES_TERM) {
+ raptor_term *term = raptor_json_generate_term(rdf_parser);
+ if(!term)
+ return 0;
+
+ /* Store the term in the statement */
+ switch(context->term) {
+ case RAPTOR_JSON_TERM_SUBJECT:
+ if(context->statement.subject)
+ raptor_free_term(context->statement.subject);
+ context->statement.subject = term;
+ break;
+ case RAPTOR_JSON_TERM_PREDICATE:
+ if(context->statement.predicate)
+ raptor_free_term(context->statement.predicate);
+ context->statement.predicate = term;
+ break;
+ case RAPTOR_JSON_TERM_OBJECT:
+ if(context->statement.object)
+ raptor_free_term(context->statement.object);
+ context->statement.object = term;
+ break;
+ case RAPTOR_JSON_TERM_UNKNOWN:
+ default:
+ raptor_parser_error(rdf_parser, "Unknown term in raptor_json_end_map");
+ break;
+ }
+
+ context->state = RAPTOR_JSON_STATE_TRIPLES_TRIPLE;
+ raptor_json_reset_term(context);
+ return 1;
+ } else if(context->state == RAPTOR_JSON_STATE_TRIPLES_TRIPLE) {
+ if(!context->statement.subject) {
+ raptor_parser_error(rdf_parser, "Triple is missing a subject term");
+ return 0;
+ } else if(!context->statement.predicate) {
+ raptor_parser_error(rdf_parser, "Triple is missing a predicate term");
+ return 0;
+ } else if(!context->statement.object) {
+ raptor_parser_error(rdf_parser, "Triple is missing a object term");
+ return 0;
+ } else {
+ /* Generate the statement */
+ (*rdf_parser->statement_handler)(rdf_parser->user_data, &context->statement);
+ }
+ raptor_statement_clear(&context->statement);
+ context->state = RAPTOR_JSON_STATE_TRIPLES_ARRAY;
+ return 1;
+ } else if(context->state == RAPTOR_JSON_STATE_TRIPLES_KEY) {
+ context->state = RAPTOR_JSON_STATE_MAP_ROOT;
+ return 1;
+ } else if(context->state == RAPTOR_JSON_STATE_MAP_ROOT) {
+ context->state = RAPTOR_JSON_STATE_ROOT;
+ return 1;
+ } else {
+ raptor_parser_error(rdf_parser, "Unexpected end of JSON map");
+ return 0;
+ }
+}
+
+static int raptor_json_yajl_start_array(void * ctx)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)ctx;
+ raptor_json_parser_context *context;
+ context = (raptor_json_parser_context*)rdf_parser->context;
+
+ if(context->state == RAPTOR_JSON_STATE_RESOURCES_PREDICATE) {
+ context->state = RAPTOR_JSON_STATE_RESOURCES_OBJECT_ARRAY;
+ return 1;
+ } else if(context->state == RAPTOR_JSON_STATE_TRIPLES_KEY) {
+ context->state = RAPTOR_JSON_STATE_TRIPLES_ARRAY;
+ return 1;
+ } else {
+ raptor_parser_error(rdf_parser, "Unexpected start of array");
+ return 0;
+ }
+}
+
+static int raptor_json_yajl_end_array(void * ctx)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)ctx;
+ raptor_json_parser_context *context;
+ context = (raptor_json_parser_context*)rdf_parser->context;
+
+ if(context->state == RAPTOR_JSON_STATE_RESOURCES_OBJECT_ARRAY) {
+ context->state = RAPTOR_JSON_STATE_RESOURCES_PREDICATE;
+ return 1;
+ } else if(context->state == RAPTOR_JSON_STATE_TRIPLES_ARRAY) {
+ context->state = RAPTOR_JSON_STATE_MAP_ROOT;
+ return 1;
+ } else {
+ raptor_parser_error(rdf_parser, "Unexpected end of array");
+ return 0;
+ }
+}
+
+
+static void*
+raptor_json_yajl_malloc(void *ctx, RAPTOR_YAJL_LEN_TYPE sz)
+{
+ return RAPTOR_MALLOC(void*, sz);
+}
+
+static void*
+raptor_json_yajl_realloc(void *ctx, void * ptr, RAPTOR_YAJL_LEN_TYPE sz)
+{
+ return RAPTOR_REALLOC(void*, ptr, sz);
+}
+
+static void
+raptor_json_yajl_free(void *ctx, void * ptr)
+{
+ RAPTOR_FREE(char*, ptr);
+}
+
+static yajl_alloc_funcs raptor_json_yajl_alloc_funcs = {
+ raptor_json_yajl_malloc,
+ raptor_json_yajl_realloc,
+ raptor_json_yajl_free,
+ NULL
+};
+
+static yajl_callbacks raptor_json_yajl_callbacks = {
+ raptor_json_yajl_null,
+ raptor_json_yajl_boolean,
+ raptor_json_yajl_integer,
+ raptor_json_yajl_double,
+ NULL,
+ raptor_json_yajl_string,
+ raptor_json_yajl_start_map,
+ raptor_json_yajl_map_key,
+ raptor_json_yajl_end_map,
+ raptor_json_yajl_start_array,
+ raptor_json_yajl_end_array
+};
+
+
+
+/**
+ * raptor_json_parse_init:
+ *
+ * Initialise the Raptor JSON parser.
+ *
+ * Return value: non 0 on failure
+ **/
+
+static int
+raptor_json_parse_init(raptor_parser* rdf_parser, const char *name)
+{
+ raptor_json_parser_context *context;
+ context = (raptor_json_parser_context*)rdf_parser->context;
+
+ /* Initialse the static statement */
+ raptor_statement_init(&context->statement, rdf_parser->world);
+
+ /* Configure the parser */
+#ifdef HAVE_YAJL2
+#else
+ context->config.allowComments = 1;
+ context->config.checkUTF8 = 0;
+#endif
+
+ return 0;
+}
+
+
+/*
+ * raptor_json_parse_terminate - Free the Raptor JSON parser
+ * @rdf_parser: parser object
+ *
+ **/
+static void
+raptor_json_parse_terminate(raptor_parser* rdf_parser)
+{
+ raptor_json_parser_context *context;
+ context = (raptor_json_parser_context*)rdf_parser->context;
+
+ if(context->handle)
+ yajl_free(context->handle);
+
+ raptor_json_reset_term(context);
+ raptor_statement_clear(&context->statement);
+}
+
+
+
+static int
+raptor_json_parse_chunk(raptor_parser* rdf_parser,
+ const unsigned char *s, size_t len,
+ int is_end)
+{
+ raptor_json_parser_context *context = (raptor_json_parser_context*)rdf_parser->context;
+ yajl_status status;
+ int result = 0;
+
+ if(len) {
+ /* Parse the chunk passed to us */
+ status = yajl_parse(context->handle, s, RAPTOR_BAD_CAST(int, len));
+
+ if(status != yajl_status_ok
+#ifdef HAVE_YAJL2
+#else
+ && status != yajl_status_insufficient_data
+#endif
+ )
+ {
+ unsigned char * str = yajl_get_error(context->handle, 1, s, RAPTOR_BAD_CAST(int, len));
+ raptor_parser_error(rdf_parser, "YAJL error: %s", (const char *) str);
+ result = 1;
+ yajl_free_error(context->handle, str);
+ }
+ }
+
+ if(is_end) {
+ /* parse any remaining buffered data */
+#ifdef HAVE_YAJL2
+#else
+#define yajl_complete_parse(h) yajl_parse_complete(h)
+#endif
+ status = yajl_complete_parse(context->handle);
+
+ if(status != yajl_status_ok)
+ {
+ unsigned char * str = yajl_get_error(context->handle, 0, NULL, 0);
+ raptor_parser_error(rdf_parser, "YAJL error: %s", (const char *) str);
+ result = 1;
+ yajl_free_error(context->handle, str);
+ }
+
+ raptor_json_reset_term(context);
+ raptor_statement_clear(&context->statement);
+ }
+
+ return result;
+}
+
+
+static int
+raptor_json_parse_start(raptor_parser* rdf_parser)
+{
+ raptor_json_parser_context *context = (raptor_json_parser_context*)rdf_parser->context;
+
+ /* Destroy the old parser */
+ if(context->handle)
+ yajl_free(context->handle);
+
+ /* Initialise a new parser */
+ context->handle = yajl_alloc(
+ &raptor_json_yajl_callbacks,
+#ifdef HAVE_YAJL2
+#else
+ &context->config,
+#endif
+ &raptor_json_yajl_alloc_funcs,
+ (void *)rdf_parser
+ );
+
+ if(!context->handle) {
+ raptor_parser_fatal_error(rdf_parser, "Failed to initialise YAJL parser");
+ return 1;
+ }
+
+ /* Initialise the parse state */
+#ifdef HAVE_YAJL2
+ yajl_config(context->handle, yajl_allow_comments, 1);
+ yajl_config(context->handle, yajl_dont_validate_strings, 1);
+#else
+#endif
+
+ context->state = RAPTOR_JSON_STATE_ROOT;
+ raptor_json_reset_term(context);
+ raptor_statement_clear(&context->statement);
+
+ return 0;
+}
+
+
+static int
+raptor_json_parse_recognise_syntax(raptor_parser_factory* factory,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier,
+ const unsigned char *suffix,
+ const char *mime_type)
+{
+ unsigned int pos = 0;
+ int score = 0;
+
+ if(suffix) {
+ if(!strcmp((const char*)suffix, "json"))
+ score = 8;
+ if(!strcmp((const char*)suffix, "js"))
+ score = 3;
+ } else if(identifier) {
+ if(strstr((const char*)identifier, "json"))
+ score = 4;
+ }
+
+ if(mime_type && strstr((const char*)mime_type, "json"))
+ score += 6;
+
+ /* Is the first non-whitespace character a curly brace? */
+ while(pos<len) {
+ if(isspace(buffer[pos])) {
+ pos++;
+ } else {
+ if(buffer[pos] == '{')
+ score += 2;
+ break;
+ }
+ }
+
+ return score;
+}
+
+
+static const char* const json_names[2] = { "json", NULL };
+
+static const char* const json_uri_strings[2] = {
+ "http://docs.api.talis.com/platform-api/output-types/rdf-json",
+ NULL
+};
+
+#define JSON_TYPES_COUNT 2
+static const raptor_type_q json_types[JSON_TYPES_COUNT + 1] = {
+ { "application/json", 16, 1},
+ { "text/json", 9, 1},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_json_parser_register_factory(raptor_parser_factory *factory)
+{
+ int rc = 0;
+
+ factory->desc.names = json_names;
+
+ factory->desc.mime_types = json_types;
+
+ factory->desc.label = "RDF/JSON (either Triples or Resource-Centric)";
+ factory->desc.uri_strings = json_uri_strings;
+
+ factory->desc.flags = 0;
+
+ factory->context_length = sizeof(raptor_json_parser_context);
+
+ factory->init = raptor_json_parse_init;
+ factory->terminate = raptor_json_parse_terminate;
+ factory->start = raptor_json_parse_start;
+ factory->chunk = raptor_json_parse_chunk;
+ factory->recognise_syntax = raptor_json_parse_recognise_syntax;
+
+ return rc;
+}
+
+
+int
+raptor_init_parser_json(raptor_world* world)
+{
+ return !raptor_world_register_parser_factory(world,
+ &raptor_json_parser_register_factory);
+}
diff --git a/src/raptor_json_writer.c b/src/raptor_json_writer.c
new file mode 100644
index 0000000..e7966b8
--- /dev/null
+++ b/src/raptor_json_writer.c
@@ -0,0 +1,349 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_json_writer.c - Raptor JSON Writer
+ *
+ * Copyright (C) 2008, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#ifndef STANDALONE
+
+#ifndef RAPTOR_JSON_WRITER_DATATYPES
+#define RAPTOR_JSON_WRITER_DATATYPES 0
+#endif
+
+struct raptor_json_writer_s {
+ raptor_world* world;
+
+ raptor_uri* base_uri;
+
+ /* outputting to this iostream */
+ raptor_iostream *iostr;
+
+#if RAPTOR_JSON_WRITER_DATATYPES == 1
+ raptor_uri* xsd_boolean_uri;
+ raptor_uri* xsd_decimal_uri;
+ raptor_uri* xsd_double_uri;
+ raptor_uri* xsd_integer_uri;
+#endif
+
+ /* current indent */
+ int indent;
+
+ /* indent step */
+ int indent_step;
+};
+
+
+
+/**
+ * raptor_new_json_writer:
+ * @world: raptor_world object
+ * @base_uri: Base URI for the writer
+ * @iostr: I/O stream to write to
+ *
+ * INTERNAL - Constructor - Create a new JSON writer writing to a raptor_iostream
+ *
+ * Return value: a new #raptor_json_writer object or NULL on failure
+ **/
+raptor_json_writer*
+raptor_new_json_writer(raptor_world* world,
+ raptor_uri* base_uri,
+ raptor_iostream* iostr)
+{
+ raptor_json_writer* json_writer;
+
+ json_writer = RAPTOR_CALLOC(raptor_json_writer*, 1, sizeof(*json_writer));
+
+ if(!json_writer)
+ return NULL;
+
+ json_writer->world = world;
+ json_writer->iostr = iostr;
+ json_writer->base_uri = base_uri;
+
+#if RAPTOR_JSON_WRITER_DATATYPES == 1
+ json_writer->xsd_boolean_uri = raptor_new_uri(world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#boolean");
+ json_writer->xsd_decimal_uri = raptor_new_uri(world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#decimal");
+ json_writer->xsd_double_uri = raptor_new_uri(world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#double");
+ json_writer->xsd_integer_uri = raptor_new_uri(world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#integer");
+#endif
+
+ json_writer->indent_step = 2;
+
+ return json_writer;
+}
+
+
+/**
+ * raptor_free_json_writer:
+ * @json_writer: JSON writer object
+ *
+ * INTERNAL - Destructor - Free JSON Writer
+ *
+ **/
+void
+raptor_free_json_writer(raptor_json_writer* json_writer)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN(json_writer, raptor_json_writer);
+
+#if RAPTOR_JSON_WRITER_DATATYPES == 1
+ if(json_writer->xsd_boolean_uri)
+ raptor_free_uri(json_writer->xsd_boolean_uri);
+ if(json_writer->xsd_decimal_uri)
+ raptor_free_uri(json_writer->xsd_decimal_uri);
+ if(json_writer->xsd_double_uri)
+ raptor_free_uri(json_writer->xsd_double_uri);
+ if(json_writer->xsd_integer_uri)
+ raptor_free_uri(json_writer->xsd_integer_uri);
+#endif
+
+ RAPTOR_FREE(raptor_json_writer, json_writer);
+}
+
+
+static int
+raptor_json_writer_quoted(raptor_json_writer* json_writer,
+ const char *value, size_t value_len)
+{
+ int rc = 0;
+
+ if(!value) {
+ raptor_iostream_counted_string_write("\"\"", 2, json_writer->iostr);
+ return 0;
+ }
+ if(!value_len)
+ value_len = strlen((const char*)value);
+
+ raptor_iostream_write_byte('\"', json_writer->iostr);
+ rc = raptor_string_python_write((const unsigned char*)value, value_len,
+ '"', 3,
+ json_writer->iostr);
+ raptor_iostream_write_byte('\"', json_writer->iostr);
+
+ return rc;
+}
+
+
+static int
+raptor_json_writer_spaces(raptor_json_writer* json_writer, int depth)
+{
+ int i;
+ for(i = 0; i < depth; i++)
+ raptor_iostream_write_byte(' ', json_writer->iostr);
+ return 0;
+}
+
+
+int
+raptor_json_writer_newline(raptor_json_writer* json_writer)
+{
+ raptor_iostream_write_byte('\n', json_writer->iostr);
+ if(json_writer->indent)
+ raptor_json_writer_spaces(json_writer, json_writer->indent);
+ return 0;
+}
+
+
+int
+raptor_json_writer_key_value(raptor_json_writer* json_writer,
+ const char* key, size_t key_len,
+ const char* value, size_t value_len)
+{
+ if(!key_len && key)
+ key_len = strlen(key);
+ if(!value_len && value)
+ value_len = strlen(value);
+
+ raptor_json_writer_quoted(json_writer, key, key_len);
+ raptor_iostream_counted_string_write(" : ", 3, json_writer->iostr);
+ raptor_json_writer_quoted(json_writer, value, value_len);
+
+ return 0;
+}
+
+
+int
+raptor_json_writer_key_uri_value(raptor_json_writer* json_writer,
+ const char* key, size_t key_len,
+ raptor_uri* uri)
+{
+ const char* value;
+ size_t value_len;
+ int rc = 0;
+
+ value = (const char*)raptor_uri_to_relative_counted_uri_string(json_writer->base_uri, uri, &value_len);
+ if(!value)
+ return 1;
+
+ if(key)
+ rc = raptor_json_writer_key_value(json_writer, key, key_len,
+ value, value_len);
+ else
+ rc = raptor_json_writer_quoted(json_writer, value, value_len);
+
+ RAPTOR_FREE(char*, value);
+
+ return rc;
+}
+
+
+int
+raptor_json_writer_start_block(raptor_json_writer* json_writer, char c)
+{
+ json_writer->indent += json_writer->indent_step;
+ raptor_iostream_write_byte(c, json_writer->iostr);
+ return 0;
+}
+
+
+int
+raptor_json_writer_end_block(raptor_json_writer* json_writer, char c)
+{
+ raptor_iostream_write_byte(c, json_writer->iostr);
+ json_writer->indent -= json_writer->indent_step;
+ return 0;
+}
+
+
+int
+raptor_json_writer_literal_object(raptor_json_writer* json_writer,
+ unsigned char* s, unsigned char* lang,
+ raptor_uri* datatype,
+ const char* key, const char* type_key)
+{
+
+ if(key) {
+ raptor_json_writer_start_block(json_writer, '{');
+ raptor_json_writer_newline(json_writer);
+
+ raptor_json_writer_quoted(json_writer, key, 0);
+
+ raptor_iostream_counted_string_write(" : ", 3, json_writer->iostr);
+ }
+
+ raptor_json_writer_quoted(json_writer, (const char*)s, 0);
+
+ if(datatype || lang) {
+ raptor_iostream_write_byte(',', json_writer->iostr);
+ raptor_json_writer_newline(json_writer);
+
+ if(datatype)
+ raptor_json_writer_key_uri_value(json_writer, "datatype", 8, datatype);
+
+ if(lang) {
+ if(datatype) {
+ raptor_iostream_write_byte(',', json_writer->iostr);
+ raptor_json_writer_newline(json_writer);
+ }
+
+ raptor_json_writer_key_value(json_writer, "lang", 4,
+ (const char*)lang, 0);
+ }
+ }
+
+ if(type_key) {
+ raptor_iostream_write_byte(',', json_writer->iostr);
+ raptor_json_writer_newline(json_writer);
+
+ raptor_json_writer_key_value(json_writer, type_key, 0, "literal", 0);
+ }
+
+ raptor_json_writer_newline(json_writer);
+
+ if(key) {
+ raptor_json_writer_end_block(json_writer, '}');
+ raptor_json_writer_newline(json_writer);
+ }
+
+ return 0;
+}
+
+
+int
+raptor_json_writer_blank_object(raptor_json_writer* json_writer,
+ const unsigned char* blank)
+{
+ raptor_json_writer_start_block(json_writer, '{');
+ raptor_json_writer_newline(json_writer);
+
+ raptor_iostream_counted_string_write("\"value\" : \"_:", 13,
+ json_writer->iostr);
+ raptor_iostream_string_write((const char*)blank, json_writer->iostr);
+ raptor_iostream_counted_string_write("\",", 2, json_writer->iostr);
+ raptor_json_writer_newline(json_writer);
+
+ raptor_iostream_counted_string_write("\"type\" : \"bnode\"", 16,
+ json_writer->iostr);
+ raptor_json_writer_newline(json_writer);
+
+ raptor_json_writer_end_block(json_writer, '}');
+ return 0;
+}
+
+
+int
+raptor_json_writer_uri_object(raptor_json_writer* json_writer,
+ raptor_uri* uri)
+{
+ raptor_json_writer_start_block(json_writer, '{');
+ raptor_json_writer_newline(json_writer);
+
+ raptor_json_writer_key_uri_value(json_writer, "value", 5, uri);
+ raptor_iostream_write_byte(',', json_writer->iostr);
+ raptor_json_writer_newline(json_writer);
+
+ raptor_iostream_counted_string_write("\"type\" : \"uri\"", 14,
+ json_writer->iostr);
+ raptor_json_writer_newline(json_writer);
+
+ raptor_json_writer_end_block(json_writer, '}');
+
+ return 0;
+}
+
+#endif
diff --git a/src/raptor_librdfa.c b/src/raptor_librdfa.c
new file mode 100644
index 0000000..b3c4304
--- /dev/null
+++ b/src/raptor_librdfa.c
@@ -0,0 +1,397 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_librdfa.c - Raptor RDFA Parser via librdfa implementation
+ *
+ * Copyright (C) 2008, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#include "rdfa.h"
+#include "rdfa_utils.h"
+
+
+#define RAPTOR_DEFAULT_RDFA_VERSION 0
+
+/*
+ * RDFA parser object
+ */
+struct raptor_librdfa_parser_context_s {
+ /* librdfa object */
+ rdfacontext* context;
+
+ /* static statement for use in passing to user code */
+ raptor_statement statement;
+
+ /* 10 for 1.0 11 for 1.1 or otherwise is default (== 1.1) */
+ int rdfa_version;
+};
+
+
+typedef struct raptor_librdfa_parser_context_s raptor_librdfa_parser_context;
+
+
+static int
+raptor_librdfa_parse_init(raptor_parser* rdf_parser, const char *name)
+{
+ raptor_librdfa_parser_context *librdfa_parser;
+ int rdfa_version = RAPTOR_DEFAULT_RDFA_VERSION;
+
+ librdfa_parser = (raptor_librdfa_parser_context*)rdf_parser->context;
+
+ raptor_statement_init(&rdf_parser->statement, rdf_parser->world);
+
+ if(!strcmp(name, "rdfa11"))
+ rdfa_version = 11;
+ else if(!strcmp(name, "rdfa10"))
+ rdfa_version = 10;
+
+ librdfa_parser->rdfa_version = rdfa_version;
+
+ return 0;
+}
+
+
+static void
+raptor_librdfa_parse_terminate(raptor_parser* rdf_parser)
+{
+ raptor_librdfa_parser_context *librdfa_parser;
+
+ librdfa_parser = (raptor_librdfa_parser_context*)rdf_parser->context;
+
+ if(librdfa_parser->context) {
+ rdfa_parse_end(librdfa_parser->context);
+ rdfa_free_context(librdfa_parser->context);
+ librdfa_parser->context = NULL;
+ }
+}
+
+
+static void
+raptor_librdfa_generate_statement(rdftriple* triple, void* callback_data)
+{
+ raptor_parser* parser = (raptor_parser*)callback_data;
+ raptor_statement *s = &parser->statement;
+ raptor_term *subject_term = NULL;
+ raptor_term *predicate_term = NULL;
+ raptor_uri *predicate_uri = NULL;
+ raptor_term *object_term = NULL;
+
+ if(!parser->emitted_default_graph) {
+ raptor_parser_start_graph(parser, NULL, 0);
+ parser->emitted_default_graph++;
+ }
+
+ if(!parser->statement_handler)
+ goto cleanup;
+
+ if(!triple->subject || !triple->predicate || !triple->object) {
+#ifdef RAPTOR_DEBUG
+ RAPTOR_FATAL1("Triple has NULL parts\n");
+#endif
+ rdfa_free_triple(triple);
+ return;
+ }
+
+ if(triple->predicate[0] == '_') {
+ raptor_parser_warning(parser,
+ "Ignoring RDFa triple with blank node predicate %s.",
+ triple->predicate);
+ rdfa_free_triple(triple);
+ return;
+ }
+
+ if(triple->object_type == RDF_TYPE_NAMESPACE_PREFIX) {
+#ifdef RAPTOR_DEBUG
+ RAPTOR_FATAL1("Triple has namespace object type\n");
+#endif
+ rdfa_free_triple(triple);
+ return;
+ }
+
+ if((triple->subject[0] == '_') && (triple->subject[1] == ':')) {
+ subject_term = raptor_new_term_from_blank(parser->world,
+ (const unsigned char*)triple->subject + 2);
+ } else {
+ raptor_uri* subject_uri;
+
+ subject_uri = raptor_new_uri(parser->world,
+ (const unsigned char*)triple->subject);
+ subject_term = raptor_new_term_from_uri(parser->world, subject_uri);
+ raptor_free_uri(subject_uri);
+ subject_uri = NULL;
+ }
+ s->subject = subject_term;
+
+
+ predicate_uri = raptor_new_uri(parser->world,
+ (const unsigned char*)triple->predicate);
+ if(!predicate_uri)
+ goto cleanup;
+
+ predicate_term = raptor_new_term_from_uri(parser->world, predicate_uri);
+ raptor_free_uri(predicate_uri);
+ predicate_uri = NULL;
+ s->predicate = predicate_term;
+
+
+ if(triple->object_type == RDF_TYPE_IRI) {
+ if((triple->object[0] == '_') && (triple->object[1] == ':')) {
+ object_term = raptor_new_term_from_blank(parser->world,
+ (const unsigned char*)triple->object + 2);
+ } else {
+ raptor_uri* object_uri;
+ object_uri = raptor_new_uri(parser->world,
+ (const unsigned char*)triple->object);
+ if(!object_uri)
+ goto cleanup;
+
+ object_term = raptor_new_term_from_uri(parser->world, object_uri);
+ raptor_free_uri(object_uri);
+ }
+ } else if(triple->object_type == RDF_TYPE_PLAIN_LITERAL) {
+ object_term = raptor_new_term_from_literal(parser->world,
+ (const unsigned char*)triple->object,
+ NULL,
+ (const unsigned char*)triple->language);
+
+ } else if(triple->object_type == RDF_TYPE_XML_LITERAL) {
+ raptor_uri* datatype_uri;
+ datatype_uri = raptor_new_uri_from_counted_string(parser->world,
+ (const unsigned char*)raptor_xml_literal_datatype_uri_string,
+ raptor_xml_literal_datatype_uri_string_len);
+ object_term = raptor_new_term_from_literal(parser->world,
+ (const unsigned char*)triple->object,
+ datatype_uri,
+ NULL);
+ raptor_free_uri(datatype_uri);
+ } else if(triple->object_type == RDF_TYPE_TYPED_LITERAL) {
+ raptor_uri *datatype_uri = NULL;
+ const unsigned char* language = (const unsigned char*)triple->language;
+
+ if(triple->datatype) {
+ /* If datatype, no language allowed */
+ language = NULL;
+ datatype_uri = raptor_new_uri(parser->world,
+ (const unsigned char*)triple->datatype);
+ if(!datatype_uri)
+ goto cleanup;
+ }
+
+ object_term = raptor_new_term_from_literal(parser->world,
+ (const unsigned char*)triple->object,
+ datatype_uri,
+ language);
+ raptor_free_uri(datatype_uri);
+ } else {
+ raptor_log_error_formatted(parser->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Triple has unknown object term type %d",
+ s->object->type);
+ goto cleanup;
+ }
+ s->object = object_term;
+
+ /* Generate statement */
+ (*parser->statement_handler)(parser->user_data, s);
+
+ cleanup:
+ rdfa_free_triple(triple);
+
+ if(subject_term)
+ raptor_free_term(subject_term);
+ if(predicate_term)
+ raptor_free_term(predicate_term);
+ if(object_term)
+ raptor_free_term(object_term);
+}
+
+
+static void
+raptor_librdfa_sax2_new_namespace_handler(void *user_data,
+ raptor_namespace* nspace)
+{
+ raptor_parser* rdf_parser;
+ rdf_parser = (raptor_parser*)user_data;
+ raptor_parser_start_namespace(rdf_parser, nspace);
+}
+
+
+
+static int
+raptor_librdfa_parse_start(raptor_parser* rdf_parser)
+{
+ raptor_locator *locator = &rdf_parser->locator;
+ raptor_librdfa_parser_context *librdfa_parser;
+ int rc;
+ char* base_uri_string = NULL;
+
+ librdfa_parser = (raptor_librdfa_parser_context*)rdf_parser->context;
+
+ locator->line = -1;
+ locator->column = -1;
+ locator->byte = 0;
+
+ if(rdf_parser->base_uri)
+ base_uri_string = (char*)raptor_uri_as_string(rdf_parser->base_uri);
+
+ if(librdfa_parser->context)
+ rdfa_free_context(librdfa_parser->context);
+ librdfa_parser->context = rdfa_create_context(base_uri_string);
+ if(!librdfa_parser->context)
+ return 1;
+
+ librdfa_parser->context->namespace_handler = raptor_librdfa_sax2_new_namespace_handler;
+ librdfa_parser->context->namespace_handler_user_data = rdf_parser;
+ librdfa_parser->context->world = rdf_parser->world;
+ librdfa_parser->context->locator = &rdf_parser->locator;
+
+ librdfa_parser->context->callback_data = rdf_parser;
+ /* returns triples */
+ rdfa_set_default_graph_triple_handler(librdfa_parser->context,
+ raptor_librdfa_generate_statement);
+
+ /* returns RDFa Processing Graph error triples - not used by raptor */
+ rdfa_set_processor_graph_triple_handler(librdfa_parser->context, NULL);
+
+ librdfa_parser->context->raptor_rdfa_version = librdfa_parser->rdfa_version;
+
+ rc = rdfa_parse_start(librdfa_parser->context);
+ if(rc != RDFA_PARSE_SUCCESS)
+ return 1;
+
+ return 0;
+}
+
+
+static int
+raptor_librdfa_parse_chunk(raptor_parser* rdf_parser,
+ const unsigned char *s, size_t len,
+ int is_end)
+{
+ raptor_librdfa_parser_context *librdfa_parser;
+ int rval;
+
+ librdfa_parser = (raptor_librdfa_parser_context*)rdf_parser->context;
+ rval = rdfa_parse_chunk(librdfa_parser->context, (char*)s, len, is_end);
+
+ if(is_end) {
+ if(rdf_parser->emitted_default_graph) {
+ raptor_parser_end_graph(rdf_parser, NULL, 0);
+ rdf_parser->emitted_default_graph--;
+ }
+ }
+
+ return rval != RDFA_PARSE_SUCCESS;
+}
+
+static int
+raptor_librdfa_parse_recognise_syntax(raptor_parser_factory* factory,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier,
+ const unsigned char *suffix,
+ const char *mime_type)
+{
+ int score = 0;
+
+ if(identifier) {
+ if(strstr((const char*)identifier, "RDFa"))
+ score = 10;
+ }
+
+ if(buffer && len) {
+#define HAS_RDFA_1 (raptor_memstr((const char*)buffer, len, "-//W3C//DTD XHTML+RDFa 1.0//EN") != NULL)
+#define HAS_RDFA_2 (raptor_memstr((const char*)buffer, len, "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd") != NULL)
+
+ if(HAS_RDFA_1 || HAS_RDFA_2)
+ score = 10;
+ }
+
+ return score;
+}
+
+
+static const char* const rdfa_names[4] = { "rdfa", "rdfa11", "rdfa10", NULL };
+
+static const char* const rdfa_uri_strings[3] = {
+ "http://www.w3.org/ns/formats/RDFa",
+ "http://www.w3.org/TR/rdfa/",
+ NULL
+};
+
+#define RDFA_TYPES_COUNT 2
+static const raptor_type_q html_types[RDFA_TYPES_COUNT + 1] = {
+ { "text/html", 9, 6},
+ { "application/xhtml+xml", 21, 8},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_librdfa_parser_register_factory(raptor_parser_factory *factory)
+{
+ int rc = 0;
+
+ factory->desc.names = rdfa_names;
+
+ factory->desc.mime_types = html_types;
+
+ factory->desc.label = "RDF/A via librdfa";
+ factory->desc.uri_strings = rdfa_uri_strings;
+
+ factory->desc.flags = 0;
+
+ factory->context_length = sizeof(raptor_librdfa_parser_context);
+
+ factory->init = raptor_librdfa_parse_init;
+ factory->terminate = raptor_librdfa_parse_terminate;
+ factory->start = raptor_librdfa_parse_start;
+ factory->chunk = raptor_librdfa_parse_chunk;
+ factory->recognise_syntax = raptor_librdfa_parse_recognise_syntax;
+
+ return rc;
+}
+
+
+int
+raptor_init_parser_rdfa(raptor_world* world)
+{
+ return !raptor_world_register_parser_factory(world,
+ &raptor_librdfa_parser_register_factory);
+}
diff --git a/src/raptor_libxml.c b/src/raptor_libxml.c
new file mode 100644
index 0000000..12dceed
--- /dev/null
+++ b/src/raptor_libxml.c
@@ -0,0 +1,880 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_libxml.c - Raptor libxml functions
+ *
+ * Copyright (C) 2000-2009, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2000-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+#ifdef RAPTOR_XML_LIBXML
+
+
+/* prototypes */
+static void raptor_libxml_warning(void* user_data, const char *msg, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+static void raptor_libxml_error_common(void* user_data, const char *msg, va_list args, const char *prefix, int is_fatal) RAPTOR_PRINTF_FORMAT(2, 0);
+static void raptor_libxml_error(void *context, const char *msg, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+static void raptor_libxml_fatal_error(void *context, const char *msg, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+
+static void raptor_libxml_xmlStructuredError_handler_global(void *user_data, xmlErrorPtr err);
+static void raptor_libxml_xmlStructuredError_handler_parsing(void *user_data, xmlErrorPtr err);
+
+
+
+static const char* const xml_warning_prefix="XML parser warning - ";
+static const char* const xml_error_prefix="XML parser error - ";
+static const char* const xml_generic_error_prefix="XML error - ";
+static const char* const xml_fatal_error_prefix="XML parser fatal error - ";
+static const char* const xml_validation_error_prefix="XML parser validation error - ";
+static const char* const xml_validation_warning_prefix="XML parser validation warning - ";
+
+
+#ifdef HAVE_XMLSAX2INTERNALSUBSET
+/* SAX2 - 2.6.0 or later */
+#define libxml2_internalSubset xmlSAX2InternalSubset
+#define libxml2_externalSubset xmlSAX2ExternalSubset
+#define libxml2_isStandalone xmlSAX2IsStandalone
+#define libxml2_hasInternalSubset xmlSAX2HasInternalSubset
+#define libxml2_hasExternalSubset xmlSAX2HasExternalSubset
+#define libxml2_resolveEntity xmlSAX2ResolveEntity
+#define libxml2_getEntity xmlSAX2GetEntity
+#define libxml2_getParameterEntity xmlSAX2GetParameterEntity
+#define libxml2_entityDecl xmlSAX2EntityDecl
+#define libxml2_unparsedEntityDecl xmlSAX2UnparsedEntityDecl
+#define libxml2_startDocument xmlSAX2StartDocument
+#define libxml2_endDocument xmlSAX2EndDocument
+#else
+/* SAX1 - before libxml2 2.6.0 */
+#define libxml2_internalSubset internalSubset
+#define libxml2_externalSubset externalSubset
+#define libxml2_isStandalone isStandalone
+#define libxml2_hasInternalSubset hasInternalSubset
+#define libxml2_hasExternalSubset hasExternalSubset
+#define libxml2_resolveEntity resolveEntity
+#define libxml2_getEntity getEntity
+#define libxml2_getParameterEntity getParameterEntity
+#define libxml2_entityDecl entityDecl
+#define libxml2_unparsedEntityDecl unparsedEntityDecl
+#define libxml2_startDocument startDocument
+#define libxml2_endDocument endDocument
+#endif
+
+
+static void
+raptor_libxml_internalSubset(void* user_data, const xmlChar *name,
+ const xmlChar *ExternalID, const xmlChar *SystemID) {
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ libxml2_internalSubset(sax2->xc, name, ExternalID, SystemID);
+}
+
+
+#ifdef RAPTOR_LIBXML_XMLSAXHANDLER_EXTERNALSUBSET
+static void
+raptor_libxml_externalSubset(void* user_data, const xmlChar *name,
+ const xmlChar *ExternalID, const xmlChar *SystemID)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ libxml2_externalSubset(sax2->xc, name, ExternalID, SystemID);
+}
+#endif
+
+
+static int
+raptor_libxml_isStandalone (void* user_data)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ return libxml2_isStandalone(sax2->xc);
+}
+
+
+static int
+raptor_libxml_hasInternalSubset (void* user_data)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ return libxml2_hasInternalSubset(sax2->xc);
+}
+
+
+static int
+raptor_libxml_hasExternalSubset (void* user_data)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ return libxml2_hasExternalSubset(sax2->xc);
+}
+
+
+static xmlParserInputPtr
+raptor_libxml_resolveEntity(void* user_data,
+ const xmlChar *publicId, const xmlChar *systemId)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ xmlParserCtxtPtr ctxt = sax2->xc;
+ const unsigned char *uri_string = NULL;
+ xmlParserInputPtr entity_input = NULL;
+ int load_entity = 0;
+
+ if(ctxt->input)
+ uri_string = RAPTOR_GOOD_CAST(const unsigned char *, ctxt->input->filename);
+
+ if(!uri_string)
+ uri_string = RAPTOR_GOOD_CAST(const unsigned char *, ctxt->directory);
+
+ load_entity = RAPTOR_OPTIONS_GET_NUMERIC(sax2, RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES);
+ if(load_entity)
+ load_entity = raptor_sax2_check_load_uri_string(sax2, uri_string);
+
+ if(load_entity) {
+ entity_input = xmlLoadExternalEntity(RAPTOR_GOOD_CAST(const char*, uri_string),
+ RAPTOR_GOOD_CAST(const char*, publicId),
+ ctxt);
+ } else {
+ RAPTOR_DEBUG4("Not loading entity URI %s by policy for publicId '%s' systemId '%s'\n", uri_string, publicId, systemId);
+ }
+
+ return entity_input;
+}
+
+
+static xmlEntityPtr
+raptor_libxml_getEntity(void* user_data, const xmlChar *name)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ xmlParserCtxtPtr xc = sax2->xc;
+ xmlEntityPtr ret = NULL;
+
+ if(!xc)
+ return NULL;
+
+ if(!xc->inSubset) {
+ /* looks for hardcoded set of entity names - lt, gt etc. */
+ ret = xmlGetPredefinedEntity(name);
+ if(ret) {
+ RAPTOR_DEBUG2("Entity '%s' found in predefined set\n", name);
+ return ret;
+ }
+ }
+
+ /* This section uses xmlGetDocEntity which looks for entities in
+ * memory only, never from a file or URI
+ */
+ if(xc->myDoc && (xc->myDoc->standalone == 1)) {
+ RAPTOR_DEBUG2("Entity '%s' document is standalone\n", name);
+ /* Document is standalone: no entities are required to interpret doc */
+ if(xc->inSubset == 2) {
+ xc->myDoc->standalone = 0;
+ ret = xmlGetDocEntity(xc->myDoc, name);
+ xc->myDoc->standalone = 1;
+ } else {
+ ret = xmlGetDocEntity(xc->myDoc, name);
+ if(!ret) {
+ xc->myDoc->standalone = 0;
+ ret = xmlGetDocEntity(xc->myDoc, name);
+ xc->myDoc->standalone = 1;
+ }
+ }
+ } else {
+ ret = xmlGetDocEntity(xc->myDoc, name);
+ }
+
+ if(ret && !ret->children &&
+ (ret->etype == XML_EXTERNAL_GENERAL_PARSED_ENTITY)) {
+ /* Entity is an external general parsed entity. It may be in a
+ * catalog file, user file or user URI
+ */
+ int val = 0;
+ xmlNodePtr children;
+ int load_entity = 0;
+
+ load_entity = RAPTOR_OPTIONS_GET_NUMERIC(sax2, RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES);
+ if(load_entity)
+ load_entity = raptor_sax2_check_load_uri_string(sax2, ret->URI);
+
+ if(!load_entity) {
+ RAPTOR_DEBUG2("Not getting entity URI %s by policy\n", ret->URI);
+ children = xmlNewText((const xmlChar*)"");
+ } else {
+ /* Disable SAX2 handlers so that the SAX2 events do not all get
+ * sent to callbacks during dealing with the entity parsing.
+ */
+ sax2->enabled = 0;
+ val = xmlParseCtxtExternalEntity(xc, ret->URI, ret->ExternalID, &children);
+ sax2->enabled = 1;
+ }
+
+ if(!val) {
+ xmlAddChildList((xmlNodePtr)ret, children);
+ } else {
+ xc->validate = 0;
+ return NULL;
+ }
+
+ ret->owner = 1;
+
+ /* Mark this entity as having been checked - never do this again */
+ if(!ret->checked)
+ ret->checked = 1;
+ }
+
+ return ret;
+}
+
+
+static xmlEntityPtr
+raptor_libxml_getParameterEntity(void* user_data, const xmlChar *name) {
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ return libxml2_getParameterEntity(sax2->xc, name);
+}
+
+
+static void
+raptor_libxml_entityDecl(void* user_data, const xmlChar *name, int type,
+ const xmlChar *publicId, const xmlChar *systemId,
+ xmlChar *content) {
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ libxml2_entityDecl(sax2->xc, name, type, publicId, systemId, content);
+}
+
+
+static void
+raptor_libxml_unparsedEntityDecl(void* user_data, const xmlChar *name,
+ const xmlChar *publicId, const xmlChar *systemId,
+ const xmlChar *notationName) {
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ libxml2_unparsedEntityDecl(sax2->xc, name, publicId, systemId, notationName);
+}
+
+
+static void
+raptor_libxml_startDocument(void* user_data) {
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ libxml2_startDocument(sax2->xc);
+}
+
+
+static void
+raptor_libxml_endDocument(void* user_data) {
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ xmlParserCtxtPtr xc = sax2->xc;
+
+ libxml2_endDocument(sax2->xc);
+
+ if(xc->myDoc) {
+ xmlFreeDoc(xc->myDoc);
+ xc->myDoc = NULL;
+ }
+}
+
+
+
+static void
+raptor_libxml_set_document_locator(void* user_data, xmlSAXLocatorPtr loc)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ sax2->loc = loc;
+}
+
+
+void
+raptor_libxml_update_document_locator(raptor_sax2* sax2,
+ raptor_locator* locator)
+{
+ /* for storing error info */
+ xmlSAXLocatorPtr loc = sax2 ? sax2->loc : NULL;
+ xmlParserCtxtPtr xc= sax2 ? sax2->xc : NULL;
+
+ if(xc && xc->inSubset)
+ return;
+
+ if(!locator)
+ return;
+
+ locator->line= -1;
+ locator->column= -1;
+
+ if(!xc)
+ return;
+
+ if(loc) {
+ locator->line = loc->getLineNumber(xc);
+ /* Seems to be broken */
+ /* locator->column = loc->getColumnNumber(xc); */
+ }
+
+}
+
+
+static void
+raptor_libxml_warning(void* user_data, const char *msg, ...)
+{
+ raptor_sax2* sax2 = NULL;
+ va_list args;
+ int prefix_length = RAPTOR_BAD_CAST(int, strlen(xml_warning_prefix));
+ int length;
+ char *nmsg;
+ int msg_len;
+
+ /* Work around libxml2 bug - sometimes the sax2->error
+ * returns a ctx, sometimes the userdata
+ */
+ if(((raptor_sax2*)user_data)->magic == RAPTOR_LIBXML_MAGIC)
+ sax2 = (raptor_sax2*)user_data;
+ else
+ /* user_data is not userData */
+ sax2 = (raptor_sax2*)((xmlParserCtxtPtr)user_data)->userData;
+
+ va_start(args, msg);
+
+ raptor_libxml_update_document_locator(sax2, sax2->locator);
+
+ msg_len = RAPTOR_BAD_CAST(int, strlen(msg));
+ length = prefix_length + msg_len + 1;
+ nmsg = RAPTOR_MALLOC(char*, length);
+ if(nmsg) {
+ memcpy(nmsg, xml_warning_prefix, prefix_length); /* Do not copy NUL */
+ memcpy(nmsg + prefix_length, msg, msg_len + 1); /* Copy NUL */
+ if(nmsg[length-2] == '\n')
+ nmsg[length-2]='\0';
+ }
+
+ raptor_log_error_varargs(sax2->world,
+ RAPTOR_LOG_LEVEL_WARN,
+ sax2->locator,
+ nmsg ? nmsg : msg,
+ args);
+ if(nmsg)
+ RAPTOR_FREE(char*, nmsg);
+ va_end(args);
+}
+
+
+static void
+raptor_libxml_error_common(void* user_data, const char *msg, va_list args,
+ const char *prefix, int is_fatal)
+{
+ raptor_sax2* sax2 = NULL;
+ int prefix_length = RAPTOR_BAD_CAST(int, strlen(prefix));
+ int length;
+ char *nmsg;
+ int msg_len;
+ raptor_world* world = NULL;
+ raptor_locator* locator = NULL;
+
+ if(user_data) {
+ /* Work around libxml2 bug - sometimes the sax2->error
+ * returns a user_data, sometimes the userdata
+ */
+ if(((raptor_sax2*)user_data)->magic == RAPTOR_LIBXML_MAGIC)
+ sax2 = (raptor_sax2*)user_data;
+ else
+ /* user_data is not userData */
+ sax2 = (raptor_sax2*)((xmlParserCtxtPtr)user_data)->userData;
+ }
+
+ if(sax2) {
+ world = sax2->world;
+ locator = sax2->locator;
+
+ if(locator)
+ raptor_libxml_update_document_locator(sax2, sax2->locator);
+ }
+
+ msg_len = RAPTOR_BAD_CAST(int, strlen(msg));
+ length = prefix_length + msg_len + 1;
+ nmsg = RAPTOR_MALLOC(char*, length);
+ if(nmsg) {
+ memcpy(nmsg, prefix, prefix_length); /* Do not copy NUL */
+ memcpy(nmsg + prefix_length, msg, msg_len + 1); /* Copy NUL */
+ if(nmsg[length-1] == '\n')
+ nmsg[length-1]='\0';
+ }
+
+ if(is_fatal)
+ raptor_log_error_varargs(world,
+ RAPTOR_LOG_LEVEL_FATAL,
+ locator,
+ nmsg ? nmsg : msg,
+ args);
+ else
+ raptor_log_error_varargs(world,
+ RAPTOR_LOG_LEVEL_ERROR,
+ locator,
+ nmsg ? nmsg : msg,
+ args);
+
+ if(nmsg)
+ RAPTOR_FREE(char*, nmsg);
+}
+
+
+static void
+raptor_libxml_error(void* user_data, const char *msg, ...)
+{
+ va_list args;
+
+ va_start(args, msg);
+ raptor_libxml_error_common(user_data, msg, args, xml_error_prefix, 0);
+ va_end(args);
+}
+
+
+
+void
+raptor_libxml_generic_error(void* user_data, const char *msg, ...)
+{
+ raptor_world* world = (raptor_world*)user_data;
+ va_list args;
+ const char* prefix = xml_generic_error_prefix;
+ int prefix_length = RAPTOR_BAD_CAST(int, strlen(prefix));
+ int length;
+ char *nmsg;
+ int msg_len;
+
+ va_start(args, msg);
+
+ msg_len = RAPTOR_BAD_CAST(int, strlen(msg));
+ length = prefix_length + msg_len + 1;
+ nmsg = RAPTOR_MALLOC(char*, length);
+ if(nmsg) {
+ memcpy(nmsg, prefix, prefix_length); /* Do not copy NUL */
+ memcpy(nmsg + prefix_length, msg, msg_len + 1); /* Copy NUL */
+ if(nmsg[length-1] == '\n')
+ nmsg[length-1]='\0';
+ }
+
+ raptor_log_error_varargs(world, RAPTOR_LOG_LEVEL_ERROR,
+ /* locator */ NULL,
+ nmsg ? nmsg : msg,
+ args);
+
+ if(nmsg)
+ RAPTOR_FREE(char*, nmsg);
+
+ va_end(args);
+}
+
+
+static void
+raptor_libxml_fatal_error(void* user_data, const char *msg, ...)
+{
+ va_list args;
+
+ va_start(args, msg);
+ raptor_libxml_error_common(user_data, msg, args, xml_fatal_error_prefix, 1);
+ va_end(args);
+}
+
+
+void
+raptor_libxml_validation_error(void* user_data, const char *msg, ...)
+{
+ va_list args;
+
+ va_start(args, msg);
+ raptor_libxml_error_common(user_data, msg, args,
+ xml_validation_error_prefix, 1);
+ va_end(args);
+}
+
+
+void
+raptor_libxml_validation_warning(void* user_data, const char *msg, ...)
+{
+ va_list args;
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ int prefix_length = RAPTOR_GOOD_CAST(int, strlen(xml_validation_warning_prefix));
+ int length;
+ char *nmsg;
+ int msg_len;
+
+ va_start(args, msg);
+
+ raptor_libxml_update_document_locator(sax2, sax2->locator);
+
+ msg_len = RAPTOR_BAD_CAST(int, strlen(msg));
+ length = prefix_length + msg_len + 1;
+ nmsg = RAPTOR_MALLOC(char*, length);
+ if(nmsg) {
+ memcpy(nmsg, xml_validation_warning_prefix, prefix_length); /* Do not copy NUL */
+ memcpy(nmsg + prefix_length, msg, msg_len + 1); /* Copy NUL */
+ if(nmsg[length-2] == '\n')
+ nmsg[length-2]='\0';
+ }
+
+ raptor_log_error_varargs(sax2->world,
+ RAPTOR_LOG_LEVEL_WARN,
+ sax2->locator,
+ nmsg ? nmsg : msg,
+ args);
+ if(nmsg)
+ RAPTOR_FREE(char*, nmsg);
+ va_end(args);
+}
+
+
+/*
+ * Initialise libxml for a particular SAX2 setup
+*/
+void
+raptor_libxml_sax_init(raptor_sax2* sax2)
+{
+ xmlSAXHandler *sax = &sax2->sax;
+
+ sax->internalSubset = raptor_libxml_internalSubset;
+ sax->isStandalone = raptor_libxml_isStandalone;
+ sax->hasInternalSubset = raptor_libxml_hasInternalSubset;
+ sax->hasExternalSubset = raptor_libxml_hasExternalSubset;
+ sax->resolveEntity = raptor_libxml_resolveEntity;
+ sax->getEntity = raptor_libxml_getEntity;
+ sax->getParameterEntity = raptor_libxml_getParameterEntity;
+ sax->entityDecl = raptor_libxml_entityDecl;
+ sax->attributeDecl = NULL; /* attributeDecl */
+ sax->elementDecl = NULL; /* elementDecl */
+ sax->notationDecl = NULL; /* notationDecl */
+ sax->unparsedEntityDecl = raptor_libxml_unparsedEntityDecl;
+ sax->setDocumentLocator = raptor_libxml_set_document_locator;
+ sax->startDocument = raptor_libxml_startDocument;
+ sax->endDocument = raptor_libxml_endDocument;
+ sax->startElement= raptor_sax2_start_element;
+ sax->endElement= raptor_sax2_end_element;
+ sax->reference = NULL; /* reference */
+ sax->characters= raptor_sax2_characters;
+ sax->cdataBlock= raptor_sax2_cdata; /* like <![CDATA[...]> */
+ sax->ignorableWhitespace= raptor_sax2_cdata;
+ sax->processingInstruction = NULL; /* processingInstruction */
+ sax->comment = raptor_sax2_comment; /* comment */
+ sax->warning = (warningSAXFunc)raptor_libxml_warning;
+ sax->error = (errorSAXFunc)raptor_libxml_error;
+ sax->fatalError = (fatalErrorSAXFunc)raptor_libxml_fatal_error;
+ sax->serror = (xmlStructuredErrorFunc)raptor_libxml_xmlStructuredError_handler_parsing;
+
+#ifdef RAPTOR_LIBXML_XMLSAXHANDLER_EXTERNALSUBSET
+ sax->externalSubset = raptor_libxml_externalSubset;
+#endif
+
+#ifdef RAPTOR_LIBXML_XMLSAXHANDLER_INITIALIZED
+ sax->initialized = 1;
+#endif
+}
+
+
+void
+raptor_libxml_free(xmlParserCtxtPtr xc) {
+ libxml2_endDocument(xc);
+
+ if(xc->myDoc) {
+ xmlFreeDoc(xc->myDoc);
+ xc->myDoc = NULL;
+ }
+
+ xmlFreeParserCtxt(xc);
+}
+
+
+int
+raptor_libxml_init(raptor_world* world)
+{
+ xmlInitParser();
+
+ if(world->libxml_flags & RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE) {
+ world->libxml_saved_structured_error_context = xmlGenericErrorContext;
+ world->libxml_saved_structured_error_handler = xmlStructuredError;
+ /* sets xmlGenericErrorContext and xmlStructuredError */
+ xmlSetStructuredErrorFunc(world,
+ (xmlStructuredErrorFunc)raptor_libxml_xmlStructuredError_handler_global);
+ }
+
+ if(world->libxml_flags & RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE) {
+ world->libxml_saved_generic_error_context = xmlGenericErrorContext;
+ world->libxml_saved_generic_error_handler = xmlGenericError;
+ /* sets xmlGenericErrorContext and xmlGenericError */
+ xmlSetGenericErrorFunc(world,
+ (xmlGenericErrorFunc)raptor_libxml_generic_error);
+ }
+
+ return 0;
+}
+
+
+void
+raptor_libxml_finish(raptor_world* world)
+{
+ if(world->libxml_flags & RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE)
+ xmlSetStructuredErrorFunc(world->libxml_saved_structured_error_context,
+ world->libxml_saved_structured_error_handler);
+
+ if(world->libxml_flags & RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE)
+ xmlSetGenericErrorFunc(world->libxml_saved_generic_error_context,
+ world->libxml_saved_generic_error_handler);
+
+ xmlCleanupParser();
+}
+
+
+#if LIBXML_VERSION >= 20632
+#define XML_LAST_DL XML_FROM_SCHEMATRONV
+#else
+#if LIBXML_VERSION >= 20621
+#define XML_LAST_DL XML_FROM_I18N
+#else
+#if LIBXML_VERSION >= 20617
+#define XML_LAST_DL XML_FROM_WRITER
+#else
+#if LIBXML_VERSION >= 20616
+#define XML_LAST_DL XML_FROM_CHECK
+#else
+#if LIBXML_VERSION >= 20615
+#define XML_LAST_DL XML_FROM_VALID
+#else
+#define XML_LAST_DL XML_FROM_XSLT
+#endif
+#endif
+#endif
+#endif
+#endif
+
+/* All other symbols not specifically below noted were added during
+ * the period 2-10 October 2003 which is before the minimum libxml2
+ * version 2.6.8 release date of Mar 23 2004.
+ *
+ * When the minimum libxml2 version goes up, the #ifdefs for
+ * older versions can be removed.
+ */
+static const char* const raptor_libxml_domain_labels[XML_LAST_DL+2]= {
+ NULL, /* XML_FROM_NONE */
+ "parser", /* XML_FROM_PARSER */
+ "tree", /* XML_FROM_TREE */
+ "namespace", /* XML_FROM_NAMESPACE */
+ "validity", /* XML_FROM_DTD */
+ "HTML parser", /* XML_FROM_HTML */
+ "memory", /* XML_FROM_MEMORY */
+ "output", /* XML_FROM_OUTPUT */
+ "I/O" , /* XML_FROM_IO */
+ "FTP", /* XML_FROM_FTP */
+#if LIBXML_VERSION >= 20618
+ /* 2005-02-13 - v2.6.18 */
+ "HTTP", /* XML_FROM_HTTP */
+#endif
+ "XInclude", /* XML_FROM_XINCLUDE */
+ "XPath", /* XML_FROM_XPATH */
+ "parser", /* XML_FROM_XPOINTER */
+ "regexp", /* XML_FROM_REGEXP */
+ "Schemas datatype", /* XML_FROM_DATATYPE */
+ "Schemas parser", /* XML_FROM_SCHEMASP */
+ "Schemas validity", /* XML_FROM_SCHEMASV */
+ "Relax-NG parser", /* XML_FROM_RELAXNGP */
+ "Relax-NG validity", /* XML_FROM_RELAXNGV */
+ "Catalog", /* XML_FROM_CATALOG */
+ "C14", /* XML_FROM_C14N */
+ "XSLT", /* XML_FROM_XSLT */
+#if LIBXML_VERSION >= 20615
+ /* 2004-10-07 - v2.6.15 */
+ "validity", /* XML_FROM_VALID */
+#endif
+#if LIBXML_VERSION >= 20616
+ /* 2004-11-04 - v2.6.16 */
+ "checking", /* XML_FROM_CHECK */
+#endif
+#if LIBXML_VERSION >= 20617
+ /* 2005-01-04 - v2.6.17 */
+ "writer", /* XML_FROM_WRITER */
+#endif
+#if LIBXML_VERSION >= 20621
+ /* 2005-08-24 - v2.6.21 */
+ "module", /* XML_FROM_MODULE */
+ "encoding", /* XML_FROM_I18N */
+#endif
+#if LIBXML_VERSION >= 20632
+ /* 2008-04-08 - v2.6.32 */
+ "schematronv", /* XML_FROM_SCHEMATRONV */
+#endif
+ NULL
+};
+
+
+static void
+raptor_libxml_xmlStructuredError_handler_common(raptor_world *world,
+ raptor_locator *locator,
+ xmlErrorPtr err)
+{
+ raptor_stringbuffer* sb;
+ char *nmsg;
+ raptor_log_level level = RAPTOR_LOG_LEVEL_ERROR;
+
+ if(err == NULL || err->code == XML_ERR_OK || err->level == XML_ERR_NONE)
+ return;
+
+ /* Do not warn about things with no location */
+ if(err->level == XML_ERR_WARNING && !err->file)
+ return;
+
+ /* XML fatal errors never cause an abort */
+ if(err->level == XML_ERR_FATAL)
+ err->level = XML_ERR_ERROR;
+
+
+ sb = raptor_new_stringbuffer();
+ if(err->domain != XML_FROM_HTML)
+ raptor_stringbuffer_append_counted_string(sb, (const unsigned char*)"XML ",
+ 4, 1);
+
+ if(err->domain != XML_FROM_NONE && err->domain < XML_LAST_DL) {
+ const unsigned char* label;
+ label = (const unsigned char*)raptor_libxml_domain_labels[(int)err->domain];
+ raptor_stringbuffer_append_string(sb, label, 1);
+ raptor_stringbuffer_append_counted_string(sb,
+ (const unsigned char*)" ", 1, 1);
+ }
+
+ if(err->level == XML_ERR_WARNING)
+ raptor_stringbuffer_append_counted_string(sb,
+ (const unsigned char*)"warning: ",
+ 9, 1);
+ else /* XML_ERR_ERROR or XML_ERR_FATAL */
+ raptor_stringbuffer_append_counted_string(sb, (const unsigned char*)"error: ",
+ 7, 1);
+
+ if(err->message) {
+ unsigned char* msg;
+ size_t len;
+ msg = (unsigned char*)err->message;
+ len= strlen((const char*)msg);
+ if(len && msg[len-1] == '\n')
+ msg[--len]='\0';
+
+ raptor_stringbuffer_append_counted_string(sb, msg, len, 1);
+ }
+
+#if LIBXML_VERSION >= 20618
+ /* 2005-02-13 - v2.6.18 */
+
+ /* str1 has the detailed HTTP error */
+ if(err->domain == XML_FROM_HTTP && err->str1) {
+ unsigned char* msg;
+ size_t len;
+ msg = (unsigned char*)err->str1;
+ len= strlen((const char*)msg);
+ if(len && msg[len-1] == '\n')
+ msg[--len]='\0';
+
+ raptor_stringbuffer_append_counted_string(sb, (const unsigned char*)" - ",
+ 3, 1);
+ raptor_stringbuffer_append_counted_string(sb, msg, len, 1);
+ }
+#endif
+
+ /* When err->domain == XML_FROM_XPATH then err->int1 is
+ * the offset into err->str1, the line with the error
+ */
+ if(err->domain == XML_FROM_XPATH && err->str1) {
+ raptor_stringbuffer_append_counted_string(sb, (const unsigned char*)" in ",
+ 4, 1);
+ raptor_stringbuffer_append_string(sb, (const unsigned char*)err->str1, 1);
+ }
+
+ nmsg = (char*)raptor_stringbuffer_as_string(sb);
+ if(err->level == XML_ERR_FATAL)
+ level = RAPTOR_LOG_LEVEL_FATAL;
+ else if(err->level == XML_ERR_ERROR)
+ level = RAPTOR_LOG_LEVEL_ERROR;
+ else
+ level = RAPTOR_LOG_LEVEL_WARN;
+
+ raptor_log_error(world, level, locator, nmsg);
+
+ raptor_free_stringbuffer(sb);
+}
+
+
+/* user_data is a raptor_world* */
+static void
+raptor_libxml_xmlStructuredError_handler_global(void *user_data,
+ xmlErrorPtr err)
+{
+ raptor_world *world = NULL;
+
+ /* user_data may point to a raptor_world* */
+ if(user_data) {
+ world = (raptor_world*)user_data;
+ if(world->magic != RAPTOR2_WORLD_MAGIC)
+ world = NULL;
+ }
+
+ raptor_libxml_xmlStructuredError_handler_common(world, NULL, err);
+}
+
+
+/* user_data may be a raptor_sax2; err->ctxt->userData may point to a
+ * raptor_sax2* */
+static void
+raptor_libxml_xmlStructuredError_handler_parsing(void *user_data,
+ xmlErrorPtr err)
+{
+ raptor_sax2* sax2 = NULL;
+
+ /* user_data may point to a raptor_sax2* */
+ if(user_data) {
+ sax2 = (raptor_sax2*)user_data;
+ if(sax2->magic != RAPTOR_LIBXML_MAGIC)
+ sax2 = NULL;
+ }
+
+ /* err->ctxt->userData may point to a raptor_sax2* */
+ if(err && err->ctxt) {
+ xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr)err->ctxt;
+ if(ctxt->userData) {
+ sax2 = (raptor_sax2*)ctxt->userData;
+ if(sax2->magic != RAPTOR_LIBXML_MAGIC)
+ sax2 = NULL;
+ }
+ }
+
+ if(sax2)
+ raptor_libxml_xmlStructuredError_handler_common(sax2->world, sax2->locator,
+ err);
+ else
+ raptor_libxml_xmlStructuredError_handler_common(NULL, NULL, err);
+}
+
+
+/* end if RAPTOR_XML_LIBXML */
+#endif
diff --git a/src/raptor_locator.c b/src/raptor_locator.c
new file mode 100644
index 0000000..46023bb
--- /dev/null
+++ b/src/raptor_locator.c
@@ -0,0 +1,252 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_locator.c - Raptor parsing locator functions
+ *
+ * Copyright (C) 2002-2006, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2002-2006, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/**
+ * raptor_locator_print:
+ * @locator: #raptor_locator to print
+ * @stream: stream to print to
+ *
+ * Print a raptor locator to a stream.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_locator_print(raptor_locator* locator, FILE *stream)
+{
+ if(!locator)
+ return 1;
+
+ if(locator->uri)
+ fprintf(stream, "URI %s", raptor_uri_as_string(locator->uri));
+ else if(locator->file)
+ fprintf(stream, "file %s", locator->file);
+ else
+ return 0;
+ if(locator->line >= 0) {
+ fprintf(stream, ":%d", locator->line);
+ if(locator->column >= 0)
+ fprintf(stream, " column %d", locator->column);
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_locator_format:
+ * @buffer: buffer to store format
+ * @length: size of buffer
+ * @locator: #raptor_locator to format
+ *
+ * Format a raptor locator as a string.
+ *
+ * If buffer is NULL or length is insufficient for the size of
+ * the locator, returns the number of additional bytes required
+ * in the buffer to write the locator.
+ *
+ * Return value: 0 on success, >0 if additional bytes required in buffer, <0 on failure
+ **/
+int
+raptor_locator_format(char *buffer, size_t length, raptor_locator* locator)
+{
+ size_t bufsize = 0;
+ const char* label_str;
+ size_t label_len = 0;
+ const char* value_str = NULL;
+ size_t value_len;
+
+ if(!locator)
+ return -1;
+
+ #define URI_STR "URI "
+ #define URI_STR_LEN 4 /* strlen(URI_STR) */
+ #define FILE_STR "file "
+ #define FILE_STR_LEN 5 /* strlen(FILE_STR) */
+ #define COLUMN_STR " column "
+ #define COLUMN_STR_LEN 8 /* strlen(COLUMN_STR) */
+
+ if(locator->uri) {
+ label_str = URI_STR;
+ label_len = URI_STR_LEN;
+ value_str = (const char*)raptor_uri_as_counted_string(locator->uri,
+ &value_len);
+ } else if(locator->file) {
+ label_str = FILE_STR;
+ label_len = FILE_STR_LEN;
+ value_str = locator->file;
+ value_len = strlen(value_str);
+ } else
+ return -1;
+
+ bufsize = label_len + value_len;
+
+ if(locator->line > 0) {
+ bufsize += 1 + raptor_format_integer(NULL, 0, locator->line, /* base */ 10,
+ -1, '\0');
+ if(locator->column >= 0)
+ bufsize += COLUMN_STR_LEN +
+ raptor_format_integer(NULL, 0, locator->column, /* base */ 10,
+ -1, '\0');
+ }
+
+ if(!buffer || !length || length < (bufsize + 1)) /* +1 for NUL */
+ return RAPTOR_BAD_CAST(int, bufsize);
+
+
+ memcpy(buffer, label_str, label_len);
+ buffer += label_len;
+ memcpy(buffer, value_str, value_len);
+ buffer += value_len;
+
+ if(locator->line > 0) {
+ *buffer ++ = ':';
+ buffer += raptor_format_integer(buffer, length,
+ locator->line, /* base */ 10,
+ -1, '\0');
+ if(locator->column >= 0) {
+ memcpy(buffer, COLUMN_STR, COLUMN_STR_LEN);
+ buffer += COLUMN_STR_LEN;
+ (void)raptor_format_integer(buffer, length,
+ locator->column, /* base */ 10,
+ -1, '\0');
+ }
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_locator_line:
+ * @locator: locator
+ *
+ * Get line number from locator.
+ *
+ * Return value: integer line number, or -1 if there is no line number available
+ **/
+int
+raptor_locator_line(raptor_locator *locator)
+{
+ if(!locator)
+ return -1;
+ return locator->line;
+}
+
+
+/**
+ * raptor_locator_column:
+ * @locator: locator
+ *
+ * Get column number from locator.
+ *
+ * Return value: integer column number, or -1 if there is no column number available
+ **/
+int
+raptor_locator_column(raptor_locator *locator)
+{
+ if(!locator)
+ return -1;
+ return locator->column;
+}
+
+
+/**
+ * raptor_locator_byte:
+ * @locator: locator
+ *
+ * Get the locator byte offset from locator.
+ *
+ * Return value: integer byte number, or -1 if there is no byte offset available
+ **/
+int
+raptor_locator_byte(raptor_locator *locator)
+{
+ if(!locator)
+ return -1;
+ return locator->byte;
+}
+
+
+/**
+ * raptor_locator_file:
+ * @locator: locator
+ *
+ * Get file name from locator.
+ *
+ * Return value: string file name, or NULL if there is no filename available
+ **/
+const char *
+raptor_locator_file(raptor_locator *locator)
+{
+ if(!locator)
+ return NULL;
+ return locator->file;
+}
+
+
+/**
+ * raptor_locator_uri:
+ * @locator: locator
+ *
+ * Get URI from locator.
+ *
+ * Returns a pointer to a shared string version of the URI in
+ * the locator. This must be copied if it is needed.
+ *
+ * Return value: string URI, or NULL if there is no URI available
+ **/
+const char *
+raptor_locator_uri(raptor_locator *locator)
+{
+ if(!locator)
+ return NULL;
+
+ return (const char*)raptor_uri_as_string(locator->uri);
+}
diff --git a/src/raptor_log.c b/src/raptor_log.c
new file mode 100644
index 0000000..a334966
--- /dev/null
+++ b/src/raptor_log.c
@@ -0,0 +1,164 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_log.c - Raptor log handling
+ *
+ * Copyright (C) 2000-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2000-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+static const char* const raptor_log_level_labels[RAPTOR_LOG_LEVEL_LAST + 1] = {
+ "none",
+ "trace",
+ "debug",
+ "info",
+ "warning",
+ "error",
+ "fatal error"
+};
+
+
+/**
+ * raptor_log_level_get_label:
+ * @level: log message level
+ *
+ * Get label for a log message level
+ *
+ * Return value: label string or NULL if level is not valid
+ */
+const char*
+raptor_log_level_get_label(raptor_log_level level)
+{
+ return (level <= RAPTOR_LOG_LEVEL_LAST) ? raptor_log_level_labels[level] : NULL;
+}
+
+
+void
+raptor_log_error_varargs(raptor_world* world, raptor_log_level level,
+ raptor_locator* locator,
+ const char* message, va_list arguments)
+{
+ char *buffer = NULL;
+ size_t length;
+
+ if(level == RAPTOR_LOG_LEVEL_NONE)
+ return;
+
+ if(world->internal_ignore_errors)
+ return;
+
+ length = raptor_vasprintf(&buffer, message, arguments);
+ if(!buffer) {
+ if(locator && world) {
+ raptor_locator_print(locator, stderr);
+ fputc(' ', stderr);
+ }
+ fputs("raptor ", stderr);
+ fputs(raptor_log_level_labels[level], stderr);
+ fputs(" - ", stderr);
+ vfprintf(stderr, message, arguments);
+ fputc('\n', stderr);
+ return;
+ }
+
+ if(length >= 1 && buffer[length-1] == '\n')
+ buffer[length-1]='\0';
+
+ raptor_log_error(world, level, locator, buffer);
+
+ RAPTOR_FREE(char*, buffer);
+}
+
+
+void
+raptor_log_error_formatted(raptor_world* world, raptor_log_level level,
+ raptor_locator* locator,
+ const char* message, ...)
+{
+ va_list arguments;
+
+ va_start(arguments, message);
+ raptor_log_error_varargs(world, level, locator, message, arguments);
+ va_end(arguments);
+}
+
+
+/* internal */
+void
+raptor_log_error(raptor_world* world, raptor_log_level level,
+ raptor_locator* locator, const char* text)
+{
+ raptor_log_handler handler;
+
+ memset(&world->message, '\0', sizeof(&world->message));
+ world->message.code = -1;
+ world->message.domain = RAPTOR_DOMAIN_NONE;
+ world->message.level = level;
+ world->message.locator = locator;
+ world->message.text = text;
+
+ if(level == RAPTOR_LOG_LEVEL_NONE)
+ return;
+
+ if(world->internal_ignore_errors)
+ return;
+
+ handler = world->message_handler;
+ if(handler)
+ /* This is the place in raptor that ALL of the user error handler
+ * functions are called.
+ */
+ handler(world->message_handler_user_data, &world->message);
+ else {
+ if(locator) {
+ raptor_locator_print(locator, stderr);
+ fputc(' ', stderr);
+ }
+ fputs("raptor ", stderr);
+ fputs(raptor_log_level_labels[level], stderr);
+ fputs(" - ", stderr);
+ fputs(text, stderr);
+ fputc('\n', stderr);
+ }
+}
diff --git a/src/raptor_memstr.c b/src/raptor_memstr.c
new file mode 100644
index 0000000..d3100f7
--- /dev/null
+++ b/src/raptor_memstr.c
@@ -0,0 +1,81 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_memstr.c - search for a string in a block of memory
+ *
+ * Copyright (C) 2008, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <string.h>
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/*
+ * raptor_memstr:
+ * @haystack: memory block to search in
+ * @haystack_len: size of memory block
+ * @needle: string to search with
+ *
+ * INTERNAL: Search for a string in a block of memory
+ *
+ * The block of memory in @haystack may not be NUL terminated but
+ * the searching for @needle will end if a NUL is found in @haystack.
+ *
+ * Return value: pointer to match string or NULL on failure or failed to find
+ */
+const char*
+raptor_memstr(const char *haystack, size_t haystack_len, const char *needle)
+{
+ size_t needle_len;
+ const char *p;
+
+ if(!haystack || !needle)
+ return NULL;
+
+ if(!*needle)
+ return haystack;
+
+ needle_len = strlen(needle);
+
+ /* loop invariant: haystack_len is always length of remaining buffer at *p */
+ for(p = haystack;
+ (haystack_len >= needle_len) && *p;
+ p++, haystack_len--) {
+
+ /* check match */
+ if(!memcmp(p, needle, needle_len))
+ return p;
+ }
+
+ return NULL;
+}
+
+
diff --git a/src/raptor_namespace.c b/src/raptor_namespace.c
new file mode 100644
index 0000000..b1e1519
--- /dev/null
+++ b/src/raptor_namespace.c
@@ -0,0 +1,1149 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_namespace.c - Raptor XML namespace classes
+ *
+ * Copyright (C) 2002-2009, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2002-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/* Define these for far too much output */
+#undef RAPTOR_DEBUG_VERBOSE
+
+
+/*
+ * Namespaces in XML
+ * http://www.w3.org/TR/1999/REC-xml-names-19990114/#nsc-NSDeclared
+ * (section 4) says:
+ *
+ * --------------------------------------------------------------------
+ * The prefix xml is by definition bound to the namespace name
+ * http://www.w3.org/XML/1998/namespace
+ * --------------------------------------------------------------------
+ *
+ * Errata NE05
+ * http://www.w3.org/XML/xml-names-19990114-errata#NE05
+ * changes that to read:
+ *
+ * --------------------------------------------------------------------
+ * The prefix xml is by definition bound to the namespace name
+ * http://www.w3.org/XML/1998/namespace. It may, but need not, be
+ * declared, and must not be bound to any other namespace name. No
+ * other prefix may be bound to this namespace name.
+ *
+ * The prefix xmlns is used only to declare namespace bindings and is
+ * by definition bound to the namespace name
+ * http://www.w3.org/2000/xmlns/. It must not be declared. No other
+ * prefix may be bound to this namespace name.
+ *
+ * All other prefixes beginning with the three-letter sequence x, m, l,
+ * in any case combination, are reserved. This means that
+ * * users should not use them except as defined by later specifications
+ * * processors must not treat them as fatal errors.
+ * --------------------------------------------------------------------
+ *
+ * Thus should define it in the table of namespaces before we start.
+ *
+ * We *can* also define others, but let's not.
+ *
+ */
+
+const unsigned char * const raptor_xml_namespace_uri = (const unsigned char *)"http://www.w3.org/XML/1998/namespace";
+const unsigned char * const raptor_rdf_namespace_uri = (const unsigned char *)"http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+const unsigned int raptor_rdf_namespace_uri_len = 43;
+const unsigned char * const raptor_rdf_schema_namespace_uri = (const unsigned char *)"http://www.w3.org/2000/01/rdf-schema#";
+const unsigned int raptor_rdf_schema_namespace_uri_len = 37;
+const unsigned char * const raptor_xmlschema_datatypes_namespace_uri = (const unsigned char *)"http://www.w3.org/2001/XMLSchema#";
+const unsigned char * const raptor_owl_namespace_uri = (const unsigned char *)"http://www.w3.org/2002/07/owl#";
+
+
+/* hash function to hash namespace prefix strings (usually short strings)
+ *
+ * Uses DJ Bernstein original hash function - good on short text keys.
+ */
+static unsigned int
+raptor_hash_ns_string(const unsigned char *str, int length)
+{
+ unsigned int hash = 5381;
+ int c;
+
+ for(; length && (c = *str++); length--) {
+ hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
+ }
+
+ return hash;
+}
+
+
+#define RAPTOR_NAMESPACES_HASHTABLE_SIZE 1024
+/**
+ * raptor_namespaces_init:
+ * @world: raptor_world object
+ * @nstack: #raptor_namespace_stack to initialise
+ * @defaults: namespaces to initialise.
+ *
+ * Initialise an existing namespaces stack object
+ *
+ * This sets up the stack optionally with some common RDF namespaces.
+ *
+ * @defaults can be 0 for none, 1 for just XML, 2 for RDF, RDFS, OWL
+ * and XSD (RDQL uses this) or 3+ undefined.
+ *
+ * Return value: non-0 on error
+ */
+int
+raptor_namespaces_init(raptor_world* world,
+ raptor_namespace_stack *nstack,
+ int defaults)
+{
+ int failures = 0;
+
+ nstack->world = world;
+
+ nstack->size = 0;
+
+ nstack->table_size = RAPTOR_NAMESPACES_HASHTABLE_SIZE;
+ nstack->table = RAPTOR_CALLOC(raptor_namespace**,
+ RAPTOR_NAMESPACES_HASHTABLE_SIZE,
+ sizeof(raptor_namespace*));
+ if(!nstack->table)
+ return -1;
+
+ nstack->def_namespace = NULL;
+
+ nstack->rdf_ms_uri = raptor_new_uri_from_counted_string(nstack->world,
+ (const unsigned char*)raptor_rdf_namespace_uri,
+ raptor_rdf_namespace_uri_len);
+ failures += !nstack->rdf_ms_uri;
+
+ nstack->rdf_schema_uri = raptor_new_uri_from_counted_string(nstack->world,
+ (const unsigned char*)raptor_rdf_schema_namespace_uri,
+ raptor_rdf_schema_namespace_uri_len);
+ failures += !nstack->rdf_schema_uri;
+
+ /* raptor_new_namespace_from_uri() that eventually gets called by
+ * raptor_new_namespace() in raptor_namespaces_start_namespace_full()
+ * needs rdf_ms_uri and rdf_schema_uri
+ * - do not call if we had failures initializing those uris */
+ if(defaults && !failures) {
+ /* defined at level -1 since always 'present' when inside the XML world */
+ failures += raptor_namespaces_start_namespace_full(nstack,
+ (const unsigned char*)"xml",
+ raptor_xml_namespace_uri, -1);
+ if(defaults >= 2) {
+ failures += raptor_namespaces_start_namespace_full(nstack,
+ (const unsigned char*)"rdf",
+ raptor_rdf_namespace_uri, 0);
+ failures += raptor_namespaces_start_namespace_full(nstack,
+ (const unsigned char*)"rdfs",
+ raptor_rdf_schema_namespace_uri, 0);
+ failures += raptor_namespaces_start_namespace_full(nstack,
+ (const unsigned char*)"xsd",
+ raptor_xmlschema_datatypes_namespace_uri, 0);
+ failures += raptor_namespaces_start_namespace_full(nstack,
+ (const unsigned char*)"owl",
+ raptor_owl_namespace_uri, 0);
+ }
+ }
+ return failures;
+}
+
+
+/**
+ * raptor_new_namespaces:
+ * @world: raptor_world object
+ * @defaults: namespaces to initialise
+ *
+ * Constructor - create a new #raptor_namespace_stack.
+ *
+ * See raptor_namespaces_init() for the values of @defaults.
+ *
+ * Return value: a new namespace stack or NULL on failure
+ **/
+raptor_namespace_stack *
+raptor_new_namespaces(raptor_world* world, int defaults)
+{
+ raptor_namespace_stack *nstack;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ nstack = RAPTOR_CALLOC(raptor_namespace_stack*, 1, sizeof(*nstack));
+ if(!nstack)
+ return NULL;
+
+ if(raptor_namespaces_init(world, nstack, defaults)) {
+ raptor_free_namespaces(nstack);
+ nstack = NULL;
+ }
+
+ return nstack;
+}
+
+
+/**
+ * raptor_namespaces_start_namespace:
+ * @nstack: namespace stack
+ * @nspace: namespace to start
+ *
+ * Start a namespace on a stack of namespaces.
+ **/
+void
+raptor_namespaces_start_namespace(raptor_namespace_stack *nstack,
+ raptor_namespace *nspace)
+{
+ unsigned int hash = raptor_hash_ns_string(nspace->prefix,
+ nspace->prefix_length);
+ const int bucket = hash % nstack->table_size;
+
+ nstack->size++;
+
+ if(nstack->table[bucket])
+ nspace->next = nstack->table[bucket];
+ nstack->table[bucket] = nspace;
+
+ if(!nstack->def_namespace)
+ nstack->def_namespace = nspace;
+
+#ifndef STANDALONE
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG3("start namespace prefix %s depth %d\n", nspace->prefix ? (char*)nspace->prefix : "(default)", nspace->depth);
+#endif
+#endif
+
+}
+
+
+/**
+ * raptor_namespaces_start_namespace_full:
+ * @nstack: namespace stack
+ * @prefix: new namespace prefix (or NULL)
+ * @ns_uri_string: new namespace URI (or NULL)
+ * @depth: new namespace depth
+ *
+ * Create a new namespace and start it on a stack of namespaces.
+ *
+ * See raptor_new_namespace() for the meanings of @prefix,
+ * @ns_uri_string and @depth for namespaces.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_namespaces_start_namespace_full(raptor_namespace_stack *nstack,
+ const unsigned char *prefix,
+ const unsigned char *ns_uri_string,
+ int depth)
+{
+ raptor_namespace *ns;
+
+ ns = raptor_new_namespace(nstack, prefix, ns_uri_string, depth);
+ if(!ns)
+ return 1;
+
+ raptor_namespaces_start_namespace(nstack, ns);
+ return 0;
+}
+
+
+/**
+ * raptor_namespaces_clear:
+ * @nstack: namespace stack
+ *
+ * Empty a namespace stack of namespaces and any other resources.
+ **/
+void
+raptor_namespaces_clear(raptor_namespace_stack *nstack)
+{
+ if(nstack->table) {
+ int bucket;
+
+ for(bucket = 0; bucket < nstack->table_size; bucket++) {
+ raptor_namespace *ns = nstack->table[bucket];
+ while(ns) {
+ raptor_namespace* next_ns = ns->next;
+
+ raptor_free_namespace(ns);
+ nstack->size--;
+ ns = next_ns;
+ }
+ nstack->table[bucket] = NULL;
+ }
+
+ RAPTOR_FREE(raptor_namespaces, nstack->table);
+ nstack->table = NULL;
+ nstack->table_size = 0;
+ }
+
+ if(nstack->world) {
+ if(nstack->rdf_ms_uri) {
+ raptor_free_uri(nstack->rdf_ms_uri);
+ nstack->rdf_ms_uri = NULL;
+ }
+ if(nstack->rdf_schema_uri) {
+ raptor_free_uri(nstack->rdf_schema_uri);
+ nstack->rdf_schema_uri = NULL;
+ }
+ }
+
+ nstack->size = 0;
+
+ nstack->world = NULL;
+}
+
+
+/**
+ * raptor_free_namespaces:
+ * @nstack: namespace stack
+ *
+ * Destructor - destroy a namespace stack
+ **/
+void
+raptor_free_namespaces(raptor_namespace_stack *nstack)
+{
+ if(!nstack)
+ return;
+
+ raptor_namespaces_clear(nstack);
+
+ RAPTOR_FREE(raptor_namespace_stack, nstack);
+}
+
+
+/**
+ * raptor_namespaces_end_for_depth:
+ * @nstack: namespace stack
+ * @depth: depth
+ *
+ * End all namespaces at the given depth in the namespace stack.
+ **/
+void
+raptor_namespaces_end_for_depth(raptor_namespace_stack *nstack, int depth)
+{
+ int bucket;
+ for(bucket = 0; bucket < nstack->table_size; bucket++) {
+ while(nstack->table[bucket] &&
+ nstack->table[bucket]->depth == depth) {
+ raptor_namespace* ns = nstack->table[bucket];
+ raptor_namespace* next_ns = ns->next;
+
+#ifndef STANDALONE
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG3("namespace prefix %s depth %d\n",
+ ns->prefix ? (char*)ns->prefix : "(default)", depth);
+#endif
+#endif
+ raptor_free_namespace(ns);
+ nstack->size--;
+
+ nstack->table[bucket] = next_ns;
+ }
+ }
+}
+
+
+/**
+ * raptor_namespaces_get_default_namespace:
+ * @nstack: namespace stack
+ *
+ * Get the current default namespace in-scope in a stack.
+ *
+ * Return value: #raptor_namespace or NULL if no default namespace is in scope
+ **/
+raptor_namespace*
+raptor_namespaces_get_default_namespace(raptor_namespace_stack *nstack)
+{
+ unsigned int hash = raptor_hash_ns_string((const unsigned char *)"", 0);
+ const int bucket = hash % nstack->table_size;
+ raptor_namespace* ns;
+
+ for(ns = nstack->table[bucket]; ns && ns->prefix; ns = ns->next)
+ ;
+ return ns;
+}
+
+
+/**
+ * raptor_namespaces_find_namespace:
+ * @nstack: namespace stack
+ * @prefix: namespace prefix to find
+ * @prefix_length: length of prefix.
+ *
+ * Find a namespace in a namespace stack by prefix.
+ *
+ * Note that this uses the @length so that the prefix may be a prefix (sic)
+ * of a longer string. If @prefix is NULL, the default namespace will
+ * be returned if present, @prefix_length length is ignored in this case.
+ *
+ * Return value: #raptor_namespace for the prefix or NULL on failure
+ **/
+raptor_namespace*
+raptor_namespaces_find_namespace(raptor_namespace_stack *nstack,
+ const unsigned char *prefix, int prefix_length)
+{
+ raptor_namespace* ns;
+ unsigned int hash = raptor_hash_ns_string(prefix, prefix_length);
+ const int bucket = hash % (nstack->table_size);
+
+ for(ns = nstack->table[bucket]; ns ; ns = ns->next) {
+ if(!prefix) {
+ if(!ns->prefix)
+ break;
+ } else {
+ if((unsigned int)prefix_length == ns->prefix_length &&
+ !strncmp((char*)prefix, (char*)ns->prefix, prefix_length))
+ break;
+ }
+ }
+
+ return ns;
+}
+
+
+/**
+ * raptor_namespaces_find_namespace_by_uri:
+ * @nstack: namespace stack
+ * @ns_uri: namespace URI to find
+ *
+ * Find a namespace in a namespace stack by namespace URI.
+ *
+ * Return value: #raptor_namespace for the URI or NULL on failure
+ **/
+raptor_namespace*
+raptor_namespaces_find_namespace_by_uri(raptor_namespace_stack *nstack,
+ raptor_uri *ns_uri)
+{
+ int bucket;
+
+ if(!ns_uri)
+ return NULL;
+
+ for(bucket = 0; bucket < nstack->table_size; bucket++) {
+ raptor_namespace* ns;
+ for(ns = nstack->table[bucket]; ns ; ns = ns->next)
+ if(raptor_uri_equals(ns->uri, ns_uri))
+ return ns;
+ }
+
+ return NULL;
+}
+
+
+/**
+ * raptor_namespaces_namespace_in_scope:
+ * @nstack: namespace stack
+ * @nspace: namespace
+ *
+ * Test if a given namespace is in-scope in the namespace stack.
+ *
+ * Return value: non-0 if the namespace is in scope.
+ **/
+int
+raptor_namespaces_namespace_in_scope(raptor_namespace_stack *nstack,
+ const raptor_namespace *nspace)
+{
+ raptor_namespace* ns;
+ int bucket;
+
+ for(bucket = 0; bucket < nstack->table_size; bucket++) {
+ for(ns = nstack->table[bucket]; ns ; ns = ns->next)
+ if(raptor_uri_equals(ns->uri, nspace->uri))
+ return 1;
+ }
+ return 0;
+}
+
+
+/**
+ * raptor_new_namespace_from_uri:
+ * @nstack: namespace stack
+ * @prefix: namespace prefix string
+ * @ns_uri: namespace URI
+ * @depth: depth of namespace in the stack
+ *
+ * Constructor - create a new namespace from a prefix and URI object.
+ *
+ * This declares but does not enable the namespace declaration (or 'start' it)
+ * Use raptor_namespaces_start_namespace() to make the namespace
+ * enabled and in scope for binding prefixes.
+ *
+ * Alternatively use raptor_namespaces_start_namespace_full() can construct
+ * and enable a namespace in one call.
+ *
+ * Return value: a new #raptor_namespace or NULL on failure
+ **/
+raptor_namespace*
+raptor_new_namespace_from_uri(raptor_namespace_stack *nstack,
+ const unsigned char *prefix,
+ raptor_uri* ns_uri, int depth)
+{
+ unsigned int prefix_length = 0;
+ unsigned int len;
+ raptor_namespace *ns;
+ unsigned char *p;
+
+#ifndef STANDALONE
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG4("namespace prefix %s uri %s depth %d\n",
+ prefix ? (char*)prefix : "(default)",
+ ns_uri ? (char*)raptor_uri_as_string(ns_uri) : "(none)",
+ depth);
+#endif
+#endif
+
+ if(prefix && !ns_uri) {
+ /* failed to find namespace - now what? */
+ raptor_log_error_formatted(nstack->world, RAPTOR_LOG_LEVEL_ERROR,
+ /* locator */ NULL,
+ "The namespace URI for prefix \"%s\" is empty.",
+ prefix);
+ return NULL;
+ }
+
+
+ len = sizeof(raptor_namespace);
+ if(prefix) {
+ prefix_length = (unsigned int)strlen((char*)prefix);
+ len += prefix_length + 1;
+ }
+
+ /* Just one malloc for structure + namespace (maybe) + prefix (maybe)*/
+ ns = RAPTOR_CALLOC(raptor_namespace*, 1, len);
+ if(!ns)
+ return NULL;
+
+ p = (unsigned char*)ns + sizeof(raptor_namespace);
+ if(ns_uri) {
+ ns->uri = raptor_uri_copy(ns_uri);
+ if(!ns->uri) {
+ RAPTOR_FREE(raptor_namespace, ns);
+ return NULL;
+ }
+ }
+ if(prefix) {
+ ns->prefix = (const unsigned char*)memcpy(p, prefix, prefix_length + 1);
+ ns->prefix_length = prefix_length;
+
+ if(!strcmp((char*)ns->prefix, "xml"))
+ ns->is_xml = 1;
+ }
+ ns->depth = depth;
+
+ /* set convienience flags when there is a defined namespace URI */
+ if(ns->uri) {
+ if(raptor_uri_equals(ns->uri, nstack->rdf_ms_uri))
+ ns->is_rdf_ms = 1;
+ else if(raptor_uri_equals(ns->uri, nstack->rdf_schema_uri))
+ ns->is_rdf_schema = 1;
+ }
+
+ ns->nstack = nstack;
+
+ return ns;
+}
+
+
+/**
+ * raptor_new_namespace:
+ * @nstack: namespace stack
+ * @prefix: namespace prefix string
+ * @ns_uri_string: namespace URI string
+ * @depth: depth of namespace in the stack
+ *
+ * Constructor - create a new namespace from a prefix and URI string with a depth scope.
+ *
+ * This declares but does not enable the namespace declaration (or 'start' it)
+ * Use raptor_namespaces_start_namespace() to make the namespace
+ * enabled and in scope for binding prefixes.
+ *
+ * Alternatively use raptor_namespaces_start_namespace_full() can construct
+ * and enable a namespace in one call.
+ *
+ * The @depth is a way to use the stack of namespaces for providing scoped
+ * namespaces where inner scope namespaces override outer scope namespaces.
+ * This is primarily for RDF/XML and XML syntaxes that have hierarchical
+ * elements. The main use of this is raptor_namespaces_end_for_depth()
+ * to disable ('end') all namespaces at a given depth. Otherwise set this
+ * to 0.
+ *
+ * Return value: a new #raptor_namespace or NULL on failure
+ **/
+raptor_namespace*
+raptor_new_namespace(raptor_namespace_stack *nstack,
+ const unsigned char *prefix,
+ const unsigned char *ns_uri_string, int depth)
+{
+ raptor_uri* ns_uri = NULL;
+ raptor_namespace* ns;
+
+ /* Convert an empty namespace string "" to a NULL pointer */
+ if(ns_uri_string && !*ns_uri_string)
+ ns_uri_string = NULL;
+
+ if(ns_uri_string) {
+ ns_uri = raptor_new_uri(nstack->world, ns_uri_string);
+ if(!ns_uri)
+ return NULL;
+ }
+ ns = raptor_new_namespace_from_uri(nstack, prefix, ns_uri, depth);
+ if(ns_uri)
+ raptor_free_uri(ns_uri);
+
+ return ns;
+}
+
+
+/**
+ * raptor_namespace_stack_start_namespace:
+ * @nstack: namespace stack
+ * @ns: namespace
+ * @new_depth: new depth
+ *
+ * Copy an existing namespace to a namespace stack with a new depth
+ * and start it.
+ *
+ * The @depth is a way to use the stack of namespaces for providing scoped
+ * namespaces where inner scope namespaces override outer scope namespaces.
+ * This is primarily for RDF/XML and XML syntaxes that have hierarchical
+ * elements. The main use of this is raptor_namespaces_end_for_depth()
+ * to disable ('end') all namespaces at a given depth. If depths are
+ * not being needed it is unlikely this call is ever needed to copy an
+ * existing namespace at a new depth.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_namespace_stack_start_namespace(raptor_namespace_stack *nstack,
+ raptor_namespace *ns,
+ int new_depth)
+{
+ raptor_namespace *new_ns;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(nstack, raptor_namespace_stack, 1);
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(ns, raptor_namespace, 1);
+
+ new_ns = raptor_new_namespace_from_uri(nstack, ns->prefix, ns->uri, new_depth);
+ if(!new_ns)
+ return 1;
+
+ raptor_namespaces_start_namespace(nstack, new_ns);
+ return 0;
+}
+
+
+/**
+ * raptor_free_namespace:
+ * @ns: namespace object
+ *
+ * Destructor - destroy a namespace.
+ **/
+void
+raptor_free_namespace(raptor_namespace *ns)
+{
+ if(!ns)
+ return;
+
+ if(ns->uri)
+ raptor_free_uri(ns->uri);
+
+ RAPTOR_FREE(raptor_namespace, ns);
+}
+
+
+/**
+ * raptor_namespace_get_uri:
+ * @ns: namespace object
+ *
+ * Get the namespace URI.
+ *
+ * Return value: namespace URI or NULL
+ **/
+raptor_uri*
+raptor_namespace_get_uri(const raptor_namespace *ns)
+{
+ return ns->uri;
+}
+
+
+/**
+ * raptor_namespace_get_prefix:
+ * @ns: namespace object
+ *
+ * Get the namespace prefix.
+ *
+ * Return value: prefix string or NULL
+ **/
+const unsigned char*
+raptor_namespace_get_prefix(const raptor_namespace *ns)
+{
+ return (const unsigned char*)ns->prefix;
+}
+
+
+/**
+ * raptor_namespace_get_counted_prefix:
+ * @ns: namespace object
+ * @length_p: pointer to store length or NULL
+ *
+ * Get the namespace prefix and length.
+ *
+ * Return value: prefix string or NULL
+ **/
+const unsigned char*
+raptor_namespace_get_counted_prefix(const raptor_namespace *ns, size_t *length_p)
+{
+ if(length_p)
+ *length_p=ns->prefix_length;
+ return (const unsigned char*)ns->prefix;
+}
+
+
+/**
+ * raptor_namespace_format_as_xml:
+ * @ns: namespace object
+ * @length_p: pointer to length (or NULL)
+ *
+ * Format a namespace in an XML style into a newly allocated string.
+ *
+ * Generates a string of the form xmlns:prefix="uri",
+ * xmlns="uri", xmlns:prefix="" or xmlns="" depending on the
+ * namespace's prefix or URI. Double quotes are always used.
+ *
+ * If @length_p is not NULL, the length of the string is
+ * stored in the address it points to.
+ *
+ * See also raptor_xml_namespace_string_parse()
+ *
+ * Return value: namespace formatted as newly allocated string or NULL on failure
+ **/
+unsigned char *
+raptor_namespace_format_as_xml(const raptor_namespace *ns, size_t *length_p)
+{
+ size_t uri_length = 0L;
+ const unsigned char *uri_string = NULL;
+ size_t xml_uri_length = 0L;
+ size_t length;
+ unsigned char *buffer;
+ const char quote='"';
+ unsigned char *p;
+
+ if(ns->uri) {
+ uri_string = raptor_uri_as_counted_string(ns->uri, &uri_length);
+ xml_uri_length = raptor_xml_escape_string(ns->nstack->world,
+ uri_string, uri_length,
+ NULL, 0, quote);
+ }
+
+ /* 8 = length of [[xmlns=""] */
+ length = 8 + xml_uri_length + ns->prefix_length;
+
+ if(ns->prefix)
+ length++; /* for : */
+
+ if(length_p)
+ *length_p = length;
+
+ buffer = RAPTOR_MALLOC(unsigned char*, length + 1);
+ if(!buffer)
+ return NULL;
+
+ p = buffer;
+
+ memcpy(p, "xmlns", 5);
+ p += 5;
+
+ if(ns->prefix) {
+ *p++ = ':';
+ memcpy(p, ns->prefix, ns->prefix_length);
+ p += ns->prefix_length;
+ }
+ *p++ = '=';
+ *p++ = quote;
+ if(uri_length) {
+ raptor_xml_escape_string(ns->nstack->world,
+ uri_string, uri_length,
+ p, xml_uri_length, quote);
+ p += xml_uri_length;
+ }
+ *p++ = quote;
+ /* *p used here since we never need to use value of p again [CLANG] */
+ *p = '\0';
+
+ return buffer;
+}
+
+
+/**
+ * raptor_namespace_write:
+ * @ns: namespace to write
+ * @iostr: raptor iosteram
+ *
+ * Write a formatted namespace to an iostream
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_namespace_write(raptor_namespace *ns, raptor_iostream* iostr)
+{
+ size_t uri_length = 0L;
+ const unsigned char *uri_string = NULL;
+
+ if(!ns || !iostr)
+ return 1;
+
+ if(ns->uri)
+ uri_string = raptor_uri_as_counted_string(ns->uri, &uri_length);
+
+ raptor_iostream_counted_string_write("xmlns", 5, iostr);
+ if(ns->prefix) {
+ raptor_iostream_write_byte(':', iostr);
+ raptor_iostream_string_write(ns->prefix, iostr);
+ }
+ raptor_iostream_counted_string_write("=\"", 2, iostr);
+ if(uri_length)
+ raptor_iostream_counted_string_write(uri_string, uri_length, iostr);
+ raptor_iostream_write_byte('"', iostr);
+
+ return 0;
+}
+
+
+/**
+ * raptor_xml_namespace_string_parse:
+ * @string: string to parse
+ * @prefix: pointer to location to store namespace prefix
+ * @uri_string: pointer to location to store namespace URI
+ *
+ * Parse a string containing an XML style namespace declaration
+ * into a namespace prefix and URI pair.
+ *
+ * The string is of the form xmlns:prefix="uri",
+ * xmlns="uri", xmlns:prefix="" or xmlns="".
+ * The quotes can be single or double quotes.
+ *
+ * Two values are returned from this function into *@prefix and
+ * *@uri_string. Either but not both may be NULL.
+ *
+ * See also raptor_namespace_format_as_xml()
+ *
+ * Return value: non-0 on failure.
+ **/
+int
+raptor_xml_namespace_string_parse(const unsigned char *string,
+ unsigned char **prefix,
+ unsigned char **uri_string)
+{
+ const unsigned char *t;
+ unsigned char quote;
+
+ if((!prefix || !uri_string))
+ return 1;
+
+ if(!string || (string && !*string))
+ return 1;
+
+ if(strncmp((const char*)string, "xmlns", 5))
+ return 1;
+
+ *prefix = NULL;
+ *uri_string = NULL;
+
+ /*
+ * Four cases are expected and handled:
+ * xmlns=""
+ * xmlns="uri"
+ * xmlns:foo=""
+ * xmlns:foo="uri"
+ *
+ * (with " or ' quotes)
+ */
+
+ /* skip "xmlns" */
+ string += 5;
+
+ if(*string == ':') {
+ /* non-empty prefix */
+ t = ++string;
+ while(*string && *string != '=')
+ string++;
+ if(!*string || string == t)
+ return 1;
+
+ *prefix = RAPTOR_MALLOC(unsigned char*, string - t + 1);
+ if(!*prefix)
+ return 1;
+ memcpy(*prefix, t, string - t);
+ (*prefix)[string-t] = '\0';
+ }
+
+ if(*string++ != '=')
+ return 1;
+
+ if(*string != '"' && *string != '\'')
+ return 1;
+ quote = *string++;
+
+ t = string;
+ while(*string && *string != quote)
+ string++;
+
+ if(*string != quote)
+ return 1;
+
+ if(!(string - t))
+ /* xmlns...="" */
+ *uri_string = NULL;
+ else {
+ *uri_string = RAPTOR_MALLOC(unsigned char*, string - t + 1);
+ if(!*uri_string)
+ return 1;
+ memcpy(*uri_string, t, string - t);
+ (*uri_string)[string - t] = '\0';
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_new_qname_from_namespace_uri:
+ * @nstack: namespace stack
+ * @uri: URI to use to make qname
+ * @xml_version: XML Version
+ *
+ * Make an appropriate XML Qname from the namespaces on a namespace stack
+ *
+ * Makes a qname from the in-scope namespaces in a stack if the URI matches
+ * the prefix and the rest is a legal XML name.
+ *
+ * Return value: #raptor_qname for the URI or NULL on failure
+ **/
+raptor_qname*
+raptor_new_qname_from_namespace_uri(raptor_namespace_stack *nstack,
+ raptor_uri *uri, int xml_version)
+{
+ unsigned char *uri_string;
+ size_t uri_len;
+ raptor_namespace* ns = NULL;
+ unsigned char *ns_uri_string;
+ size_t ns_uri_len;
+ unsigned char *name = NULL;
+ int bucket;
+
+ if(!uri)
+ return NULL;
+
+ uri_string = raptor_uri_as_counted_string(uri, &uri_len);
+
+ for(bucket = 0; bucket < nstack->table_size; bucket++) {
+ for(ns = nstack->table[bucket]; ns ; ns = ns->next) {
+ if(!ns->uri)
+ continue;
+
+ ns_uri_string = raptor_uri_as_counted_string(ns->uri,
+ &ns_uri_len);
+ if(ns_uri_len >= uri_len)
+ continue;
+ if(strncmp((const char*)uri_string, (const char*)ns_uri_string,
+ ns_uri_len))
+ continue;
+
+ /* uri_string is a prefix of ns_uri_string */
+ name = uri_string + ns_uri_len;
+ if(!raptor_xml_name_check(name, uri_len-ns_uri_len, xml_version))
+ name = NULL;
+
+ /* If name is set, we've found a prefix with a legal XML name value */
+ if(name)
+ break;
+ }
+ if(name)
+ break;
+ }
+
+ if(!ns)
+ return NULL;
+
+ return raptor_new_qname_from_namespace_local_name(nstack->world, ns,
+ name, NULL);
+}
+
+
+#ifdef RAPTOR_DEBUG
+void
+raptor_namespace_print(FILE *stream, raptor_namespace* ns)
+{
+ const unsigned char *uri_string;
+
+ uri_string = raptor_uri_as_string(ns->uri);
+ if(ns->prefix)
+ fprintf(stream, "%s:%s", ns->prefix, uri_string);
+ else
+ fprintf(stream, "(default):%s", uri_string);
+}
+#endif
+
+
+raptor_namespace**
+raptor_namespace_stack_to_array(raptor_namespace_stack *nstack,
+ size_t *size_p)
+{
+ raptor_namespace** ns_list;
+ size_t size = 0;
+ int bucket;
+
+ ns_list = RAPTOR_CALLOC(raptor_namespace**, nstack->size,
+ sizeof(raptor_namespace*));
+ if(!ns_list)
+ return NULL;
+
+ for(bucket = 0; bucket < nstack->table_size; bucket++) {
+ raptor_namespace* ns;
+
+ for(ns = nstack->table[bucket]; ns; ns = ns->next) {
+ int skip = 0;
+ unsigned int i;
+ if(ns->depth < 1)
+ continue;
+
+ for(i = 0; i < size; i++) {
+ raptor_namespace* ns2 = ns_list[i];
+ if((!ns->prefix && !ns2->prefix) ||
+ (ns->prefix && ns2->prefix &&
+ !strcmp((const char*)ns->prefix, (const char*)ns2->prefix))) {
+ /* this prefix was seen (overridden) earlier so skip */
+ skip = 1;
+ break;
+ }
+ }
+ if(!skip)
+ ns_list[size++] = ns;
+ }
+ }
+
+ if(size_p)
+ *size_p = size;
+
+ return ns_list;
+}
+
+
+#ifdef STANDALONE
+
+
+/* one more prototype */
+int main(int argc, char *argv[]);
+
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world;
+ const char *program = raptor_basename(argv[0]);
+ raptor_namespace_stack namespaces; /* static */
+ raptor_namespace* ns;
+
+ world = raptor_new_world();
+ if(!world || raptor_world_open(world))
+ exit(1);
+
+ raptor_namespaces_init(world, &namespaces, 1);
+
+ raptor_namespaces_start_namespace_full(&namespaces,
+ (const unsigned char*)"ex1",
+ (const unsigned char*)"http://example.org/ns1",
+ 0);
+
+ raptor_namespaces_start_namespace_full(&namespaces,
+ (const unsigned char*)"ex2",
+ (const unsigned char*)"http://example.org/ns2",
+ 1);
+
+ if(raptor_namespaces_find_namespace(&namespaces, NULL, 0)) {
+ fprintf(stderr, "%s: Default namespace found when should not be found, returning error\n",
+ program);
+ return(1);
+ }
+
+ raptor_namespaces_start_namespace_full(&namespaces,
+ NULL,
+ (const unsigned char*)"http://example.org/ns3",
+ 2);
+
+ ns = raptor_namespaces_find_namespace(&namespaces, NULL, 0);
+ if(!ns) {
+ fprintf(stderr, "%s: Default namespace not found when should not be found, returning error\n",
+ program);
+ return(1);
+ }
+
+ ns = raptor_namespaces_find_namespace(&namespaces, (const unsigned char*)"ex2", 3);
+ if(!ns) {
+ fprintf(stderr, "%s: namespace ex2 not found when should not be found, returning error\n",
+ program);
+ return(1);
+ }
+
+ raptor_namespaces_end_for_depth(&namespaces, 2);
+
+ raptor_namespaces_end_for_depth(&namespaces, 1);
+
+ raptor_namespaces_end_for_depth(&namespaces, 0);
+
+ raptor_namespaces_clear(&namespaces);
+
+ raptor_free_world(world);
+
+ /* keep gcc -Wall happy */
+ return(0);
+}
+
+#endif
+
+/*
+ * Local Variables:
+ * mode:c
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/src/raptor_nfc_icu.c b/src/raptor_nfc_icu.c
new file mode 100644
index 0000000..b1d420c
--- /dev/null
+++ b/src/raptor_nfc_icu.c
@@ -0,0 +1,77 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_nfc_icu.c - Raptor Unicode NFC checking via ICU library
+ *
+ * Copyright (C) 2012, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <stdio.h>
+#include <stdarg.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#include <unicode/unorm.h>
+
+/**
+ * raptor_nfc_icu_check:
+ * @input: UTF-8 string
+ * @length: length of string
+ * @errorp: pointer to store offset of character in error (or NULL)
+ *
+ * Unicode Normal Form C (NFC) check function.
+ *
+ * If errorp is not NULL, it is set to the offset of the character
+ * in error in the buffer, or <0 if there is no error.
+ *
+ * Return value: Non 0 if the string is NFC
+ **/
+int
+raptor_nfc_icu_check(const unsigned char* string, size_t len, int *error)
+{
+ UNormalizationCheckResult res;
+ UErrorCode error_code = U_ZERO_ERROR;
+
+ res = unorm_quickCheck((const UChar *)string, (int32_t)len,
+ UNORM_NFC, &error_code);
+ if(!U_SUCCESS(error_code)) {
+ if(error)
+ *error = 1;
+ return 0;
+ }
+
+ return (res == UNORM_YES);
+}
diff --git a/src/raptor_nfc_test.c b/src/raptor_nfc_test.c
new file mode 100644
index 0000000..056b323
--- /dev/null
+++ b/src/raptor_nfc_test.c
@@ -0,0 +1,296 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_nfc_test.c - Raptor Unicode NFC validation check
+ *
+ * Copyright (C) 2004-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2004-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ * It operates over the Unicode NormalizationTest.txt
+ * which tests normalization the process, NOT normalization checking.
+ * It says:
+ * " CONFORMANCE:
+ * 1. The following invariants must be true for all conformant implementations
+ * NFC
+ * c2 == NFC(c1) == NFC(c2) == NFC(c3)
+ * c4 == NFC(c4) == NFC(c5)
+ * "
+ *
+ * It does NOT require that c1, c3 and c5 are NFC.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h> /* for isprint() */
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+#undef RAPTOR_NFC_DECODE_DEBUG
+
+
+/*
+ * decode_to_utf8:
+ * @utf8_string: destination utf8 buffer (FIXME big enough!)
+ * @unicode_string: first char of string
+ * @end: last char of unicode_string
+ */
+static size_t
+decode_to_utf8(unsigned char *utf8_string, size_t utf8_string_length,
+ const char *unicode_string, const char *end)
+{
+ unsigned char *u = utf8_string;
+ const char *p = unicode_string;
+
+#ifdef RAPTOR_NFC_DECODE_DEBUG
+ fputs("decode_to_utf8: string '", stderr);
+ (void)fwrite(unicode_string, sizeof(char), (end-unicode_string) + 1, stderr);
+ fputs("' converts to:\n ", stderr);
+#endif
+
+ while(p < end) {
+ unsigned long c = 0;
+ char *endptr;
+ int unicode_width;
+
+ if(*p == ' ') {
+ p++;
+ continue;
+ }
+
+ c = (unsigned long)strtol(p, &endptr, 16);
+
+#ifdef RAPTOR_NFC_DECODE_DEBUG
+ fprintf(stderr, "U+%04lX ", c);
+#endif
+
+ p = (const char*)endptr;
+
+ unichar_width = raptor_unicode_utf8_string_put_char(c, u, (end-p));
+ if(unichar_width < 0) {
+ fprintf(stderr,
+ "decode_to_utf8 Illegal Unicode character with code point #x%lX.",
+ unichar);
+ break;
+ }
+
+ u += (size_t)unichar_width;
+
+ if((u-utf8_string) > RAPTOR_GOOD_CAST(int, utf8_string_length)) {
+ fprintf(stderr,
+ "decode_to_utf8 overwrote utf8_string buffer at byte %ld\n",
+ (u-utf8_string));
+ abort();
+ }
+ }
+
+#ifdef RAPTOR_NFC_DECODE_DEBUG
+ fputs("\n", stderr);
+#endif
+
+ return u-utf8_string;
+}
+
+
+
+static void
+utf8_print(const unsigned char *input, size_t length, FILE *stream)
+{
+ size_t i = 0;
+
+ while(i < length && *input) {
+ unsigned long c;
+ int size = raptor_unicode_utf8_string_get_char(input, length - i, &c);
+ if(size <= 0)
+ return;
+
+ if(i)
+ fputc(' ', stream);
+ fprintf(stream, "U+%04X", RAPTOR_GOOD_CAST(int, c));
+ input += size;
+ i += size;
+ }
+}
+
+
+int
+main (int argc, char *argv[])
+{
+ const char *program = raptor_basename(argv[0]);
+ const char *filename;
+ FILE *fh;
+ int rc = 0;
+ unsigned int line = 1;
+ size_t max_c2_len = 0;
+ size_t max_c4_len = 0;
+ int passes = 0;
+ int fails = 0;
+
+ if(argc != 2) {
+ fprintf(stderr,
+ "USAGE %s [path to NormalizationTest.txt]\n"
+ "Get it at http://unicode.org/Public/UNIDATA/NormalizationTest.txt\n",
+ program);
+ return 1;
+ }
+
+ filename = argv[1];
+ fh = fopen(filename, "r");
+ if(!fh) {
+ fprintf(stderr, "%s: file '%s' open failed - %s\n",
+ program, filename, strerror(errno));
+ return 1;
+ }
+
+#define LINE_BUFFER_SIZE 1024
+
+/* FIXME big enough for Unicode 4 (c2 max 16; c4 max 33) */
+#define UNISTR_SIZE 40
+
+ for(;!feof(fh); line++) {
+ char buffer[LINE_BUFFER_SIZE];
+ char *p, *start;
+ unsigned char column2[UNISTR_SIZE];
+ unsigned char column4[UNISTR_SIZE];
+ size_t column2_len, column4_len;
+ int nfc_rc;
+ int error;
+
+ p = fgets(buffer, LINE_BUFFER_SIZE, fh);
+ if(!p) {
+ if(ferror(fh)) {
+ fprintf(stderr, "%s: file '%s' read failed - %s\n",
+ program, filename, strerror(errno));
+ rc = 1;
+ break;
+ }
+ /* assume feof */
+ break;
+ };
+
+#if 0
+ fprintf(stderr, "%s:%d: line '%s'\n", program, line, buffer);
+#endif
+
+ /* skip lines */
+ if(*p == '@' || *p == '#')
+ continue;
+
+
+ /* skip column 1 */
+ while(*p++ != ';')
+ ;
+
+ /* read column 2 into column2, column2_len */
+ start = p;
+ /* find end column 2 */
+ while(*p++ != ';')
+ ;
+
+ column2_len = decode_to_utf8(column2, UNISTR_SIZE, start, p-2);
+ if(column2_len > max_c2_len)
+ max_c2_len = column2_len;
+
+#if 0
+ fprintf(stderr, "UTF8 column 2 (%ld bytes) is: '", column2_len);
+ utf8_print(column2, column2_len, stderr);
+ fputs("'\n", stderr);
+#endif
+
+ /* skip column 3 */
+ while(*p++ != ';')
+ ;
+
+ /* read column 4 into column4, column4_len */
+ start = p;
+ /* find end column 4 */
+ while(*p++ != ';')
+ ;
+
+ column4_len = decode_to_utf8(column4, UNISTR_SIZE, start, p-2);
+ if(column4_len > max_c4_len)
+ max_c4_len = column4_len;
+
+#if 0
+ fprintf(stderr, "UTF8 column 4 (%ld bytes) is: '", column4_len);
+ utf8_print(column4, column4_len, stderr);
+ fputs("'\n", stderr);
+#endif
+
+ if(!raptor_unicode_check_utf8_string(column2, column2_len)) {
+ fprintf(stderr, "%s:%d: UTF8 column 2 failed on: '", filename, line);
+ utf8_print(column2, column2_len, stderr);
+ fputs("'\n", stderr);
+ fails++;
+ } else
+ passes++;
+
+ /* Column 2 must be NFC */
+ nfc_rc = raptor_nfc_check(column2, column2_len, &error);
+ if(!nfc_rc) {
+ fprintf(stderr, "%s:%d: NFC column 2 failed on: '", filename, line);
+ utf8_print(column2, column2_len, stderr);
+ fprintf(stderr, "' at byte %d of %d\n", error, (int)column2_len);
+ fails++;
+ } else
+ passes++;
+
+ if(column2_len == column4_len && !memcmp(column2, column4, column2_len))
+ continue;
+
+ if(!raptor_unicode_check_utf8_string(column4, column4_len)) {
+ fprintf(stderr, "%s:%d: UTF8 column 4 failed on: '", filename, line);
+ utf8_print(column4, column4_len, stderr);
+ fputs("'\n", stderr);
+ fails++;
+ } else
+ passes++;
+
+ /* Column 4 must be in NFC */
+ nfc_rc = raptor_nfc_check(column4, column4_len, &error);
+ if(!nfc_rc) {
+ fprintf(stderr, "%s:%d: NFC column 4 failed on: '", filename, line);
+ utf8_print(column4, column4_len, stderr);
+ fprintf(stderr, "' at byte %d of %d\n", error, (int)column4_len);
+ fails++;
+ } else
+ passes++;
+ }
+
+ fclose(fh);
+
+ fprintf(stderr, "%s: max column 2 len: %d, max column 4 len: %d\n", program,
+ (int)max_c2_len, (int)max_c4_len);
+ fprintf(stderr, "%s: passes: %d fails: %d\n", program,
+ passes, fails);
+
+ return rc;
+}
diff --git a/src/raptor_option.c b/src/raptor_option.c
new file mode 100644
index 0000000..834c1c6
--- /dev/null
+++ b/src/raptor_option.c
@@ -0,0 +1,723 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_option.c - Class options
+ *
+ * Copyright (C) 2004-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2004-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+static const struct
+{
+ raptor_option option;
+ raptor_option_area area;
+ raptor_option_value_type value_type;
+ const char *name;
+ const char *label;
+} raptor_options_list[RAPTOR_OPTION_LAST + 1] = {
+ { RAPTOR_OPTION_SCANNING,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "scanForRDF",
+ "RDF/XML parser scans for rdf:RDF in XML content"
+ },
+ { RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "allowNonNsAttributes",
+ "RDF/XML parser allows bare 'name' rather than namespaced 'rdf:name'"
+ },
+ { RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "allowOtherParsetypes",
+ "RDF/XML parser allows user-defined rdf:parseType values"
+ },
+ { RAPTOR_OPTION_ALLOW_BAGID,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "allowBagID",
+ "RDF/XML parser allows rdf:bagID"
+ },
+ { RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "allowRDFtypeRDFlist",
+ "RDF/XML parser generates the collection rdf:type rdf:List triple"
+ },
+ { RAPTOR_OPTION_NORMALIZE_LANGUAGE,
+ (raptor_option_area)(RAPTOR_OPTION_AREA_PARSER | RAPTOR_OPTION_AREA_SAX2),
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "normalizeLanguage",
+ "RDF/XML parser normalizes xml:lang values to lowercase"
+ },
+ { RAPTOR_OPTION_NON_NFC_FATAL,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "nonNFCfatal",
+ "RDF/XML parser makes non-NFC literals a fatal error"
+ },
+ { RAPTOR_OPTION_WARN_OTHER_PARSETYPES,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "warnOtherParseTypes",
+ "RDF/XML parser warns about unknown rdf:parseType values"
+ },
+ { RAPTOR_OPTION_CHECK_RDF_ID,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "checkRdfID",
+ "RDF/XML parser checks rdf:ID values for duplicates"
+ },
+ { RAPTOR_OPTION_RELATIVE_URIS,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "relativeURIs",
+ "Serializers write relative URIs wherever possible."
+ },
+ { RAPTOR_OPTION_WRITER_AUTO_INDENT,
+ (raptor_option_area)(RAPTOR_OPTION_AREA_XML_WRITER | RAPTOR_OPTION_AREA_TURTLE_WRITER),
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "autoIndent",
+ "Turtle and XML Writer automatically indent elements."
+ },
+ { RAPTOR_OPTION_WRITER_AUTO_EMPTY,
+ (raptor_option_area)(RAPTOR_OPTION_AREA_XML_WRITER | RAPTOR_OPTION_AREA_TURTLE_WRITER),
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "autoEmpty",
+ "Turtle and XML Writer automatically detect and abbreviate empty elements."
+ },
+ { RAPTOR_OPTION_WRITER_INDENT_WIDTH,
+ (raptor_option_area)(RAPTOR_OPTION_AREA_XML_WRITER | RAPTOR_OPTION_AREA_TURTLE_WRITER),
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "indentWidth",
+ "Turtle and XML Writer use as number of spaces to indent."
+ },
+ { RAPTOR_OPTION_WRITER_XML_VERSION,
+ (raptor_option_area)(RAPTOR_OPTION_AREA_SERIALIZER | RAPTOR_OPTION_AREA_XML_WRITER),
+ RAPTOR_OPTION_VALUE_TYPE_INT,
+ "xmlVersion",
+ "Serializers and XML Writer use as XML version to write."
+ },
+ { RAPTOR_OPTION_WRITER_XML_DECLARATION,
+ (raptor_option_area)(RAPTOR_OPTION_AREA_SERIALIZER | RAPTOR_OPTION_AREA_XML_WRITER),
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "xmlDeclaration",
+ "Serializers and XML Writer write XML declaration."
+ },
+ { RAPTOR_OPTION_NO_NET,
+ (raptor_option_area)(RAPTOR_OPTION_AREA_PARSER | RAPTOR_OPTION_AREA_SAX2),
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "noNet",
+ "Parsers and SAX2 XML Parser deny internal network requests."
+ },
+ { RAPTOR_OPTION_RESOURCE_BORDER,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "resourceBorder",
+ "DOT serializer resource border color"
+ },
+ { RAPTOR_OPTION_LITERAL_BORDER,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "literalBorder",
+ "DOT serializer literal border color"
+ },
+ { RAPTOR_OPTION_BNODE_BORDER,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "bnodeBorder",
+ "DOT serializer blank node border color"
+ },
+ { RAPTOR_OPTION_RESOURCE_FILL,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "resourceFill",
+ "DOT serializer resource fill color"
+ },
+ { RAPTOR_OPTION_LITERAL_FILL,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "literalFill",
+ "DOT serializer literal fill color"
+ },
+ { RAPTOR_OPTION_BNODE_FILL,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "bnodeFill",
+ "DOT serializer blank node fill color"
+ },
+ { RAPTOR_OPTION_HTML_TAG_SOUP,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "htmlTagSoup",
+ "GRDDL parser uses a lax HTML parser"
+ },
+ { RAPTOR_OPTION_MICROFORMATS,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "microformats",
+ "GRDDL parser looks for microformats"
+ },
+ { RAPTOR_OPTION_HTML_LINK,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "htmlLink",
+ "GRDDL parser looks for <link type=\"application/rdf+xml\">"
+ },
+ { RAPTOR_OPTION_WWW_TIMEOUT,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_INT,
+ "wwwTimeout",
+ "Parser WWW request retrieval timeout"
+ },
+ { RAPTOR_OPTION_WRITE_BASE_URI,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "writeBaseURI",
+ "Serializers write a base URI directive @base / xml:base"
+ },
+ { RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "wwwHttpCacheControl",
+ "Parser WWW request HTTP Cache-Control: header value"
+ },
+ { RAPTOR_OPTION_WWW_HTTP_USER_AGENT,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "wwwHttpUserAgent",
+ "Parser WWW request HTTP User-Agent: header value"
+ },
+ { RAPTOR_OPTION_JSON_CALLBACK,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "jsonCallback",
+ "JSON serializer callback function name"
+ },
+ { RAPTOR_OPTION_JSON_EXTRA_DATA,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "jsonExtraData",
+ "JSON serializer callback data parameter"
+ },
+ { RAPTOR_OPTION_RSS_TRIPLES,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "rssTriples",
+ "Atom and RSS serializers write extra RDF triples"
+ },
+ { RAPTOR_OPTION_ATOM_ENTRY_URI,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_URI,
+ "atomEntryUri",
+ "Atom serializer writes an atom:entry with this URI (otherwise atom:feed)"
+ },
+ { RAPTOR_OPTION_PREFIX_ELEMENTS,
+ RAPTOR_OPTION_AREA_SERIALIZER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "prefixElements",
+ "Atom and RSS serializers write namespace-prefixed elements"
+ },
+ { RAPTOR_OPTION_STRICT,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "strict",
+ "Operate in strict conformance mode (otherwise lax)"
+ },
+ { RAPTOR_OPTION_WWW_CERT_FILENAME,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "wwwCertFilename",
+ "SSL client certificate filename"
+ },
+ { RAPTOR_OPTION_WWW_CERT_TYPE,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "wwwCertType",
+ "SSL client certificate type"
+ },
+ { RAPTOR_OPTION_WWW_CERT_PASSPHRASE,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_STRING,
+ "wwwCertPassphrase",
+ "SSL client certificate passphrase"
+ },
+ { RAPTOR_OPTION_NO_FILE,
+ (raptor_option_area)(RAPTOR_OPTION_AREA_PARSER | RAPTOR_OPTION_AREA_SAX2),
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "noFile",
+ "Parsers and SAX2 deny internal file requests."
+ },
+ { RAPTOR_OPTION_WWW_SSL_VERIFY_PEER,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_INT,
+ "wwwSslVerifyPeer",
+ "SSL verify peer certficate"
+ },
+ { RAPTOR_OPTION_WWW_SSL_VERIFY_HOST,
+ RAPTOR_OPTION_AREA_PARSER,
+ RAPTOR_OPTION_VALUE_TYPE_INT,
+ "wwwSslVerifyHost",
+ "SSL verify host matching"
+ },
+ { RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES,
+ (raptor_option_area)(RAPTOR_OPTION_AREA_PARSER | RAPTOR_OPTION_AREA_SAX2),
+ RAPTOR_OPTION_VALUE_TYPE_BOOL,
+ "loadExternalEntities",
+ "Parsers and SAX2 should load external entities."
+ }
+};
+
+
+static const char * const raptor_option_uri_prefix = "http://feature.librdf.org/raptor-";
+/* NOTE: this is strlen(raptor_option_uri_prefix) */
+static const int raptor_option_uri_prefix_len = 33;
+
+
+static raptor_option_area
+raptor_option_get_option_area_for_domain(raptor_domain domain)
+{
+ raptor_option_area area = RAPTOR_OPTION_AREA_NONE;
+
+ if(domain == RAPTOR_DOMAIN_PARSER)
+ area = RAPTOR_OPTION_AREA_PARSER;
+ else if(domain == RAPTOR_DOMAIN_SERIALIZER)
+ area = RAPTOR_OPTION_AREA_SERIALIZER;
+ else if(domain == RAPTOR_DOMAIN_SAX2)
+ area = RAPTOR_OPTION_AREA_SAX2;
+ else if(domain == RAPTOR_DOMAIN_XML_WRITER)
+ area = RAPTOR_OPTION_AREA_XML_WRITER;
+ else if(domain == RAPTOR_DOMAIN_TURTLE_WRITER)
+ area = RAPTOR_OPTION_AREA_TURTLE_WRITER;
+
+ return area;
+}
+
+
+/**
+ * raptor_free_option_description:
+ * @option_description: option description
+ *
+ * Destructor - free an option description object.
+ */
+void
+raptor_free_option_description(raptor_option_description* option_description)
+{
+ if(!option_description)
+ return;
+
+ /* these are shared strings pointing to static data in raptor_options_list[] */
+ /* RAPTOR_FREE(char*, option_description->name); */
+ /* RAPTOR_FREE(char*, option_description->label); */
+
+ if(option_description->uri)
+ raptor_free_uri(option_description->uri);
+
+ RAPTOR_FREE(raptor_option_description, option_description);
+}
+
+
+/**
+ * raptor_world_get_option_description:
+ * @world: raptor world object
+ * @domain: domain
+ * @option: option enumeration (0+)
+ *
+ * Get a description of an option for a domain.
+ *
+ * The returned description must be freed with
+ * raptor_free_option_description().
+ *
+ * Return value: option description or NULL on failure or if option is unknown
+ **/
+raptor_option_description*
+raptor_world_get_option_description(raptor_world* world,
+ const raptor_domain domain,
+ const raptor_option option)
+{
+ raptor_option_area area;
+ raptor_option_description *option_description = NULL;
+ raptor_uri *base_uri = NULL;
+ int i;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, NULL);
+
+ raptor_world_open(world);
+
+ area = raptor_option_get_option_area_for_domain(domain);
+ if(area == RAPTOR_OPTION_AREA_NONE)
+ return NULL;
+
+ for(i = 0; i <= RAPTOR_OPTION_LAST; i++) {
+ if(raptor_options_list[i].option == option &&
+ (raptor_options_list[i].area & area))
+ break;
+ }
+
+ if(i > RAPTOR_OPTION_LAST)
+ return NULL;
+
+ option_description = RAPTOR_CALLOC(raptor_option_description*, 1,
+ sizeof(*option_description));
+ if(!option_description)
+ return NULL;
+
+ option_description->domain = domain;
+ option_description->option = option;
+ option_description->value_type = raptor_options_list[i].value_type;
+ option_description->name = raptor_options_list[i].name;
+ option_description->name_len = strlen(option_description->name);
+ option_description->label = raptor_options_list[i].label;
+
+ base_uri = raptor_new_uri_from_counted_string(world,
+ (const unsigned char*)raptor_option_uri_prefix,
+ raptor_option_uri_prefix_len);
+ if(!base_uri) {
+ raptor_free_option_description(option_description);
+ return NULL;
+ }
+
+ option_description->uri = raptor_new_uri_from_uri_local_name(world,
+ base_uri,
+ (const unsigned char*)raptor_options_list[i].name);
+ raptor_free_uri(base_uri);
+ if(!option_description->uri) {
+ raptor_free_option_description(option_description);
+ return NULL;
+ }
+
+ return option_description;
+}
+
+
+
+int
+raptor_option_is_valid_for_area(const raptor_option option,
+ raptor_option_area area)
+{
+ if(option > RAPTOR_OPTION_LAST)
+ return 0;
+ return (raptor_options_list[option].area & area) != 0;
+}
+
+
+int
+raptor_option_value_is_numeric(const raptor_option option)
+{
+ raptor_option_value_type t = raptor_options_list[option].value_type;
+
+ return t == RAPTOR_OPTION_VALUE_TYPE_BOOL ||
+ t == RAPTOR_OPTION_VALUE_TYPE_INT;
+}
+
+
+/**
+ * raptor_world_get_option_from_uri:
+ * @world: raptor_world instance
+ * @uri: option URI
+ *
+ * Get an option ID from a URI
+ *
+ * Option URIs are the concatenation of the string
+ * "http://feature.librdf.org/raptor-" plus the short name.
+ *
+ * They are automatically returned for any option described with
+ * raptor_world_get_option_description().
+ *
+ * Return value: < 0 if the option is unknown or on error
+ **/
+raptor_option
+raptor_world_get_option_from_uri(raptor_world* world, raptor_uri *uri)
+{
+ unsigned char *uri_string;
+ int i;
+ raptor_option option = (raptor_option)-1;
+
+ if(!uri)
+ return option;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, (raptor_option)-1);
+
+ raptor_world_open(world);
+
+ uri_string = raptor_uri_as_string(uri);
+ if(strncmp((const char*)uri_string, raptor_option_uri_prefix,
+ raptor_option_uri_prefix_len))
+ return option;
+
+ uri_string += raptor_option_uri_prefix_len;
+
+ for(i = 0; i <= RAPTOR_OPTION_LAST; i++)
+ if(!strcmp(raptor_options_list[i].name, (const char*)uri_string)) {
+ option = (raptor_option)i;
+ break;
+ }
+
+ return option;
+}
+
+
+/**
+ * raptor_option_get_count:
+ *
+ * Get the count of options defined.
+ *
+ * This is prefered to the compile time-only symbol #RAPTOR_OPTION_LAST
+ * and returns a count of the number of options which is
+ * #RAPTOR_OPTION_LAST + 1.
+ *
+ * Return value: count of options in the #raptor_option enumeration
+ **/
+unsigned int
+raptor_option_get_count(void)
+{
+ return RAPTOR_OPTION_LAST + 1;
+}
+
+
+const char* const
+raptor_option_value_type_labels[RAPTOR_OPTION_VALUE_TYPE_URI + 1] = {
+ "boolean",
+ "integer",
+ "string",
+ "uri"
+};
+
+
+/**
+ * raptor_option_get_value_type_label:
+ * @type: value type
+ *
+ * Get a label for a value type
+ *
+ * Return value: label for type or NULL for invalid type
+ */
+const char*
+raptor_option_get_value_type_label(const raptor_option_value_type type)
+{
+ if(type > RAPTOR_OPTION_VALUE_TYPE_LAST)
+ return NULL;
+ return raptor_option_value_type_labels[type];
+}
+
+
+int
+raptor_object_options_copy_state(raptor_object_options* to,
+ raptor_object_options* from)
+{
+ int rc = 0;
+ int i;
+
+ to->area = from->area;
+ for(i = 0; !rc && i <= RAPTOR_OPTION_LAST; i++) {
+ if(raptor_option_value_is_numeric((raptor_option)i))
+ to->options[i].integer = from->options[i].integer;
+ else {
+ /* non-numeric values may need allocations */
+ char* string = from->options[i].string;
+ if(string) {
+ size_t len = strlen(string);
+ to->options[i].string = RAPTOR_MALLOC(char*, len + 1);
+ if(to->options[i].string)
+ memcpy(to->options[i].string, string, len + 1);
+ else
+ rc = 1;
+ }
+ }
+ }
+
+ return rc;
+}
+
+
+void
+raptor_object_options_init(raptor_object_options* options,
+ raptor_option_area area)
+{
+ int i;
+
+ options->area = area;
+
+ for(i = 0; i <= RAPTOR_OPTION_LAST; i++) {
+ if(raptor_option_value_is_numeric((raptor_option)i))
+ options->options[i].integer = 0;
+ else
+ options->options[i].string = NULL;
+ }
+
+ /* Initialise default options that are not 0 or NULL */
+
+ /* Emit @base directive or equivalent */
+ options->options[RAPTOR_OPTION_WRITE_BASE_URI].integer = 1;
+
+ /* Emit relative URIs where possible */
+ options->options[RAPTOR_OPTION_RELATIVE_URIS].integer = 1;
+
+ /* XML 1.0 output */
+ options->options[RAPTOR_OPTION_WRITER_XML_VERSION].integer = 10;
+
+ /* Write XML declaration */
+ options->options[RAPTOR_OPTION_WRITER_XML_DECLARATION].integer = 1;
+
+ /* Indent 2 spaces */
+ options->options[RAPTOR_OPTION_WRITER_INDENT_WIDTH].integer = 2;
+
+ /* lax (no strict) parsing */
+ options->options[RAPTOR_OPTION_STRICT].integer = 0;
+
+ /* SSL verify peers */
+ options->options[RAPTOR_OPTION_WWW_SSL_VERIFY_PEER].integer = 1;
+
+ /* SSL fully verify hosts */
+ options->options[RAPTOR_OPTION_WWW_SSL_VERIFY_HOST].integer = 2;
+
+}
+
+
+void
+raptor_object_options_clear(raptor_object_options* options)
+{
+ int i;
+
+ for(i = 0; i <= RAPTOR_OPTION_LAST; i++) {
+ if(raptor_option_value_is_numeric((raptor_option)i))
+ continue;
+
+ if(options->options[i].string)
+ RAPTOR_FREE(char*, options->options[i].string);
+ }
+}
+
+
+/*
+ * raptor_object_options_get_option:
+ * @options: options object
+ * @option: option to get value
+ * @string_p: pointer to where to store string value
+ * @integer_p: pointer to where to store integer value
+ *
+ * INTERNAL - get option value
+ *
+ * Any string value returned in *@string_p is shared and must be
+ * copied by the caller.
+ *
+ * The allowed options vary by the area field of @options.
+ *
+ * Return value: option value or < 0 for an illegal option
+ **/
+int
+raptor_object_options_get_option(raptor_object_options* options,
+ raptor_option option,
+ char** string_p, int* integer_p)
+{
+ if(!raptor_option_is_valid_for_area(option, options->area))
+ return 1;
+
+ if(raptor_option_value_is_numeric(option)) {
+ /* numeric options */
+ int value = options->options[(int)option].integer;
+ if(integer_p)
+ *integer_p = value;
+ } else {
+ /* non-numeric options */
+ char* string = options->options[(int)option].string;
+ if(string_p)
+ *string_p = string;
+ }
+
+ return 0;
+}
+
+
+/*
+ * raptor_object_options_set_option:
+ * @options: options object
+ * @option: option to set
+ * @string: string option value (or NULL)
+ * @integer: integer option value
+ *
+ * INTERNAL - set option
+ *
+ * If @string is not NULL and the option type is numeric, the string
+ * value is converted to an integer and used in preference to @integer.
+ *
+ * If @string is NULL and the option type is not numeric, an error is
+ * returned.
+ *
+ * The @string values used are copied.
+ *
+ * The allowed options vary by the area field of @options.
+ *
+ * Return value: non 0 on failure or if the option is unknown
+ **/
+int
+raptor_object_options_set_option(raptor_object_options *options,
+ raptor_option option,
+ const char* string, int integer)
+{
+ if(!raptor_option_is_valid_for_area(option, options->area))
+ return 1;
+
+ if(raptor_option_value_is_numeric(option)) {
+ /* numeric options */
+ if(string)
+ integer = atoi((const char*)string);
+
+ options->options[(int)option].integer = integer;
+ return 0;
+ } else {
+ /* non-numeric options */
+ char *string_copy;
+ size_t len = 0;
+
+ if(string)
+ len = strlen((const char*)string);
+ string_copy = RAPTOR_MALLOC(char*, len + 1);
+ if(!string_copy)
+ return 1;
+
+ if(len)
+ memcpy(string_copy, string, len);
+ string_copy[len] = '\0';
+
+ options->options[(int)option].string = string_copy;
+ }
+
+ return 0;
+}
diff --git a/src/raptor_parse.c b/src/raptor_parse.c
new file mode 100644
index 0000000..5e2c5e5
--- /dev/null
+++ b/src/raptor_parse.c
@@ -0,0 +1,1771 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_parse.c - Raptor Parser API
+ *
+ * Copyright (C) 2000-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2000-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+#ifndef STANDALONE
+
+/* prototypes for helper functions */
+static void raptor_parser_set_strict(raptor_parser* rdf_parser, int is_strict);
+
+/* helper methods */
+
+static void
+raptor_free_parser_factory(raptor_parser_factory* factory)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN(factory, raptor_parser_factory);
+
+ if(factory->finish_factory)
+ factory->finish_factory(factory);
+
+ RAPTOR_FREE(raptor_parser_factory, factory);
+}
+
+
+/* class methods */
+
+int
+raptor_parsers_init(raptor_world *world)
+{
+ int rc = 0;
+
+ world->parsers = raptor_new_sequence((raptor_data_free_handler)raptor_free_parser_factory, NULL);
+ if(!world->parsers)
+ return 1;
+
+#ifdef RAPTOR_PARSER_RDFXML
+ rc+= raptor_init_parser_rdfxml(world) != 0;
+#endif
+
+#ifdef RAPTOR_PARSER_NTRIPLES
+ rc+= raptor_init_parser_ntriples(world) != 0;
+#endif
+
+#ifdef RAPTOR_PARSER_N3
+ rc+= raptor_init_parser_n3(world) != 0;
+#endif
+
+#ifdef RAPTOR_PARSER_TURTLE
+ rc+= raptor_init_parser_turtle(world) != 0;
+#endif
+
+#ifdef RAPTOR_PARSER_TRIG
+ rc+= raptor_init_parser_trig(world) != 0;
+#endif
+
+#ifdef RAPTOR_PARSER_RSS
+ rc+= raptor_init_parser_rss(world) != 0;
+#endif
+
+#if defined(RAPTOR_PARSER_GRDDL)
+ rc+= raptor_init_parser_grddl_common(world) != 0;
+
+#ifdef RAPTOR_PARSER_GRDDL
+ rc+= raptor_init_parser_grddl(world) != 0;
+#endif
+
+#endif
+
+#ifdef RAPTOR_PARSER_GUESS
+ rc+= raptor_init_parser_guess(world) != 0;
+#endif
+
+#ifdef RAPTOR_PARSER_RDFA
+ rc+= raptor_init_parser_rdfa(world) != 0;
+#endif
+
+#ifdef RAPTOR_PARSER_JSON
+ rc+= raptor_init_parser_json(world) != 0;
+#endif
+
+#ifdef RAPTOR_PARSER_NQUADS
+ rc+= raptor_init_parser_nquads(world) != 0;
+#endif
+
+ return rc;
+}
+
+
+/*
+ * raptor_finish_parsers - delete all the registered parsers
+ */
+void
+raptor_parsers_finish(raptor_world *world)
+{
+ if(world->parsers) {
+ raptor_free_sequence(world->parsers);
+ world->parsers = NULL;
+ }
+#if defined(RAPTOR_PARSER_GRDDL)
+ raptor_terminate_parser_grddl_common(world);
+#endif
+}
+
+
+/*
+ * raptor_world_register_parser_factory:
+ * @world: raptor world
+ * @factory: pointer to function to call to register the factory
+ *
+ * Internal - Register a parser via parser factory.
+ *
+ * All strings set in the @factory method are shared with the
+ * #raptor_parser_factory
+ *
+ * Return value: new factory object or NULL on failure
+ **/
+RAPTOR_EXTERN_C
+raptor_parser_factory*
+raptor_world_register_parser_factory(raptor_world* world,
+ int (*factory) (raptor_parser_factory*))
+{
+ raptor_parser_factory *parser = NULL;
+
+ parser = RAPTOR_CALLOC(raptor_parser_factory*, 1, sizeof(*parser));
+ if(!parser)
+ return NULL;
+
+ parser->world = world;
+
+ parser->desc.mime_types = NULL;
+
+ if(raptor_sequence_push(world->parsers, parser))
+ return NULL; /* on error, parser is already freed by the sequence */
+
+ /* Call the parser registration function on the new object */
+ if(factory(parser))
+ return NULL; /* parser is owned and freed by the parsers sequence */
+
+ if(raptor_syntax_description_validate(&parser->desc)) {
+ raptor_log_error(world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Parser description failed to validate\n");
+ goto tidy;
+ }
+
+
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("Registered parser %s\n", parser->desc.names[0]);
+#endif
+
+ return parser;
+
+ /* Clean up on failure */
+ tidy:
+ raptor_free_parser_factory(parser);
+ return NULL;
+}
+
+
+/*
+ * raptor_world_get_parser_factory:
+ * @world: world object
+ * @name: the factory name or NULL for the default factory
+ *
+ * INTERNAL - Get a parser factory by name.
+ *
+ * Return value: the factory object or NULL if there is no such factory
+ **/
+raptor_parser_factory*
+raptor_world_get_parser_factory(raptor_world *world, const char *name)
+{
+ raptor_parser_factory *factory = NULL;
+
+ /* return 1st parser if no particular one wanted - why? */
+ if(!name) {
+ factory = (raptor_parser_factory *)raptor_sequence_get_at(world->parsers, 0);
+ if(!factory) {
+ RAPTOR_DEBUG1("No (default) parsers registered\n");
+ return NULL;
+ }
+ } else {
+ int i;
+
+ for(i = 0;
+ (factory = (raptor_parser_factory*)raptor_sequence_get_at(world->parsers, i));
+ i++) {
+ int namei;
+ const char* fname;
+
+ for(namei = 0; (fname = factory->desc.names[namei]); namei++) {
+ if(!strcmp(fname, name))
+ break;
+ }
+ if(fname)
+ break;
+ }
+ }
+
+ return factory;
+}
+
+
+/**
+ * raptor_world_get_parser_description:
+ * @world: world object
+ * @counter: index into the list of parsers
+ *
+ * Get parser descriptive syntax information
+ *
+ * Return value: description or NULL if counter is out of range
+ **/
+const raptor_syntax_description*
+raptor_world_get_parser_description(raptor_world* world,
+ unsigned int counter)
+{
+ raptor_parser_factory *factory;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, NULL);
+
+ raptor_world_open(world);
+
+ factory = (raptor_parser_factory*)raptor_sequence_get_at(world->parsers,
+ counter);
+
+ if(!factory)
+ return NULL;
+
+ return &factory->desc;
+}
+
+
+/**
+ * raptor_world_is_parser_name:
+ * @world: world object
+ * @name: the syntax name
+ *
+ * Check the name of a parser is known.
+ *
+ * Return value: non 0 if name is a known syntax name
+ */
+int
+raptor_world_is_parser_name(raptor_world* world, const char *name)
+{
+ if(!name)
+ return 0;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, 0);
+
+ raptor_world_open(world);
+
+ return (raptor_world_get_parser_factory(world, name) != NULL);
+}
+
+
+/**
+ * raptor_new_parser:
+ * @world: world object
+ * @name: the parser name or NULL for default parser
+ *
+ * Constructor - create a new raptor_parser object.
+ *
+ * Return value: a new #raptor_parser object or NULL on failure
+ */
+raptor_parser*
+raptor_new_parser(raptor_world* world, const char *name)
+{
+ raptor_parser_factory* factory;
+ raptor_parser* rdf_parser;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ factory = raptor_world_get_parser_factory(world, name);
+ if(!factory)
+ return NULL;
+
+ rdf_parser = RAPTOR_CALLOC(raptor_parser*, 1, sizeof(*rdf_parser));
+ if(!rdf_parser)
+ return NULL;
+
+ rdf_parser->world = world;
+ raptor_statement_init(&rdf_parser->statement, world);
+
+ rdf_parser->context = RAPTOR_CALLOC(void*, 1, factory->context_length);
+ if(!rdf_parser->context) {
+ raptor_free_parser(rdf_parser);
+ return NULL;
+ }
+
+#ifdef RAPTOR_XML_LIBXML
+ rdf_parser->magic = RAPTOR_LIBXML_MAGIC;
+#endif
+ rdf_parser->factory = factory;
+
+ /* Bit flags */
+ rdf_parser->failed = 0;
+ rdf_parser->emit_graph_marks = 1;
+ rdf_parser->emitted_default_graph = 0;
+
+ raptor_object_options_init(&rdf_parser->options, RAPTOR_OPTION_AREA_PARSER);
+
+ /* set parsing strictness from default value */
+ raptor_parser_set_strict(rdf_parser,
+ RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_STRICT));
+
+ if(factory->init(rdf_parser, name)) {
+ raptor_free_parser(rdf_parser);
+ return NULL;
+ }
+
+ return rdf_parser;
+}
+
+
+/**
+ * raptor_new_parser_for_content:
+ * @world: world object
+ * @uri: URI identifying the syntax (or NULL)
+ * @mime_type: mime type identifying the content (or NULL)
+ * @buffer: buffer of content to guess (or NULL)
+ * @len: length of buffer
+ * @identifier: identifier of content (or NULL)
+ *
+ * Constructor - create a new raptor_parser.
+ *
+ * Uses raptor_world_guess_parser_name() to find a parser by scoring
+ * recognition of the syntax by a block of characters, the content
+ * identifier or a mime type. The content identifier is typically a
+ * filename or URI or some other identifier.
+ *
+ * Return value: a new #raptor_parser object or NULL on failure
+ **/
+raptor_parser*
+raptor_new_parser_for_content(raptor_world* world,
+ raptor_uri *uri, const char *mime_type,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier)
+{
+ const char* name;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ name = raptor_world_guess_parser_name(world, uri, mime_type,
+ buffer, len, identifier);
+ return name ? raptor_new_parser(world, name) : NULL;
+}
+
+
+/**
+ * raptor_parser_parse_start:
+ * @rdf_parser: RDF parser
+ * @uri: base URI or may be NULL if no base URI is required
+ *
+ * Start a parse of content with base URI.
+ *
+ * Parsers that need a base URI can be identified using a syntax
+ * description returned by raptor_world_get_parser_description()
+ * statically or raptor_parser_get_description() on a constructed
+ * parser.
+ *
+ * Return value: non-0 on failure, <0 if a required base URI was missing
+ **/
+int
+raptor_parser_parse_start(raptor_parser *rdf_parser, raptor_uri *uri)
+{
+ if((rdf_parser->factory->desc.flags & RAPTOR_SYNTAX_NEED_BASE_URI) && !uri) {
+ raptor_parser_error(rdf_parser, "Missing base URI for %s parser.",
+ rdf_parser->factory->desc.names[0]);
+ return -1;
+ }
+
+ if(uri)
+ uri = raptor_uri_copy(uri);
+
+ if(rdf_parser->base_uri)
+ raptor_free_uri(rdf_parser->base_uri);
+ rdf_parser->base_uri = uri;
+
+ rdf_parser->locator.uri = uri;
+ rdf_parser->locator.line = -1;
+ rdf_parser->locator.column = -1;
+ rdf_parser->locator.byte = -1;
+
+ if(rdf_parser->factory->start)
+ return rdf_parser->factory->start(rdf_parser);
+ else
+ return 0;
+}
+
+
+
+
+/**
+ * raptor_parser_parse_chunk:
+ * @rdf_parser: RDF parser
+ * @buffer: content to parse
+ * @len: length of buffer
+ * @is_end: non-0 if this is the end of the content (such as EOF)
+ *
+ * Parse a block of content into triples.
+ *
+ * This method can only be called after raptor_parser_parse_start() has
+ * initialised the parser.
+ *
+ * Return value: non-0 on failure.
+ **/
+int
+raptor_parser_parse_chunk(raptor_parser* rdf_parser,
+ const unsigned char *buffer, size_t len, int is_end)
+{
+ if(rdf_parser->sb)
+ raptor_stringbuffer_append_counted_string(rdf_parser->sb, buffer, len, 1);
+
+ return rdf_parser->factory->chunk(rdf_parser, buffer, len, is_end);
+}
+
+
+/**
+ * raptor_free_parser:
+ * @parser: #raptor_parser object
+ *
+ * Destructor - destroy a raptor_parser object.
+ *
+ **/
+void
+raptor_free_parser(raptor_parser* rdf_parser)
+{
+ if(!rdf_parser)
+ return;
+
+ if(rdf_parser->factory)
+ rdf_parser->factory->terminate(rdf_parser);
+
+ if(rdf_parser->www)
+ raptor_free_www(rdf_parser->www);
+
+ if(rdf_parser->context)
+ RAPTOR_FREE(raptor_parser_context, rdf_parser->context);
+
+ if(rdf_parser->base_uri)
+ raptor_free_uri(rdf_parser->base_uri);
+
+ if(rdf_parser->sb)
+ raptor_free_stringbuffer(rdf_parser->sb);
+
+ raptor_object_options_clear(&rdf_parser->options);
+
+ RAPTOR_FREE(raptor_parser, rdf_parser);
+}
+
+
+/**
+ * raptor_parser_parse_file_stream:
+ * @rdf_parser: parser
+ * @stream: FILE* of RDF content
+ * @filename: filename of content or NULL if it has no name
+ * @base_uri: the base URI to use
+ *
+ * Parse RDF content from a FILE*.
+ *
+ * After draining the FILE* stream (EOF), fclose is not called on it.
+ *
+ * Return value: non 0 on failure
+ **/
+int
+raptor_parser_parse_file_stream(raptor_parser* rdf_parser,
+ FILE *stream, const char* filename,
+ raptor_uri *base_uri)
+{
+ int rc = 0;
+ raptor_locator *locator = &rdf_parser->locator;
+
+ if(!stream || !base_uri)
+ return 1;
+
+ locator->line= locator->column = -1;
+ locator->file= filename;
+
+ if(raptor_parser_parse_start(rdf_parser, base_uri))
+ return 1;
+
+ while(!feof(stream)) {
+ size_t len = fread(rdf_parser->buffer, 1, RAPTOR_READ_BUFFER_SIZE, stream);
+ int is_end = (len < RAPTOR_READ_BUFFER_SIZE);
+ rdf_parser->buffer[len] = '\0';
+ rc = raptor_parser_parse_chunk(rdf_parser, rdf_parser->buffer, len, is_end);
+ if(rc || is_end)
+ break;
+ }
+
+ return (rc != 0);
+}
+
+
+/**
+ * raptor_parser_parse_file:
+ * @rdf_parser: parser
+ * @uri: URI of RDF content or NULL to read from standard input
+ * @base_uri: the base URI to use (or NULL if the same)
+ *
+ * Parse RDF content at a file URI.
+ *
+ * If @uri is NULL (source is stdin), then the @base_uri is required.
+ *
+ * Return value: non 0 on failure
+ **/
+int
+raptor_parser_parse_file(raptor_parser* rdf_parser, raptor_uri *uri,
+ raptor_uri *base_uri)
+{
+ int rc = 0;
+ int free_base_uri = 0;
+ const char *filename = NULL;
+ FILE *fh = NULL;
+#if defined(HAVE_UNISTD_H) && defined(HAVE_SYS_STAT_H)
+ struct stat buf;
+#endif
+
+ if(uri) {
+ filename = raptor_uri_uri_string_to_filename(raptor_uri_as_string(uri));
+ if(!filename)
+ return 1;
+
+#if defined(HAVE_UNISTD_H) && defined(HAVE_SYS_STAT_H)
+ if(!stat(filename, &buf) && S_ISDIR(buf.st_mode)) {
+ raptor_parser_error(rdf_parser, "Cannot read from a directory '%s'",
+ filename);
+ goto cleanup;
+ }
+#endif
+
+ fh = fopen(filename, "r");
+ if(!fh) {
+ raptor_parser_error(rdf_parser, "file '%s' open failed - %s",
+ filename, strerror(errno));
+ goto cleanup;
+ }
+ if(!base_uri) {
+ base_uri = raptor_uri_copy(uri);
+ free_base_uri = 1;
+ }
+ } else {
+ if(!base_uri)
+ return 1;
+ fh = stdin;
+ }
+
+ rc = raptor_parser_parse_file_stream(rdf_parser, fh, filename, base_uri);
+
+ cleanup:
+ if(uri) {
+ if(fh)
+ fclose(fh);
+ RAPTOR_FREE(char*, filename);
+ }
+ if(free_base_uri)
+ raptor_free_uri(base_uri);
+
+ return rc;
+}
+
+
+void
+raptor_parser_parse_uri_write_bytes(raptor_www* www,
+ void *userdata, const void *ptr,
+ size_t size, size_t nmemb)
+{
+ raptor_parse_bytes_context* rpbc = (raptor_parse_bytes_context*)userdata;
+ size_t len = size * nmemb;
+
+ if(!rpbc->started) {
+ raptor_uri* base_uri = rpbc->base_uri;
+
+ if(!base_uri) {
+ rpbc->final_uri = raptor_www_get_final_uri(www);
+ /* base URI after URI resolution is finally chosen */
+ base_uri = rpbc->final_uri ? rpbc->final_uri : www->uri;
+ }
+
+ if(raptor_parser_parse_start(rpbc->rdf_parser, base_uri))
+ raptor_www_abort(www, "Parsing failed");
+ rpbc->started = 1;
+ }
+
+ if(raptor_parser_parse_chunk(rpbc->rdf_parser, (unsigned char*)ptr, len, 0))
+ raptor_www_abort(www, "Parsing failed");
+}
+
+
+static void
+raptor_parser_parse_uri_content_type_handler(raptor_www* www, void* userdata,
+ const char* content_type)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)userdata;
+ if(rdf_parser->factory->content_type_handler)
+ rdf_parser->factory->content_type_handler(rdf_parser, content_type);
+}
+
+
+int
+raptor_parser_set_uri_filter_no_net(void *user_data, raptor_uri* uri)
+{
+ unsigned char* uri_string = raptor_uri_as_string(uri);
+
+ if(raptor_uri_uri_string_is_file_uri(uri_string))
+ return 0;
+
+ raptor_parser_error((raptor_parser*)user_data,
+ "Network fetch of URI '%s' denied", uri_string);
+ return 1;
+}
+
+
+/**
+ * raptor_parser_parse_uri:
+ * @rdf_parser: parser
+ * @uri: URI of RDF content
+ * @base_uri: the base URI to use (or NULL if the same)
+ *
+ * Parse the RDF content at URI.
+ *
+ * Sends an HTTP Accept: header whent the URI is of the HTTP protocol,
+ * see raptor_parser_parse_uri_with_connection() for details including
+ * how the @base_uri is used.
+ *
+ * Return value: non 0 on failure
+ **/
+int
+raptor_parser_parse_uri(raptor_parser* rdf_parser, raptor_uri *uri,
+ raptor_uri *base_uri)
+{
+ return raptor_parser_parse_uri_with_connection(rdf_parser, uri, base_uri,
+ NULL);
+}
+
+
+/**
+ * raptor_parser_parse_uri_with_connection:
+ * @rdf_parser: parser
+ * @uri: URI of RDF content
+ * @base_uri: the base URI to use (or NULL if the same)
+ * @connection: connection object pointer or NULL to create a new one
+ *
+ * Parse RDF content at URI using existing WWW connection.
+ *
+ * If @base_uri is not given and during resolution of the URI, a
+ * protocol redirection occurs, the final resolved URI will be
+ * used as the base URI. If redirection does not occur, the
+ * base URI will be @uri.
+ *
+ * If @base_uri is given, it overrides the process above.
+ *
+ * When @connection is NULL and a MIME Type exists for the parser
+ * type, this type is sent in an HTTP Accept: header in the form
+ * Accept: MIME-TYPE along with a wildcard of 0.1 quality, so MIME-TYPE is
+ * prefered rather than the sole answer. The latter part may not be
+ * necessary but should ensure an HTTP 200 response.
+ *
+ * Return value: non 0 on failure
+ **/
+int
+raptor_parser_parse_uri_with_connection(raptor_parser* rdf_parser,
+ raptor_uri *uri,
+ raptor_uri *base_uri, void *connection)
+{
+ int ret = 0;
+ raptor_parse_bytes_context rpbc;
+ char* ua = NULL;
+ char* cert_filename = NULL;
+ char* cert_type = NULL;
+ char* cert_passphrase = NULL;
+ int ssl_verify_peer;
+ int ssl_verify_host;
+
+ if(connection) {
+ if(rdf_parser->www)
+ raptor_free_www(rdf_parser->www);
+ rdf_parser->www = raptor_new_www_with_connection(rdf_parser->world,
+ connection);
+ if(!rdf_parser->www)
+ return 1;
+ } else {
+ const char *accept_h;
+
+ if(rdf_parser->www)
+ raptor_free_www(rdf_parser->www);
+ rdf_parser->www = raptor_new_www(rdf_parser->world);
+ if(!rdf_parser->www)
+ return 1;
+
+ accept_h = raptor_parser_get_accept_header(rdf_parser);
+ if(accept_h) {
+ raptor_www_set_http_accept(rdf_parser->www, accept_h);
+ RAPTOR_FREE(char*, accept_h);
+ }
+ }
+
+ rpbc.rdf_parser = rdf_parser;
+ rpbc.base_uri = base_uri;
+ rpbc.final_uri = NULL;
+ rpbc.started = 0;
+
+ if(rdf_parser->uri_filter)
+ raptor_www_set_uri_filter(rdf_parser->www, rdf_parser->uri_filter,
+ rdf_parser->uri_filter_user_data);
+ else if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NO_NET))
+ raptor_www_set_uri_filter(rdf_parser->www,
+ raptor_parser_set_uri_filter_no_net, rdf_parser);
+
+ raptor_www_set_write_bytes_handler(rdf_parser->www,
+ raptor_parser_parse_uri_write_bytes,
+ &rpbc);
+
+ raptor_www_set_content_type_handler(rdf_parser->www,
+ raptor_parser_parse_uri_content_type_handler,
+ rdf_parser);
+
+ raptor_www_set_http_cache_control(rdf_parser->www,
+ RAPTOR_OPTIONS_GET_STRING(rdf_parser,
+ RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL));
+
+ ua = RAPTOR_OPTIONS_GET_STRING(rdf_parser, RAPTOR_OPTION_WWW_HTTP_USER_AGENT);
+ if(ua)
+ raptor_www_set_user_agent(rdf_parser->www, ua);
+
+ cert_filename = RAPTOR_OPTIONS_GET_STRING(rdf_parser,
+ RAPTOR_OPTION_WWW_CERT_FILENAME);
+ cert_type = RAPTOR_OPTIONS_GET_STRING(rdf_parser,
+ RAPTOR_OPTION_WWW_CERT_TYPE);
+ cert_passphrase = RAPTOR_OPTIONS_GET_STRING(rdf_parser,
+ RAPTOR_OPTION_WWW_CERT_PASSPHRASE);
+ if(cert_filename || cert_type || cert_passphrase)
+ raptor_www_set_ssl_cert_options(rdf_parser->www, cert_filename,
+ cert_type, cert_passphrase);
+
+ ssl_verify_peer = RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser,
+ RAPTOR_OPTION_WWW_SSL_VERIFY_PEER);
+ ssl_verify_host = RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser,
+ RAPTOR_OPTION_WWW_SSL_VERIFY_HOST);
+ raptor_www_set_ssl_verify_options(rdf_parser->www, ssl_verify_peer,
+ ssl_verify_host);
+
+ ret = raptor_www_fetch(rdf_parser->www, uri);
+
+ if(!rpbc.started && !ret)
+ ret = raptor_parser_parse_start(rdf_parser, base_uri);
+
+ if(rpbc.final_uri)
+ raptor_free_uri(rpbc.final_uri);
+
+ if(ret) {
+ raptor_free_www(rdf_parser->www);
+ rdf_parser->www = NULL;
+ return 1;
+ }
+
+ if(raptor_parser_parse_chunk(rdf_parser, NULL, 0, 1))
+ rdf_parser->failed = 1;
+
+ raptor_free_www(rdf_parser->www);
+ rdf_parser->www = NULL;
+
+ return rdf_parser->failed;
+}
+
+
+/*
+ * raptor_parser_fatal_error - Fatal Error from a parser - Internal
+ */
+void
+raptor_parser_fatal_error(raptor_parser* parser, const char *message, ...)
+{
+ va_list arguments;
+
+ parser->failed = 1;
+
+ va_start(arguments, message);
+ if(parser)
+ raptor_log_error_varargs(parser->world,
+ RAPTOR_LOG_LEVEL_FATAL,
+ &parser->locator,
+ message, arguments);
+ else
+ raptor_log_error_varargs(NULL,
+ RAPTOR_LOG_LEVEL_FATAL, NULL,
+ message, arguments);
+ va_end(arguments);
+}
+
+
+/*
+ * raptor_parser_error - Error from a parser - Internal
+ */
+void
+raptor_parser_error(raptor_parser* parser, const char *message, ...)
+{
+ va_list arguments;
+
+ va_start(arguments, message);
+
+ raptor_parser_log_error_varargs(parser, RAPTOR_LOG_LEVEL_ERROR,
+ message, arguments);
+
+ va_end(arguments);
+}
+
+
+/**
+ * raptor_parser_log_error_varargs:
+ * @parser: parser (or NULL)
+ * @level: log level
+ * @message: error format message
+ * @arguments: varargs for message
+ *
+ * Error from a parser - Internal.
+ */
+void
+raptor_parser_log_error_varargs(raptor_parser* parser,
+ raptor_log_level level,
+ const char *message, va_list arguments)
+{
+ if(parser)
+ raptor_log_error_varargs(parser->world,
+ level,
+ &parser->locator,
+ message, arguments);
+ else
+ raptor_log_error_varargs(NULL,
+ level,
+ NULL,
+ message, arguments);
+}
+
+
+/*
+ * raptor_parser_warning - Warning from a parser - Internal
+ */
+void
+raptor_parser_warning(raptor_parser* parser, const char *message, ...)
+{
+ va_list arguments;
+
+ va_start(arguments, message);
+
+ if(parser)
+ raptor_log_error_varargs(parser->world,
+ RAPTOR_LOG_LEVEL_WARN,
+ &parser->locator,
+ message, arguments);
+ else
+ raptor_log_error_varargs(NULL,
+ RAPTOR_LOG_LEVEL_WARN,
+ NULL,
+ message, arguments);
+
+ va_end(arguments);
+}
+
+
+
+/* PUBLIC FUNCTIONS */
+
+/**
+ * raptor_parser_set_statement_handler:
+ * @parser: #raptor_parser parser object
+ * @user_data: user data pointer for callback
+ * @handler: new statement callback function
+ *
+ * Set the statement handler function for the parser.
+ *
+ * Use this to set the function to receive statements as the parsing
+ * proceeds. The statement argument to @handler is shared and must be
+ * copied by the caller with raptor_statement_copy().
+ **/
+void
+raptor_parser_set_statement_handler(raptor_parser* parser,
+ void *user_data,
+ raptor_statement_handler handler)
+{
+ parser->user_data = user_data;
+ parser->statement_handler = handler;
+}
+
+
+/**
+ * raptor_parser_set_graph_mark_handler:
+ * @parser: #raptor_parser parser object
+ * @user_data: user data pointer for callback
+ * @handler: new graph callback function
+ *
+ * Set the graph mark handler function for the parser.
+ *
+ * See #raptor_graph_mark_handler and #raptor_graph_mark_flags for
+ * the marks that may be returned by the handler.
+ *
+ **/
+void
+raptor_parser_set_graph_mark_handler(raptor_parser* parser,
+ void *user_data,
+ raptor_graph_mark_handler handler)
+{
+ parser->user_data = user_data;
+ parser->graph_mark_handler = handler;
+}
+
+
+/**
+ * raptor_parser_set_namespace_handler:
+ * @parser: #raptor_parser parser object
+ * @user_data: user data pointer for callback
+ * @handler: new namespace callback function
+ *
+ * Set the namespace handler function for the parser.
+ *
+ * When a prefix/namespace is seen in a parser, call the given
+ * @handler with the prefix string and the #raptor_uri namespace URI.
+ * Either can be NULL for the default prefix or default namespace.
+ *
+ * The handler function does not deal with duplicates so any
+ * namespace may be declared multiple times.
+ *
+ **/
+void
+raptor_parser_set_namespace_handler(raptor_parser* parser,
+ void *user_data,
+ raptor_namespace_handler handler)
+{
+ parser->namespace_handler = handler;
+ parser->namespace_handler_user_data = user_data;
+}
+
+
+/**
+ * raptor_parser_set_uri_filter:
+ * @parser: parser object
+ * @filter: URI filter function
+ * @user_data: User data to pass to filter function
+ *
+ * Set URI filter function for WWW retrieval.
+ **/
+void
+raptor_parser_set_uri_filter(raptor_parser* parser,
+ raptor_uri_filter_func filter,
+ void *user_data)
+{
+ parser->uri_filter = filter;
+ parser->uri_filter_user_data = user_data;
+}
+
+
+/**
+ * raptor_parser_set_option:
+ * @parser: #raptor_parser parser object
+ * @option: option to set from enumerated #raptor_option values
+ * @string: string option value (or NULL)
+ * @integer: integer option value
+ *
+ * Set parser option.
+ *
+ * If @string is not NULL and the option type is numeric, the string
+ * value is converted to an integer and used in preference to @integer.
+ *
+ * If @string is NULL and the option type is not numeric, an error is
+ * returned.
+ *
+ * The @string values used are copied.
+ *
+ * The allowed options are available via
+ * raptor_world_get_option_description().
+ *
+ * Return value: non 0 on failure or if the option is unknown
+ **/
+int
+raptor_parser_set_option(raptor_parser *parser, raptor_option option,
+ const char* string, int integer)
+{
+ int rc;
+
+ rc = raptor_object_options_set_option(&parser->options, option,
+ string, integer);
+ if(option == RAPTOR_OPTION_STRICT && !rc) {
+ int is_strict = RAPTOR_OPTIONS_GET_NUMERIC(parser, RAPTOR_OPTION_STRICT);
+ raptor_parser_set_strict(parser, is_strict);
+ }
+
+ return rc;
+}
+
+
+/**
+ * raptor_parser_get_option:
+ * @parser: #raptor_parser parser object
+ * @option: option to get value
+ * @string_p: pointer to where to store string value
+ * @integer_p: pointer to where to store integer value
+ *
+ * Get parser option.
+ *
+ * Any string value returned in *@string_p is shared and must
+ * be copied by the caller.
+ *
+ * The allowed options are available via
+ * raptor_world_get_option_description().
+ *
+ * Return value: option value or < 0 for an illegal option
+ **/
+int
+raptor_parser_get_option(raptor_parser *parser, raptor_option option,
+ char** string_p, int* integer_p)
+{
+ return raptor_object_options_get_option(&parser->options, option,
+ string_p, integer_p);
+}
+
+
+/**
+ * raptor_parser_set_strict:
+ * @rdf_parser: #raptor_parser object
+ * @is_strict: Non 0 for strict parsing
+ *
+ * INTERNAL - Set parser to strict / lax mode.
+ *
+ **/
+static void
+raptor_parser_set_strict(raptor_parser* rdf_parser, int is_strict)
+{
+ is_strict = (is_strict) ? 1 : 0;
+
+ /* Initialise default parser mode */
+ RAPTOR_OPTIONS_SET_NUMERIC(rdf_parser, RAPTOR_OPTION_SCANNING, 0);
+
+ RAPTOR_OPTIONS_SET_NUMERIC(rdf_parser, RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES, !is_strict);
+ RAPTOR_OPTIONS_SET_NUMERIC(rdf_parser, RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES, !is_strict);
+ RAPTOR_OPTIONS_SET_NUMERIC(rdf_parser, RAPTOR_OPTION_ALLOW_BAGID, !is_strict);
+ RAPTOR_OPTIONS_SET_NUMERIC(rdf_parser, RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST, 0);
+ RAPTOR_OPTIONS_SET_NUMERIC(rdf_parser, RAPTOR_OPTION_NORMALIZE_LANGUAGE, 1);
+ RAPTOR_OPTIONS_SET_NUMERIC(rdf_parser, RAPTOR_OPTION_NON_NFC_FATAL, is_strict);
+ RAPTOR_OPTIONS_SET_NUMERIC(rdf_parser, RAPTOR_OPTION_WARN_OTHER_PARSETYPES, !is_strict);
+ RAPTOR_OPTIONS_SET_NUMERIC(rdf_parser, RAPTOR_OPTION_CHECK_RDF_ID, 1);
+ RAPTOR_OPTIONS_SET_NUMERIC(rdf_parser, RAPTOR_OPTION_HTML_TAG_SOUP, !is_strict);
+ RAPTOR_OPTIONS_SET_NUMERIC(rdf_parser, RAPTOR_OPTION_MICROFORMATS, !is_strict);
+ RAPTOR_OPTIONS_SET_NUMERIC(rdf_parser, RAPTOR_OPTION_HTML_LINK, !is_strict);
+}
+
+
+/**
+ * raptor_parser_get_name:
+ * @rdf_parser: #raptor_parser parser object
+ *
+ * Get the name of a parser.
+ *
+ * Use raptor_parser_get_description() to get the alternate names and
+ * aliases as well as other descriptive values.
+ *
+ * Return value: the short name for the parser.
+ **/
+const char*
+raptor_parser_get_name(raptor_parser *rdf_parser)
+{
+ if(rdf_parser->factory->get_name)
+ return rdf_parser->factory->get_name(rdf_parser);
+ else
+ return rdf_parser->factory->desc.names[0];
+}
+
+
+/**
+ * raptor_parser_get_description:
+ * @rdf_parser: #raptor_parser parser object
+ *
+ * Get description of the syntaxes of the parser.
+ *
+ * The returned description is static and lives as long as the raptor
+ * library (raptor world).
+ *
+ * Return value: description of syntax
+ **/
+const raptor_syntax_description*
+raptor_parser_get_description(raptor_parser *rdf_parser)
+{
+ if(rdf_parser->factory->get_description)
+ return rdf_parser->factory->get_description(rdf_parser);
+ else
+ return &rdf_parser->factory->desc;
+}
+
+
+
+/**
+ * raptor_parser_parse_abort:
+ * @rdf_parser: #raptor_parser parser object
+ *
+ * Abort an ongoing parsing.
+ *
+ * Causes any ongoing generation of statements by a parser to be
+ * terminated and the parser to return controlto the application
+ * as soon as draining any existing buffers.
+ *
+ * Most useful inside raptor_parser_parse_file() or
+ * raptor_parser_parse_uri() when the Raptor library is directing the
+ * parsing and when one of the callback handlers such as as set by
+ * raptor_parser_set_statement_handler() requires to return to the main
+ * application code.
+ **/
+void
+raptor_parser_parse_abort(raptor_parser *rdf_parser)
+{
+ rdf_parser->failed = 1;
+}
+
+
+/**
+ * raptor_parser_get_locator:
+ * @rdf_parser: raptor parser
+ *
+ * Get the current raptor locator object.
+ *
+ * Return value: raptor locator
+ **/
+raptor_locator*
+raptor_parser_get_locator(raptor_parser *rdf_parser)
+{
+ if(rdf_parser->factory->get_locator)
+ return rdf_parser->factory->get_locator(rdf_parser);
+ else
+ return &rdf_parser->locator;
+}
+
+
+#ifdef RAPTOR_DEBUG
+void
+raptor_stats_print(raptor_parser *rdf_parser, FILE *stream)
+{
+#ifdef RAPTOR_PARSER_RDFXML
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ if(!strcmp(rdf_parser->factory->desc.names[0], "rdfxml")) {
+ raptor_rdfxml_parser *rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+ fputs("raptor parser stats\n ", stream);
+ raptor_rdfxml_parser_stats_print(rdf_xml_parser, stream);
+ }
+#endif
+#endif
+}
+#endif
+
+
+struct syntax_score
+{
+ int score;
+ raptor_parser_factory* factory;
+};
+
+
+static int
+compare_syntax_score(const void *a, const void *b) {
+ return ((struct syntax_score*)b)->score - ((struct syntax_score*)a)->score;
+}
+
+#define RAPTOR_MIN_GUESS_SCORE 2
+
+/**
+ * raptor_world_guess_parser_name:
+ * @world: world object
+ * @uri: URI identifying the syntax (or NULL)
+ * @mime_type: mime type identifying the content (or NULL)
+ * @buffer: buffer of content to guess (or NULL)
+ * @len: length of buffer
+ * @identifier: identifier of content (or NULL)
+ *
+ * Guess a parser name for content.
+ *
+ * Find a parser by scoring recognition of the syntax by a block of
+ * characters, the content identifier or a mime type. The content
+ * identifier is typically a filename or URI or some other identifier.
+ *
+ * If the guessing finds only low scores, NULL will be returned.
+ *
+ * Return value: a parser name or NULL if no guess could be made
+ **/
+const char*
+raptor_world_guess_parser_name(raptor_world* world,
+ raptor_uri *uri, const char *mime_type,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier)
+{
+ unsigned int i;
+ raptor_parser_factory *factory;
+ unsigned char *suffix = NULL;
+ struct syntax_score* scores;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, NULL);
+
+ raptor_world_open(world);
+
+ scores = RAPTOR_CALLOC(struct syntax_score*,
+ raptor_sequence_size(world->parsers),
+ sizeof(struct syntax_score));
+ if(!scores)
+ return NULL;
+
+ if(identifier) {
+ unsigned char *p = (unsigned char*)strrchr((const char*)identifier, '.');
+ if(p) {
+ unsigned char *from, *to;
+
+ p++;
+ suffix = RAPTOR_MALLOC(unsigned char*, strlen((const char*)p) + 1);
+ if(!suffix)
+ return NULL;
+
+ for(from = p, to = suffix; *from; ) {
+ unsigned char c = *from++;
+ /* discard the suffix if it wasn't '\.[a-zA-Z0-9]+$' */
+ if(!isalpha(c) && !isdigit(c)) {
+ RAPTOR_FREE(char*, suffix);
+ suffix = NULL;
+ to = NULL;
+ break;
+ }
+ *to++ = isupper(c) ? (unsigned char)tolower(c): c;
+ }
+ if(to)
+ *to = '\0';
+ }
+ }
+
+ for(i = 0;
+ (factory = (raptor_parser_factory*)raptor_sequence_get_at(world->parsers, i));
+ i++) {
+ int score = -1;
+ const raptor_type_q* type_q = NULL;
+
+ if(mime_type && factory->desc.mime_types) {
+ int j;
+ type_q = NULL;
+ for(j = 0;
+ (type_q = &factory->desc.mime_types[j]) && type_q->mime_type;
+ j++) {
+ if(!strcmp(mime_type, type_q->mime_type))
+ break;
+ }
+ /* got an exact match mime type - score it via the Q */
+ if(type_q)
+ score = type_q->q;
+ }
+ /* mime type match has high Q - return factory as result */
+ if(score >= 10)
+ break;
+
+ if(uri && factory->desc.uri_strings) {
+ int j;
+ const char* uri_string = (const char*)raptor_uri_as_string(uri);
+ const char* factory_uri_string = NULL;
+
+ for(j = 0;
+ (factory_uri_string = factory->desc.uri_strings[j]);
+ j++) {
+ if(!strcmp(uri_string, factory_uri_string))
+ break;
+ }
+ if(factory_uri_string)
+ /* got an exact match syntax for URI - return factory as result */
+ break;
+ }
+
+ if(factory->recognise_syntax) {
+ int c = -1;
+
+ /* Only use first N bytes to avoid HTML documents that contain
+ * RDF/XML examples
+ */
+#define FIRSTN 1024
+ if(buffer && len && len > FIRSTN) {
+ c = buffer[FIRSTN];
+ ((char*)buffer)[FIRSTN] = '\0';
+ }
+
+ score += factory->recognise_syntax(factory, buffer, len,
+ identifier, suffix,
+ mime_type);
+
+ if(c >= 0)
+ ((char*)buffer)[FIRSTN] = c;
+ }
+
+ scores[i].score = score < 10 ? score : 10;
+ scores[i].factory = factory;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+ RAPTOR_DEBUG3("Score %15s : %d\n", factory->desc.names[0], score);
+#endif
+ }
+
+ if(!factory) {
+ /* sort the scores and pick a factory if score is good enough */
+ qsort(scores, i, sizeof(struct syntax_score), compare_syntax_score);
+
+ if(scores[0].score >= RAPTOR_MIN_GUESS_SCORE)
+ factory = scores[0].factory;
+ }
+
+ if(suffix)
+ RAPTOR_FREE(char*, suffix);
+
+ RAPTOR_FREE(syntax_scores, scores);
+
+ return factory ? factory->desc.names[0] : NULL;
+}
+
+
+/*
+ * raptor_parser_copy_flags_state:
+ * @to_parser: destination parser
+ * @from_parser: source parser
+ *
+ * Copy status flags between parsers - INTERNAL.
+ **/
+void
+raptor_parser_copy_flags_state(raptor_parser *to_parser,
+ raptor_parser *from_parser)
+{
+ to_parser->failed = from_parser->failed;
+ to_parser->emit_graph_marks = from_parser->emit_graph_marks;
+ to_parser->emitted_default_graph = from_parser->emitted_default_graph;
+}
+
+
+
+/*
+ * raptor_parser_copy_user_state:
+ * @to_parser: destination parser
+ * @from_parser: source parser
+ *
+ * Copy user state between parsers - INTERNAL.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_parser_copy_user_state(raptor_parser *to_parser,
+ raptor_parser *from_parser)
+{
+ int rc = 0;
+
+ to_parser->user_data = from_parser->user_data;
+ to_parser->statement_handler = from_parser->statement_handler;
+ to_parser->namespace_handler = from_parser->namespace_handler;
+ to_parser->namespace_handler_user_data = from_parser->namespace_handler_user_data;
+ to_parser->uri_filter = from_parser->uri_filter;
+ to_parser->uri_filter_user_data = from_parser->uri_filter_user_data;
+
+ /* copy bit flags */
+ raptor_parser_copy_flags_state(to_parser, from_parser);
+
+ /* copy options */
+ if(!rc)
+ rc = raptor_object_options_copy_state(&to_parser->options,
+ &from_parser->options);
+
+ return rc;
+}
+
+
+/*
+ * raptor_parser_start_namespace:
+ * @rdf_parser: parser
+ * @nspace: namespace starting
+ *
+ * Internal - Invoke start namespace handler
+ **/
+void
+raptor_parser_start_namespace(raptor_parser* rdf_parser,
+ raptor_namespace* nspace)
+{
+ if(!rdf_parser->namespace_handler)
+ return;
+
+ (*rdf_parser->namespace_handler)(rdf_parser->namespace_handler_user_data,
+ nspace);
+}
+
+
+/**
+ * raptor_parser_get_accept_header:
+ * @rdf_parser: parser
+ *
+ * Get an HTTP Accept value for the parser.
+ *
+ * The returned string must be freed by the caller such as with
+ * raptor_free_memory().
+ *
+ * Return value: a new Accept: header string or NULL on failure
+ **/
+const char*
+raptor_parser_get_accept_header(raptor_parser* rdf_parser)
+{
+ raptor_parser_factory *factory = rdf_parser->factory;
+ char *accept_header = NULL;
+ size_t len;
+ char *p;
+ int i;
+ const raptor_type_q* type_q;
+
+ if(factory->accept_header)
+ return factory->accept_header(rdf_parser);
+
+ if(!factory->desc.mime_types)
+ return NULL;
+
+ len = 0;
+ for(i = 0;
+ (type_q = &factory->desc.mime_types[i]) && type_q->mime_type;
+ i++) {
+ len += type_q->mime_type_len + 2; /* ", " */
+ if(type_q->q < 10)
+ len += 6; /* ";q=X.Y" */
+ }
+
+ /* 9 = strlen("\*\/\*;q=0.1") */
+#define ACCEPT_HEADER_LEN 9
+ accept_header = RAPTOR_MALLOC(char*, len + ACCEPT_HEADER_LEN + 1);
+ if(!accept_header)
+ return NULL;
+
+ p = accept_header;
+ for(i = 0;
+ (type_q = &factory->desc.mime_types[i]) && type_q->mime_type;
+ i++) {
+ memcpy(p, type_q->mime_type, type_q->mime_type_len);
+ p += type_q->mime_type_len;
+ if(type_q->q < 10) {
+ *p++ = ';';
+ *p++ = 'q';
+ *p++ = '=';
+ *p++ = '0';
+ *p++ = '.';
+ *p++ = '0' + (type_q->q);
+ }
+
+ *p++ = ',';
+ *p++ = ' ';
+ }
+
+ memcpy(p, "*/*;q=0.1", ACCEPT_HEADER_LEN + 1);
+
+ return accept_header;
+}
+
+
+const char*
+raptor_parser_get_accept_header_all(raptor_world* world)
+{
+ raptor_parser_factory *factory;
+ char *accept_header = NULL;
+ size_t len;
+ char *p;
+ int i;
+
+ len = 0;
+ for(i = 0;
+ (factory = (raptor_parser_factory*)raptor_sequence_get_at(world->parsers, i));
+ i++) {
+ const raptor_type_q* type_q;
+ int j;
+
+ for(j = 0;
+ (type_q = &factory->desc.mime_types[j]) && type_q->mime_type;
+ j++) {
+ len += type_q->mime_type_len + 2; /* ", " */
+ if(type_q->q < 10)
+ len += 6; /* ";q=X.Y" */
+ }
+ }
+
+ /* 9 = strlen("\*\/\*;q=0.1") */
+#define ACCEPT_HEADER_LEN 9
+ accept_header = RAPTOR_MALLOC(char*, len + ACCEPT_HEADER_LEN + 1);
+ if(!accept_header)
+ return NULL;
+
+ p = accept_header;
+ for(i = 0;
+ (factory = (raptor_parser_factory*)raptor_sequence_get_at(world->parsers, i));
+ i++) {
+ const raptor_type_q* type_q;
+ int j;
+
+ for(j = 0;
+ (type_q = &factory->desc.mime_types[j]) && type_q->mime_type;
+ j++) {
+ memcpy(p, type_q->mime_type, type_q->mime_type_len);
+ p+= type_q->mime_type_len;
+ if(type_q->q < 10) {
+ *p++ = ';';
+ *p++ = 'q';
+ *p++ = '=';
+ *p++ = '0';
+ *p++ = '.';
+ *p++ = '0' + (type_q->q);
+ }
+
+ *p++ = ',';
+ *p++ = ' ';
+ }
+
+ }
+
+ memcpy(p, "*/*;q=0.1", ACCEPT_HEADER_LEN + 1);
+
+ return accept_header;
+}
+
+
+void
+raptor_parser_save_content(raptor_parser* rdf_parser, int save)
+{
+ if(rdf_parser->sb)
+ raptor_free_stringbuffer(rdf_parser->sb);
+
+ rdf_parser->sb= save ? raptor_new_stringbuffer() : NULL;
+}
+
+
+const unsigned char*
+raptor_parser_get_content(raptor_parser* rdf_parser, size_t* length_p)
+{
+ unsigned char* buffer;
+ size_t len;
+
+ if(!rdf_parser->sb)
+ return NULL;
+
+ len = raptor_stringbuffer_length(rdf_parser->sb);
+ buffer = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(!buffer)
+ return NULL;
+
+ raptor_stringbuffer_copy_to_string(rdf_parser->sb, buffer, len);
+
+ if(length_p)
+ *length_p=len;
+
+ return buffer;
+}
+
+
+void
+raptor_parser_start_graph(raptor_parser* parser, raptor_uri* uri,
+ int is_declared)
+{
+ int flags = RAPTOR_GRAPH_MARK_START;
+ if(is_declared)
+ flags |= RAPTOR_GRAPH_MARK_DECLARED;
+
+ if(!parser->emit_graph_marks)
+ return;
+
+ if(parser->graph_mark_handler)
+ (*parser->graph_mark_handler)(parser->user_data, uri, flags);
+}
+
+
+void
+raptor_parser_end_graph(raptor_parser* parser, raptor_uri* uri, int is_declared)
+{
+ int flags = 0;
+ if(is_declared)
+ flags |= RAPTOR_GRAPH_MARK_DECLARED;
+
+ if(!parser->emit_graph_marks)
+ return;
+
+ if(parser->graph_mark_handler)
+ (*parser->graph_mark_handler)(parser->user_data, uri, flags);
+}
+
+
+/**
+ * raptor_parser_get_world:
+ * @rdf_parser: parser
+ *
+ * Get the #raptor_world object associated with a parser.
+ *
+ * Return value: raptor_world* pointer
+ **/
+raptor_world *
+raptor_parser_get_world(raptor_parser* rdf_parser)
+{
+ return rdf_parser->world;
+}
+
+
+/**
+ * raptor_parser_get_graph:
+ * @rdf_parser: parser
+ *
+ * Get the current graph for the parser
+ *
+ * The returned URI is owned by the caller and must be freed with
+ * raptor_free_uri()
+ *
+ * Return value: raptor_uri* graph name or NULL for the default graph
+ **/
+raptor_uri*
+raptor_parser_get_graph(raptor_parser* rdf_parser)
+{
+ if(rdf_parser->factory->get_graph)
+ return rdf_parser->factory->get_graph(rdf_parser);
+ return NULL;
+}
+
+
+/**
+ * raptor_parser_parse_iostream:
+ * @rdf_parser: parser
+ * @iostr: iostream to read from
+ * @base_uri: the base URI to use (or NULL)
+ *
+ * Parse content from an iostream
+ *
+ * If the parser requires a base URI and @base_uri is NULL, an error
+ * will be generated and the function will fail.
+ *
+ * Return value: non 0 on failure, <0 if a required base URI was missing
+ **/
+int
+raptor_parser_parse_iostream(raptor_parser* rdf_parser, raptor_iostream *iostr,
+ raptor_uri *base_uri)
+{
+ int rc = 0;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(rdf_parser, raptor_parser, 1);
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(iostr, raptor_iostr, 1);
+
+ rc = raptor_parser_parse_start(rdf_parser, base_uri);
+ if(rc)
+ return rc;
+
+ while(!raptor_iostream_read_eof(iostr)) {
+ size_t len = raptor_iostream_read_bytes(rdf_parser->buffer, 1,
+ RAPTOR_READ_BUFFER_SIZE, iostr);
+ int is_end = (len < RAPTOR_READ_BUFFER_SIZE);
+
+ rc = raptor_parser_parse_chunk(rdf_parser, rdf_parser->buffer, len, is_end);
+ if(rc || is_end)
+ break;
+ }
+
+ return rc;
+}
+
+
+/* end not STANDALONE */
+#endif
+
+
+#ifdef STANDALONE
+#include <stdio.h>
+
+int main(int argc, char *argv[]);
+
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world;
+ const char *program = raptor_basename(argv[0]);
+ int i;
+ const char *s;
+
+ world = raptor_new_world();
+ if(!world || raptor_world_open(world))
+ exit(1);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Known options:\n", program);
+#endif
+
+ for(i = 0; i <= (int)raptor_option_get_count(); i++) {
+ raptor_option_description *od;
+ int fn;
+
+ od = raptor_world_get_option_description(world,
+ RAPTOR_DOMAIN_PARSER,
+ (raptor_option)i);
+ if(!od)
+ continue;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, " %2d %-20s %s <%s>\n", i, od->name, od->label,
+ (od->uri ? (const char*)raptor_uri_as_string(od->uri) : ""));
+#endif
+ fn = raptor_world_get_option_from_uri(world, od->uri);
+ if(fn != i) {
+ fprintf(stderr,
+ "%s: raptor_option_from_uri() returned %d expected %d\n",
+ program, fn, i);
+ return 1;
+ }
+ raptor_free_option_description(od);
+ }
+
+ s = raptor_parser_get_accept_header_all(world);
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "Default HTTP accept header: '%s'\n", s);
+#endif
+ if(!s) {
+ fprintf(stderr, "%s: raptor_parser_get_accept_header_all() failed\n",
+ program);
+ return 1;
+ }
+ RAPTOR_FREE(char*, s);
+
+ raptor_free_world(world);
+
+ return 0;
+}
+
+#endif
diff --git a/src/raptor_permute_test.c b/src/raptor_permute_test.c
new file mode 100644
index 0000000..1c6530d
--- /dev/null
+++ b/src/raptor_permute_test.c
@@ -0,0 +1,346 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_permute.c - Test of permutations of ints in a sequence
+ *
+ * Copyright (C) 2011, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+#define PERMUTE_DEBUG 0
+
+
+typedef struct
+{
+ raptor_sequence* seq;
+ int* contents;
+} intseq;
+
+
+static int
+print_handler(void *object, FILE *fh)
+{
+ int* pi = (int*)object;
+ fprintf(fh, "%d", *pi);
+ return 0;
+}
+
+
+static intseq*
+new_intseq(int size)
+{
+ intseq* iseq;
+ int i;
+
+ iseq = RAPTOR_CALLOC(intseq*, 1, sizeof(*iseq));
+ iseq->contents = RAPTOR_CALLOC(int*, size, sizeof(int));
+ /* will be a sequence of int* pointing into iseq->contents */
+ iseq->seq = raptor_new_sequence(NULL, print_handler);
+
+ for(i = 0; i < (int)size; i++) {
+ iseq->contents[i] = i + 1;
+ raptor_sequence_set_at(iseq->seq, i, &iseq->contents[i]);
+ }
+
+ return iseq;
+}
+
+static void
+free_intseq(intseq* iseq)
+{
+ if(iseq->contents)
+ RAPTOR_FREE(int*, iseq->contents);
+
+ if(iseq->seq)
+ raptor_free_sequence(iseq->seq);
+
+ RAPTOR_FREE(intseq*, iseq);
+}
+
+static void
+intseq_print(intseq *iseq, FILE* stream)
+{
+ raptor_sequence_print(iseq->seq, stream);
+}
+
+static int
+intseq_reverse(intseq *iseq, int start_index, int length)
+{
+ return raptor_sequence_reverse(iseq->seq, start_index, length);
+}
+
+static int
+intseq_compare_at(const void* a, const void* b)
+{
+ int* ia = (int*)a;
+ int* ib = (int*)b;
+ return *ia - *ib;
+}
+
+static int
+intseq_next_permutation(intseq *iseq)
+{
+ return raptor_sequence_next_permutation(iseq->seq, intseq_compare_at);
+}
+
+static int
+intseq_get_at(intseq *iseq, int idx)
+{
+ return *(int*)(raptor_sequence_get_at(iseq->seq, idx));
+}
+
+#define MAX_SIZE 5
+
+int expected_results_size5[120][5] = {
+ {1, 2, 3, 4, 5},
+ {1, 2, 3, 5, 4},
+ {1, 2, 4, 3, 5},
+ {1, 2, 4, 5, 3},
+ {1, 2, 5, 3, 4},
+ {1, 2, 5, 4, 3},
+ {1, 3, 2, 4, 5},
+ {1, 3, 2, 5, 4},
+ {1, 3, 4, 2, 5},
+ {1, 3, 4, 5, 2},
+ {1, 3, 5, 2, 4},
+ {1, 3, 5, 4, 2},
+ {1, 4, 2, 3, 5},
+ {1, 4, 2, 5, 3},
+ {1, 4, 3, 2, 5},
+ {1, 4, 3, 5, 2},
+ {1, 4, 5, 2, 3},
+ {1, 4, 5, 3, 2},
+ {1, 5, 2, 3, 4},
+ {1, 5, 2, 4, 3},
+ {1, 5, 3, 2, 4},
+ {1, 5, 3, 4, 2},
+ {1, 5, 4, 2, 3},
+ {1, 5, 4, 3, 2},
+ {2, 1, 3, 4, 5},
+ {2, 1, 3, 5, 4},
+ {2, 1, 4, 3, 5},
+ {2, 1, 4, 5, 3},
+ {2, 1, 5, 3, 4},
+ {2, 1, 5, 4, 3},
+ {2, 3, 1, 4, 5},
+ {2, 3, 1, 5, 4},
+ {2, 3, 4, 1, 5},
+ {2, 3, 4, 5, 1},
+ {2, 3, 5, 1, 4},
+ {2, 3, 5, 4, 1},
+ {2, 4, 1, 3, 5},
+ {2, 4, 1, 5, 3},
+ {2, 4, 3, 1, 5},
+ {2, 4, 3, 5, 1},
+ {2, 4, 5, 1, 3},
+ {2, 4, 5, 3, 1},
+ {2, 5, 1, 3, 4},
+ {2, 5, 1, 4, 3},
+ {2, 5, 3, 1, 4},
+ {2, 5, 3, 4, 1},
+ {2, 5, 4, 1, 3},
+ {2, 5, 4, 3, 1},
+ {3, 1, 2, 4, 5},
+ {3, 1, 2, 5, 4},
+ {3, 1, 4, 2, 5},
+ {3, 1, 4, 5, 2},
+ {3, 1, 5, 2, 4},
+ {3, 1, 5, 4, 2},
+ {3, 2, 1, 4, 5},
+ {3, 2, 1, 5, 4},
+ {3, 2, 4, 1, 5},
+ {3, 2, 4, 5, 1},
+ {3, 2, 5, 1, 4},
+ {3, 2, 5, 4, 1},
+ {3, 4, 1, 2, 5},
+ {3, 4, 1, 5, 2},
+ {3, 4, 2, 1, 5},
+ {3, 4, 2, 5, 1},
+ {3, 4, 5, 1, 2},
+ {3, 4, 5, 2, 1},
+ {3, 5, 1, 2, 4},
+ {3, 5, 1, 4, 2},
+ {3, 5, 2, 1, 4},
+ {3, 5, 2, 4, 1},
+ {3, 5, 4, 1, 2},
+ {3, 5, 4, 2, 1},
+ {4, 1, 2, 3, 5},
+ {4, 1, 2, 5, 3},
+ {4, 1, 3, 2, 5},
+ {4, 1, 3, 5, 2},
+ {4, 1, 5, 2, 3},
+ {4, 1, 5, 3, 2},
+ {4, 2, 1, 3, 5},
+ {4, 2, 1, 5, 3},
+ {4, 2, 3, 1, 5},
+ {4, 2, 3, 5, 1},
+ {4, 2, 5, 1, 3},
+ {4, 2, 5, 3, 1},
+ {4, 3, 1, 2, 5},
+ {4, 3, 1, 5, 2},
+ {4, 3, 2, 1, 5},
+ {4, 3, 2, 5, 1},
+ {4, 3, 5, 1, 2},
+ {4, 3, 5, 2, 1},
+ {4, 5, 1, 2, 3},
+ {4, 5, 1, 3, 2},
+ {4, 5, 2, 1, 3},
+ {4, 5, 2, 3, 1},
+ {4, 5, 3, 1, 2},
+ {4, 5, 3, 2, 1},
+ {5, 1, 2, 3, 4},
+ {5, 1, 2, 4, 3},
+ {5, 1, 3, 2, 4},
+ {5, 1, 3, 4, 2},
+ {5, 1, 4, 2, 3},
+ {5, 1, 4, 3, 2},
+ {5, 2, 1, 3, 4},
+ {5, 2, 1, 4, 3},
+ {5, 2, 3, 1, 4},
+ {5, 2, 3, 4, 1},
+ {5, 2, 4, 1, 3},
+ {5, 2, 4, 3, 1},
+ {5, 3, 1, 2, 4},
+ {5, 3, 1, 4, 2},
+ {5, 3, 2, 1, 4},
+ {5, 3, 2, 4, 1},
+ {5, 3, 4, 1, 2},
+ {5, 3, 4, 2, 1},
+ {5, 4, 1, 2, 3},
+ {5, 4, 1, 3, 2},
+ {5, 4, 2, 1, 3},
+ {5, 4, 2, 3, 1},
+ {5, 4, 3, 1, 2},
+ {5, 4, 3, 2, 1}
+};
+
+int main (int argc, char *argv[])
+{
+ const char *program = raptor_basename(argv[0]);
+ int failures = 0;
+ raptor_world *world;
+ int size;
+ int expected_counts[MAX_SIZE + 1] = { 1, 1, 2, 6, 24, 120 };
+
+ world = raptor_new_world();
+ if(!world || raptor_world_open(world))
+ exit(1);
+
+ for(size = 0; size <= MAX_SIZE; size++) {
+ intseq* iseq;
+ int count;
+
+ iseq = new_intseq(size);
+
+#if PERMUTE_DEBUG > 0
+ fprintf(stderr, "%s: Permutation test %d. Initial state: ", program, size);
+ intseq_print(iseq, stderr);
+ fputc('\n', stderr);
+#endif
+
+ for(count = 1; 1; count++) {
+#if PERMUTE_DEBUG > 1
+ fprintf(stderr, "Permutation %3d: ", count);
+ intseq_print(iseq, stderr);
+ fputc('\n', stderr);
+#endif
+ if(size == 5) {
+ int* expected_result = expected_results_size5[count - 1];
+ int j;
+ int ok = 1;
+
+ for(j = 0; j < size; j++) {
+ int actual = intseq_get_at(iseq, j);
+ int expected = expected_result[j];
+ if(actual != expected) {
+ ok = 0;
+ break;
+ }
+ }
+ if(!ok) {
+ fprintf(stderr, "%s: FAILED test %d result %d - returned ",
+ program, size, count);
+ intseq_print(iseq, stderr);
+ fputs(" expected [", stderr);
+ for(j = 0; j < size; j++) {
+ fprintf(stderr, "%d, ", expected_result[j]);
+ }
+ fputs("]\n", stderr);
+
+ failures++;
+ }
+ }
+
+ if(intseq_next_permutation(iseq))
+ break;
+ }
+
+#if PERMUTE_DEBUG > 0
+ fprintf(stderr, "%s: Returned %d results. Final state: ", program, count);
+ intseq_print(iseq, stderr);
+ fputc('\n', stderr);
+#endif
+
+ free_intseq(iseq);
+
+ if(count != expected_counts[size]) {
+ fprintf(stderr, "%s: FAILED test %d - returned %d items expected %d\n",
+ program, size, count, expected_counts[size]);
+ failures++;
+ break;
+ }
+ }
+
+
+ /* This is mainly a test for crashes */
+ for(size = 0; size <= MAX_SIZE; size++) {
+ intseq* iseq;
+ int st;
+
+ iseq = new_intseq(size);
+
+ for(st = 0; st < size + 1; st++) {
+ intseq_reverse(iseq, 0, st) ;
+ intseq_reverse(iseq, st, st) ;
+ intseq_reverse(iseq, st, 0) ;
+ }
+
+ free_intseq(iseq);
+
+ }
+
+ raptor_free_world(world);
+
+ return failures;
+}
diff --git a/src/raptor_qname.c b/src/raptor_qname.c
new file mode 100644
index 0000000..4afd84d
--- /dev/null
+++ b/src/raptor_qname.c
@@ -0,0 +1,632 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_qname.c - Raptor XML qname class
+ *
+ * Copyright (C) 2002-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2002-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/*
+ * Namespaces in XML
+ * http://www.w3.org/TR/1999/REC-xml-names-19990114/#defaulting
+ * says:
+ *
+ * --------------------------------------------------------------------
+ * 5.2 Namespace Defaulting
+ *
+ * A default namespace is considered to apply to the element where it
+ * is declared (if that element has no namespace prefix), and to all
+ * elements with no prefix within the content of that element.
+ *
+ * If the URI reference in a default namespace declaration is empty,
+ * then unprefixed elements in the scope of the declaration are not
+ * considered to be in any namespace.
+ *
+ * Note that default namespaces do not apply directly to attributes.
+ *
+ * [...]
+ *
+ * 5.3 Uniqueness of Attributes
+ *
+ * In XML documents conforming to this specification, no tag may
+ * contain two attributes which:
+ *
+ * 1. have identical names, or
+ *
+ * 2. have qualified names with the same local part and with
+ * prefixes which have been bound to namespace names that are
+ * identical.
+ * --------------------------------------------------------------------
+ */
+
+/**
+ * raptor_new_qname:
+ * @nstack: namespace stack to look up for namespaces
+ * @name: element or attribute name
+ * @value: attribute value (else is an element)
+ *
+ * Constructor - create a new XML qname.
+ *
+ * Create a new qname from the local element/attribute name,
+ * with optional (attribute) value. The namespace stack is used
+ * to look up the name and find the namespace and generate the
+ * URI of the qname.
+ *
+ * Return value: a new #raptor_qname object or NULL on failure
+ **/
+raptor_qname*
+raptor_new_qname(raptor_namespace_stack *nstack,
+ const unsigned char *name,
+ const unsigned char *value)
+{
+ raptor_qname* qname;
+ const unsigned char *p;
+ raptor_namespace* ns;
+ unsigned char* new_name;
+ unsigned int prefix_length;
+ unsigned int local_name_length = 0;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("name %s\n", name);
+#endif
+
+ qname = RAPTOR_CALLOC(raptor_qname*, 1, sizeof(*qname));
+ if(!qname)
+ return NULL;
+ qname->world = nstack->world;
+
+ if(value) {
+ size_t value_length = strlen((char*)value);
+ unsigned char* new_value;
+
+ new_value = RAPTOR_MALLOC(unsigned char*, value_length + 1);
+ if(!new_value) {
+ RAPTOR_FREE(raptor_qname, qname);
+ return NULL;
+ }
+
+ memcpy(new_value, value, value_length + 1); /* copy NUL */
+ qname->value = new_value;
+ qname->value_length = value_length;
+ }
+
+
+ /* Find : */
+ for(p = name; *p && *p != ':'; p++)
+ ;
+
+
+ if(!*p) {
+ local_name_length = (unsigned int)(p - name);
+
+ /* No : in the name */
+ new_name = RAPTOR_MALLOC(unsigned char*, local_name_length + 1);
+ if(!new_name) {
+ raptor_free_qname(qname);
+ return NULL;
+ }
+ memcpy(new_name, name, local_name_length); /* no NUL to copy */
+ new_name[local_name_length] = '\0';
+ qname->local_name = new_name;
+ qname->local_name_length = local_name_length;
+
+ /* For elements only, pick up the default namespace if there is one */
+ if(!value) {
+ ns = raptor_namespaces_get_default_namespace(nstack);
+
+ if(ns) {
+ qname->nspace = ns;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("Found default namespace %s\n", raptor_uri_as_string(ns->uri));
+#endif
+ } else {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG1("No default namespace defined\n");
+#endif
+ }
+ } /* if is_element */
+
+ } else {
+ /* There is a namespace prefix */
+
+ prefix_length = (unsigned int)(p - name);
+ p++;
+
+ /* p now is at start of local_name */
+ local_name_length = (unsigned int)strlen((char*)p);
+ new_name = RAPTOR_MALLOC(unsigned char*, local_name_length + 1);
+ if(!new_name) {
+ raptor_free_qname(qname);
+ return NULL;
+ }
+ memcpy(new_name, p, local_name_length); /* No NUL to copy */
+ new_name[local_name_length] = '\0';
+ qname->local_name = new_name;
+ qname->local_name_length = local_name_length;
+
+ /* Find the namespace */
+ ns = raptor_namespaces_find_namespace(nstack, name, prefix_length);
+
+ if(!ns) {
+ /* failed to find namespace - now what? */
+ raptor_log_error_formatted(qname->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "The namespace prefix in \"%s\" was not declared.", name);
+ } else {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("Found namespace prefix %s URI %s\n", ns->prefix, raptor_uri_as_string(ns->uri));
+#endif
+ qname->nspace = ns;
+ }
+ }
+
+
+
+ /* If namespace has a URI and a local_name is defined, create the URI
+ * for this element
+ */
+ if(qname->nspace && local_name_length) {
+ raptor_uri *uri = raptor_namespace_get_uri(qname->nspace);
+ if(uri)
+ uri = raptor_new_uri_from_uri_local_name(qname->world, uri, new_name);
+
+ qname->uri = uri;
+ }
+
+
+ return qname;
+}
+
+
+/**
+ * raptor_new_qname_from_namespace_local_name:
+ * @world: raptor_world object
+ * @ns: namespace of qname (or NULL)
+ * @local_name: element or attribute name
+ * @value: attribute value (else is an element)
+ *
+ * Constructor - create a new XML qname.
+ *
+ * Create a new qname from the namespace and local element/attribute name,
+ * with optional (attribute) value.
+ *
+ * Return value: a new #raptor_qname object or NULL on failure
+ **/
+raptor_qname*
+raptor_new_qname_from_namespace_local_name(raptor_world* world,
+ raptor_namespace *ns,
+ const unsigned char *local_name,
+ const unsigned char *value)
+{
+ raptor_qname* qname;
+ unsigned char* new_name;
+ unsigned int local_name_length = (unsigned int)strlen((char*)local_name);
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!local_name)
+ return NULL;
+
+ raptor_world_open(world);
+
+ qname = RAPTOR_CALLOC(raptor_qname*, 1, sizeof(*qname));
+ if(!qname)
+ return NULL;
+ qname->world = world;
+
+ if(value) {
+ unsigned int value_length = (unsigned int)strlen((char*)value);
+ unsigned char* new_value;
+
+ new_value = RAPTOR_MALLOC(unsigned char*, value_length + 1);
+ if(!new_value) {
+ RAPTOR_FREE(raptor_qname, qname);
+ return NULL;
+ }
+
+ memcpy(new_value, value, value_length + 1); /* Copy NUL */
+ qname->value = new_value;
+ qname->value_length = value_length;
+ }
+
+ new_name = RAPTOR_MALLOC(unsigned char*, local_name_length + 1);
+ if(!new_name) {
+ raptor_free_qname(qname);
+ return NULL;
+ }
+
+ memcpy(new_name, local_name, local_name_length); /* No NUL to copy */
+ new_name[local_name_length] = '\0';
+ qname->local_name = new_name;
+ qname->local_name_length = local_name_length;
+
+ qname->nspace = ns;
+
+ if(qname->nspace) {
+ qname->uri = raptor_namespace_get_uri(qname->nspace);
+ if(qname->uri)
+ qname->uri = raptor_new_uri_from_uri_local_name(qname->world, qname->uri, new_name);
+ }
+
+ return qname;
+}
+
+
+/**
+ * raptor_qname_copy:
+ * @qname: existing qname
+ *
+ * Copy constructor - copy an existing XML qname.
+ *
+ * Return value: a new #raptor_qname object or NULL on failure
+ **/
+raptor_qname*
+raptor_qname_copy(raptor_qname *qname)
+{
+ raptor_qname* new_qname;
+ unsigned char* new_name;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(qname, raptor_qname, NULL);
+
+ new_qname = RAPTOR_CALLOC(raptor_qname*, 1, sizeof(*qname));
+ if(!new_qname)
+ return NULL;
+ new_qname->world = qname->world;
+
+ if(qname->value) {
+ size_t value_length = qname->value_length;
+ unsigned char* new_value;
+
+ new_value = RAPTOR_MALLOC(unsigned char*, value_length + 1);
+ if(!new_value) {
+ RAPTOR_FREE(raptor_qname, new_qname);
+ return NULL;
+ }
+
+ memcpy(new_value, qname->value, value_length + 1); /* Copy NUL */
+ new_qname->value = new_value;
+ new_qname->value_length = value_length;
+ }
+
+ new_name = RAPTOR_MALLOC(unsigned char*, qname->local_name_length + 1);
+ if(!new_name) {
+ raptor_free_qname(new_qname);
+ return NULL;
+ }
+
+ memcpy(new_name, qname->local_name, qname->local_name_length + 1); /* Copy NUL */
+ new_qname->local_name = new_name;
+ new_qname->local_name_length = qname->local_name_length;
+
+ new_qname->nspace = qname->nspace;
+
+ new_qname->uri = raptor_namespace_get_uri(new_qname->nspace);
+ if(new_qname->uri)
+ new_qname->uri = raptor_new_uri_from_uri_local_name(qname->world, new_qname->uri, new_name);
+
+ return new_qname;
+}
+
+
+#ifdef RAPTOR_DEBUG
+void
+raptor_qname_print(FILE *stream, raptor_qname* name)
+{
+ if(name->nspace) {
+ const unsigned char *prefix = raptor_namespace_get_prefix(name->nspace);
+ if(prefix)
+ fprintf(stream, "%s:%s", prefix, name->local_name);
+ else
+ fprintf(stream, "(default):%s", name->local_name);
+ } else
+ fputs((char*)name->local_name, stream);
+}
+#endif
+
+
+/**
+ * raptor_free_qname:
+ * @name: #raptor_qname object
+ *
+ * Destructor - destroy a raptor_qname object.
+ **/
+void
+raptor_free_qname(raptor_qname* name)
+{
+ if(!name)
+ return;
+
+ if(name->local_name)
+ RAPTOR_FREE(char*, name->local_name);
+
+ if(name->uri && name->nspace)
+ raptor_free_uri(name->uri);
+
+ if(name->value)
+ RAPTOR_FREE(char*, name->value);
+ RAPTOR_FREE(raptor_qname, name);
+}
+
+
+/**
+ * raptor_qname_equal:
+ * @name1: first #raptor_qname
+ * @name2: second #raptor_name
+ *
+ * Compare two XML Qnames for equality.
+ *
+ * Return value: non-0 if the qnames are equal.
+ **/
+int
+raptor_qname_equal(raptor_qname *name1, raptor_qname *name2)
+{
+ if(name1->nspace != name2->nspace)
+ return 0;
+ if(name1->local_name_length != name2->local_name_length)
+ return 0;
+ if(strcmp((char*)name1->local_name, (char*)name2->local_name))
+ return 0;
+ return 1;
+}
+
+
+
+/**
+ * raptor_qname_string_to_uri:
+ * @nstack: #raptor_namespace_stack to decode the namespace
+ * @name: QName string or NULL
+ * @name_len: QName string length
+ *
+ * Get the URI for a qname.
+ *
+ * Utility function to turn a string representing a QName in the
+ * N3 style, into a new URI representing it. A NULL name or name ":"
+ * returns the default namespace URI. A name "p:" returns
+ * namespace name (URI) for the namespace with prefix "p".
+ *
+ * Partially equivalent to
+ * qname = raptor_new_qname(nstack, name, NULL);
+ * uri = raptor_uri_copy(qname->uri);
+ * raptor_free_qname(qname)
+ * but without making the qname, and it also handles the NULL and
+ * ":" name cases as well as error checking.
+ *
+ * Return value: new #raptor_uri object or NULL on failure
+ **/
+raptor_uri*
+raptor_qname_string_to_uri(raptor_namespace_stack *nstack,
+ const unsigned char *name, size_t name_len)
+{
+ raptor_uri *uri = NULL;
+ const unsigned char *p;
+ const unsigned char *original_name = name;
+ const unsigned char *local_name = NULL;
+ unsigned int local_name_length = 0;
+ raptor_namespace* ns;
+
+ /* Empty string is default namespace URI */
+ if(!name) {
+ ns = raptor_namespaces_get_default_namespace(nstack);
+ } else {
+ /* If starts with :, it is relative to default namespace, so skip it */
+ if(*name == ':') {
+ name++;
+ name_len--;
+ }
+
+ for(p = name; *p && *p != ':'; p++)
+ ;
+
+ /* If ends with :, it is the URI of a namespace */
+ if(RAPTOR_GOOD_CAST(size_t, p-name) == (name_len - 1)) {
+ ns = raptor_namespaces_find_namespace(nstack, name,
+ RAPTOR_BAD_CAST(int, (name_len - 1)));
+ } else {
+ if(!*p) {
+ local_name = name;
+ local_name_length = (unsigned int)(p - name);
+
+ /* pick up the default namespace if there is one */
+ ns = raptor_namespaces_get_default_namespace(nstack);
+ } else {
+ /* There is a namespace prefix */
+ unsigned int prefix_length = (unsigned int)(p - name);
+ p++;
+
+ local_name = p;
+ local_name_length = (unsigned int)strlen((char*)p);
+
+ /* Find the namespace */
+ ns = raptor_namespaces_find_namespace(nstack, name, prefix_length);
+ }
+ }
+ }
+
+ if(!ns) {
+ raptor_log_error_formatted(nstack->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "The namespace prefix in \"%s\" was not declared.",
+ original_name);
+ }
+
+
+
+ /* If namespace has a URI and a local_name is defined, return the URI
+ * for this name
+ */
+ if(ns && (uri = raptor_namespace_get_uri(ns))) {
+ if(local_name_length)
+ uri = raptor_new_uri_from_uri_local_name(nstack->world, uri, local_name);
+ else
+ uri = raptor_uri_copy(uri);
+ }
+
+ return uri;
+}
+
+
+/**
+ * raptor_qname_write:
+ * @qname: QName to write
+ * @iostr: raptor iosteram
+ *
+ * Write a formatted qname to an iostream
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_qname_write(raptor_qname *qname, raptor_iostream* iostr)
+{
+ if(qname->nspace && qname->nspace->prefix_length > 0) {
+ raptor_iostream_counted_string_write(qname->nspace->prefix,
+ qname->nspace->prefix_length,
+ iostr);
+ raptor_iostream_write_byte(':', iostr);
+ }
+
+ raptor_iostream_counted_string_write(qname->local_name,
+ qname->local_name_length,
+ iostr);
+ return 0;
+}
+
+
+/**
+ * raptor_qname_to_counted_name:
+ * @qname: QName to write
+ * @length_p: pointer to variable to store length of name (or NULL)
+ *
+ * Get the string form of a QName name
+ *
+ * Return value: new string name or NULL on failure
+ **/
+unsigned char*
+raptor_qname_to_counted_name(raptor_qname *qname, size_t* length_p)
+{
+ size_t len = qname->local_name_length;
+ unsigned char* s;
+ unsigned char *p;
+
+ if(qname->nspace && qname->nspace->prefix_length > 0)
+ len+= 1 + qname->nspace->prefix_length;
+
+ if(length_p)
+ *length_p=len;
+
+ s = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(!s)
+ return NULL;
+
+ p = s;
+ if(qname->nspace && qname->nspace->prefix_length > 0) {
+ memcpy(p, qname->nspace->prefix, qname->nspace->prefix_length); /* Do not copy NUL */
+ p += qname->nspace->prefix_length;
+ *p++ = ':';
+ }
+
+ memcpy(p, qname->local_name, qname->local_name_length + 1); /* Copy final NUL */
+
+ return s;
+}
+
+
+/**
+ * raptor_qname_get_namespace:
+ * @name: #raptor_qname object
+ *
+ * Get the #raptor_namespace of an XML QName.
+ *
+ * Return value: the namespace
+ **/
+const raptor_namespace*
+raptor_qname_get_namespace(raptor_qname* name)
+{
+ return name->nspace;
+}
+
+
+/**
+ * raptor_qname_get_local_name:
+ * @name: #raptor_qname object
+ *
+ * Get the #raptor_local_name of an XML QName.
+ *
+ * Return value: the local_name
+ **/
+const unsigned char*
+raptor_qname_get_local_name(raptor_qname* name)
+{
+ return name->local_name;
+}
+
+
+/**
+ * raptor_qname_get_value:
+ * @name: #raptor_qname object
+ *
+ * Get the #raptor_value of an XML QName.
+ *
+ * Return value: the value
+ **/
+const unsigned char*
+raptor_qname_get_value(raptor_qname* name)
+{
+ return name->value;
+}
+
+/**
+ * raptor_qname_get_counted_value:
+ * @name: #raptor_qname object
+ * @length_p: pointer to variable to store length of name (or NULL)
+ *
+ * Get the #raptor_value of an XML QName.
+ *
+ * Return value: the value
+ **/
+const unsigned char*
+raptor_qname_get_counted_value(raptor_qname* name, size_t* length_p)
+{
+ if(length_p)
+ *length_p=name->value_length;
+ return name->value;
+}
diff --git a/src/raptor_rdfxml.c b/src/raptor_rdfxml.c
new file mode 100644
index 0000000..391ca22
--- /dev/null
+++ b/src/raptor_rdfxml.c
@@ -0,0 +1,3223 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_rdfxml.c - Raptor RDF/XML Parser
+ *
+ * Copyright (C) 2000-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2000-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/* Define these for far too much output */
+#undef RAPTOR_DEBUG_VERBOSE
+#undef RAPTOR_DEBUG_CDATA
+
+
+/* Raptor structures */
+
+typedef enum {
+ /* Catch uninitialised state */
+ RAPTOR_STATE_INVALID = 0,
+
+ /* Skipping current tree of elements - used to recover finding
+ * illegal content, when parsling permissively.
+ */
+ RAPTOR_STATE_SKIPPING,
+
+ /* Not in RDF grammar yet - searching for a start element.
+ *
+ * This can be <rdf:RDF> (goto NODE_ELEMENT_LIST) but since it is optional,
+ * the start element can also be one of
+ * http://www.w3.org/TR/rdf-syntax-grammar/#nodeElementURIs
+ *
+ * If RDF content is assumed, go straight to OBJ
+ */
+ RAPTOR_STATE_UNKNOWN,
+
+ /* A list of node elements
+ * http://www.w3.org/TR/rdf-syntax-grammar/#nodeElementList
+ */
+ RAPTOR_STATE_NODE_ELEMENT_LIST,
+
+ /* Found an <rdf:Description> */
+ RAPTOR_STATE_DESCRIPTION,
+
+ /* Found a property element
+ * http://www.w3.org/TR/rdf-syntax-grammar/#propertyElt
+ */
+ RAPTOR_STATE_PROPERTYELT,
+
+ /* A property element that is an ordinal - rdf:li, rdf:_n
+ */
+ RAPTOR_STATE_MEMBER_PROPERTYELT,
+
+ /* Found a node element
+ * http://www.w3.org/TR/rdf-syntax-grammar/#nodeElement
+ */
+ RAPTOR_STATE_NODE_ELEMENT,
+
+ /* A property element with rdf:parseType="Literal"
+ * http://www.w3.org/TR/rdf-syntax-grammar/#parseTypeLiteralPropertyElt
+ */
+ RAPTOR_STATE_PARSETYPE_LITERAL,
+
+ /* A property element with rdf:parseType="Resource"
+ * http://www.w3.org/TR/rdf-syntax-grammar/#parseTypeResourcePropertyElt
+ */
+ RAPTOR_STATE_PARSETYPE_RESOURCE,
+
+ /* A property element with rdf:parseType="Collection"
+ * http://www.w3.org/TR/rdf-syntax-grammar/#parseTypeCollectionPropertyElt
+ *
+ * (This also handles daml:Collection)
+ */
+ RAPTOR_STATE_PARSETYPE_COLLECTION,
+
+ /* A property element with a rdf:parseType attribute and a value
+ * not "Literal" or "Resource"
+ * http://www.w3.org/TR/rdf-syntax-grammar/#parseTypeOtherPropertyElt
+ */
+ RAPTOR_STATE_PARSETYPE_OTHER,
+
+ RAPTOR_STATE_PARSETYPE_LAST = RAPTOR_STATE_PARSETYPE_OTHER
+
+
+} raptor_state;
+
+
+static const char* const raptor_state_names[RAPTOR_STATE_PARSETYPE_LAST+2] = {
+ "INVALID",
+ "SKIPPING",
+ "UNKNOWN",
+ "nodeElementList",
+ "propertyElt",
+ "Description",
+ "propertyElt",
+ "memberPropertyElt",
+ "nodeElement",
+ "parseTypeLiteral",
+ "parseTypeResource",
+ "parseTypeCollection",
+ "parseTypeOther"
+};
+
+
+static const char * raptor_rdfxml_state_as_string(raptor_state state)
+{
+ if(state < 1 || state > RAPTOR_STATE_PARSETYPE_LAST)
+ state = (raptor_state)0;
+ return raptor_state_names[(int)state];
+}
+
+
+/*
+ * raptor_rdfxml_check_propertyElement_name:
+ * @name: rdf namespace term
+ *
+ * Check if an rdf namespace name is allowed to be used as a Node Element.
+ *
+ * Return value: < 0 if unknown rdf namespace term, 0 if known and not allowed, > 0 if known and allowed
+ */
+static int
+raptor_rdfxml_check_nodeElement_name(const char *name)
+{
+ int i;
+
+ if(*name == '_')
+ return 1;
+
+ for(i = 0; raptor_rdf_ns_terms_info[i].name; i++)
+ if(!strcmp(raptor_rdf_ns_terms_info[i].name, name))
+ return raptor_rdf_ns_terms_info[i].allowed_as_nodeElement;
+
+ return -1;
+}
+
+
+/*
+ * raptor_rdfxml_check_propertyElement_name:
+ * @name: rdf namespace term
+ *
+ * Check if an rdf namespace name is allowed to be used as a Property Element.
+ *
+ * Return value: < 0 if unknown rdf namespace term, 0 if known and not allowed, > 0 if known and allowed
+ */
+static int
+raptor_rdfxml_check_propertyElement_name(const char *name)
+{
+ int i;
+
+ if(*name == '_')
+ return 1;
+
+ for(i = 0; raptor_rdf_ns_terms_info[i].name; i++)
+ if(!strcmp(raptor_rdf_ns_terms_info[i].name, (const char*)name))
+ return raptor_rdf_ns_terms_info[i].allowed_as_propertyElement;
+
+ return -1;
+}
+
+
+static int
+raptor_rdfxml_check_propertyAttribute_name(const char *name)
+{
+ int i;
+
+ if(*name == '_')
+ return 1;
+
+ for(i = 0; raptor_rdf_ns_terms_info[i].name; i++)
+ if(!strcmp(raptor_rdf_ns_terms_info[i].name, (const char*)name))
+ return raptor_rdf_ns_terms_info[i].allowed_as_propertyAttribute;
+
+ return -1;
+}
+
+
+typedef enum {
+ /* undetermined yet - whitespace is stored */
+ RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_UNKNOWN,
+
+ /* literal content - no elements, cdata allowed, whitespace significant
+ * <propElement> blah </propElement>
+ */
+ RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LITERAL,
+
+ /* parseType literal content (WF XML) - all content preserved
+ * <propElement rdf:parseType="Literal"><em>blah</em></propElement>
+ */
+ RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_XML_LITERAL,
+
+ /* top-level nodes - 0+ elements expected, no cdata, whitespace ignored,
+ * any non-whitespace cdata is error
+ * only used for <rdf:RDF> or implict <rdf:RDF>
+ */
+ RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_NODES,
+
+ /* properties - 0+ elements expected, no cdata, whitespace ignored,
+ * any non-whitespace cdata is error
+ * <nodeElement><prop1>blah</prop1> <prop2>blah</prop2> </nodeElement>
+ */
+ RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTIES,
+
+ /* property content - all content preserved
+ * any content type changes when first non-whitespace found
+ * <propElement>...
+ */
+ RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTY_CONTENT,
+
+ /* resource URI given - no element, no cdata, whitespace ignored,
+ * any non-whitespace cdata is error
+ * <propElement rdf:resource="uri"/>
+ * <propElement rdf:resource="uri"></propElement>
+ */
+ RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_RESOURCE,
+
+ /* skipping content - all content is preserved
+ * Used when skipping content for unknown parseType-s,
+ * error recovery, some other reason
+ */
+ RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PRESERVED,
+
+ /* parseType Collection - all content preserved
+ * Parsing of this determined by RDF/XML (Revised) closed collection rules
+ * <propElement rdf:parseType="Collection">...</propElement>
+ */
+ RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_COLLECTION,
+
+ /* Like above but handles "daml:collection" */
+ RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION,
+
+ /* dummy for use in strings below */
+ RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LAST
+
+} raptor_rdfxml_element_content_type;
+
+
+static const struct {
+ const char * name;
+ int whitespace_significant;
+ /* non-blank cdata */
+ int cdata_allowed;
+ /* XML element content */
+ int element_allowed;
+ /* Do RDF-specific processing? (property attributes, rdf: attributes, ...) */
+ int rdf_processing;
+} rdf_content_type_info[RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LAST]={
+ {"Unknown", 1, 1, 1, 0 },
+ {"Literal", 1, 1, 0, 0 },
+ {"XML Literal", 1, 1, 1, 0 },
+ {"Nodes", 0, 0, 1, 1 },
+ {"Properties", 0, 1, 1, 1 },
+ {"Property Content",1, 1, 1, 1 },
+ {"Resource", 0, 0, 0, 0 },
+ {"Preserved", 1, 1, 1, 0 },
+ {"Collection", 1, 1, 1, 1 },
+ {"DAML Collection", 1, 1, 1, 1 },
+};
+
+
+
+static const char *
+raptor_rdfxml_element_content_type_as_string(raptor_rdfxml_element_content_type type)
+{
+ if(type > RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LAST)
+ return "INVALID";
+ return rdf_content_type_info[type].name;
+}
+
+
+
+
+
+/*
+ * Raptor Element/attributes on stack
+ */
+struct raptor_rdfxml_element_s {
+ raptor_world* world;
+
+ raptor_xml_element *xml_element;
+
+ /* NULL at bottom of stack */
+ struct raptor_rdfxml_element_s *parent;
+
+ /* attributes declared in M&S */
+ const unsigned char * rdf_attr[RDF_NS_LAST + 1];
+ /* how many of above seen */
+ int rdf_attr_count;
+
+ /* state that this production matches */
+ raptor_state state;
+
+ /* how to handle the content inside this XML element */
+ raptor_rdfxml_element_content_type content_type;
+
+
+ /* starting state for children of this element */
+ raptor_state child_state;
+
+ /* starting content type for children of this element */
+ raptor_rdfxml_element_content_type child_content_type;
+
+
+ /* Reified statement identifier */
+ raptor_term* reified;
+
+ unsigned const char* reified_id;
+
+ /* Bag identifier */
+ raptor_term* bag;
+ int last_bag_ordinal; /* starts at 0, so first predicate is rdf:_1 */
+
+ /* Subject identifier (URI/anon ID), type, source
+ *
+ * When the XML element represents a node, this is the identifier
+ */
+ raptor_term* subject;
+
+ /* Predicate URI
+ *
+ * When the XML element represents a node or predicate,
+ * this is the identifier of the predicate
+ */
+ raptor_term* predicate;
+
+ /* Object identifier (URI/anon ID), type, source
+ *
+ * When this XML element generates a statement that needs an object,
+ * possibly from a child element, this is the identifier of the object
+ */
+ raptor_term* object;
+
+ /* URI of datatype of literal */
+ raptor_uri *object_literal_datatype;
+
+ /* last ordinal used, so initialising to 0 works, emitting rdf:_1 first */
+ int last_ordinal;
+
+ /* If this element's parseType is a Collection
+ * this identifies the anon node of current tail of the collection(list).
+ */
+ const unsigned char *tail_id;
+
+ /* RDF/XML specific checks */
+
+ /* all cdata so far is whitespace */
+ unsigned int content_cdata_all_whitespace;
+};
+
+typedef struct raptor_rdfxml_element_s raptor_rdfxml_element;
+
+
+#define RAPTOR_RDFXML_N_CONCEPTS 5
+
+/*
+ * Raptor parser object
+ */
+struct raptor_rdfxml_parser_s {
+ raptor_sax2 *sax2;
+
+ /* stack of elements - elements add after current_element */
+ raptor_rdfxml_element *root_element;
+ raptor_rdfxml_element *current_element;
+
+ raptor_uri* concepts[RAPTOR_RDFXML_N_CONCEPTS];
+
+ /* set of seen rdf:ID / rdf:bagID values (with in-scope base URI) */
+ raptor_id_set* id_set;
+
+ void *xml_content;
+ size_t xml_content_length;
+ raptor_iostream* iostream;
+
+ /* writer for building parseType="Literal" content */
+ raptor_xml_writer* xml_writer;
+};
+
+
+
+
+/* static variables */
+
+#define RAPTOR_DAML_NS_URI(rdf_xml_parser) rdf_xml_parser->concepts[0]
+
+#define RAPTOR_DAML_List_URI(rdf_xml_parser) rdf_xml_parser->concepts[1]
+#define RAPTOR_DAML_first_URI(rdf_xml_parser) rdf_xml_parser->concepts[2]
+#define RAPTOR_DAML_rest_URI(rdf_xml_parser) rdf_xml_parser->concepts[3]
+#define RAPTOR_DAML_nil_URI(rdf_xml_parser) rdf_xml_parser->concepts[4]
+
+/* RAPTOR_RDFXML_N_CONCEPTS defines size of array */
+
+
+/* prototypes for element functions */
+static raptor_rdfxml_element* raptor_rdfxml_element_pop(raptor_rdfxml_parser *rdf_parser);
+static void raptor_rdfxml_element_push(raptor_rdfxml_parser *rdf_parser, raptor_rdfxml_element* element);
+
+static int raptor_rdfxml_record_ID(raptor_parser *rdf_parser, raptor_rdfxml_element *element, const unsigned char *id);
+
+/* prototypes for grammar functions */
+static void raptor_rdfxml_start_element_grammar(raptor_parser *parser, raptor_rdfxml_element *element);
+static void raptor_rdfxml_end_element_grammar(raptor_parser *parser, raptor_rdfxml_element *element);
+static void raptor_rdfxml_cdata_grammar(raptor_parser *parser, const unsigned char *s, int len, int is_cdata);
+
+
+/* prototype for statement related functions */
+static void raptor_rdfxml_generate_statement(raptor_parser *rdf_parser, raptor_term *subject, raptor_uri *predicate_uri, raptor_term *object, raptor_term *reified, raptor_rdfxml_element *bag_element);
+
+
+
+/* Prototypes for parsing data functions */
+static int raptor_rdfxml_parse_init(raptor_parser* rdf_parser, const char *name);
+static void raptor_rdfxml_parse_terminate(raptor_parser *rdf_parser);
+static int raptor_rdfxml_parse_start(raptor_parser* rdf_parser);
+static int raptor_rdfxml_parse_chunk(raptor_parser* rdf_parser, const unsigned char *buffer, size_t len, int is_end);
+static void raptor_rdfxml_update_document_locator(raptor_parser *rdf_parser);
+
+static raptor_uri* raptor_rdfxml_inscope_base_uri(raptor_parser *rdf_parser);
+
+
+static raptor_rdfxml_element*
+raptor_rdfxml_element_pop(raptor_rdfxml_parser *rdf_xml_parser)
+{
+ raptor_rdfxml_element *element = rdf_xml_parser->current_element;
+
+ if(!element)
+ return NULL;
+
+ rdf_xml_parser->current_element = element->parent;
+ if(rdf_xml_parser->root_element == element) /* just deleted root */
+ rdf_xml_parser->root_element = NULL;
+
+ return element;
+}
+
+
+static void
+raptor_rdfxml_element_push(raptor_rdfxml_parser *rdf_xml_parser, raptor_rdfxml_element* element)
+{
+ element->parent = rdf_xml_parser->current_element;
+ rdf_xml_parser->current_element = element;
+ if(!rdf_xml_parser->root_element)
+ rdf_xml_parser->root_element = element;
+}
+
+
+static void
+raptor_free_rdfxml_element(raptor_rdfxml_element *element)
+{
+ int i;
+
+ /* Free special RDF M&S attributes */
+ for(i = 0; i <= RDF_NS_LAST; i++)
+ if(element->rdf_attr[i])
+ RAPTOR_FREE(char*, element->rdf_attr[i]);
+
+ if(element->subject)
+ raptor_free_term(element->subject);
+ if(element->predicate)
+ raptor_free_term(element->predicate);
+ if(element->object)
+ raptor_free_term(element->object);
+ if(element->bag)
+ raptor_free_term(element->bag);
+ if(element->reified)
+ raptor_free_term(element->reified);
+
+ if(element->tail_id)
+ RAPTOR_FREE(char*, (char*)element->tail_id);
+ if(element->object_literal_datatype)
+ raptor_free_uri(element->object_literal_datatype);
+
+ if(element->reified_id)
+ RAPTOR_FREE(char*, (char*)element->reified_id);
+
+ RAPTOR_FREE(raptor_rdfxml_element, element);
+}
+
+
+static void
+raptor_rdfxml_sax2_new_namespace_handler(void *user_data,
+ raptor_namespace* nspace)
+{
+ raptor_parser* rdf_parser;
+ const unsigned char* namespace_name;
+ size_t namespace_name_len;
+ raptor_uri* uri = raptor_namespace_get_uri(nspace);
+
+ rdf_parser = (raptor_parser*)user_data;
+ raptor_parser_start_namespace(rdf_parser, nspace);
+
+ if(!uri)
+ return;
+
+ namespace_name = raptor_uri_as_counted_string(uri, &namespace_name_len);
+
+ if(namespace_name_len == raptor_rdf_namespace_uri_len-1 &&
+ !strncmp((const char*)namespace_name,
+ (const char*)raptor_rdf_namespace_uri,
+ namespace_name_len)) {
+ const unsigned char *prefix = raptor_namespace_get_prefix(nspace);
+ raptor_parser_warning(rdf_parser,
+ "Declaring a namespace with prefix %s to URI %s - one letter short of the RDF namespace URI and probably a mistake.",
+ prefix, namespace_name);
+ }
+
+ if(namespace_name_len > raptor_rdf_namespace_uri_len &&
+ !strncmp((const char*)namespace_name,
+ (const char*)raptor_rdf_namespace_uri,
+ raptor_rdf_namespace_uri_len)) {
+ raptor_parser_error(rdf_parser,
+ "Declaring a namespace URI %s to which the RDF namespace URI is a prefix is forbidden.",
+ namespace_name);
+ }
+}
+
+
+
+static void
+raptor_rdfxml_start_element_handler(void *user_data,
+ raptor_xml_element* xml_element)
+{
+ raptor_parser* rdf_parser;
+ raptor_rdfxml_parser* rdf_xml_parser;
+ raptor_rdfxml_element* element;
+ int ns_attributes_count = 0;
+ raptor_qname** named_attrs = NULL;
+ int i;
+ int count_bumped = 0;
+
+ rdf_parser = (raptor_parser*)user_data;
+ rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+
+ if(rdf_parser->failed)
+ return;
+
+ raptor_rdfxml_update_document_locator(rdf_parser);
+
+ /* Create new element structure */
+ element = RAPTOR_CALLOC(raptor_rdfxml_element*, 1, sizeof(*element));
+ if(!element) {
+ raptor_parser_fatal_error(rdf_parser, "Out of memory");
+ rdf_parser->failed = 1;
+ return;
+ }
+ element->world = rdf_parser->world;
+ element->xml_element = xml_element;
+
+ raptor_rdfxml_element_push(rdf_xml_parser, element);
+
+ named_attrs = raptor_xml_element_get_attributes(xml_element);
+ ns_attributes_count = raptor_xml_element_get_attributes_count(xml_element);
+
+ /* RDF-specific processing of attributes */
+ if(ns_attributes_count) {
+ raptor_qname** new_named_attrs;
+ int offset = 0;
+ raptor_rdfxml_element* parent_element;
+
+ parent_element = element->parent;
+
+ /* Allocate new array to move namespaced-attributes to if
+ * rdf processing is performed
+ */
+ new_named_attrs = RAPTOR_CALLOC(raptor_qname**, ns_attributes_count,
+ sizeof(raptor_qname*));
+ if(!new_named_attrs) {
+ raptor_parser_fatal_error(rdf_parser, "Out of memory");
+ rdf_parser->failed = 1;
+ return;
+ }
+
+ for(i = 0; i < ns_attributes_count; i++) {
+ raptor_qname* attr = named_attrs[i];
+
+ /* If:
+ * 1 We are handling RDF content and RDF processing is allowed on
+ * this element
+ * OR
+ * 2 We are not handling RDF content and
+ * this element is at the top level (top level Desc. / typedNode)
+ * i.e. we have no parent
+ * then handle the RDF attributes
+ */
+ if((parent_element &&
+ rdf_content_type_info[parent_element->child_content_type].rdf_processing) ||
+ !parent_element) {
+
+ /* Save pointers to some RDF M&S attributes */
+
+ /* If RDF namespace-prefixed attributes */
+ if(attr->nspace && attr->nspace->is_rdf_ms) {
+ const unsigned char *attr_name = attr->local_name;
+ int j;
+
+ for(j = 0; j <= RDF_NS_LAST; j++)
+ if(!strcmp((const char*)attr_name,
+ raptor_rdf_ns_terms_info[j].name)) {
+ element->rdf_attr[j] = attr->value;
+ element->rdf_attr_count++;
+ /* Delete it if it was stored elsewhere */
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG3("Found RDF namespace attribute '%s' URI %s\n",
+ (char*)attr_name, attr->value);
+#endif
+ /* make sure value isn't deleted from qname structure */
+ attr->value = NULL;
+ raptor_free_qname(attr);
+ attr = NULL;
+ break;
+ }
+ } /* end if RDF namespaced-prefixed attributes */
+
+ if(!attr)
+ continue;
+
+ /* If non namespace-prefixed RDF attributes found on an element */
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES) &&
+ !attr->nspace) {
+ const unsigned char *attr_name = attr->local_name;
+ int j;
+
+ for(j = 0; j <= RDF_NS_LAST; j++)
+ if(!strcmp((const char*)attr_name,
+ raptor_rdf_ns_terms_info[j].name)) {
+ element->rdf_attr[j] = attr->value;
+ element->rdf_attr_count++;
+ if(!raptor_rdf_ns_terms_info[j].allowed_unprefixed_on_attribute)
+ raptor_parser_warning(rdf_parser,
+ "Using rdf attribute '%s' without the RDF namespace has been deprecated.",
+ attr_name);
+
+ /* Delete it if it was stored elsewhere */
+ /* make sure value isn't deleted from qname structure */
+ attr->value = NULL;
+ raptor_free_qname(attr);
+ attr = NULL;
+ break;
+ }
+ } /* end if non-namespace prefixed RDF attributes */
+
+ if(!attr)
+ continue;
+
+ } /* end if leave literal XML alone */
+
+ if(attr)
+ new_named_attrs[offset++] = attr;
+ }
+
+ /* new attribute count is set from attributes that haven't been skipped */
+ ns_attributes_count = offset;
+ if(!ns_attributes_count) {
+ /* all attributes were deleted so delete the new array */
+ RAPTOR_FREE(raptor_qname_array, new_named_attrs);
+ new_named_attrs = NULL;
+ }
+
+ RAPTOR_FREE(raptor_qname_array, named_attrs);
+ named_attrs = new_named_attrs;
+ raptor_xml_element_set_attributes(xml_element,
+ named_attrs, ns_attributes_count);
+ } /* end if ns_attributes_count */
+
+
+ /* start from unknown; if we have a parent, it may set this */
+ element->state = RAPTOR_STATE_UNKNOWN;
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_UNKNOWN;
+
+ if(element->parent &&
+ element->parent->child_content_type != RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_UNKNOWN) {
+ element->content_type = element->parent->child_content_type;
+
+ if(element->parent->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_RESOURCE &&
+ element->content_type != RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_COLLECTION &&
+ element->content_type != RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION) {
+ raptor_qname* parent_el_name;
+ parent_el_name = raptor_xml_element_get_name(element->parent->xml_element);
+ /* If parent has an rdf:resource, this element should not be here */
+ raptor_parser_error(rdf_parser,
+ "property element '%s' has multiple object node elements, skipping.",
+ parent_el_name->local_name);
+ element->state = RAPTOR_STATE_SKIPPING;
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PRESERVED;
+
+ } else {
+ if(!element->parent->child_state) {
+ raptor_parser_fatal_error(rdf_parser,
+ "%s: Internal error: no parent element child_state set",
+ __func__);
+ return;
+ }
+
+ element->state = element->parent->child_state;
+ element->parent->xml_element->content_element_seen++;
+ count_bumped++;
+
+ /* leave literal XML alone */
+ if(!rdf_content_type_info[element->content_type].cdata_allowed) {
+ if(element->parent->xml_element->content_element_seen &&
+ element->parent->xml_element->content_cdata_seen) {
+ raptor_qname* parent_el_name;
+
+ parent_el_name = raptor_xml_element_get_name(element->parent->xml_element);
+ /* Uh oh - mixed content, the parent element has cdata too */
+ raptor_parser_warning(rdf_parser, "element '%s' has mixed content.",
+ parent_el_name->local_name);
+ }
+
+ /* If there is some existing all-whitespace content cdata
+ * before this node element, delete it
+ */
+ if(element->parent->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTIES &&
+ element->parent->xml_element->content_element_seen &&
+ element->parent->content_cdata_all_whitespace &&
+ element->parent->xml_element->content_cdata_length) {
+
+ element->parent->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_RESOURCE;
+
+ raptor_free_stringbuffer(element->parent->xml_element->content_cdata_sb);
+ element->parent->xml_element->content_cdata_sb = NULL;
+ element->parent->xml_element->content_cdata_length = 0;
+ }
+
+ } /* end if leave literal XML alone */
+
+ } /* end if parent has no rdf:resource */
+
+ } /* end if element->parent */
+
+
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG2("Using content type %s\n",
+ rdf_content_type_info[element->content_type].name);
+
+ fprintf(stderr, "raptor_rdfxml_start_element_handler: Start ns-element: ");
+ raptor_print_xml_element(xml_element, stderr);
+#endif
+
+
+ /* Check for non namespaced stuff when not in a parseType literal, other */
+ if(rdf_content_type_info[element->content_type].rdf_processing) {
+ const raptor_namespace* ns;
+
+ ns = raptor_xml_element_get_name(xml_element)->nspace;
+ /* The element */
+
+ /* If has no namespace or the namespace has no name (xmlns="") */
+ if((!ns || (ns && !raptor_namespace_get_uri(ns))) && element->parent) {
+ raptor_qname* parent_el_name;
+
+ parent_el_name = raptor_xml_element_get_name(element->parent->xml_element);
+
+ raptor_parser_error(rdf_parser,
+ "Using an element '%s' without a namespace is forbidden.",
+ parent_el_name->local_name);
+ element->state = RAPTOR_STATE_SKIPPING;
+ /* Remove count above so that parent thinks this is empty */
+ if(count_bumped)
+ element->parent->xml_element->content_element_seen--;
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PRESERVED;
+ }
+
+
+ /* Check for any remaining non-namespaced attributes */
+ if(named_attrs) {
+ for(i = 0; i < ns_attributes_count; i++) {
+ raptor_qname *attr = named_attrs[i];
+ /* Check if any attributes are non-namespaced */
+ if(!attr->nspace ||
+ (attr->nspace && !raptor_namespace_get_uri(attr->nspace))) {
+ raptor_parser_error(rdf_parser,
+ "Using an attribute '%s' without a namespace is forbidden.",
+ attr->local_name);
+ raptor_free_qname(attr);
+ named_attrs[i] = NULL;
+ }
+ }
+ }
+ }
+
+
+ if(element->rdf_attr[RDF_NS_aboutEach] ||
+ element->rdf_attr[RDF_NS_aboutEachPrefix]) {
+ raptor_parser_warning(rdf_parser,
+ "element '%s' has aboutEach / aboutEachPrefix, skipping.",
+ raptor_xml_element_get_name(xml_element)->local_name);
+ element->state = RAPTOR_STATE_SKIPPING;
+ /* Remove count above so that parent thinks this is empty */
+ if(count_bumped)
+ element->parent->xml_element->content_element_seen--;
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PRESERVED;
+ }
+
+ /* Right, now ready to enter the grammar */
+ raptor_rdfxml_start_element_grammar(rdf_parser, element);
+
+ return;
+}
+
+
+static void
+raptor_rdfxml_end_element_handler(void *user_data,
+ raptor_xml_element* xml_element)
+{
+ raptor_parser* rdf_parser;
+ raptor_rdfxml_parser* rdf_xml_parser;
+ raptor_rdfxml_element* element;
+
+ rdf_parser = (raptor_parser*)user_data;
+ rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+
+ if(!rdf_parser->failed) {
+ raptor_rdfxml_update_document_locator(rdf_parser);
+
+ raptor_rdfxml_end_element_grammar(rdf_parser,
+ rdf_xml_parser->current_element);
+ }
+
+ element = raptor_rdfxml_element_pop(rdf_xml_parser);
+ if(element) {
+ if(element->parent) {
+ /* Do not change this; PROPERTYELT will turn into MEMBER if necessary
+ * See the switch case for MEMBER / PROPERTYELT where the test is done.
+ *
+ * PARSETYPE_RESOURCE should never be propogated up since it
+ * will turn the next child (node) element into a property
+ */
+ if(element->state != RAPTOR_STATE_MEMBER_PROPERTYELT &&
+ element->state != RAPTOR_STATE_PARSETYPE_RESOURCE)
+ element->parent->child_state = element->state;
+ }
+
+ raptor_free_rdfxml_element(element);
+ }
+}
+
+
+/* cdata (and ignorable whitespace for libxml).
+ * s 0 terminated is for libxml
+ */
+static void
+raptor_rdfxml_characters_handler(void *user_data,
+ raptor_xml_element* xml_element,
+ const unsigned char *s, int len)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)user_data;
+
+ raptor_rdfxml_cdata_grammar(rdf_parser, s, len, 0);
+}
+
+
+/* cdata (and ignorable whitespace for libxml).
+ * s is 0 terminated for libxml2
+ */
+static void
+raptor_rdfxml_cdata_handler(void *user_data, raptor_xml_element* xml_element,
+ const unsigned char *s, int len)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)user_data;
+
+ raptor_rdfxml_cdata_grammar(rdf_parser, s, len, 1);
+}
+
+
+/* comment handler
+ * s is 0 terminated
+ */
+static void
+raptor_rdfxml_comment_handler(void *user_data, raptor_xml_element* xml_element,
+ const unsigned char *s)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)user_data;
+ raptor_rdfxml_parser* rdf_xml_parser;
+ raptor_rdfxml_element* element;
+
+ if(rdf_parser->failed || !xml_element)
+ return;
+
+ rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+ element = rdf_xml_parser->current_element;
+
+ if(element) {
+ if(element->child_content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_XML_LITERAL)
+ raptor_xml_writer_comment(rdf_xml_parser->xml_writer, s);
+ }
+
+
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG2("XML Comment '%s'\n", s);
+#endif
+}
+
+
+static const unsigned char* const daml_namespace_uri_string = (const unsigned char*)"http://www.daml.org/2001/03/daml+oil#";
+static const int daml_namespace_uri_string_len = 37;
+
+
+static int
+raptor_rdfxml_parse_init(raptor_parser* rdf_parser, const char *name)
+{
+ raptor_rdfxml_parser* rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+ raptor_sax2* sax2;
+ raptor_world* world = rdf_parser->world;
+
+ /* Allocate sax2 object */
+ sax2 = raptor_new_sax2(rdf_parser->world, &rdf_parser->locator, rdf_parser);
+ rdf_xml_parser->sax2 = sax2;
+ if(!sax2)
+ return 1;
+
+ /* Initialize sax2 element handlers */
+ raptor_sax2_set_start_element_handler(sax2, raptor_rdfxml_start_element_handler);
+ raptor_sax2_set_end_element_handler(sax2, raptor_rdfxml_end_element_handler);
+ raptor_sax2_set_characters_handler(sax2, raptor_rdfxml_characters_handler);
+ raptor_sax2_set_cdata_handler(sax2, raptor_rdfxml_cdata_handler);
+ raptor_sax2_set_comment_handler(sax2, raptor_rdfxml_comment_handler);
+ raptor_sax2_set_namespace_handler(sax2, raptor_rdfxml_sax2_new_namespace_handler);
+
+ /* Allocate uris */
+ RAPTOR_DAML_NS_URI(rdf_xml_parser) = raptor_new_uri_from_counted_string(world,
+ daml_namespace_uri_string,
+ daml_namespace_uri_string_len);
+
+ RAPTOR_DAML_List_URI(rdf_xml_parser) = raptor_new_uri_from_uri_local_name(world, RAPTOR_DAML_NS_URI(rdf_xml_parser), (const unsigned char *)"List");
+ RAPTOR_DAML_first_URI(rdf_xml_parser) = raptor_new_uri_from_uri_local_name(world, RAPTOR_DAML_NS_URI(rdf_xml_parser) ,(const unsigned char *)"first");
+ RAPTOR_DAML_rest_URI(rdf_xml_parser) = raptor_new_uri_from_uri_local_name(world, RAPTOR_DAML_NS_URI(rdf_xml_parser), (const unsigned char *)"rest");
+ RAPTOR_DAML_nil_URI(rdf_xml_parser) = raptor_new_uri_from_uri_local_name(world, RAPTOR_DAML_NS_URI(rdf_xml_parser), (const unsigned char *)"nil");
+
+ /* Check for uri allocation failures */
+ if(!RAPTOR_DAML_NS_URI(rdf_xml_parser) ||
+ !RAPTOR_DAML_List_URI(rdf_xml_parser) ||
+ !RAPTOR_DAML_first_URI(rdf_xml_parser) ||
+ !RAPTOR_DAML_rest_URI(rdf_xml_parser) ||
+ !RAPTOR_DAML_nil_URI(rdf_xml_parser))
+ return 1;
+
+ /* Everything succeeded */
+ return 0;
+}
+
+
+static int
+raptor_rdfxml_parse_start(raptor_parser* rdf_parser)
+{
+ raptor_uri *uri = rdf_parser->base_uri;
+ raptor_rdfxml_parser* rdf_xml_parser;
+
+ rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+
+ /* base URI required for RDF/XML */
+ if(!uri)
+ return 1;
+
+ /* Optionally normalize language to lowercase
+ * http://www.w3.org/TR/rdf-concepts/#dfn-language-identifier
+ */
+ raptor_sax2_set_option(rdf_xml_parser->sax2,
+ RAPTOR_OPTION_NORMALIZE_LANGUAGE, NULL,
+ RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NORMALIZE_LANGUAGE));
+
+ /* Optionally forbid internal network and file requests in the XML parser */
+ raptor_sax2_set_option(rdf_xml_parser->sax2,
+ RAPTOR_OPTION_NO_NET, NULL,
+ RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NO_NET));
+ raptor_sax2_set_option(rdf_xml_parser->sax2,
+ RAPTOR_OPTION_NO_FILE, NULL,
+ RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NO_FILE));
+ raptor_sax2_set_option(rdf_xml_parser->sax2,
+ RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES, NULL,
+ RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES));
+ if(rdf_parser->uri_filter)
+ raptor_sax2_set_uri_filter(rdf_xml_parser->sax2, rdf_parser->uri_filter,
+ rdf_parser->uri_filter_user_data);
+
+ raptor_sax2_parse_start(rdf_xml_parser->sax2, uri);
+
+ /* Delete any existing id_set */
+ if(rdf_xml_parser->id_set) {
+ raptor_free_id_set(rdf_xml_parser->id_set);
+ rdf_xml_parser->id_set = NULL;
+ }
+
+ /* Create a new id_set if needed */
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_CHECK_RDF_ID)) {
+ rdf_xml_parser->id_set = raptor_new_id_set(rdf_parser->world);
+ if(!rdf_xml_parser->id_set)
+ return 1;
+ }
+
+ return 0;
+}
+
+
+static void
+raptor_rdfxml_parse_terminate(raptor_parser *rdf_parser)
+{
+ raptor_rdfxml_parser* rdf_xml_parser;
+ raptor_rdfxml_element* element;
+ int i;
+
+ rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+
+ if(rdf_xml_parser->sax2) {
+ raptor_free_sax2(rdf_xml_parser->sax2);
+ rdf_xml_parser->sax2 = NULL;
+ }
+
+ while( (element = raptor_rdfxml_element_pop(rdf_xml_parser)) )
+ raptor_free_rdfxml_element(element);
+
+
+ for(i = 0; i < RAPTOR_RDFXML_N_CONCEPTS; i++) {
+ raptor_uri* concept_uri = rdf_xml_parser->concepts[i];
+ if(concept_uri) {
+ raptor_free_uri(concept_uri);
+ rdf_xml_parser->concepts[i] = NULL;
+ }
+ }
+
+ if(rdf_xml_parser->id_set) {
+ raptor_free_id_set(rdf_xml_parser->id_set);
+ rdf_xml_parser->id_set = NULL;
+ }
+
+ if (rdf_xml_parser->xml_writer) {
+ raptor_free_xml_writer(rdf_xml_parser->xml_writer);
+ rdf_xml_parser->xml_writer = NULL;
+ }
+
+ if (rdf_xml_parser->iostream) {
+ raptor_free_iostream(rdf_xml_parser->iostream);
+ rdf_xml_parser->iostream = NULL;
+ }
+
+ if (rdf_xml_parser->xml_content) {
+ RAPTOR_FREE(char*, rdf_xml_parser->xml_content);
+ rdf_xml_parser->xml_content = NULL;
+ rdf_xml_parser->xml_content_length = 0;
+ }
+}
+
+
+static int
+raptor_rdfxml_parse_recognise_syntax(raptor_parser_factory* factory,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier,
+ const unsigned char *suffix,
+ const char *mime_type)
+{
+ int score = 0;
+
+ if(suffix) {
+ if(!strcmp((const char*)suffix, "rdf") ||
+ !strcmp((const char*)suffix, "rdfs") ||
+ !strcmp((const char*)suffix, "foaf") ||
+ !strcmp((const char*)suffix, "doap") ||
+ !strcmp((const char*)suffix, "owl") ||
+ !strcmp((const char*)suffix, "daml"))
+ score = 9;
+ if(!strcmp((const char*)suffix, "rss"))
+ score = 3;
+ }
+
+ if(identifier) {
+ if(strstr((const char*)identifier, "rss1"))
+ score += 5;
+ else if(!suffix && strstr((const char*)identifier, "rss"))
+ score += 3;
+ else if(!suffix && strstr((const char*)identifier, "rdf"))
+ score += 2;
+ else if(!suffix && strstr((const char*)identifier, "RDF"))
+ score += 2;
+ }
+
+ if(mime_type) {
+ if(strstr((const char*)mime_type, "html"))
+ score -= 4;
+ else if(!strcmp((const char*)mime_type, "text/rdf"))
+ score += 7;
+ else if(!strcmp((const char*)mime_type, "application/xml"))
+ score += 5;
+ }
+
+ if(buffer && len) {
+ /* Check it's an XML namespace declared and not N3 or Turtle which
+ * mention the namespace URI but not in this form.
+ */
+#define HAS_RDF_XMLNS1 (raptor_memstr((const char*)buffer, len, "xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#") != NULL)
+#define HAS_RDF_XMLNS2 (raptor_memstr((const char*)buffer, len, "xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#") != NULL)
+#define HAS_RDF_XMLNS3 (raptor_memstr((const char*)buffer, len, "xmlns=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#") != NULL)
+#define HAS_RDF_XMLNS4 (raptor_memstr((const char*)buffer, len, "xmlns='http://www.w3.org/1999/02/22-rdf-syntax-ns#") != NULL)
+#define HAS_RDF_ENTITY1 (raptor_memstr((const char*)buffer, len, "!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'") != NULL)
+#define HAS_RDF_ENTITY2 (raptor_memstr((const char*)buffer, len, "!ENTITY rdf \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"") != NULL)
+#define HAS_RDF_ENTITY3 (raptor_memstr((const char*)buffer, len, "xmlns:rdf=\"&rdf;\"") != NULL)
+#define HAS_RDF_ENTITY4 (raptor_memstr((const char*)buffer, len, "xmlns:rdf='&rdf;'") != NULL)
+#define HAS_HTML_NS (raptor_memstr((const char*)buffer, len, "http://www.w3.org/1999/xhtml") != NULL)
+#define HAS_HTML_ROOT (raptor_memstr((const char*)buffer, len, "<html") != NULL)
+
+ if(!HAS_HTML_NS && !HAS_HTML_ROOT &&
+ (HAS_RDF_XMLNS1 || HAS_RDF_XMLNS2 || HAS_RDF_XMLNS3 || HAS_RDF_XMLNS4 ||
+ HAS_RDF_ENTITY1 || HAS_RDF_ENTITY2 || HAS_RDF_ENTITY3 || HAS_RDF_ENTITY4)
+ ) {
+ int has_rdf_RDF = (raptor_memstr((const char*)buffer, len, "<rdf:RDF") != NULL);
+ int has_rdf_Description = (raptor_memstr((const char*)buffer, len, "rdf:Description") != NULL);
+ int has_rdf_about = (raptor_memstr((const char*)buffer, len, "rdf:about") != NULL);
+
+ score += 7;
+ if(has_rdf_RDF)
+ score++;
+ if(has_rdf_Description)
+ score++;
+ if(has_rdf_about)
+ score++;
+ }
+ }
+
+ return score;
+}
+
+
+
+static int
+raptor_rdfxml_parse_chunk(raptor_parser* rdf_parser,
+ const unsigned char *buffer,
+ size_t len, int is_end)
+{
+ raptor_rdfxml_parser* rdf_xml_parser;
+ int rc;
+
+ rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+ if(rdf_parser->failed)
+ return 1;
+
+ rc = raptor_sax2_parse_chunk(rdf_xml_parser->sax2, buffer, len, is_end);
+
+ if(is_end) {
+ if(rdf_parser->emitted_default_graph) {
+ raptor_parser_end_graph(rdf_parser, NULL, 0);
+ rdf_parser->emitted_default_graph--;
+ }
+ }
+
+ return rc;
+}
+
+
+static void
+raptor_rdfxml_generate_statement(raptor_parser *rdf_parser,
+ raptor_term *subject_term,
+ raptor_uri *predicate_uri,
+ raptor_term *object_term,
+ raptor_term *reified_term,
+ raptor_rdfxml_element* bag_element)
+{
+ raptor_statement *statement = &rdf_parser->statement;
+ raptor_term* predicate_term = NULL;
+ int free_reified_term = 0;
+
+ if(rdf_parser->failed)
+ return;
+
+#ifdef RAPTOR_DEBUG_VERBOSE
+ if(!subject_term)
+ RAPTOR_FATAL1("Statement has no subject\n");
+
+ if(!predicate_uri)
+ RAPTOR_FATAL1("Statement has no predicate\n");
+
+ if(!object_term)
+ RAPTOR_FATAL1("Statement has no object\n");
+
+#endif
+
+ predicate_term = raptor_new_term_from_uri(rdf_parser->world, predicate_uri);
+ if(!predicate_term)
+ return;
+
+ statement->subject = subject_term;
+ statement->predicate = predicate_term;
+ statement->object = object_term;
+
+#ifdef RAPTOR_DEBUG_VERBOSE
+ fprintf(stderr, "raptor_rdfxml_generate_statement: Generating statement: ");
+ raptor_statement_print(statement, stderr);
+ fputc('\n', stderr);
+#endif
+
+ if(!rdf_parser->emitted_default_graph) {
+ raptor_parser_start_graph(rdf_parser, NULL, 0);
+ rdf_parser->emitted_default_graph++;
+ }
+
+ if(!rdf_parser->statement_handler)
+ goto generate_tidy;
+
+ /* Generate the statement; or is it a fact? */
+ (*rdf_parser->statement_handler)(rdf_parser->user_data, statement);
+
+
+ /* the bagID mess */
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_ALLOW_BAGID) &&
+ bag_element && bag_element->bag) {
+ raptor_term* bag = bag_element->bag;
+ raptor_uri* bag_predicate_uri = NULL;
+ raptor_term* bag_predicate_term = NULL;
+
+ statement->subject = bag;
+
+ bag_element->last_bag_ordinal++;
+
+ /* new URI object */
+ bag_predicate_uri = raptor_new_uri_from_rdf_ordinal(rdf_parser->world,
+ bag_element->last_bag_ordinal);
+ if(!bag_predicate_uri)
+ goto generate_tidy;
+
+ bag_predicate_term = raptor_new_term_from_uri(rdf_parser->world,
+ bag_predicate_uri);
+ raptor_free_uri(bag_predicate_uri);
+
+ if(!bag_predicate_term)
+ goto generate_tidy;
+
+ statement->predicate = bag_predicate_term;
+
+ if(!reified_term || !reified_term->value.blank.string) {
+ unsigned char *reified_id = NULL;
+
+ /* reified_term is NULL so generate a bag ID */
+ reified_id = raptor_world_generate_bnodeid(rdf_parser->world);
+ if(!reified_id)
+ goto generate_tidy;
+
+ reified_term = raptor_new_term_from_blank(rdf_parser->world, reified_id);
+ RAPTOR_FREE(char*, reified_id);
+
+ if(!reified_term)
+ goto generate_tidy;
+ free_reified_term = 1;
+ }
+
+ statement->object = reified_term;
+ (*rdf_parser->statement_handler)(rdf_parser->user_data, statement);
+
+ if(bag_predicate_term)
+ raptor_free_term(bag_predicate_term);
+ }
+
+
+ /* return if is there no reified ID (that is valid) */
+ if(!reified_term || !reified_term->value.blank.string)
+ goto generate_tidy;
+
+
+ /* otherwise generate reified statements */
+
+ statement->subject = reified_term;
+ statement->predicate = RAPTOR_RDF_type_term(rdf_parser->world);
+ statement->object = RAPTOR_RDF_Statement_term(rdf_parser->world);
+ (*rdf_parser->statement_handler)(rdf_parser->user_data, statement);
+
+ /* statement->subject = reified_term; */
+ statement->predicate = RAPTOR_RDF_subject_term(rdf_parser->world);
+ statement->object = subject_term;
+ (*rdf_parser->statement_handler)(rdf_parser->user_data, statement);
+
+
+ /* statement->subject = reified_term; */
+ statement->predicate = RAPTOR_RDF_predicate_term(rdf_parser->world);
+ statement->object = predicate_term;
+ (*rdf_parser->statement_handler)(rdf_parser->user_data, statement);
+
+ /* statement->subject = reified_term; */
+ statement->predicate = RAPTOR_RDF_object_term(rdf_parser->world);
+ statement->object = object_term;
+ (*rdf_parser->statement_handler)(rdf_parser->user_data, statement);
+
+
+ generate_tidy:
+ /* Tidy up things allocated here */
+ if(predicate_term)
+ raptor_free_term(predicate_term);
+ if(free_reified_term && reified_term)
+ raptor_free_term(reified_term);
+}
+
+
+
+/**
+ * raptor_rdfxml_element_has_property_attributes:
+ * @element: element with the property attributes
+ *
+ * Return true if the element has at least one property attribute.
+ *
+ **/
+static int
+raptor_rdfxml_element_has_property_attributes(raptor_rdfxml_element *element)
+{
+ int i;
+
+ if(element->xml_element->attribute_count > 0)
+ return 1;
+
+ /* look for rdf: properties */
+ for(i = 0; i <= RDF_NS_LAST; i++) {
+ if(element->rdf_attr[i] &&
+ raptor_rdf_ns_terms_info[i].type != RAPTOR_TERM_TYPE_UNKNOWN)
+ return 1;
+ }
+ return 0;
+}
+
+
+/**
+ * raptor_rdfxml_process_property_attributes:
+ * @rdf_parser: Raptor parser object
+ * @attributes_element: element with the property attributes
+ * @resource_element: element that defines the resource URI
+ * subject->value etc.
+ * @property_node_identifier: Use this identifier for the resource URI
+ * and count any ordinals for it locally
+ *
+ * Process the property attributes for an element for a given resource.
+ *
+ **/
+static int
+raptor_rdfxml_process_property_attributes(raptor_parser *rdf_parser,
+ raptor_rdfxml_element *attributes_element,
+ raptor_rdfxml_element *resource_element,
+ raptor_term *property_node_identifier)
+{
+ unsigned int i;
+ raptor_term *resource_identifier;
+
+ resource_identifier = property_node_identifier ? property_node_identifier : resource_element->subject;
+
+
+ /* Process attributes as propAttr* = * (propName="string")*
+ */
+ for(i = 0; i < attributes_element->xml_element->attribute_count; i++) {
+ raptor_qname* attr = attributes_element->xml_element->attributes[i];
+ const unsigned char *name;
+ const unsigned char *value;
+ int handled = 0;
+
+ if(!attr)
+ continue;
+
+ name = attr->local_name;
+ value = attr->value;
+
+ if(!attr->nspace) {
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ raptor_parser_error(rdf_parser,
+ "Using property attribute '%s' without a namespace is forbidden.",
+ name);
+ continue;
+ }
+
+
+ if(!raptor_unicode_check_utf8_nfc_string(value, strlen((const char*)value),
+ NULL)) {
+ const char *message;
+
+ message = "Property attribute '%s' has a string not in Unicode Normal Form C: %s";
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NON_NFC_FATAL))
+ raptor_parser_error(rdf_parser, message, name, value);
+ else
+ raptor_parser_warning(rdf_parser, message, name, value);
+ continue;
+ }
+
+
+ /* Generate the property statement using one of these properties:
+ * 1) rdf:_n
+ * 2) the URI from the rdf:* attribute where allowed
+ * 3) otherwise forbidden (including rdf:li)
+ */
+ if(attr->nspace->is_rdf_ms) {
+ /* is rdf: namespace */
+
+ if(*name == '_') {
+ int ordinal;
+
+ /* recognise rdf:_ */
+ name++;
+ ordinal = raptor_check_ordinal(name);
+ if(ordinal < 1) {
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ raptor_parser_error(rdf_parser,
+ "Illegal ordinal value %d in property attribute '%s' seen on containing element '%s'.",
+ ordinal, attr->local_name, name);
+ }
+ } else {
+ int rc;
+
+ raptor_rdfxml_update_document_locator(rdf_parser);
+
+ rc = raptor_rdfxml_check_propertyAttribute_name((const char*)name);
+ if(!rc)
+ raptor_parser_error(rdf_parser,
+ "RDF term %s is forbidden as a property attribute.",
+ name);
+ else if(rc < 0)
+ raptor_parser_warning(rdf_parser,
+ "Unknown RDF namespace property attribute '%s'.",
+ name);
+ }
+
+ } /* end is RDF namespace property */
+
+
+ if(!handled) {
+ raptor_term* object_term;
+
+ object_term = raptor_new_term_from_literal(rdf_parser->world,
+ (unsigned char*)value,
+ NULL, NULL);
+
+ /* else not rdf: namespace or unknown in rdf: namespace so
+ * generate a statement with a literal object
+ */
+ raptor_rdfxml_generate_statement(rdf_parser,
+ resource_identifier,
+ attr->uri,
+ object_term,
+ NULL, /* Property attributes are never reified*/
+ resource_element);
+
+ raptor_free_term(object_term);
+ }
+
+ } /* end for ... attributes */
+
+
+ /* Handle rdf property attributes
+ * (only rdf:type and rdf:value at present)
+ */
+ for(i = 0; i <= RDF_NS_LAST; i++) {
+ const unsigned char *value = attributes_element->rdf_attr[i];
+ size_t value_len;
+ int object_is_literal;
+ raptor_uri *property_uri;
+ raptor_term* object_term;
+
+ if(!value)
+ continue;
+
+ value_len = strlen((const char*)value);
+
+ object_is_literal = (raptor_rdf_ns_terms_info[i].type == RAPTOR_TERM_TYPE_LITERAL);
+
+ if(raptor_rdf_ns_terms_info[i].type == RAPTOR_TERM_TYPE_UNKNOWN) {
+ const char *name = raptor_rdf_ns_terms_info[i].name;
+ int rc = raptor_rdfxml_check_propertyAttribute_name(name);
+ if(!rc) {
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ raptor_parser_error(rdf_parser,
+ "RDF term %s is forbidden as a property attribute.",
+ name);
+ continue;
+ } else if(rc < 0)
+ raptor_parser_warning(rdf_parser,
+ "Unknown RDF namespace property attribute '%s'.",
+ name);
+ }
+
+ if(object_is_literal &&
+ !raptor_unicode_check_utf8_nfc_string(value, value_len, NULL)) {
+ const char *message;
+ message = "Property attribute '%s' has a string not in Unicode Normal Form C: %s";
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NON_NFC_FATAL))
+ raptor_parser_error(rdf_parser, message,
+ raptor_rdf_ns_terms_info[i].name, value);
+ else
+ raptor_parser_warning(rdf_parser, message,
+ raptor_rdf_ns_terms_info[i].name, value);
+ continue;
+ }
+
+ property_uri = raptor_new_uri_for_rdf_concept(rdf_parser->world,
+ (const unsigned char*)raptor_rdf_ns_terms_info[i].name);
+
+ if(object_is_literal) {
+ object_term = raptor_new_term_from_literal(rdf_parser->world,
+ (unsigned char*)value,
+ NULL, NULL);
+ } else {
+ raptor_uri *base_uri;
+ raptor_uri *object_uri;
+ base_uri = raptor_rdfxml_inscope_base_uri(rdf_parser);
+ object_uri = raptor_new_uri_relative_to_base(rdf_parser->world,
+ base_uri, value);
+ object_term = raptor_new_term_from_uri(rdf_parser->world, object_uri);
+ raptor_free_uri(object_uri);
+ }
+
+ raptor_rdfxml_generate_statement(rdf_parser,
+ resource_identifier,
+ property_uri,
+ object_term,
+ NULL, /* Property attributes are never reified*/
+ resource_element);
+
+ raptor_free_term(object_term);
+
+ raptor_free_uri(property_uri);
+
+ } /* end for rdf:property values */
+
+ return 0;
+}
+
+
+static void
+raptor_rdfxml_start_element_grammar(raptor_parser *rdf_parser,
+ raptor_rdfxml_element *element)
+{
+ raptor_rdfxml_parser *rdf_xml_parser;
+ int finished;
+ raptor_state state;
+ raptor_xml_element* xml_element;
+ raptor_qname* el_qname;
+ const unsigned char *el_name;
+ int element_in_rdf_ns;
+ int rc = 0;
+ raptor_uri* base_uri;
+ raptor_uri* element_name_uri;
+
+ rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+
+ xml_element = element->xml_element;
+ el_qname = raptor_xml_element_get_name(xml_element);
+ el_name = el_qname->local_name;
+ element_in_rdf_ns = (el_qname->nspace && el_qname->nspace->is_rdf_ms);
+ base_uri = raptor_rdfxml_inscope_base_uri(rdf_parser);
+ element_name_uri = el_qname->uri;
+
+ state = element->state;
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG2("Starting in state %s\n", raptor_rdfxml_state_as_string(state));
+#endif
+
+ finished = 0;
+ while(!finished) {
+
+ switch(state) {
+ case RAPTOR_STATE_SKIPPING:
+ element->child_state = state;
+ element->child_content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PRESERVED;
+ finished = 1;
+ break;
+
+ case RAPTOR_STATE_UNKNOWN:
+ /* found <rdf:RDF> ? */
+
+ if(element_in_rdf_ns) {
+ if(raptor_uri_equals(element_name_uri,
+ RAPTOR_RDF_RDF_URI(rdf_parser->world))) {
+ element->child_state = RAPTOR_STATE_NODE_ELEMENT_LIST;
+ element->child_content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_NODES;
+ /* Yes - need more content before can continue,
+ * so wait for another element
+ */
+ finished = 1;
+ break;
+ }
+ if(raptor_uri_equals(element_name_uri,
+ RAPTOR_RDF_Description_URI(rdf_parser->world))) {
+ state = RAPTOR_STATE_DESCRIPTION;
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTIES;
+ /* Yes - found something so move immediately to description */
+ break;
+ }
+
+ if(element_in_rdf_ns) {
+ rc = raptor_rdfxml_check_nodeElement_name((const char*)el_name);
+ if(!rc) {
+ raptor_parser_error(rdf_parser,
+ "rdf:%s is forbidden as a node element.",
+ el_name);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ } else if(rc < 0) {
+ raptor_parser_warning(rdf_parser,
+ "rdf:%s is an unknown RDF namespaced element.",
+ el_name);
+ }
+ }
+ }
+
+ /* If scanning for element, can continue */
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_SCANNING)) {
+ finished = 1;
+ break;
+ }
+
+ /* Otherwise the choice of the next state can be made
+ * from the current element by the OBJ state
+ */
+ state = RAPTOR_STATE_NODE_ELEMENT_LIST;
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_NODES;
+ break;
+
+
+ case RAPTOR_STATE_NODE_ELEMENT_LIST:
+ /* Handling
+ * http://www.w3.org/TR/rdf-syntax-grammar/#nodeElementList
+ *
+ * Everything goes to nodeElement
+ */
+
+ state = RAPTOR_STATE_NODE_ELEMENT;
+
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTIES;
+
+ break;
+
+
+
+ case RAPTOR_STATE_DESCRIPTION:
+ case RAPTOR_STATE_NODE_ELEMENT:
+ case RAPTOR_STATE_PARSETYPE_RESOURCE:
+ case RAPTOR_STATE_PARSETYPE_COLLECTION:
+ /* Handling <rdf:Description> or other node element
+ * http://www.w3.org/TR/rdf-syntax-grammar/#nodeElement
+ *
+ * or a property element acting as a node element for
+ * rdf:parseType="Resource"
+ * http://www.w3.org/TR/rdf-syntax-grammar/#parseTypeResourcePropertyElt
+ * or rdf:parseType="Collection" (and daml:Collection)
+ * http://www.w3.org/TR/rdf-syntax-grammar/#parseTypeCollectionPropertyElt
+ *
+ * Only create a bag if bagID given
+ */
+
+ if(!element_name_uri) {
+ /* We cannot handle this */
+ raptor_parser_warning(rdf_parser, "Using node element '%s' without a namespace is forbidden.",
+ el_qname->local_name);
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ element->state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ }
+
+ if(element_in_rdf_ns) {
+ rc = raptor_rdfxml_check_nodeElement_name((const char*)el_name);
+ if(!rc) {
+ raptor_parser_error(rdf_parser,
+ "rdf:%s is forbidden as a node element.",
+ el_name);
+ state = RAPTOR_STATE_SKIPPING;
+ element->state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ } else if(rc < 0) {
+ raptor_parser_warning(rdf_parser,
+ "rdf:%s is an unknown RDF namespaced element.",
+ el_name);
+ }
+ }
+
+ if(element->content_type != RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_COLLECTION &&
+ element->content_type != RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION &&
+ element->parent &&
+ (element->parent->state == RAPTOR_STATE_PROPERTYELT ||
+ element->parent->state == RAPTOR_STATE_MEMBER_PROPERTYELT) &&
+ element->parent->xml_element->content_element_seen > 1) {
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ raptor_parser_error(rdf_parser, "The enclosing property already has an object");
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ }
+
+ if(state == RAPTOR_STATE_NODE_ELEMENT ||
+ state == RAPTOR_STATE_DESCRIPTION ||
+ state == RAPTOR_STATE_PARSETYPE_COLLECTION) {
+ if(element_in_rdf_ns &&
+ raptor_uri_equals(element_name_uri,
+ RAPTOR_RDF_Description_URI(rdf_parser->world)))
+ state = RAPTOR_STATE_DESCRIPTION;
+ else
+ state = RAPTOR_STATE_NODE_ELEMENT;
+ }
+
+
+ if((element->rdf_attr[RDF_NS_ID]!=NULL) +
+ (element->rdf_attr[RDF_NS_about]!=NULL) +
+ (element->rdf_attr[RDF_NS_nodeID]!=NULL) > 1) {
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ raptor_parser_error(rdf_parser, "Multiple attributes of rdf:ID, rdf:about and rdf:nodeID on element '%s' - only one allowed.", el_name);
+ }
+
+ if(element->rdf_attr[RDF_NS_ID]) {
+ unsigned char* subject_id;
+ raptor_uri* subject_uri;
+
+ subject_id = (unsigned char*)element->rdf_attr[RDF_NS_ID];
+
+ if(!raptor_valid_xml_ID(rdf_parser, subject_id)) {
+ raptor_parser_error(rdf_parser, "Illegal rdf:ID value '%s'",
+ subject_id);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ }
+ if(raptor_rdfxml_record_ID(rdf_parser, element, subject_id)) {
+ raptor_parser_error(rdf_parser, "Duplicated rdf:ID value '%s'",
+ subject_id);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ }
+
+ /* after this, subject_id is the owner of the ID string */
+ element->rdf_attr[RDF_NS_ID] = NULL;
+
+ subject_uri = raptor_new_uri_from_id(rdf_parser->world, base_uri,
+ subject_id);
+ RAPTOR_FREE(char*, subject_id);
+
+ if(!subject_uri)
+ goto oom;
+ element->subject = raptor_new_term_from_uri(rdf_parser->world,
+ subject_uri);
+ raptor_free_uri(subject_uri);
+
+ if(!element->subject)
+ goto oom;
+
+ } else if(element->rdf_attr[RDF_NS_about]) {
+ raptor_uri* subject_uri;
+
+ subject_uri = raptor_new_uri_relative_to_base(rdf_parser->world,
+ base_uri,
+ (const unsigned char*)element->rdf_attr[RDF_NS_about]);
+ if(!subject_uri)
+ goto oom;
+
+ element->subject = raptor_new_term_from_uri(rdf_parser->world,
+ subject_uri);
+ raptor_free_uri(subject_uri);
+
+ RAPTOR_FREE(char*, element->rdf_attr[RDF_NS_about]);
+ element->rdf_attr[RDF_NS_about] = NULL;
+ if(!element->subject)
+ goto oom;
+
+ } else if(element->rdf_attr[RDF_NS_nodeID]) {
+ unsigned char* subject_id;
+ subject_id = raptor_world_internal_generate_id(rdf_parser->world,
+ (unsigned char*)element->rdf_attr[RDF_NS_nodeID]);
+ if(!subject_id)
+ goto oom;
+
+ element->subject = raptor_new_term_from_blank(rdf_parser->world,
+ subject_id);
+ RAPTOR_FREE(char*, subject_id);
+
+ element->rdf_attr[RDF_NS_nodeID] = NULL;
+ if(!element->subject)
+ goto oom;
+
+ if(!raptor_valid_xml_ID(rdf_parser, element->subject->value.blank.string)) {
+ raptor_parser_error(rdf_parser, "Illegal rdf:nodeID value '%s'",
+ (const char*)element->subject->value.blank.string);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ }
+ } else if(element->parent &&
+ element->parent->child_content_type != RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_COLLECTION &&
+ element->parent->child_content_type != RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION &&
+ element->parent->object) {
+ /* copy from parent (property element), it has a URI for us */
+ element->subject = raptor_term_copy(element->parent->object);
+ } else {
+ unsigned char* subject_id;
+ subject_id = raptor_world_generate_bnodeid(rdf_parser->world);
+ if(!subject_id)
+ goto oom;
+
+ element->subject = raptor_new_term_from_blank(rdf_parser->world,
+ subject_id);
+ RAPTOR_FREE(char*, subject_id);
+
+ if(!element->subject)
+ goto oom;
+ }
+
+
+ if(element->rdf_attr[RDF_NS_bagID]) {
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_ALLOW_BAGID)) {
+ unsigned char* bag_id;
+ raptor_uri* bag_uri = NULL;
+
+ bag_id = (unsigned char*)element->rdf_attr[RDF_NS_bagID];
+ element->rdf_attr[RDF_NS_bagID] = NULL;
+
+ bag_uri = raptor_new_uri_from_id(rdf_parser->world,
+ base_uri, bag_id);
+ if(!bag_uri) {
+ RAPTOR_FREE(char*, bag_id);
+ goto oom;
+ }
+
+ element->bag = raptor_new_term_from_uri(rdf_parser->world, bag_uri);
+ raptor_free_uri(bag_uri);
+
+ if(!raptor_valid_xml_ID(rdf_parser, bag_id)) {
+ raptor_parser_error(rdf_parser, "Illegal rdf:bagID value '%s'",
+ bag_id);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ RAPTOR_FREE(char*, bag_id);
+ break;
+ }
+ if(raptor_rdfxml_record_ID(rdf_parser, element, bag_id)) {
+ raptor_parser_error(rdf_parser, "Duplicated rdf:bagID value '%s'",
+ bag_id);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ RAPTOR_FREE(char*, bag_id);
+ break;
+ }
+
+ RAPTOR_FREE(char*, bag_id);
+ raptor_parser_warning(rdf_parser, "rdf:bagID is deprecated.");
+
+
+ raptor_rdfxml_generate_statement(rdf_parser,
+ element->bag,
+ RAPTOR_RDF_type_URI(rdf_parser->world),
+ RAPTOR_RDF_Bag_term(rdf_parser->world),
+ NULL,
+ NULL);
+ } else {
+ /* bagID forbidden */
+ raptor_parser_error(rdf_parser, "rdf:bagID is forbidden.");
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ }
+ }
+
+
+ if(element->parent) {
+
+ /* In a rdf:parseType="Collection" the resources are appended
+ * to the list at the genid element->parent->tail_id
+ */
+ if(element->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_COLLECTION ||
+ element->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION) {
+ /* <idList> rdf:type rdf:List */
+ const unsigned char * idList;
+ raptor_uri *predicate_uri;
+ raptor_term* idList_term;
+ raptor_term* object_term;
+
+ idList = raptor_world_generate_bnodeid(rdf_parser->world);
+ if(!idList)
+ goto oom;
+ /* idList string is saved below in element->parent->tail_id */
+
+ idList_term = raptor_new_term_from_blank(rdf_parser->world, idList);
+ if(!idList_term) {
+ RAPTOR_FREE(char*, idList);
+ goto oom;
+ }
+
+ if((element->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION) ||
+ RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST)) {
+ raptor_uri* class_uri = NULL;
+
+ if(element->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION) {
+ class_uri = RAPTOR_DAML_List_URI(rdf_xml_parser);
+ object_term = raptor_new_term_from_uri(rdf_parser->world,
+ class_uri);
+ } else
+ object_term = raptor_term_copy(RAPTOR_RDF_List_term(rdf_parser->world));
+
+ raptor_rdfxml_generate_statement(rdf_parser,
+ idList_term,
+ RAPTOR_RDF_type_URI(rdf_parser->world),
+ object_term,
+ NULL,
+ element);
+ raptor_free_term(object_term);
+ }
+
+ predicate_uri = (element->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION) ? RAPTOR_DAML_first_URI(rdf_xml_parser) : RAPTOR_RDF_first_URI(rdf_parser->world);
+
+ /* <idList> rdf:first <element->uri> */
+ raptor_rdfxml_generate_statement(rdf_parser,
+ idList_term,
+ predicate_uri,
+ element->subject,
+ NULL,
+ NULL);
+
+ /* If there is no rdf:parseType="Collection" */
+ if(!element->parent->tail_id) {
+ /* Free any existing object still around.
+ * I suspect this can never happen.
+ */
+ if(element->parent->object)
+ raptor_free_term(element->parent->object);
+
+ element->parent->object = raptor_new_term_from_blank(rdf_parser->world,
+ idList);
+ } else {
+ raptor_term* tail_id_term;
+
+ tail_id_term = raptor_new_term_from_blank(rdf_parser->world,
+ element->parent->tail_id);
+
+ predicate_uri = (element->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION) ? RAPTOR_DAML_rest_URI(rdf_xml_parser) : RAPTOR_RDF_rest_URI(rdf_parser->world);
+
+ /* _:tail_id rdf:rest _:listRest */
+ raptor_rdfxml_generate_statement(rdf_parser,
+ tail_id_term,
+ predicate_uri,
+ idList_term,
+ NULL,
+ NULL);
+
+ raptor_free_term(tail_id_term);
+ }
+
+ /* update new tail */
+ if(element->parent->tail_id)
+ RAPTOR_FREE(char*, (char*)element->parent->tail_id);
+
+ element->parent->tail_id = idList;
+
+ raptor_free_term(idList_term);
+ } else if(element->parent->state != RAPTOR_STATE_UNKNOWN &&
+ element->state != RAPTOR_STATE_PARSETYPE_RESOURCE) {
+ /* If there is a parent element (property) containing this
+ * element (node) and it has no object, set it from this subject
+ */
+
+ if(element->parent->object) {
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ raptor_parser_error(rdf_parser,
+ "Tried to set multiple objects of a statement");
+ } else {
+ /* Store URI of this node in our parent as the property object */
+ element->parent->object = raptor_term_copy(element->subject);
+ element->parent->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_RESOURCE;
+ }
+
+ }
+ }
+
+
+ /* If this is a node element, generate the rdf:type statement
+ * from this node
+ */
+ if(state == RAPTOR_STATE_NODE_ELEMENT) {
+ raptor_term* el_name_term;
+
+ el_name_term = raptor_new_term_from_uri(rdf_parser->world,
+ element_name_uri);
+
+ raptor_rdfxml_generate_statement(rdf_parser,
+ element->subject,
+ RAPTOR_RDF_type_URI(rdf_parser->world),
+ el_name_term,
+ element->reified,
+ element);
+
+ raptor_free_term(el_name_term);
+ }
+
+ if(raptor_rdfxml_process_property_attributes(rdf_parser, element,
+ element, NULL))
+ goto oom;
+
+ /* for both productions now need some more content or
+ * property elements before can do any more work.
+ */
+
+ element->child_state = RAPTOR_STATE_PROPERTYELT;
+ element->child_content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTIES;
+ finished = 1;
+ break;
+
+
+ case RAPTOR_STATE_PARSETYPE_OTHER:
+ /* FALLTHROUGH */
+
+ case RAPTOR_STATE_PARSETYPE_LITERAL:
+ raptor_xml_writer_start_element(rdf_xml_parser->xml_writer, xml_element);
+ element->child_state = RAPTOR_STATE_PARSETYPE_LITERAL;
+ element->child_content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_XML_LITERAL;
+
+ finished = 1;
+ break;
+
+ /* Handle all the detail of the various options of property element
+ * http://www.w3.org/TR/rdf-syntax-grammar/#propertyElt
+ *
+ * All the attributes must be scanned here to see what additional
+ * property element work is needed. No triples are generated
+ * until the end of this element, until it is clear if the
+ * element was empty.
+ */
+ case RAPTOR_STATE_MEMBER_PROPERTYELT:
+ case RAPTOR_STATE_PROPERTYELT:
+
+ if(!element_name_uri) {
+ raptor_parser_error(rdf_parser, "Using property element '%s' without a namespace is forbidden.",
+ raptor_xml_element_get_name(element->parent->xml_element)->local_name);
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ element->state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ }
+
+ /* Handling rdf:li as a property, noting special processing */
+ if(element_in_rdf_ns &&
+ raptor_uri_equals(element_name_uri,
+ RAPTOR_RDF_li_URI(rdf_parser->world))) {
+ state = RAPTOR_STATE_MEMBER_PROPERTYELT;
+ }
+
+
+ if(element_in_rdf_ns) {
+ rc = raptor_rdfxml_check_propertyElement_name((const char*)el_name);
+ if(!rc) {
+ raptor_parser_error(rdf_parser,
+ "rdf:%s is forbidden as a property element.",
+ el_name);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ } else if(rc < 0) {
+ raptor_parser_warning(rdf_parser,
+ "rdf:%s is an unknown RDF namespaced element.",
+ el_name);
+ }
+ }
+
+
+ /* rdf:ID on a property element - reify a statement.
+ * Allowed on all property element forms
+ */
+ if(element->rdf_attr[RDF_NS_ID]) {
+ raptor_uri *reified_uri;
+
+ element->reified_id = element->rdf_attr[RDF_NS_ID];
+ element->rdf_attr[RDF_NS_ID] = NULL;
+ reified_uri = raptor_new_uri_from_id(rdf_parser->world, base_uri,
+ element->reified_id);
+ if(!reified_uri)
+ goto oom;
+
+ element->reified = raptor_new_term_from_uri(rdf_parser->world,
+ reified_uri);
+ raptor_free_uri(reified_uri);
+
+ if(!element->reified)
+ goto oom;
+
+ if(!raptor_valid_xml_ID(rdf_parser, element->reified_id)) {
+ raptor_parser_error(rdf_parser, "Illegal rdf:ID value '%s'",
+ element->reified_id);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ }
+ if(raptor_rdfxml_record_ID(rdf_parser, element, element->reified_id)) {
+ raptor_parser_error(rdf_parser, "Duplicated rdf:ID value '%s'",
+ element->reified_id);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ }
+ }
+
+ /* rdf:datatype on a property element.
+ * Only allowed for
+ * http://www.w3.org/TR/rdf-syntax-grammar/#literalPropertyElt
+ */
+ if(element->rdf_attr[RDF_NS_datatype]) {
+ raptor_uri *datatype_uri;
+
+ datatype_uri = raptor_new_uri_relative_to_base(rdf_parser->world,
+ base_uri,
+ (const unsigned char*)element->rdf_attr[RDF_NS_datatype]);
+ element->object_literal_datatype = datatype_uri;
+ RAPTOR_FREE(char*, element->rdf_attr[RDF_NS_datatype]);
+ element->rdf_attr[RDF_NS_datatype] = NULL;
+ if(!element->object_literal_datatype)
+ goto oom;
+ }
+
+ if(element->rdf_attr[RDF_NS_bagID]) {
+
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_ALLOW_BAGID)) {
+
+ if(element->rdf_attr[RDF_NS_resource] ||
+ element->rdf_attr[RDF_NS_parseType]) {
+
+ raptor_parser_error(rdf_parser, "rdf:bagID is forbidden on property element '%s' with an rdf:resource or rdf:parseType attribute.", el_name);
+ /* prevent this being used later either */
+ RAPTOR_FREE(char*, element->rdf_attr[RDF_NS_bagID]);
+ element->rdf_attr[RDF_NS_bagID] = NULL;
+ } else {
+ unsigned char* bag_id;
+ raptor_uri* bag_uri;
+
+ bag_id = (unsigned char*)element->rdf_attr[RDF_NS_bagID];
+ element->rdf_attr[RDF_NS_bagID] = NULL;
+ bag_uri = raptor_new_uri_from_id(rdf_parser->world, base_uri,
+ bag_id);
+ if(!bag_uri) {
+ RAPTOR_FREE(char*, bag_id);
+ goto oom;
+ }
+
+ element->bag = raptor_new_term_from_uri(rdf_parser->world,
+ bag_uri);
+ raptor_free_uri(bag_uri);
+
+ if(!element->bag) {
+ RAPTOR_FREE(char*, bag_id);
+ goto oom;
+ }
+
+ if(!raptor_valid_xml_ID(rdf_parser, bag_id)) {
+ raptor_parser_error(rdf_parser, "Illegal rdf:bagID value '%s'",
+ bag_id);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ RAPTOR_FREE(char*, bag_id);
+ break;
+ }
+ if(raptor_rdfxml_record_ID(rdf_parser, element, bag_id)) {
+ raptor_parser_error(rdf_parser,
+ "Duplicated rdf:bagID value '%s'", bag_id);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ RAPTOR_FREE(char*, bag_id);
+ finished = 1;
+ break;
+ }
+
+ RAPTOR_FREE(char*, bag_id);
+ raptor_parser_warning(rdf_parser, "rdf:bagID is deprecated.");
+ }
+ } else {
+ /* bagID forbidden */
+ raptor_parser_error(rdf_parser, "rdf:bagID is forbidden.");
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ }
+ } /* if rdf:bagID on property element */
+
+
+ element->child_content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTY_CONTENT;
+
+ if(element->rdf_attr[RDF_NS_parseType]) {
+ const unsigned char *parse_type;
+ int i;
+ int is_parseType_Literal = 0;
+
+ parse_type = element->rdf_attr[RDF_NS_parseType];
+
+ if(raptor_rdfxml_element_has_property_attributes(element)) {
+ raptor_parser_error(rdf_parser, "Property attributes cannot be used with rdf:parseType='%s'", parse_type);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ finished = 1;
+ break;
+ }
+
+ /* Check for bad combinations of things with parseType */
+ for(i = 0; i <= RDF_NS_LAST; i++)
+ if(element->rdf_attr[i] && i != RDF_NS_parseType) {
+ raptor_parser_error(rdf_parser, "Attribute '%s' cannot be used with rdf:parseType='%s'", raptor_rdf_ns_terms_info[i].name, parse_type);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ break;
+ }
+
+
+ if(!strcmp((char*)parse_type, "Literal"))
+ is_parseType_Literal = 1;
+ else if(!strcmp((char*)parse_type, "Resource")) {
+ unsigned char* subject_id;
+
+ state = RAPTOR_STATE_PARSETYPE_RESOURCE;
+ element->child_state = RAPTOR_STATE_PROPERTYELT;
+ element->child_content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTIES;
+
+ /* create a node for the subject of the contained properties */
+ subject_id = raptor_world_generate_bnodeid(rdf_parser->world);
+ if(!subject_id)
+ goto oom;
+
+ element->subject = raptor_new_term_from_blank(rdf_parser->world,
+ subject_id);
+ RAPTOR_FREE(char*, subject_id);
+
+ if(!element->subject)
+ goto oom;
+ } else if(!strcmp((char*)parse_type, "Collection")) {
+ /* An rdf:parseType="Collection" appears as a single node */
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_RESOURCE;
+ element->child_state = RAPTOR_STATE_PARSETYPE_COLLECTION;
+ element->child_content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_COLLECTION;
+ } else {
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES) &&
+ !raptor_strcasecmp((char*)parse_type, "daml:collection")) {
+ /* A DAML collection appears as a single node */
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_RESOURCE;
+ element->child_state = RAPTOR_STATE_PARSETYPE_COLLECTION;
+ element->child_content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION;
+ } else {
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_WARN_OTHER_PARSETYPES)) {
+ raptor_parser_warning(rdf_parser, "Unknown rdf:parseType value '%s' taken as 'Literal'", parse_type);
+ }
+ is_parseType_Literal = 1;
+ }
+
+ }
+
+ if(is_parseType_Literal) {
+ raptor_xml_writer* xml_writer;
+
+ /* rdf:parseType="Literal" - explicitly or default
+ * if the parseType value is not recognised
+ */
+ rdf_xml_parser->xml_content = NULL;
+ rdf_xml_parser->xml_content_length = 0;
+ rdf_xml_parser->iostream =
+ raptor_new_iostream_to_string(rdf_parser->world,
+ &rdf_xml_parser->xml_content,
+ &rdf_xml_parser->xml_content_length,
+ raptor_alloc_memory);
+ if(!rdf_xml_parser->iostream)
+ goto oom;
+ xml_writer = raptor_new_xml_writer(rdf_parser->world, NULL,
+ rdf_xml_parser->iostream);
+ rdf_xml_parser->xml_writer = xml_writer;
+ if(!rdf_xml_parser->xml_writer)
+ goto oom;
+
+ raptor_xml_writer_set_option(rdf_xml_parser->xml_writer,
+ RAPTOR_OPTION_WRITER_XML_DECLARATION,
+ NULL, 0);
+
+ element->child_state = RAPTOR_STATE_PARSETYPE_LITERAL;
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_XML_LITERAL;
+ element->child_content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_XML_LITERAL;
+ }
+ } else {
+
+ /* Can only be the empty property element case
+ * http://www.w3.org/TR/rdf-syntax-grammar/#emptyPropertyElt
+ */
+
+ /* The presence of the rdf:resource or rdf:nodeID
+ * attributes is checked at element close time
+ */
+
+ /*
+ * Assign reified URI here so we don't reify property attributes
+ * using this id
+ */
+ if(element->reified_id && !element->reified) {
+ raptor_uri* reified_uri;
+ reified_uri = raptor_new_uri_from_id(rdf_parser->world, base_uri,
+ element->reified_id);
+ if(!reified_uri)
+ goto oom;
+ element->reified = raptor_new_term_from_uri(rdf_parser->world,
+ reified_uri);
+ raptor_free_uri(reified_uri);
+
+ if(!element->reified)
+ goto oom;
+ }
+
+ if(element->rdf_attr[RDF_NS_resource] ||
+ element->rdf_attr[RDF_NS_nodeID]) {
+ /* Done - wait for end of this element to end in order to
+ * check the element was empty as expected */
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_RESOURCE;
+ } else {
+ /* Otherwise process content in obj (value) state */
+ element->child_state = RAPTOR_STATE_NODE_ELEMENT_LIST;
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTY_CONTENT;
+ }
+ }
+
+ finished = 1;
+
+ break;
+
+
+ case RAPTOR_STATE_INVALID:
+ default:
+ raptor_parser_fatal_error(rdf_parser,
+ "%s Internal error - unexpected parser state %d - %s",
+ __func__,
+ state, raptor_rdfxml_state_as_string(state));
+ finished = 1;
+
+ } /* end switch */
+
+ if(state != element->state) {
+ element->state = state;
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG3("Moved to state %d - %s\n", state,
+ raptor_rdfxml_state_as_string(state));
+#endif
+ }
+
+ } /* end while */
+
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG2("Ending in state %s\n", raptor_rdfxml_state_as_string(state));
+#endif
+
+ return;
+
+ oom:
+ raptor_parser_fatal_error(rdf_parser, "Out of memory, skipping");
+ element->state = RAPTOR_STATE_SKIPPING;
+}
+
+
+static void
+raptor_rdfxml_end_element_grammar(raptor_parser *rdf_parser,
+ raptor_rdfxml_element *element)
+{
+ raptor_rdfxml_parser *rdf_xml_parser;
+ raptor_state state;
+ int finished;
+ raptor_xml_element* xml_element = element->xml_element;
+ raptor_qname* el_qname;
+ const unsigned char *el_name;
+ int element_in_rdf_ns;
+ raptor_uri* element_name_uri;
+
+ rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+
+ el_qname = raptor_xml_element_get_name(xml_element);
+ el_name = el_qname->local_name;
+ element_in_rdf_ns= (el_qname->nspace && el_qname->nspace->is_rdf_ms);
+ element_name_uri = el_qname->uri;
+
+
+ state = element->state;
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG2("Starting in state %s\n", raptor_rdfxml_state_as_string(state));
+#endif
+
+ finished= 0;
+ while(!finished) {
+ switch(state) {
+ case RAPTOR_STATE_SKIPPING:
+ finished = 1;
+ break;
+
+ case RAPTOR_STATE_UNKNOWN:
+ finished = 1;
+ break;
+
+ case RAPTOR_STATE_NODE_ELEMENT_LIST:
+ if(element_in_rdf_ns &&
+ raptor_uri_equals(element_name_uri,
+ RAPTOR_RDF_RDF_URI(rdf_parser->world))) {
+ /* end of RDF - boo hoo */
+ state = RAPTOR_STATE_UNKNOWN;
+ finished = 1;
+ break;
+ }
+ /* When scanning, another element ending is outside the RDF
+ * world so this can happen without further work
+ */
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_SCANNING)) {
+ state = RAPTOR_STATE_UNKNOWN;
+ finished = 1;
+ break;
+ }
+ /* otherwise found some junk after RDF content in an RDF-only
+ * document (probably never get here since this would be
+ * a mismatched XML tag and cause an error earlier)
+ */
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ raptor_parser_warning(rdf_parser,
+ "Element '%s' ended, expected end of RDF element",
+ el_name);
+ state = RAPTOR_STATE_UNKNOWN;
+ finished = 1;
+ break;
+
+
+ case RAPTOR_STATE_DESCRIPTION:
+ case RAPTOR_STATE_NODE_ELEMENT:
+ case RAPTOR_STATE_PARSETYPE_RESOURCE:
+
+ /* If there is a parent element containing this element and
+ * the parent isn't a description, has an identifier,
+ * create the statement between this node using parent property
+ * (Need to check for identifier so that top-level typed nodes
+ * don't get connect to <rdf:RDF> parent element)
+ */
+ if(state == RAPTOR_STATE_NODE_ELEMENT &&
+ element->parent && element->parent->subject) {
+ raptor_rdfxml_generate_statement(rdf_parser,
+ element->parent->subject,
+ element_name_uri,
+ element->subject,
+ NULL,
+ element);
+ } else if(state == RAPTOR_STATE_PARSETYPE_RESOURCE &&
+ element->parent && element->parent->subject) {
+ /* Handle rdf:li as the rdf:parseType="resource" property */
+ if(element_in_rdf_ns &&
+ raptor_uri_equals(element_name_uri,
+ RAPTOR_RDF_li_URI(rdf_parser->world))) {
+ raptor_uri* ordinal_predicate_uri;
+
+ element->parent->last_ordinal++;
+ ordinal_predicate_uri = raptor_new_uri_from_rdf_ordinal(rdf_parser->world, element->parent->last_ordinal);
+
+ raptor_rdfxml_generate_statement(rdf_parser,
+ element->parent->subject,
+ ordinal_predicate_uri,
+ element->subject,
+ element->reified,
+ element->parent);
+ raptor_free_uri(ordinal_predicate_uri);
+ } else {
+ raptor_rdfxml_generate_statement(rdf_parser,
+ element->parent->subject,
+ element_name_uri,
+ element->subject,
+ element->reified,
+ element->parent);
+ }
+ }
+ finished = 1;
+ break;
+
+ case RAPTOR_STATE_PARSETYPE_COLLECTION:
+
+ finished = 1;
+ break;
+
+ case RAPTOR_STATE_PARSETYPE_OTHER:
+ /* FALLTHROUGH */
+
+ case RAPTOR_STATE_PARSETYPE_LITERAL:
+ element->parent->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_XML_LITERAL;
+
+ raptor_xml_writer_end_element(rdf_xml_parser->xml_writer, xml_element);
+
+ finished = 1;
+ break;
+
+
+ case RAPTOR_STATE_PROPERTYELT:
+ case RAPTOR_STATE_MEMBER_PROPERTYELT:
+ /* A property element
+ * http://www.w3.org/TR/rdf-syntax-grammar/#propertyElt
+ *
+ * Literal content part is handled here.
+ * The element content is handled in the internal states
+ * Empty content is checked here.
+ */
+
+ if(element->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTY_CONTENT) {
+ if(xml_element->content_cdata_seen)
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LITERAL;
+ else if(xml_element->content_element_seen)
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTIES;
+ else {
+ /* Empty Literal */
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LITERAL;
+ }
+
+ }
+
+
+ /* Handle terminating a rdf:parseType="Collection" list */
+ if(element->child_content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_COLLECTION ||
+ element->child_content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION) {
+ raptor_term* nil_term;
+
+ if(element->child_content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION) {
+ raptor_uri* nil_uri = RAPTOR_DAML_nil_URI(rdf_xml_parser);
+ nil_term = raptor_new_term_from_uri(rdf_parser->world, nil_uri);
+ } else {
+ nil_term = raptor_term_copy(RAPTOR_RDF_nil_term(rdf_parser->world));
+ }
+
+ if(!element->tail_id) {
+ /* If No List: set object of statement to rdf:nil */
+ element->object = raptor_term_copy(nil_term);
+ } else {
+ raptor_uri* rest_uri = NULL;
+ raptor_term* tail_id_term;
+
+ if(element->child_content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION)
+ rest_uri = RAPTOR_DAML_rest_URI(rdf_xml_parser);
+ else
+ rest_uri = RAPTOR_RDF_rest_URI(rdf_parser->world);
+
+ tail_id_term = raptor_new_term_from_blank(rdf_parser->world,
+ element->tail_id);
+
+ /* terminate the list */
+ raptor_rdfxml_generate_statement(rdf_parser,
+ tail_id_term,
+ rest_uri,
+ nil_term,
+ NULL,
+ NULL);
+
+ raptor_free_term(tail_id_term);
+ }
+
+ raptor_free_term(nil_term);
+
+ } /* end rdf:parseType="Collection" termination */
+
+
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG3("Content type %s (%d)\n",
+ raptor_rdfxml_element_content_type_as_string(element->content_type),
+ element->content_type);
+#endif
+
+ switch(element->content_type) {
+ case RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_RESOURCE:
+
+ if(raptor_rdfxml_element_has_property_attributes(element) &&
+ element->child_state == RAPTOR_STATE_DESCRIPTION) {
+ raptor_parser_error(rdf_parser,
+ "Property element '%s' has both property attributes and a node element content",
+ el_name);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ break;
+ }
+
+ if(!element->object) {
+ if(element->rdf_attr[RDF_NS_resource]) {
+ raptor_uri* resource_uri;
+ resource_uri = raptor_new_uri_relative_to_base(rdf_parser->world,
+ raptor_rdfxml_inscope_base_uri(rdf_parser),
+ (const unsigned char*)element->rdf_attr[RDF_NS_resource]);
+ if(!resource_uri)
+ goto oom;
+
+ element->object = raptor_new_term_from_uri(rdf_parser->world,
+ resource_uri);
+ raptor_free_uri(resource_uri);
+
+ RAPTOR_FREE(char*, element->rdf_attr[RDF_NS_resource]);
+ element->rdf_attr[RDF_NS_resource] = NULL;
+ if(!element->object)
+ goto oom;
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_RESOURCE;
+ } else if(element->rdf_attr[RDF_NS_nodeID]) {
+ unsigned char* resource_id;
+ resource_id = raptor_world_internal_generate_id(rdf_parser->world,
+ (unsigned char*)element->rdf_attr[RDF_NS_nodeID]);
+ if(!resource_id)
+ goto oom;
+
+ element->object = raptor_new_term_from_blank(rdf_parser->world,
+ resource_id);
+ RAPTOR_FREE(char*, resource_id);
+ element->rdf_attr[RDF_NS_nodeID] = NULL;
+ if(!element->object)
+ goto oom;
+
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_RESOURCE;
+ if(!raptor_valid_xml_ID(rdf_parser,
+ element->object->value.blank.string)) {
+ raptor_parser_error(rdf_parser, "Illegal rdf:nodeID value '%s'", (const char*)element->object->value.blank.string);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ break;
+ }
+ } else {
+ unsigned char* resource_id;
+ resource_id = raptor_world_generate_bnodeid(rdf_parser->world);
+ if(!resource_id)
+ goto oom;
+
+ element->object = raptor_new_term_from_blank(rdf_parser->world,
+ resource_id);
+ RAPTOR_FREE(char*, resource_id);
+
+ if(!element->object)
+ goto oom;
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_RESOURCE;
+ }
+
+ if(raptor_rdfxml_process_property_attributes(rdf_parser, element,
+ element->parent,
+ element->object))
+ goto oom;
+
+ }
+
+ /* We know object is a resource, so delete any unsignficant
+ * whitespace so that FALLTHROUGH code below finds the object.
+ */
+ if(xml_element->content_cdata_length) {
+ raptor_free_stringbuffer(xml_element->content_cdata_sb);
+ xml_element->content_cdata_sb = NULL;
+ xml_element->content_cdata_length = 0;
+ }
+
+ /* FALLTHROUGH */
+ case RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LITERAL:
+
+ if(element->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LITERAL) {
+
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_ALLOW_BAGID)) {
+ /* Only an empty literal can have a rdf:bagID */
+ if(element->bag) {
+ if(xml_element->content_cdata_length > 0) {
+ raptor_parser_error(rdf_parser,
+ "rdf:bagID is forbidden on a literal property element '%s'.",
+ el_name);
+
+ /* prevent this being used later either */
+ element->rdf_attr[RDF_NS_bagID] = NULL;
+ } else {
+ raptor_rdfxml_generate_statement(rdf_parser,
+ element->bag,
+ RAPTOR_RDF_type_URI(rdf_parser->world),
+ RAPTOR_RDF_Bag_term(rdf_parser->world),
+ NULL,
+ NULL);
+ }
+ }
+ } /* if rdf:bagID */
+
+ /* If there is empty literal content with properties
+ * generate a node to hang properties off
+ */
+ if(raptor_rdfxml_element_has_property_attributes(element) &&
+ xml_element->content_cdata_length > 0) {
+ raptor_parser_error(rdf_parser,
+ "Literal property element '%s' has property attributes",
+ el_name);
+ state = RAPTOR_STATE_SKIPPING;
+ element->child_state = RAPTOR_STATE_SKIPPING;
+ break;
+ }
+
+ if(element->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LITERAL &&
+ raptor_rdfxml_element_has_property_attributes(element) &&
+ !element->object) {
+ unsigned char* object_id;
+ object_id = raptor_world_generate_bnodeid(rdf_parser->world);
+ if(!object_id)
+ goto oom;
+
+ element->object = raptor_new_term_from_blank(rdf_parser->world,
+ object_id);
+ RAPTOR_FREE(char*, object_id);
+
+ if(!element->object)
+ goto oom;
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_RESOURCE;
+ }
+
+ if(raptor_rdfxml_process_property_attributes(rdf_parser, element,
+ element,
+ element->object))
+ goto oom;
+ }
+
+
+ /* just be friendly to older compilers and don't declare
+ * variables in the middle of a block
+ */
+ if(1) {
+ raptor_uri *predicate_uri = NULL;
+ int predicate_ordinal = -1;
+ raptor_term* object_term = NULL;
+
+ if(state == RAPTOR_STATE_MEMBER_PROPERTYELT) {
+ predicate_ordinal = ++element->parent->last_ordinal;
+ predicate_uri = raptor_new_uri_from_rdf_ordinal(rdf_parser->world,
+ predicate_ordinal);
+
+ } else {
+ predicate_uri = element_name_uri;
+ }
+
+
+ if(element->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LITERAL) {
+ unsigned char* literal = NULL;
+ raptor_uri* literal_datatype;
+ unsigned char* literal_language = NULL;
+
+ /* an empty stringbuffer - empty CDATA - is OK */
+ if(raptor_stringbuffer_length(xml_element->content_cdata_sb)) {
+ literal = raptor_stringbuffer_as_string(xml_element->content_cdata_sb);
+ if(!literal)
+ goto oom;
+ }
+
+ literal_datatype = element->object_literal_datatype;
+ if(!literal_datatype)
+ literal_language = (unsigned char*)raptor_sax2_inscope_xml_language(rdf_xml_parser->sax2);
+
+ if(!literal_datatype && literal &&
+ !raptor_unicode_check_utf8_nfc_string(literal,
+ xml_element->content_cdata_length,
+ NULL)) {
+ const char *message;
+ message = "Property element '%s' has a string not in Unicode Normal Form C: %s";
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NON_NFC_FATAL))
+ raptor_parser_error(rdf_parser, message, el_name, literal);
+ else
+ raptor_parser_warning(rdf_parser, message, el_name, literal);
+ }
+
+ object_term = raptor_new_term_from_literal(rdf_parser->world,
+ literal,
+ literal_datatype,
+ literal_language);
+ } else {
+ object_term = raptor_term_copy(element->object);
+ }
+
+ raptor_rdfxml_generate_statement(rdf_parser,
+ element->parent->subject,
+ predicate_uri,
+ object_term,
+ element->reified,
+ element->parent);
+
+ if(predicate_ordinal >= 0)
+ raptor_free_uri(predicate_uri);
+
+ raptor_free_term(object_term);
+ }
+
+ break;
+
+ case RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PRESERVED:
+ case RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_XML_LITERAL:
+ {
+ unsigned char *buffer;
+ size_t length;
+ raptor_term* xmlliteral_term = NULL;
+
+ if(rdf_xml_parser->xml_writer) {
+ raptor_xml_writer_flush(rdf_xml_parser->xml_writer);
+
+ raptor_free_iostream(rdf_xml_parser->iostream);
+ rdf_xml_parser->iostream = NULL;
+
+ buffer = (unsigned char*)rdf_xml_parser->xml_content;
+ length = rdf_xml_parser->xml_content_length;
+ } else {
+ buffer = raptor_stringbuffer_as_string(xml_element->content_cdata_sb);
+ length = xml_element->content_cdata_length;
+ }
+
+ if(!raptor_unicode_check_utf8_nfc_string(buffer, length, NULL)) {
+ const char *message;
+ message = "Property element '%s' has XML literal content not in Unicode Normal Form C: %s";
+ raptor_rdfxml_update_document_locator(rdf_parser);
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NON_NFC_FATAL))
+ raptor_parser_error(rdf_parser, message, el_name, buffer);
+ else
+ raptor_parser_warning(rdf_parser, message, el_name, buffer);
+ }
+
+ xmlliteral_term = raptor_new_term_from_literal(rdf_parser->world,
+ buffer,
+ RAPTOR_RDF_XMLLiteral_URI(rdf_parser->world),
+ NULL);
+
+ if(state == RAPTOR_STATE_MEMBER_PROPERTYELT) {
+ raptor_uri* predicate_uri;
+
+ element->parent->last_ordinal++;
+ predicate_uri = raptor_new_uri_from_rdf_ordinal(rdf_parser->world, element->parent->last_ordinal);
+
+ raptor_rdfxml_generate_statement(rdf_parser,
+ element->parent->subject,
+ predicate_uri,
+ xmlliteral_term,
+ element->reified,
+ element->parent);
+
+ raptor_free_uri(predicate_uri);
+ } else {
+ raptor_rdfxml_generate_statement(rdf_parser,
+ element->parent->subject,
+ element_name_uri,
+ xmlliteral_term,
+ element->reified,
+ element->parent);
+ }
+
+ raptor_free_term(xmlliteral_term);
+
+ /* Finish the xml writer iostream for parseType="Literal" */
+ if(rdf_xml_parser->xml_writer) {
+ raptor_free_xml_writer(rdf_xml_parser->xml_writer);
+ rdf_xml_parser->xml_writer = NULL;
+ RAPTOR_FREE(char*, rdf_xml_parser->xml_content);
+ rdf_xml_parser->xml_content = NULL;
+ rdf_xml_parser->xml_content_length = 0;
+ }
+ }
+
+ break;
+
+ case RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_COLLECTION:
+ case RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_DAML_COLLECTION:
+
+ case RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_NODES:
+ case RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTIES:
+ case RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTY_CONTENT:
+
+ case RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_UNKNOWN:
+ case RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LAST:
+ default:
+ raptor_parser_fatal_error(rdf_parser,
+ "%s: Internal error in state RAPTOR_STATE_PROPERTYELT - got unexpected content type %s (%d)",
+ __func__,
+ raptor_rdfxml_element_content_type_as_string(element->content_type),
+ element->content_type);
+ } /* end switch */
+
+ finished = 1;
+ break;
+
+ case RAPTOR_STATE_INVALID:
+ default:
+ raptor_parser_fatal_error(rdf_parser,
+ "%s: Internal error - unexpected parser state %d - %s",
+ __func__,
+ state,
+ raptor_rdfxml_state_as_string(state));
+ finished = 1;
+
+ } /* end switch */
+
+ if(state != element->state) {
+ element->state = state;
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG3("Moved to state %d - %s\n", state,
+ raptor_rdfxml_state_as_string(state));
+#endif
+ }
+
+ } /* end while */
+
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG2("Ending in state %s\n", raptor_rdfxml_state_as_string(state));
+#endif
+
+ return;
+
+ oom:
+ raptor_parser_fatal_error(rdf_parser, "Out of memory, skipping");
+ element->state = RAPTOR_STATE_SKIPPING;
+}
+
+
+
+static void
+raptor_rdfxml_cdata_grammar(raptor_parser *rdf_parser,
+ const unsigned char *s, int len,
+ int is_cdata)
+{
+ raptor_rdfxml_parser* rdf_xml_parser;
+ raptor_rdfxml_element* element;
+ raptor_xml_element* xml_element;
+ raptor_state state;
+ int all_whitespace = 1;
+ int i;
+
+ rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+
+ if(rdf_parser->failed)
+ return;
+
+#ifdef RAPTOR_DEBUG_CDATA
+ RAPTOR_DEBUG2("Adding characters (is_cdata=%d): '", is_cdata);
+ (void)fwrite(s, 1, len, stderr);
+ fprintf(stderr, "' (%d bytes)\n", len);
+#endif
+
+ for(i = 0; i < len; i++)
+ if(!isspace(s[i])) {
+ all_whitespace = 0;
+ break;
+ }
+
+ element = rdf_xml_parser->current_element;
+
+ /* this file is very broke - probably not XML, whatever */
+ if(!element)
+ return;
+
+ xml_element = element->xml_element;
+
+ raptor_rdfxml_update_document_locator(rdf_parser);
+
+ /* cdata never changes the parser state
+ * and the containing element state always determines what to do.
+ * Use the child_state first if there is one, since that applies
+ */
+ state = element->child_state;
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG2("Working in state %s\n", raptor_rdfxml_state_as_string(state));
+#endif
+
+
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG3("Content type %s (%d)\n",
+ raptor_rdfxml_element_content_type_as_string(element->content_type),
+ element->content_type);
+#endif
+
+
+
+ if(state == RAPTOR_STATE_SKIPPING)
+ return;
+
+ if(state == RAPTOR_STATE_UNKNOWN) {
+ /* Ignore all cdata if still looking for RDF */
+ if(RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_SCANNING))
+ return;
+
+ /* Ignore all whitespace cdata before first element */
+ if(all_whitespace)
+ return;
+
+ /* This probably will never happen since that would make the
+ * XML not be well-formed
+ */
+ raptor_parser_warning(rdf_parser, "Character data before RDF element.");
+ }
+
+
+ if(element->child_content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTIES) {
+ /* If found non-whitespace content, move to literal content */
+ if(!all_whitespace)
+ element->child_content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LITERAL;
+ }
+
+
+ if(!rdf_content_type_info[element->child_content_type].whitespace_significant) {
+
+ /* Whitespace is ignored except for literal or preserved content types */
+ if(all_whitespace) {
+#ifdef RAPTOR_DEBUG_CDATA
+ RAPTOR_DEBUG2("Ignoring whitespace cdata inside element '%s'\n",
+ raptor_xml_element_get_name(element->parent->xml_element)->local_name);
+#endif
+ return;
+ }
+
+ if(xml_element->content_cdata_seen && xml_element->content_element_seen) {
+ raptor_qname* parent_el_name;
+
+ parent_el_name = raptor_xml_element_get_name(element->parent->xml_element);
+ /* Uh oh - mixed content, this element has elements too */
+ raptor_parser_warning(rdf_parser, "element '%s' has mixed content.",
+ parent_el_name->local_name);
+ }
+ }
+
+
+ if(element->content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_PROPERTY_CONTENT) {
+ element->content_type = RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_LITERAL;
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG3("Content type changed to %s (%d)\n",
+ raptor_rdfxml_element_content_type_as_string(element->content_type),
+ element->content_type);
+#endif
+ }
+
+ if(element->child_content_type == RAPTOR_RDFXML_ELEMENT_CONTENT_TYPE_XML_LITERAL)
+ raptor_xml_writer_cdata_counted(rdf_xml_parser->xml_writer, s, len);
+ else {
+ raptor_stringbuffer_append_counted_string(xml_element->content_cdata_sb,
+ s, len, 1);
+ element->content_cdata_all_whitespace &= all_whitespace;
+
+ /* adjust stored length */
+ xml_element->content_cdata_length += len;
+ }
+
+
+#ifdef RAPTOR_DEBUG_CDATA
+ RAPTOR_DEBUG3("Content cdata now: %d bytes\n",
+ xml_element->content_cdata_length);
+#endif
+#ifdef RAPTOR_DEBUG_VERBOSE
+ RAPTOR_DEBUG2("Ending in state %s\n", raptor_rdfxml_state_as_string(state));
+#endif
+}
+
+
+
+/**
+ * raptor_rdfxml_inscope_base_uri:
+ * @rdf_parser: Raptor parser object
+ *
+ * Return the in-scope base URI.
+ *
+ * Looks for the innermost xml:base on an element or document URI
+ *
+ * Return value: The URI string value or NULL on failure.
+ **/
+static raptor_uri*
+raptor_rdfxml_inscope_base_uri(raptor_parser *rdf_parser)
+{
+ raptor_rdfxml_parser* rdf_xml_parser;
+ raptor_uri* base_uri;
+
+ rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+
+ base_uri = raptor_sax2_inscope_base_uri(rdf_xml_parser->sax2);
+ if(!base_uri)
+ base_uri = rdf_parser->base_uri;
+
+ return base_uri;
+}
+
+
+/**
+ * raptor_rdfxml_record_ID:
+ * @rdf_parser: Raptor parser object
+ * @element: Current element
+ * @id: ID string
+ *
+ * Record an rdf:ID / rdf:bagID value (with xml base) and check it hasn't been seen already.
+ *
+ * Record and check the ID values, if they have been seen already.
+ * per in-scope-base URI.
+ *
+ * Return value: non-zero if already seen, or failure
+ **/
+static int
+raptor_rdfxml_record_ID(raptor_parser *rdf_parser,
+ raptor_rdfxml_element *element,
+ const unsigned char *id)
+{
+ raptor_rdfxml_parser *rdf_xml_parser;
+ raptor_uri* base_uri;
+ size_t id_len;
+ int rc;
+
+ rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+
+ if(!RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_CHECK_RDF_ID))
+ return 0;
+
+ base_uri = raptor_rdfxml_inscope_base_uri(rdf_parser);
+
+ id_len = strlen((const char*)id);
+
+ rc = raptor_id_set_add(rdf_xml_parser->id_set, base_uri, id, id_len);
+
+ return (rc != 0);
+}
+
+
+
+static void
+raptor_rdfxml_update_document_locator(raptor_parser *rdf_parser)
+{
+ raptor_rdfxml_parser *rdf_xml_parser;
+
+ rdf_xml_parser = (raptor_rdfxml_parser*)rdf_parser->context;
+
+ raptor_sax2_update_document_locator(rdf_xml_parser->sax2,
+ &rdf_parser->locator);
+}
+
+
+
+static void
+raptor_rdfxml_parse_finish_factory(raptor_parser_factory* factory)
+{
+}
+
+
+static const char* const rdfxml_names[3] = { "rdfxml", "raptor", NULL};
+
+static const char* const rdfxml_uri_strings[3] = {
+ "http://www.w3.org/ns/formats/RDF_XML",
+ "http://www.w3.org/TR/rdf-syntax-grammar",
+ NULL
+};
+
+#define RDFXML_TYPES_COUNT 2
+static const raptor_type_q rdfxml_types[RDFXML_TYPES_COUNT + 1] = {
+ { "application/rdf+xml", 19, 10},
+ { "text/rdf", 8, 6},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_rdfxml_parser_register_factory(raptor_parser_factory *factory)
+{
+ int rc = 0;
+
+ factory->desc.names = rdfxml_names;
+
+ factory->desc.mime_types = rdfxml_types;
+
+ factory->desc.label = "RDF/XML";
+ factory->desc.uri_strings = rdfxml_uri_strings;
+
+ factory->desc.flags = RAPTOR_SYNTAX_NEED_BASE_URI;
+
+ factory->context_length = sizeof(raptor_rdfxml_parser);
+
+ factory->init = raptor_rdfxml_parse_init;
+ factory->terminate = raptor_rdfxml_parse_terminate;
+ factory->start = raptor_rdfxml_parse_start;
+ factory->chunk = raptor_rdfxml_parse_chunk;
+ factory->finish_factory = raptor_rdfxml_parse_finish_factory;
+ factory->recognise_syntax = raptor_rdfxml_parse_recognise_syntax;
+
+ return rc;
+}
+
+
+int
+raptor_init_parser_rdfxml(raptor_world* world)
+{
+ return !raptor_world_register_parser_factory(world,
+ &raptor_rdfxml_parser_register_factory);
+}
+
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+void
+raptor_rdfxml_parser_stats_print(raptor_rdfxml_parser* rdf_xml_parser,
+ FILE *stream)
+{
+ fputs("rdf:ID set ", stream);
+ raptor_id_set_stats_print(rdf_xml_parser->id_set, stream);
+}
+#endif
diff --git a/src/raptor_rfc2396.c b/src/raptor_rfc2396.c
new file mode 100644
index 0000000..b23711b
--- /dev/null
+++ b/src/raptor_rfc2396.c
@@ -0,0 +1,796 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_rfc2396.c - Raptor URI resolving from RFC2396 and RFC3986
+ *
+ * Copyright (C) 2004-2009, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2004-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+#ifndef STANDALONE
+
+/**
+ * raptor_new_uri_detail:
+ * @uri_string: The URI string to split
+ *
+ * Create a URI detailed structure from a URI string.
+ *
+ **/
+raptor_uri_detail*
+raptor_new_uri_detail(const unsigned char *uri_string)
+{
+ const unsigned char *s = NULL;
+ unsigned char *b = NULL;
+ raptor_uri_detail *ud;
+ size_t uri_len;
+
+ if(!uri_string)
+ return NULL;
+
+ uri_len = strlen((const char*)uri_string);
+
+ /* The extra +5 is for the 5 \0s that may be added for each component
+ * even if the entire URI is empty
+ */
+ ud = RAPTOR_CALLOC(raptor_uri_detail*, 1, sizeof(*ud) + uri_len + 5 + 1);
+ if(!ud)
+ return NULL;
+ ud->uri_len = uri_len;
+ ud->buffer = (unsigned char*)((unsigned char*)ud + sizeof(raptor_uri_detail));
+
+ s = uri_string;
+ b = ud->buffer;
+
+
+ /* Split the URI into it's syntactic components */
+
+ /*
+ * scheme is checked in more detail since it is important
+ * to recognise absolute URIs for resolving, and it is easy to do.
+ *
+ * scheme = alpha *( alpha | digit | "+" | "-" | "." )
+ * RFC 2396 section 3.1 Scheme Component
+ */
+ if(*s && isalpha((int)*s)) {
+ s++;
+
+ while(*s && (isalnum((int)*s) ||
+ (*s == '+') || (*s == '-') || (*s == '.')))
+ s++;
+
+ if(*s == ':') {
+ /* it matches the URI scheme grammar, so store this as a scheme */
+ ud->scheme = b;
+ ud->scheme_len = s-uri_string;
+
+ while(*uri_string != ':')
+ *b++ = *uri_string++;
+
+ *b++ = '\0';
+
+ /* and move past the : */
+ s++;
+ } else
+ s = uri_string;
+ }
+
+
+ /* authority */
+ if(*s && s[1] && *s == '/' && s[1] == '/') {
+ ud->authority = b;
+
+ s += 2; /* skip "//" */
+
+ while(*s && *s != '/' && *s != '?' && *s != '#')
+ *b++ = *s++;
+
+ ud->authority_len = b-ud->authority;
+
+ *b++ = '\0';
+ }
+
+
+ /* path */
+ if(*s && *s != '?' && *s != '#') {
+ ud->path = b;
+
+ while(*s && *s != '?' && *s != '#')
+ *b++ = *s++;
+
+ ud->path_len = b-ud->path;
+
+ *b++ = '\0';
+ }
+
+
+ /* query */
+ if(*s && *s == '?') {
+ ud->query = b;
+
+ s++;
+
+ while(*s && *s != '#')
+ *b++ = *s++;
+
+ ud->query_len = b-ud->query;
+
+ *b++ = '\0';
+ }
+
+
+ /* fragment identifier - RFC2396 Section 4.1 */
+ if(*s && *s == '#') {
+ ud->fragment = b;
+
+ s++;
+
+ while(*s)
+ *b++ = *s++;
+
+ ud->fragment_len = b-ud->fragment;
+
+ *b='\0';
+ }
+
+ ud->is_hierarchical = (ud->path && *ud->path == '/');
+
+ return ud;
+}
+
+
+void
+raptor_free_uri_detail(raptor_uri_detail* uri_detail)
+{
+ /* Also frees the uri_detail->buffer allocated in raptor_uri_parse() */
+ RAPTOR_FREE(raptor_uri_detail, uri_detail);
+}
+
+
+unsigned char*
+raptor_uri_detail_to_string(raptor_uri_detail *ud, size_t* len_p)
+{
+ size_t len = 0;
+ unsigned char *buffer, *p;
+
+ if(ud->scheme)
+ len+= ud->scheme_len+1; /* : */
+ if(ud->authority)
+ len+= 2 + ud->authority_len; /* // */
+ if(ud->path)
+ len+= ud->path_len;
+ if(ud->fragment)
+ len+= 1 + ud->fragment_len; /* # */
+ if(ud->query)
+ len+= 1 + ud->query_len; /* ? */
+
+ if(len_p)
+ *len_p=len;
+
+ buffer = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(!buffer)
+ return NULL;
+
+ p = buffer;
+
+ if(ud->scheme) {
+ unsigned char *src = ud->scheme;
+ while(*src)
+ *p++ = *src++;
+ *p++ = ':';
+ }
+ if(ud->authority) {
+ unsigned char *src = ud->authority;
+ *p++ = '/';
+ *p++ = '/';
+ while(*src)
+ *p++ = *src++;
+ }
+ if(ud->path) {
+ unsigned char *src = ud->path;
+ while(*src)
+ *p++ = *src++;
+ }
+ if(ud->fragment) {
+ unsigned char *src = ud->fragment;
+ *p++ = '#';
+ while(*src)
+ *p++ = *src++;
+ }
+ if(ud->query) {
+ unsigned char *src = ud->query;
+ *p++ = '?';
+ while(*src)
+ *p++ = *src++;
+ }
+ *p='\0';
+
+ return buffer;
+}
+
+
+/**
+ * raptor_uri_resolve_uri_reference:
+ * @base_uri: Base URI string
+ * @reference_uri: Reference URI string
+ * @buffer: Destination buffer URI
+ * @length: Length of destination buffer
+ *
+ * Resolve a URI to a base URI.
+ *
+ * Return value: length of resolved string or 0 on failure
+ **/
+size_t
+raptor_uri_resolve_uri_reference(const unsigned char *base_uri,
+ const unsigned char *reference_uri,
+ unsigned char *buffer, size_t length)
+{
+ raptor_uri_detail *ref = NULL;
+ raptor_uri_detail *base = NULL;
+ raptor_uri_detail result; /* static - pointers go to inside ref or base */
+ unsigned char *path_buffer = NULL;
+ unsigned char *p, *cur, *prev, *s;
+ unsigned char last_char;
+ size_t result_len = 0;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+ RAPTOR_DEBUG4("base uri='%s', reference_uri='%s, buffer size %d\n",
+ (base_uri ? (const char*)base_uri : "NULL"),
+ (reference_uri ? (const char*)reference_uri : "NULL"),
+ (int)length);
+#endif
+
+ *buffer = '\0';
+ memset(&result, 0, sizeof(result));
+
+ ref = raptor_new_uri_detail(reference_uri);
+ if(!ref)
+ goto resolve_tidy;
+
+
+ /* is reference URI "" or "#frag"? */
+ if(!ref->scheme && !ref->authority && !ref->path && !ref->query) {
+ unsigned char c;
+
+ /* Copy base URI to result up to '\0' or '#' */
+ for(p = buffer; (c= *base_uri) && c != '#'; p++, base_uri++)
+ *p = c;
+ *p='\0';
+
+ if(ref->fragment) {
+ unsigned char *src = ref->fragment;
+ /* Append any fragment */
+ *p++ = '#';
+ while(*src)
+ *p++ = *src++;
+ *p='\0';
+ }
+
+ result_len = p - buffer;
+ goto resolve_tidy;
+ }
+
+ /* reference has a scheme - is an absolute URI */
+ if(ref->scheme) {
+ memcpy(buffer, reference_uri, ref->uri_len + 1);
+
+ result_len = ref->uri_len;
+ goto resolve_tidy;
+ }
+
+
+ /* now the reference URI must be schemeless, i.e. relative */
+ base = raptor_new_uri_detail(base_uri);
+ if(!base)
+ goto resolve_tidy;
+
+ /* result URI must be of the base URI scheme */
+ result.scheme = base->scheme;
+ result.scheme_len = base->scheme_len;
+
+ /* an authority is given ( [user:pass@]hostname[:port] for http)
+ * so the reference URI is like //authority
+ */
+ if(ref->authority) {
+ result.authority = ref->authority;
+ result.authority_len = ref->authority_len;
+ result.path = ref->path;
+ result.path_len = ref->path_len;
+ goto resolve_end;
+ }
+
+ /* no - so now we have path (maybe with query, fragment) relative to base */
+ result.authority = base->authority;
+ result.authority_len = base->authority_len;
+
+
+ if(ref->is_hierarchical || !base->is_hierarchical) {
+ /* if the reference path is absolute OR the base URI
+ * is a non-hierarchical URI then just copy the reference path
+ * to the result.
+ */
+ result.path = ref->path;
+ result.path_len = ref->path_len;
+ goto resolve_end;
+ }
+
+
+ /* need to resolve relative path */
+
+ /* Build the result path in path_buffer */
+ result.path_len = 0;
+
+ if(base->path)
+ result.path_len += base->path_len;
+ else {
+ /* Add a missing path - makes the base URI 1 character longer */
+ base->path = (unsigned char*)"/"; /* static, but copied and not free()d */
+ base->path_len = 1;
+ base->uri_len++;
+ result.path_len++;
+ }
+
+ if(ref->path)
+ result.path_len += ref->path_len;
+
+ /* the resulting path can be no longer than result.path_len */
+ path_buffer = RAPTOR_MALLOC(unsigned char*, result.path_len + 1);
+ if(!path_buffer) {
+ result_len = 0;
+ goto resolve_tidy;
+ }
+ result.path = path_buffer;
+ *path_buffer = '\0';
+
+ if(!ref->path) {
+ /* If there is no reference path, copy the full base over */
+ result.path_len = base->path_len;
+ memcpy(path_buffer, base->path, result.path_len);
+ } else {
+ /** Otherwise copy base path up to previous / and append ref path */
+ for(p = base->path + base->path_len - 1; p > base->path && *p != '/'; p--)
+ ;
+
+ if(p >= base->path) {
+ result.path_len = p-base->path + 1;
+
+ /* Found a /, copy everything before that to path_buffer */
+ memcpy(path_buffer, base->path, result.path_len);
+ path_buffer[result.path_len] = '\0';
+ }
+
+ memcpy(path_buffer + result.path_len, ref->path, ref->path_len + 1);
+ result.path_len += ref->path_len;
+ }
+ path_buffer[result.path_len] = '\0';
+
+
+ /* remove all "./" path components */
+ for(p = (prev = path_buffer); *p; p++) {
+ if(*p != '/')
+ continue;
+
+ if(p == (prev+1) && *prev == '.') {
+ unsigned char *dest = prev;
+
+ p++;
+ while(*dest)
+ *dest++ = *p++;
+ *dest= '\0';
+
+ p = prev;
+ result.path_len -=2;
+ if(!*p)
+ break;
+ } else {
+ prev = p+1;
+ }
+ }
+
+ if(p == (prev+1) && *prev == '.') {
+ /* Remove "." at the end of a path */
+ *prev = '\0';
+ result.path_len--;
+ }
+
+
+#if defined(RAPTOR_DEBUG)
+ if(result.path_len != strlen((const char*)path_buffer))
+ RAPTOR_FATAL3("Path length %ld does not match calculated %ld.", (long)strlen((const char*)path_buffer), (long)result.path_len);
+#endif
+
+ /* Remove all "<component>/../" path components */
+
+ /*
+ * The pointers:
+ * <component>/../<next>
+ * prev-^ cur-^
+ * and p points to the previous prev (can be NULL)
+ */
+ prev = NULL;
+ cur = NULL;
+ p = NULL;
+ last_char='\0';
+
+ for(s = path_buffer; *s; last_char=*s++) {
+
+ /* find the path components */
+ if(*s != '/') {
+ /* If it is the start or following a /, record a new path component */
+ if(!last_char || last_char == '/') {
+ /* Store 2 path components */
+ if(!prev)
+ prev = s;
+ else if(!cur)
+ cur = s;
+ }
+ continue;
+ }
+
+
+ /* Wait till there are two path components */
+ if(!prev || !cur)
+ continue;
+
+#if defined(RAPTOR_DEBUG)
+ if(result.path_len != strlen((const char*)path_buffer))
+ RAPTOR_FATAL3("Path length %ld does not match calculated %ld.", (long)strlen((const char*)path_buffer), (long)result.path_len);
+#endif
+
+ /* If the current one is '..' */
+ if(s == (cur+2) && cur[0] == '.' && cur[1] == '.') {
+
+ /* and if the previous one isn't '..'
+ * (which means it is beyond the root such as a path "/foo/../..")
+ */
+ if(cur != (prev+3) || prev[0] != '.' || prev[1] != '.') {
+ unsigned char *dest = prev;
+
+ /* remove the <component>/../<next>
+ * prev-^ cur-^ ^-s
+ */
+ size_t len = s-prev+1; /* length of path component we are removing */
+
+ s++;
+ while(*s)
+ *dest++ = *s++;
+ *dest = '\0';
+ result.path_len -= len;
+
+ if(p && p < prev) {
+ /* We know the previous prev path component and we didn't do
+ * two adjustments in a row, so can adjust the
+ * pointers to continue the newly shortened path:
+ * s to the / before <next> (autoincremented by the loop)
+ * prev to the previous prev path component
+ * cur to NULL. Will be set by the next loop iteration since s
+ * points to a '/', last_char will be set to *s. */
+ s = prev-1;
+ prev = p;
+ cur = NULL;
+ p = NULL;
+ } else {
+ /* Otherwise must start from the beginning again */
+ prev = NULL;
+ cur = NULL;
+ p = NULL;
+ s = path_buffer;
+ }
+
+ }
+
+ } else {
+ /* otherwise this is not a special path component so
+ * shift the path components stack
+ */
+ p = prev;
+ prev = cur;
+ cur = NULL;
+ }
+
+ }
+
+
+ if(prev && s == (cur+2) && cur[0] == '.' && cur[1] == '.') {
+ /* Remove <component>/.. at the end of the path */
+ *prev = '\0';
+ result.path_len -= (s-prev);
+ }
+
+
+#if defined(RAPTOR_DEBUG)
+ if(result.path_len != strlen((const char*)path_buffer))
+ RAPTOR_FATAL3("Path length %ld does not match calculated %ld.", (long)strlen((const char*)path_buffer), (long)result.path_len);
+#endif
+
+ resolve_end:
+
+ /* RFC3986 Appendix C.2 / 5.4.2 Abnormal Examples
+ * Remove leading /../ and /./
+ */
+ for(p = result.path; p; ) {
+ if(!strncmp((const char *)p, "/../", 4)) {
+ result.path_len -= 3;
+ memmove(p, p+3, result.path_len+1);
+ } else if(!strncmp((const char *)p, "/./", 3)) {
+ result.path_len -= 2;
+ memmove(p, p+2, result.path_len+1);
+ } else
+ break;
+ }
+
+
+ if(ref->query) {
+ result.query = ref->query;
+ result.query_len = ref->query_len;
+ }
+
+ if(ref->fragment) {
+ result.fragment = ref->fragment;
+ result.fragment_len = ref->fragment_len;
+ }
+
+ p = buffer;
+ if(result.scheme) {
+ memcpy(p, result.scheme, result.scheme_len);
+ p += result.scheme_len;
+ *p++ = ':';
+ }
+
+ if(result.authority) {
+ *p++ = '/';
+ *p++ = '/';
+ memcpy(p, result.authority, result.authority_len);
+ p+= result.authority_len;
+ }
+
+ if(result.path) {
+ memcpy(p, result.path, result.path_len);
+ p+= result.path_len;
+ }
+
+ if(result.query) {
+ *p++ = '?';
+ memcpy(p, result.query, result.query_len);
+ p+= result.query_len;
+ }
+
+ if(result.fragment) {
+ *p++ = '#';
+ memcpy(p, result.fragment, result.fragment_len);
+ p+= result.fragment_len;
+ }
+ *p = '\0';
+
+ result_len = p - buffer;
+
+ resolve_tidy:
+ if(path_buffer)
+ RAPTOR_FREE(char*, path_buffer);
+ if(base)
+ raptor_free_uri_detail(base);
+ if(ref)
+ raptor_free_uri_detail(ref);
+
+#ifdef RAPTOR_DEBUG
+ RAPTOR_ASSERT(result_len && strlen((const char*)buffer) != result_len,
+ "URI string is not declared length");
+#endif
+
+ return result_len;
+}
+
+#endif
+
+
+
+#ifdef STANDALONE
+
+#include <stdio.h>
+
+/* one more prototype */
+int main(int argc, char *argv[]);
+
+static const char *program;
+
+
+static int
+check_resolve(const char *base_uri, const char *reference_uri,
+ const char *result_uri)
+{
+ unsigned char buffer[1024];
+
+ raptor_uri_resolve_uri_reference((const unsigned char*)base_uri,
+ (const unsigned char*)reference_uri,
+ buffer, sizeof(buffer));
+
+ if(strcmp((const char*)buffer, result_uri)) {
+ fprintf(stderr,
+ "%s: raptor_uri_resolve_uri_reference(%s, %s) FAILED giving '%s' != '%s'\n",
+ program, base_uri, reference_uri,
+ buffer, result_uri);
+ return 1;
+ }
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+ fprintf(stderr,
+ "%s: raptor_uri_resolve_uri_reference(%s, %s) OK giving '%s'\n",
+ program, base_uri, reference_uri,
+ buffer);
+#endif
+ return 0;
+}
+
+
+static int
+check_parses(const char *uri_string) {
+ raptor_uri_detail* ud;
+ ud = raptor_new_uri_detail((unsigned const char*)uri_string);
+ if(!ud) {
+ fprintf(stderr, "%s: raptor_new_uri_detail(%s) FAILED to parse\n",
+ program, uri_string);
+ return 1;
+ }
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+ fprintf(stderr, "%s: raptor_new_uri_detail(%s) OK\n",
+ program, uri_string);
+#endif
+ raptor_free_uri_detail(ud);
+ return 0;
+}
+
+
+int
+main(int argc, char *argv[])
+{
+ const char *base_uri="http://example.org/bpath/cpath/d;p?querystr#frag";
+ int failures = 0;
+
+ program = raptor_basename(argv[0]);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Using base URI '%s'\n", program, base_uri);
+#endif
+
+ /* Tests from RFC2396 Appendix C
+ * and RFC3986 Section 5
+ *
+ * Modifications:
+ * - add 'path' when items are path components to make easier to read
+ * - use example.org instead of 'a' for the authority
+ * - results are against the base_uri above
+ */
+
+ /* Appendix C.1 / 5.4.1 Normal Examples */
+ failures += check_resolve(base_uri, "g:h", "g:h");
+ failures += check_resolve(base_uri, "gpath", "http://example.org/bpath/cpath/gpath");
+ failures += check_resolve(base_uri, "./gpath", "http://example.org/bpath/cpath/gpath");
+ failures += check_resolve(base_uri, "gpath/", "http://example.org/bpath/cpath/gpath/");
+ failures += check_resolve(base_uri, "/gpath", "http://example.org/gpath");
+ failures += check_resolve(base_uri, "//gpath", "http://gpath");
+ failures += check_resolve(base_uri, "?y", "http://example.org/bpath/cpath/d;p?y");
+ failures += check_resolve(base_uri, "gpath?y", "http://example.org/bpath/cpath/gpath?y");
+ failures += check_resolve(base_uri, "#s", "http://example.org/bpath/cpath/d;p?querystr#s");
+ failures += check_resolve(base_uri, "gpath#s", "http://example.org/bpath/cpath/gpath#s");
+ failures += check_resolve(base_uri, "gpath?y#s", "http://example.org/bpath/cpath/gpath?y#s");
+ failures += check_resolve(base_uri, ";x", "http://example.org/bpath/cpath/;x");
+ failures += check_resolve(base_uri, "gpath;x", "http://example.org/bpath/cpath/gpath;x");
+ failures += check_resolve(base_uri, "gpath;x?y#s", "http://example.org/bpath/cpath/gpath;x?y#s");
+ failures += check_resolve(base_uri, ".", "http://example.org/bpath/cpath/");
+ failures += check_resolve(base_uri, "./", "http://example.org/bpath/cpath/");
+ failures += check_resolve(base_uri, "..", "http://example.org/bpath/");
+ failures += check_resolve(base_uri, "../", "http://example.org/bpath/");
+ failures += check_resolve(base_uri, "../gpath", "http://example.org/bpath/gpath");
+ failures += check_resolve(base_uri, "../..", "http://example.org/");
+ failures += check_resolve(base_uri, "../../", "http://example.org/");
+ failures += check_resolve(base_uri, "../../gpath", "http://example.org/gpath");
+
+
+ /* Appendix C.2 / 5.4.2 Abnormal Examples */
+ failures += check_resolve(base_uri, "", "http://example.org/bpath/cpath/d;p?querystr"); /* This is a Normal Example in RFC 3986 */
+
+ failures += check_resolve(base_uri, "../../../gpath", "http://example.org/gpath"); /* RFC 3986 changed the answer here */
+ failures += check_resolve(base_uri, "../../../../gpath", "http://example.org/gpath"); /* RFC 3986 changed the answer here */
+
+ failures += check_resolve(base_uri, "/./gpath", "http://example.org/gpath"); /* RFC 3986 changed the answer here */
+ failures += check_resolve(base_uri, "/../gpath", "http://example.org/gpath"); /* RFC 3986 changed the answer here */
+ failures += check_resolve(base_uri, "gpath.", "http://example.org/bpath/cpath/gpath.");
+ failures += check_resolve(base_uri, ".gpath", "http://example.org/bpath/cpath/.gpath");
+ failures += check_resolve(base_uri, "gpath..", "http://example.org/bpath/cpath/gpath..");
+ failures += check_resolve(base_uri, "..gpath", "http://example.org/bpath/cpath/..gpath");
+
+ failures += check_resolve(base_uri, "./../gpath", "http://example.org/bpath/gpath");
+ failures += check_resolve(base_uri, "./gpath/.", "http://example.org/bpath/cpath/gpath/");
+ failures += check_resolve(base_uri, "gpath/./hpath", "http://example.org/bpath/cpath/gpath/hpath");
+ failures += check_resolve(base_uri, "gpath/../hpath", "http://example.org/bpath/cpath/hpath");
+ failures += check_resolve(base_uri, "gpath;x = 1/./y", "http://example.org/bpath/cpath/gpath;x = 1/y");
+ failures += check_resolve(base_uri, "gpath;x = 1/../y", "http://example.org/bpath/cpath/y");
+
+ failures += check_resolve(base_uri, "gpath?y/./x", "http://example.org/bpath/cpath/gpath?y/./x");
+ failures += check_resolve(base_uri, "gpath?y/../x", "http://example.org/bpath/cpath/gpath?y/../x");
+ failures += check_resolve(base_uri, "gpath#s/./x", "http://example.org/bpath/cpath/gpath#s/./x");
+ failures += check_resolve(base_uri, "gpath#s/../x", "http://example.org/bpath/cpath/gpath#s/../x");
+
+ /* RFC 3986 makes this the strict answer but also allows
+ * http://example.org/bpath/cpath/gauthority
+ * for backward compatibility
+ */
+ failures += check_resolve(base_uri, "http:gauthority", "http:gauthority");
+
+
+ /* Examples from 1.3 */
+ failures += check_parses("ftp://ftp.is.co.za/rfc/rfc1808.txt");
+ failures += check_parses("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles");
+ failures += check_parses("http://www.math.uio.no/faq/compression-faq/part1.html");
+ failures += check_parses("mailto:mduerst@ifi.unizh.ch");
+ failures += check_parses("news:comp.infosystems.www.servers.unix");
+ failures += check_parses("telnet://melvyl.ucop.edu/");
+ failures += check_parses("");
+
+ /* This is a not-crashing test */
+ raptor_new_uri_detail(NULL);
+
+ /* Extra checks not in RFC2396 */
+
+ /* RDF xml:base check that fragments and query strings are removed */
+ failures += check_resolve(base_uri, "gpath/../../../hpath", "http://example.org/hpath");
+
+ /* RFC3986 changed the answer to this test
+ * Was "RDF xml:base check that extra ../ are not lost"
+ * with answer "http://example.org/../../../absfile"
+ */
+ failures += check_resolve("http://example.org/dir/file", "../../../absfile", "http://example.org/absfile");
+
+ /* RDF xml:base check that an absolute URI replaces */
+ failures += check_resolve("http://example.org/dir/file", "http://another.example.org/dir2/file2", "http://another.example.org/dir2/file2");
+
+ /* base URI and relative URI with no absolute path works */
+ failures += check_resolve("foo:", "not_scheme:blah", "foo:not_scheme:blah");
+
+ /* Issue#000177 http://bugs.librdf.org/mantis/view.php?id=177 */
+ failures += check_resolve("foo:1234", "9999", "foo:9999");
+
+ /* RDFa 1.1 test 0114 */
+ failures += check_resolve("http://example.org/file",
+ "?foo=bar../baz",
+ "http://example.org/file?foo=bar../baz");
+
+ return failures;
+}
+
+#endif
diff --git a/src/raptor_rss.c b/src/raptor_rss.c
new file mode 100644
index 0000000..4d43ff8
--- /dev/null
+++ b/src/raptor_rss.c
@@ -0,0 +1,1731 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_rss.c - Raptor Feeds (RSS and Atom) tag soup parser
+ *
+ * Copyright (C) 2003-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+#include "raptor_rss.h"
+
+
+/* local prototypes */
+
+static void raptor_rss_uplift_items(raptor_parser* rdf_parser);
+static int raptor_rss_emit(raptor_parser* rdf_parser);
+
+static void raptor_rss_start_element_handler(void *user_data, raptor_xml_element* xml_element);
+static void raptor_rss_end_element_handler(void *user_data, raptor_xml_element* xml_element);
+static void raptor_rss_cdata_handler(void *user_data, raptor_xml_element* xml_element, const unsigned char *s, int len);
+static void raptor_rss_comment_handler(void *user_data, raptor_xml_element* xml_element, const unsigned char *s);
+static void raptor_rss_sax2_new_namespace_handler(void *user_data, raptor_namespace* nspace);
+
+/*
+ * RSS parser object
+ */
+struct raptor_rss_parser_s {
+ /* static model */
+ raptor_rss_model model;
+
+ /* current line */
+ char *line;
+ /* current line length */
+ int line_length;
+ /* current char in line buffer */
+ int offset;
+
+ /* static statement for use in passing to user code */
+ raptor_statement statement;
+
+ raptor_sax2 *sax2;
+
+ /* rss node type of current CONTAINER item */
+ raptor_rss_type current_type;
+
+ /* one place stack */
+ raptor_rss_type prev_type;
+ raptor_rss_fields_type current_field;
+
+ /* emptyness of current element */
+ int element_is_empty;
+
+ /* stack of namespaces */
+ raptor_namespace_stack *nstack;
+
+ /* non-0 if this is an atom 1.0 parser */
+ int is_atom;
+
+ /* namespaces declared here */
+ raptor_namespace* nspaces[RAPTOR_RSS_NAMESPACES_SIZE];
+
+ /* namespaces seen during parsing or creating output model */
+ char nspaces_seen[RAPTOR_RSS_NAMESPACES_SIZE];
+
+ /* current BLOCK pointer (inside CONTAINER of type current_type) */
+ raptor_rss_block *current_block;
+};
+
+typedef struct raptor_rss_parser_s raptor_rss_parser;
+
+
+typedef enum {
+ RAPTOR_RSS_CONTENT_TYPE_NONE,
+ RAPTOR_RSS_CONTENT_TYPE_XML,
+ RAPTOR_RSS_CONTENT_TYPE_TEXT
+} raptor_rss_content_type;
+
+
+struct raptor_rss_element_s
+{
+ raptor_world* world;
+
+ raptor_uri* uri;
+
+ /* Two types of content */
+ raptor_rss_content_type type;
+
+ /* 1) XML */
+ raptor_xml_writer* xml_writer;
+ /* XML written to this iostream to the xml_content string */
+ raptor_iostream* iostream;
+ /* ends up here */
+ void *xml_content;
+ size_t xml_content_length;
+
+ /* 2) cdata */
+ raptor_stringbuffer* sb;
+};
+
+typedef struct raptor_rss_element_s raptor_rss_element;
+
+
+static void
+raptor_free_rss_element(raptor_rss_element *rss_element)
+{
+ if(rss_element->uri)
+ raptor_free_uri(rss_element->uri);
+ if(rss_element->type == RAPTOR_RSS_CONTENT_TYPE_XML) {
+ if(rss_element->xml_writer)
+ raptor_free_xml_writer(rss_element->xml_writer);
+ if(rss_element->iostream)
+ raptor_free_iostream(rss_element->iostream);
+ if(rss_element->xml_content)
+ raptor_free_memory(rss_element->xml_content);
+ }
+ if(rss_element->sb)
+ raptor_free_stringbuffer(rss_element->sb);
+
+ RAPTOR_FREE(raptor_rss_element, rss_element);
+}
+
+
+static int
+raptor_rss_parse_init(raptor_parser* rdf_parser, const char *name)
+{
+ raptor_rss_parser* rss_parser = (raptor_rss_parser*)rdf_parser->context;
+ raptor_sax2* sax2;
+ int n;
+
+ raptor_rss_common_init(rdf_parser->world);
+
+ raptor_rss_model_init(rdf_parser->world, &rss_parser->model);
+
+ rss_parser->prev_type = RAPTOR_RSS_NONE;
+ rss_parser->current_field = RAPTOR_RSS_FIELD_NONE;
+ rss_parser->current_type = RAPTOR_RSS_NONE;
+ rss_parser->current_block = NULL;
+
+ if(rss_parser->sax2) {
+ raptor_free_sax2(rss_parser->sax2);
+ rss_parser->sax2 = NULL;
+ }
+
+ rss_parser->nstack = raptor_new_namespaces(rdf_parser->world, 1);
+
+ /* Initialise the namespaces */
+ for(n = 0; n < RAPTOR_RSS_NAMESPACES_SIZE; n++) {
+ unsigned const char* prefix;
+ raptor_uri* uri;
+ raptor_namespace* nspace = NULL;
+
+ prefix = (unsigned const char*)raptor_rss_namespaces_info[n].prefix;
+ uri = rdf_parser->world->rss_namespaces_info_uris[n];
+ if(prefix && uri)
+ nspace = raptor_new_namespace_from_uri(rss_parser->nstack,
+ prefix, uri, 0);
+ rss_parser->nspaces[n] = nspace;
+ }
+
+ sax2 = raptor_new_sax2(rdf_parser->world, &rdf_parser->locator, rdf_parser);
+ rss_parser->sax2 = sax2;
+
+ raptor_sax2_set_start_element_handler(sax2, raptor_rss_start_element_handler);
+ raptor_sax2_set_end_element_handler(sax2, raptor_rss_end_element_handler);
+ raptor_sax2_set_characters_handler(sax2, raptor_rss_cdata_handler);
+ raptor_sax2_set_cdata_handler(sax2, raptor_rss_cdata_handler);
+ raptor_sax2_set_comment_handler(sax2, raptor_rss_comment_handler);
+ raptor_sax2_set_namespace_handler(sax2, raptor_rss_sax2_new_namespace_handler);
+
+ raptor_statement_init(&rss_parser->statement, rdf_parser->world);
+
+ return 0;
+}
+
+
+static void
+raptor_rss_parse_terminate(raptor_parser *rdf_parser)
+{
+ raptor_rss_parser *rss_parser = (raptor_rss_parser*)rdf_parser->context;
+ int n;
+
+ if(rss_parser->sax2)
+ raptor_free_sax2(rss_parser->sax2);
+
+ raptor_rss_model_clear(&rss_parser->model);
+
+ for(n = 0; n < RAPTOR_RSS_NAMESPACES_SIZE; n++) {
+ if(rss_parser->nspaces[n])
+ raptor_free_namespace(rss_parser->nspaces[n]);
+ }
+
+ if(rss_parser->nstack)
+ raptor_free_namespaces(rss_parser->nstack);
+
+ raptor_rss_common_terminate(rdf_parser->world);
+}
+
+
+static int
+raptor_rss_parse_start(raptor_parser *rdf_parser)
+{
+ raptor_uri *uri = rdf_parser->base_uri;
+ raptor_rss_parser* rss_parser = (raptor_rss_parser*)rdf_parser->context;
+ int n;
+
+ /* base URI required for RSS */
+ if(!uri)
+ return 1;
+
+ for(n = 0; n < RAPTOR_RSS_NAMESPACES_SIZE; n++)
+ rss_parser->nspaces_seen[n] = 'N';
+
+ /* Optionally forbid internal network and file requests in the XML parser */
+ raptor_sax2_set_option(rss_parser->sax2,
+ RAPTOR_OPTION_NO_NET, NULL,
+ RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NO_NET));
+ raptor_sax2_set_option(rss_parser->sax2,
+ RAPTOR_OPTION_NO_FILE, NULL,
+ RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_NO_FILE));
+ raptor_sax2_set_option(rss_parser->sax2,
+ RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES, NULL,
+ RAPTOR_OPTIONS_GET_NUMERIC(rdf_parser, RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES));
+ if(rdf_parser->uri_filter)
+ raptor_sax2_set_uri_filter(rss_parser->sax2, rdf_parser->uri_filter,
+ rdf_parser->uri_filter_user_data);
+
+ raptor_sax2_parse_start(rss_parser->sax2, uri);
+
+ return 0;
+}
+
+
+
+static int
+raptor_rss_add_container(raptor_rss_parser *rss_parser, const char *name)
+{
+ raptor_rss_type type = RAPTOR_RSS_NONE;
+
+ if(!strcmp(name, "rss") || !strcmp(name, "rdf") || !strcmp(name, "RDF")) {
+ /* rss */
+ } else if(!raptor_strcasecmp(name, "channel")) {
+ /* rss or atom 0.3 channel */
+ type = RAPTOR_RSS_CHANNEL;
+ } else if(!strcmp(name, "feed")) {
+ /* atom 1.0 feed */
+ type = RAPTOR_RSS_CHANNEL;
+ rss_parser->is_atom = 1;
+ } else if(!strcmp(name, "item")) {
+ type = RAPTOR_RSS_ITEM;
+ } else if(!strcmp(name, "entry")) {
+ type = RAPTOR_RSS_ITEM;
+ rss_parser->is_atom = 1;
+ } else {
+ int i;
+ for(i = 0; i < RAPTOR_RSS_COMMON_SIZE; i++) {
+ if(!(raptor_rss_items_info[i].flags & RAPTOR_RSS_ITEM_CONTAINER))
+ continue;
+
+ if(!strcmp(name, raptor_rss_items_info[i].name)) {
+ /* rss and atom clash on the author name field (rss) or type (atom) */
+ if(i != RAPTOR_ATOM_AUTHOR ||
+ (i == RAPTOR_ATOM_AUTHOR && rss_parser->is_atom)) {
+ type = (raptor_rss_type)i;
+ break;
+ }
+ }
+ }
+ }
+
+ if(type != RAPTOR_RSS_NONE) {
+ if(type == RAPTOR_RSS_ITEM)
+ raptor_rss_model_add_item(&rss_parser->model);
+ else
+ raptor_rss_model_add_common(&rss_parser->model, type);
+
+ /* Inner container - push the current type onto a 1-place stack */
+ if(rss_parser->current_type != RAPTOR_RSS_NONE)
+ rss_parser->prev_type = rss_parser->current_type;
+
+ rss_parser->current_type = type;
+ }
+
+ return (type == RAPTOR_RSS_NONE);
+}
+
+
+static raptor_uri*
+raptor_rss_promote_namespace_uri(raptor_world *world, raptor_uri* nspace_URI)
+{
+ /* RSS 0.9 and RSS 1.1 namespaces => RSS 1.0 namespace */
+ if((raptor_uri_equals(nspace_URI,
+ world->rss_namespaces_info_uris[RSS0_9_NS]) ||
+ raptor_uri_equals(nspace_URI,
+ world->rss_namespaces_info_uris[RSS1_1_NS]))) {
+ nspace_URI = world->rss_namespaces_info_uris[RSS1_0_NS];
+ }
+
+ /* Atom 0.3 namespace => Atom 1.0 namespace */
+ if(raptor_uri_equals(nspace_URI,
+ world->rss_namespaces_info_uris[ATOM0_3_NS])) {
+ nspace_URI = world->rss_namespaces_info_uris[ATOM1_0_NS];
+ }
+
+ return nspace_URI;
+}
+
+
+
+static raptor_rss_item*
+raptor_rss_get_current_item(raptor_rss_parser *rss_parser)
+{
+ raptor_rss_item* item;
+
+ if(rss_parser->current_type == RAPTOR_RSS_ITEM)
+ item = rss_parser->model.last;
+ else
+ item = raptor_rss_model_get_common(&rss_parser->model,
+ rss_parser->current_type);
+ return item;
+}
+
+
+static int
+raptor_rss_block_set_field(raptor_world *world, raptor_uri *base_uri,
+ raptor_rss_block *block,
+ const raptor_rss_block_field_info *bfi,
+ const char *string)
+{
+ int attribute_type = bfi->attribute_type;
+ int offset = bfi->offset;
+ if(attribute_type == RSS_BLOCK_FIELD_TYPE_URL) {
+ raptor_uri* uri;
+ uri = raptor_new_uri_relative_to_base(world, base_uri,
+ (const unsigned char*)string);
+ if(!uri)
+ return 1;
+
+ block->urls[offset] = uri;
+ } else if(attribute_type == RSS_BLOCK_FIELD_TYPE_STRING) {
+ size_t len = strlen(string);
+ block->strings[offset] = RAPTOR_MALLOC(char*, len + 1);
+ if(!block->strings[offset])
+ return 1;
+
+ memcpy(block->strings[offset], string, len+1);
+ } else {
+#ifdef RAPTOR_DEBUG
+ RAPTOR_FATAL2("Found unknown attribute_type %d\n", attribute_type);
+#endif
+ return 1;
+ }
+
+ return 0;
+}
+
+
+static void
+raptor_rss_start_element_handler(void *user_data,
+ raptor_xml_element* xml_element)
+{
+ raptor_parser *rdf_parser;
+ raptor_rss_parser *rss_parser;
+ raptor_rss_block *block = NULL;
+ raptor_uri* base_uri;
+ raptor_qname *el_qname;
+ const unsigned char *name;
+ int ns_attributes_count;
+ raptor_qname** named_attrs;
+ const raptor_namespace* el_nspace;
+ raptor_rss_element* rss_element;
+ int i;
+
+ rdf_parser = (raptor_parser*)user_data;
+ rss_parser = (raptor_rss_parser*)rdf_parser->context;
+
+ rss_element = RAPTOR_CALLOC(raptor_rss_element*, 1, sizeof(*rss_element));
+ if(!rss_element) {
+ rdf_parser->failed = 1;
+ return;
+ }
+
+ rss_element->world = rdf_parser->world;
+ rss_element->sb = raptor_new_stringbuffer();
+
+ xml_element->user_data = rss_element;
+
+ if(xml_element->parent) {
+ raptor_rss_element* parent_rss_element;
+ parent_rss_element = (raptor_rss_element*)(xml_element->parent->user_data);
+ if(parent_rss_element->xml_writer)
+ rss_element->xml_writer = parent_rss_element->xml_writer;
+ }
+
+ if(rss_element->xml_writer) {
+ raptor_xml_writer_start_element(rss_element->xml_writer, xml_element);
+ return;
+ }
+
+ el_qname = raptor_xml_element_get_name(xml_element);
+ name = el_qname->local_name;
+ el_nspace = el_qname->nspace;
+
+ named_attrs = raptor_xml_element_get_attributes(xml_element);
+ ns_attributes_count = raptor_xml_element_get_attributes_count(xml_element);
+
+ base_uri = raptor_sax2_inscope_base_uri(rss_parser->sax2);
+
+
+ /* No container type - identify and record in rss_parser->current_type
+ * either as a top-level container or an inner-container */
+ if(!raptor_rss_add_container(rss_parser, (const char*)name)) {
+#ifdef RAPTOR_DEBUG
+ if(1) {
+ raptor_rss_type old_type = rss_parser->prev_type;
+
+ if(old_type != rss_parser->current_type && old_type != RAPTOR_RSS_NONE)
+ RAPTOR_DEBUG5("FOUND inner container type %d - %s INSIDE current container type %d - %s\n", rss_parser->current_type,
+ raptor_rss_items_info[rss_parser->current_type].name,
+ old_type, raptor_rss_items_info[old_type].name);
+ else
+ RAPTOR_DEBUG3("FOUND container type %d - %s\n",
+ rss_parser->current_type,
+ raptor_rss_items_info[rss_parser->current_type].name);
+ }
+#endif
+
+ /* check a few container attributes */
+ if(named_attrs) {
+ raptor_rss_item* update_item = raptor_rss_get_current_item(rss_parser);
+
+ for(i = 0; i < ns_attributes_count; i++) {
+ raptor_qname* attr = named_attrs[i];
+ const char* attrName = (const char*)attr->local_name;
+ const unsigned char* attrValue = attr->value;
+
+ RAPTOR_DEBUG3(" container attribute %s=%s\n", attrName, attrValue);
+ if(!strcmp(attrName, "about")) {
+ if(update_item) {
+ update_item->uri = raptor_new_uri(rdf_parser->world, attrValue);
+ update_item->term = raptor_new_term_from_uri(rdf_parser->world,
+ update_item->uri);
+ }
+ }
+ }
+ }
+ return;
+ } else if(rss_parser->current_type == RAPTOR_RSS_NONE) {
+ RAPTOR_DEBUG2("Unknown container element named %s\n", name);
+ /* Nothing more that can be done with unknown element - skip it */
+ return;
+ }
+
+
+ /* have container (current_type) so this element is inside it is either:
+ * 1. a metadata block element (such as rss:enclosure)
+ * 2. a field (such as atom:title)
+ */
+
+ /* Find field ID */
+ rss_parser->current_field = RAPTOR_RSS_FIELD_UNKNOWN;
+ for(i = 0; i < RAPTOR_RSS_FIELDS_SIZE; i++) {
+ raptor_uri* nspace_URI;
+ raptor_uri* field_nspace_URI;
+ rss_info_namespace nsid = raptor_rss_fields_info[i].nspace;
+
+ if(strcmp((const char*)name, raptor_rss_fields_info[i].name))
+ continue;
+
+ if(!el_nspace) {
+ if(nsid != RSS_NO_NS && nsid != RSS1_0_NS && nsid != RSS0_91_NS &&
+ nsid != RSS0_9_NS && nsid != RSS1_1_NS)
+ continue;
+
+ /* Matches if the element has no namespace and field is not atom */
+ rss_parser->current_field = (raptor_rss_fields_type)i;
+ break;
+ }
+
+ /* Promote element namespaces */
+ nspace_URI = raptor_rss_promote_namespace_uri(rdf_parser->world,
+ raptor_namespace_get_uri(el_nspace));
+ field_nspace_URI = rdf_parser->world->rss_namespaces_info_uris[raptor_rss_fields_info[i].nspace];
+
+ if(raptor_uri_equals(nspace_URI,
+ field_nspace_URI)) {
+ rss_parser->current_field = (raptor_rss_fields_type)i;
+ break;
+ }
+ }
+
+ if(rss_parser->current_field == RAPTOR_RSS_FIELD_UNKNOWN) {
+ RAPTOR_DEBUG3("Unknown field element named %s inside type %s\n", name,
+ raptor_rss_items_info[rss_parser->current_type].name);
+ return;
+ }
+
+
+ /* Found a block element to process */
+ if(raptor_rss_fields_info[rss_parser->current_field].flags &
+ RAPTOR_RSS_INFO_FLAG_BLOCK_VALUE) {
+ raptor_rss_type block_type;
+ raptor_rss_item* update_item;
+ const unsigned char *id;
+ raptor_term* block_term;
+
+ block_type = raptor_rss_fields_info[rss_parser->current_field].block_type;
+
+ RAPTOR_DEBUG3("FOUND new block type %d - %s\n", block_type,
+ raptor_rss_items_info[block_type].name);
+
+ update_item = raptor_rss_get_current_item(rss_parser);
+
+ id = raptor_world_generate_bnodeid(rdf_parser->world);
+ block_term = raptor_new_term_from_blank(rdf_parser->world, id);
+ RAPTOR_FREE(char*, id);
+
+ block = raptor_new_rss_block(rdf_parser->world, block_type, block_term);
+ raptor_free_term(block_term);
+
+ raptor_rss_item_add_block(update_item, block);
+ rss_parser->current_block = block;
+
+ rss_parser->nspaces_seen[raptor_rss_items_info[block_type].nspace] = 'Y';
+
+ /* Now check block attributes */
+ if(named_attrs) {
+ for(i = 0; i < ns_attributes_count; i++) {
+ raptor_qname* attr = named_attrs[i];
+ const char* attrName = (const char*)attr->local_name;
+ const unsigned char* attrValue = attr->value;
+ const raptor_rss_block_field_info *bfi;
+ int offset = -1;
+
+ for(bfi = &raptor_rss_block_fields_info[0];
+ bfi->type != RAPTOR_RSS_NONE;
+ bfi++) {
+ if(!bfi->attribute)
+ continue;
+
+ if(bfi->type == block_type && !strcmp(attrName, bfi->attribute)) {
+ offset = bfi->offset;
+ break;
+ }
+ }
+
+ if(offset < 0)
+ continue;
+
+ /* Found attribute for this block type */
+ RAPTOR_DEBUG3(" found block attribute %s=%s\n", attrName, attrValue);
+ if(raptor_rss_block_set_field(rdf_parser->world, base_uri,
+ block, bfi, (const char*)attrValue)) {
+ rdf_parser->failed = 1;
+ return;
+ }
+
+ }
+
+ }
+
+ return;
+ }
+
+
+ /* Process field */
+ RAPTOR_DEBUG4("FOUND field %d - %s inside type %s\n",
+ rss_parser->current_field,
+ raptor_rss_fields_info[rss_parser->current_field].name,
+ raptor_rss_items_info[rss_parser->current_type].name);
+
+ /* Mark namespace seen in new field */
+ if(1) {
+ rss_info_namespace ns_index;
+ ns_index = raptor_rss_fields_info[rss_parser->current_field].nspace;
+ rss_parser->nspaces_seen[ns_index] = 'Y';
+ }
+
+
+ /* Now check for field attributes */
+ if(named_attrs) {
+ for(i = 0; i < ns_attributes_count; i++) {
+ raptor_qname* attr = named_attrs[i];
+ const unsigned char* attrName = attr->local_name;
+ const unsigned char* attrValue = attr->value;
+
+ RAPTOR_DEBUG3(" attribute %s=%s\n", attrName, attrValue);
+
+ /* Pick a few attributes to care about */
+ if(!strcmp((const char*)attrName, "isPermaLink")) {
+ raptor_rss_item* update_item = rss_parser->model.last;
+ if(!strcmp((const char*)name, "guid")) {
+ /* <guid isPermaLink="..."> */
+ if(update_item) {
+ raptor_rss_field* field = raptor_rss_new_field(rdf_parser->world);
+ RAPTOR_DEBUG1("fa1 - ");
+ raptor_rss_item_add_field(update_item, RAPTOR_RSS_FIELD_GUID, field);
+ if(!strcmp((const char*)attrValue, "true")) {
+ RAPTOR_DEBUG2(" setting guid to URI '%s'\n", attrValue);
+ field->uri = raptor_new_uri_relative_to_base(rdf_parser->world, base_uri,
+ (const unsigned char*)attrValue);
+ } else {
+ size_t len = strlen((const char*)attrValue);
+ RAPTOR_DEBUG2(" setting guid to string '%s'\n", attrValue);
+ field->value = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(!field->value) {
+ rdf_parser->failed = 1;
+ return;
+ }
+ memcpy(field->value, attrValue, len + 1);
+ }
+ }
+ }
+ } else if(!strcmp((const char*)attrName, "href")) {
+ if(rss_parser->current_field == RAPTOR_RSS_FIELD_LINK ||
+ rss_parser->current_field == RAPTOR_RSS_FIELD_ATOM_LINK) {
+ RAPTOR_DEBUG2(" setting href as URI string for type %s\n", raptor_rss_items_info[rss_parser->current_type].name);
+ if(rss_element->uri)
+ raptor_free_uri(rss_element->uri);
+ rss_element->uri = raptor_new_uri_relative_to_base(rdf_parser->world, base_uri,
+ (const unsigned char*)attrValue);
+ }
+ } else if(!strcmp((const char*)attrName, "type")) {
+ if(rss_parser->current_field == RAPTOR_RSS_FIELD_ATOM_LINK) {
+ /* do nothing with atom link attribute type */
+ } else if(rss_parser->is_atom) {
+ /* Atom only typing */
+ if(!strcmp((const char*)attrValue, "xhtml") ||
+ !strcmp((const char*)attrValue, "xml") ||
+ strstr((const char*)attrValue, "+xml")) {
+
+ RAPTOR_DEBUG2(" found type '%s', making an XML writer\n",
+ attrValue);
+
+ rss_element->type = RAPTOR_RSS_CONTENT_TYPE_XML;
+ rss_element->iostream = raptor_new_iostream_to_string(rdf_parser->world,
+ &rss_element->xml_content,
+ &rss_element->xml_content_length,
+ raptor_alloc_memory);
+ rss_element->xml_writer = raptor_new_xml_writer(rdf_parser->world,
+ NULL,
+ rss_element->iostream);
+ raptor_xml_writer_set_option(rss_element->xml_writer,
+ RAPTOR_OPTION_WRITER_XML_DECLARATION,
+ NULL, 0);
+
+ raptor_free_stringbuffer(rss_element->sb);
+ rss_element->sb = NULL;
+
+ }
+ }
+ } else if(!strcmp((const char*)attrName, "version")) {
+ if(!raptor_strcasecmp((const char*)name, "feed")) {
+ if(!strcmp((const char*)attrValue, "0.3"))
+ rss_parser->is_atom = 1;
+ }
+ }
+ }
+ } /* if have field attributes */
+
+}
+
+
+static void
+raptor_rss_end_element_handler(void *user_data,
+ raptor_xml_element* xml_element)
+{
+ raptor_parser* rdf_parser;
+ raptor_rss_parser* rss_parser;
+#ifdef RAPTOR_DEBUG
+ const unsigned char* name = raptor_xml_element_get_name(xml_element)->local_name;
+#endif
+ raptor_rss_element* rss_element;
+ size_t cdata_len = 0;
+ unsigned char* cdata = NULL;
+
+ rss_element = (raptor_rss_element*)xml_element->user_data;
+
+ rdf_parser = (raptor_parser*)user_data;
+ rss_parser = (raptor_rss_parser*)rdf_parser->context;
+
+ if(rss_element->xml_writer) {
+ if(rss_element->type != RAPTOR_RSS_CONTENT_TYPE_XML) {
+ raptor_xml_writer_end_element(rss_element->xml_writer, xml_element);
+ goto tidy_end_element;
+ }
+
+ /* otherwise we are done making XML */
+ raptor_free_iostream(rss_element->iostream);
+ rss_element->iostream = NULL;
+ cdata = (unsigned char*)rss_element->xml_content;
+ cdata_len = rss_element->xml_content_length;
+ }
+
+ if(rss_element->sb) {
+ cdata_len = raptor_stringbuffer_length(rss_element->sb);
+ cdata = raptor_stringbuffer_as_string(rss_element->sb);
+ }
+
+ if(cdata) {
+ raptor_uri* base_uri = NULL;
+
+ base_uri = raptor_sax2_inscope_base_uri(rss_parser->sax2);
+
+ if(rss_parser->current_block) {
+ const raptor_rss_block_field_info *bfi;
+#ifdef RAPTOR_DEBUG
+ int handled = 0;
+#endif
+ /* in a block, maybe store the CDATA there */
+
+ for(bfi = &raptor_rss_block_fields_info[0];
+ bfi->type != RAPTOR_RSS_NONE;
+ bfi++) {
+
+ if(bfi->type != rss_parser->current_block->rss_type ||
+ bfi->attribute != NULL)
+ continue;
+
+ /* Set author name from element */
+ if(raptor_rss_block_set_field(rdf_parser->world, base_uri,
+ rss_parser->current_block,
+ bfi, (const char*)cdata)) {
+ rdf_parser->failed = 1;
+ return;
+ }
+
+#ifdef RAPTOR_DEBUG
+ handled = 1;
+#endif
+ break;
+ }
+
+#ifdef RAPTOR_DEBUG
+ if(!handled) {
+ raptor_rss_type block_type = rss_parser->current_block->rss_type;
+ RAPTOR_DEBUG3("Ignoring cdata for block %d - %s\n",
+ block_type, raptor_rss_items_info[block_type].name);
+ }
+#endif
+ rss_parser->current_block = NULL;
+ goto do_end_element;
+ }
+
+ if(rss_parser->current_type == RAPTOR_RSS_NONE ||
+ (rss_parser->current_field == RAPTOR_RSS_FIELD_NONE ||
+ rss_parser->current_field == RAPTOR_RSS_FIELD_UNKNOWN)) {
+ unsigned char *p = cdata;
+ size_t i;
+ for(i = cdata_len; i > 0 && *p; i--) {
+ if(!isspace(*p))
+ break;
+ p++;
+ }
+ if(i > 0 && *p) {
+ RAPTOR_DEBUG4("IGNORING non-whitespace text '%s' inside type %s, field %s\n", cdata,
+ raptor_rss_items_info[rss_parser->current_type].name,
+ raptor_rss_fields_info[rss_parser->current_field].name);
+ }
+
+ goto do_end_element;
+ }
+
+ if(rss_parser->current_type >= RAPTOR_RSS_COMMON_IGNORED) {
+ /* skipHours, skipDays common but IGNORED */
+ RAPTOR_DEBUG2("Ignoring fields for type %s\n", raptor_rss_items_info[rss_parser->current_type].name);
+ } else {
+ raptor_rss_item* update_item = raptor_rss_get_current_item(rss_parser);
+ raptor_rss_field* field = raptor_rss_new_field(rdf_parser->world);
+
+ /* if value is always an uri, make it so */
+ if(raptor_rss_fields_info[rss_parser->current_field].flags &
+ RAPTOR_RSS_INFO_FLAG_URI_VALUE) {
+ RAPTOR_DEBUG4("Added URI %s to field %s of type %s\n", cdata, raptor_rss_fields_info[rss_parser->current_field].name, raptor_rss_items_info[rss_parser->current_type].name);
+ field->uri = raptor_new_uri_relative_to_base(rdf_parser->world, base_uri, cdata);
+ } else {
+ RAPTOR_DEBUG4("Added text '%s' to field %s of type %s\n", cdata, raptor_rss_fields_info[rss_parser->current_field].name, raptor_rss_items_info[rss_parser->current_type].name);
+ field->uri = NULL;
+ field->value = RAPTOR_MALLOC(unsigned char*, cdata_len + 1);
+ if(!field->value) {
+ rdf_parser->failed = 1;
+ return;
+ }
+
+ memcpy(field->value, cdata, cdata_len);
+ field->value[cdata_len] = '\0';
+ }
+
+ RAPTOR_DEBUG1("fa3 - ");
+ raptor_rss_item_add_field(update_item, rss_parser->current_field, field);
+ }
+ } /* end if contained cdata */
+
+ if(raptor_xml_element_is_empty(xml_element)) {
+ /* Empty element, so consider adding one of the attributes as
+ * literal or URI content
+ */
+ if(rss_parser->current_type >= RAPTOR_RSS_COMMON_IGNORED) {
+ /* skipHours, skipDays common but IGNORED */
+ RAPTOR_DEBUG3("Ignoring empty element %s for type %s\n", name, raptor_rss_items_info[rss_parser->current_type].name);
+ } else if(rss_element->uri) {
+ raptor_rss_item* update_item = raptor_rss_get_current_item(rss_parser);
+ raptor_rss_field* field = raptor_rss_new_field(rdf_parser->world);
+
+ if(rss_parser->current_field == RAPTOR_RSS_FIELD_UNKNOWN) {
+ RAPTOR_DEBUG2("Cannot add URI from alternate attribute to type %s unknown field\n", raptor_rss_items_info[rss_parser->current_type].name);
+ raptor_rss_field_free(field);
+ } else {
+ RAPTOR_DEBUG3("Added URI to field %s of type %s\n", raptor_rss_fields_info[rss_parser->current_field].name, raptor_rss_items_info[rss_parser->current_type].name);
+ field->uri = rss_element->uri;
+ rss_element->uri = NULL;
+ RAPTOR_DEBUG1("fa2 - ");
+ raptor_rss_item_add_field(update_item, rss_parser->current_field, field);
+ }
+ }
+
+ }
+
+ do_end_element:
+ if(rss_parser->current_type != RAPTOR_RSS_NONE) {
+ if(rss_parser->current_field != RAPTOR_RSS_FIELD_NONE) {
+ RAPTOR_DEBUG3("Ending element %s field %s\n", name, raptor_rss_fields_info[rss_parser->current_field].name);
+ rss_parser->current_field = RAPTOR_RSS_FIELD_NONE;
+ } else {
+ RAPTOR_DEBUG3("Ending element %s type %s\n", name, raptor_rss_items_info[rss_parser->current_type].name);
+ if(rss_parser->prev_type != RAPTOR_RSS_NONE) {
+ rss_parser->current_type = rss_parser->prev_type;
+ rss_parser->prev_type = RAPTOR_RSS_NONE;
+ RAPTOR_DEBUG3("Returning to type %d - %s\n", rss_parser->current_type, raptor_rss_items_info[rss_parser->current_type].name);
+ } else
+ rss_parser->current_type = RAPTOR_RSS_NONE;
+ }
+ }
+
+ if(rss_parser->current_block) {
+#ifdef RAPTOR_DEBUG
+ raptor_rss_type block_type = rss_parser->current_block->rss_type;
+ RAPTOR_DEBUG3("Ending current block %d - %s\n",
+ block_type, raptor_rss_items_info[block_type].name);
+#endif
+ rss_parser->current_block = NULL;
+ }
+
+
+ tidy_end_element:
+
+ if(rss_element)
+ raptor_free_rss_element(rss_element);
+
+}
+
+
+
+static void
+raptor_rss_cdata_handler(void *user_data, raptor_xml_element* xml_element,
+ const unsigned char *s, int len)
+{
+ raptor_rss_element* rss_element;
+
+ rss_element = (raptor_rss_element*)xml_element->user_data;
+
+ if(rss_element->xml_writer) {
+ raptor_xml_writer_cdata_counted(rss_element->xml_writer, s, len);
+ return;
+ }
+
+ raptor_stringbuffer_append_counted_string(rss_element->sb, s, len, 1);
+}
+
+
+static void
+raptor_rss_comment_handler(void *user_data, raptor_xml_element* xml_element,
+ const unsigned char *s)
+{
+ raptor_rss_element* rss_element;
+
+ if(!xml_element)
+ return;
+
+ rss_element = (raptor_rss_element*)xml_element->user_data;
+
+ if(rss_element->xml_writer) {
+ raptor_xml_writer_comment(rss_element->xml_writer, s);
+ return;
+ }
+}
+
+
+static void
+raptor_rss_sax2_new_namespace_handler(void *user_data,
+ raptor_namespace* nspace)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)user_data;
+ raptor_rss_parser* rss_parser;
+ int n;
+
+ rss_parser = (raptor_rss_parser*)rdf_parser->context;
+ for(n = 0; n < RAPTOR_RSS_NAMESPACES_SIZE; n++) {
+ raptor_uri* ns_uri = rdf_parser->world->rss_namespaces_info_uris[n];
+ if(!ns_uri)
+ continue;
+
+ if(!raptor_uri_equals(ns_uri, nspace->uri)) {
+ rss_parser->nspaces_seen[n] = 'Y';
+ break;
+ }
+ }
+
+}
+
+
+/* Add an rss:link from string contents of either:
+ * atom:id
+ * atom:link[@rel="self"]/@href
+ */
+static int
+raptor_rss_insert_rss_link(raptor_parser* rdf_parser,
+ raptor_rss_item* item)
+{
+ raptor_rss_block *block;
+ raptor_rss_field* id_field;
+ raptor_rss_field* field = NULL;
+
+ /* Try atom:id first */
+ id_field = item->fields[RAPTOR_RSS_FIELD_ATOM_ID];
+ if(id_field && id_field->value) {
+ const char *value = (const char*)id_field->value;
+ size_t len = strlen(value);
+
+ field = raptor_rss_new_field(item->world);
+ if(!field)
+ return 1;
+
+ field->value = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(!field->value)
+ return 1;
+
+ memcpy(field->value, value, len + 1);
+ raptor_rss_item_add_field(item, RAPTOR_RSS_FIELD_LINK, field);
+
+ return 0;
+ }
+
+
+ for(block = item->blocks; block; block = block->next) {
+ if(block->rss_type != RAPTOR_ATOM_LINK)
+ continue;
+
+ /* <link @href> is url at offset RAPTOR_RSS_LINK_HREF_URL_OFFSET
+ * <link @rel> is string at offset RAPTOR_RSS_LINK_REL_STRING_OFFSET
+ * The raptor_rss_block_fields_info structure records this
+ */
+ if(!block->urls[RAPTOR_RSS_LINK_HREF_URL_OFFSET] ||
+ (block->strings[RAPTOR_RSS_LINK_REL_STRING_OFFSET] &&
+ strcmp(block->strings[RAPTOR_RSS_LINK_REL_STRING_OFFSET], "self"))
+ )
+ continue;
+
+ /* set the field rss:link to the string value of the @href */
+ field = raptor_rss_new_field(item->world);
+ field->value = raptor_uri_to_string(block->urls[0]);
+
+ raptor_rss_item_add_field(item, RAPTOR_RSS_FIELD_LINK, field);
+ return 0;
+ }
+
+ return 0;
+}
+
+
+static int
+raptor_rss_insert_identifiers(raptor_parser* rdf_parser)
+{
+ raptor_rss_parser* rss_parser = (raptor_rss_parser*)rdf_parser->context;
+ int i;
+ raptor_rss_item* item;
+
+ for(i = 0; i< RAPTOR_RSS_COMMON_SIZE; i++) {
+ for(item = rss_parser->model.common[i]; item; item = item->next) {
+ if(!item->fields_count)
+ continue;
+
+ RAPTOR_DEBUG3("Inserting identifiers in common type %d - %s\n", i, raptor_rss_items_info[i].name);
+
+ if(item->uri) {
+ item->term = raptor_new_term_from_uri(rdf_parser->world, item->uri);
+ } else {
+ int url_fields[2];
+ int url_fields_count = 1;
+ int f;
+
+ url_fields[0] = (i== RAPTOR_RSS_IMAGE) ? RAPTOR_RSS_FIELD_URL :
+ RAPTOR_RSS_FIELD_LINK;
+ if(i == RAPTOR_RSS_CHANNEL) {
+ url_fields[1] = RAPTOR_RSS_FIELD_ATOM_ID;
+ url_fields_count++;
+ }
+
+ for(f = 0; f < url_fields_count; f++) {
+ raptor_rss_field* field;
+
+ for(field = item->fields[url_fields[f]]; field; field = field->next) {
+ raptor_uri *new_uri = NULL;
+ if(field->value)
+ new_uri = raptor_new_uri(rdf_parser->world,
+ (const unsigned char*)field->value);
+ else if(field->uri)
+ new_uri = raptor_uri_copy(field->uri);
+
+ if(!new_uri)
+ return 1;
+
+ item->term = raptor_new_term_from_uri(rdf_parser->world, new_uri);
+ raptor_free_uri(new_uri);
+ if(!item->term)
+ return 1;
+
+ break;
+ }
+ }
+
+ if(!item->term) {
+ const unsigned char *id;
+
+ /* need to make bnode */
+ id = raptor_world_generate_bnodeid(rdf_parser->world);
+ item->term = raptor_new_term_from_blank(rdf_parser->world, id);
+ RAPTOR_FREE(char*, id);
+ }
+ }
+
+ /* Try to add an rss:link if missing */
+ if(i == RAPTOR_RSS_CHANNEL && !item->fields[RAPTOR_RSS_FIELD_LINK]) {
+ if(raptor_rss_insert_rss_link(rdf_parser, item))
+ return 1;
+ }
+
+ item->node_type = &raptor_rss_items_info[i];
+ item->node_typei = i;
+ }
+ }
+ /* sequence of rss:item */
+ for(item = rss_parser->model.items; item; item = item->next) {
+ raptor_rss_block *block;
+ raptor_uri* uri;
+
+ if(!item->fields[RAPTOR_RSS_FIELD_LINK]) {
+ if(raptor_rss_insert_rss_link(rdf_parser, item))
+ return 1;
+ }
+
+
+ if(item->uri) {
+ uri = raptor_uri_copy(item->uri);
+ } else {
+ if(item->fields[RAPTOR_RSS_FIELD_LINK]) {
+ if(item->fields[RAPTOR_RSS_FIELD_LINK]->value)
+ uri = raptor_new_uri(rdf_parser->world,
+ (const unsigned char*)item->fields[RAPTOR_RSS_FIELD_LINK]->value);
+ else if(item->fields[RAPTOR_RSS_FIELD_LINK]->uri)
+ uri = raptor_uri_copy(item->fields[RAPTOR_RSS_FIELD_LINK]->uri);
+ } else if(item->fields[RAPTOR_RSS_FIELD_ATOM_ID]) {
+ if(item->fields[RAPTOR_RSS_FIELD_ATOM_ID]->value)
+ uri = raptor_new_uri(rdf_parser->world,
+ (const unsigned char*)item->fields[RAPTOR_RSS_FIELD_ATOM_ID]->value);
+ else if(item->fields[RAPTOR_RSS_FIELD_ATOM_ID]->uri)
+ uri = raptor_uri_copy(item->fields[RAPTOR_RSS_FIELD_ATOM_ID]->uri);
+ }
+ }
+
+ item->term = raptor_new_term_from_uri(rdf_parser->world, uri);
+ raptor_free_uri(uri);
+ uri = NULL;
+
+ for(block = item->blocks; block; block = block->next) {
+ if(!block->identifier) {
+ const unsigned char *id;
+ /* need to make bnode */
+ id = raptor_world_generate_bnodeid(rdf_parser->world);
+ item->term = raptor_new_term_from_blank(rdf_parser->world, id);
+ RAPTOR_FREE(char*, id);
+ }
+ }
+
+ item->node_type = &raptor_rss_items_info[RAPTOR_RSS_ITEM];
+ item->node_typei = RAPTOR_RSS_ITEM;
+ }
+
+ return 0;
+}
+
+
+static int
+raptor_rss_emit_type_triple(raptor_parser* rdf_parser,
+ raptor_term *resource,
+ raptor_uri *type_uri)
+{
+ raptor_rss_parser* rss_parser = (raptor_rss_parser*)rdf_parser->context;
+ raptor_term *predicate_term;
+ raptor_term *object_term;
+
+ if(!resource) {
+ raptor_parser_error(rdf_parser, "RSS node has no identifier");
+ return 1;
+ }
+
+ rss_parser->statement.subject = resource;
+
+ predicate_term = raptor_new_term_from_uri(rdf_parser->world,
+ RAPTOR_RDF_type_URI(rdf_parser->world));
+ rss_parser->statement.predicate = predicate_term;
+
+ object_term = raptor_new_term_from_uri(rdf_parser->world, type_uri);
+ rss_parser->statement.object = object_term;
+
+ /* Generate the statement */
+ (*rdf_parser->statement_handler)(rdf_parser->user_data, &rss_parser->statement);
+
+ raptor_free_term(predicate_term);
+ raptor_free_term(object_term);
+
+ return 0;
+}
+
+
+static int
+raptor_rss_emit_block(raptor_parser* rdf_parser,
+ raptor_term *resource,
+ raptor_rss_block *block)
+{
+ raptor_rss_parser* rss_parser = (raptor_rss_parser*)rdf_parser->context;
+ raptor_rss_type block_type = block->rss_type;
+ raptor_uri *predicate_uri;
+ raptor_term *predicate_term = NULL;
+ const raptor_rss_block_field_info *bfi;
+ raptor_rss_fields_type predicate_field;
+
+ if(!block->identifier) {
+ raptor_parser_error(rdf_parser, "Block has no identifier");
+ return 1;
+ }
+
+ predicate_field = raptor_rss_items_info[block_type].predicate;
+ predicate_uri = rdf_parser->world->rss_fields_info_uris[predicate_field];
+ predicate_term = raptor_new_term_from_uri(rdf_parser->world,
+ predicate_uri);
+
+ rss_parser->statement.subject = resource;
+ rss_parser->statement.predicate = predicate_term;
+ rss_parser->statement.object = block->identifier;
+ (*rdf_parser->statement_handler)(rdf_parser->user_data,
+ &rss_parser->statement);
+
+ raptor_free_term(predicate_term); predicate_term = NULL;
+
+ if(raptor_rss_emit_type_triple(rdf_parser, block->identifier,
+ block->node_type))
+ return 1;
+
+
+ for(bfi = &raptor_rss_block_fields_info[0];
+ bfi->type != RAPTOR_RSS_NONE;
+ bfi++) {
+ int attribute_type;
+ int offset;
+
+ if(bfi->type != block_type || !bfi->attribute)
+ continue;
+
+ attribute_type = bfi->attribute_type;
+ offset = bfi->offset;
+ predicate_uri = rdf_parser->world->rss_fields_info_uris[bfi->field];
+
+ predicate_term = raptor_new_term_from_uri(rdf_parser->world,
+ predicate_uri);
+ rss_parser->statement.predicate = predicate_term;
+
+ if(attribute_type == RSS_BLOCK_FIELD_TYPE_URL) {
+ raptor_uri *uri = block->urls[offset];
+ if(uri) {
+ raptor_term* object_term;
+
+ object_term = raptor_new_term_from_uri(rdf_parser->world, uri);
+ rss_parser->statement.object = object_term;
+ (*rdf_parser->statement_handler)(rdf_parser->user_data,
+ &rss_parser->statement);
+ raptor_free_term(object_term);
+ }
+ } else if(attribute_type == RSS_BLOCK_FIELD_TYPE_STRING) {
+ const char *str = block->strings[offset];
+ if(str) {
+ raptor_term* object_term;
+
+ object_term = raptor_new_term_from_literal(rdf_parser->world,
+ (const unsigned char*)str,
+ NULL, NULL);
+ rss_parser->statement.object = object_term;
+ (*rdf_parser->statement_handler)(rdf_parser->user_data,
+ &rss_parser->statement);
+ raptor_free_term(object_term);
+ }
+ } else {
+#ifdef RAPTOR_DEBUG
+ RAPTOR_FATAL2("Found unknown attribute_type %d\n", attribute_type);
+#endif
+ }
+
+ raptor_free_term(predicate_term); predicate_term = NULL;
+ }
+
+ return 0;
+}
+
+
+static int
+raptor_rss_emit_item(raptor_parser* rdf_parser, raptor_rss_item *item)
+{
+ raptor_rss_parser* rss_parser = (raptor_rss_parser*)rdf_parser->context;
+ int f;
+ raptor_rss_block *block;
+ raptor_uri *type_uri;
+
+ if(!item->fields_count)
+ return 0;
+
+ /* HACK - FIXME - set correct atom output class type */
+ if(item->node_typei == RAPTOR_ATOM_AUTHOR)
+ type_uri = rdf_parser->world->rss_fields_info_uris[RAPTOR_RSS_RDF_ATOM_AUTHOR_CLASS];
+ else
+ type_uri = rdf_parser->world->rss_types_info_uris[item->node_typei];
+
+ if(raptor_rss_emit_type_triple(rdf_parser, item->term, type_uri))
+ return 1;
+
+ for(f = 0; f< RAPTOR_RSS_FIELDS_SIZE; f++) {
+ raptor_rss_field* field;
+ raptor_uri* predicate_uri = NULL;
+ raptor_term* predicate_term = NULL;
+
+ /* This is only made by a connection */
+ if(f == RAPTOR_RSS_FIELD_ITEMS)
+ continue;
+
+ /* skip predicates with no URI (no namespace e.g. RSS 2) */
+ predicate_uri = rdf_parser->world->rss_fields_info_uris[f];
+ if(!predicate_uri)
+ continue;
+
+ predicate_term = raptor_new_term_from_uri(rdf_parser->world,
+ predicate_uri);
+ if(!predicate_term)
+ continue;
+
+ rss_parser->statement.predicate = predicate_term;
+
+ for(field = item->fields[f]; field; field = field->next) {
+ raptor_term* object_term;
+
+ if(field->value) {
+ /* FIXME - should store and emit languages */
+ object_term = raptor_new_term_from_literal(rdf_parser->world,
+ field->value,
+ NULL, NULL);
+ } else {
+ object_term = raptor_new_term_from_uri(rdf_parser->world,
+ field->uri);
+ }
+ rss_parser->statement.object = object_term;
+
+ /* Generate the statement */
+ (*rdf_parser->statement_handler)(rdf_parser->user_data,
+ &rss_parser->statement);
+
+ raptor_free_term(object_term);
+ }
+
+ raptor_free_term(predicate_term);
+ }
+
+ for(block = item->blocks; block; block = block->next) {
+ raptor_rss_emit_block(rdf_parser, item->term, block);
+ }
+
+ return 0;
+}
+
+
+static int
+raptor_rss_emit_connection(raptor_parser* rdf_parser,
+ raptor_term *subject_identifier,
+ raptor_uri* predicate_uri, int predicate_ordinal,
+ raptor_term *object_identifier)
+{
+ raptor_rss_parser* rss_parser = (raptor_rss_parser*)rdf_parser->context;
+ raptor_uri *puri = NULL;
+ raptor_term *predicate_term = NULL;
+
+ if(!subject_identifier) {
+ raptor_parser_error(rdf_parser, "Connection subject has no identifier");
+ return 1;
+ }
+
+ rss_parser->statement.subject = subject_identifier;
+
+ if(!predicate_uri) {
+ /* new URI object */
+ puri = raptor_new_uri_from_rdf_ordinal(rdf_parser->world, predicate_ordinal);
+ predicate_uri = puri;
+ }
+ predicate_term = raptor_new_term_from_uri(rdf_parser->world,
+ predicate_uri);
+ rss_parser->statement.predicate = predicate_term;
+ rss_parser->statement.object = object_identifier;
+
+ /* Generate the statement */
+ (*rdf_parser->statement_handler)(rdf_parser->user_data,
+ &rss_parser->statement);
+
+ raptor_free_term(predicate_term);
+
+ if(puri)
+ raptor_free_uri(puri);
+
+ return 0;
+}
+
+
+static int
+raptor_rss_emit(raptor_parser* rdf_parser)
+{
+ raptor_rss_parser* rss_parser = (raptor_rss_parser*)rdf_parser->context;
+ int i;
+ raptor_rss_item* item;
+ int rc = 0;
+
+ if(!rss_parser->model.common[RAPTOR_RSS_CHANNEL]) {
+ raptor_parser_error(rdf_parser, "No RSS channel item present");
+ return 1;
+ }
+
+ if(!rss_parser->model.common[RAPTOR_RSS_CHANNEL]->term) {
+ raptor_parser_error(rdf_parser, "RSS channel has no identifier");
+ return 1;
+ }
+
+ /* Emit start default graph mark */
+ raptor_parser_start_graph(rdf_parser, NULL, 0);
+ rdf_parser->emitted_default_graph++;
+
+
+ /* Emit all the common type blocks (channel, author, ...) */
+ for(i = 0; i< RAPTOR_RSS_COMMON_SIZE; i++) {
+ for(item = rss_parser->model.common[i]; item; item = item->next) {
+ if(!item->fields_count)
+ continue;
+
+ RAPTOR_DEBUG3("Emitting type %i - %s\n", i, raptor_rss_items_info[i].name);
+
+ if(!item->term) {
+ raptor_parser_error(rdf_parser, "RSS %s has no identifier",
+ raptor_rss_items_info[i].name);
+ rc = 1;
+ goto tidy;
+ }
+
+ if(raptor_rss_emit_item(rdf_parser, item)) {
+ rc = 1;
+ goto tidy;
+ }
+
+ /* Add connections to channel */
+ if(i != RAPTOR_RSS_CHANNEL) {
+ if(raptor_rss_emit_connection(rdf_parser,
+ rss_parser->model.common[RAPTOR_RSS_CHANNEL]->term,
+ rdf_parser->world->rss_types_info_uris[i], 0,
+ item->term)) {
+ rc = 1;
+ goto tidy;
+ }
+ }
+ }
+ }
+
+
+ /* Emit the feed item blocks */
+ if(rss_parser->model.items_count) {
+ const unsigned char* id;
+ raptor_term *items;
+
+ id = raptor_world_generate_bnodeid(rdf_parser->world);
+
+ /* make a new genid for the <rdf:Seq> node */
+ items = raptor_new_term_from_blank(rdf_parser->world, id);
+ RAPTOR_FREE(char*, id);
+
+ /* _:genid1 rdf:type rdf:Seq . */
+ if(raptor_rss_emit_type_triple(rdf_parser, items,
+ RAPTOR_RDF_Seq_URI(rdf_parser->world))) {
+ raptor_free_term(items);
+ rc = 1;
+ goto tidy;
+ }
+
+ /* <channelURI> rss:items _:genid1 . */
+ if(raptor_rss_emit_connection(rdf_parser,
+ rss_parser->model.common[RAPTOR_RSS_CHANNEL]->term,
+ rdf_parser->world->rss_fields_info_uris[RAPTOR_RSS_FIELD_ITEMS], 0,
+ items)) {
+ raptor_free_term(items);
+ rc= 1;
+ goto tidy;
+ }
+
+ /* sequence of rss:item */
+ for(i = 1, item = rss_parser->model.items; item; item = item->next, i++) {
+
+ if(raptor_rss_emit_item(rdf_parser, item) ||
+ raptor_rss_emit_connection(rdf_parser, items, NULL, i,item->term)) {
+ raptor_free_term(items);
+ rc = 1;
+ goto tidy;
+ }
+ }
+
+ raptor_free_term(items);
+ }
+
+ tidy:
+ if(rdf_parser->emitted_default_graph) {
+ raptor_parser_end_graph(rdf_parser, NULL, 0);
+ rdf_parser->emitted_default_graph--;
+ }
+
+ return rc;
+}
+
+
+static int
+raptor_rss_copy_field(raptor_rss_parser* rss_parser,
+ raptor_rss_item* item,
+ const raptor_field_pair* pair)
+{
+ raptor_rss_fields_type from_field = pair->from;
+ raptor_rss_fields_type to_field = pair->to;
+ raptor_rss_field* field = NULL;
+
+ if(!(item->fields[from_field] && item->fields[from_field]->value))
+ return 1;
+
+ if(from_field == to_field) {
+ field = item->fields[from_field];
+ } else {
+ if(item->fields[to_field] && item->fields[to_field]->value)
+ return 1;
+
+ field = raptor_rss_new_field(item->world);
+ field->is_mapped = 1;
+ raptor_rss_item_add_field(item, to_field, field);
+ }
+
+ /* Ensure output namespace is declared */
+ rss_parser->nspaces_seen[raptor_rss_fields_info[to_field].nspace] = 'Y';
+
+ if(!field->value) {
+ if(pair->conversion)
+ pair->conversion(item->fields[from_field], field);
+ else {
+ size_t len;
+
+ /* Otherwise default action is to copy from_field value */
+ len = strlen((const char*)item->fields[from_field]->value);
+
+ field->value = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(!field->value)
+ return 1;
+
+ memcpy(field->value, item->fields[from_field]->value, len + 1);
+ }
+ }
+
+ return 0;
+}
+
+
+static void
+raptor_rss_uplift_fields(raptor_rss_parser* rss_parser, raptor_rss_item* item)
+{
+ int i;
+
+ /* COPY some fields from atom to rss/dc */
+ for(i = 0; raptor_atom_to_rss[i].from != RAPTOR_RSS_FIELD_UNKNOWN; i++) {
+#ifdef RAPTOR_DEBUG
+ raptor_rss_fields_type from_field = raptor_atom_to_rss[i].from;
+ raptor_rss_fields_type to_field = raptor_atom_to_rss[i].to;
+#endif
+
+ if(raptor_rss_copy_field(rss_parser, item, &raptor_atom_to_rss[i]))
+ continue;
+ RAPTOR_DEBUG3("Copied field %s to rss field %s\n",
+ raptor_rss_fields_info[from_field].name,
+ raptor_rss_fields_info[to_field].name);
+ }
+}
+
+
+static void
+raptor_rss_uplift_items(raptor_parser* rdf_parser)
+{
+ raptor_rss_parser* rss_parser = (raptor_rss_parser*)rdf_parser->context;
+ int i;
+ raptor_rss_item* item;
+
+ for(i = 0; i< RAPTOR_RSS_COMMON_SIZE; i++) {
+ for(item = rss_parser->model.common[i]; item; item = item->next) {
+ raptor_rss_uplift_fields(rss_parser, item);
+ }
+ }
+
+ for(item = rss_parser->model.items; item; item = item->next) {
+ raptor_rss_uplift_fields(rss_parser, item);
+ }
+
+}
+
+
+static void
+raptor_rss_start_namespaces(raptor_parser* rdf_parser)
+{
+ raptor_rss_parser* rss_parser = (raptor_rss_parser*)rdf_parser->context;
+ int i;
+ int n;
+
+ /* for each item type (channel, item, ...) */
+ for(i = 0; i< RAPTOR_RSS_COMMON_SIZE; i++) {
+ raptor_rss_item* item;
+
+ /* for each item instance of a type */
+ for(item = rss_parser->model.common[i]; item; item = item->next) {
+ int f;
+ if(!item->fields_count)
+ continue;
+
+ /* for each field */
+ for(f = 0; f< RAPTOR_RSS_FIELDS_SIZE; f++) {
+ raptor_rss_field* field;
+ /* for each field value */
+ for(field = item->fields[f]; field; field = field->next) {
+ rss_info_namespace ns_index = raptor_rss_fields_info[f].nspace;
+ rss_parser->nspaces_seen[ns_index] = 'Y';
+ /* knowing there is one value is enough */
+ break;
+ }
+ }
+ }
+ }
+
+ /* start the namespaces */
+ for(n = 0; n < RAPTOR_RSS_NAMESPACES_SIZE; n++) {
+ if(rss_parser->nspaces[n] && rss_parser->nspaces_seen[n] == 'Y')
+ raptor_parser_start_namespace(rdf_parser, rss_parser->nspaces[n]);
+ }
+}
+
+
+static int
+raptor_rss_parse_chunk(raptor_parser* rdf_parser,
+ const unsigned char *s, size_t len,
+ int is_end)
+{
+ raptor_rss_parser* rss_parser = (raptor_rss_parser*)rdf_parser->context;
+
+ if(rdf_parser->failed)
+ return 1;
+
+ raptor_sax2_parse_chunk(rss_parser->sax2, s, len, is_end);
+
+ if(!is_end)
+ return 0;
+
+ if(rdf_parser->failed)
+ return 1;
+
+ /* turn strings into URIs, move things around if needed */
+ if(raptor_rss_insert_identifiers(rdf_parser)) {
+ rdf_parser->failed = 1;
+ return 1;
+ }
+
+ /* add some new fields */
+ raptor_rss_uplift_items(rdf_parser);
+
+ /* find out what namespaces to declare and start them */
+ raptor_rss_start_namespaces(rdf_parser);
+
+ /* generate the triples */
+ raptor_rss_emit(rdf_parser);
+
+ return 0;
+}
+
+
+static int
+raptor_rss_parse_recognise_syntax(raptor_parser_factory* factory,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier,
+ const unsigned char *suffix,
+ const char *mime_type)
+{
+ int score = 0;
+
+ if(suffix) {
+ if(!strcmp((const char*)suffix, "rss"))
+ score = 7;
+ if(!strcmp((const char*)suffix, "atom"))
+ score = 5;
+ if(!strcmp((const char*)suffix, "xml"))
+ score = 4;
+ }
+
+ if(identifier) {
+ if(!strncmp((const char*)identifier, "http://feed", 11))
+ score += 5;
+ else if(strstr((const char*)identifier, "feed"))
+ score += 3;
+
+ if(strstr((const char*)identifier, "rss2"))
+ score += 5;
+ else if(!suffix && strstr((const char*)identifier, "rss"))
+ score += 4;
+ else if(!suffix && strstr((const char*)identifier, "atom"))
+ score += 4;
+ else if(strstr((const char*)identifier, "rss.xml"))
+ score += 4;
+ else if(strstr((const char*)identifier, "atom.xml"))
+ score += 4;
+ }
+
+ if(mime_type) {
+ if(!strstr((const char*)mime_type, "html")) {
+ if(strstr((const char*)mime_type, "rss"))
+ score += 4;
+ else if(strstr((const char*)mime_type, "xml"))
+ score += 4;
+ else if(strstr((const char*)mime_type, "atom"))
+ score += 4;
+ }
+ }
+
+ return score;
+}
+
+
+static const char* const rss_tag_soup_names[2] = { "rss-tag-soup", NULL };
+
+#define RSS_TAG_SOUP_TYPES_COUNT 6
+static const raptor_type_q rss_tag_soup_types[RSS_TAG_SOUP_TYPES_COUNT + 1] = {
+ { "application/rss", 15, 8},
+ { "application/rss+xml", 19, 8},
+ { "text/rss", 8, 8},
+ { "application/xml", 15, 3},
+ { "text/xml", 8, 3},
+ { "application/atom+xml", 20, 3},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_rss_parser_register_factory(raptor_parser_factory *factory)
+{
+ int rc = 0;
+
+ factory->desc.names = rss_tag_soup_names;
+
+ factory->desc.mime_types = rss_tag_soup_types;
+
+ factory->desc.label = "RSS Tag Soup";
+ factory->desc.uri_strings = NULL;
+
+ factory->desc.flags = RAPTOR_SYNTAX_NEED_BASE_URI;
+
+ factory->context_length = sizeof(raptor_rss_parser);
+
+ factory->init = raptor_rss_parse_init;
+ factory->terminate = raptor_rss_parse_terminate;
+ factory->start = raptor_rss_parse_start;
+ factory->chunk = raptor_rss_parse_chunk;
+ factory->recognise_syntax = raptor_rss_parse_recognise_syntax;
+
+ return rc;
+}
+
+
+int
+raptor_init_parser_rss(raptor_world* world)
+{
+ return !raptor_world_register_parser_factory(world,
+ &raptor_rss_parser_register_factory);
+}
diff --git a/src/raptor_rss.h b/src/raptor_rss.h
new file mode 100644
index 0000000..0e53369
--- /dev/null
+++ b/src/raptor_rss.h
@@ -0,0 +1,448 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_rss.h - Redland Parser Toolkit Internal RSS Model and API
+ *
+ * Copyright (C) 2004-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2004-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+
+#ifndef RAPTOR_RSS_H
+#define RAPTOR_RSS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef enum {
+/* CONTAINERs */
+ /* common */
+ RAPTOR_RSS_CHANNEL,
+ RAPTOR_RSS_IMAGE,
+ RAPTOR_RSS_TEXTINPUT,
+
+ /* list items */
+ RAPTOR_RSS_ITEM,
+
+ /* atom author */
+ RAPTOR_ATOM_AUTHOR,
+ /* atom link */
+ RAPTOR_ATOM_LINK,
+
+ /* itunes owner */
+ RAPTOR_ITUNES_OWNER,
+
+ /* containers but IGNORED */
+ RAPTOR_RSS_SKIPHOURS,
+ RAPTOR_RSS_SKIPDAYS,
+
+/* metadata BLOCKs */
+ RAPTOR_RSS_ENCLOSURE,
+ RAPTOR_ATOM_CATEGORY,
+ RAPTOR_RSS_SOURCE,
+
+/* serializing containers */
+ RAPTOR_ATOM_FEED,
+ RAPTOR_ATOM_ENTRY,
+
+ /* nothing found yet */
+ RAPTOR_RSS_NONE,
+
+ /* deliberately not counting NONE */
+ RAPTOR_RSS_COMMON_SIZE = RAPTOR_RSS_NONE - RAPTOR_RSS_CHANNEL,
+ RAPTOR_RSS_COMMON_IGNORED = RAPTOR_RSS_SKIPHOURS
+} raptor_rss_type;
+
+
+/* Namespaces used in RSS */
+#define RSS1_0_NAMESPACE_URI "http://purl.org/rss/1.0/"
+#define RSS0_91_NAMESPACE_URI "http://purl.org/rss/1.0/modules/rss091#"
+#define RSS2_0_ENC_NAMESPACE_URI "http://purl.oclc.org/net/rss_2.0/enc#"
+#define ATOM0_3_NAMESPACE_URI "http://purl.org/atom/ns#"
+#define DC_NAMESPACE_URI "http://purl.org/dc/elements/1.1/"
+#define RSS1_1_NAMESPACE_URI "http://purl.org/net/rss1.1#"
+#define CONTENT_NAMESPACE_URI "http://purl.org/rss/1.0/modules/content/"
+#define ATOM1_0_NAMESPACE_URI "http://www.w3.org/2005/Atom"
+#define RDF_NAMESPACE_URI "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+#define ATOMTRIPLES_NAMESPACE_URI "http://purl.org/syndication/atomtriples/1"
+#define ITUNES_NAMESPACE_URI "http://www.itunes.com/dtds/podcast-1.0.dtd"
+
+/* Old netscape namespace, turn into RSS 1.0 */
+#define RSS0_9_NAMESPACE_URI "http://my.netscape.com/rdf/simple/0.9/"
+
+typedef enum {
+ RSS_UNKNOWN_NS = 0,
+ RSS_NO_NS = 1,
+ RSS0_91_NS = 2,
+ RSS0_9_NS = 3,
+ RSS0_92_NS = RSS_NO_NS,
+ RSS2_0_NS = RSS_NO_NS,
+ RSS1_0_NS = 4,
+ ATOM0_3_NS = 5,
+ DC_NS = 6,
+ RSS2_0_ENC_NS = 7,
+ RSS1_1_NS = 8,
+ CONTENT_NS = 9,
+ ATOM1_0_NS = 10,
+ RDF_NS = 11,
+ ATOMTRIPLES_NS = 12,
+ ITUNES_NS = 13,
+
+ RAPTOR_RSS_NAMESPACES_SIZE = ITUNES_NS + 1
+} rss_info_namespace;
+
+
+typedef struct {
+ const char *uri_string;
+ const char *prefix;
+} raptor_rss_namespace_info;
+
+
+extern const raptor_rss_namespace_info raptor_rss_namespaces_info[RAPTOR_RSS_NAMESPACES_SIZE];
+
+#define RAPTOR_RSS_INFO_FLAG_URI_VALUE 1
+#define RAPTOR_RSS_INFO_FLAG_BLOCK_VALUE 2
+
+/* Namespaced elements used in feeds */
+typedef struct {
+ const char* name;
+ rss_info_namespace nspace;
+ int flags;
+ raptor_rss_type block_type;
+} raptor_rss_field_info;
+
+/* Fields of typed nodes used in RSS */
+typedef enum {
+ RAPTOR_RSS_FIELD_TITLE,
+ RAPTOR_RSS_FIELD_LINK,
+ RAPTOR_RSS_FIELD_DESCRIPTION,
+ RAPTOR_RSS_FIELD_URL, /* image */
+ RAPTOR_RSS_FIELD_NAME, /* textinput */
+ RAPTOR_RSS_FIELD_LANGUAGE, /* channel 0.91 */
+ RAPTOR_RSS_FIELD_RATING, /* channel 0.91 */
+ RAPTOR_RSS_FIELD_COPYRIGHT, /* channel 0.91 */
+ RAPTOR_RSS_FIELD_PUBDATE, /* channel 0.91, item 2.0 */
+ RAPTOR_RSS_FIELD_LASTBUILDDATE, /* channel 0.91 */
+ RAPTOR_RSS_FIELD_DOCS, /* channel 0.91 */
+ RAPTOR_RSS_FIELD_MANAGINGEDITOR,/* channel 0.91 */
+ RAPTOR_RSS_FIELD_WEBMASTER, /* channel 0.91 */
+ RAPTOR_RSS_FIELD_CLOUD, /* channel 0.92, 2.0 */
+ RAPTOR_RSS_FIELD_TTL, /* channel 2.0 */
+ RAPTOR_RSS_FIELD_WIDTH, /* image 0.91 */
+ RAPTOR_RSS_FIELD_HEIGHT, /* image 0.91 */
+ RAPTOR_RSS_FIELD_HOUR, /* skipHours 0.91 */
+ RAPTOR_RSS_FIELD_DAY, /* skipDays 0.91 */
+ RAPTOR_RSS_FIELD_GENERATOR, /* channel 0.92, 2.0 */
+ RAPTOR_RSS_FIELD_SOURCE, /* item 0.92, 2.0 */
+ RAPTOR_RSS_FIELD_AUTHOR, /* item 2.0 */
+ RAPTOR_RSS_FIELD_GUID, /* item 2.0 */
+ RAPTOR_RSS_FIELD_ENCLOSURE, /* item 0.92, 2.0 */
+ RAPTOR_RSS_RDF_ENCLOSURE, /* In RDF output, not an RSS field */
+ RAPTOR_RSS_RDF_ENCLOSURE_CLASS, /* In RDF output, not an RSS field */
+ RAPTOR_RSS_RDF_ENCLOSURE_URL, /* In RDF output, not an RSS field */
+ RAPTOR_RSS_RDF_ENCLOSURE_LENGTH, /* In RDF output, not an RSS field */
+ RAPTOR_RSS_RDF_ENCLOSURE_TYPE, /* In RDF output, not an RSS field */
+ RAPTOR_RSS_FIELD_LENGTH, /* item 0.92, 2.0 */
+ RAPTOR_RSS_FIELD_TYPE, /* item 0.92, 2.0 */
+ RAPTOR_RSS_FIELD_CATEGORY, /* item 0.92, 2.0, channel 2.0 */
+ RAPTOR_RSS_FIELD_COMMENTS, /* comments v? */
+ RAPTOR_RSS_FIELD_ITEMS, /* rss 1.0 items */
+ RAPTOR_RSS_FIELD_IMAGE, /* rss 1.0 property from channel->image) */
+ RAPTOR_RSS_FIELD_TEXTINPUT, /* rss 1.0 property from channel->textinput */
+
+ RAPTOR_RSS_FIELD_ATOM_COPYRIGHT, /* atom 0.3 copyright */
+ RAPTOR_RSS_FIELD_ATOM_CREATED, /* atom 0.3 created */
+ RAPTOR_RSS_FIELD_ATOM_ISSUED, /* atom 0.3 issued */
+ RAPTOR_RSS_FIELD_ATOM_MODIFIED, /* atom 0.3 modified */
+ RAPTOR_RSS_FIELD_ATOM_TAGLINE, /* atom 0.3 tagline */
+
+ /* atom 1.0 required fields */
+ RAPTOR_RSS_FIELD_ATOM_ID, /* atom 1.0 id */
+ RAPTOR_RSS_FIELD_ATOM_TITLE, /* atom 1.0 title */
+ RAPTOR_RSS_FIELD_ATOM_UPDATED, /* atom 1.0 updated */
+ /* atom 1.0 optional fields */
+ RAPTOR_RSS_FIELD_ATOM_AUTHOR, /* atom 1.0 author */
+ RAPTOR_RSS_FIELD_ATOM_CATEGORY, /* atom 1.0 category */
+ RAPTOR_RSS_FIELD_ATOM_CONTENT, /* atom 1.0 content */
+ RAPTOR_RSS_FIELD_ATOM_CONTRIBUTOR, /* atom 1.0 contributor */
+ RAPTOR_RSS_FIELD_ATOM_EMAIL, /* atom 1.0 email */
+ RAPTOR_RSS_FIELD_ATOM_ENTRY, /* atom 1.0 entry */
+ RAPTOR_RSS_FIELD_ATOM_FEED, /* atom 1.0 feed */
+ RAPTOR_RSS_FIELD_ATOM_GENERATOR, /* atom 1.0 generator */
+ RAPTOR_RSS_FIELD_ATOM_ICON, /* atom 1.0 icon */
+ RAPTOR_RSS_FIELD_ATOM_LINK, /* atom 1.0 link */
+ RAPTOR_RSS_FIELD_ATOM_LOGO, /* atom 1.0 logo */
+ RAPTOR_RSS_FIELD_ATOM_NAME, /* atom 1.0 name */
+ RAPTOR_RSS_FIELD_ATOM_PUBLISHED, /* atom 1.0 published */
+ RAPTOR_RSS_FIELD_ATOM_RIGHTS, /* atom 1.0 rights */
+ RAPTOR_RSS_FIELD_ATOM_SOURCE, /* atom 1.0 source */
+ RAPTOR_RSS_FIELD_ATOM_SUBTITLE, /* atom 1.0 subtitle */
+ RAPTOR_RSS_FIELD_ATOM_SUMMARY, /* atom 1.0 summary */
+ RAPTOR_RSS_FIELD_ATOM_URI, /* atom 1.0 uri */
+
+ RAPTOR_RSS_RDF_ATOM_AUTHOR_CLASS, /* In RDF output, not atom field */
+ RAPTOR_RSS_RDF_ATOM_CATEGORY_CLASS, /* In RDF output, not atom field */
+ RAPTOR_RSS_RDF_ATOM_LINK_CLASS, /* In RDF output, not atom field */
+
+ RAPTOR_RSS_FIELD_ATOM_LABEL, /* atom 1.0 attribute label */
+ RAPTOR_RSS_FIELD_ATOM_SCHEME, /* atom 1.0 attribute scheme */
+ RAPTOR_RSS_FIELD_ATOM_TERM, /* atom 1.0 attribute term */
+ RAPTOR_RSS_FIELD_ATOM_HREF, /* atom 1.0 attribute term */
+ RAPTOR_RSS_FIELD_ATOM_REL, /* atom 1.0 attribute term */
+ RAPTOR_RSS_FIELD_ATOM_TYPE, /* atom 1.0 attribute term */
+ RAPTOR_RSS_FIELD_ATOM_HREFLANG, /* atom 1.0 attribute term */
+ RAPTOR_RSS_FIELD_ATOM_LENGTH, /* atom 1.0 attribute term */
+
+ RAPTOR_RSS_FIELD_DC_TITLE, /* DC title */
+ RAPTOR_RSS_FIELD_DC_CONTRIBUTOR, /* DC contributor */
+ RAPTOR_RSS_FIELD_DC_CREATOR, /* DC creator */
+ RAPTOR_RSS_FIELD_DC_PUBLISHER, /* DC publisher */
+ RAPTOR_RSS_FIELD_DC_SUBJECT, /* DC subject */
+ RAPTOR_RSS_FIELD_DC_DESCRIPTION, /* DC description */
+ RAPTOR_RSS_FIELD_DC_DATE, /* DC date */
+ RAPTOR_RSS_FIELD_DC_TYPE, /* DC type */
+ RAPTOR_RSS_FIELD_DC_FORMAT, /* DC format */
+ RAPTOR_RSS_FIELD_DC_IDENTIFIER, /* DC identifier */
+ RAPTOR_RSS_FIELD_DC_LANGUAGE, /* DC language */
+ RAPTOR_RSS_FIELD_DC_RELATION, /* DC relation */
+ RAPTOR_RSS_FIELD_DC_SOURCE, /* DC source */
+ RAPTOR_RSS_FIELD_DC_COVERAGE, /* DC coverage */
+ RAPTOR_RSS_FIELD_DC_RIGHTS, /* DC rights */
+
+
+ RAPTOR_RSS_FIELD_CONTENT_ENCODED, /* rss 1.0 module content:encoded */
+
+ RAPTOR_RSS_FIELD_AT_CONTENT_TYPE, /* at:contentType */
+
+ RAPTOR_RSS_FIELD_ITUNES_AUTHOR,
+ RAPTOR_RSS_FIELD_ITUNES_SUBTITLE,
+ RAPTOR_RSS_FIELD_ITUNES_SUMARY,
+ RAPTOR_RSS_FIELD_ITUNES_KEYWORDS,
+ RAPTOR_RSS_FIELD_ITUNES_EXPLICIT,
+ RAPTOR_RSS_FIELD_ITUNES_IMAGE,
+ RAPTOR_RSS_FIELD_ITUNES_NAME,
+ RAPTOR_RSS_FIELD_ITUNES_OWNER,
+ RAPTOR_RSS_FIELD_ITUNES_BLOCK,
+ RAPTOR_RSS_FIELD_ITUNES_CATEGORY,
+ RAPTOR_RSS_FIELD_ITUNES_EMAIL,
+
+ RAPTOR_RSS_FIELD_UNKNOWN,
+
+ RAPTOR_RSS_FIELD_NONE,
+
+ RAPTOR_RSS_FIELDS_SIZE = RAPTOR_RSS_FIELD_UNKNOWN
+} raptor_rss_fields_type;
+
+extern const raptor_rss_field_info raptor_rss_fields_info[RAPTOR_RSS_FIELDS_SIZE+2];
+
+typedef struct raptor_rss_field_s raptor_rss_field;
+
+typedef int (*raptor_rss_field_conversion)(raptor_rss_field* from_field, raptor_rss_field* to_field);
+
+typedef struct {
+ raptor_rss_fields_type from;
+ raptor_rss_fields_type to;
+ raptor_rss_field_conversion conversion;
+} raptor_field_pair;
+
+extern const raptor_field_pair raptor_atom_to_rss[];
+
+
+#define RAPTOR_RSS_LINK_HREF_URL_OFFSET 0
+#define RAPTOR_RSS_LINK_REL_STRING_OFFSET 0
+
+#define RSS_BLOCK_FIELD_TYPE_URL 0
+#define RSS_BLOCK_FIELD_TYPE_STRING 1
+
+#define RSS_BLOCK_MAX_URLS 1
+#define RSS_BLOCK_MAX_STRINGS 5
+
+/* Feed metadata blocks support (was raptor_rss_enclosure) */
+struct raptor_rss_block_s
+{
+ raptor_rss_type rss_type;
+
+ /* enclosure: subject node URI/blank node */
+ raptor_term *identifier;
+
+ /* enclosure: node RAPTOR_RSS_ENCLOSURE
+ category: node RAPTOR_ATOM_CATEGORY
+ person: node RAPTOR_ATOM_AUTHOR or RAPTOR_ATOM_CONTRIBUTOR
+ link: node RAPTOR_ATOM_LINK
+ */
+ raptor_uri *node_type;
+
+ /* enclosure: 0: where enclosure is located - @url attr (required)
+ atom category: 0: @scheme attr (optional)
+ rss category: 0: @domain attr (optional)
+ rss source: 0: @url attr (required)
+ person: 0: @atom:uri attr (optional)
+ link: 0: @href attr (required)
+ */
+ raptor_uri *urls[RSS_BLOCK_MAX_URLS];
+
+ /* enclosure: 0: content length @length attr (required)
+ 1: content type @type attr (required)
+ atom category: 0: @term attr (required)
+ 1: @label attr (optional)
+ person: 0: @atom:name attr (required)
+ 1: @atom:email attr (optional)
+ link: 0: @length attr (optional)
+ 1: @type attr (optional)
+ 2: @rel attr (optional)
+ 3: @hreflang attr (optional)
+ 4: @title attr (optional)
+ */
+ char *strings[RSS_BLOCK_MAX_STRINGS];
+
+ /* next in list */
+ struct raptor_rss_block_s* next;
+};
+typedef struct raptor_rss_block_s raptor_rss_block;
+
+#define RAPTOR_RSS_ITEM_CONTAINER 1
+#define RAPTOR_RSS_ITEM_BLOCK 2
+typedef struct {
+ const char* name;
+ rss_info_namespace nspace;
+ int flags;
+ /* RDF class URI */
+ raptor_rss_fields_type cls;
+ /* RDF predicate URI to connect to the instance of this item */
+ raptor_rss_fields_type predicate;
+} raptor_rss_item_info;
+
+
+extern const raptor_rss_item_info raptor_rss_items_info[RAPTOR_RSS_COMMON_SIZE+1];
+
+#define RAPTOR_RSS_BLOCKS_SIZE 17
+/* Metadata blocks info */
+typedef struct {
+ /* metadata block type it applies to */
+ raptor_rss_type type;
+ /* XML attribute (or NULL for field to use to store CDATA) */
+ const char *attribute;
+ /* How that attribute should be interpreted: url or string */
+ int attribute_type;
+ /* Index into urls/strings array to store it */
+ int offset;
+ /* RDF predicate this maps to */
+ raptor_rss_fields_type field;
+} raptor_rss_block_field_info;
+
+extern const raptor_rss_block_field_info raptor_rss_block_fields_info[RAPTOR_RSS_BLOCKS_SIZE+1];
+
+
+struct raptor_rss_field_s
+{
+ raptor_world* world;
+ unsigned char* value;
+ raptor_uri* uri;
+ struct raptor_rss_field_s* next;
+ /* this field was mapped from another vocab */
+ unsigned int is_mapped:1;
+ /* value is XML */
+ unsigned int is_xml:1;
+};
+
+#define RAPTOR_RSS_FIELD_MAPPED
+
+/* RSS items (instances of typed nodes) containing fields */
+struct raptor_rss_item_s
+{
+ raptor_world* world;
+ raptor_uri *uri;
+ raptor_term* term;
+ const raptor_rss_item_info *node_type;
+ int node_typei;
+ raptor_rss_field* fields[RAPTOR_RSS_FIELDS_SIZE];
+ raptor_rss_block* blocks;
+ int fields_count;
+ struct raptor_rss_item_s* next;
+ /* Triples with this item as subject and do not fit in @fields */
+ raptor_sequence* triples;
+};
+typedef struct raptor_rss_item_s raptor_rss_item;
+
+
+/* raptor_rss_common.c */
+#define RAPTOR_RSS_N_CONCEPTS 1
+
+#define RAPTOR_RSS_RSS_items_URI(rss_model) ((rss_model)->concepts[0])
+
+
+typedef struct {
+ raptor_world* world;
+
+ /* RAPTOR_RSS_CHANNEL, RAPTOR_RSS_IMAGE, RAPTOR_RSS_TEXTINPUT */
+ raptor_rss_item* common[RAPTOR_RSS_COMMON_SIZE];
+
+ /* list of items RAPTOR_RSS_ITEM */
+ raptor_rss_item* items;
+
+ /* this points to the last one added, so we can append easy */
+ raptor_rss_item* last;
+
+ /* item count */
+ int items_count;
+
+ raptor_uri* concepts[RAPTOR_RSS_N_CONCEPTS];
+
+ raptor_namespace_stack *nstack;
+
+} raptor_rss_model;
+
+
+/* raptor_rss_common.c */
+int raptor_rss_common_init(raptor_world* world);
+void raptor_rss_common_terminate(raptor_world* world);
+
+void raptor_rss_model_init(raptor_world* world, raptor_rss_model* rss_model);
+void raptor_rss_model_clear(raptor_rss_model* rss_model);
+
+raptor_rss_item* raptor_new_rss_item(raptor_world* world);
+int raptor_rss_model_add_item(raptor_rss_model* rss_model);
+raptor_rss_item* raptor_rss_model_add_common(raptor_rss_model* rss_model, raptor_rss_type type);
+raptor_rss_item* raptor_rss_model_get_common(raptor_rss_model* rss_model, raptor_rss_type type);
+
+void raptor_clear_rss_item(raptor_rss_item* item);
+void raptor_free_rss_item(raptor_rss_item* item);
+void raptor_rss_item_add_block(raptor_rss_item* item, raptor_rss_block *block);
+void raptor_rss_item_add_field(raptor_rss_item* item, int type, raptor_rss_field* field);
+int raptor_rss_item_equals_statement_subject(const raptor_rss_item *item, const raptor_statement *statement);
+int raptor_rss_item_set_uri(raptor_rss_item *item, raptor_uri* uri);
+
+raptor_rss_block *raptor_new_rss_block(raptor_world *world, raptor_rss_type rss_type, raptor_term* block_term);
+void raptor_free_rss_block(raptor_rss_block *block);
+
+raptor_rss_field* raptor_rss_new_field(raptor_world* world);
+void raptor_rss_field_free(raptor_rss_field* field);
+
+#define RAPTOR_ISO_DATE_LEN 20
+int raptor_rss_format_iso_date(char* buffer, size_t len, time_t unix_time);
+int raptor_rss_set_date_field(raptor_rss_field* field, time_t unix_time);
+int raptor_rss_date_uplift(raptor_rss_field* to_field, const unsigned char *date_string);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/raptor_rss_common.c b/src/raptor_rss_common.c
new file mode 100644
index 0000000..6f53c15
--- /dev/null
+++ b/src/raptor_rss_common.c
@@ -0,0 +1,736 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_rss_common.c - Raptor Feeds (RSS and Atom) common code
+ *
+ * Copyright (C) 2003-2009, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+#include "raptor_rss.h"
+
+
+static int raptor_rss_field_conversion_date_uplift(raptor_rss_field* from_field, raptor_rss_field* to_field);
+
+
+const raptor_rss_namespace_info raptor_rss_namespaces_info[RAPTOR_RSS_NAMESPACES_SIZE]={
+ { NULL, NULL, },
+ { NULL, NULL, },
+ { RSS0_91_NAMESPACE_URI, "rss091", },
+ { RSS0_9_NAMESPACE_URI, NULL, },
+ { RSS1_0_NAMESPACE_URI, "rss", },
+ { ATOM0_3_NAMESPACE_URI, NULL, },
+ { DC_NAMESPACE_URI, "dc", },
+ { RSS2_0_ENC_NAMESPACE_URI, "enc", },
+ { RSS1_1_NAMESPACE_URI, NULL, },
+ { CONTENT_NAMESPACE_URI, "content", },
+ { ATOM1_0_NAMESPACE_URI, "atom", },
+ { RDF_NAMESPACE_URI, "rdf", },
+ { ATOMTRIPLES_NAMESPACE_URI, "at", },
+ { ITUNES_NAMESPACE_URI, "itunes", },
+};
+
+
+const raptor_rss_item_info raptor_rss_items_info[RAPTOR_RSS_COMMON_SIZE+1]={
+ { "channel", RSS1_0_NS, RAPTOR_RSS_ITEM_CONTAINER, RAPTOR_RSS_FIELD_NONE, RAPTOR_RSS_FIELD_NONE },
+ { "image", RSS1_0_NS, RAPTOR_RSS_ITEM_CONTAINER, RAPTOR_RSS_FIELD_NONE, RAPTOR_RSS_FIELD_NONE },
+ { "textinput", RSS1_0_NS, RAPTOR_RSS_ITEM_CONTAINER, RAPTOR_RSS_FIELD_NONE, RAPTOR_RSS_FIELD_NONE },
+ { "item", RSS1_0_NS, RAPTOR_RSS_ITEM_CONTAINER, RAPTOR_RSS_FIELD_NONE, RAPTOR_RSS_FIELD_NONE },
+ { "author", ATOM1_0_NS, RAPTOR_RSS_ITEM_CONTAINER, RAPTOR_RSS_RDF_ATOM_AUTHOR_CLASS, RAPTOR_RSS_FIELD_ATOM_AUTHOR },
+ { "Link", ATOM1_0_NS, RAPTOR_RSS_ITEM_BLOCK, RAPTOR_RSS_RDF_ATOM_LINK_CLASS, RAPTOR_RSS_FIELD_ATOM_LINK },
+ { "owner" , ITUNES_NS, RAPTOR_RSS_ITEM_CONTAINER, RAPTOR_RSS_FIELD_ITUNES_OWNER, RAPTOR_RSS_FIELD_ITUNES_OWNER },
+ { "skipHours", RSS0_91_NS, RAPTOR_RSS_ITEM_CONTAINER, RAPTOR_RSS_FIELD_NONE, RAPTOR_RSS_FIELD_NONE },
+ { "skipDays", RSS0_91_NS, RAPTOR_RSS_ITEM_CONTAINER, RAPTOR_RSS_FIELD_NONE, RAPTOR_RSS_FIELD_NONE },
+ { "Enclosure", RSS2_0_ENC_NS, RAPTOR_RSS_ITEM_BLOCK, RAPTOR_RSS_RDF_ENCLOSURE_CLASS, RAPTOR_RSS_RDF_ENCLOSURE },
+ { "category", ATOM1_0_NS, RAPTOR_RSS_ITEM_BLOCK, RAPTOR_RSS_RDF_ATOM_CATEGORY_CLASS, RAPTOR_RSS_FIELD_ATOM_CATEGORY },
+ { "source" , RSS2_0_NS, RAPTOR_RSS_ITEM_BLOCK, RAPTOR_RSS_FIELD_SOURCE, RAPTOR_RSS_FIELD_NONE },
+ { "feed", ATOM1_0_NS, RAPTOR_RSS_ITEM_CONTAINER, RAPTOR_RSS_FIELD_NONE, RAPTOR_RSS_FIELD_NONE },
+ { "entry", ATOM1_0_NS, RAPTOR_RSS_ITEM_CONTAINER, RAPTOR_RSS_FIELD_NONE, RAPTOR_RSS_FIELD_NONE },
+ { "<none>", RSS_UNKNOWN_NS, RAPTOR_RSS_ITEM_CONTAINER, RAPTOR_RSS_FIELD_NONE, RAPTOR_RSS_FIELD_NONE }
+};
+
+
+const raptor_rss_field_info raptor_rss_fields_info[RAPTOR_RSS_FIELDS_SIZE+2]={
+ { "title", RSS1_0_NS, 0 },
+ { "link", RSS1_0_NS, 0 }, /* Actually a URI but RSS 1.0 spec wants this as an (XML & RDF) literal */
+ { "description", RSS1_0_NS, 0 },
+ { "url", RSS1_0_NS, 0 },
+ { "name", RSS1_0_NS, 0 },
+ { "language", RSS0_91_NS, 0 },
+ { "rating", RSS0_91_NS, 0 },
+ { "copyright", RSS0_91_NS, 0 },
+ { "pubDate", RSS0_91_NS, 0 },
+ { "lastBuildDate", RSS0_91_NS, 0 },
+ { "docs", RSS0_91_NS, RAPTOR_RSS_INFO_FLAG_URI_VALUE },
+ { "managingEditor", RSS0_91_NS, 0 },
+ { "webMaster", RSS0_91_NS, 0 },
+ { "cloud", RSS0_92_NS, 0 },
+ { "ttl", RSS2_0_NS, 0 },
+ { "width", RSS0_91_NS, 0 },
+ { "height", RSS0_91_NS, 0 },
+ { "hour", RSS0_91_NS, 0 },
+ { "day", RSS0_91_NS, 0 },
+ { "generator", RSS0_92_NS, 0 },
+ { "source", RSS0_92_NS, 0 },
+ { "author", RSS2_0_NS, 0 },
+ { "guid", RSS2_0_NS, 0 },
+ { "enclosure", RSS2_0_NS, RAPTOR_RSS_INFO_FLAG_BLOCK_VALUE, RAPTOR_RSS_ENCLOSURE }, /* enclosure in RSS */
+ { "enclosure", RSS2_0_ENC_NS, 0 }, /* RDF output predicate, not an RSS field */
+ { "Enclosure", RSS2_0_ENC_NS, 0 }, /* RDF output class, not an RSS field */
+ { "url", RSS2_0_ENC_NS, 0 }, /* In RDF output, not an RSS field */
+ { "length", RSS2_0_ENC_NS, 0 }, /* In RDF output, not an RSS field */
+ { "type", RSS2_0_ENC_NS, 0 }, /* In RDF output, not an RSS field */
+ { "length", RSS2_0_NS, 0 },
+ { "type", RSS2_0_NS, 0 },
+ { "category", RSS0_92_NS, 0 },
+ { "comments", RSS0_92_NS, 0 },
+ { "items", RSS1_0_NS, 0 },
+ { "image", RSS1_0_NS, 0 },
+ { "textinput", RSS1_0_NS, 0 },
+
+ { "copyright", ATOM0_3_NS, 0 },
+ { "created", ATOM0_3_NS, 0 },
+ { "issued", ATOM0_3_NS, 0 },
+ { "modified", ATOM0_3_NS, 0 },
+ { "tagline", ATOM0_3_NS, 0 },
+
+ /* atom 1.0 required fields */
+ { "id", ATOM1_0_NS, RAPTOR_RSS_INFO_FLAG_URI_VALUE },
+ { "title", ATOM1_0_NS, 0 },
+ { "updated", ATOM1_0_NS, 0 },
+ /* atom 1.0 optional fields */
+ { "author", ATOM1_0_NS, 0, RAPTOR_ATOM_AUTHOR },
+ { "category", ATOM1_0_NS, RAPTOR_RSS_INFO_FLAG_BLOCK_VALUE, RAPTOR_ATOM_CATEGORY },
+ { "content", ATOM1_0_NS, 0 },
+ { "contributor", ATOM1_0_NS, 0 },
+ { "email", ATOM1_0_NS, 0 },
+ { "entry", ATOM1_0_NS, 0 },
+ { "feed", ATOM1_0_NS, 0 },
+ { "generator", ATOM1_0_NS, 0 },
+ { "icon", ATOM1_0_NS, RAPTOR_RSS_INFO_FLAG_URI_VALUE },
+ { "link", ATOM1_0_NS, RAPTOR_RSS_INFO_FLAG_BLOCK_VALUE, RAPTOR_ATOM_LINK },
+ { "logo", ATOM1_0_NS, RAPTOR_RSS_INFO_FLAG_URI_VALUE },
+ { "name", ATOM1_0_NS, 0 },
+ { "published", ATOM1_0_NS, 0 },
+ { "rights", ATOM1_0_NS, 0 },
+ { "source", ATOM1_0_NS, RAPTOR_RSS_INFO_FLAG_BLOCK_VALUE, RAPTOR_RSS_SOURCE },
+ { "subtitle", ATOM1_0_NS, 0 },
+ { "summary", ATOM1_0_NS, 0 },
+ { "uri", ATOM1_0_NS, 0 },
+
+ { "Author", ATOM1_0_NS, 0 },
+ { "Category", ATOM1_0_NS, 0 },
+ { "Link", ATOM1_0_NS, 0 },
+
+ { "label", ATOM1_0_NS, 0 },
+ { "scheme", ATOM1_0_NS, RAPTOR_RSS_INFO_FLAG_URI_VALUE },
+ { "term", ATOM1_0_NS, 0 },
+ { "href", ATOM1_0_NS, RAPTOR_RSS_INFO_FLAG_URI_VALUE },
+ { "rel", ATOM1_0_NS, 0 },
+ { "type", ATOM1_0_NS, 0 },
+ { "hreflang", ATOM1_0_NS, 0 },
+ { "length", ATOM1_0_NS, 0 },
+
+ { "title", DC_NS, 0 },
+ { "contributor", DC_NS, 0 },
+ { "creator", DC_NS, 0 },
+ { "publisher", DC_NS, 0 },
+ { "subject", DC_NS, 0 },
+ { "description", DC_NS, 0 },
+ { "date", DC_NS, 0 },
+ { "type", DC_NS, 0 },
+ { "format", DC_NS, 0 },
+ { "identifier", DC_NS, 0 },
+ { "language", DC_NS, 0 },
+ { "relation", DC_NS, 0 },
+ { "source", DC_NS, 0 },
+ { "coverage", DC_NS, 0 },
+ { "rights", DC_NS, 0 },
+
+ { "encoded", CONTENT_NS, 0 },
+
+ { "contentType", ATOMTRIPLES_NS, 0 },
+
+ { "author", ITUNES_NS, 0 },
+ { "subtitle", ITUNES_NS, 0 },
+ { "summary", ITUNES_NS, 0 },
+ { "keywords", ITUNES_NS, 0 },
+ { "explicit", ITUNES_NS, 0 },
+ { "image", ITUNES_NS, 0 },
+ { "name", ITUNES_NS, 0 },
+ { "owner", ITUNES_NS, 0 },
+ { "block", ITUNES_NS, 0 },
+ { "category", ITUNES_NS, 0 },
+ { "email", ITUNES_NS, 0 },
+
+
+ { "<unknown>", RSS_UNKNOWN_NS, 0 },
+ { "<none>", RSS_UNKNOWN_NS, 0 }
+};
+
+
+/* FIeld mappings from atom fields to RSS/DC */
+const raptor_field_pair raptor_atom_to_rss[]={
+ /* rss clone of atom fields */
+ { RAPTOR_RSS_FIELD_ATOM_SUMMARY, RAPTOR_RSS_FIELD_DESCRIPTION },
+ { RAPTOR_RSS_FIELD_ATOM_ID, RAPTOR_RSS_FIELD_LINK },
+ { RAPTOR_RSS_FIELD_ATOM_UPDATED, RAPTOR_RSS_FIELD_DC_DATE },
+ { RAPTOR_RSS_FIELD_ATOM_RIGHTS, RAPTOR_RSS_FIELD_DC_RIGHTS },
+ { RAPTOR_RSS_FIELD_ATOM_TITLE, RAPTOR_RSS_FIELD_TITLE },
+ { RAPTOR_RSS_FIELD_ATOM_SUMMARY, RAPTOR_RSS_FIELD_CONTENT_ENCODED },
+
+ /* atom 0.3 to atom 1.0 */
+ { RAPTOR_RSS_FIELD_ATOM_COPYRIGHT, RAPTOR_RSS_FIELD_ATOM_RIGHTS },
+ { RAPTOR_RSS_FIELD_ATOM_TAGLINE, RAPTOR_RSS_FIELD_ATOM_SUBTITLE },
+
+#if 0
+ /* other old atom 0.3 fields - IGNORED */
+ { RAPTOR_RSS_FIELD_ATOM_CREATED, RAPTOR_RSS_FIELD_UNKNOWN },
+ { RAPTOR_RSS_FIELD_ATOM_ISSUED, RAPTOR_RSS_FIELD_UNKNOWN },
+ { RAPTOR_RSS_FIELD_ATOM_MODIFIED, RAPTOR_RSS_FIELD_UNKNOWN },
+#endif
+
+#ifdef RAPTOR_PARSEDATE_FUNCTION
+ /* convert to ISO date */
+ { RAPTOR_RSS_FIELD_PUBDATE, RAPTOR_RSS_FIELD_DC_DATE,
+ &raptor_rss_field_conversion_date_uplift },
+#endif
+
+ /* rss content encoded */
+ { RAPTOR_RSS_FIELD_DESCRIPTION, RAPTOR_RSS_FIELD_CONTENT_ENCODED },
+
+ { RAPTOR_RSS_FIELD_UNKNOWN, RAPTOR_RSS_FIELD_UNKNOWN }
+};
+
+
+const raptor_rss_block_field_info raptor_rss_block_fields_info[RAPTOR_RSS_BLOCKS_SIZE+1] = {
+ /*
+ RSS 2 <enclosure> - optional element inside <item>
+ attributes:
+ url (required): where the enclosure is located. url
+ length (required): how big enclosure it is in bytes. integer
+ type (required): what enclosure type is as a standard MIME type. string
+ content: empty
+ */
+ { RAPTOR_RSS_ENCLOSURE, "url", RSS_BLOCK_FIELD_TYPE_URL, 0, RAPTOR_RSS_RDF_ENCLOSURE_URL },
+ { RAPTOR_RSS_ENCLOSURE, "length", RSS_BLOCK_FIELD_TYPE_STRING, 0, RAPTOR_RSS_RDF_ENCLOSURE_LENGTH },
+ { RAPTOR_RSS_ENCLOSURE, "type", RSS_BLOCK_FIELD_TYPE_STRING, 1, RAPTOR_RSS_RDF_ENCLOSURE_TYPE },
+
+ /*
+ RSS 2 <source> - optional element inside <item>
+ attributes:
+ url (required): location of source. url
+ content: source name. string
+ */
+ { RAPTOR_RSS_SOURCE, "url", RSS_BLOCK_FIELD_TYPE_URL, 0 },
+
+ /*
+ Atom <category> - optional element inside <entry>
+ attributes:
+ term (required): the category. string
+ scheme (optional): categorization scheme. url
+ label (optional): human-readable label. string
+ content: empty
+ */
+ { RAPTOR_ATOM_CATEGORY, "term", RSS_BLOCK_FIELD_TYPE_STRING, 0, RAPTOR_RSS_FIELD_ATOM_TERM },
+ { RAPTOR_ATOM_CATEGORY, "scheme", RSS_BLOCK_FIELD_TYPE_URL, 0, RAPTOR_RSS_FIELD_ATOM_SCHEME },
+ { RAPTOR_ATOM_CATEGORY, "label", RSS_BLOCK_FIELD_TYPE_STRING, 1, RAPTOR_RSS_FIELD_ATOM_LABEL },
+
+ /*
+ Atom <link> - optional element inside <entry>
+ attributes:
+ href (required): . url
+ rel (optional): . string
+ type (optional): . string
+ hreflang (optional): . string
+ title (optional): . string
+ length (optional): . string
+ content: empty
+ */
+ { RAPTOR_ATOM_LINK, "href", RSS_BLOCK_FIELD_TYPE_URL, RAPTOR_RSS_LINK_HREF_URL_OFFSET, RAPTOR_RSS_FIELD_ATOM_HREF },
+ { RAPTOR_ATOM_LINK, "rel", RSS_BLOCK_FIELD_TYPE_STRING, RAPTOR_RSS_LINK_REL_STRING_OFFSET, RAPTOR_RSS_FIELD_ATOM_REL },
+ { RAPTOR_ATOM_LINK, "type", RSS_BLOCK_FIELD_TYPE_STRING, 1, RAPTOR_RSS_FIELD_ATOM_TYPE },
+ { RAPTOR_ATOM_LINK, "hreflang", RSS_BLOCK_FIELD_TYPE_STRING, 2, RAPTOR_RSS_FIELD_ATOM_HREFLANG },
+ { RAPTOR_ATOM_LINK, "title", RSS_BLOCK_FIELD_TYPE_STRING, 3, RAPTOR_RSS_FIELD_ATOM_TITLE },
+ { RAPTOR_ATOM_LINK, "length", RSS_BLOCK_FIELD_TYPE_STRING, 4, RAPTOR_RSS_FIELD_ATOM_LENGTH },
+ { RAPTOR_ATOM_LINK, NULL, RSS_BLOCK_FIELD_TYPE_URL, 0, RAPTOR_RSS_FIELD_ATOM_HREF },
+
+ /* sentinel */
+ { RAPTOR_RSS_NONE, NULL, 0, 0 }
+};
+
+
+const unsigned char * const raptor_atom_namespace_uri = (const unsigned char *)"http://www.w3.org/2005/Atom";
+
+
+
+int
+raptor_rss_common_init(raptor_world* world) {
+ int i;
+ raptor_uri *namespace_uri;
+
+ if(world->rss_common_initialised++)
+ return 0;
+
+ world->rss_namespaces_info_uris = RAPTOR_CALLOC(raptor_uri**,
+ RAPTOR_RSS_NAMESPACES_SIZE,
+ sizeof(raptor_uri*));
+ if(!world->rss_namespaces_info_uris)
+ return -1;
+ for(i = 0; i < RAPTOR_RSS_NAMESPACES_SIZE;i++) {
+ const char *uri_string = raptor_rss_namespaces_info[i].uri_string;
+ if(uri_string) {
+ world->rss_namespaces_info_uris[i] = raptor_new_uri(world, (const unsigned char*)uri_string);
+ if(!world->rss_namespaces_info_uris[i])
+ return -1;
+ }
+ }
+
+ world->rss_types_info_uris = RAPTOR_CALLOC(raptor_uri**,
+ RAPTOR_RSS_COMMON_SIZE,
+ sizeof(raptor_uri*));
+ if(!world->rss_types_info_uris)
+ return -1;
+ for(i = 0; i< RAPTOR_RSS_COMMON_SIZE; i++) {
+ int n = raptor_rss_items_info[i].nspace;
+ namespace_uri = world->rss_namespaces_info_uris[n];
+ if(namespace_uri) {
+ world->rss_types_info_uris[i] = raptor_new_uri_from_uri_local_name(world, namespace_uri, (const unsigned char*)raptor_rss_items_info[i].name);
+ if(!world->rss_types_info_uris[i])
+ return -1;
+ }
+ }
+
+ world->rss_fields_info_uris = RAPTOR_CALLOC(raptor_uri**,
+ RAPTOR_RSS_FIELDS_SIZE,
+ sizeof(raptor_uri*));
+ if(!world->rss_fields_info_uris)
+ return -1;
+ for(i = 0; i< RAPTOR_RSS_FIELDS_SIZE; i++) {
+ namespace_uri = world->rss_namespaces_info_uris[raptor_rss_fields_info[i].nspace];
+ if(namespace_uri) {
+ world->rss_fields_info_uris[i] = raptor_new_uri_from_uri_local_name(world, namespace_uri,
+ (const unsigned char*)raptor_rss_fields_info[i].name);
+ if(!world->rss_fields_info_uris[i])
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+
+void
+raptor_rss_common_terminate(raptor_world* world) {
+ int i;
+ if(--world->rss_common_initialised)
+ return;
+
+ if(world->rss_types_info_uris) {
+ for(i = 0; i< RAPTOR_RSS_COMMON_SIZE; i++) {
+ if(world->rss_types_info_uris[i])
+ raptor_free_uri(world->rss_types_info_uris[i]);
+ }
+ RAPTOR_FREE(raptor_uri* array, world->rss_types_info_uris);
+ world->rss_types_info_uris = NULL;
+ }
+
+ if(world->rss_fields_info_uris) {
+ for(i = 0; i< RAPTOR_RSS_FIELDS_SIZE; i++) {
+ if(world->rss_fields_info_uris[i])
+ raptor_free_uri(world->rss_fields_info_uris[i]);
+ }
+ RAPTOR_FREE(raptor_uri* array, world->rss_fields_info_uris);
+ world->rss_fields_info_uris = NULL;
+ }
+
+ if(world->rss_namespaces_info_uris) {
+ for(i = 0; i < RAPTOR_RSS_NAMESPACES_SIZE;i++) {
+ if(world->rss_namespaces_info_uris[i])
+ raptor_free_uri(world->rss_namespaces_info_uris[i]);
+ }
+ RAPTOR_FREE(raptor_uri* array, world->rss_namespaces_info_uris);
+ world->rss_namespaces_info_uris = NULL;
+ }
+}
+
+
+void
+raptor_rss_model_init(raptor_world* world, raptor_rss_model* rss_model)
+{
+ memset(rss_model->common, 0,
+ sizeof(raptor_rss_item*) * RAPTOR_RSS_COMMON_SIZE);
+
+ rss_model->world = world;
+
+ rss_model->last = rss_model->items = NULL;
+ rss_model->items_count = 0;
+
+ RAPTOR_RSS_RSS_items_URI(rss_model) = raptor_new_uri_relative_to_base(world, world->rss_namespaces_info_uris[RSS1_0_NS], (const unsigned char*)"items");
+}
+
+
+void
+raptor_rss_model_clear(raptor_rss_model* rss_model)
+{
+ int i;
+ raptor_rss_item* item;
+
+ for(i = 0; i< RAPTOR_RSS_COMMON_SIZE; i++) {
+ item = rss_model->common[i];
+ while(item) {
+ raptor_rss_item *next = item->next;
+ raptor_free_rss_item(item);
+ item = next;
+ }
+ }
+
+ item = rss_model->items;
+ while(item) {
+ raptor_rss_item *next = item->next;
+
+ raptor_free_rss_item(item);
+ item = next;
+ }
+ rss_model->last = rss_model->items = NULL;
+
+ for(i = 0; i< RAPTOR_RSS_N_CONCEPTS; i++) {
+ raptor_uri* concept_uri = rss_model->concepts[i];
+ if(concept_uri) {
+ raptor_free_uri(concept_uri);
+ rss_model->concepts[i] = NULL;
+ }
+ }
+}
+
+
+raptor_rss_item*
+raptor_new_rss_item(raptor_world* world)
+{
+ raptor_rss_item* item;
+
+ item = RAPTOR_CALLOC(raptor_rss_item*, 1, sizeof(*item));
+ if(!item)
+ return NULL;
+
+ item->world = world;
+ item->triples = raptor_new_sequence((raptor_data_free_handler)raptor_free_statement, (raptor_data_print_handler)raptor_statement_print);
+ if(!item->triples) {
+ RAPTOR_FREE(raptor_rss_item, item);
+ return NULL;
+ }
+ return item;
+}
+
+
+int
+raptor_rss_model_add_item(raptor_rss_model* rss_model)
+{
+ raptor_rss_item* item;
+
+ item = raptor_new_rss_item(rss_model->world);
+ if(!item)
+ return 1;
+
+ /* new list */
+ if(!rss_model->items)
+ rss_model->items = item;
+
+ /* join last item to this one */
+ if(rss_model->last)
+ rss_model->last->next = item;
+
+ /* this is now the last item */
+ rss_model->last = item;
+ rss_model->items_count++;
+
+ RAPTOR_DEBUG2("Added item %d\n", rss_model->items_count);
+
+ return 0;
+}
+
+
+raptor_rss_item*
+raptor_rss_model_add_common(raptor_rss_model* rss_model,
+ raptor_rss_type type)
+{
+ raptor_rss_item* item;
+
+ item = raptor_new_rss_item(rss_model->world);
+ if(!item)
+ return NULL;
+
+ if(rss_model->common[type] == NULL) {
+ RAPTOR_DEBUG3("Adding common type %d - %s\n", type,
+ raptor_rss_items_info[type].name);
+ rss_model->common[type] = item;
+ } else {
+ raptor_rss_item* next;
+ RAPTOR_DEBUG3("Appending common type %d - %s\n", type,
+ raptor_rss_items_info[type].name);
+ for(next = rss_model->common[type]; next->next; next = next->next)
+ ;
+ next->next = item;
+ }
+ return item;
+}
+
+
+raptor_rss_item*
+raptor_rss_model_get_common(raptor_rss_model* rss_model, raptor_rss_type type)
+{
+ raptor_rss_item* item;
+ for(item = rss_model->common[type];
+ item && item->next;
+ item = item->next) ;
+ return item;
+}
+
+
+void
+raptor_free_rss_item(raptor_rss_item* item)
+{
+ int i;
+ for(i = 0; i< RAPTOR_RSS_FIELDS_SIZE; i++) {
+ if(item->fields[i])
+ raptor_rss_field_free(item->fields[i]);
+ }
+ if(item->blocks)
+ raptor_free_rss_block(item->blocks);
+ if(item->uri)
+ raptor_free_uri(item->uri);
+ if(item->term)
+ raptor_free_term(item->term);
+ if(item->triples)
+ raptor_free_sequence(item->triples);
+
+ RAPTOR_FREE(raptor_rss_item, item);
+}
+
+
+void
+raptor_rss_item_add_block(raptor_rss_item* item,
+ raptor_rss_block *block)
+{
+ if(!item->blocks) {
+ RAPTOR_DEBUG1("Adding first block\n");
+ item->blocks = block;
+ } else {
+ raptor_rss_block *cur;
+
+ RAPTOR_DEBUG1("Adding subsequent block\n");
+ for(cur = item->blocks; cur->next; cur = cur->next)
+ ;
+ cur->next = block;
+ }
+}
+
+
+void
+raptor_rss_item_add_field(raptor_rss_item* item, int type,
+ raptor_rss_field* field)
+{
+ if(!item->fields[type]) {
+ RAPTOR_DEBUG3("Adding first type %d field %s\n", type, raptor_rss_fields_info[type].name);
+ item->fields_count++;
+ item->fields[type] = field;
+ } else {
+ raptor_rss_field* cur;
+
+ RAPTOR_DEBUG1("Adding subsequent field\n");
+ for(cur = item->fields[type]; cur->next; cur = cur->next) ;
+ cur->next = field;
+ }
+}
+
+
+int
+raptor_rss_item_equals_statement_subject(const raptor_rss_item *item,
+ const raptor_statement *statement)
+{
+ return raptor_term_equals(statement->subject, item->term);
+}
+
+
+int
+raptor_rss_item_set_uri(raptor_rss_item *item, raptor_uri* uri)
+{
+ RAPTOR_DEBUG3("Set node %p to URI <%s>\n", item,
+ raptor_uri_as_string(uri));
+
+ item->uri = raptor_uri_copy(uri);
+ if(!item->uri)
+ return 1;
+
+ item->term = raptor_new_term_from_uri(item->world, item->uri);
+ return 0;
+}
+
+
+/*
+ * raptor_new_rss_block:
+ * @world: world
+ * @type: RSS block type
+ * @block_term: Block subject term (shared)
+ *
+ * INTERNAL - Create a new RSS Block such as <author> etc
+ *
+ * Return value: new RSS block or NULL on failure
+ */
+raptor_rss_block*
+raptor_new_rss_block(raptor_world* world, raptor_rss_type type,
+ raptor_term* block_term)
+{
+ raptor_rss_block *block;
+ block = RAPTOR_CALLOC(raptor_rss_block*, 1, sizeof(*block));
+
+ if(block) {
+ block->rss_type = type;
+ block->node_type = world->rss_types_info_uris[type];
+ block->identifier = raptor_term_copy(block_term);
+ }
+
+ return block;
+}
+
+
+void
+raptor_free_rss_block(raptor_rss_block *block)
+{
+ int i;
+
+ for(i = 0; i < RSS_BLOCK_MAX_URLS; i++) {
+ if(block->urls[i])
+ raptor_free_uri(block->urls[i]);
+ }
+
+ for(i = 0; i < RSS_BLOCK_MAX_STRINGS; i++) {
+ if(block->strings[i])
+ RAPTOR_FREE(char*, block->strings[i]);
+ }
+
+ if(block->next)
+ raptor_free_rss_block(block->next);
+
+ if(block->identifier)
+ raptor_free_term(block->identifier);
+
+ RAPTOR_FREE(raptor_rss_block, block);
+}
+
+
+raptor_rss_field*
+raptor_rss_new_field(raptor_world* world)
+{
+ raptor_rss_field* field = RAPTOR_CALLOC(raptor_rss_field*, 1, sizeof(*field));
+ if(field)
+ field->world = world;
+ return field;
+}
+
+
+void
+raptor_rss_field_free(raptor_rss_field* field)
+{
+ if(field->value)
+ RAPTOR_FREE(char*, field->value);
+ if(field->uri)
+ raptor_free_uri(field->uri);
+ if(field->next)
+ raptor_rss_field_free(field->next);
+ RAPTOR_FREE(raptor_rss_field, field);
+}
+
+
+#define RAPTOR_ISO_DATE_FORMAT "%Y-%m-%dT%H:%M:%SZ"
+
+int
+raptor_rss_format_iso_date(char* buffer, size_t len, time_t unix_time)
+{
+ struct tm* structured_time;
+
+ if(len < RAPTOR_ISO_DATE_LEN)
+ return 1;
+
+ structured_time = gmtime(&unix_time);
+ strftime(buffer, len+1, RAPTOR_ISO_DATE_FORMAT, structured_time);
+
+ return 0;
+}
+
+
+int
+raptor_rss_set_date_field(raptor_rss_field* field, time_t unix_time)
+{
+ size_t len = RAPTOR_ISO_DATE_LEN;
+
+ if(field->value)
+ RAPTOR_FREE(char*, field->value);
+ field->value = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(!field->value)
+ return 1;
+
+ if(raptor_rss_format_iso_date((char*)field->value, len, unix_time)) {
+ RAPTOR_FREE(char*, field->value);
+ return 1;
+ }
+
+ return 0;
+}
+
+
+static int
+raptor_rss_field_conversion_date_uplift(raptor_rss_field* from_field,
+ raptor_rss_field* to_field)
+{
+#ifdef RAPTOR_PARSEDATE_FUNCTION
+ time_t unix_time;
+ char *date_string = (char*)from_field->value;
+
+ if(!date_string)
+ return 1;
+
+ unix_time = RAPTOR_PARSEDATE_FUNCTION(date_string, NULL);
+ if(unix_time < 0)
+ return 1;
+
+ return raptor_rss_set_date_field(to_field, unix_time);
+#else
+ return 1;
+#endif
+}
diff --git a/src/raptor_sax2.c b/src/raptor_sax2.c
new file mode 100644
index 0000000..02b929d
--- /dev/null
+++ b/src/raptor_sax2.c
@@ -0,0 +1,1022 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_sax2.c - Raptor SAX2 API
+ *
+ * Copyright (C) 2000-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2000-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/* Define this for far too much output */
+#undef RAPTOR_DEBUG_CDATA
+
+
+int
+raptor_sax2_init(raptor_world* world)
+{
+ return 0;
+}
+
+
+void
+raptor_sax2_finish(raptor_world* world)
+{
+}
+
+
+/**
+ * raptor_new_sax2:
+ * @world: raptor world
+ * @locator: raptor locator to use for errors
+ * @user_data: pointer context information to pass to SAX handlers
+ *
+ * Constructor - Create a new SAX2 with error handlers
+ *
+ * Return value: new #raptor_sax2 object or NULL on failure
+ */
+raptor_sax2*
+raptor_new_sax2(raptor_world *world, raptor_locator *locator,
+ void* user_data)
+{
+ raptor_sax2* sax2;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!locator)
+ return NULL;
+
+ raptor_world_open(world);
+
+ sax2 = RAPTOR_CALLOC(raptor_sax2*, 1, sizeof(*sax2));
+ if(!sax2)
+ return NULL;
+
+#ifdef RAPTOR_XML_LIBXML
+ sax2->magic = RAPTOR_LIBXML_MAGIC;
+#endif
+
+ sax2->world = world;
+ sax2->locator = locator;
+ sax2->user_data = user_data;
+
+ sax2->enabled = 1;
+
+ raptor_object_options_init(&sax2->options, RAPTOR_OPTION_AREA_SAX2);
+
+ return sax2;
+}
+
+
+/**
+ * raptor_free_sax2:
+ * @sax2: SAX2 object
+ *
+ * Destructor - destroy a SAX2 object
+ */
+void
+raptor_free_sax2(raptor_sax2 *sax2)
+{
+ raptor_xml_element *xml_element;
+
+ if(!sax2)
+ return;
+
+#ifdef RAPTOR_XML_LIBXML
+ if(sax2->xc) {
+ raptor_libxml_free(sax2->xc);
+ sax2->xc = NULL;
+ }
+#endif
+
+ while( (xml_element = raptor_xml_element_pop(sax2)) )
+ raptor_free_xml_element(xml_element);
+
+ raptor_namespaces_clear(&sax2->namespaces);
+
+ if(sax2->base_uri)
+ raptor_free_uri(sax2->base_uri);
+
+ raptor_object_options_clear(&sax2->options);
+
+ RAPTOR_FREE(raptor_sax2, sax2);
+}
+
+
+/**
+ * raptor_sax2_set_start_element_handler:
+ * @sax2: SAX2 object
+ * @handler: start element handler
+ *
+ * Set SAX2 start element handler.
+ */
+void
+raptor_sax2_set_start_element_handler(raptor_sax2* sax2,
+ raptor_sax2_start_element_handler handler)
+{
+ sax2->start_element_handler = handler;
+}
+
+
+/**
+ * raptor_sax2_set_end_element_handler:
+ * @sax2: SAX2 object
+ * @handler: end element handler
+ *
+ * Set SAX2 end element handler.
+ */
+void
+raptor_sax2_set_end_element_handler(raptor_sax2* sax2,
+ raptor_sax2_end_element_handler handler)
+{
+ sax2->end_element_handler = handler;
+}
+
+
+/**
+ * raptor_sax2_set_characters_handler:
+ * @sax2: SAX2 object
+ * @handler: characters handler
+ *
+ * Set SAX2 characters handler.
+ */
+void
+raptor_sax2_set_characters_handler(raptor_sax2* sax2,
+ raptor_sax2_characters_handler handler)
+{
+ sax2->characters_handler = handler;
+}
+
+
+/**
+ * raptor_sax2_set_cdata_handler:
+ * @sax2: SAX2 object
+ * @handler: CDATA handler
+ *
+ * Set SAX2 CDATA handler.
+ */
+void
+raptor_sax2_set_cdata_handler(raptor_sax2* sax2,
+ raptor_sax2_cdata_handler handler)
+{
+ sax2->cdata_handler = handler;
+}
+
+
+/**
+ * raptor_sax2_set_comment_handler:
+ * @sax2: SAX2 object
+ * @handler: comment handler
+ *
+ * Set SAX2 XML comment handler.
+ */
+void
+raptor_sax2_set_comment_handler(raptor_sax2* sax2,
+ raptor_sax2_comment_handler handler)
+{
+ sax2->comment_handler = handler;
+}
+
+
+/**
+ * raptor_sax2_set_unparsed_entity_decl_handler:
+ * @sax2: SAX2 object
+ * @handler: unparsed entity declaration handler
+ *
+ * Set SAX2 XML unparsed entity declaration handler.
+ */
+void
+raptor_sax2_set_unparsed_entity_decl_handler(raptor_sax2* sax2,
+ raptor_sax2_unparsed_entity_decl_handler handler)
+{
+ sax2->unparsed_entity_decl_handler = handler;
+}
+
+
+/**
+ * raptor_sax2_set_external_entity_ref_handler:
+ * @sax2: SAX2 object
+ * @handler: entity reference handler
+ *
+ * Set SAX2 XML entity reference handler.
+ */
+void
+raptor_sax2_set_external_entity_ref_handler(raptor_sax2* sax2,
+ raptor_sax2_external_entity_ref_handler handler)
+{
+ sax2->external_entity_ref_handler = handler;
+}
+
+
+/**
+ * raptor_sax2_set_namespace_handler:
+ * @sax2: #raptor_sax2 object
+ * @handler: new namespace callback function
+ *
+ * Set the XML namespace handler function.
+ *
+ * When a prefix/namespace is seen in an XML parser, call the given
+ * @handler with the prefix string and the #raptor_uri namespace URI.
+ * Either can be NULL for the default prefix or default namespace.
+ *
+ * The handler function does not deal with duplicates so any
+ * namespace may be declared multiple times when a namespace is seen
+ * in different parts of a document.
+ *
+ */
+void
+raptor_sax2_set_namespace_handler(raptor_sax2* sax2,
+ raptor_namespace_handler handler)
+{
+ sax2->namespace_handler = handler;
+}
+
+
+raptor_xml_element*
+raptor_xml_element_pop(raptor_sax2 *sax2)
+{
+ raptor_xml_element *element = sax2->current_element;
+
+ if(!element)
+ return NULL;
+
+ sax2->current_element = element->parent;
+ if(sax2->root_element == element) /* just deleted root */
+ sax2->root_element = NULL;
+
+ return element;
+}
+
+
+void
+raptor_xml_element_push(raptor_sax2 *sax2, raptor_xml_element* element)
+{
+ element->parent = sax2->current_element;
+ sax2->current_element = element;
+ if(!sax2->root_element)
+ sax2->root_element = element;
+}
+
+
+/**
+ * raptor_xml_element_is_empty:
+ * @xml_element: XML Element
+ *
+ * Check if an XML Element is empty.
+ *
+ * Return value: non-0 if the element is empty.
+ */
+int
+raptor_xml_element_is_empty(raptor_xml_element* xml_element)
+{
+ return !xml_element->content_cdata_seen &&
+ !xml_element->content_element_seen;
+}
+
+
+/**
+ * raptor_sax2_inscope_xml_language:
+ * @sax2: SAX2 object
+ *
+ * Get the in-scope XML language
+ *
+ * The result is a language string which may be "" if xml:lang="" is
+ * given. NULL is returned only if there is no xml:lang in any outer
+ * scope.
+ *
+ * Return value: shared pointer to the XML language or NULL if none is in scope.
+ */
+const unsigned char*
+raptor_sax2_inscope_xml_language(raptor_sax2 *sax2)
+{
+ raptor_xml_element* xml_element;
+
+ for(xml_element = sax2->current_element;
+ xml_element;
+ xml_element = xml_element->parent) {
+ if(xml_element->xml_language)
+ return xml_element->xml_language;
+ }
+
+ return NULL;
+}
+
+
+/**
+ * raptor_sax2_inscope_base_uri:
+ * @sax2: SAX2 object
+ *
+ * Get the in-scope base URI
+ *
+ * Return value: the in-scope base URI shared object or NULL if none is in scope.
+ */
+raptor_uri*
+raptor_sax2_inscope_base_uri(raptor_sax2 *sax2)
+{
+ raptor_xml_element *xml_element;
+
+ for(xml_element = sax2->current_element;
+ xml_element;
+ xml_element = xml_element->parent)
+ if(xml_element->base_uri)
+ return xml_element->base_uri;
+
+ return sax2->base_uri;
+}
+
+
+/**
+ * raptor_sax2_set_uri_filter:
+ * @sax2: SAX2 object
+ * @filter: URI filter function
+ * @user_data: User data to pass to filter function
+ *
+ * Set URI filter function for SAX2 internal retrievals.
+ **/
+void
+raptor_sax2_set_uri_filter(raptor_sax2* sax2,
+ raptor_uri_filter_func filter,
+ void *user_data)
+{
+ sax2->uri_filter = filter;
+ sax2->uri_filter_user_data = user_data;
+}
+
+
+int
+raptor_sax2_get_depth(raptor_sax2 *sax2)
+{
+ return sax2->depth;
+}
+
+void
+raptor_sax2_inc_depth(raptor_sax2 *sax2)
+{
+ sax2->depth++;
+}
+
+void
+raptor_sax2_dec_depth(raptor_sax2 *sax2)
+{
+ sax2->depth--;
+}
+
+
+static void raptor_sax2_simple_error(void* user_data, const char *message, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+
+/*
+ * raptor_sax2_simple_error - Error from a sax2 - Internal
+ *
+ * Matches the raptor_simple_message_handler API but calls
+ * the sax2 error_handler
+ */
+static void
+raptor_sax2_simple_error(void* user_data, const char *message, ...)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ va_list arguments;
+
+ va_start(arguments, message);
+
+ if(sax2) {
+ raptor_log_error_varargs(sax2->world,
+ RAPTOR_LOG_LEVEL_ERROR,
+ sax2->locator,
+ message, arguments);
+ }
+
+ va_end(arguments);
+}
+
+
+
+/**
+ * raptor_sax2_parse_start:
+ * @sax2: sax2 object
+ * @base_uri: base URI
+ *
+ * Start an XML SAX2 parse.
+ */
+void
+raptor_sax2_parse_start(raptor_sax2* sax2, raptor_uri *base_uri)
+{
+ sax2->depth = 0;
+ sax2->root_element = NULL;
+ sax2->current_element = NULL;
+
+ if(sax2->base_uri)
+ raptor_free_uri(sax2->base_uri);
+ if(base_uri)
+ sax2->base_uri = raptor_uri_copy(base_uri);
+ else
+ sax2->base_uri = NULL;
+
+#ifdef RAPTOR_XML_LIBXML
+ raptor_libxml_sax_init(sax2);
+
+#if LIBXML_VERSION < 20425
+ sax2->first_read = 1;
+#endif
+
+ if(sax2->xc) {
+ raptor_libxml_free(sax2->xc);
+ sax2->xc = NULL;
+ }
+#endif
+
+ raptor_namespaces_clear(&sax2->namespaces);
+
+ if(raptor_namespaces_init(sax2->world, &sax2->namespaces, 1)) {
+ /* log a fatal error and set sax2 to failed state
+ since the function signature does not currently support returning an error */
+ raptor_log_error(sax2->world, RAPTOR_LOG_LEVEL_FATAL, sax2->locator,
+ "raptor_namespaces_init() failed");
+ sax2->failed = 1;
+ }
+}
+
+
+/**
+ * raptor_sax2_parse_chunk:
+ * @sax2: sax2 object
+ * @buffer: input buffer
+ * @len: input buffer lenght
+ * @is_end: non-0 if end of data
+ *
+ * Parse a chunk of XML data generating SAX2 events
+ *
+ * Return value: non-0 on failure
+ */
+int
+raptor_sax2_parse_chunk(raptor_sax2* sax2, const unsigned char *buffer,
+ size_t len, int is_end)
+{
+#ifdef RAPTOR_XML_LIBXML
+ /* parser context */
+ xmlParserCtxtPtr xc = sax2->xc;
+ int rc;
+
+ if(!xc) {
+ int libxml_options = 0;
+
+ if(!len) {
+ /* no data given at all */
+ raptor_sax2_update_document_locator(sax2, sax2->locator);
+ raptor_log_error(sax2->world, RAPTOR_LOG_LEVEL_ERROR, sax2->locator,
+ "XML Parsing failed - no element found");
+ return 1;
+ }
+
+ xc = xmlCreatePushParserCtxt(&sax2->sax, sax2, /* user data */
+ (char*)buffer, RAPTOR_BAD_CAST(int, len),
+ NULL);
+ if(!xc)
+ goto handle_error;
+
+#ifdef RAPTOR_LIBXML_XML_PARSE_NONET
+ if(RAPTOR_OPTIONS_GET_NUMERIC(sax2, RAPTOR_OPTION_NO_NET))
+ libxml_options |= XML_PARSE_NONET;
+#endif
+#ifdef HAVE_XMLCTXTUSEOPTIONS
+ xmlCtxtUseOptions(xc, libxml_options);
+#endif
+
+ xc->userData = sax2; /* user data */
+ xc->vctxt.userData = sax2; /* user data */
+ xc->vctxt.error = (xmlValidityErrorFunc)raptor_libxml_validation_error;
+ xc->vctxt.warning = (xmlValidityWarningFunc)raptor_libxml_validation_warning;
+ xc->replaceEntities = 1;
+
+ sax2->xc = xc;
+
+ if(is_end)
+ len = 0;
+ else
+ return 0;
+ }
+
+ if(!len) {
+ rc = xmlParseChunk(xc, (char*)buffer, 0, 1);
+ return rc;
+ }
+
+
+ /* This works around some libxml versions that fail to work
+ * if the buffer size is larger than the entire file
+ * and thus the entire parsing is done in one operation.
+ *
+ * The code below:
+ * 2.4.19 (oldest tested) to 2.4.24 - required
+ * 2.4.25 - works with or without it
+ * 2.4.26 or later - fails with this code
+ */
+
+#if LIBXML_VERSION < 20425
+ if(sax2->first_read && is_end) {
+ /* parse all but the last character */
+ rc = xmlParseChunk(xc, (char*)buffer, len-1, 0);
+ if(rc && rc != XML_WAR_UNDECLARED_ENTITY)
+ goto handle_error;
+ /* last character */
+ rc = xmlParseChunk(xc, (char*)buffer + (len-1), 1, 0);
+ if(rc && rc != XML_WAR_UNDECLARED_ENTITY)
+ goto handle_error;
+ /* end */
+ xmlParseChunk(xc, (char*)buffer, 0, 1);
+ return 0;
+ }
+#endif
+
+#if LIBXML_VERSION < 20425
+ sax2->first_read = 0;
+#endif
+
+ rc = xmlParseChunk(xc, (char*)buffer, RAPTOR_BAD_CAST(int, len), is_end);
+ if(rc && rc != XML_WAR_UNDECLARED_ENTITY) /* libxml: non 0 is failure */
+ goto handle_error;
+ if(is_end)
+ return 0;
+
+ return rc;
+
+ handle_error:
+#endif
+
+ return 1;
+}
+
+
+/**
+ * raptor_sax2_set_option:
+ * @sax2: #raptor_sax2 SAX2 object
+ * @option: option to set from enumerated #raptor_option values
+ * @string: string option value (or NULL)
+ * @integer: integer option value
+ *
+ * Set SAX2 option.
+ *
+ * If @string is not NULL and the option type is numeric, the string
+ * value is converted to an integer and used in preference to @integer.
+ *
+ * If @string is NULL and the option type is not numeric, an error is
+ * returned.
+ *
+ * The @string values used are copied.
+ *
+ * The allowed options are available via
+ * raptor_world_get_option_description().
+ *
+ * Return value: non 0 on failure or if the option is unknown
+ */
+int
+raptor_sax2_set_option(raptor_sax2 *sax2, raptor_option option,
+ char* string, int integer)
+{
+ return raptor_object_options_set_option(&sax2->options, option,
+ string, integer);
+}
+
+
+void
+raptor_sax2_update_document_locator(raptor_sax2* sax2,
+ raptor_locator* locator)
+{
+#ifdef RAPTOR_XML_LIBXML
+ raptor_libxml_update_document_locator(sax2, locator);
+#endif
+}
+
+
+/* start of an element */
+void
+raptor_sax2_start_element(void* user_data, const unsigned char *name,
+ const unsigned char **atts)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ raptor_qname* el_name;
+ unsigned char **xml_atts_copy = NULL;
+ size_t xml_atts_size = 0;
+ int all_atts_count = 0;
+ int ns_attributes_count = 0;
+ raptor_qname** named_attrs = NULL;
+ raptor_xml_element* xml_element = NULL;
+ unsigned char *xml_language = NULL;
+ raptor_uri *xml_base = NULL;
+
+ if(sax2->failed || !sax2->enabled)
+ return;
+
+#ifdef RAPTOR_XML_LIBXML
+ if(atts) {
+ int i;
+
+ /* Do XML attribute value normalization */
+ for(i = 0; atts[i]; i += 2) {
+ unsigned char *value = (unsigned char*)atts[i+1];
+ unsigned char *src = value;
+ unsigned char *dst = xmlStrdup(value);
+
+ if(!dst) {
+ raptor_log_error(sax2->world, RAPTOR_LOG_LEVEL_FATAL,
+ sax2->locator, "Out of memory");
+ return;
+ }
+
+ atts[i+1] = dst;
+
+ while(*src == 0x20 || *src == 0x0d || *src == 0x0a || *src == 0x09)
+ src++;
+ while(*src) {
+ if(*src == 0x20 || *src == 0x0d || *src == 0x0a || *src == 0x09) {
+ while(*src == 0x20 || *src == 0x0d || *src == 0x0a || *src == 0x09)
+ src++;
+ if(*src)
+ *dst++ = 0x20;
+ } else {
+ *dst++ = *src++;
+ }
+ }
+ *dst = '\0';
+ xmlFree(value);
+ }
+ }
+#endif
+
+ raptor_sax2_inc_depth(sax2);
+
+ if(atts) {
+ int i;
+
+ /* Save passed in XML attributes pointers so we can
+ * NULL the pointers when they get handled below (various atts[i]=NULL)
+ */
+ for(i = 0; atts[i]; i++) ;
+ xml_atts_size = sizeof(unsigned char*) * i;
+ if(xml_atts_size) {
+ xml_atts_copy = RAPTOR_MALLOC(unsigned char**, xml_atts_size);
+ if(!xml_atts_copy)
+ goto fail;
+ memcpy(xml_atts_copy, atts, xml_atts_size);
+ }
+
+ /* XML attributes processing:
+ * xmlns* - XML namespaces (Namespaces in XML REC)
+ * Deleted and used to synthesise namespaces declarations
+ * xml:lang - XML language (XML REC)
+ * Deleted and optionally normalised to lowercase
+ * xml:base - XML Base (XML Base REC)
+ * Deleted and used to set the in-scope base URI for this XML element
+ */
+ for(i = 0; atts[i]; i+= 2) {
+ all_atts_count++;
+
+ if(strncmp((char*)atts[i], "xml", 3)) {
+ /* count and skip non xml* attributes */
+ ns_attributes_count++;
+ continue;
+ }
+
+ /* synthesise the XML namespace events */
+ if(!memcmp((const char*)atts[i], "xmlns", 5)) {
+ const unsigned char *prefix = atts[i][5] ? &atts[i][6] : NULL;
+ const unsigned char *namespace_name = atts[i+1];
+
+ raptor_namespace* nspace;
+ nspace = raptor_new_namespace(&sax2->namespaces,
+ prefix, namespace_name,
+ raptor_sax2_get_depth(sax2));
+
+ if(nspace) {
+ raptor_namespaces_start_namespace(&sax2->namespaces, nspace);
+
+ if(sax2->namespace_handler)
+ (*sax2->namespace_handler)(sax2->user_data, nspace);
+ }
+ } else if(!strcmp((char*)atts[i], "xml:lang")) {
+ size_t lang_len = strlen((char*)atts[i+1]);
+ xml_language = RAPTOR_MALLOC(unsigned char*, lang_len + 1);
+ if(!xml_language) {
+ raptor_log_error(sax2->world, RAPTOR_LOG_LEVEL_FATAL,
+ sax2->locator, "Out of memory");
+ goto fail;
+ }
+
+ /* optionally normalize language to lowercase */
+ if(RAPTOR_OPTIONS_GET_NUMERIC(sax2, RAPTOR_OPTION_NORMALIZE_LANGUAGE)) {
+ unsigned char *from = (unsigned char*)atts[i+1];
+ unsigned char *to = xml_language;
+
+ while(*from) {
+ if(isupper(*from))
+ *to++ = tolower(*from++);
+ else
+ *to++ = *from++;
+ }
+ *to = '\0';
+ } else
+ memcpy(xml_language, atts[i+1], lang_len + 1); /* Copy NUL */
+ } else if(!strcmp((char*)atts[i], "xml:base")) {
+ raptor_uri* base_uri;
+ raptor_uri* xuri;
+ base_uri = raptor_sax2_inscope_base_uri(sax2);
+ xuri = raptor_new_uri_relative_to_base(sax2->world, base_uri, atts[i+1]);
+ xml_base = raptor_new_uri_for_xmlbase(xuri);
+ raptor_free_uri(xuri);
+ }
+
+ /* delete all xml attributes whether processed above or not */
+ atts[i] = NULL;
+ }
+ }
+
+
+ /* Create new element structure */
+ el_name = raptor_new_qname(&sax2->namespaces, name, NULL);
+ if(!el_name)
+ goto fail;
+
+ xml_element = raptor_new_xml_element(el_name, xml_language, xml_base);
+ if(!xml_element) {
+ raptor_free_qname(el_name);
+ goto fail;
+ }
+ /* xml_language,xml_base now owned by xml_element */
+ xml_language = NULL;
+ xml_base = NULL;
+
+ /* Turn string attributes into namespaced-attributes */
+ if(ns_attributes_count) {
+ int i;
+ int offset = 0;
+
+ /* Allocate new array to hold namespaced-attributes */
+ named_attrs = RAPTOR_CALLOC(raptor_qname**, ns_attributes_count,
+ sizeof(raptor_qname*));
+ if(!named_attrs) {
+ raptor_log_error(sax2->world, RAPTOR_LOG_LEVEL_FATAL,
+ sax2->locator, "Out of memory");
+ goto fail;
+ }
+
+ for(i = 0; i < all_atts_count; i++) {
+ raptor_qname* attr;
+
+ /* Skip previously processed attributes */
+ if(!atts[i<<1])
+ continue;
+
+ /* namespace-name[i] stored in named_attrs[i] */
+ attr = raptor_new_qname(&sax2->namespaces, atts[i<<1], atts[(i<<1)+1]);
+ if(!attr) { /* failed - tidy up and return */
+ int j;
+
+ for(j = 0; j < i; j++)
+ RAPTOR_FREE(raptor_qname, named_attrs[j]);
+ RAPTOR_FREE(raptor_qname_array, named_attrs);
+ goto fail;
+ }
+
+ named_attrs[offset++] = attr;
+ }
+ } /* end if ns_attributes_count */
+
+
+ if(named_attrs)
+ raptor_xml_element_set_attributes(xml_element,
+ named_attrs, ns_attributes_count);
+
+ raptor_xml_element_push(sax2, xml_element);
+
+ if(sax2->start_element_handler)
+ sax2->start_element_handler(sax2->user_data, xml_element);
+
+ if(xml_atts_copy) {
+ /* Restore passed in XML attributes, free the copy */
+ memcpy((void*)atts, xml_atts_copy, xml_atts_size);
+ RAPTOR_FREE(cstringpointer, xml_atts_copy);
+ }
+
+ return;
+
+ fail:
+ if(xml_atts_copy)
+ RAPTOR_FREE(cstringpointer, xml_atts_copy);
+ if(xml_base)
+ raptor_free_uri(xml_base);
+ if(xml_language)
+ RAPTOR_FREE(char*, xml_language);
+ if(xml_element)
+ raptor_free_xml_element(xml_element);
+}
+
+
+/* end of an element */
+void
+raptor_sax2_end_element(void* user_data, const unsigned char *name)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+ raptor_xml_element* xml_element;
+
+ if(sax2->failed || !sax2->enabled)
+ return;
+
+ xml_element = sax2->current_element;
+ if(xml_element) {
+#ifdef RAPTOR_DEBUG_VERBOSE
+ fprintf(stderr, "\nraptor_rdfxml_end_element_handler: End ns-element: ");
+ raptor_qname_print(stderr, xml_element->name);
+ fputc('\n', stderr);
+#endif
+
+ if(sax2->end_element_handler)
+ sax2->end_element_handler(sax2->user_data, xml_element);
+ }
+
+ raptor_namespaces_end_for_depth(&sax2->namespaces,
+ raptor_sax2_get_depth(sax2));
+ xml_element = raptor_xml_element_pop(sax2);
+ if(xml_element)
+ raptor_free_xml_element(xml_element);
+
+ raptor_sax2_dec_depth(sax2);
+}
+
+
+
+
+/* characters */
+void
+raptor_sax2_characters(void* user_data, const unsigned char *s, int len)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+
+ if(sax2->failed || !sax2->enabled)
+ return;
+
+ if(sax2->characters_handler)
+ sax2->characters_handler(sax2->user_data, sax2->current_element, s, len);
+}
+
+
+/* like <![CDATA[...]> */
+void
+raptor_sax2_cdata(void* user_data, const unsigned char *s, int len)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+
+ if(sax2->failed || !sax2->enabled)
+ return;
+
+ if(sax2->cdata_handler)
+ sax2->cdata_handler(sax2->user_data, sax2->current_element, s, len);
+}
+
+
+/* comment */
+void
+raptor_sax2_comment(void* user_data, const unsigned char *s)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+
+ if(sax2->failed || !sax2->enabled)
+ return;
+
+ if(sax2->comment_handler)
+ sax2->comment_handler(sax2->user_data, sax2->current_element, s);
+}
+
+
+/* unparsed (NDATA) entity */
+void
+raptor_sax2_unparsed_entity_decl(void* user_data,
+ const unsigned char* entityName,
+ const unsigned char* base,
+ const unsigned char* systemId,
+ const unsigned char* publicId,
+ const unsigned char* notationName)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+
+ if(sax2->failed || !sax2->enabled)
+ return;
+
+ if(sax2->unparsed_entity_decl_handler)
+ sax2->unparsed_entity_decl_handler(sax2->user_data,
+ entityName, base, systemId,
+ publicId, notationName);
+}
+
+
+/* external entity reference */
+int
+raptor_sax2_external_entity_ref(void* user_data,
+ const unsigned char* context,
+ const unsigned char* base,
+ const unsigned char* systemId,
+ const unsigned char* publicId)
+{
+ raptor_sax2* sax2 = (raptor_sax2*)user_data;
+
+ if(sax2->failed || !sax2->enabled)
+ return 0;
+
+ if(sax2->external_entity_ref_handler)
+ return sax2->external_entity_ref_handler(sax2->user_data,
+ context, base, systemId, publicId);
+
+ raptor_sax2_simple_error((void*)sax2,
+ "Failed to handle external entity reference with base %s systemId %s publicId %s",
+ (base ? (const char*)base : "(None)"),
+ systemId,
+ (publicId ? (const char*)publicId: "(None)"));
+
+ /* Failed to handle external entity reference */
+ return 0;
+}
+
+
+/**
+ * raptor_sax2_check_load_uri_string:
+ * @sax2: SAX2 object
+ * @uri_string: URI or file URI or file name string
+ *
+ * INTERNAL - Check URI loading policy
+ *
+ * Return value: > 0 if it is OK to load the URI, 0 if not, < 0 on failure
+*/
+int
+raptor_sax2_check_load_uri_string(raptor_sax2* sax2,
+ const unsigned char* uri_string)
+{
+ raptor_uri* abs_uri;
+ const unsigned char* abs_uri_string;
+ int abs_uri_is_file;
+ int load_uri = 0;
+
+ abs_uri = raptor_new_uri_from_uri_or_file_string(sax2->world, sax2->base_uri,
+ uri_string);
+ if(!abs_uri)
+ return -1;
+
+ abs_uri_string = raptor_uri_as_string(abs_uri);
+
+ abs_uri_is_file = raptor_uri_uri_string_is_file_uri(abs_uri_string);
+ if(abs_uri_is_file)
+ load_uri = !RAPTOR_OPTIONS_GET_NUMERIC(sax2, RAPTOR_OPTION_NO_FILE);
+ else
+ load_uri = !RAPTOR_OPTIONS_GET_NUMERIC(sax2, RAPTOR_OPTION_NO_NET);
+
+ if(sax2->uri_filter) {
+ int rc = sax2->uri_filter(sax2->uri_filter_user_data, abs_uri);
+ if(rc)
+ load_uri = 0;
+ }
+
+ RAPTOR_DEBUG4("URI '%s' Is a file? %s Load URI? %s\n", abs_uri_string,
+ (abs_uri_is_file > 0) ? "YES" : "NO",
+ (load_uri > 0) ? "YES" : "NO");
+
+ raptor_free_uri(abs_uri);
+
+ return load_uri;
+}
diff --git a/src/raptor_sequence.c b/src/raptor_sequence.c
new file mode 100644
index 0000000..790e802
--- /dev/null
+++ b/src/raptor_sequence.c
@@ -0,0 +1,873 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_sequence.c - Raptor sequence support
+ *
+ * Copyright (C) 2003-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/* POLICY - minimum size */
+#define RAPTOR_SEQUENCE_MIN_CAPACITY 8
+
+
+#ifndef STANDALONE
+
+/*
+ * Sequence of maximum capacity C containing N data items
+ *
+ * array:
+ * 0 <-- N consecutive items --> C - 1
+ * -----------------------------------------------------------
+ * | | | data1 | ..... data N | ... | |
+ * -----------------------------------------------------------
+ * ------ O -----> offset of first data item
+ *
+ * start = O
+ * size = N
+ * capacity = C
+ *
+ */
+struct raptor_sequence_s {
+ /* how many items are in the sequence 0..capacity */
+ int size;
+
+ /* length of the 'sequence' array below */
+ int capacity;
+
+ /* offset of the first data item in the sequence: 0..capacity-1 */
+ int start;
+
+ /* array of size 'capacity' pointing to the data */
+ void **sequence;
+
+
+ /* handler to call to free a data item (or NULL) */
+ raptor_data_free_handler free_handler;
+
+ /* handler to call to print a data item (or NULL) */
+ raptor_data_print_handler print_handler;
+
+
+ /* context pointer for @context_free_handler and @context_print_handler */
+ void *handler_context;
+
+ /* handler to call to free a data item (or NULL) also passing in
+ * as first arg the @handler_context */
+ raptor_data_context_free_handler context_free_handler;
+
+ /* handler to call to print a data item (or NULL) also passing in
+ * as first arg the @handler_context
+ */
+ raptor_data_context_print_handler context_print_handler;
+};
+
+
+static int raptor_sequence_ensure(raptor_sequence *seq, int capacity, int grow_at_front);
+
+
+/**
+ * raptor_new_sequence:
+ * @free_handler: handler to free a sequence item
+ * @print_handler: handler to print a sequence item to a FILE*
+ *
+ * Constructor - create a new sequence with the given handlers.
+ *
+ * This creates a sequence over objects that need only the item data
+ * pointers in order to print or free the objects.
+ *
+ * For example sequences of strings could use handlers (free, NULL)
+ * and sequences of #raptor_uri could use (raptor_free_uri,
+ * raptor_print_uri)
+ *
+ * Return value: a new #raptor_sequence or NULL on failure
+ **/
+raptor_sequence*
+raptor_new_sequence(raptor_data_free_handler free_handler,
+ raptor_data_print_handler print_handler)
+{
+ raptor_sequence* seq = RAPTOR_CALLOC(raptor_sequence*, 1, sizeof(*seq));
+ if(!seq)
+ return NULL;
+
+ seq->free_handler = free_handler;
+ seq->print_handler = print_handler;
+
+ return seq;
+}
+
+
+/**
+ * raptor_new_sequence_with_context:
+ * @free_handler: handler to free a sequence item
+ * @print_handler: handler to print a sequence item to a FILE*
+ * @handler_context: context information to pass to free/print handlers
+ *
+ * Constructor - create a new sequence with the given handlers and handler context.
+ *
+ * This creates a sequence over objects that need context + item data
+ * pointers in order to print or free the objects.
+ *
+ * Return value: a new #raptor_sequence or NULL on failure
+ **/
+raptor_sequence*
+raptor_new_sequence_with_context(raptor_data_context_free_handler free_handler,
+ raptor_data_context_print_handler print_handler,
+ void *handler_context)
+{
+ raptor_sequence* seq = RAPTOR_CALLOC(raptor_sequence*, 1, sizeof(*seq));
+ if(!seq)
+ return NULL;
+
+ seq->context_free_handler = free_handler;
+ seq->context_print_handler = print_handler;
+ seq->handler_context = handler_context;
+
+ return seq;
+}
+
+
+/**
+ * raptor_free_sequence:
+ * @seq: sequence to destroy
+ *
+ * Destructor - free a #raptor_sequence
+ **/
+void
+raptor_free_sequence(raptor_sequence* seq)
+{
+ int i;
+ int j;
+
+ if(!seq)
+ return;
+
+ if(seq->free_handler) {
+ for(i = seq->start, j = seq->start + seq->size; i < j; i++)
+ if(seq->sequence[i])
+ seq->free_handler(seq->sequence[i]);
+ } else if(seq->context_free_handler) {
+ for(i = seq->start, j = seq->start + seq->size; i < j; i++)
+ if(seq->sequence[i])
+ seq->context_free_handler(seq->handler_context, seq->sequence[i]);
+ }
+
+ if(seq->sequence)
+ RAPTOR_FREE(ptrarray, seq->sequence);
+
+ RAPTOR_FREE(raptor_sequence, seq);
+}
+
+
+static int
+raptor_sequence_ensure(raptor_sequence *seq, int capacity, int grow_at_front)
+{
+ void **new_sequence;
+ int offset;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(seq, raptor_sequence, 1);
+
+ if(capacity && seq->capacity >= capacity)
+ return 0;
+
+ /* POLICY - minimum size */
+ if(capacity < RAPTOR_SEQUENCE_MIN_CAPACITY)
+ capacity = RAPTOR_SEQUENCE_MIN_CAPACITY;
+
+ new_sequence = RAPTOR_CALLOC(void**, capacity, sizeof(void*));
+ if(!new_sequence)
+ return 1;
+
+ offset = (grow_at_front ? (capacity - seq->capacity) : 0) + seq->start;
+ if(seq->size) {
+ memcpy(&new_sequence[offset], &seq->sequence[seq->start],
+ sizeof(void*) * seq->size);
+ RAPTOR_FREE(ptrarray, seq->sequence);
+ }
+ seq->start = offset;
+
+ seq->sequence = new_sequence;
+ seq->capacity = capacity;
+
+ return 0;
+}
+
+
+/**
+ * raptor_sequence_size:
+ * @seq: sequence object
+ *
+ * Get the number of items in a sequence.
+ *
+ * Return value: the sequence size (>=0)
+ **/
+int
+raptor_sequence_size(raptor_sequence* seq)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(seq, raptor_sequence, -1);
+
+ return seq->size;
+}
+
+
+/* Store methods */
+
+/**
+ * raptor_sequence_set_at:
+ * @seq: sequence object
+ * @idx: index into sequence to operate at
+ * @data: new data item.
+ *
+ * Replace/set an item in a sequence.
+ *
+ * The item at the offset @idx in the sequence is replaced with the
+ * new item @data (which may be NULL). Any existing item is freed
+ * with the sequence's free_handler. If necessary the sequence
+ * is extended (with NULLs) to handle a larger offset.
+ *
+ * The sequence takes ownership of the new data item. On failure, the
+ * item is freed immediately.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_sequence_set_at(raptor_sequence* seq, int idx, void *data)
+{
+ int need_capacity;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(seq, raptor_sequence, 1);
+
+ /* Cannot provide a negative index */
+ if(idx < 0) {
+ if(data) {
+ if(seq->free_handler)
+ seq->free_handler(data);
+ else if(seq->context_free_handler)
+ seq->context_free_handler(seq->handler_context, data);
+ }
+ return 1;
+ }
+
+ need_capacity = seq->start + idx + 1;
+ if(need_capacity > seq->capacity) {
+ if(seq->capacity * 2 > need_capacity)
+ need_capacity = seq->capacity * 2;
+
+ if(raptor_sequence_ensure(seq, need_capacity, 0)) {
+ if(data) {
+ if(seq->free_handler)
+ seq->free_handler(data);
+ else if(seq->context_free_handler)
+ seq->context_free_handler(seq->handler_context, data);
+ }
+ return 1;
+ }
+ }
+
+ if(idx < seq->size) {
+ /* if there is old data, delete it if there is a free handler */
+ if(seq->sequence[seq->start + idx]) {
+ if(seq->free_handler)
+ seq->free_handler(seq->sequence[seq->start + idx]);
+ else if(seq->context_free_handler)
+ seq->context_free_handler(seq->handler_context,
+ seq->sequence[seq->start + idx]);
+ }
+ /* size remains the same */
+ } else {
+ /* if there is no old data, size is increasing */
+ /* make sure there are seq->size items starting from seq->start */
+ seq->size = idx + 1;
+ }
+
+ seq->sequence[seq->start + idx] = data;
+
+ return 0;
+}
+
+
+
+/**
+ * raptor_sequence_push:
+ * @seq: sequence to add to
+ * @data: item to add
+ *
+ * Add an item to the end of the sequence.
+ *
+ * The sequence takes ownership of the pushed item and frees it with the
+ * free_handler. On failure, the item is freed immediately.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_sequence_push(raptor_sequence* seq, void *data)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(seq, raptor_sequence, 1);
+
+ if(seq->start + seq->size == seq->capacity) {
+ if(raptor_sequence_ensure(seq, seq->capacity * 2, 0)) {
+ if(data) {
+ if(seq->free_handler)
+ seq->free_handler(data);
+ else if(seq->context_free_handler)
+ seq->context_free_handler(seq->handler_context, data);
+ }
+ return 1;
+ }
+ }
+
+ seq->sequence[seq->start + seq->size] = data;
+ seq->size++;
+
+ return 0;
+}
+
+
+/**
+ * raptor_sequence_shift:
+ * @seq: sequence to add to
+ * @data: item to add
+ *
+ * Add an item to the start of the sequence.
+ *
+ * The sequence takes ownership of the shifted item and frees it with the
+ * free_handler. On failure, the item is freed immediately.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_sequence_shift(raptor_sequence* seq, void *data)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(seq, raptor_sequence, 1);
+
+ if(!seq->start) {
+ if(raptor_sequence_ensure(seq, seq->capacity * 2, 1)) {
+ if(data) {
+ if(seq->free_handler)
+ seq->free_handler(data);
+ else if(seq->context_free_handler)
+ seq->context_free_handler(seq->handler_context, data);
+ }
+ return 1;
+ }
+ }
+
+ seq->sequence[--seq->start] = data;
+ seq->size++;
+
+ return 0;
+}
+
+
+/**
+ * raptor_sequence_get_at:
+ * @seq: sequence to use
+ * @idx: index of item to get
+ *
+ * Retrieve an item at offset @index in the sequence.
+ *
+ * This is efficient to perform. #raptor_sequence is optimised
+ * to append/remove from the end of the sequence.
+ *
+ * After this call the item is still owned by the sequence.
+ *
+ * Return value: the object or NULL if @index is out of range (0... sequence size - 1)
+ **/
+void*
+raptor_sequence_get_at(raptor_sequence* seq, int idx)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(seq, raptor_sequence, NULL);
+
+ if(idx < 0 || idx > seq->size - 1)
+ return NULL;
+
+ return seq->sequence[seq->start + idx];
+}
+
+
+/**
+ * raptor_sequence_delete_at:
+ * @seq: sequence object
+ * @idx: index into sequence to operate at
+ *
+ * Remove an item from a position a sequence, returning it
+ *
+ * The item at the offset @idx in the sequence is replaced with a
+ * NULL pointer and any existing item is returned. The caller
+ * owns the resulting item.
+ *
+ * Return value: NULL on failure
+ **/
+void*
+raptor_sequence_delete_at(raptor_sequence* seq, int idx)
+{
+ void* data;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(seq, raptor_sequence, NULL);
+
+ if(idx < 0 || idx > seq->size - 1)
+ return NULL;
+
+ data = seq->sequence[seq->start + idx];
+ seq->sequence[seq->start + idx] = NULL;
+
+ return data;
+}
+
+
+
+/**
+ * raptor_sequence_pop:
+ * @seq: sequence to use
+ *
+ * Retrieve the item at the end of the sequence.
+ *
+ * Ownership of the item is transferred to the caller,
+ * i.e. caller is responsible of freeing the item.
+ *
+ * Return value: the object or NULL if the sequence is empty
+ **/
+void*
+raptor_sequence_pop(raptor_sequence* seq)
+{
+ void *data;
+ int i;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(seq, raptor_sequence, NULL);
+
+ if(!seq->size)
+ return NULL;
+
+ seq->size--;
+ i = seq->start + seq->size;
+ data = seq->sequence[i];
+ seq->sequence[i] = NULL;
+
+ return data;
+}
+
+
+/**
+ * raptor_sequence_unshift:
+ * @seq: sequence to use
+ *
+ * Retrieve the item at the start of the sequence.
+ *
+ * Ownership of the item is transferred to the caller,
+ * i.e. caller is responsible of freeing the item.
+ *
+ * Return value: the object or NULL if the sequence is empty
+ **/
+void*
+raptor_sequence_unshift(raptor_sequence* seq)
+{
+ void *data;
+ int i;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(seq, raptor_sequence, NULL);
+
+ if(!seq->size)
+ return NULL;
+
+ i = seq->start++;
+ data = seq->sequence[i];
+ seq->size--;
+ seq->sequence[i] = NULL;
+
+ return data;
+}
+
+
+/**
+ * raptor_sequence_sort:
+ * @seq: sequence to sort
+ * @compare: comparison function
+ *
+ * Sort a sequence inline
+ *
+ * The comparison function @compare is compatible with that used for
+ * qsort() and provides the addresses of pointers to the data that
+ * must be dereferenced to get to the stored sequence data.
+ *
+ **/
+RAPTOR_EXTERN_C
+void
+raptor_sequence_sort(raptor_sequence* seq, raptor_data_compare_handler compare)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN(seq, raptor_sequence);
+
+ if(seq->size > 1)
+ qsort(&seq->sequence[seq->start], seq->size, sizeof(void*), compare);
+}
+
+
+
+/**
+ * raptor_sequence_print:
+ * @seq: sequence to sort
+ * @fh: file handle
+ *
+ * Print the sequence contents using the print_handler to print the data items.
+ *
+ * Return value: non-0 on failure
+ */
+int
+raptor_sequence_print(raptor_sequence* seq, FILE* fh)
+{
+ int rc = 0;
+ int i;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(seq, raptor_sequence, 1);
+
+ fputc('[', fh);
+ for(i = 0; i < seq->size; i++) {
+ if(i)
+ fputs(", ", fh);
+ if(seq->sequence[seq->start + i]) {
+ if(seq->print_handler)
+ seq->print_handler(seq->sequence[seq->start + i], fh);
+ else if(seq->context_print_handler)
+ seq->context_print_handler(seq->handler_context,
+ seq->sequence[seq->start + i], fh);
+ } else
+ fputs("(empty)", fh);
+ }
+ fputc(']', fh);
+
+ return rc;
+}
+
+
+/**
+ * raptor_sequence_join:
+ * @dest: #raptor_sequence destination sequence
+ * @src: #raptor_sequence source sequence
+ *
+ * Join two sequences moving all items from one sequence to the end of another.
+ *
+ * After this operation, sequence src will be empty (zero size) but
+ * will have the same item capacity as before.
+ *
+ * Return value: non-0 on failure
+ */
+int
+raptor_sequence_join(raptor_sequence* dest, raptor_sequence *src)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(dest, raptor_sequence, 1);
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(src, raptor_sequence, 1);
+
+ if(raptor_sequence_ensure(dest, dest->size + src->size, 0))
+ return 1;
+
+ memcpy(&dest->sequence[dest->start + dest->size], &src->sequence[src->start],
+ sizeof(void*) * src->size);
+ dest->size += src->size;
+
+ src->size = 0;
+
+ return 0;
+}
+
+
+/**
+ * raptor_sequence_swap:
+ * @seq: sequence
+ * @i: first data index
+ * @j: second data index
+ *
+ * Swap a pair of elements in a sequence
+ *
+ * Return value: non-0 if arguments are out of range
+ */
+int
+raptor_sequence_swap(raptor_sequence* seq, int i, int j)
+{
+ if(i < 0 || i >= seq->size || j < 0 || j >= seq->size)
+ return 1;
+
+ if(i != j) {
+ void* tmp = seq->sequence[i];
+ seq->sequence[i] = seq->sequence[j];
+ seq->sequence[j] = tmp;
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_sequence_reverse:
+ * @seq: sequence
+ * @start_index: starting index
+ * @length: number of elements to reverse
+ *
+ * Reverse a range of elements
+ *
+ * Return value: non-0 if arguments are out of range
+ */
+int
+raptor_sequence_reverse(raptor_sequence* seq, int start_index, int length)
+{
+ int end_index = start_index + length - 1;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(seq, raptor_sequence, 1);
+
+ if(end_index >= seq->size || start_index < 1 || length <= 1)
+ return 1;
+
+ while( (start_index != end_index) && (start_index != end_index + 1) ) {
+ raptor_sequence_swap(seq, start_index, end_index);
+ start_index++; end_index--;
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_sequence_next_permutation:
+ * @seq: int seq
+ * @compare: comparison function
+ *
+ * Get the next permutation of a sequence in lexicographic order
+ *
+ * Assumes the initial order of the items is lexicographically
+ * increasing. This function alters the order of the items until the
+ * last permuatation is done at which point the contents is reset to
+ * the intial order.
+ *
+ * Algorithm used is described in http://en.wikipedia.org/wiki/Permutation
+ *
+ * The comparison function @compare is compatible with that used for
+ * qsort() and provides the addresses of pointers to the data that
+ * must be dereferenced to get to the stored sequence data.
+ *
+ * Return value: non-0 at the last permutation
+ */
+RAPTOR_EXTERN_C
+int
+raptor_sequence_next_permutation(raptor_sequence *seq,
+ raptor_data_compare_handler compare)
+{
+ int k;
+ int l;
+ void* temp;
+
+ if(seq->size < 2)
+ return 1;
+
+ /* 1. Find the largest index k such that a[k] < a[k + 1]. If no such
+ * index exists, the permutation is the last permutation.
+ */
+ k = seq->size - 2;
+ while(k >= 0 && compare(seq->sequence[k], seq->sequence[k + 1]) >= 0)
+ k--;
+
+ if(k == -1) {
+ /* done - reset to starting order */
+ raptor_sequence_reverse(seq, 0, seq->size);
+ return 1;
+ }
+
+ /* 2. Find the largest index l such that a[k] < a[l]. Since k + 1
+ * is such an index, l is well defined and satisfies k < l.
+ */
+ l = seq->size - 1;
+ while( compare(seq->sequence[k], seq->sequence[l]) >= 0)
+ l--;
+
+ /* 3. Swap a[k] with a[l]. */
+#if 1
+ temp = seq->sequence[k];
+ seq->sequence[k] = seq->sequence[l];
+ seq->sequence[l] = temp;
+#else
+ raptor_sequence_swap(seq, k, l);
+#endif
+
+ /* 4. Reverse the sequence from a[k + 1] up to and including the
+ * final element a[n].
+ */
+ raptor_sequence_reverse(seq, k + 1, seq->size - (k + 1));
+
+ return 0;
+}
+
+
+#endif
+
+
+
+#ifdef STANDALONE
+#include <stdio.h>
+
+int main(int argc, char *argv[]);
+
+static int
+raptor_compare_strings(const void *a, const void *b)
+{
+ return strcmp(*(char**)a, *(char**)b);
+}
+
+static int
+raptor_sequence_print_string(void *data, FILE *fh)
+{
+ fputs((char*)data, fh);
+ return 0;
+}
+
+#define assert_match_string(function, expr, string) do { char *result = expr; if(strcmp(result, string)) { fprintf(stderr, "%s:" #function " failed - returned %s, expected %s\n", program, result, string); exit(1); } } while(0)
+#define assert_match_int(function, expr, value) do { int result = expr; if(result != value) { fprintf(stderr, "%s:" #function " failed - returned %d, expected %d\n", program, result, value); exit(1); } } while(0)
+
+int
+main(int argc, char *argv[])
+{
+ const char *program = raptor_basename(argv[0]);
+ raptor_sequence* seq1 = raptor_new_sequence(NULL, raptor_sequence_print_string);
+ raptor_sequence* seq2 = raptor_new_sequence(NULL, raptor_sequence_print_string);
+ char *s;
+ int i;
+
+ if(raptor_sequence_pop(seq1) || raptor_sequence_unshift(seq1)) {
+ fprintf(stderr, "%s: should not be able to pop/unshift from an empty sequence\n", program);
+ exit(1);
+ }
+
+ raptor_sequence_set_at(seq1, 0, (void*)"first");
+
+ raptor_sequence_push(seq1, (void*)"third");
+
+ raptor_sequence_shift(seq1, (void*)"second");
+
+ s = (char*)raptor_sequence_get_at(seq1, 0);
+ assert_match_string(raptor_sequence_get_at, s, "second");
+
+ s = (char*)raptor_sequence_get_at(seq1, 1);
+ assert_match_string(raptor_sequence_get_at, s, "first");
+
+ s = (char*)raptor_sequence_get_at(seq1, 2);
+ assert_match_string(raptor_sequence_get_at, s, "third");
+
+ assert_match_int(raptor_sequence_size, raptor_sequence_size(seq1), 3);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: sequence after additions: ", program);
+ raptor_sequence_print(seq1, stderr);
+ fputc('\n', stderr);
+#endif
+
+ /* now made alphabetical i.e. first, second, third */
+ raptor_sequence_sort(seq1, raptor_compare_strings);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: sequence after sort: ", program);
+ raptor_sequence_print(seq1, stderr);
+ fputc('\n', stderr);
+#endif
+
+ s = (char*)raptor_sequence_pop(seq1);
+ assert_match_string(raptor_sequence_get_at, s, "third");
+
+ assert_match_int(raptor_sequence_size, raptor_sequence_size(seq1), 2);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: sequence after pop: ", program);
+ raptor_sequence_print(seq1, stderr);
+ fputc('\n', stderr);
+#endif
+
+ s = (char*)raptor_sequence_unshift(seq1);
+ assert_match_string(raptor_sequence_get_at, s, "first");
+
+ assert_match_int(raptor_sequence_size, raptor_sequence_size(seq1), 1);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: sequence after unshift: ", program);
+ raptor_sequence_print(seq1, stderr);
+ fputc('\n', stderr);
+#endif
+
+ s = (char*)raptor_sequence_get_at(seq1, 0);
+ assert_match_string(raptor_sequence_get_at, s, "second");
+
+ raptor_sequence_push(seq2, (void*)"first.2");
+ if(raptor_sequence_join(seq2, seq1)) {
+ fprintf(stderr, "%s: raptor_sequence_join failed\n", program);
+ exit(1);
+ }
+
+ assert_match_int(raptor_sequence_size, raptor_sequence_size(seq1), 0);
+ assert_match_int(raptor_sequence_size, raptor_sequence_size(seq2), 2);
+
+ raptor_free_sequence(seq1);
+ raptor_free_sequence(seq2);
+
+ /* test sequence growing */
+
+ seq1 = raptor_new_sequence(NULL, raptor_sequence_print_string);
+ for(i = 0; i < 100; i++)
+ if(raptor_sequence_shift(seq1, (void*)"foo")) {
+ fprintf(stderr, "%s: raptor_sequence_shift failed\n", program);
+ exit(1);
+ }
+ assert_match_int(raptor_sequence_size, raptor_sequence_size(seq1), 100);
+ for(i = 0; i < 100; i++)
+ raptor_sequence_unshift(seq1);
+ assert_match_int(raptor_sequence_size, raptor_sequence_size(seq1), 0);
+ raptor_free_sequence(seq1);
+
+ seq1 = raptor_new_sequence(NULL, raptor_sequence_print_string);
+ for(i = 0; i < 100; i++)
+ if(raptor_sequence_push(seq1, (void*)"foo")) {
+ fprintf(stderr, "%s: raptor_sequence_push failed\n", program);
+ exit(1);
+ }
+ assert_match_int(raptor_sequence_size, raptor_sequence_size(seq1), 100);
+ for(i = 0; i < 100; i++)
+ raptor_sequence_pop(seq1);
+ assert_match_int(raptor_sequence_size, raptor_sequence_size(seq1), 0);
+ raptor_free_sequence(seq1);
+
+ return (0);
+}
+#endif
diff --git a/src/raptor_serialize.c b/src/raptor_serialize.c
new file mode 100644
index 0000000..3da0e77
--- /dev/null
+++ b/src/raptor_serialize.c
@@ -0,0 +1,773 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_serialize.c - Raptor Serializer API
+ *
+ * Copyright (C) 2004-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2004-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/* prototypes for helper functions */
+static raptor_serializer_factory* raptor_get_serializer_factory(raptor_world* world, const char *name);
+
+
+/* helper methods */
+
+static void
+raptor_free_serializer_factory(raptor_serializer_factory* factory)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN(factory, raptor_serializer_factory);
+
+ if(factory->finish_factory)
+ factory->finish_factory(factory);
+
+ RAPTOR_FREE(raptor_serializer_factory, factory);
+}
+
+
+/* class methods */
+
+int
+raptor_serializers_init(raptor_world* world)
+{
+ int rc = 0;
+
+ world->serializers = raptor_new_sequence((raptor_data_free_handler)raptor_free_serializer_factory, NULL);
+ if(!world->serializers)
+ return 1;
+
+#ifdef RAPTOR_SERIALIZER_NTRIPLES
+ rc += raptor_init_serializer_ntriples(world) != 0;
+#endif
+
+#ifdef RAPTOR_SERIALIZER_TURTLE
+ rc += raptor_init_serializer_turtle(world) != 0;
+#endif
+
+#ifdef RAPTOR_SERIALIZER_RDFXML_ABBREV
+ rc += raptor_init_serializer_rdfxmla(world) != 0;
+#endif
+
+#ifdef RAPTOR_SERIALIZER_RDFXML
+ rc += raptor_init_serializer_rdfxml(world) != 0;
+#endif
+
+#ifdef RAPTOR_SERIALIZER_RSS_1_0
+ rc += raptor_init_serializer_rss10(world) != 0;
+#endif
+
+#ifdef RAPTOR_SERIALIZER_ATOM
+ rc += raptor_init_serializer_atom(world) != 0;
+#endif
+
+#ifdef RAPTOR_SERIALIZER_DOT
+ rc += raptor_init_serializer_dot(world) != 0;
+#endif
+
+#ifdef RAPTOR_SERIALIZER_JSON
+ rc += raptor_init_serializer_json(world) != 0;
+#endif
+
+#ifdef RAPTOR_SERIALIZER_HTML
+ rc += raptor_init_serializer_html(world) != 0;
+#endif
+
+#ifdef RAPTOR_SERIALIZER_NQUADS
+ rc += raptor_init_serializer_nquads(world) != 0;
+#endif
+
+ return rc;
+}
+
+
+/*
+ * raptor_serializers_finish - delete all the registered serializers
+ */
+void
+raptor_serializers_finish(raptor_world* world)
+{
+ if(world->serializers) {
+ raptor_free_sequence(world->serializers);
+ world->serializers = NULL;
+ }
+}
+
+
+/*
+ * raptor_serializer_register_factory:
+ * @world: raptor_world object
+ * @name: the short syntax name
+ * @label: readable label for syntax
+ * @mime_type: MIME type of the syntax generated by the serializer (or NULL)
+ * @uri_string: URI string of the syntax (or NULL)
+ * @factory: pointer to function to call to register the factory
+ *
+ * INTERNAL - Register a syntax that can be generated by a serializer factory
+ *
+ * Return value: non-0 on failure
+ **/
+RAPTOR_EXTERN_C
+raptor_serializer_factory*
+raptor_serializer_register_factory(raptor_world* world,
+ int (*factory) (raptor_serializer_factory*))
+{
+ raptor_serializer_factory *serializer;
+
+ serializer = RAPTOR_CALLOC(raptor_serializer_factory*, 1, sizeof(*serializer));
+ if(!serializer)
+ return NULL;
+
+ serializer->world = world;
+
+ serializer->desc.mime_types = NULL;
+
+ if(raptor_sequence_push(world->serializers, serializer))
+ return NULL; /* on error, serializer is already freed by the sequence */
+
+ /* Call the serializer registration function on the new object */
+ if(factory(serializer))
+ return NULL; /* serializer is owned and freed by the serializers sequence */
+
+ if(raptor_syntax_description_validate(&serializer->desc)) {
+ raptor_log_error(world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Serializer description failed to validate\n");
+ goto tidy;
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("Registered serializer %s\n", serializer->desc.names[0]);
+#endif
+
+ return serializer;
+
+ /* Clean up on failure */
+ tidy:
+ raptor_free_serializer_factory(serializer);
+ return NULL;
+}
+
+
+/**
+ * raptor_get_serializer_factory:
+ * @world: raptor_world object
+ * @name: the factory name or NULL for the default factory
+ *
+ * Get a serializer factory by name.
+ *
+ * Return value: the factory object or NULL if there is no such factory
+ **/
+static raptor_serializer_factory*
+raptor_get_serializer_factory(raptor_world* world, const char *name)
+{
+ raptor_serializer_factory *factory = NULL;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, NULL);
+
+ raptor_world_open(world);
+
+ /* return 1st serializer if no particular one wanted - why? */
+ if(!name) {
+ factory = (raptor_serializer_factory *)raptor_sequence_get_at(world->serializers, 0);
+ if(!factory) {
+ RAPTOR_DEBUG1("No (default) serializers registered\n");
+ return NULL;
+ }
+ } else {
+ int i;
+
+ for(i = 0;
+ (factory = (raptor_serializer_factory*)raptor_sequence_get_at(world->serializers, i));
+ i++) {
+ int namei;
+ const char* fname;
+
+ for(namei = 0; (fname = factory->desc.names[namei]); namei++) {
+ if(!strcmp(fname, name))
+ break;
+ }
+ if(fname)
+ break;
+ }
+ }
+
+ return factory;
+}
+
+
+/**
+ * raptor_world_get_serializer_description:
+ * @world: world object
+ * @counter: index into the list of serializers
+ *
+ * Get serializer descriptive syntax information
+ *
+ * Return value: description or NULL if counter is out of range
+ **/
+const raptor_syntax_description*
+raptor_world_get_serializer_description(raptor_world* world,
+ unsigned int counter)
+{
+ raptor_serializer_factory *factory;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, NULL);
+
+ raptor_world_open(world);
+
+ factory = (raptor_serializer_factory*)raptor_sequence_get_at(world->serializers,
+ counter);
+
+ if(!factory)
+ return NULL;
+
+ return &factory->desc;
+}
+
+
+/**
+ * raptor_world_is_serializer_name:
+ * @world: raptor_world object
+ * @name: the syntax name
+ *
+ * Check name of a serializer.
+ *
+ * Return value: non 0 if name is a known syntax name
+ */
+int
+raptor_world_is_serializer_name(raptor_world* world, const char *name)
+{
+ if(!name)
+ return 0;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, 0);
+
+ raptor_world_open(world);
+
+ return (raptor_get_serializer_factory(world, name) != NULL);
+}
+
+
+/**
+ * raptor_new_serializer:
+ * @world: raptor_world object
+ * @name: the serializer name or NULL for default syntax
+ *
+ * Constructor - create a new raptor_serializer object.
+ *
+ * Return value: a new #raptor_serializer object or NULL on failure
+ */
+raptor_serializer*
+raptor_new_serializer(raptor_world* world, const char *name)
+{
+ raptor_serializer_factory* factory;
+ raptor_serializer* rdf_serializer;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ factory = raptor_get_serializer_factory(world, name);
+ if(!factory)
+ return NULL;
+
+ rdf_serializer = RAPTOR_CALLOC(raptor_serializer*, 1, sizeof(*rdf_serializer));
+ if(!rdf_serializer)
+ return NULL;
+
+ rdf_serializer->world = world;
+
+ rdf_serializer->context = RAPTOR_CALLOC(void*, 1, factory->context_length);
+ if(!rdf_serializer->context) {
+ raptor_free_serializer(rdf_serializer);
+ return NULL;
+ }
+
+ rdf_serializer->factory = factory;
+
+ raptor_object_options_init(&rdf_serializer->options,
+ RAPTOR_OPTION_AREA_SERIALIZER);
+
+ if(factory->init(rdf_serializer, name)) {
+ raptor_free_serializer(rdf_serializer);
+ return NULL;
+ }
+
+ return rdf_serializer;
+}
+
+
+/**
+ * raptor_serializer_start_to_iostream:
+ * @rdf_serializer: the #raptor_serializer
+ * @uri: base URI or NULL if no base URI is required
+ * @iostream: #raptor_iostream to write serialization to
+ *
+ * Start serialization to an iostream with given base URI
+ *
+ * The passed in @iostream does not become owned by the serializer
+ * and can be used by the caller after serializing is done. It
+ * must be destroyed by the caller.
+ *
+ * Return value: non-0 on failure.
+ **/
+int
+raptor_serializer_start_to_iostream(raptor_serializer *rdf_serializer,
+ raptor_uri *uri, raptor_iostream *iostream)
+{
+ if(rdf_serializer->base_uri)
+ raptor_free_uri(rdf_serializer->base_uri);
+
+ if(!iostream)
+ return 1;
+
+ if(uri)
+ uri = raptor_uri_copy(uri);
+
+ rdf_serializer->base_uri = uri;
+ rdf_serializer->locator.uri = uri;
+ rdf_serializer->locator.line = rdf_serializer->locator.column = 0;
+
+ rdf_serializer->iostream = iostream;
+
+ rdf_serializer->free_iostream_on_end = 0;
+
+ if(rdf_serializer->factory->serialize_start)
+ return rdf_serializer->factory->serialize_start(rdf_serializer);
+ return 0;
+}
+
+
+/**
+ * raptor_serializer_start_to_filename:
+ * @rdf_serializer: the #raptor_serializer
+ * @filename: filename to serialize to
+ *
+ * Start serializing to a filename.
+ *
+ * Return value: non-0 on failure.
+ **/
+int
+raptor_serializer_start_to_filename(raptor_serializer *rdf_serializer,
+ const char *filename)
+{
+ unsigned char *uri_string = raptor_uri_filename_to_uri_string(filename);
+ if(!uri_string)
+ return 1;
+
+ if(rdf_serializer->base_uri)
+ raptor_free_uri(rdf_serializer->base_uri);
+
+ rdf_serializer->base_uri = raptor_new_uri(rdf_serializer->world, uri_string);
+ rdf_serializer->locator.uri = rdf_serializer->base_uri;
+ rdf_serializer->locator.line = rdf_serializer->locator.column = 0;
+
+ RAPTOR_FREE(char*, uri_string);
+
+ rdf_serializer->iostream = raptor_new_iostream_to_filename(rdf_serializer->world,
+ filename);
+ if(!rdf_serializer->iostream)
+ return 1;
+
+ rdf_serializer->free_iostream_on_end = 1;
+
+ if(rdf_serializer->factory->serialize_start)
+ return rdf_serializer->factory->serialize_start(rdf_serializer);
+ return 0;
+}
+
+
+
+/**
+ * raptor_serializer_start_to_string:
+ * @rdf_serializer: the #raptor_serializer
+ * @uri: base URI or NULL if no base URI is required
+ * @string_p: pointer to location to hold string
+ * @length_p: pointer to location to hold length of string (or NULL)
+ *
+ * Start serializing to a string.
+ *
+ * Return value: non-0 on failure.
+ **/
+int
+raptor_serializer_start_to_string(raptor_serializer *rdf_serializer,
+ raptor_uri *uri,
+ void **string_p, size_t *length_p)
+{
+ if(rdf_serializer->base_uri)
+ raptor_free_uri(rdf_serializer->base_uri);
+
+ if(uri)
+ rdf_serializer->base_uri = raptor_uri_copy(uri);
+ else
+ rdf_serializer->base_uri = NULL;
+ rdf_serializer->locator.uri = rdf_serializer->base_uri;
+ rdf_serializer->locator.line = rdf_serializer->locator.column = 0;
+
+
+ rdf_serializer->iostream = raptor_new_iostream_to_string(rdf_serializer->world,
+ string_p, length_p,
+ NULL);
+ if(!rdf_serializer->iostream)
+ return 1;
+
+ rdf_serializer->free_iostream_on_end = 1;
+
+ if(rdf_serializer->factory->serialize_start)
+ return rdf_serializer->factory->serialize_start(rdf_serializer);
+ return 0;
+}
+
+
+/**
+ * raptor_serializer_start_to_file_handle:
+ * @rdf_serializer: the #raptor_serializer
+ * @uri: base URI or NULL if no base URI is required
+ * @fh: FILE* to serialize to
+ *
+ * Start serializing to a FILE*.
+ *
+ * NOTE: This does not fclose the handle when it is finished.
+ *
+ * Return value: non-0 on failure.
+ **/
+int
+raptor_serializer_start_to_file_handle(raptor_serializer *rdf_serializer,
+ raptor_uri *uri, FILE *fh)
+{
+ if(rdf_serializer->base_uri)
+ raptor_free_uri(rdf_serializer->base_uri);
+
+ if(uri)
+ rdf_serializer->base_uri = raptor_uri_copy(uri);
+ else
+ rdf_serializer->base_uri = NULL;
+ rdf_serializer->locator.uri = rdf_serializer->base_uri;
+ rdf_serializer->locator.line = rdf_serializer->locator.column = 0;
+
+ rdf_serializer->iostream = raptor_new_iostream_to_file_handle(rdf_serializer->world, fh);
+ if(!rdf_serializer->iostream)
+ return 1;
+
+ rdf_serializer->free_iostream_on_end = 1;
+
+ if(rdf_serializer->factory->serialize_start)
+ return rdf_serializer->factory->serialize_start(rdf_serializer);
+ return 0;
+}
+
+
+/**
+ * raptor_serializer_set_namespace:
+ * @rdf_serializer: the #raptor_serializer
+ * @uri: #raptor_uri of namespace or NULL
+ * @prefix: prefix to use or NULL
+ *
+ * set a namespace uri/prefix mapping for serializing.
+ *
+ * return value: non-0 on failure.
+ **/
+int
+raptor_serializer_set_namespace(raptor_serializer* rdf_serializer,
+ raptor_uri *uri, const unsigned char *prefix)
+{
+ if(prefix && !*prefix)
+ prefix = NULL;
+
+ if(rdf_serializer->factory->declare_namespace)
+ return rdf_serializer->factory->declare_namespace(rdf_serializer,
+ uri, prefix);
+
+ return 1;
+}
+
+
+/**
+ * raptor_serializer_set_namespace_from_namespace:
+ * @rdf_serializer: the #raptor_serializer
+ * @nspace: #raptor_namespace to set
+ *
+ * Set a namespace uri/prefix mapping for serializing from an existing namespace.
+ *
+ * Return value: non-0 on failure.
+ **/
+int
+raptor_serializer_set_namespace_from_namespace(raptor_serializer* rdf_serializer,
+ raptor_namespace *nspace)
+{
+ if(rdf_serializer->factory->declare_namespace_from_namespace)
+ return rdf_serializer->factory->declare_namespace_from_namespace(rdf_serializer,
+ nspace);
+ else if(rdf_serializer->factory->declare_namespace)
+ return rdf_serializer->factory->declare_namespace(rdf_serializer,
+ raptor_namespace_get_uri(nspace),
+ raptor_namespace_get_prefix(nspace));
+
+ return 1;
+}
+
+
+/**
+ * raptor_serializer_serialize_statement:
+ * @rdf_serializer: the #raptor_serializer
+ * @statement: #raptor_statement to serialize to a syntax
+ *
+ * Serialize a statement.
+ *
+ * Return value: non-0 on failure.
+ **/
+int
+raptor_serializer_serialize_statement(raptor_serializer* rdf_serializer,
+ raptor_statement *statement)
+{
+ if(!rdf_serializer->iostream)
+ return 1;
+
+ return rdf_serializer->factory->serialize_statement(rdf_serializer,
+ statement);
+}
+
+
+/**
+ * raptor_serializer_serialize_end:
+ * @rdf_serializer: the #raptor_serializer
+ *
+ * End a serialization.
+ *
+ * Return value: non-0 on failure.
+ **/
+int
+raptor_serializer_serialize_end(raptor_serializer *rdf_serializer)
+{
+ int rc;
+
+ if(!rdf_serializer->iostream)
+ return 1;
+
+ if(rdf_serializer->factory->serialize_end)
+ rc = rdf_serializer->factory->serialize_end(rdf_serializer);
+ else
+ rc = 0;
+
+ if(rdf_serializer->iostream) {
+ if(rdf_serializer->free_iostream_on_end)
+ raptor_free_iostream(rdf_serializer->iostream);
+ rdf_serializer->iostream = NULL;
+ }
+ return rc;
+}
+
+
+
+/**
+ * raptor_free_serializer:
+ * @rdf_serializer: #raptor_serializer object
+ *
+ * Destructor - destroy a raptor_serializer object.
+ *
+ **/
+void
+raptor_free_serializer(raptor_serializer* rdf_serializer)
+{
+ if(!rdf_serializer)
+ return;
+
+ if(rdf_serializer->factory)
+ rdf_serializer->factory->terminate(rdf_serializer);
+
+ if(rdf_serializer->context)
+ RAPTOR_FREE(raptor_serializer_context, rdf_serializer->context);
+
+ if(rdf_serializer->base_uri)
+ raptor_free_uri(rdf_serializer->base_uri);
+
+ raptor_object_options_clear(&rdf_serializer->options);
+
+ RAPTOR_FREE(raptor_serializer, rdf_serializer);
+}
+
+
+/**
+ * raptor_serializer_get_iostream:
+ * @serializer: #raptor_serializer object
+ *
+ * Get the current serializer iostream.
+ *
+ * Return value: the serializer's current iostream or NULL if
+ **/
+raptor_iostream*
+raptor_serializer_get_iostream(raptor_serializer *serializer)
+{
+ return serializer->iostream;
+}
+
+
+/**
+ * raptor_serializer_set_option:
+ * @serializer: #raptor_serializer serializer object
+ * @option: option to set from enumerated #raptor_option values
+ * @string: string option value (or NULL)
+ * @integer: integer option value
+ *
+ * Set serializer option.
+ *
+ * If @string is not NULL and the option type is numeric, the string
+ * value is converted to an integer and used in preference to @integer.
+ *
+ * If @string is NULL and the option type is not numeric, an error is
+ * returned.
+ *
+ * The @string values used are copied.
+ *
+ * The allowed options are available via
+ * raptor_world_get_option_description().
+ *
+ * Return value: non 0 on failure or if the option is unknown
+ **/
+int
+raptor_serializer_set_option(raptor_serializer *serializer,
+ raptor_option option,
+ const char* string, int integer)
+{
+ return raptor_object_options_set_option(&serializer->options, option,
+ string, integer);
+}
+
+
+/**
+ * raptor_serializer_get_option:
+ * @serializer: #raptor_serializer serializer object
+ * @option: option to get value
+ * @string_p: pointer to where to store string value
+ * @integer_p: pointer to where to store integer value
+ *
+ * Get serializer option.
+ *
+ * Any string value returned in *@string_p is shared and must
+ * be copied by the caller.
+ *
+ * The allowed options are available via
+ * raptor_world_get_option_description().
+ *
+ * Return value: option value or < 0 for an illegal option
+ **/
+int
+raptor_serializer_get_option(raptor_serializer *serializer,
+ raptor_option option,
+ char** string_p, int* integer_p)
+{
+ return raptor_object_options_get_option(&serializer->options, option,
+ string_p, integer_p);
+}
+
+
+/**
+ * raptor_serializer_get_locator:
+ * @rdf_serializer: raptor serializer
+ *
+ * Get the serializer raptor locator object.
+ *
+ * Return value: raptor locator
+ **/
+raptor_locator*
+raptor_serializer_get_locator(raptor_serializer *rdf_serializer)
+{
+ return &rdf_serializer->locator;
+}
+
+
+/**
+ * raptor_serializer_get_world:
+ * @rdf_serializer: raptor serializer
+ *
+ * Get the #raptor_world object associated with a serializer.
+ *
+ * Return value: raptor_world* pointer
+ **/
+raptor_world *
+raptor_serializer_get_world(raptor_serializer* rdf_serializer)
+{
+ return rdf_serializer->world;
+}
+
+
+/**
+ * raptor_serializer_get_description:
+ * @rdf_serializer: #raptor_serializer serializer object
+ *
+ * Get description of the syntaxes of the serializer.
+ *
+ * The returned description is static and lives as long as the raptor
+ * library (raptor world).
+ *
+ * Return value: description of syntax
+ **/
+const raptor_syntax_description*
+raptor_serializer_get_description(raptor_serializer *rdf_serializer)
+{
+ return &rdf_serializer->factory->desc;
+}
+
+
+/**
+ * raptor_serializer_flush:
+ * @rdf_serializer: raptor serializer
+ *
+ * Flush the current serializer output and free any pending state
+ *
+ * In serializers that can generate blocks of content, this causes
+ * the writing of any current pending block. For example in Turtle
+ * this may write all pending triples.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_serializer_flush(raptor_serializer *rdf_serializer)
+{
+ int rc;
+
+ if(rdf_serializer->factory->serialize_flush)
+ rc = rdf_serializer->factory->serialize_flush(rdf_serializer);
+ else
+ rc = 0;
+
+ return rc;
+}
diff --git a/src/raptor_serialize_dot.c b/src/raptor_serialize_dot.c
new file mode 100644
index 0000000..3710fa6
--- /dev/null
+++ b/src/raptor_serialize_dot.c
@@ -0,0 +1,589 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_serialize_dot.c - Serialize RDF graph to GraphViz DOT format
+ *
+ * Copyright (C) 2004-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2004-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+/*
+ * Raptor dot serializer object
+ */
+typedef struct {
+ raptor_namespace_stack *nstack;
+ raptor_sequence *namespaces;
+
+ raptor_sequence *resources;
+ raptor_sequence *literals;
+ raptor_sequence *bnodes;
+} raptor_dot_context;
+
+
+/* add a namespace */
+static int
+raptor_dot_serializer_declare_namespace_from_namespace(raptor_serializer* serializer,
+ raptor_namespace *nspace)
+{
+ raptor_dot_context * context = (raptor_dot_context *)serializer->context;
+ int i;
+
+ for(i = 0 ; i < raptor_sequence_size(context->namespaces) ; i++ ) {
+ raptor_namespace * ns;
+ ns = (raptor_namespace *)raptor_sequence_get_at(context->namespaces, i);
+
+ /* If prefix is already declared, ignore it */
+ if((!ns->prefix && !nspace->prefix) ||
+ (ns->prefix && nspace->prefix &&
+ !strcmp((const char*)ns->prefix, (const char*)nspace->prefix)) ||
+ (ns->uri && nspace->uri &&
+ raptor_uri_equals(ns->uri, nspace->uri)) )
+ return 1;
+ }
+
+ nspace = raptor_new_namespace_from_uri(context->nstack, nspace->prefix,
+ nspace->uri, 0);
+
+ if(!nspace)
+ return 1;
+
+ raptor_sequence_push(context->namespaces, nspace);
+
+ return 0;
+}
+
+
+/* add a namespace */
+static int
+raptor_dot_serializer_declare_namespace(raptor_serializer* serializer,
+ raptor_uri* uri,
+ const unsigned char *prefix)
+{
+ raptor_dot_context * context = (raptor_dot_context *)serializer->context;
+ raptor_namespace *ns;
+ int rc;
+
+ ns = raptor_new_namespace_from_uri(context->nstack, prefix, uri, 0);
+ rc = raptor_dot_serializer_declare_namespace_from_namespace(serializer, ns);
+
+ raptor_free_namespace(ns);
+
+ return rc;
+}
+
+
+/* create a new serializer */
+static int
+raptor_dot_serializer_init(raptor_serializer *serializer, const char *name)
+{
+ raptor_dot_context * context = (raptor_dot_context *)serializer->context;
+
+ /* Setup namespace handling */
+ context->nstack = raptor_new_namespaces(serializer->world, 1);
+ context->namespaces = raptor_new_sequence((raptor_data_free_handler)raptor_free_namespace, NULL);
+
+ /* We keep a list of nodes to avoid duplication (which isn't
+ * critical in graphviz, but why bloat the file?)
+ */
+ context->resources =
+ raptor_new_sequence((raptor_data_free_handler)raptor_free_term, NULL);
+ context->literals =
+ raptor_new_sequence((raptor_data_free_handler)raptor_free_term, NULL);
+ context->bnodes =
+ raptor_new_sequence((raptor_data_free_handler)raptor_free_term, NULL);
+
+ return 0;
+}
+
+
+/**
+ * raptor_dot_iostream_write_string:
+ * @iostr: #raptor_iostream to write to
+ * @string: UTF-8 string to write
+ * @len: length of UTF-8 string
+ * or \0 for no escaping.
+ *
+ * Write an UTF-8 string, escaped for graphviz.
+ *
+ * Return value: non-0 on failure.
+ **/
+static int
+raptor_dot_iostream_write_string(raptor_iostream *iostr,
+ const unsigned char *string)
+{
+ unsigned char c;
+
+ for( ; (c = *string) ; string++ ) {
+ if( (c == '\\') || (c == '"') || (c == '|') ||
+ (c == '{') || (c == '}') ) {
+ raptor_iostream_write_byte('\\', iostr);
+ raptor_iostream_write_byte(c, iostr);
+ } else if( c == '\n' ) {
+ raptor_iostream_write_byte('\\', iostr);
+ raptor_iostream_write_byte('n', iostr);
+ } else
+ raptor_iostream_write_byte(c, iostr);
+ }
+
+ return 0;
+}
+
+
+static void
+raptor_dot_serializer_write_term_type(raptor_serializer * serializer,
+ raptor_term_type type)
+{
+ switch(type) {
+ case RAPTOR_TERM_TYPE_LITERAL:
+ raptor_iostream_write_byte('L', serializer->iostream);
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ raptor_iostream_write_byte('B', serializer->iostream);
+ break;
+
+ case RAPTOR_TERM_TYPE_URI:
+ raptor_iostream_write_byte('R', serializer->iostream);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ raptor_iostream_write_byte('?', serializer->iostream);
+ break;
+ }
+}
+
+
+static void
+raptor_dot_serializer_write_uri(raptor_serializer* serializer,
+ raptor_uri* uri)
+{
+ raptor_dot_context* context = (raptor_dot_context*)serializer->context;
+ unsigned char* full = raptor_uri_as_string(uri);
+ int i;
+
+ for(i = 0 ; i < raptor_sequence_size(context->namespaces) ; i++ ) {
+ raptor_namespace* ns =
+ (raptor_namespace*)raptor_sequence_get_at(context->namespaces, i);
+ const unsigned char* ns_uri_string;
+ size_t ns_uri_string_len;
+ ns_uri_string = raptor_uri_as_counted_string(ns->uri, &ns_uri_string_len);
+
+ if(!strncmp((char*)full, (char*)ns_uri_string, ns_uri_string_len) ) {
+ const unsigned char* prefix = raptor_namespace_get_prefix(ns);
+
+ if(prefix) {
+ raptor_iostream_string_write(prefix, serializer->iostream);
+ raptor_iostream_write_byte(':', serializer->iostream);
+ }
+
+ raptor_iostream_string_write(full + ns_uri_string_len,
+ serializer->iostream);
+
+ return;
+ }
+ }
+
+ raptor_iostream_string_write(full, serializer->iostream);
+}
+
+
+static void
+raptor_dot_serializer_write_term(raptor_serializer * serializer,
+ raptor_term* term)
+{
+ switch(term->type) {
+ case RAPTOR_TERM_TYPE_LITERAL:
+ raptor_dot_iostream_write_string(serializer->iostream,
+ term->value.literal.string);
+ if(term->value.literal.language) {
+ raptor_iostream_write_byte('|', serializer->iostream);
+ raptor_iostream_string_write("Language: ", serializer->iostream);
+ raptor_iostream_string_write(term->value.literal.language,
+ serializer->iostream);
+ }
+ if(term->value.literal.datatype) {
+ raptor_iostream_write_byte('|', serializer->iostream);
+ raptor_iostream_string_write("Datatype: ", serializer->iostream);
+ raptor_dot_serializer_write_uri(serializer, term->value.literal.datatype);
+ }
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ raptor_iostream_counted_string_write("_:", 2, serializer->iostream);
+ raptor_iostream_string_write(term->value.blank.string, serializer->iostream);
+ break;
+
+ case RAPTOR_TERM_TYPE_URI:
+ raptor_dot_serializer_write_uri(serializer, term->value.uri);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR,
+ NULL, "Triple has unsupported term type %d",
+ term->type);
+ }
+}
+
+
+/* Check the list to see if the node is a duplicate. If not, add it
+ * to the list.
+ */
+static void
+raptor_dot_serializer_assert_node(raptor_serializer* serializer,
+ raptor_term* assert_node)
+{
+ raptor_dot_context* context = (raptor_dot_context*)serializer->context;
+ raptor_sequence* seq = NULL;
+ int i;
+
+ /* Which list are we searching? */
+ switch(assert_node->type) {
+ case RAPTOR_TERM_TYPE_URI:
+ seq = context->resources;
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ seq = context->bnodes;
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ seq = context->literals;
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ break;
+ }
+
+ for(i = 0 ; i < raptor_sequence_size(seq) ; i++ ) {
+ raptor_term* node = (raptor_term*)raptor_sequence_get_at(seq, i);
+
+ if(raptor_term_equals(node, assert_node))
+ return;
+ }
+
+ raptor_sequence_push(seq, raptor_term_copy(assert_node));
+}
+
+
+/* start a serialize */
+static int
+raptor_dot_serializer_start(raptor_serializer* serializer)
+{
+ raptor_iostream_string_write((const unsigned char*)"digraph {\n\trankdir = LR;\n\tcharset=\"utf-8\";\n\n",
+ serializer->iostream);
+
+ return 0;
+}
+
+
+static int
+raptor_dot_serializer_write_colors(raptor_serializer* serializer,
+ raptor_term_type type)
+{
+ char* value;
+
+ switch(type) {
+ case RAPTOR_TERM_TYPE_URI:
+ value = RAPTOR_OPTIONS_GET_STRING(serializer,
+ RAPTOR_OPTION_RESOURCE_BORDER);
+ if(value) {
+ raptor_iostream_string_write((const unsigned char*)", color=",
+ serializer->iostream);
+ raptor_iostream_string_write((const unsigned char*)value,
+ serializer->iostream);
+ }
+ else
+ raptor_iostream_string_write((const unsigned char*)", color = blue",
+ serializer->iostream);
+
+ value = RAPTOR_OPTIONS_GET_STRING(serializer,
+ RAPTOR_OPTION_RESOURCE_FILL);
+ if(value) {
+ raptor_iostream_string_write((const unsigned char*)", style = filled, fillcolor=",
+ serializer->iostream);
+ raptor_iostream_string_write((const unsigned char*)value,
+ serializer->iostream);
+ }
+
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ value = RAPTOR_OPTIONS_GET_STRING(serializer,
+ RAPTOR_OPTION_BNODE_BORDER);
+ if(value) {
+ raptor_iostream_string_write((const unsigned char*)", color=",
+ serializer->iostream);
+ raptor_iostream_string_write((const unsigned char*)value,
+ serializer->iostream);
+ }
+ else
+ raptor_iostream_string_write((const unsigned char*)", color = green",
+ serializer->iostream);
+
+ value = RAPTOR_OPTIONS_GET_STRING(serializer,
+ RAPTOR_OPTION_BNODE_FILL);
+ if(value) {
+ raptor_iostream_string_write((const unsigned char*)", style = filled, fillcolor=",
+ serializer->iostream);
+ raptor_iostream_string_write((const unsigned char*)value,
+ serializer->iostream);
+ }
+
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ value = RAPTOR_OPTIONS_GET_STRING(serializer,
+ RAPTOR_OPTION_LITERAL_BORDER);
+ if(value) {
+ raptor_iostream_string_write((const unsigned char*)", color=",
+ serializer->iostream);
+ raptor_iostream_string_write((const unsigned char*)value,
+ serializer->iostream);
+ }
+
+ value = RAPTOR_OPTIONS_GET_STRING(serializer,
+ RAPTOR_OPTION_LITERAL_FILL);
+ if(value) {
+ raptor_iostream_string_write((const unsigned char*)", style = filled, fillcolor=",
+ serializer->iostream);
+ raptor_iostream_string_write((const unsigned char*)value,
+ serializer->iostream);
+ }
+
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ break;
+ }
+
+ return 0;
+}
+
+
+/* end a serialize */
+static int
+raptor_dot_serializer_end(raptor_serializer* serializer)
+{
+ raptor_dot_context* context = (raptor_dot_context*)serializer->context;
+ raptor_term* node;
+ int i;
+
+ /* Print our nodes. */
+ raptor_iostream_string_write((const unsigned char*)"\n\t// Resources\n",
+ serializer->iostream);
+ for(i = 0 ; i < raptor_sequence_size(context->resources) ; i++ ) {
+ node = (raptor_term*)raptor_sequence_get_at(context->resources, i);
+ raptor_iostream_string_write((const unsigned char*)"\t\"R",
+ serializer->iostream);
+ raptor_dot_serializer_write_term(serializer, node);
+ raptor_iostream_string_write((const unsigned char*)"\" [ label=\"",
+ serializer->iostream);
+ raptor_dot_serializer_write_term(serializer, node);
+ raptor_iostream_string_write((const unsigned char*)"\", shape = ellipse",
+ serializer->iostream);
+ raptor_dot_serializer_write_colors(serializer, RAPTOR_TERM_TYPE_URI);
+ raptor_iostream_string_write((const unsigned char*)" ];\n",
+ serializer->iostream);
+
+ }
+ raptor_free_sequence(context->resources);
+
+ raptor_iostream_string_write((const unsigned char*)"\n\t// Anonymous nodes\n",
+ serializer->iostream);
+ for(i = 0 ; i < raptor_sequence_size(context->bnodes) ; i++ ) {
+ node = (raptor_term *)raptor_sequence_get_at(context->bnodes, i);
+ raptor_iostream_string_write((const unsigned char*)"\t\"B",
+ serializer->iostream);
+ raptor_dot_serializer_write_term(serializer, node);
+ raptor_iostream_string_write((const unsigned char*)"\" [ label=\"",
+ serializer->iostream);
+ raptor_iostream_string_write((const unsigned char*)"\", shape = circle",
+ serializer->iostream);
+ raptor_dot_serializer_write_colors(serializer, RAPTOR_TERM_TYPE_BLANK);
+ raptor_iostream_string_write((const unsigned char*)" ];\n",
+ serializer->iostream);
+ }
+ raptor_free_sequence(context->bnodes);
+
+ raptor_iostream_string_write((const unsigned char*)"\n\t// Literals\n",
+ serializer->iostream);
+ for(i = 0 ; i < raptor_sequence_size(context->literals) ; i++ ) {
+ node = (raptor_term*)raptor_sequence_get_at(context->literals, i);
+ raptor_iostream_string_write((const unsigned char*)"\t\"L",
+ serializer->iostream);
+ raptor_dot_serializer_write_term(serializer, node);
+ raptor_iostream_string_write((const unsigned char*)"\" [ label=\"",
+ serializer->iostream);
+ raptor_dot_serializer_write_term(serializer, node);
+ raptor_iostream_string_write((const unsigned char*)"\", shape = record",
+ serializer->iostream);
+ raptor_dot_serializer_write_colors(serializer, RAPTOR_TERM_TYPE_LITERAL);
+ raptor_iostream_string_write((const unsigned char*)" ];\n",
+ serializer->iostream);
+ }
+ raptor_free_sequence(context->literals);
+
+ raptor_iostream_string_write((const unsigned char*)"\n\tlabel=\"\\n\\nModel:\\n",
+ serializer->iostream);
+ if(serializer->base_uri)
+ raptor_iostream_string_write(raptor_uri_as_string(serializer->base_uri),
+ serializer->iostream);
+ else
+ raptor_iostream_string_write("(Unknown)", serializer->iostream);
+
+ if(raptor_sequence_size(context->namespaces)) {
+ raptor_iostream_string_write((const unsigned char*)"\\n\\nNamespaces:\\n",
+ serializer->iostream);
+
+ for(i = 0 ; i < raptor_sequence_size(context->namespaces) ; i++ ) {
+ raptor_namespace* ns;
+ const unsigned char* prefix;
+
+ ns = (raptor_namespace*)raptor_sequence_get_at(context->namespaces, i);
+
+ prefix = raptor_namespace_get_prefix(ns);
+ if(prefix) {
+ raptor_iostream_string_write((const unsigned char*)ns->prefix,
+ serializer->iostream);
+ raptor_iostream_string_write((const unsigned char*)": ",
+ serializer->iostream);
+ }
+ raptor_iostream_string_write(raptor_uri_as_string(ns->uri),
+ serializer->iostream);
+ raptor_iostream_string_write((const unsigned char*)"\\n",
+ serializer->iostream);
+ }
+
+ raptor_free_sequence(context->namespaces);
+ }
+
+ raptor_iostream_string_write((const unsigned char*)"\";\n",
+ serializer->iostream);
+
+ raptor_iostream_string_write((const unsigned char*) "}\n",
+ serializer->iostream);
+
+ return 0;
+}
+
+
+/* destroy a serializer */
+static void
+raptor_dot_serializer_terminate(raptor_serializer* serializer)
+{
+ /* raptor_dot_context* context = (raptor_dot_context*)serializer->context; */
+
+ /* Everything should have been freed in raptor_dot_serializer_end */
+}
+
+/* serialize a statement */
+static int
+raptor_dot_serializer_statement(raptor_serializer* serializer,
+ raptor_statement *statement)
+{
+ /* Cache the nodes for later. */
+ raptor_dot_serializer_assert_node(serializer, statement->subject);
+ raptor_dot_serializer_assert_node(serializer, statement->object);
+
+ raptor_iostream_string_write((const unsigned char*)"\t\"",
+ serializer->iostream);
+ raptor_dot_serializer_write_term_type(serializer, statement->subject->type);
+ raptor_dot_serializer_write_term(serializer, statement->subject);
+ raptor_iostream_string_write((const unsigned char*)"\" -> \"",
+ serializer->iostream);
+ raptor_dot_serializer_write_term_type(serializer, statement->object->type);
+ raptor_dot_serializer_write_term(serializer, statement->object);
+ raptor_iostream_string_write((const unsigned char*)"\" [ label=\"",
+ serializer->iostream);
+ raptor_dot_serializer_write_term(serializer, statement->predicate);
+ raptor_iostream_string_write((const unsigned char*)"\" ];\n",
+ serializer->iostream);
+
+ return 0;
+}
+
+
+static const char* const dot_names[2] = { "dot", NULL};
+
+static const char* const dot_uri_strings[2] = {
+ "http://www.graphviz.org/doc/info/lang.html",
+ NULL
+};
+
+#define DOT_TYPES_COUNT 1
+static const raptor_type_q dot_types[DOT_TYPES_COUNT + 1] = {
+ { "text/x-graphviz", 15, 5},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_dot_serializer_register_factory(raptor_serializer_factory *factory)
+{
+ factory->desc.names = dot_names;
+ factory->desc.mime_types = dot_types;
+
+ factory->desc.label = "GraphViz DOT format";
+ factory->desc.uri_strings = dot_uri_strings;;
+
+ factory->context_length = sizeof(raptor_dot_context);
+
+ factory->init = raptor_dot_serializer_init;
+ factory->declare_namespace = raptor_dot_serializer_declare_namespace;
+ factory->declare_namespace_from_namespace =
+ raptor_dot_serializer_declare_namespace_from_namespace;
+ factory->serialize_start = raptor_dot_serializer_start;
+ factory->serialize_statement = raptor_dot_serializer_statement;
+ factory->serialize_end = raptor_dot_serializer_end;
+ factory->finish_factory = NULL;
+ factory->terminate = raptor_dot_serializer_terminate;
+
+ return 0;
+}
+
+
+int
+raptor_init_serializer_dot(raptor_world* world)
+{
+ return !raptor_serializer_register_factory(world,
+ &raptor_dot_serializer_register_factory);
+}
diff --git a/src/raptor_serialize_html.c b/src/raptor_serialize_html.c
new file mode 100644
index 0000000..617c2db
--- /dev/null
+++ b/src/raptor_serialize_html.c
@@ -0,0 +1,278 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_serialize_html.c - HTML Table serializer
+ *
+ * Copyright (C) 2010, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/*
+ * Raptor html serializer object
+ */
+typedef struct {
+ int count;
+} raptor_html_context;
+
+
+
+/* create a new serializer */
+static int
+raptor_html_serialize_init(raptor_serializer* serializer, const char *name)
+{
+ return 0;
+}
+
+
+/* destroy a serializer */
+static void
+raptor_html_serialize_terminate(raptor_serializer* serializer)
+{
+
+}
+
+
+/* start a serialize */
+static int
+raptor_html_serialize_start(raptor_serializer* serializer)
+{
+ raptor_html_context * context = (raptor_html_context *)serializer->context;
+ raptor_iostream *iostr = serializer->iostream;
+
+ context->count = 0;
+
+ /* XML and HTML declarations */
+ raptor_iostream_counted_string_write(
+ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", 39, iostr);
+ raptor_iostream_counted_string_write(
+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n"
+ " \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n", 106, iostr);
+ raptor_iostream_counted_string_write(
+ "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n", 44, iostr);
+
+ raptor_iostream_counted_string_write("<head>\n", 7, iostr);
+ raptor_iostream_counted_string_write(" <title>Raptor Graph Serialisation</title>\n", 44, iostr);
+ raptor_iostream_counted_string_write("</head>\n", 8, iostr);
+ raptor_iostream_counted_string_write("<body>\n", 7, iostr);
+
+ raptor_iostream_counted_string_write(
+ " <table id=\"triples\" border=\"1\">\n", 34, iostr);
+
+ raptor_iostream_counted_string_write(" <tr>\n", 9, iostr);
+ raptor_iostream_counted_string_write(" <th>Subject</th>\n", 23, iostr);
+ raptor_iostream_counted_string_write(" <th>Predicate</th>\n", 25, iostr);
+ raptor_iostream_counted_string_write(" <th>Object</th>\n", 22, iostr);
+ raptor_iostream_counted_string_write(" </tr>\n", 10, iostr);
+
+ return 0;
+}
+
+
+/* serialize a term */
+static int
+raptor_term_html_write(const raptor_term *term, raptor_iostream* iostr)
+{
+ unsigned char *str;
+ size_t len;
+
+ switch(term->type) {
+ case RAPTOR_TERM_TYPE_LITERAL:
+ raptor_iostream_counted_string_write("<span class=\"literal\">", 22,
+ iostr);
+ raptor_iostream_counted_string_write("<span class=\"value\"", 19, iostr);
+ if(term->value.literal.language) {
+ len = RAPTOR_LANG_LEN_TO_SIZE_T(term->value.literal.language_len);
+ raptor_iostream_counted_string_write(" xml:lang=\"", 11, iostr);
+ raptor_xml_escape_string_write(term->value.literal.language, len, '"',
+ iostr);
+ raptor_iostream_write_byte('"', iostr);
+ }
+ raptor_iostream_write_byte('>', iostr);
+ len = term->value.literal.string_len;
+ raptor_xml_escape_string_write(term->value.literal.string, len, 0, iostr);
+ raptor_iostream_counted_string_write("</span>", 7, iostr);
+
+ if(term->value.literal.datatype) {
+ str = raptor_uri_as_counted_string(term->value.literal.datatype, &len);
+ raptor_iostream_counted_string_write("^^&lt;<span class=\"datatype\">", 29, iostr);
+ raptor_xml_escape_string_write(str, len, 0, iostr);
+ raptor_iostream_counted_string_write("</span>&gt;", 11, iostr);
+ }
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ len = term->value.blank.string_len;
+ raptor_iostream_counted_string_write("<span class=\"blank\">", 20, iostr);
+ raptor_iostream_counted_string_write("_:", 2, iostr);
+ raptor_xml_escape_string_write(term->value.blank.string, len, 0, iostr);
+ break;
+
+ case RAPTOR_TERM_TYPE_URI:
+ str = raptor_uri_as_counted_string(term->value.uri, &len);
+ raptor_iostream_counted_string_write("<span class=\"uri\">", 18, iostr);
+ raptor_iostream_counted_string_write("<a href=\"", 9, iostr);
+ raptor_xml_escape_string_write(str, len, '"', iostr);
+ raptor_iostream_counted_string_write("\">", 2, iostr);
+ raptor_xml_escape_string_write(str, len, 0, iostr);
+ raptor_iostream_counted_string_write("</a>", 4, iostr);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(term->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Triple has unsupported term type %d",
+ term->type);
+ return 1;
+ }
+
+ raptor_iostream_counted_string_write("</span>", 7, iostr);
+
+ return 0;
+}
+
+
+/* serialize a statement */
+static int
+raptor_html_serialize_statement(raptor_serializer* serializer,
+ raptor_statement *statement)
+{
+ raptor_html_context * context = (raptor_html_context *)serializer->context;
+ raptor_iostream *iostr = serializer->iostream;
+
+ raptor_iostream_counted_string_write(" <tr class=\"triple\">\n", 24,
+ iostr);
+
+ /* Subject */
+ raptor_iostream_counted_string_write(" <td>", 10, iostr);
+ raptor_term_html_write(statement->subject, iostr);
+ raptor_iostream_counted_string_write("</td>\n", 6, iostr);
+
+ /* Predicate */
+ raptor_iostream_counted_string_write(" <td>", 10, iostr);
+ raptor_term_html_write(statement->predicate, iostr);
+ raptor_iostream_counted_string_write("</td>\n", 6, iostr);
+
+ /* Object */
+ raptor_iostream_counted_string_write(" <td>", 10, iostr);
+ raptor_term_html_write(statement->object, iostr);
+ raptor_iostream_counted_string_write("</td>\n", 6, iostr);
+
+ raptor_iostream_counted_string_write(" </tr>\n", 10, iostr);
+
+ context->count++;
+
+ return 0;
+}
+
+
+/* end a serialize */
+static int
+raptor_html_serialize_end(raptor_serializer* serializer)
+{
+ raptor_html_context * context = (raptor_html_context *)serializer->context;
+ raptor_iostream *iostr = serializer->iostream;
+
+ raptor_iostream_counted_string_write(" </table>\n", 11, iostr);
+
+ raptor_iostream_counted_string_write(
+ " <p>Total number of triples: <span class=\"count\">", 50, iostr);
+ raptor_iostream_decimal_write(context->count, iostr);
+ raptor_iostream_counted_string_write("</span>.</p>\n", 13, iostr);
+
+ raptor_iostream_counted_string_write("</body>\n", 8, iostr);
+ raptor_iostream_counted_string_write("</html>\n", 8, iostr);
+
+ return 0;
+}
+
+
+/* finish the serializer factory */
+static void
+raptor_html_serialize_finish_factory(raptor_serializer_factory* factory)
+{
+ /* NOP */
+}
+
+
+static const char* const html_names[2] = { "html", NULL};
+
+static const char* const html_uri_strings[2] = {
+ "http://www.w3.org/1999/xhtml",
+ NULL
+};
+
+#define HTML_TYPES_COUNT 2
+static const raptor_type_q html_types[HTML_TYPES_COUNT + 1] = {
+ { "application/xhtml+xml", 21, 10},
+ { "text/html", 9, 10},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_html_serializer_register_factory(raptor_serializer_factory *factory)
+{
+ factory->desc.names = html_names;
+ factory->desc.mime_types = html_types;
+
+ factory->desc.label = "HTML Table";
+ factory->desc.uri_strings = html_uri_strings;
+
+ factory->context_length = sizeof(raptor_html_context);
+
+ factory->init = raptor_html_serialize_init;
+ factory->terminate = raptor_html_serialize_terminate;
+ factory->declare_namespace = NULL;
+ factory->declare_namespace_from_namespace = NULL;
+ factory->serialize_start = raptor_html_serialize_start;
+ factory->serialize_statement = raptor_html_serialize_statement;
+ factory->serialize_end = raptor_html_serialize_end;
+ factory->finish_factory = raptor_html_serialize_finish_factory;
+
+ return 0;
+}
+
+
+int
+raptor_init_serializer_html(raptor_world* world)
+{
+ return !raptor_serializer_register_factory(world,
+ &raptor_html_serializer_register_factory);
+}
diff --git a/src/raptor_serialize_json.c b/src/raptor_serialize_json.c
new file mode 100644
index 0000000..fba51a6
--- /dev/null
+++ b/src/raptor_serialize_json.c
@@ -0,0 +1,559 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_serialize_json.c - JSON serializers
+ *
+ * Copyright (C) 2008-2009, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/*
+ * Raptor JSON serializer object
+ */
+typedef struct {
+ /* non-0 if json-r otherwise json-t */
+ int is_resource;
+
+ int need_subject_comma;
+
+ /* JSON writer object */
+ raptor_json_writer* json_writer;
+
+ /* Ordered sequence of triples if is_resource */
+ raptor_avltree* avltree;
+
+ /* Last statement generated if is_resource (shared pointer) */
+ raptor_statement* last_statement;
+
+ int need_object_comma;
+
+} raptor_json_context;
+
+
+static int raptor_json_serialize_init(raptor_serializer* serializer,
+ const char *name);
+static void raptor_json_serialize_terminate(raptor_serializer* serializer);
+static int raptor_json_serialize_start(raptor_serializer* serializer);
+static int raptor_json_serialize_statement(raptor_serializer* serializer,
+ raptor_statement *statement);
+static int raptor_json_serialize_end(raptor_serializer* serializer);
+static void raptor_json_serialize_finish_factory(raptor_serializer_factory* factory);
+
+
+/*
+ * raptor serializer JSON implementation
+ */
+
+
+/* create a new serializer */
+static int
+raptor_json_serialize_init(raptor_serializer* serializer, const char *name)
+{
+ raptor_json_context* context = (raptor_json_context*)serializer->context;
+
+ context->is_resource=!strcmp(name,"json");
+
+ /* Default for JSON serializer is absolute URIs */
+ /* RAPTOR_OPTIONS_SET_NUMERIC(serializer, RAPTOR_OPTION_RELATIVE_URIS, 0); */
+
+ return 0;
+}
+
+
+/* destroy a serializer */
+static void
+raptor_json_serialize_terminate(raptor_serializer* serializer)
+{
+ raptor_json_context* context = (raptor_json_context*)serializer->context;
+
+ if(context->json_writer) {
+ raptor_free_json_writer(context->json_writer);
+ context->json_writer = NULL;
+ }
+
+ if(context->avltree) {
+ raptor_free_avltree(context->avltree);
+ context->avltree = NULL;
+ }
+}
+
+
+static int
+raptor_json_serialize_start(raptor_serializer* serializer)
+{
+ raptor_json_context* context = (raptor_json_context*)serializer->context;
+ raptor_uri* base_uri;
+ char* value;
+
+ base_uri = RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_RELATIVE_URIS)
+ ? serializer->base_uri : NULL;
+
+ context->json_writer = raptor_new_json_writer(serializer->world,
+ base_uri,
+ serializer->iostream);
+ if(!context->json_writer)
+ return 1;
+
+ if(context->is_resource) {
+ context->avltree = raptor_new_avltree((raptor_data_compare_handler)raptor_statement_compare,
+ (raptor_data_free_handler)raptor_free_statement,
+ 0);
+ if(!context->avltree) {
+ raptor_free_json_writer(context->json_writer);
+ context->json_writer = NULL;
+ return 1;
+ }
+ }
+
+ /* start callback */
+ value = RAPTOR_OPTIONS_GET_STRING(serializer, RAPTOR_OPTION_JSON_CALLBACK);
+ if(value) {
+ raptor_iostream_string_write(value, serializer->iostream);
+ raptor_iostream_write_byte('(', serializer->iostream);
+ }
+
+ if(!context->is_resource) {
+ /* start outer object */
+ raptor_json_writer_start_block(context->json_writer, '{');
+ raptor_json_writer_newline(context->json_writer);
+
+ /* start triples array */
+ raptor_iostream_counted_string_write((const unsigned char*)"\"triples\" : ", 12,
+ serializer->iostream);
+ raptor_json_writer_start_block(context->json_writer, '[');
+ raptor_json_writer_newline(context->json_writer);
+ }
+
+ return 0;
+}
+
+
+static int
+raptor_json_serialize_statement(raptor_serializer* serializer,
+ raptor_statement *statement)
+{
+ raptor_json_context* context = (raptor_json_context*)serializer->context;
+
+ if(context->is_resource) {
+ raptor_statement* s = raptor_statement_copy(statement);
+ if(!s)
+ return 1;
+ return raptor_avltree_add(context->avltree, s);
+ }
+
+ if(context->need_subject_comma) {
+ raptor_iostream_write_byte(',', serializer->iostream);
+ raptor_json_writer_newline(context->json_writer);
+ }
+
+ /* start triple */
+ raptor_json_writer_start_block(context->json_writer, '{');
+ raptor_json_writer_newline(context->json_writer);
+
+ /* subject */
+ raptor_iostream_string_write((const unsigned char*)"\"subject\" : ",
+ serializer->iostream);
+ switch(statement->subject->type) {
+ case RAPTOR_TERM_TYPE_URI:
+ raptor_json_writer_uri_object(context->json_writer,
+ statement->subject->value.uri);
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ raptor_json_writer_blank_object(context->json_writer,
+ statement->subject->value.blank.string);
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR,
+ NULL,
+ "Triple has unsupported subject term type %d",
+ statement->subject->type);
+ break;
+ }
+ raptor_iostream_write_byte(',', serializer->iostream);
+ raptor_json_writer_newline(context->json_writer);
+
+ /* predicate */
+ raptor_iostream_string_write((const unsigned char*)"\"predicate\" : ",
+ serializer->iostream);
+ raptor_json_writer_uri_object(context->json_writer,
+ statement->predicate->value.uri);
+ raptor_iostream_write_byte(',', serializer->iostream);
+ raptor_json_writer_newline(context->json_writer);
+
+ /* object */
+ raptor_iostream_string_write((const unsigned char*)"\"object\" : ",
+ serializer->iostream);
+ switch(statement->object->type) {
+ case RAPTOR_TERM_TYPE_URI:
+ raptor_json_writer_uri_object(context->json_writer,
+ statement->object->value.uri);
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ raptor_json_writer_literal_object(context->json_writer,
+ statement->object->value.literal.string,
+ statement->object->value.literal.language,
+ statement->object->value.literal.datatype,
+ "value", "type");
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ raptor_json_writer_blank_object(context->json_writer,
+ statement->object->value.blank.string);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR,
+ NULL,
+ "Triple has unsupported object term type %d",
+ statement->object->type);
+ break;
+ }
+ raptor_json_writer_newline(context->json_writer);
+
+ /* end triple */
+ raptor_json_writer_end_block(context->json_writer, '}');
+
+ context->need_subject_comma = 1;
+ return 0;
+}
+
+
+/* return 0 to abort visit */
+static int
+raptor_json_serialize_avltree_visit(int depth, void* data, void *user_data)
+{
+ raptor_serializer* serializer = (raptor_serializer*)user_data;
+ raptor_json_context* context = (raptor_json_context*)serializer->context;
+
+ raptor_statement* statement = (raptor_statement*)data;
+ raptor_statement* s1 = statement;
+ raptor_statement* s2 = context->last_statement;
+ int new_subject = 0;
+ int new_predicate = 0;
+
+ if(s2) {
+ new_subject = !raptor_term_equals(s1->subject, s2->subject);
+
+ if(new_subject) {
+ /* end last predicate */
+ raptor_json_writer_newline(context->json_writer);
+
+ raptor_json_writer_end_block(context->json_writer, ']');
+ raptor_json_writer_newline(context->json_writer);
+
+ /* end last statement */
+ raptor_json_writer_end_block(context->json_writer, '}');
+ raptor_json_writer_newline(context->json_writer);
+
+ context->need_subject_comma = 1;
+ context->need_object_comma = 0;
+ }
+ } else
+ new_subject = 1;
+
+ if(new_subject) {
+ if(context->need_subject_comma) {
+ raptor_iostream_write_byte(',', serializer->iostream);
+ raptor_json_writer_newline(context->json_writer);
+ }
+
+ /* start triple */
+
+ /* subject */
+ switch(s1->subject->type) {
+ case RAPTOR_TERM_TYPE_URI:
+ raptor_json_writer_key_uri_value(context->json_writer,
+ NULL, 0,
+ s1->subject->value.uri);
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ raptor_iostream_counted_string_write("\"_:", 3, serializer->iostream);
+ raptor_string_python_write(s1->subject->value.blank.string, 0,
+ '"', 2,
+ serializer->iostream);
+ raptor_iostream_write_byte('"', serializer->iostream);
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR,
+ NULL,
+ "Triple has unsupported subject term type %d",
+ s1->subject->type);
+ break;
+ }
+
+ raptor_iostream_counted_string_write(" : ", 3, serializer->iostream);
+ raptor_json_writer_start_block(context->json_writer, '{');
+
+ raptor_json_writer_newline(context->json_writer);
+ }
+
+
+ /* predicate */
+ if(context->last_statement) {
+ if(new_subject)
+ new_predicate = 1;
+ else {
+ new_predicate = !raptor_uri_equals(s1->predicate->value.uri,
+ s2->predicate->value.uri);
+ if(new_predicate) {
+ raptor_json_writer_newline(context->json_writer);
+ raptor_json_writer_end_block(context->json_writer, ']');
+ raptor_iostream_write_byte(',', serializer->iostream);
+ raptor_json_writer_newline(context->json_writer);
+ }
+ }
+ } else
+ new_predicate = 1;
+
+ if(new_predicate) {
+ /* start predicate */
+
+ raptor_json_writer_key_uri_value(context->json_writer,
+ NULL, 0,
+ s1->predicate->value.uri);
+ raptor_iostream_counted_string_write(" : ", 3, serializer->iostream);
+ raptor_json_writer_start_block(context->json_writer, '[');
+ raptor_iostream_write_byte(' ', serializer->iostream);
+
+ context->need_object_comma = 0;
+ }
+
+ if(context->need_object_comma) {
+ raptor_iostream_write_byte(',', serializer->iostream);
+ raptor_json_writer_newline(context->json_writer);
+ }
+
+ /* object */
+ switch(s1->object->type) {
+ case RAPTOR_TERM_TYPE_URI:
+ raptor_json_writer_uri_object(context->json_writer,
+ s1->object->value.uri);
+ raptor_json_writer_newline(context->json_writer);
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ raptor_json_writer_literal_object(context->json_writer,
+ s1->object->value.literal.string,
+ s1->object->value.literal.language,
+ s1->object->value.literal.datatype,
+ "value", "type");
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ raptor_json_writer_blank_object(context->json_writer,
+ s1->object->value.blank.string);
+ raptor_json_writer_newline(context->json_writer);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR,
+ NULL,
+ "Triple has unsupported object term type %d",
+ s1->object->type);
+ break;
+ }
+
+ /* end triple */
+
+ context->need_object_comma = 1;
+ context->last_statement = statement;
+
+ return 1;
+}
+
+
+static int
+raptor_json_serialize_end(raptor_serializer* serializer)
+{
+ raptor_json_context* context = (raptor_json_context*)serializer->context;
+ char* value;
+
+ raptor_json_writer_newline(context->json_writer);
+
+ if(context->is_resource) {
+ /* start outer object */
+ raptor_json_writer_start_block(context->json_writer, '{');
+ raptor_json_writer_newline(context->json_writer);
+
+ raptor_avltree_visit(context->avltree,
+ raptor_json_serialize_avltree_visit,
+ serializer);
+
+ /* end last triples block */
+ if(context->last_statement) {
+ raptor_json_writer_newline(context->json_writer);
+ raptor_json_writer_end_block(context->json_writer, ']');
+ raptor_json_writer_newline(context->json_writer);
+
+ raptor_json_writer_end_block(context->json_writer, '}');
+ raptor_json_writer_newline(context->json_writer);
+ }
+ } else {
+ /* end triples array */
+ raptor_json_writer_end_block(context->json_writer, ']');
+ raptor_json_writer_newline(context->json_writer);
+ }
+
+
+ value = RAPTOR_OPTIONS_GET_STRING(serializer, RAPTOR_OPTION_JSON_EXTRA_DATA);
+ if(value) {
+ raptor_iostream_write_byte(',', serializer->iostream);
+ raptor_json_writer_newline(context->json_writer);
+ raptor_iostream_string_write(value, serializer->iostream);
+ raptor_json_writer_newline(context->json_writer);
+ }
+
+
+ /* end outer object */
+ raptor_json_writer_end_block(context->json_writer, '}');
+ raptor_json_writer_newline(context->json_writer);
+
+ /* end callback */
+ if(RAPTOR_OPTIONS_GET_STRING(serializer, RAPTOR_OPTION_JSON_CALLBACK))
+ raptor_iostream_counted_string_write((const unsigned char*)");", 2,
+ serializer->iostream);
+
+ return 0;
+}
+
+
+static void
+raptor_json_serialize_finish_factory(raptor_serializer_factory* factory)
+{
+ /* NOP */
+}
+
+
+
+static const char* const json_triples_names[3] = { "json-triples", NULL};
+
+#define JSON_TRIPLES_TYPES_COUNT 2
+static const raptor_type_q json_triples_types[JSON_TRIPLES_TYPES_COUNT + 1] = {
+ { "application/json", 16, 0},
+ { "text/json", 9, 1},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_json_triples_serializer_register_factory(raptor_serializer_factory *factory)
+{
+ factory->desc.names = json_triples_names;
+ factory->desc.mime_types = json_triples_types;
+
+ factory->desc.label = "RDF/JSON Triples";
+ factory->desc.uri_strings = NULL;
+
+ factory->context_length = sizeof(raptor_json_context);
+
+ factory->init = raptor_json_serialize_init;
+ factory->terminate = raptor_json_serialize_terminate;
+ factory->declare_namespace = NULL;
+ factory->declare_namespace_from_namespace = NULL;
+ factory->serialize_start = raptor_json_serialize_start;
+ factory->serialize_statement = raptor_json_serialize_statement;
+ factory->serialize_end = raptor_json_serialize_end;
+ factory->finish_factory = raptor_json_serialize_finish_factory;
+
+ return 0;
+}
+
+
+static const char* const json_resource_names[2] = { "json", NULL};
+
+static const char* const json_resource_uri_strings[2] = {
+ "http://docs.api.talis.com/platform-api/output-types/rdf-json",
+ NULL
+};
+
+#define JSON_RESOURCE_TYPES_COUNT 2
+static const raptor_type_q json_resource_types[JSON_RESOURCE_TYPES_COUNT + 1] = {
+ { "application/json", 16, 10},
+ { "text/json", 9, 1},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_json_resource_serializer_register_factory(raptor_serializer_factory *factory)
+{
+ factory->desc.names = json_resource_names;
+ factory->desc.mime_types = json_resource_types;
+
+ factory->desc.label = "RDF/JSON Resource-Centric";
+ factory->desc.uri_strings = json_resource_uri_strings;
+
+ factory->context_length = sizeof(raptor_json_context);
+
+ factory->init = raptor_json_serialize_init;
+ factory->terminate = raptor_json_serialize_terminate;
+ factory->declare_namespace = NULL;
+ factory->declare_namespace_from_namespace = NULL;
+ factory->serialize_start = raptor_json_serialize_start;
+ factory->serialize_statement = raptor_json_serialize_statement;
+ factory->serialize_end = raptor_json_serialize_end;
+ factory->finish_factory = raptor_json_serialize_finish_factory;
+
+ return 0;
+}
+
+
+int
+raptor_init_serializer_json(raptor_world* world)
+{
+ int rc;
+
+ rc = !raptor_serializer_register_factory(world,
+ &raptor_json_triples_serializer_register_factory);
+ if(rc)
+ return rc;
+
+ rc = !raptor_serializer_register_factory(world,
+ &raptor_json_resource_serializer_register_factory);
+
+ return rc;
+}
diff --git a/src/raptor_serialize_ntriples.c b/src/raptor_serialize_ntriples.c
new file mode 100644
index 0000000..6ead0bc
--- /dev/null
+++ b/src/raptor_serialize_ntriples.c
@@ -0,0 +1,384 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_serialize_ntriples.c - N-Triples and Nquads serializer
+ *
+ * Copyright (C) 2004-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2004-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/*
+ * Raptor N-Triples serializer object
+ */
+typedef struct {
+ int is_nquads;
+} raptor_ntriples_serializer_context;
+
+
+
+/* create a new serializer */
+static int
+raptor_ntriples_serialize_init(raptor_serializer* serializer, const char *name)
+{
+ raptor_ntriples_serializer_context* ntriples_serializer;
+
+ ntriples_serializer = (raptor_ntriples_serializer_context*)serializer->context;
+ ntriples_serializer->is_nquads = !strcmp(name, "nquads");
+
+ return 0;
+}
+
+
+/* destroy a serializer */
+static void
+raptor_ntriples_serialize_terminate(raptor_serializer* serializer)
+{
+
+}
+
+
+/* add a namespace */
+static int
+raptor_ntriples_serialize_declare_namespace(raptor_serializer* serializer,
+ raptor_uri *uri,
+ const unsigned char *prefix)
+{
+ /* NOP */
+ return 0;
+}
+
+
+#if 0
+/* start a serialize */
+static int
+raptor_ntriples_serialize_start(raptor_serializer* serializer)
+{
+ return 0;
+}
+#endif
+
+
+
+/**
+ * raptor_string_ntriples_write:
+ * @string: UTF-8 string to write
+ * @len: length of UTF-8 string
+ * @delim: Terminating delimiter character for string (such as " or >)
+ * or \0 for no escaping.
+ * @iostr: #raptor_iostream to write to
+ *
+ * Write an UTF-8 string using N-Triples escapes to an iostream.
+ *
+ * Return value: non-0 on failure such as bad UTF-8 encoding.
+ **/
+int
+raptor_string_ntriples_write(const unsigned char *string,
+ size_t len,
+ const char delim,
+ raptor_iostream *iostr)
+{
+ return raptor_string_python_write(string, len, delim, 0, iostr);
+}
+
+
+/**
+ * raptor_bnodeid_ntriples_write:
+ * @bnodeid: bnode ID to write
+ * @len: length of bnode ID
+ * @iostr: #raptor_iostream to write to
+ *
+ * Write a blank node ID in a form legal for N-Triples with _: prefix
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_bnodeid_ntriples_write(const unsigned char *bnodeid,
+ size_t len,
+ raptor_iostream *iostr)
+{
+ unsigned int i;
+
+ raptor_iostream_counted_string_write("_:", 2, iostr);
+
+ for(i = 0; i < len; i++) {
+ unsigned char c = *bnodeid++;
+ if(!isalpha(c) && !isdigit(c)) {
+ /* Replace characters not in legal N-Triples bnode set */
+ c = 'z';
+ }
+ raptor_iostream_write_byte(c, iostr);
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_term_ntriples_write:
+ * @term: term to write
+ * @iostr: raptor iostream
+ *
+ * Write a #raptor_term formatted in N-Triples format to a #raptor_iostream
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_term_ntriples_write(const raptor_term *term, raptor_iostream* iostr)
+{
+ unsigned char *term_str;
+ size_t len;
+
+ if(!term)
+ return 1;
+
+ switch(term->type) {
+ case RAPTOR_TERM_TYPE_LITERAL:
+ raptor_iostream_write_byte('"', iostr);
+ raptor_string_ntriples_write(term->value.literal.string,
+ term->value.literal.string_len,
+ '"',
+ iostr);
+ raptor_iostream_write_byte('"', iostr);
+ if(term->value.literal.language) {
+ raptor_iostream_write_byte('@', iostr);
+ raptor_iostream_string_write(term->value.literal.language, iostr);
+ }
+ if(term->value.literal.datatype) {
+ raptor_iostream_counted_string_write("^^<", 3, iostr);
+ raptor_iostream_string_write(raptor_uri_as_string(term->value.literal.datatype),
+ iostr);
+ raptor_iostream_write_byte('>', iostr);
+ }
+
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ raptor_bnodeid_ntriples_write(term->value.blank.string,
+ term->value.blank.string_len,
+ iostr);
+ break;
+
+ case RAPTOR_TERM_TYPE_URI:
+ raptor_iostream_write_byte('<', iostr);
+ term_str = raptor_uri_as_counted_string(term->value.uri, &len);
+ raptor_string_ntriples_write(term_str, len, '>', iostr);
+ raptor_iostream_write_byte('>', iostr);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(term->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Triple has unsupported term type %d",
+ term->type);
+ return 1;
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_statement_ntriples_write:
+ * @statement: statement to write
+ * @iostr: raptor iostream
+ * @write_graph_term: flag to write graph term if present
+ *
+ * Write a #raptor_statement formatted in N-Triples or N-Quads format
+ * to a #raptor_iostream
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_statement_ntriples_write(const raptor_statement *statement,
+ raptor_iostream* iostr,
+ int write_graph_term)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(statement, raptor_statement, 1);
+
+ if(raptor_term_ntriples_write(statement->subject, iostr))
+ return 1;
+
+ raptor_iostream_write_byte(' ', iostr);
+ if(raptor_term_ntriples_write(statement->predicate, iostr))
+ return 1;
+
+ raptor_iostream_write_byte(' ', iostr);
+ if(raptor_term_ntriples_write(statement->object, iostr))
+ return 1;
+
+ if(statement->graph && write_graph_term) {
+ raptor_iostream_write_byte(' ', iostr);
+ if(raptor_term_ntriples_write(statement->graph, iostr))
+ return 1;
+ }
+
+ raptor_iostream_counted_string_write(" .\n", 3, iostr);
+
+ return 0;
+}
+
+
+/* serialize a statement */
+static int
+raptor_ntriples_serialize_statement(raptor_serializer* serializer,
+ raptor_statement *statement)
+{
+ raptor_ntriples_serializer_context* ntriples_serializer;
+
+ ntriples_serializer = (raptor_ntriples_serializer_context*)serializer->context;
+
+ raptor_statement_ntriples_write(statement, serializer->iostream,
+ ntriples_serializer->is_nquads);
+ return 0;
+}
+
+
+#if 0
+/* end a serialize */
+static int
+raptor_ntriples_serialize_end(raptor_serializer* serializer)
+{
+ return 0;
+}
+#endif
+
+/* finish the serializer factory */
+static void
+raptor_ntriples_serialize_finish_factory(raptor_serializer_factory* factory)
+{
+
+}
+
+
+#ifdef RAPTOR_SERIALIZER_NTRIPLES
+static const char* const ntriples_names[2] = { "ntriples", NULL};
+
+static const char* const ntriples_uri_strings[3] = {
+ "http://www.w3.org/ns/formats/N-Triples",
+ "http://www.w3.org/TR/rdf-testcases/#ntriples",
+ NULL
+};
+
+#define NTRIPLES_TYPES_COUNT 1
+static const raptor_type_q ntriples_types[NTRIPLES_TYPES_COUNT + 1] = {
+ { "text/plain", 10, 1},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_ntriples_serializer_register_factory(raptor_serializer_factory *factory)
+{
+ factory->desc.names = ntriples_names;
+ factory->desc.mime_types = ntriples_types;
+
+ factory->desc.label = "N-Triples";
+ factory->desc.uri_strings = ntriples_uri_strings;
+
+ factory->context_length = sizeof(raptor_ntriples_serializer_context);
+
+ factory->init = raptor_ntriples_serialize_init;
+ factory->terminate = raptor_ntriples_serialize_terminate;
+ factory->declare_namespace = raptor_ntriples_serialize_declare_namespace;
+ factory->serialize_start = NULL;
+ factory->serialize_statement = raptor_ntriples_serialize_statement;
+ factory->serialize_end = NULL;
+ factory->finish_factory = raptor_ntriples_serialize_finish_factory;
+
+ return 0;
+}
+#endif
+
+
+#ifdef RAPTOR_SERIALIZER_NQUADS
+static const char* const nquads_names[2] = { "nquads", NULL};
+
+static const char* const nquads_uri_strings[2] = {
+ "http://sw.deri.org/2008/07/n-quads/#n-quads",
+ NULL
+};
+
+#define NQUADS_TYPES_COUNT 1
+static const raptor_type_q nquads_types[NQUADS_TYPES_COUNT + 1] = {
+ { "text/x-nquads", 13, 10},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_nquads_serializer_register_factory(raptor_serializer_factory *factory)
+{
+ factory->desc.names = nquads_names;
+ factory->desc.mime_types = nquads_types;
+
+ factory->desc.label = "N-Quads";
+ factory->desc.uri_strings = nquads_uri_strings;
+
+ factory->context_length = sizeof(raptor_ntriples_serializer_context);
+
+ factory->init = raptor_ntriples_serialize_init;
+ factory->terminate = raptor_ntriples_serialize_terminate;
+ factory->declare_namespace = raptor_ntriples_serialize_declare_namespace;
+ factory->serialize_start = NULL;
+ factory->serialize_statement = raptor_ntriples_serialize_statement;
+ factory->serialize_end = NULL;
+ factory->finish_factory = raptor_ntriples_serialize_finish_factory;
+
+ return 0;
+}
+#endif
+
+#ifdef RAPTOR_SERIALIZER_NTRIPLES
+int
+raptor_init_serializer_ntriples(raptor_world* world)
+{
+ return !raptor_serializer_register_factory(world,
+ &raptor_ntriples_serializer_register_factory);
+}
+#endif
+
+#ifdef RAPTOR_SERIALIZER_NQUADS
+int
+raptor_init_serializer_nquads(raptor_world* world)
+{
+ return !raptor_serializer_register_factory(world,
+ &raptor_nquads_serializer_register_factory);
+}
+#endif
diff --git a/src/raptor_serialize_rdfxml.c b/src/raptor_serialize_rdfxml.c
new file mode 100644
index 0000000..032a0a8
--- /dev/null
+++ b/src/raptor_serialize_rdfxml.c
@@ -0,0 +1,745 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_serialize_rdfxml.c - RDF/XML serializer
+ *
+ * Copyright (C) 2004-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2004-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/*
+ * Raptor RDF/XML serializer object
+ */
+typedef struct {
+ /* Namespace stack */
+ raptor_namespace_stack *nstack;
+
+ /* the xml: namespace - this is destroyed when nstack above is deleted */
+ raptor_namespace *xml_nspace;
+
+ /* the rdf: namespace - this is destroyed when nstack above is deleted */
+ raptor_namespace *rdf_nspace;
+
+ /* the rdf:RDF element */
+ raptor_xml_element* rdf_RDF_element;
+
+ /* where the xml is being written */
+ raptor_xml_writer *xml_writer;
+
+ /* User declared namespaces */
+ raptor_sequence *namespaces;
+
+ /* non zero if rdf:RDF has been written (and thus no new namespaces
+ * can be declared).
+ */
+ int written_header;
+} raptor_rdfxml_serializer_context;
+
+
+/* local prototypes */
+
+static void
+raptor_rdfxml_serialize_terminate(raptor_serializer* serializer);
+
+/* create a new serializer */
+static int
+raptor_rdfxml_serialize_init(raptor_serializer* serializer, const char *name)
+{
+ raptor_rdfxml_serializer_context* context = (raptor_rdfxml_serializer_context*)serializer->context;
+
+ context->nstack = raptor_new_namespaces(serializer->world, 1);
+ if(!context->nstack)
+ return 1;
+ context->xml_nspace = raptor_new_namespace(context->nstack,
+ (const unsigned char*)"xml",
+ (const unsigned char*)raptor_xml_namespace_uri,
+ 0);
+
+ context->rdf_nspace = raptor_new_namespace(context->nstack,
+ (const unsigned char*)"rdf",
+ (const unsigned char*)raptor_rdf_namespace_uri,
+ 0);
+
+ context->namespaces = raptor_new_sequence(NULL, NULL);
+
+ if(!context->xml_nspace || !context->rdf_nspace || !context->namespaces) {
+ raptor_rdfxml_serialize_terminate(serializer);
+ return 1;
+ }
+
+ /* Note: item 0 in the list is rdf:RDF's namespace */
+ if(raptor_sequence_push(context->namespaces, context->rdf_nspace)) {
+ raptor_rdfxml_serialize_terminate(serializer);
+ return 1;
+ }
+
+ return 0;
+}
+
+
+/* destroy a serializer */
+static void
+raptor_rdfxml_serialize_terminate(raptor_serializer* serializer)
+{
+ raptor_rdfxml_serializer_context* context = (raptor_rdfxml_serializer_context*)serializer->context;
+
+ if(context->xml_writer) {
+ raptor_free_xml_writer(context->xml_writer);
+ context->xml_writer = NULL;
+ }
+
+ if(context->rdf_RDF_element) {
+ raptor_free_xml_element(context->rdf_RDF_element);
+ context->rdf_RDF_element = NULL;
+ }
+
+ if(context->rdf_nspace) {
+ raptor_free_namespace(context->rdf_nspace);
+ context->rdf_nspace = NULL;
+ }
+
+ if(context->xml_nspace) {
+ raptor_free_namespace(context->xml_nspace);
+ context->xml_nspace = NULL;
+ }
+
+ if(context->namespaces) {
+ int i;
+
+ /* Note: item 0 in the list is rdf:RDF's namespace and freed above */
+ for(i = 1; i< raptor_sequence_size(context->namespaces); i++) {
+ raptor_namespace* ns = (raptor_namespace*)raptor_sequence_get_at(context->namespaces, i);
+ if(ns)
+ raptor_free_namespace(ns);
+ }
+ raptor_free_sequence(context->namespaces);
+ context->namespaces = NULL;
+ }
+
+ if(context->nstack) {
+ raptor_free_namespaces(context->nstack);
+ context->nstack = NULL;
+ }
+}
+
+
+#define RDFXML_NAMESPACE_DEPTH 0
+
+/* add a namespace */
+static int
+raptor_rdfxml_serialize_declare_namespace_from_namespace(raptor_serializer* serializer,
+ raptor_namespace *nspace)
+{
+ raptor_rdfxml_serializer_context* context = (raptor_rdfxml_serializer_context*)serializer->context;
+ int i;
+
+ if(context->written_header)
+ return 1;
+
+ for(i = 0; i< raptor_sequence_size(context->namespaces); i++) {
+ raptor_namespace* ns;
+ ns = (raptor_namespace*)raptor_sequence_get_at(context->namespaces, i);
+
+ /* If prefix is already declared, ignore it */
+ if(!ns->prefix && !nspace->prefix)
+ return 1;
+
+ if(ns->prefix && nspace->prefix &&
+ !strcmp((const char*)ns->prefix, (const char*)nspace->prefix))
+ return 1;
+
+ if(ns->uri && nspace->uri &&
+ raptor_uri_equals(ns->uri, nspace->uri))
+ return 1;
+ }
+
+ nspace = raptor_new_namespace_from_uri(context->nstack,
+ nspace->prefix, nspace->uri,
+ RDFXML_NAMESPACE_DEPTH);
+ if(!nspace)
+ return 1;
+
+ raptor_sequence_push(context->namespaces, nspace);
+ return 0;
+}
+
+
+/* add a namespace */
+static int
+raptor_rdfxml_serialize_declare_namespace(raptor_serializer* serializer,
+ raptor_uri *uri,
+ const unsigned char *prefix)
+{
+ raptor_rdfxml_serializer_context* context = (raptor_rdfxml_serializer_context*)serializer->context;
+ raptor_namespace *ns;
+ int rc;
+
+ ns = raptor_new_namespace_from_uri(context->nstack, prefix, uri,
+ RDFXML_NAMESPACE_DEPTH);
+
+ rc = raptor_rdfxml_serialize_declare_namespace_from_namespace(serializer,
+ ns);
+ raptor_free_namespace(ns);
+
+ return rc;
+}
+
+
+/* start a serialize */
+static int
+raptor_rdfxml_serialize_start(raptor_serializer* serializer)
+{
+ raptor_rdfxml_serializer_context* context = (raptor_rdfxml_serializer_context*)serializer->context;
+ raptor_xml_writer* xml_writer;
+ raptor_option option;
+
+ if(context->xml_writer) {
+ raptor_free_xml_writer(context->xml_writer);
+ context->xml_writer = NULL;
+ }
+
+ xml_writer = raptor_new_xml_writer(serializer->world, context->nstack,
+ serializer->iostream);
+ if(!xml_writer)
+ return 1;
+
+ option = RAPTOR_OPTION_WRITER_XML_VERSION;
+ raptor_xml_writer_set_option(xml_writer, option, NULL,
+ RAPTOR_OPTIONS_GET_NUMERIC(serializer, option));
+ option = RAPTOR_OPTION_WRITER_XML_DECLARATION;
+ raptor_xml_writer_set_option(xml_writer, option, NULL,
+ RAPTOR_OPTIONS_GET_NUMERIC(serializer, option));
+
+ context->xml_writer = xml_writer;
+ context->written_header = 0;
+
+ return 0;
+}
+
+
+static int
+raptor_rdfxml_ensure_writen_header(raptor_serializer* serializer,
+ raptor_rdfxml_serializer_context* context)
+{
+ raptor_xml_writer* xml_writer;
+ raptor_uri *base_uri;
+ int i;
+ raptor_qname **attrs = NULL;
+ int attrs_count = 0;
+ int rc = 1;
+
+ if(context->written_header)
+ return 0;
+
+ context->written_header = 1;
+
+ xml_writer = context->xml_writer;
+
+ base_uri = serializer->base_uri;
+ if(base_uri)
+ base_uri = raptor_uri_copy(base_uri);
+
+ context->rdf_RDF_element = raptor_new_xml_element_from_namespace_local_name(context->rdf_nspace, (const unsigned char*)"RDF", NULL, base_uri);
+ if(!context->rdf_RDF_element)
+ goto tidy;
+
+ /* NOTE: Starts it item 1 as item 0 is the element's namespace (rdf)
+ * and does not need to be declared
+ */
+ for(i = 1; i< raptor_sequence_size(context->namespaces); i++) {
+ raptor_namespace* ns = (raptor_namespace*)raptor_sequence_get_at(context->namespaces, i);
+ if(raptor_xml_element_declare_namespace(context->rdf_RDF_element, ns))
+ goto tidy;
+ }
+
+ if(base_uri &&
+ RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_WRITE_BASE_URI)) {
+ const unsigned char* base_uri_string;
+
+ attrs = RAPTOR_CALLOC(raptor_qname **, 1, sizeof(raptor_qname*));
+ if(!attrs)
+ goto tidy;
+
+ base_uri_string = raptor_uri_as_string(base_uri);
+ attrs[attrs_count] = raptor_new_qname_from_namespace_local_name(serializer->world, context->xml_nspace, (const unsigned char*)"base", base_uri_string);
+ if(!attrs[attrs_count]) {
+ RAPTOR_FREE(qnamearray, attrs);
+ goto tidy;
+ }
+ attrs_count++;
+ }
+
+ if(attrs_count)
+ raptor_xml_element_set_attributes(context->rdf_RDF_element, attrs,
+ attrs_count);
+ else
+ raptor_xml_element_set_attributes(context->rdf_RDF_element, NULL, 0);
+
+
+ raptor_xml_writer_start_element(xml_writer, context->rdf_RDF_element);
+ raptor_xml_writer_raw_counted(xml_writer, (const unsigned char*)"\n", 1);
+
+ rc = 0;
+
+ tidy:
+ if(base_uri)
+ raptor_free_uri(base_uri);
+
+ return rc;
+}
+
+
+/* serialize a statement */
+static int
+raptor_rdfxml_serialize_statement(raptor_serializer* serializer,
+ raptor_statement *statement)
+{
+ raptor_rdfxml_serializer_context* context = (raptor_rdfxml_serializer_context*)serializer->context;
+ raptor_xml_writer* xml_writer = context->xml_writer;
+ unsigned char* uri_string = NULL; /* predicate URI */
+ unsigned char* name = NULL; /* where to split predicate name */
+ unsigned char* subject_uri_string = NULL;
+ unsigned char* object_uri_string = NULL;
+ const unsigned char* nsprefix = (const unsigned char*)"ns0";
+ int rc = 1;
+ size_t len;
+ raptor_xml_element* rdf_Description_element = NULL;
+ raptor_uri* predicate_ns_uri = NULL;
+ raptor_namespace* predicate_ns = NULL;
+ int free_predicate_ns = 0;
+ raptor_xml_element* predicate_element = NULL;
+ int end_predicate_element = 0;
+ raptor_qname **attrs = NULL;
+ int attrs_count = 0;
+ raptor_uri* base_uri = NULL;
+ raptor_term_type object_type;
+ int allocated = 1;
+ int object_is_parseTypeLiteral = 0;
+
+ if(raptor_rdfxml_ensure_writen_header(serializer, context))
+ return 1;
+
+ if(statement->predicate->type == RAPTOR_TERM_TYPE_URI) {
+ unsigned char *p;
+ size_t uri_len;
+ size_t name_len = 1;
+ unsigned char c;
+
+ /* Do not use raptor_uri_as_counted_string() - we want a modifiable copy */
+ uri_string = raptor_uri_to_counted_string(statement->predicate->value.uri,
+ &uri_len);
+ if(!uri_string)
+ goto oom;
+
+ p= uri_string;
+ name_len = uri_len;
+ /* FIXME: this loop could be made smarter */
+ while(name_len >0) {
+ if(raptor_xml_name_check(p, name_len, 10)) {
+ name = p;
+ break;
+ }
+ p++; name_len--;
+ }
+
+ if(!name || (name == uri_string)) {
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot split predicate URI %s into an XML qname - skipping statement", uri_string);
+ rc = 0; /* skip but do not return an error */
+ goto tidy;
+ }
+
+ c=*name; *name='\0';
+ predicate_ns_uri = raptor_new_uri(serializer->world, uri_string);
+ if(!predicate_ns_uri)
+ goto oom;
+ *name=c;
+
+ predicate_ns = raptor_namespaces_find_namespace_by_uri(context->nstack,
+ predicate_ns_uri);
+ if(!predicate_ns) {
+ predicate_ns = raptor_new_namespace_from_uri(context->nstack,
+ nsprefix,
+ predicate_ns_uri, 0);
+ if(!predicate_ns) {
+ raptor_free_uri(predicate_ns_uri);
+ goto oom;
+ }
+ free_predicate_ns = 1;
+ }
+ raptor_free_uri(predicate_ns_uri);
+ } else {
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot serialize a triple with subject node type %d\n",
+ statement->predicate->type);
+ goto tidy;
+ }
+
+ /* base uri */
+ if(serializer->base_uri)
+ base_uri = raptor_uri_copy(serializer->base_uri);
+
+
+ rdf_Description_element = raptor_new_xml_element_from_namespace_local_name(context->rdf_nspace,
+ (unsigned const char*)"Description",
+ NULL, base_uri);
+ if(!rdf_Description_element)
+ goto oom;
+
+ attrs = RAPTOR_CALLOC(raptor_qname**, 3, sizeof(raptor_qname*));
+ if(!attrs)
+ goto oom;
+ attrs_count = 0;
+
+ /* subject */
+ switch(statement->subject->type) {
+ case RAPTOR_TERM_TYPE_BLANK:
+ attrs[attrs_count] = raptor_new_qname_from_namespace_local_name(serializer->world, context->rdf_nspace, (const unsigned char*)"nodeID",
+ statement->subject->value.blank.string);
+ if(!attrs[attrs_count])
+ goto oom;
+ attrs_count++;
+ break;
+
+ case RAPTOR_TERM_TYPE_URI:
+ allocated = 1;
+ if(RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_RELATIVE_URIS)) {
+ subject_uri_string = raptor_uri_to_relative_uri_string(serializer->base_uri,
+ statement->subject->value.uri);
+ if(!subject_uri_string)
+ goto oom;
+ } else {
+ subject_uri_string = raptor_uri_as_string(statement->subject->value.uri);
+ allocated = 0;
+ }
+
+ attrs[attrs_count] = raptor_new_qname_from_namespace_local_name(serializer->world, context->rdf_nspace, (const unsigned char*)"about", subject_uri_string);
+ if(!attrs[attrs_count]) {
+ if(allocated)
+ RAPTOR_FREE(char*, subject_uri_string);
+ goto oom;
+ }
+ attrs_count++;
+
+ if(allocated)
+ RAPTOR_FREE(char*, subject_uri_string);
+
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ raptor_log_error(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL, "Cannot serialize a triple with a literal subject\n");
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot serialize a triple with subject node type %d",
+ statement->subject->type);
+ }
+
+ if(attrs_count) {
+ raptor_xml_element_set_attributes(rdf_Description_element, attrs, attrs_count);
+ attrs = NULL; /* attrs ownership transferred to element */
+ }
+
+ raptor_xml_writer_cdata_counted(xml_writer, (const unsigned char*)" ", 2);
+ raptor_xml_writer_start_element(xml_writer, rdf_Description_element);
+ raptor_xml_writer_cdata_counted(xml_writer, (const unsigned char*)"\n", 1);
+
+
+ /* predicate */
+ predicate_element = raptor_new_xml_element_from_namespace_local_name(predicate_ns, name, NULL, base_uri);
+ if(!predicate_element)
+ goto oom;
+
+ /* object */
+ attrs = RAPTOR_CALLOC(raptor_qname**, 3, sizeof(raptor_qname*));
+ if(!attrs)
+ goto oom;
+ attrs_count = 0;
+
+ object_type = statement->object->type;
+ switch(object_type) {
+ case RAPTOR_TERM_TYPE_LITERAL:
+ object_is_parseTypeLiteral = 0;
+ if(statement->object->value.literal.datatype &&
+ raptor_uri_equals(statement->object->value.literal.datatype,
+ RAPTOR_RDF_XMLLiteral_URI(serializer->world)))
+ object_is_parseTypeLiteral = 1;
+
+ if(statement->object->value.literal.language) {
+ attrs[attrs_count] = raptor_new_qname(context->nstack,
+ (unsigned char*)"xml:lang",
+ statement->object->value.literal.language);
+ if(!attrs[attrs_count])
+ goto oom;
+ attrs_count++;
+ }
+ len = statement->object->value.literal.string_len;
+
+ if(object_is_parseTypeLiteral) {
+ attrs[attrs_count] = raptor_new_qname_from_namespace_local_name(serializer->world, context->rdf_nspace, (const unsigned char*)"parseType", (const unsigned char*)"Literal");
+ if(!attrs[attrs_count])
+ goto oom;
+ attrs_count++;
+
+ raptor_xml_element_set_attributes(predicate_element, attrs, attrs_count);
+ attrs = NULL; /* attrs ownership transferred to element */
+
+ raptor_xml_writer_cdata_counted(xml_writer, (const unsigned char*)" ", 4);
+ raptor_xml_writer_start_element(xml_writer, predicate_element);
+
+ /* Print without escaping XML */
+ if(len)
+ raptor_xml_writer_raw_counted(xml_writer,
+ (const unsigned char*)statement->object->value.literal.string,
+ RAPTOR_BAD_CAST(unsigned int, len));
+ } else {
+ if(statement->object->value.literal.datatype) {
+ attrs[attrs_count] = raptor_new_qname_from_namespace_local_name(serializer->world, context->rdf_nspace, (const unsigned char*)"datatype", raptor_uri_as_string(statement->object->value.literal.datatype));
+ if(!attrs[attrs_count])
+ goto oom;
+ attrs_count++;
+ }
+ raptor_xml_element_set_attributes(predicate_element, attrs, attrs_count);
+ attrs = NULL; /* attrs ownership transferred to element */
+
+ raptor_xml_writer_cdata_counted(xml_writer,
+ (const unsigned char*)" ", 4);
+ raptor_xml_writer_start_element(xml_writer, predicate_element);
+
+ if(len)
+ raptor_xml_writer_cdata_counted(xml_writer,
+ statement->object->value.literal.string,
+ RAPTOR_BAD_CAST(unsigned int, len));
+ }
+
+ raptor_xml_writer_end_element(xml_writer, predicate_element);
+ end_predicate_element = 0;
+ raptor_free_xml_element(predicate_element);
+ predicate_element = NULL;
+ raptor_xml_writer_cdata_counted(xml_writer, (const unsigned char*)"\n", 1);
+
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ attrs[attrs_count] = raptor_new_qname_from_namespace_local_name(serializer->world, context->rdf_nspace, (const unsigned char*)"nodeID", statement->object->value.blank.string);
+ if(!attrs[attrs_count])
+ goto oom;
+ attrs_count++;
+
+ raptor_xml_element_set_attributes(predicate_element, attrs, attrs_count);
+ attrs = NULL; /* attrs ownership transferred to element */
+
+ raptor_xml_writer_cdata_counted(xml_writer,
+ (const unsigned char*)" ", 4);
+ raptor_xml_writer_empty_element(xml_writer, predicate_element);
+ raptor_xml_writer_cdata_counted(xml_writer, (const unsigned char*)"\n", 1);
+ break;
+
+ case RAPTOR_TERM_TYPE_URI:
+ allocated = 1;
+ /* must be URI */
+ if(RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_RELATIVE_URIS)) {
+ object_uri_string = raptor_uri_to_relative_uri_string(serializer->base_uri,
+ statement->object->value.uri);
+ if(!object_uri_string)
+ goto oom;
+ } else {
+ object_uri_string = raptor_uri_to_string(statement->object->value.uri);
+ allocated = 0;
+ }
+
+ attrs[attrs_count] = raptor_new_qname_from_namespace_local_name(serializer->world, context->rdf_nspace, (const unsigned char*)"resource", object_uri_string);
+ if(!attrs[attrs_count]) {
+ if(allocated)
+ RAPTOR_FREE(char*, object_uri_string);
+ goto oom;
+ }
+ attrs_count++;
+
+ if(allocated)
+ RAPTOR_FREE(char*, object_uri_string);
+
+ raptor_xml_element_set_attributes(predicate_element, attrs, attrs_count);
+ attrs = NULL; /* attrs ownership transferred to element */
+
+ raptor_xml_writer_cdata_counted(xml_writer,
+ (const unsigned char*)" ", 4);
+ raptor_xml_writer_empty_element(xml_writer, predicate_element);
+ raptor_xml_writer_cdata_counted(xml_writer, (const unsigned char*)"\n", 1);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot serialize a triple with object node type %d",
+ object_type);
+ }
+
+ raptor_xml_writer_cdata_counted(xml_writer,
+ (const unsigned char*)" ", 2);
+
+ rc = 0; /* success */
+ goto tidy;
+
+ oom:
+ raptor_log_error(serializer->world, RAPTOR_LOG_LEVEL_FATAL, NULL,
+ "Out of memory");
+
+ tidy:
+
+ if(attrs)
+ RAPTOR_FREE(qnamearray, attrs);
+
+ if(predicate_element) {
+ if(end_predicate_element)
+ raptor_xml_writer_end_element(xml_writer, predicate_element);
+ raptor_free_xml_element(predicate_element);
+ }
+
+ if(rdf_Description_element) {
+ raptor_xml_writer_end_element(xml_writer, rdf_Description_element);
+ raptor_xml_writer_cdata_counted(xml_writer, (const unsigned char*)"\n", 1);
+ raptor_free_xml_element(rdf_Description_element);
+ }
+
+ if(base_uri)
+ raptor_free_uri(base_uri);
+
+ if(free_predicate_ns)
+ raptor_free_namespace(predicate_ns);
+
+ if(uri_string)
+ RAPTOR_FREE(char*, uri_string);
+
+ return rc;
+}
+
+
+/* end a serialize */
+static int
+raptor_rdfxml_serialize_end(raptor_serializer* serializer)
+{
+ raptor_rdfxml_serializer_context* context = (raptor_rdfxml_serializer_context*)serializer->context;
+ raptor_xml_writer* xml_writer = context->xml_writer;
+
+ if(xml_writer) {
+ /* Make sure an empty RDF/XML document is written when 0 triples
+ * were seen
+ */
+
+ /* ignore ret value */
+ raptor_rdfxml_ensure_writen_header(serializer, context);
+
+ if(context->rdf_RDF_element) {
+ raptor_xml_writer_end_element(xml_writer, context->rdf_RDF_element);
+ raptor_xml_writer_raw_counted(xml_writer, (const unsigned char*)"\n", 1);
+ }
+
+ raptor_xml_writer_flush(xml_writer);
+ }
+
+ if(context->rdf_RDF_element) {
+ raptor_free_xml_element(context->rdf_RDF_element);
+ context->rdf_RDF_element = NULL;
+ }
+
+ return 0;
+}
+
+
+/* finish the serializer factory */
+static void
+raptor_rdfxml_serialize_finish_factory(raptor_serializer_factory* factory)
+{
+
+}
+
+static const char* const rdfxml_names[2] = { "rdfxml", NULL};
+
+static const char* const rdfxml_uri_strings[3] = {
+ "http://www.w3.org/ns/formats/RDF_XML",
+ "http://www.w3.org/TR/rdf-syntax-grammar",
+ NULL
+};
+
+#define RDFXML_TYPES_COUNT 2
+static const raptor_type_q rdfxml_types[RDFXML_TYPES_COUNT + 1] = {
+ { "application/rdf+xml", 19, 10},
+ { "text/rdf", 8, 6},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_rdfxml_serializer_register_factory(raptor_serializer_factory *factory)
+{
+ factory->desc.names = rdfxml_names;
+ factory->desc.mime_types = rdfxml_types;
+
+ factory->desc.label = "RDF/XML";
+ factory->desc.uri_strings = rdfxml_uri_strings,
+
+ factory->context_length = sizeof(raptor_rdfxml_serializer_context);
+
+ factory->init = raptor_rdfxml_serialize_init;
+ factory->terminate = raptor_rdfxml_serialize_terminate;
+ factory->declare_namespace = raptor_rdfxml_serialize_declare_namespace;
+ factory->declare_namespace_from_namespace = raptor_rdfxml_serialize_declare_namespace_from_namespace;
+ factory->serialize_start = raptor_rdfxml_serialize_start;
+ factory->serialize_statement = raptor_rdfxml_serialize_statement;
+ factory->serialize_end = raptor_rdfxml_serialize_end;
+ factory->finish_factory = raptor_rdfxml_serialize_finish_factory;
+
+ return 0;
+}
+
+
+
+int
+raptor_init_serializer_rdfxml(raptor_world* world)
+{
+ return !raptor_serializer_register_factory(world,
+ &raptor_rdfxml_serializer_register_factory);
+}
+
+
diff --git a/src/raptor_serialize_rdfxmla.c b/src/raptor_serialize_rdfxmla.c
new file mode 100644
index 0000000..fe60096
--- /dev/null
+++ b/src/raptor_serialize_rdfxmla.c
@@ -0,0 +1,1576 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_serialize_rdfxmla.c - RDF/XML with abbreviations serializer
+ *
+ * Copyright (C) 2004-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2004-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ * Copyright (C) 2005, Steve Shepard steveshep@gmail.com
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/*
+ * Raptor rdfxml-abbrev serializer object
+ */
+typedef struct {
+ raptor_namespace_stack *nstack; /* Namespace stack */
+ raptor_namespace *xml_nspace; /* the xml: namespace */
+ raptor_namespace *rdf_nspace; /* the rdf: namespace */
+ raptor_xml_element* rdf_RDF_element; /* the rdf:RDF element */
+ raptor_xml_writer *xml_writer; /* where the xml is being written */
+ raptor_sequence *namespaces; /* User declared namespaces */
+ raptor_avltree *subjects; /* subject items */
+ raptor_avltree *blanks; /* blank subject items */
+ raptor_avltree *nodes; /* nodes */
+ raptor_abbrev_node *rdf_type; /* rdf:type uri */
+
+ /* non-zero if is Adobe XMP abbreviated form */
+ int is_xmp;
+
+ /* non zero if rdf:RDF has been written (and thus no new namespaces
+ * can be declared).
+ */
+ int written_header;
+
+ /* for labeling namespaces */
+ int namespace_count;
+
+ /* xml_writer was passed in and not owned by us */
+ int external_xml_writer;
+
+ /* true if should write rdf:RDF */
+ int write_rdf_RDF;
+
+ /* starting namespace stack depth */
+ int starting_depth;
+
+ /* namespaces stack was passed in andn not owned by us */
+ int external_nstack;
+
+ /* If not NULL, the URI of the single node to serialize - starting
+ * from property elements */
+ raptor_uri* single_node;
+
+ /* If non-0, emit typed nodes */
+ int write_typed_nodes;
+} raptor_rdfxmla_context;
+
+
+/* prototypes for functions */
+
+static int raptor_rdfxmla_emit_resource(raptor_serializer *serializer,
+ raptor_xml_element *element,
+ raptor_abbrev_node *node,
+ int depth);
+
+static int raptor_rdfxmla_emit_literal(raptor_serializer *serializer,
+ raptor_xml_element *element,
+ raptor_abbrev_node *node,
+ int depth);
+static int raptor_rdfxmla_emit_blank(raptor_serializer *serializer,
+ raptor_xml_element *element,
+ raptor_abbrev_node* node,
+ int depth);
+static int raptor_rdfxmla_emit_subject_list_items(raptor_serializer* serializer,
+ raptor_abbrev_subject* subject,
+ int depth);
+static int raptor_rdfxmla_emit_subject_properties(raptor_serializer *serializer,
+ raptor_abbrev_subject* subject,
+ int depth);
+static int raptor_rdfxmla_emit_subject(raptor_serializer *serializer,
+ raptor_abbrev_subject* subject,
+ int depth);
+static int raptor_rdfxmla_emit(raptor_serializer *serializer);
+
+static int raptor_rdfxmla_serialize_init(raptor_serializer* serializer,
+ const char *name);
+static void raptor_rdfxmla_serialize_terminate(raptor_serializer* serializer);
+static int raptor_rdfxmla_serialize_declare_namespace(raptor_serializer* serializer,
+ raptor_uri *uri,
+ const unsigned char *prefix);
+static int raptor_rdfxmla_serialize_start(raptor_serializer* serializer);
+static int raptor_rdfxmla_serialize_statement(raptor_serializer* serializer,
+ raptor_statement *statement);
+
+static int raptor_rdfxmla_serialize_end(raptor_serializer* serializer);
+static void raptor_rdfxmla_serialize_finish_factory(raptor_serializer_factory* factory);
+
+
+/* helper functions */
+
+
+/*
+ * raptor_rdfxmla_emit_resource_uri:
+ * @serializer: #raptor_serializer object
+ * @element: XML Element
+ * @uri: URI object
+ * @depth: depth into tree
+ *
+ * Emit a description of a resource using an XML Element
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_rdfxmla_emit_resource_uri(raptor_serializer *serializer,
+ raptor_xml_element *element,
+ raptor_uri* uri,
+ int depth)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+ raptor_xml_writer *xml_writer = context->xml_writer;
+ raptor_qname **attrs;
+ unsigned char *attr_name;
+ unsigned char *attr_value;
+
+ RAPTOR_DEBUG2("Emitting resource predicate URI %s\n",
+ raptor_uri_as_string(uri));
+
+ attrs = RAPTOR_CALLOC(raptor_qname**, 1, sizeof(raptor_qname*));
+ if(!attrs)
+ return 1;
+
+ attr_name = (unsigned char *)"resource";
+
+ if(RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_RELATIVE_URIS))
+ /* newly allocated string */
+ attr_value = raptor_uri_to_relative_uri_string(serializer->base_uri, uri);
+ else
+ attr_value = raptor_uri_as_string(uri);
+
+ attrs[0] = raptor_new_qname_from_namespace_local_name(serializer->world,
+ context->rdf_nspace,
+ attr_name,
+ attr_value);
+
+ if(RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_RELATIVE_URIS))
+ RAPTOR_FREE(char*, attr_value);
+
+ if(!attrs[0]) {
+ RAPTOR_FREE(qnamearray, attrs);
+ return 1;
+ }
+
+ raptor_xml_element_set_attributes(element, attrs, 1);
+
+ raptor_xml_writer_start_element(xml_writer, element);
+ raptor_xml_writer_end_element(context->xml_writer, element);
+
+ RAPTOR_DEBUG2("Emitted resource predicate URI %s\n",
+ raptor_uri_as_string(uri));
+
+ return 0;
+}
+
+
+/*
+ * raptor_rdfxmla_emit_resource:
+ * @serializer: #raptor_serializer object
+ * @element: XML Element
+ * @node: resource node
+ * @depth: depth into tree
+ *
+ * Emit a description of a resource using an XML Element
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_rdfxmla_emit_resource(raptor_serializer *serializer,
+ raptor_xml_element *element,
+ raptor_abbrev_node* node,
+ int depth)
+{
+ int rc;
+
+ RAPTOR_DEBUG5("Emitting resource node %p refcount %d subject %d object %d\n",
+ node,
+ node->ref_count, node->count_as_subject, node->count_as_object);
+
+ if(node->term->type != RAPTOR_TERM_TYPE_URI)
+ return 1;
+
+ rc = raptor_rdfxmla_emit_resource_uri(serializer, element,
+ node->term->value.uri, depth);
+
+ RAPTOR_DEBUG2("Emitted resource node %p\n", node);
+
+ return rc;
+}
+
+
+/*
+ * raptor_rdfxmla_emit_literal:
+ * @serializer: #raptor_serializer object
+ * @element: XML Element
+ * @node: literal node
+ * @depth: depth into tree
+ *
+ * Emit a description of a literal using an XML Element
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_rdfxmla_emit_literal(raptor_serializer *serializer,
+ raptor_xml_element *element,
+ raptor_abbrev_node* node,
+ int depth)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+ raptor_xml_writer *xml_writer = context->xml_writer;
+ raptor_qname **attrs;
+ int attrs_count;
+
+ RAPTOR_DEBUG5("Emitting literal node %p refcount %d subject %d object %d\n",
+ node,
+ node->ref_count, node->count_as_subject, node->count_as_object);
+
+ if(node->term->type != RAPTOR_TERM_TYPE_LITERAL)
+ return 1;
+
+ if(node->term->value.literal.language || node->term->value.literal.datatype) {
+
+ attrs_count = 0;
+ attrs = RAPTOR_CALLOC(raptor_qname**, 2, sizeof(raptor_qname*));
+ if(!attrs)
+ return 1;
+
+ if(node->term->value.literal.language) {
+ attrs[attrs_count] = raptor_new_qname(context->nstack,
+ (unsigned char*)"xml:lang",
+ node->term->value.literal.language);
+ if(!attrs[attrs_count])
+ goto attrs_oom;
+ attrs_count++;
+ }
+
+ if(node->term->value.literal.datatype) {
+ unsigned char *datatype_value;
+ datatype_value = raptor_uri_as_string(node->term->value.literal.datatype);
+ attrs[attrs_count] = raptor_new_qname_from_namespace_local_name(serializer->world,
+ context->rdf_nspace,
+ (const unsigned char*)"datatype",
+ datatype_value);
+ if(!attrs[attrs_count])
+ goto attrs_oom;
+ attrs_count++;
+
+ /* SJS Note: raptor_default_uri_as_string simply returns a
+ * pointer to the string. Hope this is also true of alternate
+ * uri implementations. */
+ /* RAPTOR_FREE(char*, datatype_value); */
+
+ }
+
+ raptor_xml_element_set_attributes(element, attrs, attrs_count);
+
+ }
+
+ raptor_xml_writer_start_element(xml_writer, element);
+ raptor_xml_writer_cdata(xml_writer, node->term->value.literal.string);
+ raptor_xml_writer_end_element(xml_writer, element);
+
+ RAPTOR_DEBUG2("Emitted %p\n", node);
+
+ return 0;
+
+ attrs_oom:
+
+ raptor_log_error(serializer->world, RAPTOR_LOG_LEVEL_FATAL, NULL,
+ "Out of memory");
+
+ /* attrs_count has not been incremented yet
+ * and it points to the qname the allocation of which failed */
+ attrs_count--;
+ while(attrs_count>=0)
+ raptor_free_qname(attrs[attrs_count--]);
+
+ RAPTOR_FREE(qnamearray, attrs);
+
+ return 1;
+}
+
+
+/*
+ * raptor_rdfxmla_emit_blank:
+ * @serializer: #raptor_serializer object
+ * @element: XML Element
+ * @node: blank node
+ * @depth: depth into tree
+ *
+ * Emit a description of a blank node using an XML Element
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_rdfxmla_emit_blank(raptor_serializer *serializer,
+ raptor_xml_element *element, raptor_abbrev_node* node,
+ int depth)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+
+ RAPTOR_DEBUG5("Emitting blank node %p refcount %d subject %d object %d\n",
+ node,
+ node->ref_count, node->count_as_subject, node->count_as_object);
+
+ if(node->term->type != RAPTOR_TERM_TYPE_BLANK)
+ return 1;
+
+ if((node->count_as_subject == 1 && node->count_as_object == 1)) {
+ /* If this is only used as a 1 subject and object or never
+ * used as a subject or never used as an object, it never need
+ * be referenced with an explicit name */
+ raptor_abbrev_subject* blank;
+
+ raptor_xml_writer_start_element(context->xml_writer, element);
+
+ blank = raptor_abbrev_subject_find(context->blanks, node->term);
+
+ if(blank) {
+ raptor_rdfxmla_emit_subject(serializer, blank, depth + 1);
+ raptor_abbrev_subject_invalidate(blank);
+ }
+
+ } else {
+ unsigned char *attr_name = (unsigned char*)"nodeID";
+ unsigned char *attr_value = node->term->value.blank.string;
+ raptor_qname **attrs;
+
+ attrs = RAPTOR_CALLOC(raptor_qname**, 1, sizeof(raptor_qname*));
+ if(!attrs)
+ return 1;
+
+ attrs[0] = raptor_new_qname_from_namespace_local_name(serializer->world,
+ context->rdf_nspace,
+ attr_name,
+ attr_value);
+
+ raptor_xml_element_set_attributes(element, attrs, 1);
+ raptor_xml_writer_start_element(context->xml_writer, element);
+
+ }
+
+ raptor_xml_writer_end_element(context->xml_writer, element);
+
+ RAPTOR_DEBUG2("Emitted %p\n", node);
+
+ return 0;
+}
+
+
+/*
+ * raptor_rdfxmla_emit_subject_list_items:
+ * @serializer: #raptor_serializer object
+ * @subject: subject node
+ * @depth: depth into tree
+ *
+ * Emit an rdf list of items (rdf:li) about a subject node.
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_rdfxmla_emit_subject_list_items(raptor_serializer* serializer,
+ raptor_abbrev_subject* subject,
+ int depth)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+ int rv = 0;
+ int i = 0;
+ raptor_uri* base_uri = NULL;
+
+ RAPTOR_DEBUG5("Emitting subject list items for node %p refcount %d subject %d object %d\n",
+ subject->node,
+ subject->node->ref_count, subject->node->count_as_subject,
+ subject->node->count_as_object);
+
+ while(!rv && i < raptor_sequence_size(subject->list_items)) {
+
+ raptor_abbrev_node* object;
+ raptor_qname *qname;
+ raptor_xml_element *element;
+
+ object = (raptor_abbrev_node*)raptor_sequence_get_at(subject->list_items, i++);
+ if(!object)
+ continue;
+
+ qname = raptor_new_qname_from_namespace_local_name(serializer->world,
+ context->rdf_nspace,
+ (unsigned char *)"li",
+ NULL);
+
+ if(serializer->base_uri)
+ base_uri = raptor_uri_copy(serializer->base_uri);
+ element = raptor_new_xml_element(qname, NULL, base_uri);
+ if(!element) {
+ raptor_log_error(serializer->world, RAPTOR_LOG_LEVEL_FATAL, NULL,
+ "Out of memory");
+ raptor_free_qname(qname);
+ rv = 1; /* error */
+ break;
+ }
+
+ switch (object->term->type) {
+
+ case RAPTOR_TERM_TYPE_URI:
+ rv = raptor_rdfxmla_emit_resource(serializer, element, object,
+ depth + 1);
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ rv = raptor_rdfxmla_emit_literal(serializer, element, object,
+ depth + 1);
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ rv = raptor_rdfxmla_emit_blank(serializer, element, object,
+ depth + 1);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR,
+ NULL, "Triple has unsupported term type %d",
+ object->term->type);
+ break;
+
+ }
+
+ raptor_free_xml_element(element);
+
+ }
+
+ return rv;
+}
+
+
+/*
+ * raptor_rdfxmla_emit_subject_properties:
+ * @serializer: #raptor_serializer object
+ * @subject: subject node
+ * @depth: depth into tree
+ *
+ * Emit the properties about a subject node.
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_rdfxmla_emit_subject_properties(raptor_serializer* serializer,
+ raptor_abbrev_subject* subject,
+ int depth)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+ int rv = 0;
+ int i;
+ raptor_avltree_iterator* iter = NULL;
+ raptor_term* subject_term = subject->node->term;
+
+ RAPTOR_DEBUG5("Emitting subject properties for node %p refcount %d subject %d object %d\n",
+ subject->node, subject->node->ref_count,
+ subject->node->count_as_subject,
+ subject->node->count_as_object);
+
+ /* Emit any rdf:_n properties collected */
+ if(raptor_sequence_size(subject->list_items) > 0) {
+ rv = raptor_rdfxmla_emit_subject_list_items(serializer, subject, depth + 1);
+ if(rv)
+ return rv;
+ }
+
+
+ if(subject->node_type && !context->write_typed_nodes) {
+ raptor_uri *base_uri = NULL;
+ raptor_qname *qname = NULL;
+ raptor_xml_element *element = NULL;
+
+ /* if rdf:type was associated with this subject and do not want
+ * a typed node, emit it as a property element
+ */
+ qname = raptor_new_qname_from_resource(context->namespaces,
+ context->nstack,
+ &context->namespace_count,
+ context->rdf_type);
+ if(!qname)
+ goto oom;
+
+ if(serializer->base_uri)
+ base_uri = raptor_uri_copy(serializer->base_uri);
+
+ element = raptor_new_xml_element(qname, NULL, base_uri);
+ if(!element) {
+ if(base_uri)
+ raptor_free_uri(base_uri);
+ raptor_free_qname(qname);
+ goto oom;
+ }
+
+ rv = raptor_rdfxmla_emit_resource_uri(serializer, element,
+ subject_term->value.uri,
+ depth + 1);
+ raptor_free_xml_element(element);
+ }
+
+
+ for(i = 0, iter = raptor_new_avltree_iterator(subject->properties, NULL, NULL, 1);
+ iter && !rv;
+ i++, (rv = raptor_avltree_iterator_next(iter))) {
+ raptor_uri *base_uri = NULL;
+ raptor_qname *qname;
+ raptor_xml_element *element;
+ raptor_abbrev_node** nodes;
+ raptor_abbrev_node* predicate;
+ raptor_abbrev_node* object;
+
+ nodes = (raptor_abbrev_node**)raptor_avltree_iterator_get(iter);
+ if(!nodes)
+ break;
+ predicate= nodes[0];
+ object= nodes[1];
+
+ qname = raptor_new_qname_from_resource(context->namespaces,
+ context->nstack,
+ &context->namespace_count,
+ predicate);
+ if(!qname) {
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot split URI '%s' into an XML qname",
+ raptor_uri_as_string(predicate->term->value.uri));
+ continue;
+ }
+
+ if(serializer->base_uri)
+ base_uri = raptor_uri_copy(serializer->base_uri);
+ element = raptor_new_xml_element(qname, NULL, base_uri);
+ if(!element) {
+ if(base_uri)
+ raptor_free_uri(base_uri);
+ raptor_free_qname(qname);
+ goto oom;
+ }
+
+ switch (object->term->type) {
+
+ case RAPTOR_TERM_TYPE_URI:
+ rv = raptor_rdfxmla_emit_resource(serializer, element, object,
+ depth + 1);
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ rv = raptor_rdfxmla_emit_literal(serializer, element, object,
+ depth + 1);
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ rv = raptor_rdfxmla_emit_blank(serializer, element, object,
+ depth + 1);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR,
+ NULL, "Triple has unsupported term type %d",
+ object->term->type);
+ break;
+ }
+
+ /* Return error if emitting something failed above */
+ if(rv)
+ return rv;
+
+ raptor_free_xml_element(element);
+
+ }
+ if(iter)
+ raptor_free_avltree_iterator(iter);
+
+ return rv;
+
+ oom:
+ if(iter)
+ raptor_free_avltree_iterator(iter);
+ raptor_log_error(serializer->world, RAPTOR_LOG_LEVEL_FATAL, NULL,
+ "Out of memory");
+ return 1;
+}
+
+
+/*
+ * raptor_rdfxmla_emit_subject:
+ * @serializer: #raptor_serializer object
+ * @subject: subject node
+ * @depth: depth into tree
+ *
+ * Emit a subject node
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_rdfxmla_emit_subject(raptor_serializer *serializer,
+ raptor_abbrev_subject* subject,
+ int depth)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+ raptor_qname *qname = NULL;
+ raptor_xml_element *element = NULL;
+ raptor_qname **attrs;
+ unsigned char *attr_name;
+ unsigned char *attr_value;
+ raptor_uri *base_uri = NULL;
+ int subject_is_single_node;
+ raptor_term *subject_term = subject->node->term;
+
+ if(!raptor_abbrev_subject_valid(subject))
+ return 0;
+
+ subject_is_single_node = (context->single_node &&
+ subject_term->type == RAPTOR_TERM_TYPE_URI &&
+ raptor_uri_equals(subject_term->value.uri,
+ context->single_node));
+
+
+ RAPTOR_DEBUG5("Emitting subject node %p refcount %d subject %d object %d\n",
+ subject->node,
+ subject->node->ref_count,
+ subject->node->count_as_subject,
+ subject->node->count_as_object);
+
+ if(!depth &&
+ subject_term->type == RAPTOR_TERM_TYPE_BLANK &&
+ subject->node->count_as_subject == 1 &&
+ subject->node->count_as_object == 1) {
+ RAPTOR_DEBUG2("Skipping subject node %p\n", subject->node);
+ return 0;
+ }
+
+
+ if(subject->node_type && context->write_typed_nodes) {
+ /* if rdf:type was associated with this subject */
+ qname = raptor_new_qname_from_resource(context->namespaces,
+ context->nstack,
+ &context->namespace_count,
+ subject->node_type);
+
+ if(!qname) {
+ raptor_log_error_formatted(serializer->world,
+ RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot split URI '%s' into an XML qname",
+ raptor_uri_as_string(subject->node_type->term->value.uri));
+ return 1;
+ }
+
+ } else {
+ qname = raptor_new_qname_from_namespace_local_name(serializer->world,
+ context->rdf_nspace,
+ (unsigned const char*)"Description",
+ NULL);
+ if(!qname)
+ goto oom;
+ }
+
+ if(serializer->base_uri)
+ base_uri = raptor_uri_copy(serializer->base_uri);
+ element = raptor_new_xml_element(qname, NULL, base_uri);
+ if(!element) {
+ if(base_uri)
+ raptor_free_uri(base_uri);
+ raptor_free_qname(qname);
+ goto oom;
+ }
+
+ attrs = RAPTOR_CALLOC(raptor_qname**, 1, sizeof(raptor_qname*));
+ if(!attrs)
+ goto oom;
+
+ attr_name = NULL;
+ attr_value = NULL;
+
+ /* emit the subject node */
+ if(subject_term->type == RAPTOR_TERM_TYPE_URI) {
+ attr_name = (unsigned char*)"about";
+ if(context->is_xmp) {
+ /* XML rdf:about value is always "" */
+ attr_value = RAPTOR_CALLOC(unsigned char*, 1, sizeof(unsigned char));
+ } else if(RAPTOR_OPTIONS_GET_NUMERIC(serializer,
+ RAPTOR_OPTION_RELATIVE_URIS))
+ attr_value = raptor_uri_to_relative_uri_string(serializer->base_uri,
+ subject_term->value.uri);
+ else
+ attr_value = raptor_uri_to_string(subject_term->value.uri);
+
+ } else if(subject_term->type == RAPTOR_TERM_TYPE_BLANK) {
+ if(subject->node->count_as_subject &&
+ subject->node->count_as_object &&
+ !(subject->node->count_as_subject == 1 &&
+ subject->node->count_as_object == 1)) {
+ /* No need for nodeID if this node is never used as a subject
+ * or object OR if it is used exactly once as subject and object.
+ */
+ attr_name = (unsigned char*)"nodeID";
+ attr_value = subject_term->value.blank.string;
+ }
+ }
+
+ if(attr_name) {
+ attrs[0] = raptor_new_qname_from_namespace_local_name(serializer->world,
+ context->rdf_nspace,
+ attr_name,
+ attr_value);
+
+ if(subject_term->type != RAPTOR_TERM_TYPE_BLANK)
+ RAPTOR_FREE(char*, attr_value);
+
+ if(!attrs[0]) {
+ RAPTOR_FREE(qnamearray, attrs);
+ goto oom;
+ }
+
+ /* Note: if we were willing to track the in-scope rdf:lang, we
+ * could do the "2.5 Property Attributes" abbreviation here */
+ raptor_xml_element_set_attributes(element, attrs, 1);
+ } else {
+ RAPTOR_FREE(qnamearray, attrs);
+ }
+
+ if(!subject_is_single_node) {
+ raptor_xml_writer_start_element(context->xml_writer, element);
+ raptor_rdfxmla_emit_subject_properties(serializer, subject, depth + 1);
+ raptor_xml_writer_end_element(context->xml_writer, element);
+ } else
+ raptor_rdfxmla_emit_subject_properties(serializer, subject, depth);
+
+ raptor_free_xml_element(element);
+
+ return 0;
+
+ oom:
+ if(element)
+ raptor_free_xml_element(element);
+ raptor_log_error(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Out of memory");
+ return 1;
+}
+
+
+/*
+ * raptor_rdfxmla_emit -
+ * @serializer: #raptor_serializer object
+ *
+ * Emit RDF/XML for all stored triples.
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_rdfxmla_emit(raptor_serializer *serializer)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+ raptor_abbrev_subject* subject;
+ raptor_abbrev_subject* blank;
+ raptor_avltree_iterator* iter = NULL;
+
+ iter = raptor_new_avltree_iterator(context->subjects, NULL, NULL, 1);
+ while(iter) {
+ subject = (raptor_abbrev_subject*)raptor_avltree_iterator_get(iter);
+ if(subject) {
+ raptor_rdfxmla_emit_subject(serializer, subject, context->starting_depth);
+ }
+ if(raptor_avltree_iterator_next(iter))
+ break;
+ }
+ if(iter)
+ raptor_free_avltree_iterator(iter);
+
+ if(!context->single_node) {
+ /* Emit any remaining blank nodes */
+ iter = raptor_new_avltree_iterator(context->blanks, NULL, NULL, 1);
+ while(iter) {
+ blank = (raptor_abbrev_subject*)raptor_avltree_iterator_get(iter);
+ if(blank) {
+ raptor_rdfxmla_emit_subject(serializer, blank, context->starting_depth);
+ }
+ if(raptor_avltree_iterator_next(iter))
+ break;
+ }
+ if(iter)
+ raptor_free_avltree_iterator(iter);
+ }
+
+ return 0;
+}
+
+
+/*
+ * raptor serializer rdfxml-abbrev implementation
+ */
+
+
+static void
+raptor_rdfxmla_serialize_init_nstack(raptor_serializer* serializer,
+ raptor_namespace_stack *nstack)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+
+ context->xml_nspace = raptor_new_namespace(context->nstack,
+ (const unsigned char*)"xml",
+ raptor_xml_namespace_uri,
+ context->starting_depth);
+
+ context->rdf_nspace = raptor_new_namespace(context->nstack,
+ (const unsigned char*)"rdf",
+ raptor_rdf_namespace_uri,
+ context->starting_depth);
+}
+
+
+
+/* create a new serializer */
+static int
+raptor_rdfxmla_serialize_init(raptor_serializer* serializer, const char *name)
+{
+ raptor_rdfxmla_context* context;
+ raptor_term* type_term;
+
+ context = (raptor_rdfxmla_context*)serializer->context;
+
+ context->nstack = raptor_new_namespaces(serializer->world, 1);
+ if(!context->nstack)
+ return 1;
+
+ raptor_rdfxmla_serialize_init_nstack(serializer, context->nstack);
+
+ context->namespaces = raptor_new_sequence(NULL, NULL);
+
+ context->subjects =
+ raptor_new_avltree((raptor_data_compare_handler)raptor_abbrev_subject_compare,
+ (raptor_data_free_handler)raptor_free_abbrev_subject, 0);
+
+ context->blanks =
+ raptor_new_avltree((raptor_data_compare_handler)raptor_abbrev_subject_compare,
+ (raptor_data_free_handler)raptor_free_abbrev_subject, 0);
+
+ context->nodes =
+ raptor_new_avltree((raptor_data_compare_handler)raptor_abbrev_node_compare,
+ (raptor_data_free_handler)raptor_free_abbrev_node, 0);
+
+ type_term = RAPTOR_RDF_type_term(serializer->world);
+ context->rdf_type = raptor_new_abbrev_node(serializer->world, type_term);
+
+ if(!context->xml_nspace || !context->rdf_nspace || !context->namespaces ||
+ !context->subjects || !context->blanks || !context->nodes ||
+ !context->rdf_type) {
+ raptor_rdfxmla_serialize_terminate(serializer);
+ return 1;
+ }
+
+ context->is_xmp=!strncmp(name, "rdfxml-xmp", 10);
+ if(context->is_xmp)
+ RAPTOR_OPTIONS_SET_NUMERIC(serializer,
+ RAPTOR_OPTION_WRITER_XML_DECLARATION, 0);
+
+ /* Note: item 0 in the list is rdf:RDF's namespace */
+ if(raptor_sequence_push(context->namespaces, context->rdf_nspace)) {
+ raptor_rdfxmla_serialize_terminate(serializer);
+ return 1;
+ }
+
+ context->write_rdf_RDF = 1;
+ context->starting_depth = 0;
+ context->single_node = NULL;
+ context->write_typed_nodes = 1;
+
+ return 0;
+}
+
+
+/* destroy a serializer */
+static void
+raptor_rdfxmla_serialize_terminate(raptor_serializer* serializer)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+
+ if(context->xml_writer) {
+ if(!context->external_xml_writer)
+ raptor_free_xml_writer(context->xml_writer);
+ context->xml_writer = NULL;
+ context->external_xml_writer = 0;
+ }
+
+ if(context->rdf_RDF_element) {
+ raptor_free_xml_element(context->rdf_RDF_element);
+ context->rdf_RDF_element = NULL;
+ }
+
+ if(context->rdf_nspace) {
+ raptor_free_namespace(context->rdf_nspace);
+ context->rdf_nspace = NULL;
+ }
+
+ if(context->xml_nspace) {
+ raptor_free_namespace(context->xml_nspace);
+ context->xml_nspace = NULL;
+ }
+
+ if(context->namespaces) {
+ int i;
+
+ /* Note: item 0 in the list is rdf:RDF's namespace and freed above */
+ for(i = 1; i< raptor_sequence_size(context->namespaces); i++) {
+ raptor_namespace* ns;
+ ns = (raptor_namespace*)raptor_sequence_get_at(context->namespaces, i);
+ if(ns)
+ raptor_free_namespace(ns);
+ }
+ raptor_free_sequence(context->namespaces);
+ context->namespaces = NULL;
+ }
+
+ if(context->subjects) {
+ raptor_free_avltree(context->subjects);
+ context->subjects = NULL;
+ }
+
+ if(context->blanks) {
+ raptor_free_avltree(context->blanks);
+ context->blanks = NULL;
+ }
+
+ if(context->nodes) {
+ raptor_free_avltree(context->nodes);
+ context->nodes = NULL;
+ }
+
+ /* always free raptor_namespace* before stack */
+ if(context->nstack) {
+ if(!context->external_nstack)
+ raptor_free_namespaces(context->nstack);
+ context->nstack = NULL;
+ }
+
+ if(context->rdf_type) {
+ raptor_free_abbrev_node(context->rdf_type);
+ context->rdf_type = NULL;
+ }
+}
+
+
+#define RDFXMLA_NAMESPACE_DEPTH 0
+
+/* add a namespace */
+static int
+raptor_rdfxmla_serialize_declare_namespace_from_namespace(raptor_serializer* serializer,
+ raptor_namespace *nspace)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+ int i;
+
+ if(context->written_header)
+ return 1;
+
+ for(i = 0; i< raptor_sequence_size(context->namespaces); i++) {
+ raptor_namespace* ns;
+ ns = (raptor_namespace*)raptor_sequence_get_at(context->namespaces, i);
+
+ /* If prefix is already declared, ignore it */
+ if(!ns->prefix && !nspace->prefix)
+ return 1;
+
+ if(ns->prefix && nspace->prefix &&
+ !strcmp((const char*)ns->prefix, (const char*)nspace->prefix))
+ return 1;
+
+ if(ns->uri && nspace->uri &&
+ raptor_uri_equals(ns->uri, nspace->uri))
+ return 1;
+ }
+
+ nspace = raptor_new_namespace_from_uri(context->nstack,
+ nspace->prefix, nspace->uri,
+ context->starting_depth +
+ RDFXMLA_NAMESPACE_DEPTH);
+ if(!nspace)
+ return 1;
+
+ raptor_sequence_push(context->namespaces, nspace);
+ return 0;
+}
+
+
+/* add a namespace */
+static int
+raptor_rdfxmla_serialize_declare_namespace(raptor_serializer* serializer,
+ raptor_uri *uri,
+ const unsigned char *prefix)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+ raptor_namespace *ns;
+ int rc;
+
+ ns = raptor_new_namespace_from_uri(context->nstack, prefix, uri,
+ context->starting_depth +
+ RDFXMLA_NAMESPACE_DEPTH);
+
+ rc = raptor_rdfxmla_serialize_declare_namespace_from_namespace(serializer,
+ ns);
+ raptor_free_namespace(ns);
+
+ return rc;
+}
+
+
+/*
+ * raptor_rdfxmla_serialize_set_write_rdf_RDF:
+ * @serializer: serializer object
+ * @value: value
+ *
+ * INTERNAL - Set flag to write rdf:RDF root element
+ *
+ * Return value: non-0 on failure
+ */
+int
+raptor_rdfxmla_serialize_set_write_rdf_RDF(raptor_serializer* serializer,
+ int value)
+{
+ raptor_rdfxmla_context* context;
+
+ if(strcmp(serializer->factory->desc.names[0], "rdfxml-abbrev"))
+ return 1;
+
+ context = (raptor_rdfxmla_context*)serializer->context;
+
+ context->write_rdf_RDF = value;
+
+ return 0;
+}
+
+
+/*
+ * raptor_rdfxmla_serialize_set_xml_writer:
+ * @serializer: serializer object
+ * @xml_writer: XML writer
+ * @nstack: namespace stack
+ *
+ * INTERNAL - Set an existing created XML writer to write the serializing to
+ *
+ * Return value: non-0 on failure
+ */
+int
+raptor_rdfxmla_serialize_set_xml_writer(raptor_serializer* serializer,
+ raptor_xml_writer* xml_writer,
+ raptor_namespace_stack *nstack)
+{
+ raptor_rdfxmla_context* context;
+
+ if(strcmp(serializer->factory->desc.names[0], "rdfxml-abbrev"))
+ return 1;
+
+ context = (raptor_rdfxmla_context*)serializer->context;
+
+ context->xml_writer = xml_writer;
+ context->starting_depth= raptor_xml_writer_get_depth(xml_writer) + 1;
+ context->external_xml_writer= (xml_writer != NULL);
+
+ if(context->xml_nspace)
+ raptor_free_namespace(context->xml_nspace);
+ if(context->rdf_nspace)
+ raptor_free_namespace(context->rdf_nspace);
+ /* always free raptor_namespace* before stack */
+ if(context->nstack)
+ raptor_free_namespaces(context->nstack);
+
+ context->nstack = nstack;
+ context->external_nstack = 1;
+ raptor_rdfxmla_serialize_init_nstack(serializer, context->nstack);
+
+ return 0;
+}
+
+
+/*
+ * raptor_rdfxmla_serialize_set_single_node:
+ * @serializer:
+ * @uri:
+ *
+ * INTERNAL - Set a single node to serialize the contents
+ *
+ * The outer node element with this URI is not serialized, the inner
+ * property elements are written. @uri is copied
+ *
+ * Return value: non-0 on failure
+ */
+int
+raptor_rdfxmla_serialize_set_single_node(raptor_serializer* serializer,
+ raptor_uri* uri)
+{
+ raptor_rdfxmla_context* context;
+
+ if(strcmp(serializer->factory->desc.names[0], "rdfxml-abbrev"))
+ return 1;
+
+ context = (raptor_rdfxmla_context*)serializer->context;
+
+ if(context->single_node)
+ raptor_free_uri(context->single_node);
+
+ context->single_node = raptor_uri_copy(uri);
+
+ return 0;
+}
+
+
+/*
+ * raptor_rdfxmla_serialize_set_write_typed_nodes:
+ * @serializer:
+ * @value:
+ *
+ * INTERNAL - Set flag to write typed node elements
+ *
+ * Return value: non-0 on failure
+ */
+int
+raptor_rdfxmla_serialize_set_write_typed_nodes(raptor_serializer* serializer,
+ int value)
+{
+ raptor_rdfxmla_context* context;
+
+ if(strcmp(serializer->factory->desc.names[0], "rdfxml-abbrev"))
+ return 1;
+
+ context = (raptor_rdfxmla_context*)serializer->context;
+
+ context->write_typed_nodes = value;
+
+ return 0;
+}
+
+
+/* start a serialize */
+static int
+raptor_rdfxmla_serialize_start(raptor_serializer* serializer)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+
+ if(!context->external_xml_writer) {
+ raptor_xml_writer* xml_writer;
+ raptor_option option;
+
+ if(context->xml_writer)
+ raptor_free_xml_writer(context->xml_writer);
+
+ xml_writer = raptor_new_xml_writer(serializer->world, context->nstack,
+ serializer->iostream);
+ if(!xml_writer)
+ return 1;
+
+ raptor_xml_writer_set_option(xml_writer,
+ RAPTOR_OPTION_WRITER_AUTO_INDENT, NULL,1);
+ raptor_xml_writer_set_option(xml_writer,
+ RAPTOR_OPTION_WRITER_AUTO_EMPTY, NULL, 1);
+ raptor_xml_writer_set_option(xml_writer,
+ RAPTOR_OPTION_WRITER_INDENT_WIDTH, NULL, 2);
+ option = RAPTOR_OPTION_WRITER_XML_VERSION;
+ raptor_xml_writer_set_option(xml_writer, option, NULL,
+ RAPTOR_OPTIONS_GET_NUMERIC(serializer, option));
+ option = RAPTOR_OPTION_WRITER_XML_DECLARATION;
+ raptor_xml_writer_set_option(xml_writer, option, NULL,
+ RAPTOR_OPTIONS_GET_NUMERIC(serializer, option));
+
+ context->xml_writer = xml_writer;
+ }
+
+ return 0;
+}
+
+
+static int
+raptor_rdfxmla_ensure_writen_header(raptor_serializer* serializer,
+ raptor_rdfxmla_context* context)
+{
+ raptor_xml_writer* xml_writer;
+ raptor_qname *qname;
+ raptor_uri *base_uri;
+ int i;
+ raptor_qname **attrs = NULL;
+ int attrs_count = 0;
+
+ if(context->written_header)
+ return 0; /* already succeeded */
+
+ if(!context->write_rdf_RDF) {
+ context->written_header = 1;
+ return 0;
+ }
+
+ xml_writer = context->xml_writer;
+ if(context->is_xmp)
+ raptor_xml_writer_raw(xml_writer,
+ (const unsigned char*)"<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>\n<x:xmpmeta xmlns:x='adobe:ns:meta/'>\n");
+
+ qname = raptor_new_qname_from_namespace_local_name(serializer->world,
+ context->rdf_nspace,
+ (const unsigned char*)"RDF",
+ NULL);
+ if(!qname)
+ goto oom;
+ base_uri = serializer->base_uri;
+ if(base_uri)
+ base_uri = raptor_uri_copy(base_uri);
+ context->rdf_RDF_element = raptor_new_xml_element(qname, NULL, base_uri);
+ if(!context->rdf_RDF_element) {
+ if(base_uri)
+ raptor_free_uri(base_uri);
+ raptor_free_qname(qname);
+ goto oom;
+ }
+
+ /* NOTE: Starts at item 1 as item 0 is the element's namespace (rdf)
+ * and does not need to be declared
+ */
+ for(i = 1; i< raptor_sequence_size(context->namespaces); i++) {
+ raptor_namespace* ns;
+ ns = (raptor_namespace*)raptor_sequence_get_at(context->namespaces, i);
+ raptor_xml_element_declare_namespace(context->rdf_RDF_element, ns);
+ }
+
+ if(base_uri &&
+ RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_WRITE_BASE_URI)) {
+ const unsigned char* base_uri_string;
+
+ attrs = RAPTOR_CALLOC(raptor_qname**, 1, sizeof(raptor_qname*));
+ if(!attrs)
+ goto oom;
+
+ base_uri_string = raptor_uri_as_string(base_uri);
+ attrs[attrs_count] = raptor_new_qname_from_namespace_local_name(serializer->world,
+ context->xml_nspace,
+ (const unsigned char*)"base",
+ base_uri_string);
+ if(!attrs[attrs_count]) {
+ RAPTOR_FREE(qnamearray, attrs);
+ goto oom;
+ }
+ attrs_count++;
+ }
+
+ if(attrs_count)
+ raptor_xml_element_set_attributes(context->rdf_RDF_element, attrs,
+ attrs_count);
+ else
+ raptor_xml_element_set_attributes(context->rdf_RDF_element, NULL, 0);
+
+
+
+ raptor_xml_writer_start_element(xml_writer, context->rdf_RDF_element);
+
+ context->written_header = 1;
+
+ return 0;
+
+ oom:
+ raptor_log_error(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Out of memory");
+ return 1;
+}
+
+
+/* serialize a statement */
+static int
+raptor_rdfxmla_serialize_statement(raptor_serializer* serializer,
+ raptor_statement *statement)
+{
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+ raptor_abbrev_subject* subject = NULL;
+ raptor_abbrev_node* predicate = NULL;
+ raptor_abbrev_node* object = NULL;
+ int rv = 0;
+ raptor_term_type object_type;
+
+ if(!(statement->subject->type == RAPTOR_TERM_TYPE_URI ||
+ statement->subject->type == RAPTOR_TERM_TYPE_BLANK)) {
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot serialize a triple with subject node type %d",
+ statement->subject->type);
+ return 1;
+ }
+
+ subject = raptor_abbrev_subject_lookup(context->nodes, context->subjects,
+ context->blanks,
+ statement->subject);
+ if(!subject)
+ return 1;
+
+ object_type = statement->object->type;
+
+ if(!(object_type == RAPTOR_TERM_TYPE_URI ||
+ object_type == RAPTOR_TERM_TYPE_BLANK ||
+ object_type == RAPTOR_TERM_TYPE_LITERAL)) {
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot serialize a triple with object node type %d",
+ object_type);
+ return 1;
+ }
+
+ object = raptor_abbrev_node_lookup(context->nodes,
+ statement->object);
+ if(!object)
+ return 1;
+
+
+ if(statement->predicate->type == RAPTOR_TERM_TYPE_URI) {
+ predicate = raptor_abbrev_node_lookup(context->nodes, statement->predicate);
+ if(!predicate)
+ return 1;
+
+ if(!subject->node_type &&
+ raptor_abbrev_node_equals(predicate, context->rdf_type) &&
+ statement->object->type == RAPTOR_TERM_TYPE_URI) {
+
+ /* Store the first one as the type for abbreviation 2.14
+ * purposes. Note that it is perfectly legal to have
+ * multiple type definitions. All definitions after the
+ * first go in the property list */
+ subject->node_type = raptor_abbrev_node_lookup(context->nodes,
+ statement->object);
+ if(!subject->node_type)
+ return 1;
+ subject->node_type->ref_count++;
+ return 0;
+
+ } else {
+ int add_property = 1;
+
+ if(context->is_xmp && predicate->ref_count > 1) {
+ raptor_avltree_iterator* iter = NULL;
+ int i;
+ for(i = 0, (iter = raptor_new_avltree_iterator(subject->properties, NULL, NULL, 1));
+ iter && !rv;
+ i++, (rv = raptor_avltree_iterator_next(iter))) {
+ raptor_abbrev_node** nodes;
+ raptor_abbrev_node* node;
+
+ nodes = (raptor_abbrev_node**)raptor_avltree_iterator_get(iter);
+ if(!nodes)
+ break;
+ node= nodes[0];
+
+ if(node == predicate) {
+ add_property = 0;
+ if(object->term->type == RAPTOR_TERM_TYPE_BLANK) {
+ /* look for any generated blank node associated with this
+ * statement and free it
+ */
+ raptor_abbrev_subject *blank =
+ raptor_abbrev_subject_find(context->blanks,
+ statement->object);
+ if(subject) raptor_avltree_delete(context->blanks, blank);
+ }
+ break;
+ }
+ }
+ if(iter)
+ raptor_free_avltree_iterator(iter);
+ }
+
+ if(add_property) {
+ rv = raptor_abbrev_subject_add_property(subject, predicate, object);
+ if(rv < 0) {
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Unable to add properties to subject %p",
+ subject);
+ return rv;
+ }
+ }
+ }
+
+ } else {
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot serialize a triple with predicate node type %d",
+ statement->predicate->type);
+ return 1;
+ }
+
+ if(object_type == RAPTOR_TERM_TYPE_URI ||
+ object_type == RAPTOR_TERM_TYPE_BLANK)
+ object->count_as_object++;
+
+
+ return 0;
+
+}
+
+
+/* end a serialize */
+static int
+raptor_rdfxmla_serialize_end(raptor_serializer* serializer)
+{
+
+ raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context;
+ raptor_xml_writer* xml_writer = context->xml_writer;
+
+ if(xml_writer) {
+ if(!raptor_rdfxmla_ensure_writen_header(serializer, context)) {
+
+ raptor_rdfxmla_emit(serializer);
+
+ if(context->write_rdf_RDF) {
+ /* ensure_writen_header() returned success, can assume context->rdf_RDF_element is non-NULL */
+ raptor_xml_writer_end_element(xml_writer, context->rdf_RDF_element);
+
+ raptor_xml_writer_raw_counted(xml_writer, (const unsigned char*)"\n", 1);
+ }
+ }
+ }
+
+ if(context->rdf_RDF_element) {
+ raptor_free_xml_element(context->rdf_RDF_element);
+ context->rdf_RDF_element = NULL;
+ }
+
+ if(context->is_xmp && xml_writer)
+ raptor_xml_writer_raw(xml_writer,
+ (const unsigned char*)"</x:xmpmeta>\n<?xpacket end='r'?>\n");
+
+ if(xml_writer)
+ raptor_xml_writer_flush(xml_writer);
+
+ if(context->single_node)
+ raptor_free_uri(context->single_node);
+
+ context->written_header = 0;
+
+ return 0;
+}
+
+
+/* finish the serializer factory */
+static void
+raptor_rdfxmla_serialize_finish_factory(raptor_serializer_factory* factory)
+{
+ /* NOP */
+}
+
+
+static const char* const rdfxml_xmp_names[2] = { "rdfxml-xmp", NULL};
+
+static const char* const rdfxml_xmp_uri_strings[2] = {
+ "http://www.w3.org/TR/rdf-syntax-grammar",
+ NULL
+};
+
+#define RDFXML_XMP_TYPES_COUNT 1
+static const raptor_type_q rdfxml_xmp_types[RDFXML_XMP_TYPES_COUNT + 1] = {
+ { "application/rdf+xml", 19, 0},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_rdfxml_xmp_serializer_register_factory(raptor_serializer_factory *factory)
+{
+ factory->desc.names = rdfxml_xmp_names;
+ factory->desc.mime_types = rdfxml_xmp_types;
+
+ factory->desc.label = "RDF/XML (XMP Profile)";
+ factory->desc.uri_strings = rdfxml_xmp_uri_strings;
+
+ factory->context_length = sizeof(raptor_rdfxmla_context);
+
+ factory->init = raptor_rdfxmla_serialize_init;
+ factory->terminate = raptor_rdfxmla_serialize_terminate;
+ factory->declare_namespace = raptor_rdfxmla_serialize_declare_namespace;
+ factory->declare_namespace_from_namespace = raptor_rdfxmla_serialize_declare_namespace_from_namespace;
+ factory->serialize_start = raptor_rdfxmla_serialize_start;
+ factory->serialize_statement = raptor_rdfxmla_serialize_statement;
+ factory->serialize_end = raptor_rdfxmla_serialize_end;
+ factory->finish_factory = raptor_rdfxmla_serialize_finish_factory;
+
+ return 0;
+}
+
+
+static const char* const rdfxmla_names[2] = { "rdfxml-abbrev", NULL};
+
+static const char* const rdfxml_uri_strings[3] = {
+ "http://www.w3.org/ns/formats/RDF_XML",
+ "http://www.w3.org/TR/rdf-syntax-grammar",
+ NULL
+};
+
+#define RDFXMLA_TYPES_COUNT 1
+static const raptor_type_q rdfxmla_types[RDFXMLA_TYPES_COUNT + 1] = {
+ { "application/rdf+xml", 19, 0},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_rdfxmla_serializer_register_factory(raptor_serializer_factory *factory)
+{
+ factory->desc.names = rdfxmla_names;
+ factory->desc.mime_types = rdfxmla_types;
+
+ factory->desc.label = "RDF/XML (Abbreviated)";
+ factory->desc.uri_strings = rdfxml_uri_strings;
+
+ factory->context_length = sizeof(raptor_rdfxmla_context);
+
+ factory->init = raptor_rdfxmla_serialize_init;
+ factory->terminate = raptor_rdfxmla_serialize_terminate;
+ factory->declare_namespace = raptor_rdfxmla_serialize_declare_namespace;
+ factory->declare_namespace_from_namespace = raptor_rdfxmla_serialize_declare_namespace_from_namespace;
+ factory->serialize_start = raptor_rdfxmla_serialize_start;
+ factory->serialize_statement = raptor_rdfxmla_serialize_statement;
+ factory->serialize_end = raptor_rdfxmla_serialize_end;
+ factory->finish_factory = raptor_rdfxmla_serialize_finish_factory;
+
+ return 0;
+}
+
+
+int
+raptor_init_serializer_rdfxmla(raptor_world* world)
+{
+ int rc;
+
+ rc = !raptor_serializer_register_factory(world,
+ &raptor_rdfxml_xmp_serializer_register_factory);
+ if(rc)
+ return rc;
+
+ rc = !raptor_serializer_register_factory(world,
+ &raptor_rdfxmla_serializer_register_factory);
+
+ return rc;
+}
+
diff --git a/src/raptor_serialize_rss.c b/src/raptor_serialize_rss.c
new file mode 100644
index 0000000..d635d41
--- /dev/null
+++ b/src/raptor_serialize_rss.c
@@ -0,0 +1,2439 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_serialize_rss.c - Raptor RSS 1.0 and Atom 1.0 serializers
+ *
+ * Copyright (C) 2003-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+#include "raptor_rss.h"
+
+
+typedef struct {
+ raptor_world* world;
+ raptor_term* term;
+ /* shared pointer */
+ raptor_rss_item* item;
+} raptor_rss_group_map;
+
+
+
+/*
+ * Raptor 'RSS 1.0' serializer object
+ */
+typedef struct {
+ raptor_world* world;
+
+ /* static rss model */
+ raptor_rss_model model;
+
+ /* Triples with no assigned type node */
+ raptor_sequence *triples;
+
+ /* Sequence of raptor_rss_item* : rdf:Seq items rdf:_ < n> at offset n */
+ raptor_sequence *items;
+
+ /* Sequence of raptor_rss_item* (?x rdf:type rss:Enclosure) */
+ raptor_sequence *enclosures;
+
+ /* Term of rdf:Seq node */
+ raptor_term *seq_term;
+
+ /* Namespace stack for serializing */
+ raptor_namespace_stack *nstack;
+
+ /* the default namespace (rdf: or atom:) -
+ * this is destroyed when nstack above is deleted
+ */
+ raptor_namespace* default_nspace;
+
+ /* the xml: namespace */
+ raptor_namespace *xml_nspace;
+
+ /* the root element (rdf:RDF or atom:feed) */
+ raptor_xml_element* root_element;
+
+ /* where the xml is being written */
+ raptor_xml_writer *xml_writer;
+
+ /* non-0 if this is an atom 1.0 serializer */
+ int is_atom;
+
+ /* 0 = none
+ * 1 = existing rss:item item containg rdf/xml encoding of any extra
+ * triples about URI (rss-1.0 serializer only)
+ * 2 = at:md element containing rdf/xml property elements encoding
+ * of any extra triples about URI (atom serializer only)
+ */
+ int rss_triples_mode;
+
+ /* namespaces declared here */
+ raptor_namespace* nspaces[RAPTOR_RSS_NAMESPACES_SIZE];
+
+ /* Map of group URI (key, owned) : rss item object (value, shared) */
+ raptor_avltree *group_map;
+
+ /* User declared namespaces */
+ raptor_sequence *user_namespaces;
+
+ /* URI of XML Literal datatype */
+ raptor_uri* xml_literal_dt;
+
+ int free_default_nspace;
+} raptor_rss10_serializer_context;
+
+
+static void
+raptor_free_group_map(raptor_rss_group_map* gm)
+{
+ if(gm->term)
+ raptor_free_term(gm->term);
+
+ RAPTOR_FREE(raptor_rss_group_map, gm);
+}
+
+
+static int
+raptor_rss_group_map_compare(raptor_rss_group_map* gm1,
+ raptor_rss_group_map* gm2)
+{
+ return raptor_term_compare(gm1->term, gm2->term);
+}
+
+
+static raptor_rss_item*
+raptor_rss10_get_group_item(raptor_rss10_serializer_context *rss_serializer,
+ raptor_term* term)
+{
+ raptor_rss_group_map search_gm;
+ raptor_rss_group_map* gm;
+
+ search_gm.world = rss_serializer->world;
+ search_gm.term = term;
+ gm = (raptor_rss_group_map*)raptor_avltree_search(rss_serializer->group_map,
+ (void*)&search_gm);
+
+ return gm ? gm->item : NULL;
+}
+
+
+static int
+raptor_rss10_set_item_group(raptor_rss10_serializer_context *rss_serializer,
+ raptor_term* term, raptor_rss_item *item)
+{
+ raptor_rss_group_map* gm;
+
+ if(raptor_rss10_get_group_item(rss_serializer, term))
+ return 0;
+
+ gm = RAPTOR_CALLOC(raptor_rss_group_map*, 1, sizeof(*gm));
+ gm->world = rss_serializer->world;
+ gm->term = raptor_term_copy(term);
+ gm->item = item;
+
+ raptor_avltree_add(rss_serializer->group_map, gm);
+ return 0;
+}
+
+
+/**
+ * raptor_rss10_serialize_init:
+ * @serializer: serializer object
+ * @name: serializer name
+ *
+ * INTERNAL (raptor_serializer_factory API) - create a new serializer
+ *
+ * Return value: non-0 on failure
+ */
+static int
+raptor_rss10_serialize_init(raptor_serializer* serializer, const char *name)
+{
+ raptor_rss10_serializer_context *rss_serializer;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+ rss_serializer->world = serializer->world;
+
+ raptor_rss_common_init(serializer->world);
+ raptor_rss_model_init(serializer->world, &rss_serializer->model);
+
+ rss_serializer->triples = raptor_new_sequence((raptor_data_free_handler)raptor_free_statement, (raptor_data_print_handler)raptor_statement_print);
+
+ rss_serializer->items = raptor_new_sequence((raptor_data_free_handler)raptor_free_rss_item, (raptor_data_print_handler)NULL);
+
+ rss_serializer->enclosures = raptor_new_sequence((raptor_data_free_handler)raptor_free_rss_item, (raptor_data_print_handler)NULL);
+
+ rss_serializer->group_map = raptor_new_avltree((raptor_data_compare_handler)raptor_rss_group_map_compare,
+ (raptor_data_free_handler)raptor_free_group_map, 0);
+
+ rss_serializer->user_namespaces = raptor_new_sequence((raptor_data_free_handler)raptor_free_namespace, NULL);
+
+ rss_serializer->is_atom = !(strcmp(name,"atom"));
+
+ rss_serializer->nstack = raptor_new_namespaces(serializer->world, 1);
+
+ rss_serializer->xml_literal_dt = raptor_new_uri(serializer->world,
+ raptor_xml_literal_datatype_uri_string);
+
+ return 0;
+}
+
+
+/**
+ * raptor_rss10_serialize_terminate:
+ * @serializer: serializer object
+ *
+ * INTERNAL (raptor_serializer_factory API) - destroy a serializer
+ */
+static void
+raptor_rss10_serialize_terminate(raptor_serializer* serializer)
+{
+ raptor_world* world = serializer->world;
+ raptor_rss10_serializer_context *rss_serializer;
+ int i;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+
+ raptor_rss_model_clear(&rss_serializer->model);
+ raptor_rss_common_terminate(world);
+
+ if(rss_serializer->triples)
+ raptor_free_sequence(rss_serializer->triples);
+
+ if(rss_serializer->items)
+ raptor_free_sequence(rss_serializer->items);
+
+ if(rss_serializer->enclosures)
+ raptor_free_sequence(rss_serializer->enclosures);
+
+ if(rss_serializer->seq_term)
+ raptor_free_term(rss_serializer->seq_term);
+
+ if(rss_serializer->xml_writer)
+ raptor_free_xml_writer(rss_serializer->xml_writer);
+
+ for(i = 0; i < RAPTOR_RSS_NAMESPACES_SIZE; i++) {
+ if(rss_serializer->nspaces[i])
+ raptor_free_namespace(rss_serializer->nspaces[i]);
+ }
+
+ if(rss_serializer->free_default_nspace && rss_serializer->default_nspace)
+ raptor_free_namespace(rss_serializer->default_nspace);
+
+ if(rss_serializer->xml_nspace)
+ raptor_free_namespace(rss_serializer->xml_nspace);
+
+ if(rss_serializer->user_namespaces)
+ raptor_free_sequence(rss_serializer->user_namespaces);
+
+ /* all raptor_namespace* objects must be freed BEFORE the stack
+ * they are attached to here: */
+ if(rss_serializer->nstack)
+ raptor_free_namespaces(rss_serializer->nstack);
+
+ if(rss_serializer->group_map)
+ raptor_free_avltree(rss_serializer->group_map);
+
+ if(world->rss_fields_info_qnames) {
+ for(i = 0; i < RAPTOR_RSS_FIELDS_SIZE; i++) {
+ if(world->rss_fields_info_qnames[i])
+ raptor_free_qname(world->rss_fields_info_qnames[i]);
+ }
+ RAPTOR_FREE(raptor_qname* array, world->rss_fields_info_qnames);
+ world->rss_fields_info_qnames = NULL;
+ }
+
+ if(world->rss_types_info_qnames) {
+ for(i = 0; i < RAPTOR_RSS_COMMON_SIZE; i++) {
+ if(world->rss_types_info_qnames[i])
+ raptor_free_qname(world->rss_types_info_qnames[i]);
+ }
+ RAPTOR_FREE(raptor_wname* array, world->rss_types_info_qnames);
+ world->rss_types_info_qnames = NULL;
+ }
+
+ if(rss_serializer->xml_literal_dt)
+ raptor_free_uri(rss_serializer->xml_literal_dt);
+}
+
+
+/**
+ * raptor_rss10_move_statements:
+ * @rss_serializer: serializer object
+ * @type: item type
+ * @item: item object
+ *
+ * INTERNAL - Move statements from the stored triples into item @item
+ * that match @item's URI as subject.
+ *
+ * Return value: count of number of triples moved
+ */
+static int
+raptor_rss10_move_statements(raptor_rss10_serializer_context *rss_serializer,
+ raptor_rss_type type,
+ raptor_rss_item *item)
+{
+ int t;
+ int count = 0;
+ int is_atom = rss_serializer->is_atom;
+ int size = raptor_sequence_size(rss_serializer->triples);
+
+ for(t = 0; t < size; t++) {
+ raptor_statement* s;
+ int f;
+
+ s = (raptor_statement*)raptor_sequence_get_at(rss_serializer->triples, t);
+ if(!s)
+ continue;
+
+ if(s->subject->type != RAPTOR_TERM_TYPE_URI ||
+ !raptor_uri_equals(s->subject->value.uri, item->uri))
+ continue;
+
+ /* now we know this triple is associated with the item URI
+ * and can count the relevant triples */
+ count++;
+
+ /* add triples with anonymous object to the general triples sequence
+ * for this item, and to the group map (blank node closure)
+ */
+ if(s->object->type == RAPTOR_TERM_TYPE_BLANK) {
+ raptor_rss10_set_item_group(rss_serializer, s->object, item);
+
+ RAPTOR_DEBUG4("Moved anonymous value property URI <%s> for typed node %i - %s\n",
+ raptor_uri_as_string(s->predicate->value.uri),
+ type, raptor_rss_items_info[type].name);
+ s = (raptor_statement*)raptor_sequence_delete_at(rss_serializer->triples,
+ t);
+ raptor_sequence_push(item->triples, s);
+ continue;
+ }
+
+
+ /* otherwise process object value types resource or literal */
+ for(f = 0; f < RAPTOR_RSS_FIELDS_SIZE; f++) {
+ if(!rss_serializer->world->rss_fields_info_uris[f])
+ continue;
+
+ if(s->predicate->type == RAPTOR_TERM_TYPE_URI &&
+ s->object->type != RAPTOR_TERM_TYPE_BLANK &&
+ raptor_uri_equals(s->predicate->value.uri,
+ rss_serializer->world->rss_fields_info_uris[f])) {
+ raptor_rss_field* field = raptor_rss_new_field(rss_serializer->world);
+
+ /* found field this triple to go in 'item' so move the
+ * object value over
+ */
+ if(s->object->type == RAPTOR_TERM_TYPE_URI) {
+ field->uri = s->object->value.uri;
+ s->object->value.uri = NULL;
+ } else {
+ field->value = s->object->value.literal.string;
+ if(s->object->value.literal.datatype &&
+ raptor_uri_equals(s->object->value.literal.datatype,
+ rss_serializer->xml_literal_dt))
+ field->is_xml = 1;
+
+ if(f == RAPTOR_RSS_FIELD_CONTENT_ENCODED)
+ field->is_xml = 1;
+
+ if(f == RAPTOR_RSS_FIELD_ATOM_SUMMARY && *field->value == '<')
+ field->is_xml = 1;
+
+ s->object->value.literal.string = NULL;
+ }
+
+ if(is_atom) {
+ int i;
+
+ /* Rewrite item fields rss->atom */
+ for(i = 0;
+ raptor_atom_to_rss[i].from != RAPTOR_RSS_FIELD_UNKNOWN;
+ i++) {
+ int from_f = raptor_atom_to_rss[i].to;
+ int to_f = raptor_atom_to_rss[i].from;
+
+ /* Do not rewrite to atom0.3 terms */
+ if(raptor_rss_fields_info[to_f].nspace == ATOM0_3_NS)
+ continue;
+
+ if(f == from_f &&
+ !(item->fields[to_f] && item->fields[to_f]->value)) {
+ f = to_f;
+ if(to_f == RAPTOR_RSS_FIELD_ATOM_SUMMARY && *field->value == '<')
+ field->is_xml = 1;
+ field->is_mapped = 1;
+ RAPTOR_DEBUG5("Moved field %d - %s to field %d - %s\n",
+ from_f, raptor_rss_fields_info[from_f].name,
+ to_f, raptor_rss_fields_info[to_f].name);
+ break;
+ }
+ }
+ } /* end is atom field to map */
+
+ RAPTOR_DEBUG1("Adding field\n");
+ raptor_rss_item_add_field(item, f, field);
+ raptor_sequence_set_at(rss_serializer->triples, t, NULL);
+ break;
+ }
+ } /* end for field loop */
+
+ /* loop ended early so triple was assocated with a field - continue */
+ if(f < RAPTOR_RSS_FIELDS_SIZE)
+ continue;
+
+
+ /* otherwise triple was not found as a field so store in triples
+ * sequence
+ */
+ RAPTOR_DEBUG4("UNKNOWN property URI <%s> for typed node %i - %s\n",
+ raptor_uri_as_string(s->predicate->value.uri),
+ type, raptor_rss_items_info[type].name);
+ s = (raptor_statement*)raptor_sequence_delete_at(rss_serializer->triples,
+ t);
+ raptor_sequence_push(item->triples, s);
+
+ } /* end for all triples */
+
+#ifdef RAPTOR_DEBUG
+ if(count > 0)
+ RAPTOR_DEBUG5("Moved %d triples to typed node %i - %s with uri <%s>\n",
+ count, type, raptor_rss_items_info[type].name,
+ raptor_uri_as_string(item->uri));
+#endif
+
+ return count;
+}
+
+
+/**
+ * raptor_rss10_move_anonymous_statements:
+ * @rss_serializer: serializer object
+ *
+ * INTERNAL - Move statements with a blank node subject to the appropriate item
+ *
+ */
+static int
+raptor_rss10_move_anonymous_statements(raptor_rss10_serializer_context *rss_serializer)
+{
+ int t;
+ int handled = 1;
+ int round = 0;
+#ifdef RAPTOR_DEBUG
+ int moved_count = 0;
+#endif
+
+ for(round = 0; handled; round++) {
+ int size = raptor_sequence_size(rss_serializer->triples);
+
+ handled = 0;
+ for(t = 0; t < size; t++) {
+ raptor_statement* s;
+ raptor_rss_item* item;
+
+ s = (raptor_statement*)raptor_sequence_get_at(rss_serializer->triples, t);
+ if(!s)
+ continue;
+
+ if(s->subject->type != RAPTOR_TERM_TYPE_BLANK)
+ continue;
+
+ item = raptor_rss10_get_group_item(rss_serializer, s->subject);
+
+ if(item) {
+ /* triple matched an existing item */
+ s = (raptor_statement*)raptor_sequence_delete_at(rss_serializer->triples,
+ t);
+ raptor_sequence_push(item->triples, s);
+#ifdef RAPTOR_DEBUG
+ moved_count++;
+#endif
+
+ if(s->object->type == RAPTOR_TERM_TYPE_BLANK)
+ raptor_rss10_set_item_group(rss_serializer, s->object, item);
+
+
+ handled = 1;
+ }
+ } /* end for all triples */
+
+#ifdef RAPTOR_DEBUG
+ if(moved_count > 0)
+ RAPTOR_DEBUG3("Round %d: Moved %d triples\n", round, moved_count);
+#endif
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_rss10_move_leftover_statements:
+ * @rss_serializer: serializer object
+ *
+ * INTERNAL - Move any statements in the serializer pool to items or channel
+ *
+ */
+static int
+raptor_rss10_move_leftover_statements(raptor_rss10_serializer_context *rss_serializer)
+{
+ raptor_rss_model* rss_model;
+ int i;
+ int type;
+ raptor_rss_item* item;
+ int size;
+
+ rss_model = &rss_serializer->model;
+
+ type = RAPTOR_RSS_ITEM;
+ size = raptor_sequence_size(rss_serializer->items);
+ for(i = 0; i < size; i++) {
+ item = (raptor_rss_item*)raptor_sequence_get_at(rss_serializer->items, i);
+ raptor_rss10_move_statements(rss_serializer, (raptor_rss_type)type, item);
+ }
+
+ type = RAPTOR_RSS_CHANNEL;
+ if(rss_model->common[type]) {
+ item = rss_model->common[type];
+ raptor_rss10_move_statements(rss_serializer, (raptor_rss_type)type, item);
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_rss10_remove_mapped_item_fields:
+ * @rss_serializer: serializer object
+ * @item: rss item
+ * @type: item type
+ *
+ * INTERNAL - Remove mapped fields for an item
+ *
+ */
+static int
+raptor_rss10_remove_mapped_item_fields(raptor_rss10_serializer_context *rss_serializer,
+ raptor_rss_item* item, int type)
+{
+ int f;
+
+ if(!item->fields_count)
+ return 0;
+
+ for(f = 0; f < RAPTOR_RSS_FIELDS_SIZE; f++) {
+ raptor_rss_field* field;
+ int saw_mapped = 0;
+ int saw_non_mapped = 0;
+
+ for(field = item->fields[f]; field; field = field->next) {
+ if(field->is_mapped)
+ saw_mapped++;
+ else
+ saw_non_mapped++;
+ }
+
+ if(saw_mapped && saw_non_mapped) {
+ raptor_rss_field* last_field = NULL;
+ RAPTOR_DEBUG6("Item %p Field %d - %s: %d mapped %d non-mapped\n", item,
+ f, raptor_rss_fields_info[f].name,
+ saw_mapped, saw_non_mapped);
+
+ field = item->fields[f];
+ while(field) {
+ raptor_rss_field* next = field->next;
+ field->next = NULL;
+ if(field->is_mapped)
+ raptor_rss_field_free(field);
+ else {
+ if(!last_field)
+ item->fields[f] = field;
+ else
+ last_field->next = field;
+ last_field = field;
+ }
+ field = next;
+ }
+ }
+
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_rss10_remove_mapped_fields:
+ * @rss_serializer: serializer object
+ *
+ * INTERNAL - Move statements with a blank node subject to the appropriate item
+ *
+ */
+static int
+raptor_rss10_remove_mapped_fields(raptor_rss10_serializer_context *rss_serializer)
+{
+ raptor_rss_model* rss_model;
+ int is_atom;
+ int i;
+
+ rss_model = &rss_serializer->model;
+ is_atom = rss_serializer->is_atom;
+
+ if(!is_atom)
+ return 0;
+
+ if(rss_model->items_count) {
+ int size = raptor_sequence_size(rss_serializer->items);
+ for(i = 0; i < size; i++) {
+ raptor_rss_item* item;
+ item = (raptor_rss_item*)raptor_sequence_get_at(rss_serializer->items, i);
+ raptor_rss10_remove_mapped_item_fields(rss_serializer, item,
+ RAPTOR_RSS_ITEM);
+ }
+ }
+
+ for(i = RAPTOR_RSS_CHANNEL; i < RAPTOR_RSS_COMMON_SIZE; i++) {
+ raptor_rss_item* item;
+ for(item = rss_model->common[i]; item; item = item->next) {
+ raptor_rss10_remove_mapped_item_fields(rss_serializer, item, i);
+ }
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_rss10_store_statement:
+ * @rss_serializer: serializer object
+ * @s: statement (shared - do not become owner of this)
+ *
+ * INTERNAL - decide where to store a statement in an item or keep pending
+ *
+ * Return value: non-0 if handled (stored)
+ */
+static int
+raptor_rss10_store_statement(raptor_rss10_serializer_context *rss_serializer,
+ raptor_statement *s)
+{
+ raptor_rss_item *item = NULL;
+ int handled = 0;
+ int is_atom = rss_serializer->is_atom;
+
+ item = raptor_rss10_get_group_item(rss_serializer, s->subject);
+
+ if(item &&
+ s->predicate->type == RAPTOR_TERM_TYPE_URI &&
+ (s->object->type == RAPTOR_TERM_TYPE_URI ||
+ s->object->type == RAPTOR_TERM_TYPE_LITERAL)) {
+ int f;
+ raptor_uri* predicate_uri = s->predicate->value.uri;
+
+ /* scan triples (? <predicate-uri> <uri or literal>) */
+
+ for(f = 0; f < RAPTOR_RSS_FIELDS_SIZE; f++) {
+ raptor_rss_field* field;
+ if(!rss_serializer->world->rss_fields_info_uris[f])
+ continue;
+
+ if(raptor_uri_equals(predicate_uri,
+ rss_serializer->world->rss_fields_info_uris[f])) {
+ /* found field this triple to go in 'item' so move the
+ * object value over
+ */
+ field = raptor_rss_new_field(rss_serializer->world);
+
+ if(s->object->type == RAPTOR_TERM_TYPE_URI) {
+ field->uri = s->object->value.uri;
+ s->object->value.uri = NULL;
+ } else {
+ /* must be literal - checked above */
+ field->value = s->object->value.literal.string;
+
+ if(s->object->value.literal.datatype &&
+ raptor_uri_equals(s->object->value.literal.datatype,
+ rss_serializer->xml_literal_dt))
+ field->is_xml = 1;
+
+ if(f == RAPTOR_RSS_FIELD_CONTENT_ENCODED)
+ field->is_xml = 1;
+
+ if(f == RAPTOR_RSS_FIELD_ATOM_SUMMARY && *field->value == '<')
+ field->is_xml = 1;
+ s->object->value.literal.string = NULL;
+ }
+
+ if(is_atom) {
+ int i;
+
+ /* Rewrite item fields rss->atom */
+ for(i = 0;
+ raptor_atom_to_rss[i].from != RAPTOR_RSS_FIELD_UNKNOWN; i++) {
+ int from_f = raptor_atom_to_rss[i].to;
+ int to_f = raptor_atom_to_rss[i].from;
+
+ /* Do not rewrite to atom0.3 terms */
+ if(raptor_rss_fields_info[to_f].nspace == ATOM0_3_NS)
+ continue;
+
+ if(f == from_f &&
+ !(item->fields[to_f] && item->fields[to_f]->value)) {
+ f = to_f;
+
+ if(to_f == RAPTOR_RSS_FIELD_ATOM_SUMMARY && *field->value == '<')
+ field->is_xml = 1;
+
+ field->is_mapped = 1;
+ RAPTOR_DEBUG5("Moved field %d - %s to field %d - %s\n",
+ from_f, raptor_rss_fields_info[from_f].name,
+ to_f, raptor_rss_fields_info[to_f].name);
+ break;
+ }
+ }
+ }
+
+ RAPTOR_DEBUG1("Adding field\n");
+ raptor_rss_item_add_field(item, f, field);
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("Stored statement under typed node %p\n", item);
+#endif
+
+ handled = 1;
+ break;
+ }
+ }
+ }
+
+ if(!handled) {
+ raptor_statement *t;
+
+ /* Need to handle this later so copy it */
+ t = raptor_statement_copy(s);
+ if(t) {
+ raptor_sequence_push(rss_serializer->triples, t);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr,"Stored statement: ");
+ raptor_statement_print_as_ntriples(s, stderr);
+ fprintf(stderr,"\n");
+#endif
+ handled = 1;
+ }
+ }
+
+ return handled;
+}
+
+
+static int
+raptor_rss10_serialize_start(raptor_serializer* serializer)
+{
+ raptor_rss10_serializer_context *rss_serializer;
+ const char* rss_triples;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+
+ rss_triples = (const char*)RAPTOR_OPTIONS_GET_STRING(serializer,
+ RAPTOR_OPTION_RSS_TRIPLES);
+ if(rss_triples) {
+ if(!strcmp(rss_triples, "none"))
+ rss_serializer->rss_triples_mode = 0;
+ else if(!strcmp(rss_triples, "rdf-xml"))
+ rss_serializer->rss_triples_mode = 1;
+ else if(!strcmp(rss_triples, "atom-triples"))
+ rss_serializer->rss_triples_mode = 2;
+ else
+ rss_serializer->rss_triples_mode = 0;
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_rss10_serialize_statement:
+ * @serializer: serializer object
+ * @statement: statement (shared - am not owner of this)
+ *
+ * INTERNAL (raptor_serializer_factory API) - Serialize a statement
+ *
+ * Return value: non-0 on failure
+ */
+static int
+raptor_rss10_serialize_statement(raptor_serializer* serializer,
+ raptor_statement *statement)
+{
+ raptor_rss10_serializer_context *rss_serializer;
+ raptor_rss_model *rss_model;
+ int handled = 0;
+ int i;
+ raptor_rss_type type;
+ raptor_rss_item *item = NULL;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+ rss_model = &rss_serializer->model;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ if(1) {
+ RAPTOR_DEBUG1("Processing statement\n ");
+ raptor_statement_print_as_ntriples(statement, stderr);
+ fputc('\n', stderr);
+ }
+#endif
+
+ if(raptor_uri_equals(statement->predicate->value.uri,
+ RAPTOR_RSS_RSS_items_URI(rss_model))) {
+ /* ignore any triple (? rss:items ?) - is infered */
+ return 0;
+ }
+
+ if(!raptor_uri_equals(statement->predicate->value.uri,
+ RAPTOR_RDF_type_URI(serializer->world)))
+ goto savetriple;
+
+
+ type = RAPTOR_RSS_NONE;
+
+ if(statement->object->type == RAPTOR_TERM_TYPE_URI) {
+ raptor_uri* object_uri = statement->object->value.uri;
+
+ /* look for triple: (? rdf:type ?class-uri) to find containers and blocks */
+
+ /* Look for triple (? rdf:type rdf:Seq) */
+ if(raptor_uri_equals(object_uri, RAPTOR_RDF_Seq_URI(serializer->world))) {
+
+ rss_serializer->seq_term = raptor_term_copy(statement->subject);
+
+ handled = 1;
+ goto savetriple;
+ }
+
+ /* look for triple: (? rdf:type ?class-uri) to find containers and blocks */
+ for(i = 0; i < RAPTOR_RSS_COMMON_SIZE; i++) {
+ raptor_uri *item_uri = serializer->world->rss_types_info_uris[i];
+
+ if(item_uri && raptor_uri_equals(object_uri, item_uri)) {
+ type = (raptor_rss_type)i;
+
+#ifdef RAPTOR_DEBUG
+ if(1) {
+ unsigned char* ts;
+ ts = raptor_term_to_string(statement->subject);
+ RAPTOR_DEBUG4("Found typed node %i - %s with term %s\n", type,
+ raptor_rss_items_info[type].name, ts);
+ RAPTOR_FREE(char*, ts);
+ }
+#endif
+ break;
+ }
+ }
+ }
+
+ if(type == RAPTOR_RSS_NONE) {
+#ifdef RAPTOR_DEBUG
+ if(1) {
+ unsigned char* ts;
+ ts = raptor_term_to_string(statement->object);
+ RAPTOR_DEBUG2("UNKNOWN typed node with type term %s\n", ts);
+ RAPTOR_FREE(char*, ts);
+ }
+#endif
+ goto savetriple;
+ }
+
+
+ if(type == RAPTOR_RSS_ITEM) {
+ int size = raptor_sequence_size(rss_serializer->items);
+ for(i = 0; i < size; i++) {
+ item = (raptor_rss_item*)raptor_sequence_get_at(rss_serializer->items, i);
+
+ if(raptor_rss_item_equals_statement_subject(item, statement))
+ break;
+
+ }
+ if(i < size) {
+ RAPTOR_DEBUG2("Found RSS item at entry %d in sequence of items\n", i);
+ } else {
+#ifdef RAPTOR_DEBUG
+ if(1) {
+ unsigned char* ts;
+ ts = raptor_term_to_string(statement->subject);
+
+ RAPTOR_DEBUG2("RSS item term %s is not in sequence of items\n", ts);
+ RAPTOR_FREE(char*, ts);
+ }
+#endif
+ item = NULL;
+ }
+ } else if(type == RAPTOR_RSS_ENCLOSURE) {
+ int size = raptor_sequence_size(rss_serializer->enclosures);
+ for(i = 0; i < size; i++) {
+ item = (raptor_rss_item*)raptor_sequence_get_at(rss_serializer->enclosures, i);
+
+ if(raptor_rss_item_equals_statement_subject(item, statement))
+ break;
+ }
+ if(i < size) {
+ RAPTOR_DEBUG2("Found enclosure at entry %d in sequence of enclosures\n", i);
+ } else {
+#ifdef RAPTOR_DEBUG
+ if(1) {
+ unsigned char* ts;
+ ts = raptor_term_to_string(statement->subject);
+ RAPTOR_DEBUG2("Add new enclosure to sequence with term %s\n", ts);
+ RAPTOR_FREE(char*, ts);
+ }
+#endif
+
+ item = raptor_new_rss_item(rss_serializer->world);
+ raptor_sequence_push(rss_serializer->enclosures, item);
+ }
+ } else {
+ item = raptor_rss_model_add_common(rss_model, type);
+ }
+
+
+ if(item && statement->subject->type == RAPTOR_TERM_TYPE_URI) {
+ raptor_rss_item_set_uri(item, statement->subject->value.uri);
+
+ /* Move any existing statements to the newly discovered item */
+ raptor_rss10_move_statements(rss_serializer, type, item);
+
+ raptor_rss10_set_item_group(rss_serializer, item->term, item);
+
+ handled = 1;
+ }
+
+
+ savetriple:
+ if(!handled) {
+ handled = raptor_rss10_store_statement(rss_serializer, statement);
+
+ /* failed to store */
+ if(!handled)
+ return 1;
+ }
+
+ return 0;
+}
+
+
+static void
+raptor_rss10_build_items(raptor_rss10_serializer_context *rss_serializer)
+{
+ raptor_rss_model* rss_model = &rss_serializer->model;
+ int i;
+ int size;
+
+ if(!rss_serializer->seq_term)
+ return;
+
+ size = raptor_sequence_size(rss_serializer->triples);
+ for(i = 0; i < size; i++) {
+ int ordinal = -1;
+ raptor_statement* s;
+
+ s = (raptor_statement*)raptor_sequence_get_at(rss_serializer->triples, i);
+ if(!s)
+ continue;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG1("Processing statement\n ");
+ raptor_statement_print_as_ntriples(s, stderr);
+ fputc('\n', stderr);
+#endif
+
+ /* skip triples that are not ? ? <uri> */
+ if(s->object->type != RAPTOR_TERM_TYPE_URI) {
+ RAPTOR_DEBUG1("Not ? ? <uri> - continuing\n");
+ continue;
+ }
+
+
+ if(raptor_term_equals(s->subject, rss_serializer->seq_term)) {
+ const unsigned char* uri_str;
+ /* found <seq URI> <some predicate> <some URI> triple */
+
+ /* predicate is a resource */
+ uri_str = raptor_uri_as_string(s->predicate->value.uri);
+
+ if(!strncmp((const char*)uri_str,
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#_", 44))
+ ordinal= raptor_check_ordinal(uri_str + 44);
+
+#ifdef RAPTOR_DEBUG
+ if(1) {
+ unsigned char* ts;
+ ts = raptor_term_to_string(s->object);
+ RAPTOR_DEBUG3("Found RSS 1.0 item %d with term %s\n", ordinal, ts);
+ RAPTOR_FREE(char*, ts);
+ }
+#endif
+
+ if(ordinal >= 0) {
+ raptor_rss_item *item;
+
+ item = raptor_new_rss_item(rss_serializer->world);
+
+ raptor_rss_item_set_uri(item, s->object->value.uri);
+
+ raptor_sequence_set_at(rss_serializer->items, ordinal - 1, item);
+
+ raptor_sequence_set_at(rss_serializer->triples, i, NULL);
+
+ /* Move any existing statements to the newly discovered item */
+ raptor_rss10_move_statements(rss_serializer, RAPTOR_RSS_ITEM, item);
+
+ raptor_rss10_set_item_group(rss_serializer, item->term, item);
+ }
+ }
+ }
+
+ rss_model->items_count = raptor_sequence_size(rss_serializer->items);
+}
+
+
+static void
+raptor_rss10_build_xml_names(raptor_serializer *serializer, int is_entry)
+{
+ raptor_world* world = serializer->world;
+ raptor_rss10_serializer_context *rss_serializer;
+ raptor_rss_model* rss_model;
+ raptor_uri *base_uri = serializer->base_uri;
+ raptor_xml_element *element;
+ raptor_qname *qname;
+ const unsigned char *root_local_name;
+ int i;
+ int is_atom;
+ const raptor_rss_item_info *item_node_type;
+ int item_node_typei;
+ const unsigned char* ns_uri;
+ int default_ns_id;
+ const unsigned char *default_prefix;
+ int size;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+ rss_model = &rss_serializer->model;
+ is_atom = rss_serializer->is_atom;
+
+ if(is_atom) {
+ default_ns_id = ATOM1_0_NS;
+ ns_uri = raptor_atom_namespace_uri;
+ root_local_name = (is_entry ? (const unsigned char*)"entry" :
+ (const unsigned char*)"feed");
+ item_node_typei = RAPTOR_ATOM_ENTRY;
+ } else {
+ default_ns_id = RSS1_0_NS;
+ ns_uri = raptor_rdf_namespace_uri;
+ root_local_name = (const unsigned char*)"RDF";
+ item_node_typei = RAPTOR_RSS_ITEM;
+ }
+ item_node_type = &raptor_rss_items_info[item_node_typei];
+
+ if(RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_PREFIX_ELEMENTS))
+ /* declare this NS with standard prefix */
+ default_prefix = (const unsigned char*)raptor_rss_namespaces_info[default_ns_id].prefix;
+ else
+ default_prefix = NULL;
+
+ rss_serializer->default_nspace = raptor_new_namespace(rss_serializer->nstack,
+ default_prefix, ns_uri,
+ 0);
+ rss_serializer->free_default_nspace = 1;
+
+ if(RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_PREFIX_ELEMENTS)) {
+ rss_serializer->nspaces[default_ns_id] = rss_serializer->default_nspace;
+ rss_serializer->free_default_nspace = 0;
+ }
+
+ rss_serializer->xml_nspace = raptor_new_namespace(rss_serializer->nstack,
+ (const unsigned char*)"xml",
+ (const unsigned char*)raptor_xml_namespace_uri,
+ 0);
+
+
+ /* Now we have a namespace stack, declare the namespaces */
+ for(i = 0; i < RAPTOR_RSS_NAMESPACES_SIZE; i++) {
+ raptor_uri* uri = serializer->world->rss_namespaces_info_uris[i];
+ const unsigned char *prefix;
+
+ prefix = (const unsigned char*)raptor_rss_namespaces_info[i].prefix;
+ if(!prefix)
+ continue;
+
+ if(i == default_ns_id) {
+ if(RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_PREFIX_ELEMENTS))
+ prefix = NULL;
+ }
+
+ if(uri) {
+ raptor_namespace* nspace;
+ nspace = raptor_new_namespace_from_uri(rss_serializer->nstack, prefix,
+ uri, 0);
+ rss_serializer->nspaces[i] = nspace;
+ }
+ }
+
+
+ qname = raptor_new_qname_from_namespace_local_name(serializer->world,
+ rss_serializer->nspaces[default_ns_id],
+ root_local_name,
+ NULL);
+ if(base_uri)
+ base_uri = raptor_uri_copy(base_uri);
+
+ element = raptor_new_xml_element(qname, NULL, base_uri);
+ rss_serializer->root_element = element;
+
+
+ /* Declare the namespaces on the root element */
+ raptor_xml_element_declare_namespace(element, rss_serializer->default_nspace);
+
+ for(i = 0; i < RAPTOR_RSS_NAMESPACES_SIZE; i++) {
+ const unsigned char *prefix;
+
+ prefix = (const unsigned char*)raptor_rss_namespaces_info[i].prefix;
+ if(!prefix && i != default_ns_id)
+ continue;
+
+ if(rss_serializer->nspaces[i])
+ raptor_xml_element_declare_namespace(element, rss_serializer->nspaces[i]);
+ }
+
+ size = raptor_sequence_size(rss_serializer->user_namespaces);
+ for(i = 0; i < size; i++) {
+ raptor_namespace* nspace;
+ nspace = (raptor_namespace*)raptor_sequence_get_at(rss_serializer->user_namespaces, i);
+
+ /* Ignore user setting default namespace prefix */
+ if(!nspace->prefix)
+ continue;
+
+ raptor_xml_element_declare_namespace(element, nspace);
+ }
+
+
+ world->rss_fields_info_qnames = RAPTOR_CALLOC(raptor_qname**,
+ RAPTOR_RSS_FIELDS_SIZE,
+ sizeof(raptor_qname*));
+ if(!world->rss_fields_info_qnames)
+ return;
+
+ for(i = 0; i < RAPTOR_RSS_FIELDS_SIZE; i++) {
+ int n = raptor_rss_fields_info[i].nspace;
+ raptor_namespace* nspace = rss_serializer->nspaces[n];
+ const unsigned char* lname;
+ lname = (const unsigned char*)raptor_rss_fields_info[i].name;
+
+ world->rss_fields_info_qnames[i] =
+ raptor_new_qname_from_namespace_local_name(serializer->world,
+ nspace, lname, NULL);
+ if(!world->rss_fields_info_qnames[i])
+ return;
+ }
+
+ world->rss_types_info_qnames = RAPTOR_CALLOC(raptor_qname**,
+ RAPTOR_RSS_COMMON_SIZE,
+ sizeof(raptor_qname*));
+ if(!world->rss_types_info_qnames)
+ return;
+ for(i = 0; i < RAPTOR_RSS_COMMON_SIZE; i++) {
+ int n = raptor_rss_items_info[i].nspace;
+ raptor_namespace* nspace = rss_serializer->nspaces[n];
+
+ if(nspace) {
+ const unsigned char* lname =
+ (const unsigned char*)raptor_rss_items_info[i].name;
+
+ world->rss_types_info_qnames[i] =
+ raptor_new_qname_from_namespace_local_name(serializer->world,
+ nspace, lname, NULL);
+ if(!world->rss_types_info_qnames[i])
+ return;
+ }
+ }
+
+ for(i = 0; i < RAPTOR_RSS_COMMON_SIZE; i++) {
+ raptor_rss_item* item;
+ for(item = rss_model->common[i]; item; item = item->next) {
+ int typei = i;
+
+ if(!item->fields_count)
+ continue;
+
+ if(is_atom) {
+ if(typei == RAPTOR_RSS_CHANNEL)
+ typei = RAPTOR_ATOM_FEED;
+ else if(typei == RAPTOR_RSS_ITEM)
+ typei = RAPTOR_ATOM_ENTRY;
+ }
+ item->node_type = &raptor_rss_items_info[typei];
+ item->node_typei = typei;
+ }
+ }
+
+ size = raptor_sequence_size(rss_serializer->items);
+ for(i = 0; i < size; i++) {
+ raptor_rss_item* item;
+ item = (raptor_rss_item*)raptor_sequence_get_at(rss_serializer->items, i);
+ item->node_type = item_node_type;
+ item->node_typei = item_node_typei;
+ }
+
+ size = raptor_sequence_size(rss_serializer->enclosures);
+ for(i = 0; i < size; i++) {
+ raptor_rss_item* item;
+ item = (raptor_rss_item*)raptor_sequence_get_at(rss_serializer->enclosures, i);
+ item->node_type = &raptor_rss_items_info[RAPTOR_RSS_ENCLOSURE];
+ item->node_typei = RAPTOR_RSS_ENCLOSURE;
+ }
+
+}
+
+
+static void
+raptor_rss10_emit_atom_triples_map(raptor_serializer *serializer, int is_feed,
+ const unsigned char* map_element_name)
+{
+ raptor_rss10_serializer_context *rss_serializer;
+ raptor_xml_writer* xml_writer;
+ raptor_uri *base_uri = serializer->base_uri;
+ raptor_uri* base_uri_copy = NULL;
+ raptor_namespace* at_nspace;
+ raptor_xml_element* at_map_root_element;
+ raptor_qname *at_map_root_qname;
+ int i;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+ xml_writer = rss_serializer->xml_writer;
+ at_nspace = rss_serializer->nspaces[ATOMTRIPLES_NS];
+
+ at_map_root_qname = raptor_new_qname_from_namespace_local_name(serializer->world, at_nspace,
+ (const unsigned char*)map_element_name, NULL);
+ base_uri_copy = base_uri ? raptor_uri_copy(base_uri) : NULL;
+ at_map_root_element = raptor_new_xml_element(at_map_root_qname, NULL,
+ base_uri_copy);
+
+ raptor_xml_writer_start_element(xml_writer, at_map_root_element);
+
+ /* Walk list of fields mapped atom to rss */
+ for(i = 0; raptor_atom_to_rss[i].from != RAPTOR_RSS_FIELD_UNKNOWN; i++) {
+ int from_f = raptor_atom_to_rss[i].from;
+ int to_f = raptor_atom_to_rss[i].to;
+ const raptor_rss_field_info* from_field_info = &raptor_rss_fields_info[from_f];
+ const raptor_rss_field_info* to_field_info = &raptor_rss_fields_info[to_f];
+ raptor_xml_element* at_map_element;
+ raptor_qname *at_map_qname;
+ raptor_qname** at_map_attrs;
+ const char* predicate_prefix;
+ unsigned char* ruri_string;
+
+ /* Do not rewrite to atom0.3 terms */
+ if(to_field_info->nspace == ATOM0_3_NS)
+ continue;
+
+ /* atom:feed only contains some fields that are mapped */
+ if(is_feed && !(from_f == RAPTOR_RSS_FIELD_ATOM_ID ||
+ from_f == RAPTOR_RSS_FIELD_ATOM_UPDATED ||
+ from_f == RAPTOR_RSS_FIELD_ATOM_RIGHTS ||
+ from_f == RAPTOR_RSS_FIELD_ATOM_TITLE))
+ continue;
+
+ predicate_prefix = raptor_rss_namespaces_info[from_field_info->nspace].prefix;
+ if(!predicate_prefix)
+ continue;
+
+ /* <at:map property="{property URI}">{atom element}</at:map> */
+ at_map_qname = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ at_nspace,
+ map_element_name,
+ NULL);
+ base_uri_copy = base_uri ? raptor_uri_copy(base_uri) : NULL;
+ at_map_element = raptor_new_xml_element(at_map_qname, NULL, base_uri_copy);
+
+
+ at_map_attrs = RAPTOR_CALLOC(raptor_qname**, 1, sizeof(raptor_qname*));
+ ruri_string = raptor_uri_to_relative_uri_string(base_uri,
+ serializer->world->rss_fields_info_uris[to_f]);
+ at_map_attrs[0] = raptor_new_qname(rss_serializer->nstack,
+ (const unsigned char*)"property",
+ ruri_string);
+ raptor_free_memory(ruri_string);
+ raptor_xml_element_set_attributes(at_map_element, at_map_attrs, 1);
+
+ raptor_xml_writer_start_element(xml_writer, at_map_element);
+ raptor_xml_writer_cdata(xml_writer, (const unsigned char*)predicate_prefix);
+ raptor_xml_writer_cdata_counted(xml_writer, (const unsigned char*)":", 1);
+ raptor_xml_writer_cdata(xml_writer,
+ (const unsigned char*)from_field_info->name);
+ raptor_xml_writer_end_element(xml_writer, at_map_element);
+
+ raptor_free_xml_element(at_map_element);
+ }
+
+ raptor_xml_writer_end_element(xml_writer, at_map_root_element);
+
+ raptor_free_xml_element(at_map_root_element);
+}
+
+
+
+/* atom-specific feed XML elements */
+static void
+raptor_rss10_emit_atom_feed(raptor_serializer *serializer,
+ raptor_rss_item *item)
+{
+ raptor_rss10_serializer_context *rss_serializer;
+ raptor_xml_writer* xml_writer;
+ raptor_uri *base_uri = serializer->base_uri;
+ raptor_uri* base_uri_copy = NULL;
+ raptor_xml_element* atom_link_element;
+ raptor_qname *atom_link_qname;
+ raptor_qname** atom_link_attrs;
+ raptor_namespace* atom_nspace;
+ unsigned char* ruri_string;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+ atom_nspace = rss_serializer->nspaces[ATOM1_0_NS];
+ xml_writer = rss_serializer->xml_writer;
+
+ atom_link_qname = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ atom_nspace,
+ (const unsigned char*)"link",
+ NULL);
+ base_uri_copy = base_uri ? raptor_uri_copy(base_uri) : NULL;
+ atom_link_element = raptor_new_xml_element(atom_link_qname, NULL,
+ base_uri_copy);
+
+ atom_link_attrs = RAPTOR_CALLOC(raptor_qname**, 2, sizeof(raptor_qname*));
+ ruri_string = raptor_uri_to_relative_uri_string(base_uri, item->uri);
+
+ atom_link_attrs[0] = raptor_new_qname(rss_serializer->nstack,
+ (const unsigned char*)"href",
+ ruri_string);
+ raptor_free_memory(ruri_string);
+ atom_link_attrs[1] = raptor_new_qname(rss_serializer->nstack,
+ (const unsigned char*)"rel",
+ (const unsigned char*)"self");
+ raptor_xml_element_set_attributes(atom_link_element, atom_link_attrs, 2);
+
+ raptor_xml_writer_empty_element(xml_writer, atom_link_element);
+
+ raptor_free_xml_element(atom_link_element);
+
+ if(rss_serializer->rss_triples_mode == 2) {
+ raptor_rss10_emit_atom_triples_map(serializer, 1,
+ (const unsigned char*)"feedmap");
+ raptor_rss10_emit_atom_triples_map(serializer, 0,
+ (const unsigned char*)"entrymap");
+ }
+}
+
+
+/* emit the RSS 1.0-specific rdf:Seq and rss:item XML elements */
+static void
+raptor_rss10_emit_rss_items(raptor_serializer *serializer)
+{
+ raptor_rss10_serializer_context *rss_serializer;
+ raptor_xml_writer* xml_writer;
+ raptor_uri *base_uri = serializer->base_uri;
+ raptor_uri* base_uri_copy = NULL;
+ raptor_xml_element* rss_items_predicate;
+ int i;
+ raptor_qname *rdf_Seq_qname;
+ raptor_xml_element *rdf_Seq_element;
+ int size;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+
+ if(!raptor_sequence_size(rss_serializer->items))
+ return;
+
+ xml_writer = rss_serializer->xml_writer;
+
+ rdf_Seq_qname = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ rss_serializer->default_nspace,
+ (const unsigned char*)"Seq",
+ NULL);
+
+ base_uri_copy = base_uri ? raptor_uri_copy(base_uri) : NULL;
+ rdf_Seq_element = raptor_new_xml_element(rdf_Seq_qname, NULL, base_uri_copy);
+
+ /* make the <rss:items><rdf:Seq><rdf:li /> .... </rdf:Seq></rss:items> */
+
+ base_uri_copy = base_uri ? raptor_uri_copy(base_uri) : NULL;
+ rss_items_predicate = raptor_new_xml_element(raptor_qname_copy(serializer->world->rss_fields_info_qnames[RAPTOR_RSS_FIELD_ITEMS]), NULL, base_uri_copy);
+
+ raptor_xml_writer_start_element(xml_writer, rss_items_predicate);
+
+ raptor_xml_writer_start_element(xml_writer, rdf_Seq_element);
+
+ size = raptor_sequence_size(rss_serializer->items);
+ for(i = 0; i < size; i++) {
+ raptor_rss_item* item_item;
+ raptor_qname *rdf_li_qname;
+ raptor_xml_element *rdf_li_element;
+ raptor_qname **attrs;
+ unsigned char* ruri_string;
+
+ item_item = (raptor_rss_item*)raptor_sequence_get_at(rss_serializer->items, i);
+ rdf_li_qname = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ rss_serializer->default_nspace,
+ (const unsigned char*)"li",
+ NULL);
+ base_uri_copy = base_uri ? raptor_uri_copy(base_uri) : NULL;
+ rdf_li_element = raptor_new_xml_element(rdf_li_qname, NULL, base_uri_copy);
+ attrs = RAPTOR_CALLOC(raptor_qname**, 1, sizeof(raptor_qname*));
+ ruri_string = raptor_uri_to_relative_uri_string(base_uri, item_item->uri);
+ attrs[0] = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ rss_serializer->default_nspace,
+ (const unsigned char*)"resource",
+ ruri_string);
+ raptor_free_memory(ruri_string);
+ raptor_xml_element_set_attributes(rdf_li_element, attrs, 1);
+
+ raptor_xml_writer_empty_element(xml_writer, rdf_li_element);
+
+ raptor_xml_writer_newline(xml_writer);
+
+ raptor_free_xml_element(rdf_li_element);
+ }
+
+ raptor_xml_writer_end_element(xml_writer, rdf_Seq_element);
+
+ raptor_free_xml_element(rdf_Seq_element);
+
+ raptor_xml_writer_end_element(xml_writer, rss_items_predicate);
+
+ raptor_free_xml_element(rss_items_predicate);
+}
+
+
+/* emit a block of RDF/XML depending on the rssTriples option mode */
+static void
+raptor_rss10_emit_rdfxml_item_triples(raptor_serializer *serializer,
+ raptor_rss_item *item)
+{
+ raptor_rss10_serializer_context *rss_serializer;
+ raptor_xml_writer* xml_writer;
+ raptor_qname* root_qname = NULL;
+ raptor_xml_element* root_element = NULL;
+ raptor_serializer* ser = NULL;
+ raptor_uri* base_uri = NULL;
+ int t_max_count = raptor_sequence_size(item->triples);
+ int t_count;
+ int t;
+ int is_atom;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+
+ if(rss_serializer->rss_triples_mode == 0 || !item->triples)
+ return;
+
+ xml_writer = rss_serializer->xml_writer;
+ is_atom = rss_serializer->is_atom;
+
+ /* can only use atom-triples with atom serializer */
+ if(rss_serializer->rss_triples_mode == 2 && !is_atom)
+ return;
+
+ /* can only use rdf-xml with rss-1.0 serializer */
+ if(rss_serializer->rss_triples_mode == 1 && is_atom)
+ return;
+
+ t_count = 0;
+ for(t = 0; t < t_max_count; t++) {
+ if(raptor_sequence_get_at(item->triples, t))
+ t_count++;
+ }
+ if(!t_count)
+ return;
+
+ RAPTOR_DEBUG2("Serializing %d triples\n", t_count);
+
+ if(is_atom) {
+ raptor_namespace* at_nspace = rss_serializer->nspaces[ATOMTRIPLES_NS];
+
+ /* atom:md with no attribute */
+ root_qname = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ at_nspace,
+ (const unsigned char*)"md",
+ NULL);
+ if(!root_qname)
+ goto oom;
+
+ base_uri = serializer->base_uri;
+ if(base_uri)
+ base_uri = raptor_uri_copy(base_uri);
+
+ /* after this root_element owns root_qname and (this copy of) base_uri */
+ root_element = raptor_new_xml_element(root_qname, NULL, base_uri);
+ if(!root_element) {
+ if(base_uri)
+ raptor_free_uri(base_uri);
+ raptor_free_qname(root_qname); root_qname = NULL;
+ goto oom;
+ }
+ root_qname = NULL;
+
+ raptor_xml_writer_start_element(xml_writer, root_element);
+ }
+
+ ser = raptor_new_serializer(rss_serializer->world, "rdfxml-abbrev");
+ if(!ser)
+ goto oom;
+
+ raptor_rdfxmla_serialize_set_xml_writer(ser, xml_writer,
+ rss_serializer->nstack);
+ raptor_rdfxmla_serialize_set_write_rdf_RDF(ser, 0);
+ raptor_rdfxmla_serialize_set_single_node(ser, item->uri);
+ if(rss_serializer->rss_triples_mode == 2) {
+ /* raptor_rdfxmla_serialize_set_write_typed_nodes(ser, 0); */
+ }
+
+ /* after this call, ser does
+ * NOT own serializer->iostream and will not destroy it
+ * when raptor_free_serializer(ser) is called.
+ */
+ raptor_serializer_start_to_iostream(ser, base_uri, serializer->iostream);
+
+ for(t = 0; t < t_max_count; t++) {
+ raptor_statement* s;
+ s = (raptor_statement*)raptor_sequence_get_at(item->triples, t);
+ if(s)
+ raptor_serializer_serialize_statement(ser, s);
+ }
+
+ raptor_serializer_serialize_end(ser);
+
+ raptor_free_serializer(ser); ser = NULL;
+
+ if(is_atom)
+ raptor_xml_writer_end_element(xml_writer, root_element);
+
+ oom:
+ if(ser)
+ raptor_free_serializer(ser);
+
+ if(root_qname)
+ raptor_free_qname(root_qname);
+
+ if(root_element)
+ raptor_free_xml_element(root_element);
+}
+
+
+/**
+ * raptor_rss10_ensure_atom_field_zero_one:
+ * @item: RSS item object
+ * @f: ATOM field type
+ *
+ * INTERNAL - Check that the given item @field appears 0 or 1 times
+ */
+static void
+raptor_rss10_ensure_atom_field_zero_one(raptor_rss_item* item,
+ raptor_rss_fields_type f)
+{
+ raptor_rss_field* field = item->fields[f];
+ if(!field)
+ return;
+
+ if(field->next) {
+ /* more than 1 value so delete rest of values */
+ raptor_rss_field* next = field->next;
+ field->next = NULL;
+
+ do {
+ field = next;
+
+ next = field->next;
+ field->next = NULL;
+ raptor_rss_field_free(field);
+ } while(next);
+ }
+
+}
+
+
+/**
+ * raptor_rss10_ensure_atom_feed_valid:
+ * @rss_serializer: serializer object
+ *
+ * INTERNAL - Ensure the atom items have all the fields they need:
+ * <id> & <title> & <updated>
+ * plus:
+ * <link rel='alternate' ...> OR <content>..
+ *
+ */
+static int
+raptor_rss10_ensure_atom_feed_valid(raptor_rss10_serializer_context *rss_serializer)
+{
+ int is_atom;
+ int i;
+ raptor_rss_item* item;
+ raptor_rss_model* rss_model;
+ time_t now = 0;
+ int size;
+
+#ifdef HAVE_GETTIMEOFDAY
+ struct timeval tv;
+ if(!gettimeofday(&tv, NULL))
+ now = tv.tv_sec;
+#else
+ now = time(NULL);
+#endif
+
+ is_atom = rss_serializer->is_atom;
+ rss_model = &rss_serializer->model;
+
+ if(!is_atom)
+ return 0;
+
+ item = rss_model->common[RAPTOR_RSS_CHANNEL];
+ if(item) {
+ int f;
+
+ /* atom:id is required */
+ f = RAPTOR_RSS_FIELD_ATOM_ID;
+ if(!item->fields[f]) {
+ raptor_rss_field* field = raptor_rss_new_field(rss_serializer->world);
+ field->uri = raptor_uri_copy(item->uri);
+ raptor_rss_item_add_field(item, f, field);
+ }
+
+ /* atom:updated is required */
+ f = RAPTOR_RSS_FIELD_ATOM_UPDATED;
+ if(!item->fields[f]) {
+ raptor_rss_field* field = raptor_rss_new_field(rss_serializer->world);
+ raptor_rss_set_date_field(field, now);
+ raptor_rss_item_add_field(item, f, field);
+ }
+
+ /* atom:content is forbidden in feed */
+ f = RAPTOR_RSS_FIELD_ATOM_CONTENT;
+ if(item->fields[f]) {
+ raptor_rss_field_free(item->fields[f]);
+ item->fields[f] = NULL;
+ }
+
+ /* atom:summary is forbidden in feed */
+ f = RAPTOR_RSS_FIELD_ATOM_SUMMARY;
+ if(item->fields[f]) {
+ raptor_rss_field_free(item->fields[f]);
+ item->fields[f] = NULL;
+ }
+
+ /* These fields can appear 0 or 1 times on a feed */
+ raptor_rss10_ensure_atom_field_zero_one(item,
+ RAPTOR_RSS_FIELD_ATOM_ICON);
+ raptor_rss10_ensure_atom_field_zero_one(item,
+ RAPTOR_RSS_FIELD_ATOM_LOGO);
+ raptor_rss10_ensure_atom_field_zero_one(item,
+ RAPTOR_RSS_FIELD_ATOM_RIGHTS);
+ raptor_rss10_ensure_atom_field_zero_one(item,
+ RAPTOR_RSS_FIELD_ATOM_SUBTITLE);
+ }
+
+
+ size = raptor_sequence_size(rss_serializer->items);
+ for(i = 0; i < size; i++) {
+ item = (raptor_rss_item*)raptor_sequence_get_at(rss_serializer->items, i);
+
+ /* atom:id - defaults to item URI */
+ if(!item->fields[RAPTOR_RSS_FIELD_ATOM_ID]) {
+ raptor_rss_field* field = raptor_rss_new_field(rss_serializer->world);
+ field->uri = raptor_uri_copy(item->uri);
+ raptor_rss_item_add_field(item, RAPTOR_RSS_FIELD_ATOM_ID, field);
+ }
+
+ /* atom:title - defaults to "untitled" */
+ if(!item->fields[RAPTOR_RSS_FIELD_ATOM_TITLE]) {
+ raptor_rss_field* field = raptor_rss_new_field(rss_serializer->world);
+ field->value = RAPTOR_MALLOC(unsigned char*, 9);
+ memcpy(field->value, "untitled", 9);
+ raptor_rss_item_add_field(item, RAPTOR_RSS_FIELD_ATOM_TITLE, field);
+ }
+
+ /* atom:updated - defaults to now time */
+ if(!item->fields[RAPTOR_RSS_FIELD_ATOM_UPDATED]) {
+ raptor_rss_field* field = raptor_rss_new_field(rss_serializer->world);
+ raptor_rss_set_date_field(field, now);
+ raptor_rss_item_add_field(item, RAPTOR_RSS_FIELD_ATOM_UPDATED, field);
+ }
+
+ /* enforce there is either an atom:content OR atom:link (rel = alternate)
+ * by adding a link to {item URI} if missing
+ */
+ if(!item->fields[RAPTOR_RSS_FIELD_ATOM_CONTENT] &&
+ !item->fields[RAPTOR_RSS_FIELD_ATOM_LINK]) {
+ raptor_rss_field* field = raptor_rss_new_field(rss_serializer->world);
+ field->uri = raptor_uri_copy(item->uri);
+ raptor_rss_item_add_field(item, RAPTOR_RSS_FIELD_ATOM_LINK, field);
+ }
+
+ /* These fields can appear 0 or 1 times on an entry */
+ raptor_rss10_ensure_atom_field_zero_one(item,
+ RAPTOR_RSS_FIELD_ATOM_PUBLISHED);
+ raptor_rss10_ensure_atom_field_zero_one(item,
+ RAPTOR_RSS_FIELD_ATOM_RIGHTS);
+ raptor_rss10_ensure_atom_field_zero_one(item,
+ RAPTOR_RSS_FIELD_ATOM_SOURCE);
+ raptor_rss10_ensure_atom_field_zero_one(item,
+ RAPTOR_RSS_FIELD_ATOM_SUMMARY);
+ }
+
+ return 0;
+}
+
+
+static void
+raptor_rss10_emit_item(raptor_serializer* serializer,
+ raptor_rss_item *item, int item_type,
+ int emit_container)
+{
+ raptor_rss10_serializer_context *rss_serializer;
+ raptor_xml_writer* xml_writer;
+ raptor_rss_model* rss_model;
+ raptor_uri *base_uri = serializer->base_uri;
+ raptor_xml_element *element = NULL;
+ raptor_qname **attrs = NULL;
+ raptor_uri* base_uri_copy = NULL;
+ int fi;
+ int is_atom;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+
+#ifdef RAPTOR_DEBUG
+ if(!item) {
+ RAPTOR_FATAL3("Tried to emit NULL item of type %d - %s\n", item_type,
+ raptor_rss_items_info[item_type].name);
+ }
+#endif
+
+ xml_writer = rss_serializer->xml_writer;
+ is_atom = rss_serializer->is_atom;
+ rss_model = &rss_serializer->model;
+
+ if(!item->fields_count) {
+ int i;
+ int size = raptor_sequence_size(rss_serializer->enclosures);
+
+ for(i = 0; i < size; i++) {
+ raptor_rss_item *enclosure_item;
+ enclosure_item = (raptor_rss_item*)raptor_sequence_get_at(rss_serializer->enclosures, i);
+ /* If the item and enclosure item have the same URI, move the
+ * enclosure fields to the item. Assumed that they got conflated
+ * previously such as when the enclosure url = the guid
+ */
+ if(enclosure_item->uri &&
+ raptor_uri_equals(item->uri, enclosure_item->uri)) {
+ int j;
+ for(j = 0; j < RAPTOR_RSS_FIELDS_SIZE; j++) {
+ if(j != RAPTOR_RSS_RDF_ENCLOSURE_TYPE &&
+ j != RAPTOR_RSS_RDF_ENCLOSURE_LENGTH &&
+ j != RAPTOR_RSS_RDF_ENCLOSURE_URL) {
+ item->fields[j] = enclosure_item->fields[j];
+ enclosure_item->fields[j] = NULL;
+ item->fields_count++;
+ enclosure_item->fields_count--;
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ if(!item->fields_count)
+ return;
+
+ if(emit_container) {
+ raptor_qname* qname_copy;
+
+ qname_copy = raptor_qname_copy(serializer->world->rss_types_info_qnames[item->node_typei]);
+ base_uri_copy = base_uri ? raptor_uri_copy(base_uri) : NULL;
+ element = raptor_new_xml_element(qname_copy, NULL, base_uri_copy);
+
+ if(!is_atom && item->uri) {
+ unsigned char* ruri_string;
+ attrs = RAPTOR_CALLOC(raptor_qname**, 1, sizeof(raptor_qname*));
+ ruri_string = raptor_uri_to_relative_uri_string(base_uri, item->uri);
+ attrs[0] = raptor_new_qname_from_namespace_local_name(serializer->world,
+ rss_serializer->default_nspace,
+ (const unsigned char*)"about",
+ ruri_string);
+ raptor_free_memory(ruri_string);
+ raptor_xml_element_set_attributes(element, attrs, 1);
+ }
+
+ raptor_xml_writer_start_element(xml_writer, element);
+ }
+
+
+ for(fi = 0; fi < RAPTOR_RSS_FIELDS_SIZE; fi++) {
+ raptor_rss_fields_type f = (raptor_rss_fields_type)fi;
+ raptor_rss_field* field;
+
+ if(f == RAPTOR_RSS_FIELD_ITEMS)
+ /* emitting the RSS items rdf:Seq block is done after this loop */
+ continue;
+
+ if(!serializer->world->rss_fields_info_uris[f])
+ continue;
+
+ if(f == RAPTOR_RSS_FIELD_ATOM_AUTHOR) {
+ int typei;
+
+ if(!is_atom)
+ continue;
+
+ if(item_type != RAPTOR_RSS_CHANNEL)
+ continue;
+
+ typei = RAPTOR_ATOM_AUTHOR;
+ if(!rss_model->common[typei]) {
+ raptor_rss_item* author_item;
+
+ /* No atom author was present so make a new atom:author item
+ * then either promote the string to an atom:name field OR
+ * use "unknown"
+ */
+ author_item = raptor_rss_model_add_common(rss_model,
+ (raptor_rss_type)typei);
+
+ author_item->node_type = &raptor_rss_items_info[typei];
+ author_item->node_typei = typei;
+
+ /* FIXME - uses _:author as bnode name - should make a new
+ * genid for each author node. This is OK because there
+ * is a check above that there is only 1 author per FEED.
+ */
+ author_item->term = raptor_new_term_from_blank(serializer->world,
+ (unsigned char*)"author");
+
+
+ /* Move atom:name author field, or create a dummy one */
+ f = RAPTOR_RSS_FIELD_ATOM_NAME;
+ if(item->fields[f]) {
+ field = item->fields[f];
+ item->fields[f] = NULL;
+ } else {
+ field = raptor_rss_new_field(serializer->world);
+ field->value = RAPTOR_MALLOC(unsigned char*, 8);
+ memcpy(field->value, "unknown", 8);
+ }
+ raptor_rss_item_add_field(author_item, RAPTOR_RSS_FIELD_ATOM_NAME,
+ field);
+
+ /* Move atom author fields if found: atom:uri and atom:email
+ * are only used inside Person constructs
+ */
+ f = RAPTOR_RSS_FIELD_ATOM_URI;
+ if(item->fields[f]) {
+ field = item->fields[f];
+ raptor_rss_item_add_field(author_item, f, field);
+ item->fields[f] = NULL;
+ }
+ f = RAPTOR_RSS_FIELD_ATOM_EMAIL;
+ if(item->fields[f]) {
+ field = item->fields[f];
+ raptor_rss_item_add_field(author_item, f, field);
+ item->fields[f] = NULL;
+ }
+ }
+
+ RAPTOR_DEBUG3("Emitting type %i - %s\n", typei,
+ raptor_rss_items_info[typei].name);
+ raptor_rss10_emit_item(serializer, rss_model->common[typei], typei, 1);
+ continue;
+ }
+
+
+ for(field = item->fields[f]; field; field = field->next) {
+ raptor_xml_element* predicate;
+
+ /* Use atom:summary in preference */
+ if(is_atom && f == RAPTOR_RSS_FIELD_DESCRIPTION)
+ continue;
+
+ base_uri_copy = base_uri ? raptor_uri_copy(base_uri) : NULL;
+ predicate = raptor_new_xml_element(raptor_qname_copy(serializer->world->rss_fields_info_qnames[f]), NULL, base_uri_copy);
+
+ if(is_atom && field->uri) {
+ unsigned char* ruri_string;
+ size_t len;
+ raptor_uri* my_base_uri = base_uri;
+
+ if(f == RAPTOR_RSS_FIELD_ATOM_ID)
+ my_base_uri = NULL;
+
+ ruri_string = raptor_uri_to_relative_counted_uri_string(my_base_uri,
+ field->uri,
+ &len);
+
+ if(f == RAPTOR_RSS_FIELD_ATOM_LINK &&
+ !item->fields[RAPTOR_RSS_FIELD_ATOM_CONTENT]) {
+ /* atom:link to URI and there is no atom:content */
+ raptor_qname **predicate_attrs = NULL;
+ predicate_attrs = RAPTOR_CALLOC(raptor_qname**, 2,
+ sizeof(raptor_qname*));
+ predicate_attrs[0] = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ NULL,
+ (const unsigned char*)"href",
+ ruri_string);
+ predicate_attrs[1] = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ NULL,
+ (const unsigned char*)"rel",
+ (const unsigned char*)"alternate");
+ field->value = NULL;
+ raptor_xml_element_set_attributes(predicate, predicate_attrs, 2);
+ raptor_xml_writer_empty_element(xml_writer, predicate);
+ } else if(f == RAPTOR_RSS_FIELD_ATOM_CONTENT) {
+ /* <atom:content src="{uri value}" type="{type}" /> */
+ raptor_qname **predicate_attrs = NULL;
+ const unsigned char* content_type;
+ raptor_rss_field* content_type_field;
+
+ /* get the type */
+ content_type_field = item->fields[RAPTOR_RSS_FIELD_AT_CONTENT_TYPE];
+ if(content_type_field && content_type_field->value)
+ content_type = content_type_field->value;
+ else
+ content_type = (const unsigned char*)"text/html";
+
+ predicate_attrs = RAPTOR_CALLOC(raptor_qname**, 2,
+ sizeof(raptor_qname*));
+ predicate_attrs[0] = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ NULL,
+ (const unsigned char*)"src",
+ ruri_string);
+ predicate_attrs[1] = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ NULL,
+ (const unsigned char*)"type",
+ (const unsigned char*)content_type);
+ /* free at:contentType field - no need to emit it */
+ if(content_type_field) {
+ raptor_rss_field_free(content_type_field);
+ item->fields[RAPTOR_RSS_FIELD_AT_CONTENT_TYPE] = NULL;
+ }
+
+ field->value = NULL;
+ raptor_xml_element_set_attributes(predicate, predicate_attrs, 2);
+ raptor_xml_writer_empty_element(xml_writer, predicate);
+ } else {
+ raptor_xml_writer_start_element(xml_writer, predicate);
+ raptor_xml_writer_cdata_counted(xml_writer, ruri_string,
+ (unsigned int)len);
+ raptor_xml_writer_end_element(xml_writer, predicate);
+ }
+ raptor_free_memory(ruri_string);
+
+ } else if(field->uri) {
+ raptor_uri* enclosure_uri = field->uri;
+ raptor_rss_item *enclosure_item = NULL;
+ int i;
+
+ if(f == RAPTOR_RSS_FIELD_ENCLOSURE && item_type == RAPTOR_RSS_ITEM) {
+ int size = raptor_sequence_size(rss_serializer->enclosures);
+ for(i = 0; i < size; i++) {
+ enclosure_item = (raptor_rss_item*)raptor_sequence_get_at(rss_serializer->enclosures, i);
+ if(enclosure_item->uri && raptor_uri_equals(enclosure_uri,
+ enclosure_item->uri))
+ break;
+ }
+ if(enclosure_item) {
+ int attr_count = 0;
+ unsigned char* ruri_string;
+
+ attrs = RAPTOR_CALLOC(raptor_qname**, 3, sizeof(raptor_qname*));
+ ruri_string = raptor_uri_to_relative_uri_string(base_uri, field->uri);
+ attrs[attr_count] = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ rss_serializer->default_nspace,
+ (const unsigned char*)"resource",
+ ruri_string);
+ raptor_free_memory(ruri_string);
+ attr_count++;
+
+ if(enclosure_item->fields[RAPTOR_RSS_RDF_ENCLOSURE_TYPE] && enclosure_item->fields[RAPTOR_RSS_RDF_ENCLOSURE_TYPE]->value) {
+ attrs[attr_count] = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ rss_serializer->nspaces[RSS2_0_ENC_NS],
+ (const unsigned char*)raptor_rss_fields_info[RAPTOR_RSS_RDF_ENCLOSURE_TYPE].name,
+ (const unsigned char*)enclosure_item->fields[RAPTOR_RSS_RDF_ENCLOSURE_TYPE]->value);
+ attr_count++;
+ }
+
+ if(enclosure_item->fields[RAPTOR_RSS_RDF_ENCLOSURE_LENGTH] && enclosure_item->fields[RAPTOR_RSS_RDF_ENCLOSURE_LENGTH]->value) {
+ attrs[attr_count] = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ rss_serializer->nspaces[RSS2_0_ENC_NS],
+ (const unsigned char*)raptor_rss_fields_info[RAPTOR_RSS_RDF_ENCLOSURE_LENGTH].name,
+ (const unsigned char*)enclosure_item->fields[RAPTOR_RSS_RDF_ENCLOSURE_LENGTH]->value);
+ attr_count++;
+ }
+ raptor_xml_element_set_attributes(predicate, attrs, attr_count);
+ } else {
+ RAPTOR_DEBUG2("Enclosure item with URI %s could not be found in list of enclosures\n", raptor_uri_as_string(enclosure_uri));
+ }
+ } else {
+ unsigned char* ruri_string;
+
+ /* not an rss:item with an rss:enclosure field */
+ attrs = RAPTOR_CALLOC(raptor_qname**, 1, sizeof(raptor_qname*));
+ ruri_string = raptor_uri_to_relative_uri_string(base_uri, field->uri);
+ attrs[0] = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ rss_serializer->default_nspace,
+ (const unsigned char*)"resource",
+ ruri_string);
+ raptor_free_memory(ruri_string);
+ raptor_xml_element_set_attributes(predicate, attrs, 1);
+ }
+ raptor_xml_writer_empty_element(xml_writer, predicate);
+ } else if(field->value) {
+ /* not a URI, must be a literal */
+ int is_xhtml_content = field->is_xml;
+ int prefer_cdata = (!is_atom && f == RAPTOR_RSS_FIELD_CONTENT_ENCODED);
+
+ if(is_xhtml_content && !prefer_cdata) {
+ raptor_qname **predicate_attrs = NULL;
+ predicate_attrs = RAPTOR_CALLOC(raptor_qname**, 1,
+ sizeof(raptor_qname*));
+ if(is_atom)
+ predicate_attrs[0] = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ NULL,
+ (const unsigned char*)"type",
+ (const unsigned char*)"xhtml");
+ else
+ predicate_attrs[0] = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ rss_serializer->default_nspace,
+ (const unsigned char*)"parseType",
+ (const unsigned char*)"Literal");
+ raptor_xml_element_set_attributes(predicate, predicate_attrs, 1);
+ }
+
+ raptor_xml_writer_start_element(xml_writer, predicate);
+
+ if(is_xhtml_content) {
+ if(prefer_cdata)
+ raptor_xml_writer_raw_counted(xml_writer,
+ (const unsigned char*)"<![CDATA[", 9);
+ raptor_xml_writer_raw(xml_writer, (const unsigned char*)field->value);
+ if(prefer_cdata)
+ raptor_xml_writer_raw_counted(xml_writer,
+ (const unsigned char*)"]]>", 3);
+ } else
+ raptor_xml_writer_cdata(xml_writer, (const unsigned char*)field->value);
+ raptor_xml_writer_end_element(xml_writer, predicate);
+ } else {
+ RAPTOR_DEBUG3("Field %d - %s had no URI or literal value\n",
+ f, raptor_rss_fields_info[f].name);
+ }
+ raptor_free_xml_element(predicate);
+ }
+ }
+
+
+ if(item_type == RAPTOR_RSS_CHANNEL) {
+ if(is_atom)
+ raptor_rss10_emit_atom_feed(serializer, item);
+
+ if(!is_atom)
+ raptor_rss10_emit_rss_items(serializer);
+ }
+
+ /* Add an RDF/XML block with remaining triples if Atom */
+ if(item->triples && raptor_sequence_size(item->triples))
+ raptor_rss10_emit_rdfxml_item_triples(serializer, item);
+
+ if(emit_container) {
+ raptor_xml_writer_end_element(xml_writer, element);
+ raptor_free_xml_element(element);
+ }
+
+}
+
+
+/**
+ * raptor_rss10_serialize_end:
+ * @serializer: serializer object
+ *
+ * INTERNAL (raptor_serializer_factory API) - End a serializing
+ *
+ * Return value: non-0 on failure
+ */
+static int
+raptor_rss10_serialize_end(raptor_serializer* serializer)
+{
+ raptor_rss10_serializer_context *rss_serializer;
+ raptor_rss_model* rss_model;
+ int i;
+ raptor_xml_writer* xml_writer;
+#ifdef RAPTOR_DEBUG
+ int triple_count = 0;
+#endif
+ int is_atom;
+ raptor_qname **attrs = NULL;
+ int attrs_count = 0;
+ raptor_uri* entry_uri = NULL;
+ raptor_rss_item* entry_item = NULL;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+ rss_model = &rss_serializer->model;
+ is_atom = rss_serializer->is_atom;
+
+ raptor_rss10_build_items(rss_serializer);
+
+ raptor_rss10_move_leftover_statements(rss_serializer);
+
+ raptor_rss10_move_anonymous_statements(rss_serializer);
+
+ if(is_atom) {
+ char* entry_uri_string;
+
+ raptor_rss10_ensure_atom_feed_valid(rss_serializer);
+
+ raptor_rss10_remove_mapped_fields(rss_serializer);
+
+ entry_uri_string = RAPTOR_OPTIONS_GET_STRING(serializer,
+ RAPTOR_OPTION_ATOM_ENTRY_URI);
+ if(entry_uri_string) {
+ int size = raptor_sequence_size(rss_serializer->items);
+ entry_uri = raptor_new_uri(rss_serializer->world,
+ (const unsigned char*)entry_uri_string);
+ for(i = 0; i < size; i++) {
+ raptor_rss_item* item;
+ item = (raptor_rss_item*)raptor_sequence_get_at(rss_serializer->items, i);
+ if(raptor_uri_equals(item->uri, entry_uri)) {
+ entry_item = item;
+ break;
+ }
+ }
+ if(!entry_item) {
+ RAPTOR_DEBUG2("Entry URI %s was not found in list of items\n",
+ raptor_uri_as_string(entry_uri));
+ raptor_free_uri(entry_uri);
+ entry_uri = NULL;
+ }
+ }
+
+ }
+
+#ifdef RAPTOR_DEBUG
+ if(1) {
+ int size = raptor_sequence_size(rss_serializer->triples);
+ for(i = 0; i < size; i++) {
+ raptor_statement* t;
+ t = (raptor_statement*)raptor_sequence_get_at(rss_serializer->triples, i);
+ if(t) {
+ fprintf(stderr, " %d: ", i);
+ raptor_statement_print(t, stderr);
+ fputc('\n', stderr);
+ triple_count++;
+ }
+ }
+ RAPTOR_DEBUG2("Starting with %d stored triples\n", triple_count);
+ }
+#endif
+
+ if(!rss_model->common[RAPTOR_RSS_CHANNEL]) {
+ raptor_log_error(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "No RSS channel found");
+ return 1;
+ }
+
+
+ if(rss_serializer->xml_writer)
+ raptor_free_xml_writer(rss_serializer->xml_writer);
+
+ xml_writer = raptor_new_xml_writer(rss_serializer->world,
+ rss_serializer->nstack,
+ serializer->iostream);
+ rss_serializer->xml_writer = xml_writer;
+ raptor_xml_writer_set_option(xml_writer,
+ RAPTOR_OPTION_WRITER_AUTO_INDENT, NULL, 1);
+ raptor_xml_writer_set_option(xml_writer,
+ RAPTOR_OPTION_WRITER_AUTO_EMPTY, NULL, 1);
+
+ raptor_rss10_build_xml_names(serializer, (is_atom && entry_uri));
+
+ if(serializer->base_uri &&
+ RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_WRITE_BASE_URI)) {
+ const unsigned char* base_uri_string;
+
+ attrs = RAPTOR_CALLOC(raptor_qname**, 1, sizeof(raptor_qname*));
+
+ base_uri_string = raptor_uri_as_string(serializer->base_uri);
+ attrs[attrs_count++] = raptor_new_qname_from_namespace_local_name(rss_serializer->world,
+ rss_serializer->xml_nspace,
+ (const unsigned char*)"base",
+ base_uri_string);
+ }
+
+ if(attrs_count)
+ raptor_xml_element_set_attributes(rss_serializer->root_element, attrs,
+ attrs_count);
+ else
+ raptor_xml_element_set_attributes(rss_serializer->root_element, NULL, 0);
+
+ raptor_xml_writer_start_element(xml_writer, rss_serializer->root_element);
+
+
+ if(entry_item) {
+ RAPTOR_DEBUG1("Emitting entry\n");
+ raptor_rss10_emit_item(serializer, entry_item, RAPTOR_RSS_ITEM, 0);
+ raptor_xml_writer_raw_counted(xml_writer, (const unsigned char*)"\n", 1);
+ } else {
+ i = RAPTOR_RSS_CHANNEL;
+ RAPTOR_DEBUG3("Emitting type %i - %s\n", i, raptor_rss_items_info[i].name);
+ raptor_rss10_emit_item(serializer, rss_model->common[i], i, !is_atom);
+ raptor_xml_writer_raw_counted(xml_writer, (const unsigned char*)"\n", 1);
+
+ if(rss_model->items_count) {
+ int size = raptor_sequence_size(rss_serializer->items);
+ for(i = 0; i < size; i++) {
+ raptor_rss_item* item;
+ item = (raptor_rss_item*)raptor_sequence_get_at(rss_serializer->items, i);
+ raptor_rss10_emit_item(serializer, item, RAPTOR_RSS_ITEM, 1);
+ raptor_xml_writer_raw_counted(xml_writer, (const unsigned char*)"\n", 1);
+ }
+
+ }
+
+ for(i = RAPTOR_RSS_CHANNEL + 1; i < RAPTOR_RSS_COMMON_SIZE; i++) {
+ raptor_rss_item* item;
+
+ if(is_atom) {
+ /* atom 1.0 only serializes rss:item (channel is done above) */
+ if(i != RAPTOR_RSS_ITEM)
+ continue;
+ } else {
+ /* rss 1.0 ignores atom:author for now - FIXME */
+ if(i == RAPTOR_ATOM_AUTHOR)
+ continue;
+ }
+
+ for(item = rss_model->common[i]; item; item = item->next) {
+ RAPTOR_DEBUG3("Emitting type %i - %s\n", i,
+ raptor_rss_items_info[i].name);
+ raptor_rss10_emit_item(serializer, item, i, 1);
+ }
+ }
+ }
+
+
+ if(entry_uri)
+ raptor_free_uri(entry_uri);
+
+ raptor_xml_writer_end_element(xml_writer, rss_serializer->root_element);
+
+ raptor_free_xml_element(rss_serializer->root_element);
+
+ raptor_xml_writer_newline(xml_writer);
+
+ raptor_xml_writer_flush(xml_writer);
+
+ return 0;
+}
+
+
+/* add a namespace */
+static int
+raptor_rss10_serialize_declare_namespace_from_namespace(raptor_serializer* serializer,
+ raptor_namespace *nspace)
+{
+ raptor_rss10_serializer_context* rss_serializer;
+ int i;
+ int size;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+
+ size = raptor_sequence_size(rss_serializer->user_namespaces);
+ for(i = 0; i < size; i++) {
+ raptor_namespace* ns;
+ ns = (raptor_namespace*)raptor_sequence_get_at(rss_serializer->user_namespaces, i);
+
+ /* If prefix is already declared, ignore it */
+ if(!ns->prefix && !nspace->prefix)
+ return 1;
+
+ if(ns->prefix && nspace->prefix &&
+ !strcmp((const char*)ns->prefix, (const char*)nspace->prefix))
+ return 1;
+
+ if(ns->uri && nspace->uri &&
+ raptor_uri_equals(ns->uri, nspace->uri))
+ return 1;
+ }
+
+ nspace = raptor_new_namespace_from_uri(rss_serializer->nstack,
+ nspace->prefix, nspace->uri,
+ 0);
+ if(!nspace)
+ return 1;
+
+ raptor_sequence_push(rss_serializer->user_namespaces, nspace);
+ return 0;
+}
+
+
+/* add a namespace */
+static int
+raptor_rss10_serialize_declare_namespace(raptor_serializer* serializer,
+ raptor_uri *uri,
+ const unsigned char *prefix)
+{
+ raptor_rss10_serializer_context* rss_serializer;
+ raptor_namespace *ns;
+ int rc;
+
+ rss_serializer = (raptor_rss10_serializer_context*)serializer->context;
+
+ ns = raptor_new_namespace_from_uri(rss_serializer->nstack, prefix, uri, 0);
+ rc = raptor_rss10_serialize_declare_namespace_from_namespace(serializer, ns);
+ raptor_free_namespace(ns);
+
+ return rc;
+}
+
+
+
+/**
+ * raptor_rss10_serialize_finish_factory:
+ * @factory: serializer factory
+ *
+ * INTERNAL (raptor_serializer_factory API) - finish the serializer factory
+ */
+static void
+raptor_rss10_serialize_finish_factory(raptor_serializer_factory* factory)
+{
+
+}
+
+
+static const char* rss10_names[3] = { "rss-1.0", NULL};
+
+static const char* const rss10_uri_strings[2] = {
+"http://purl.org/rss/1.0/spec",
+ NULL
+};
+
+#define RSS10_TYPES_COUNT 5
+static const raptor_type_q rss10_types[RSS10_TYPES_COUNT + 1] = {
+ { "application/rss+xml", 19, 10},
+ { "application/rss", 15, 3},
+ { "text/rss", 8, 3},
+ { "application/xml", 15, 3},
+ { "text/xml", 8, 3},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_rss10_serializer_register_factory(raptor_serializer_factory *factory)
+{
+ factory->desc.names = rss10_names;
+ factory->desc.mime_types = rss10_types;
+
+ factory->desc.label = "RSS 1.0";
+ factory->desc.uri_strings = rss10_uri_strings;
+
+ factory->context_length = sizeof(raptor_rss10_serializer_context);
+
+ factory->init = raptor_rss10_serialize_init;
+ factory->terminate = raptor_rss10_serialize_terminate;
+ factory->declare_namespace = raptor_rss10_serialize_declare_namespace;
+ factory->declare_namespace_from_namespace = raptor_rss10_serialize_declare_namespace_from_namespace;
+ factory->serialize_start = raptor_rss10_serialize_start;
+ factory->serialize_statement = raptor_rss10_serialize_statement;
+ factory->serialize_end = raptor_rss10_serialize_end;
+ factory->finish_factory = raptor_rss10_serialize_finish_factory;
+
+ return 0;
+}
+
+
+
+static const char* atom_names[3] = { "atom", NULL};
+
+static const char* const atom_uri_strings[2] = {
+ "http://www.ietf.org/rfc/rfc4287.txt",
+ NULL
+};
+
+#define ATOM_TYPES_COUNT 1
+static const raptor_type_q atom_types[ATOM_TYPES_COUNT + 1] = {
+ { "application/atom+xml", 20, 10},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_atom_serializer_register_factory(raptor_serializer_factory *factory)
+{
+ factory->desc.names = atom_names;
+ factory->desc.mime_types = atom_types;
+
+ factory->desc.label = "Atom 1.0";
+ factory->desc.uri_strings = atom_uri_strings;
+
+ factory->context_length = sizeof(raptor_rss10_serializer_context);
+
+ factory->init = raptor_rss10_serialize_init;
+ factory->terminate = raptor_rss10_serialize_terminate;
+ factory->declare_namespace = raptor_rss10_serialize_declare_namespace;
+ factory->declare_namespace_from_namespace = raptor_rss10_serialize_declare_namespace_from_namespace;
+ factory->serialize_start = raptor_rss10_serialize_start;
+ factory->serialize_statement = raptor_rss10_serialize_statement;
+ factory->serialize_end = raptor_rss10_serialize_end;
+ factory->finish_factory = raptor_rss10_serialize_finish_factory;
+
+ return 0;
+}
+
+
+
+int
+raptor_init_serializer_rss10(raptor_world* world)
+{
+ return !raptor_serializer_register_factory(world,
+ &raptor_rss10_serializer_register_factory);
+}
+
+int
+raptor_init_serializer_atom(raptor_world* world)
+{
+ return !raptor_serializer_register_factory(world,
+ &raptor_atom_serializer_register_factory);
+}
+
diff --git a/src/raptor_serialize_turtle.c b/src/raptor_serialize_turtle.c
new file mode 100644
index 0000000..eb07775
--- /dev/null
+++ b/src/raptor_serialize_turtle.c
@@ -0,0 +1,1411 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_serialize_turtle.c - Turtle serializer
+ *
+ * Copyright (C) 2006,2008 Dave Robillard
+ * Copyright (C) 2004-2010 David Beckett http://www.dajobe.org/
+ * Copyright (C) 2004-2005 University of Bristol, UK http://www.bristol.ac.uk/
+ * Copyright (C) 2005 Steve Shepard steveshep@gmail.com
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+#define MAX_ASCII_INT_SIZE 13
+
+
+/*
+ * Raptor turtle serializer object
+ */
+typedef struct {
+ raptor_namespace_stack *nstack; /* Namespace stack */
+ raptor_namespace *rdf_nspace; /* the rdf: namespace */
+ raptor_turtle_writer *turtle_writer; /* where the xml is being written */
+ raptor_sequence *namespaces; /* User declared namespaces */
+ raptor_avltree *subjects; /* subject items */
+ raptor_avltree *blanks; /* blank subject items */
+ raptor_avltree *nodes; /* nodes */
+ raptor_abbrev_node *rdf_type; /* rdf:type uri */
+
+ /* URI of rdf:XMLLiteral */
+ raptor_uri* rdf_xml_literal_uri;
+
+ /* URI of rdf:first */
+ raptor_uri* rdf_first_uri;
+
+ /* URI of rdf:rest */
+ raptor_uri* rdf_rest_uri;
+
+ /* URI of rdf:nil */
+ raptor_uri* rdf_nil_uri;
+
+ /* non zero if header is finished being written
+ * (and thus no new namespaces can be declared).
+ */
+ int written_header;
+
+ /* for labeling namespaces */
+ int namespace_count;
+} raptor_turtle_context;
+
+
+/* prototypes for functions */
+
+static int raptor_turtle_emit_resource(raptor_serializer *serializer,
+ raptor_abbrev_node* node,
+ int depth);
+
+static int raptor_turtle_emit_literal(raptor_serializer *serializer,
+ raptor_abbrev_node* node,
+ int depth);
+static int raptor_turtle_emit_blank(raptor_serializer *serializer,
+ raptor_abbrev_node* node,
+ int depth);
+static int raptor_turtle_emit_subject_list_items(raptor_serializer* serializer,
+ raptor_abbrev_subject* subject,
+ int depth);
+static int raptor_turtle_emit_subject_collection_items(raptor_serializer* serializer,
+ raptor_abbrev_subject* subject,
+ int depth);
+static int raptor_turtle_emit_subject_properties(raptor_serializer *serializer,
+ raptor_abbrev_subject* subject,
+ int depth);
+static int raptor_turtle_emit_subject(raptor_serializer *serializer,
+ raptor_abbrev_subject* subject,
+ int depth);
+static int raptor_turtle_emit(raptor_serializer *serializer);
+
+static int raptor_turtle_serialize_init(raptor_serializer* serializer,
+ const char *name);
+static void raptor_turtle_serialize_terminate(raptor_serializer* serializer);
+static int raptor_turtle_serialize_declare_namespace(raptor_serializer* serializer,
+ raptor_uri *uri,
+ const unsigned char *prefix);
+static int raptor_turtle_serialize_start(raptor_serializer* serializer);
+static int raptor_turtle_serialize_statement(raptor_serializer* serializer,
+ raptor_statement *statement);
+
+static int raptor_turtle_serialize_end(raptor_serializer* serializer);
+static void raptor_turtle_serialize_finish_factory(raptor_serializer_factory* factory);
+
+
+static int
+raptor_turtle_is_legal_turtle_qname(raptor_qname* qname)
+{
+ const char* prefix_name;
+ const char* local_name;
+
+ if(!qname)
+ return 0;
+
+ prefix_name = qname->nspace ? (const char*)qname->nspace->prefix : NULL;
+ if(prefix_name) {
+ /* prefixName: must have leading [A-Z][a-z][0-9] (nameStartChar - '_') */
+ /* prefixName: no . anywhere */
+ if(!(isalpha((int)*prefix_name) || isdigit((int)*prefix_name)) ||
+ strchr(prefix_name, '.'))
+ return 0;
+ }
+
+ local_name = (const char*)qname->local_name;
+ if(local_name) {
+ /* nameStartChar: must have leading [A-Z][a-z][0-9]_ */
+ /* nameChar: no . anywhere */
+ if(!(isalpha((int)*local_name) || isdigit((int)*local_name) || *local_name == '_') ||
+ strchr(local_name, '.'))
+ return 0;
+ }
+
+ return 1;
+}
+
+/*
+ * raptor_turtle_emit_resource:
+ * @serializer: #raptor_serializer object
+ * @node: resource node
+ * @depth: depth into tree
+ *
+ * Emit a description of a resource using an XML Element
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_turtle_emit_resource(raptor_serializer *serializer,
+ raptor_abbrev_node* node,
+ int depth)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+ raptor_turtle_writer *turtle_writer = context->turtle_writer;
+
+ raptor_qname* qname = NULL;
+
+ RAPTOR_DEBUG5("Emitting resource node %p refcount %d subject %d object %d\n",
+ node,
+ node->ref_count, node->count_as_subject, node->count_as_object);
+
+ if(node->term->type != RAPTOR_TERM_TYPE_URI)
+ return 1;
+
+ qname = raptor_new_qname_from_namespace_uri(context->nstack,
+ node->term->value.uri, 10);
+
+ /* XML Names allow leading '_' and '.' anywhere but Turtle does not */
+ if(qname && !raptor_turtle_is_legal_turtle_qname(qname)) {
+ raptor_free_qname(qname);
+ qname = NULL;
+ }
+
+ if(qname) {
+ raptor_turtle_writer_qname(turtle_writer, qname);
+ raptor_free_qname(qname);
+ } else {
+ raptor_turtle_writer_reference(turtle_writer, node->term->value.uri);
+ }
+
+ RAPTOR_DEBUG2("Emitted %p\n", node);
+
+ return 0;
+}
+
+
+/*
+ * raptor_turtle_emit_literal:
+ * @serializer: #raptor_serializer object
+ * @node: literal node
+ * @depth: depth into tree
+ *
+ * Emit a description of a literal (object).
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_turtle_emit_literal(raptor_serializer *serializer,
+ raptor_abbrev_node* node,
+ int depth)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+ raptor_turtle_writer *turtle_writer = context->turtle_writer;
+ int rc = 0;
+
+ RAPTOR_DEBUG5("Emitting literal node %p refcount %d subject %d object %d\n",
+ node,
+ node->ref_count, node->count_as_subject, node->count_as_object);
+
+ if(node->term->type != RAPTOR_TERM_TYPE_LITERAL)
+ return 1;
+
+ rc = raptor_turtle_writer_literal(turtle_writer, context->nstack,
+ node->term->value.literal.string,
+ node->term->value.literal.language,
+ node->term->value.literal.datatype);
+
+ RAPTOR_DEBUG2("Emitted %p\n", node);
+
+ return rc;
+}
+
+
+/*
+ * raptor_turtle_emit_blank:
+ * @serializer: #raptor_serializer object
+ * @node: blank node
+ * @depth: depth into tree
+ *
+ * Emit a description of a blank node
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_turtle_emit_blank(raptor_serializer *serializer,
+ raptor_abbrev_node* node,
+ int depth)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+ int rc = 0;
+
+ RAPTOR_DEBUG5("Emitting blank node %p refcount %d subject %d object %d\n",
+ node,
+ node->ref_count, node->count_as_subject, node->count_as_object);
+
+ if(node->term->type != RAPTOR_TERM_TYPE_BLANK)
+ return 1;
+
+ if((node->count_as_subject == 1 && node->count_as_object == 1)) {
+ /* If this is only used as a 1 subject and object or never
+ * used as a subject or never used as an object, it never need
+ * be referenced with an explicit name */
+ raptor_abbrev_subject* blank;
+
+ blank = raptor_abbrev_subject_find(context->blanks, node->term);
+ if(blank) {
+ rc = raptor_turtle_emit_subject(serializer, blank, depth+1);
+ raptor_abbrev_subject_invalidate(blank);
+ }
+
+ } else {
+ /* Blank node that needs an explicit name */
+ raptor_turtle_writer_bnodeid(context->turtle_writer,
+ node->term->value.blank.string,
+ node->term->value.blank.string_len);
+ }
+
+ RAPTOR_DEBUG2("Emitted %p\n", node);
+
+ return rc;
+}
+
+
+/*
+ * raptor_turtle_emit_subject_list_items:
+ * @serializer: #raptor_serializer object
+ * @subject: subject node
+ * @depth: depth into tree
+ *
+ * Emit an rdf list of items (rdf:li) about a subject node.
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_turtle_emit_subject_list_items(raptor_serializer* serializer,
+ raptor_abbrev_subject* subject,
+ int depth)
+{
+ int rv = 0;
+ int i = 0;
+
+ RAPTOR_DEBUG5("Emitting subject list items for node %p refcount %d subject %d object %d\n",
+ subject->node,
+ subject->node->ref_count, subject->node->count_as_subject,
+ subject->node->count_as_object);
+
+ while(!rv && i < raptor_sequence_size(subject->list_items)) {
+ raptor_abbrev_node* object;
+
+ object = (raptor_abbrev_node*)raptor_sequence_get_at(subject->list_items,
+ i++);
+ if(!object)
+ continue;
+
+ switch(object->term->type) {
+ case RAPTOR_TERM_TYPE_URI:
+ rv = raptor_turtle_emit_resource(serializer, object, depth+1);
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ rv = raptor_turtle_emit_literal(serializer, object, depth+1);
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ rv = raptor_turtle_emit_blank(serializer, object, depth+1);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR,
+ NULL, "Triple has unsupported term type %d",
+ object->term->type);
+ break;
+
+ }
+
+ }
+
+ return rv;
+}
+
+
+/*
+ * raptor_turtle_emit_subject_collection_items:
+ * @serializer: #raptor_serializer object
+ * @subject: subject node
+ * @depth: depth into tree
+ *
+ * Emit an abbreviated rdf collection of items (rdf:first, rdf:rest) about a subject node.
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_turtle_emit_subject_collection_items(raptor_serializer* serializer,
+ raptor_abbrev_subject* subject,
+ int depth)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+ int rv = 0;
+ raptor_avltree_iterator* iter = NULL;
+ int i;
+ int is_new_subject = 0;
+
+ RAPTOR_DEBUG5("Emitting subject collection items for node %p refcount %d subject %d object %d\n",
+ subject->node,
+ subject->node->ref_count, subject->node->count_as_subject,
+ subject->node->count_as_object);
+
+ /* if just saw a new subject (is_new_subject is true) then there is no need
+ * to advance the iterator - it was just reset
+ */
+ for(i = 0, (iter = raptor_new_avltree_iterator(subject->properties, NULL, NULL, 1));
+ iter && !rv;
+ i++, (rv = is_new_subject ? 0 : raptor_avltree_iterator_next(iter))) {
+ raptor_abbrev_node** nodes;
+ raptor_abbrev_node* predicate;
+ raptor_abbrev_node* object;
+
+ is_new_subject = 0;
+
+ nodes = (raptor_abbrev_node**)raptor_avltree_iterator_get(iter);
+ if(!nodes)
+ break;
+ predicate= nodes[0];
+ object= nodes[1];
+
+ if(!raptor_uri_equals(predicate->term->value.uri,
+ context->rdf_first_uri)) {
+ raptor_log_error(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Malformed collection - first predicate is not rdf:first");
+ return 1;
+ }
+
+ if(!object)
+ continue;
+
+ if(i > 0)
+ raptor_turtle_writer_newline(context->turtle_writer);
+
+ switch(object->term->type) {
+ case RAPTOR_TERM_TYPE_URI:
+ rv = raptor_turtle_emit_resource(serializer, object, depth+1);
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ rv = raptor_turtle_emit_literal(serializer, object, depth+1);
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ rv = raptor_turtle_emit_blank(serializer, object, depth+1);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR,
+ NULL, "Triple has unsupported term type %d",
+ object->term->type);
+ break;
+ }
+
+ /* Return error if emitting something failed above */
+ if(rv)
+ return rv;
+
+ /* last item */
+ rv = raptor_avltree_iterator_next(iter);
+ if(rv)
+ break;
+
+ nodes = (raptor_abbrev_node**)raptor_avltree_iterator_get(iter);
+ predicate = nodes[0];
+ object = nodes[1];
+
+ if(!raptor_uri_equals(predicate->term->value.uri, context->rdf_rest_uri)) {
+ raptor_log_error(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Malformed collection - second predicate is not rdf:rest");
+ return 1;
+ }
+
+ if(object->term->type == RAPTOR_TERM_TYPE_BLANK) {
+ subject = raptor_abbrev_subject_find(context->blanks, object->term);
+
+ if(!subject) {
+ raptor_log_error(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Malformed collection - could not find subject for rdf:rest");
+ return 1;
+ }
+
+ /* got a <(old)subject> rdf:rest <(new)subject> triple so know
+ * subject has changed and should reset the properties iterator
+ */
+ if(iter)
+ raptor_free_avltree_iterator(iter);
+ iter = raptor_new_avltree_iterator(subject->properties, NULL, NULL, 1);
+ is_new_subject = 1;
+
+ } else {
+ if(object->term->type != RAPTOR_TERM_TYPE_URI ||
+ !raptor_uri_equals(object->term->value.uri, context->rdf_nil_uri)) {
+ raptor_log_error(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Malformed collection - last rdf:rest resource is not rdf:nil");
+ return 1;
+ }
+ break;
+ }
+ }
+ if(iter)
+ raptor_free_avltree_iterator(iter);
+
+ return rv;
+}
+
+
+
+/*
+ * raptor_turtle_emit_subject_properties:
+ * @serializer: #raptor_serializer object
+ * @subject: subject node
+ * @depth: depth into tree
+ *
+ * Emit the properties about a subject node.
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_turtle_emit_subject_properties(raptor_serializer* serializer,
+ raptor_abbrev_subject* subject,
+ int depth)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+ raptor_turtle_writer *turtle_writer = context->turtle_writer;
+ raptor_abbrev_node* last_predicate = NULL;
+ int rv = 0;
+ raptor_avltree_iterator* iter = NULL;
+ int i;
+
+ RAPTOR_DEBUG5("Emitting subject properties for node %p refcount %d subject %d object %d\n",
+ subject->node, subject->node->ref_count,
+ subject->node->count_as_subject,
+ subject->node->count_as_object);
+
+ /* Emit any rdf:_n properties collected */
+ if(raptor_sequence_size(subject->list_items) > 0)
+ rv = raptor_turtle_emit_subject_list_items(serializer, subject, depth+1);
+
+ for(i = 0, (iter = raptor_new_avltree_iterator(subject->properties, NULL, NULL, 1));
+ iter && !rv;
+ i++, (rv = raptor_avltree_iterator_next(iter))) {
+ raptor_abbrev_node** nodes;
+ raptor_abbrev_node* predicate;
+ raptor_abbrev_node* object;
+ raptor_qname *qname;
+
+ nodes = (raptor_abbrev_node**)raptor_avltree_iterator_get(iter);
+ if(!nodes)
+ break;
+ predicate= nodes[0];
+ object= nodes[1];
+
+ if(!(last_predicate && raptor_abbrev_node_equals(predicate, last_predicate))) {
+ /* no object list abbreviation possible, terminate last object */
+ if(last_predicate) {
+ raptor_turtle_writer_raw(turtle_writer, (const unsigned char*)" ;");
+ raptor_turtle_writer_newline(turtle_writer);
+ }
+
+ qname = raptor_new_qname_from_namespace_uri(context->nstack,
+ predicate->term->value.uri,
+ 10);
+
+ if(raptor_abbrev_node_equals(predicate, context->rdf_type))
+ raptor_turtle_writer_raw(turtle_writer, (const unsigned char*)"a");
+ else if(qname)
+ raptor_turtle_writer_qname(turtle_writer, qname);
+ else
+ raptor_turtle_writer_reference(turtle_writer, predicate->term->value.uri);
+
+ raptor_turtle_writer_raw(turtle_writer, (const unsigned char*)" ");
+
+ if(qname)
+ raptor_free_qname(qname);
+ } else
+ raptor_turtle_writer_raw(turtle_writer, (const unsigned char*)", ");
+
+
+ switch(object->term->type) {
+ case RAPTOR_TERM_TYPE_URI:
+ rv = raptor_turtle_emit_resource(serializer, object, depth+1);
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ rv = raptor_turtle_emit_literal(serializer, object, depth+1);
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ rv = raptor_turtle_emit_blank(serializer, object, depth+1);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR,
+ NULL, "Triple has unsupported term type %d",
+ object->term->type);
+ break;
+ }
+
+ /* Return error if emitting something failed above */
+ if(rv)
+ return rv;
+
+ last_predicate = predicate;
+ }
+
+ if(iter)
+ raptor_free_avltree_iterator(iter);
+
+ return rv;
+}
+
+/*
+ * raptor_turtle_emit_subject:
+ * @serializer: #raptor_serializer object
+ * @subject: subject node
+ * @depth: depth into tree
+ *
+ * Emit a subject node
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_turtle_emit_subject(raptor_serializer *serializer,
+ raptor_abbrev_subject* subject,
+ int depth)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+ raptor_turtle_writer* turtle_writer = context->turtle_writer;
+ int blank = 1;
+ int collection = 0;
+ int rc = 0;
+
+ if(!raptor_abbrev_subject_valid(subject)) return 0;
+
+ RAPTOR_DEBUG5("Emitting subject node %p refcount %d subject %d object %d\n",
+ subject->node,
+ subject->node->ref_count,
+ subject->node->count_as_subject,
+ subject->node->count_as_object);
+
+ if(!depth &&
+ subject->node->term->type == RAPTOR_TERM_TYPE_BLANK &&
+ subject->node->count_as_subject == 1 &&
+ subject->node->count_as_object == 1) {
+ RAPTOR_DEBUG2("Skipping subject node %p\n", subject->node);
+ return 0;
+ }
+
+ if(raptor_avltree_size(subject->properties) == 0) {
+ RAPTOR_DEBUG2("Skipping subject node %p\n", subject->node);
+ return 0;
+ }
+
+ /* check if we can do collection abbreviation */
+ if(raptor_avltree_size(subject->properties) >= 2) {
+ raptor_avltree_iterator* iter = NULL;
+ raptor_abbrev_node* pred1;
+ raptor_abbrev_node* pred2;
+
+ iter = raptor_new_avltree_iterator(subject->properties, NULL, NULL, 1);
+ if(!iter)
+ return 1;
+ pred1 = ((raptor_abbrev_node**)raptor_avltree_iterator_get(iter))[0];
+ raptor_avltree_iterator_next(iter);
+ pred2 = ((raptor_abbrev_node**)raptor_avltree_iterator_get(iter))[0];
+ raptor_free_avltree_iterator(iter);
+
+ if(pred1->term->type == RAPTOR_TERM_TYPE_URI &&
+ pred2->term->type == RAPTOR_TERM_TYPE_URI &&
+ (
+ (raptor_uri_equals(pred1->term->value.uri, context->rdf_first_uri) &&
+ raptor_uri_equals(pred2->term->value.uri, context->rdf_rest_uri))
+ ||
+ (raptor_uri_equals(pred2->term->value.uri, context->rdf_first_uri) &&
+ raptor_uri_equals(pred1->term->value.uri, context->rdf_rest_uri))
+ )
+ ) {
+ collection = 1;
+ }
+ }
+
+ /* emit the subject node */
+ if(subject->node->term->type == RAPTOR_TERM_TYPE_URI) {
+ rc= raptor_turtle_emit_resource(serializer, subject->node, depth+1);
+ if(rc)
+ return rc;
+ blank = 0;
+ collection = 0;
+
+ } else if(subject->node->term->type == RAPTOR_TERM_TYPE_BLANK) {
+ if((subject->node->count_as_subject == 1 &&
+ subject->node->count_as_object == 0) && depth > 1) {
+ blank = 1;
+ } else if(subject->node->count_as_object == 0) {
+ raptor_turtle_writer_raw(turtle_writer, (const unsigned char*)"[]");
+ blank = 0;
+ } else if(!collection && subject->node->count_as_object > 1) {
+ /* Referred to (used as an object), so needs a nodeID */
+ const unsigned char* genid = subject->node->term->value.blank.string;
+ size_t len = strlen((const char*)genid);
+ unsigned char* subject_str;
+ subject_str= RAPTOR_MALLOC(unsigned char*, len + 3);
+ if(!subject_str)
+ return 1;
+
+ subject_str[0]='_';
+ subject_str[1]=':';
+ memcpy(&subject_str[2], genid, len + 1);
+ raptor_turtle_writer_raw(turtle_writer, subject_str);
+ RAPTOR_FREE(char*, subject_str);
+ }
+ }
+
+ if(collection) {
+ raptor_turtle_writer_raw(turtle_writer, (const unsigned char*)"(");
+
+ raptor_turtle_writer_increase_indent(turtle_writer);
+
+ rc = raptor_turtle_emit_subject_collection_items(serializer, subject, depth+1);
+
+ raptor_turtle_writer_decrease_indent(turtle_writer);
+ raptor_turtle_writer_newline(turtle_writer);
+
+ raptor_turtle_writer_raw(turtle_writer, (const unsigned char*)")");
+
+ } else {
+ if(blank && depth > 1)
+ raptor_turtle_writer_raw(turtle_writer, (const unsigned char*)"[");
+
+ raptor_turtle_writer_increase_indent(turtle_writer);
+ raptor_turtle_writer_newline(turtle_writer);
+
+ raptor_turtle_emit_subject_properties(serializer, subject, depth+1);
+
+ raptor_turtle_writer_decrease_indent(turtle_writer);
+
+ if(blank && depth > 1) {
+ raptor_turtle_writer_newline(turtle_writer);
+ raptor_turtle_writer_raw(turtle_writer, (const unsigned char*)"]");
+ }
+ }
+
+ if(depth == 0) {
+ /* NOTE: the space before the . here MUST be there or statements
+ * that end in a numeric literal will be interpreted incorrectly
+ * (the "." will be parsed as part of the literal and statement
+ * left unterminated)
+ */
+ raptor_turtle_writer_raw(turtle_writer, (const unsigned char*)" .");
+ raptor_turtle_writer_newline(turtle_writer);
+ raptor_turtle_writer_newline(turtle_writer);
+ }
+
+ return rc;
+}
+
+
+/*
+ * raptor_turtle_emit:
+ * @serializer: #raptor_serializer object
+ *
+ * Emit Turtle for all stored triples.
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_turtle_emit(raptor_serializer *serializer)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+ raptor_abbrev_subject* subject;
+ raptor_abbrev_subject* blank;
+ int rc;
+ raptor_avltree_iterator* iter = NULL;
+
+ iter = raptor_new_avltree_iterator(context->subjects, NULL, NULL, 1);
+ while(iter) {
+ subject = (raptor_abbrev_subject *)raptor_avltree_iterator_get(iter);
+ if(subject) {
+ rc = raptor_turtle_emit_subject(serializer, subject, 0);
+ if(rc) {
+ raptor_free_avltree_iterator(iter);
+ return rc;
+ }
+ }
+ if(raptor_avltree_iterator_next(iter)) break;
+ }
+ if(iter) raptor_free_avltree_iterator(iter);
+
+ /* Emit any remaining blank nodes. */
+ iter = raptor_new_avltree_iterator(context->blanks, NULL, NULL, 1);
+ while(iter) {
+ blank = (raptor_abbrev_subject *)raptor_avltree_iterator_get(iter);
+ if(blank) {
+ rc = raptor_turtle_emit_subject(serializer, blank, 0);
+ if(rc) {
+ raptor_free_avltree_iterator(iter);
+ return rc;
+ }
+ }
+ if(raptor_avltree_iterator_next(iter)) break;
+ }
+ if(iter) raptor_free_avltree_iterator(iter);
+
+ return 0;
+}
+
+
+/*
+ * raptor serializer Turtle implementation
+ */
+
+
+/* create a new serializer */
+static int
+raptor_turtle_serialize_init(raptor_serializer* serializer, const char *name)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+ raptor_uri *rdf_type_uri;
+
+ context->nstack = raptor_new_namespaces(serializer->world, 1);
+ if(!context->nstack)
+ return 1;
+ context->rdf_nspace = raptor_new_namespace(context->nstack,
+ (const unsigned char*)"rdf",
+ (const unsigned char*)raptor_rdf_namespace_uri,
+ 0);
+
+ context->namespaces = raptor_new_sequence(NULL, NULL);
+
+ context->subjects =
+ raptor_new_avltree((raptor_data_compare_handler)raptor_abbrev_subject_compare,
+ (raptor_data_free_handler)raptor_free_abbrev_subject, 0);
+
+ context->blanks =
+ raptor_new_avltree((raptor_data_compare_handler)raptor_abbrev_subject_compare,
+ (raptor_data_free_handler)raptor_free_abbrev_subject, 0);
+
+ context->nodes =
+ raptor_new_avltree((raptor_data_compare_handler)raptor_abbrev_node_compare,
+ (raptor_data_free_handler)raptor_free_abbrev_node, 0);
+
+ rdf_type_uri = raptor_new_uri_for_rdf_concept(serializer->world,
+ (const unsigned char*)"type");
+ if(rdf_type_uri) {
+ raptor_term* uri_term;
+ uri_term = raptor_new_term_from_uri(serializer->world,
+ rdf_type_uri);
+ raptor_free_uri(rdf_type_uri);
+ context->rdf_type = raptor_new_abbrev_node(serializer->world, uri_term);
+ raptor_free_term(uri_term);
+ } else
+ context->rdf_type = NULL;
+
+ context->rdf_xml_literal_uri = raptor_new_uri(serializer->world, raptor_xml_literal_datatype_uri_string);
+ context->rdf_first_uri = raptor_new_uri(serializer->world, (const unsigned char*)"http://www.w3.org/1999/02/22-rdf-syntax-ns#first");
+ context->rdf_rest_uri = raptor_new_uri(serializer->world, (const unsigned char*)"http://www.w3.org/1999/02/22-rdf-syntax-ns#rest");
+ context->rdf_nil_uri = raptor_new_uri(serializer->world, (const unsigned char*)"http://www.w3.org/1999/02/22-rdf-syntax-ns#nil");
+
+ if(!context->rdf_nspace || !context->namespaces ||
+ !context->subjects || !context->blanks || !context->nodes ||
+ !context->rdf_xml_literal_uri || !context->rdf_first_uri ||
+ !context->rdf_rest_uri || !context->rdf_nil_uri || !context->rdf_type)
+ {
+ raptor_turtle_serialize_terminate(serializer);
+ return 1;
+ }
+
+ /* Note: item 0 in the list is rdf:RDF's namespace */
+ if(raptor_sequence_push(context->namespaces, context->rdf_nspace)) {
+ raptor_turtle_serialize_terminate(serializer);
+ return 1;
+ }
+
+ return 0;
+}
+
+
+/* destroy a serializer */
+static void
+raptor_turtle_serialize_terminate(raptor_serializer* serializer)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+
+ if(context->turtle_writer) {
+ raptor_free_turtle_writer(context->turtle_writer);
+ context->turtle_writer = NULL;
+ }
+
+ if(context->rdf_nspace) {
+ raptor_free_namespace(context->rdf_nspace);
+ context->rdf_nspace = NULL;
+ }
+
+ if(context->namespaces) {
+ int i;
+
+ /* Note: item 0 in the list is rdf:RDF's namespace and freed above */
+ for(i = 1; i< raptor_sequence_size(context->namespaces); i++) {
+ raptor_namespace* ns;
+ ns =(raptor_namespace*)raptor_sequence_get_at(context->namespaces, i);
+ if(ns)
+ raptor_free_namespace(ns);
+ }
+ raptor_free_sequence(context->namespaces);
+ context->namespaces = NULL;
+ }
+
+ if(context->subjects) {
+ raptor_free_avltree(context->subjects);
+ context->subjects = NULL;
+ }
+
+ if(context->blanks) {
+ raptor_free_avltree(context->blanks);
+ context->blanks = NULL;
+ }
+
+ if(context->nodes) {
+ raptor_free_avltree(context->nodes);
+ context->nodes = NULL;
+ }
+
+ if(context->nstack) {
+ raptor_free_namespaces(context->nstack);
+ context->nstack = NULL;
+ }
+
+ if(context->rdf_type) {
+ raptor_free_abbrev_node(context->rdf_type);
+ context->rdf_type = NULL;
+ }
+
+ if(context->rdf_xml_literal_uri) {
+ raptor_free_uri(context->rdf_xml_literal_uri);
+ context->rdf_xml_literal_uri = NULL;
+ }
+
+ if(context->rdf_first_uri) {
+ raptor_free_uri(context->rdf_first_uri);
+ context->rdf_first_uri = NULL;
+ }
+
+ if(context->rdf_rest_uri) {
+ raptor_free_uri(context->rdf_rest_uri);
+ context->rdf_rest_uri = NULL;
+ }
+
+ if(context->rdf_nil_uri) {
+ raptor_free_uri(context->rdf_nil_uri);
+ context->rdf_nil_uri = NULL;
+ }
+}
+
+
+#define TURTLE_NAMESPACE_DEPTH 0
+
+/* add a namespace */
+static int
+raptor_turtle_serialize_declare_namespace_from_namespace(raptor_serializer* serializer,
+ raptor_namespace *nspace)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+ int i;
+
+ if(context->written_header)
+ return 1;
+
+ for(i = 0; i< raptor_sequence_size(context->namespaces); i++) {
+ raptor_namespace* ns;
+ ns = (raptor_namespace*)raptor_sequence_get_at(context->namespaces, i);
+
+ /* If prefix is already declared, ignore it */
+ if(!ns->prefix && !nspace->prefix)
+ return 1;
+
+ if(ns->prefix && nspace->prefix &&
+ !strcmp((const char*)ns->prefix, (const char*)nspace->prefix))
+ return 1;
+
+ if(ns->uri && nspace->uri &&
+ raptor_uri_equals(ns->uri, nspace->uri))
+ return 1;
+ }
+
+ nspace = raptor_new_namespace_from_uri(context->nstack,
+ nspace->prefix, nspace->uri,
+ TURTLE_NAMESPACE_DEPTH);
+ if(!nspace)
+ return 1;
+
+ raptor_sequence_push(context->namespaces, nspace);
+ return 0;
+}
+
+
+/* add a namespace */
+static int
+raptor_turtle_serialize_declare_namespace(raptor_serializer* serializer,
+ raptor_uri *uri,
+ const unsigned char *prefix)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+ raptor_namespace *ns;
+ int rc;
+
+ ns = raptor_new_namespace_from_uri(context->nstack, prefix, uri,
+ TURTLE_NAMESPACE_DEPTH);
+
+ rc = raptor_turtle_serialize_declare_namespace_from_namespace(serializer, ns);
+ raptor_free_namespace(ns);
+
+ return rc;
+}
+
+
+/* start a serialize */
+static int
+raptor_turtle_serialize_start(raptor_serializer* serializer)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+ raptor_turtle_writer* turtle_writer;
+ int flag;
+
+ if(context->turtle_writer)
+ raptor_free_turtle_writer(context->turtle_writer);
+
+ flag = RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_WRITE_BASE_URI);
+ turtle_writer = raptor_new_turtle_writer(serializer->world,
+ serializer->base_uri,
+ flag,
+ context->nstack,
+ serializer->iostream);
+ if(!turtle_writer)
+ return 1;
+
+ raptor_turtle_writer_set_option(turtle_writer,
+ RAPTOR_OPTION_WRITER_AUTO_INDENT, 1);
+ raptor_turtle_writer_set_option(turtle_writer,
+ RAPTOR_OPTION_WRITER_INDENT_WIDTH, 2);
+
+ context->turtle_writer = turtle_writer;
+
+ return 0;
+}
+
+static void
+raptor_turtle_ensure_writen_header(raptor_serializer* serializer,
+ raptor_turtle_context* context)
+{
+ int i;
+
+ if(context->written_header)
+ return;
+
+ if(!context->turtle_writer)
+ return;
+
+ for(i = 0; i< raptor_sequence_size(context->namespaces); i++) {
+ raptor_namespace* ns;
+ ns = (raptor_namespace*)raptor_sequence_get_at(context->namespaces, i);
+ raptor_turtle_writer_namespace_prefix(context->turtle_writer, ns);
+ raptor_namespace_stack_start_namespace(context->nstack, ns, 0);
+ }
+
+ raptor_turtle_writer_raw(context->turtle_writer, (const unsigned char*)"\n");
+
+ context->written_header = 1;
+}
+
+/* serialize a statement */
+static int
+raptor_turtle_serialize_statement(raptor_serializer* serializer,
+ raptor_statement *statement)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+ raptor_abbrev_subject* subject = NULL;
+ raptor_abbrev_node* predicate = NULL;
+ raptor_abbrev_node* object = NULL;
+ int rv;
+ raptor_term_type object_type;
+
+ if(!(statement->subject->type == RAPTOR_TERM_TYPE_URI ||
+ statement->subject->type == RAPTOR_TERM_TYPE_BLANK)) {
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Do not know how to serialize node type %d",
+ statement->subject->type);
+ return 1;
+ }
+
+ subject = raptor_abbrev_subject_lookup(context->nodes, context->subjects,
+ context->blanks,
+ statement->subject);
+ if(!subject) {
+ return 1;
+ }
+
+ object_type = statement->object->type;
+
+ if(!(object_type == RAPTOR_TERM_TYPE_URI ||
+ object_type == RAPTOR_TERM_TYPE_BLANK ||
+ object_type == RAPTOR_TERM_TYPE_LITERAL)) {
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot serialize a triple with object node type %d",
+ object_type);
+ return 1;
+ }
+
+ object = raptor_abbrev_node_lookup(context->nodes, statement->object);
+ if(!object)
+ return 1;
+
+
+ if(statement->predicate->type == RAPTOR_TERM_TYPE_URI) {
+ predicate = raptor_abbrev_node_lookup(context->nodes, statement->predicate);
+ if(!predicate)
+ return 1;
+
+ rv = raptor_abbrev_subject_add_property(subject, predicate, object);
+ if(rv < 0) {
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Unable to add properties to subject %p",
+ subject);
+ return rv;
+ }
+
+ } else {
+ raptor_log_error_formatted(serializer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Do not know how to serialize node type %d",
+ statement->predicate->type);
+ return 1;
+ }
+
+ if(object_type == RAPTOR_TERM_TYPE_URI ||
+ object_type == RAPTOR_TERM_TYPE_BLANK)
+ object->count_as_object++;
+
+ return 0;
+}
+
+
+/* end a serialize */
+static int
+raptor_turtle_serialize_end(raptor_serializer* serializer)
+{
+ raptor_turtle_context* context = (raptor_turtle_context*)serializer->context;
+
+ raptor_turtle_ensure_writen_header(serializer, context);
+
+ raptor_turtle_emit(serializer);
+
+ /* reset serializer for reuse */
+ context->written_header = 0;
+
+ return 0;
+}
+
+
+/* finish the serializer factory */
+static void
+raptor_turtle_serialize_finish_factory(raptor_serializer_factory* factory)
+{
+ /* NOP */
+}
+
+
+static const char* const turtle_names[2] = { "turtle", NULL};
+
+static const char* const turtle_uri_strings[3] = {
+ "http://www.w3.org/ns/formats/Turtle",
+ "http://www.dajobe.org/2004/01/turtle/",
+ NULL
+};
+
+#define TURTLE_TYPES_COUNT 6
+static const raptor_type_q turtle_types[TURTLE_TYPES_COUNT + 1] = {
+ { "text/turtle", 11, 10},
+ { "application/turtle", 18, 10},
+ { "application/x-turtle", 20, 8},
+ { "text/n3", 7, 3},
+ { "text/rdf+n3", 11, 3},
+ { "application/rdf+n3", 18, 3},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_turtle_serializer_register_factory(raptor_serializer_factory *factory)
+{
+ factory->desc.names = turtle_names;
+ factory->desc.mime_types = turtle_types;
+
+ factory->desc.label = "Turtle Terse RDF Triple Language";
+ factory->desc.uri_strings = turtle_uri_strings;
+
+ factory->context_length = sizeof(raptor_turtle_context);
+
+ factory->init = raptor_turtle_serialize_init;
+ factory->terminate = raptor_turtle_serialize_terminate;
+ factory->declare_namespace = raptor_turtle_serialize_declare_namespace;
+ factory->declare_namespace_from_namespace = raptor_turtle_serialize_declare_namespace_from_namespace;
+ factory->serialize_start = raptor_turtle_serialize_start;
+ factory->serialize_statement = raptor_turtle_serialize_statement;
+ factory->serialize_end = raptor_turtle_serialize_end;
+ factory->finish_factory = raptor_turtle_serialize_finish_factory;
+
+ return 0;
+}
+
+
+int
+raptor_init_serializer_turtle(raptor_world* world)
+{
+ return !raptor_serializer_register_factory(world,
+ &raptor_turtle_serializer_register_factory);
+}
+
+
+
+/**
+ * raptor_uri_turtle_write:
+ * @world: world
+ * @iostr: iostream for writing
+ * @uri: uri
+ * @nstack: namespace stack
+ * @base_uri: base URI
+ *
+ * Write #raptor_uri to a stream in turtle syntax (using QNames).
+ *
+ * Return value: non-0 on failure
+ */
+int
+raptor_uri_turtle_write(raptor_world *world,
+ raptor_iostream* iostr,
+ raptor_uri* uri,
+ raptor_namespace_stack *nstack,
+ raptor_uri *base_uri)
+{
+ raptor_qname* qname;
+ raptor_turtle_writer* turtle_writer;
+
+ turtle_writer = raptor_new_turtle_writer(world, base_uri, 0, nstack, iostr);
+ if(!turtle_writer) {
+ return 1;
+ }
+
+ qname = raptor_new_qname_from_namespace_uri(nstack, uri, 10);
+
+ /* XML Names allow leading '_' and '.' anywhere but Turtle does not */
+ if(qname && !raptor_turtle_is_legal_turtle_qname(qname)) {
+ raptor_free_qname(qname);
+ qname = NULL;
+ }
+
+ if(qname) {
+ raptor_turtle_writer_qname(turtle_writer, qname);
+
+ raptor_free_qname(qname);
+ } else {
+ raptor_turtle_writer_reference(turtle_writer, uri);
+ }
+
+ raptor_free_turtle_writer(turtle_writer);
+
+ return 0;
+}
+
+
+
+/**
+ * raptor_term_turtle_write:
+ * @iostr: iostream for writing
+ * @term: term
+ * @nstack: namespace stack
+ * @base_uri: base URI
+ *
+ * Write #raptor_term to a stream in turtle syntax (using QNames).
+ *
+ * Return value: non-0 on failure
+ */
+int
+raptor_term_turtle_write(raptor_iostream* iostr,
+ raptor_term* term,
+ raptor_namespace_stack *nstack,
+ raptor_uri *base_uri)
+{
+ int rc = 0;
+ raptor_turtle_writer* turtle_writer;
+
+ turtle_writer = raptor_new_turtle_writer(term->world, base_uri, 0, nstack, iostr);
+ if(!turtle_writer) {
+ return 1;
+ }
+
+ if(term->type == RAPTOR_TERM_TYPE_URI) {
+ rc = raptor_uri_turtle_write(term->world, iostr, term->value.uri, nstack, base_uri);
+ } else if(term->type == RAPTOR_TERM_TYPE_LITERAL) {
+ raptor_turtle_writer_literal(turtle_writer, nstack,
+ term->value.literal.string,
+ term->value.literal.language,
+ term->value.literal.datatype);
+ } else if(term->type == RAPTOR_TERM_TYPE_BLANK) {
+ raptor_bnodeid_ntriples_write(term->value.blank.string, term->value.blank.string_len, iostr);
+ } else {
+ rc = 2;
+ }
+
+ raptor_free_turtle_writer(turtle_writer);
+
+ return rc;
+}
+
+
+
+/**
+ * raptor_uri_to_turtle_counted_string:
+ * @world: world
+ * @uri: uri
+ * @nstack: namespace stack
+ * @base_uri: base URI
+ * @len_p: Pointer to location to store length of new string (if not NULL)
+ *
+ * Convert #raptor_uri to a string.
+ * Caller has responsibility to free the string.
+ *
+ * Return value: the new string or NULL on failure. The length of
+ * the new string is returned in *@len_p if len_p is not NULL.
+ */
+unsigned char*
+raptor_uri_to_turtle_counted_string(raptor_world *world,
+ raptor_uri* uri,
+ raptor_namespace_stack *nstack,
+ raptor_uri *base_uri,
+ size_t *len_p)
+{
+ int rc;
+ raptor_iostream* iostr;
+ unsigned char *s;
+ iostr = raptor_new_iostream_to_string(world,
+ (void**)&s, len_p, malloc);
+ if(!iostr)
+ return NULL;
+
+ rc = raptor_uri_turtle_write(world, iostr, uri, nstack, base_uri);
+
+ raptor_free_iostream(iostr);
+ if(rc) {
+ free(s);
+ s = NULL;
+ }
+
+ return s;
+}
+
+/**
+ * raptor_uri_to_turtle_string:
+ * @world: world
+ * @uri: uri
+ * @nstack: namespace stack
+ * @base_uri: base URI
+ *
+ * Convert #raptor_uri to a string.
+ * Caller has responsibility to free the string.
+ *
+ * Return value: the new string or NULL on failure.
+ */
+unsigned char*
+raptor_uri_to_turtle_string(raptor_world *world,
+ raptor_uri* uri,
+ raptor_namespace_stack *nstack,
+ raptor_uri *base_uri)
+{
+ return raptor_uri_to_turtle_counted_string(world, uri, nstack, base_uri, NULL);
+}
+
+
+
+/**
+ * raptor_term_to_turtle_counted_string:
+ * @term: term
+ * @nstack: namespace stack
+ * @base_uri: base URI
+ * @len_p: Pointer to location to store length of new string (if not NULL)
+ *
+ * Convert #raptor_term to a string.
+ * Caller has responsibility to free the string.
+ *
+ * Return value: the new string or NULL on failure. The length of
+ * the new string is returned in *@len_p if len_p is not NULL.
+ */
+unsigned char*
+raptor_term_to_turtle_counted_string(raptor_term* term,
+ raptor_namespace_stack *nstack,
+ raptor_uri *base_uri,
+ size_t *len_p)
+{
+ int rc;
+ raptor_iostream* iostr;
+ unsigned char *s;
+ iostr = raptor_new_iostream_to_string(term->world,
+ (void**)&s, len_p, malloc);
+ if(!iostr)
+ return NULL;
+
+ rc = raptor_term_turtle_write(iostr, term, nstack, base_uri);
+
+ raptor_free_iostream(iostr);
+ if(rc) {
+ free(s);
+ s = NULL;
+ }
+
+ return s;
+}
+
+/**
+ * raptor_term_to_turtle_string:
+ * @term: term
+ * @nstack: namespace stack
+ * @base_uri: base URI
+ *
+ * Convert #raptor_term to a string.
+ * Caller has responsibility to free the string.
+ *
+ * Return value: the new string or NULL on failure.
+ */
+unsigned char*
+raptor_term_to_turtle_string(raptor_term* term,
+ raptor_namespace_stack *nstack,
+ raptor_uri *base_uri)
+{
+ return raptor_term_to_turtle_counted_string(term, nstack, base_uri, NULL);
+}
+
diff --git a/src/raptor_set.c b/src/raptor_set.c
new file mode 100644
index 0000000..3228017
--- /dev/null
+++ b/src/raptor_set.c
@@ -0,0 +1,334 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_set.c - Sets for checking IDs
+ *
+ * Copyright (C) 2003-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include <sys/types.h>
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h> /* for abort() as used in errors */
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+#ifndef STANDALONE
+
+/*
+ * The only methods needed here are:
+ * Create Set
+ * Destroy Set
+ * Check a (base, ID) pair present add it if not, return if added/not
+ *
+ */
+
+struct raptor_base_id_set_s
+{
+ raptor_world* world;
+
+ /* The base URI of this set of IDs */
+ raptor_uri *uri;
+
+ /* neighbour ID sets */
+ struct raptor_base_id_set_s* prev;
+ struct raptor_base_id_set_s* next;
+
+ /* binary tree */
+ raptor_avltree* tree;
+};
+typedef struct raptor_base_id_set_s raptor_base_id_set;
+
+
+struct raptor_id_set_s
+{
+ raptor_world* world;
+
+ /* start of trees, 1 per base URI */
+ struct raptor_base_id_set_s* first;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ int hits;
+ int misses;
+#endif
+};
+
+
+/* functions implementing the ID set api */
+
+/**
+ * raptor_new_id_set:
+ * @world: raptor_world object
+ *
+ * INTERNAL - Constructor - create a new ID set.
+ *
+ * Return value: non 0 on failure
+ **/
+raptor_id_set*
+raptor_new_id_set(raptor_world* world)
+{
+ raptor_id_set* set = RAPTOR_CALLOC(raptor_id_set*, 1, sizeof(*set));
+ if(!set)
+ return NULL;
+
+ set->world = world;
+
+ return set;
+}
+
+
+/**
+ * raptor_free_base_id_set:
+ * @set: #raptor_base_id_set
+ *
+ * INTERNAL - Destructor - Free a Base ID Set.
+ *
+ **/
+static void
+raptor_free_base_id_set(raptor_base_id_set *base)
+{
+ if(base->tree)
+ raptor_free_avltree(base->tree);
+ if(base->uri)
+ raptor_free_uri(base->uri);
+ RAPTOR_FREE(raptor_base_id_set, base);
+}
+
+
+/**
+ * raptor_free_id_set:
+ * @set: #raptor_id_set
+ *
+ * INTERNAL - Destructor - Free ID Set.
+ *
+ **/
+void
+raptor_free_id_set(raptor_id_set *set)
+{
+ raptor_base_id_set *base;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN(set, raptor_id_set);
+
+ base = set->first;
+ while(base) {
+ raptor_base_id_set *next = base->next;
+ raptor_free_base_id_set(base);
+ base = next;
+ }
+ RAPTOR_FREE(raptor_id_set, set);
+}
+
+
+
+/**
+ * raptor_id_set_add:
+ * @set: #raptor_id_set
+ * @base_uri: base #raptor_uri of identifier
+ * @id: identifier name
+ * @id_len: length of identifier
+ *
+ * INTERNAL - Add an item to the set.
+ *
+ * Return value: <0 on failure, 0 on success, 1 if already present
+ **/
+int
+raptor_id_set_add(raptor_id_set* set, raptor_uri *base_uri,
+ const unsigned char *id, size_t id_len)
+{
+ raptor_base_id_set *base;
+ char* item;
+
+ if(!base_uri || !id || !id_len)
+ return -1;
+
+ base = set->first;
+ while(base) {
+ if(raptor_uri_equals(base->uri, base_uri))
+ break;
+ base = base->next;
+ }
+
+ if(!base) {
+ /* a set for this base_uri not found */
+ base = RAPTOR_CALLOC(raptor_base_id_set*, 1, sizeof(*base));
+ if(!base)
+ return -1;
+
+ base->world = set->world;
+
+ base->uri = raptor_uri_copy(base_uri);
+
+ base->tree = raptor_new_avltree((raptor_data_compare_handler)strcmp,
+ free, 0);
+
+ /* Add to the start of the list */
+ if(set->first)
+ set->first->prev = base;
+ /* base->prev = NULL; */
+ base->next = set->first;
+
+ set->first = base;
+ } else {
+ /* If not at the start of the list, move there */
+ if(base != set->first) {
+ /* remove from the list */
+ base->prev->next = base->next;
+ if(base->next)
+ base->next->prev = base->prev;
+ /* add at the start of the list */
+ set->first->prev = base;
+ base->prev = NULL;
+ base->next = set->first;
+ }
+ }
+
+ item = (char*)raptor_avltree_search(base->tree, id);
+
+ /* if already there, error */
+ if(item) {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ set->misses++;
+#endif
+ return 1;
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ set->hits++;
+#endif
+
+ item = RAPTOR_MALLOC(char*, id_len + 1);
+ if(!item)
+ return 1;
+
+ memcpy(item, id, id_len + 1);
+
+ return raptor_avltree_add(base->tree, item);
+}
+
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+void
+raptor_id_set_stats_print(raptor_id_set* set, FILE *stream) {
+ fprintf(stream, "set hits: %d misses: %d\n", set->hits, set->misses);
+}
+#endif
+
+#endif
+
+
+#ifdef STANDALONE
+
+/* one more prototype */
+int main(int argc, char *argv[]);
+
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world;
+ const char *program = raptor_basename(argv[0]);
+ const char *items[8] = { "ron", "amy", "jen", "bij", "jib", "daj", "jim", NULL };
+ raptor_id_set *set;
+ raptor_uri *base_uri;
+ int i = 0;
+
+ world = raptor_new_world();
+ if(!world || raptor_world_open(world))
+ exit(1);
+
+ base_uri = raptor_new_uri(world, (const unsigned char*)"http://example.org/base#");
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Creating set\n", program);
+#endif
+
+ set = raptor_new_id_set(world);
+ if(!set) {
+ fprintf(stderr, "%s: Failed to create set\n", program);
+ exit(1);
+ }
+
+ for(i = 0; items[i]; i++) {
+ size_t len = strlen(items[i]);
+ int rc;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Adding set item '%s'\n", program, items[i]);
+#endif
+
+ rc = raptor_id_set_add(set, base_uri, (const unsigned char*)items[i], len);
+if(rc) {
+ fprintf(stderr, "%s: Adding set item %d '%s' failed, returning error %d\n",
+ program, i, items[i], rc);
+ exit(1);
+ }
+ }
+
+ for(i = 0; items[i]; i++) {
+ size_t len = strlen(items[i]);
+ int rc;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Adding duplicate set item '%s'\n", program, items[i]);
+#endif
+
+ rc = raptor_id_set_add(set, base_uri, (const unsigned char*)items[i], len);
+ if(rc <= 0) {
+ fprintf(stderr, "%s: Adding duplicate set item %d '%s' succeeded, should have failed, returning error %d\n",
+ program, i, items[i], rc);
+ exit(1);
+ }
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ raptor_id_set_stats_print(set, stderr);
+#endif
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Freeing set\n", program);
+#endif
+ raptor_free_id_set(set);
+
+ raptor_free_uri(base_uri);
+
+ raptor_free_world(world);
+
+ /* keep gcc -Wall happy */
+ return(0);
+}
+
+#endif
diff --git a/src/raptor_statement.c b/src/raptor_statement.c
new file mode 100644
index 0000000..8281f46
--- /dev/null
+++ b/src/raptor_statement.c
@@ -0,0 +1,447 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_statement.c - Raptor statements
+ *
+ * Copyright (C) 2008-2010, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+/* for ptrdiff_t */
+#ifdef HAVE_STDDEF_H
+#include <stddef.h>
+#endif
+#include <stdarg.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/* prototypes for helper functions */
+
+
+/**
+ * raptor_new_statement:
+ * @world: raptor world
+ *
+ * Constructor - create a new #raptor_statement.
+ *
+ * Return value: new raptor statement or NULL on failure
+ */
+raptor_statement*
+raptor_new_statement(raptor_world *world)
+{
+ raptor_statement* statement;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ statement = RAPTOR_CALLOC(raptor_statement*, 1, sizeof(*statement));
+ if(!statement)
+ return NULL;
+
+ statement->world = world;
+ /* dynamic - usage counted */
+ statement->usage = 1;
+
+ return statement;
+}
+
+
+/**
+ * raptor_new_statement_from_nodes:
+ * @world: raptor world
+ * @subject: subject term (or NULL)
+ * @predicate: predicate term (or NULL)
+ * @object: object term (or NULL)
+ * @graph: graph name term (or NULL)
+ *
+ * Constructor - create a new #raptor_statement from a set of terms
+ *
+ * The @subject, @predicate, @object and @graph become owned by the statement.
+ *
+ * Return value: new raptor statement or NULL on failure
+ */
+raptor_statement*
+raptor_new_statement_from_nodes(raptor_world* world, raptor_term *subject,
+ raptor_term *predicate, raptor_term *object,
+ raptor_term *graph)
+{
+ raptor_statement* t;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ t = raptor_new_statement(world);
+ if(!t) {
+ if(subject)
+ raptor_free_term(subject);
+ if(predicate)
+ raptor_free_term(predicate);
+ if(object)
+ raptor_free_term(object);
+ if(graph)
+ raptor_free_term(graph);
+ return NULL;
+ }
+
+ t->subject = subject;
+ t->predicate = predicate;
+ t->object = object;
+ t->graph = graph;
+
+ return t;
+}
+
+
+/**
+ * raptor_statement_init:
+ * @statement: statement to initialize
+ * @world: raptor world
+ *
+ * Initialize a static #raptor_statement.
+ *
+ */
+void
+raptor_statement_init(raptor_statement *statement, raptor_world *world)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN(world, raptor_world);
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN(statement, raptor_statement);
+
+ /* ensure all fields are set to NULL to start with */
+ memset(statement, 0, sizeof(*statement));
+
+ statement->world = world;
+
+ /* static - not usage counted */
+ statement->usage = -1;
+}
+
+
+/**
+ * raptor_statement_copy:
+ * @statement: statement to copy
+ *
+ * Copy a #raptor_statement.
+ *
+ * Return value: a new #raptor_statement or NULL on error
+ */
+raptor_statement*
+raptor_statement_copy(raptor_statement *statement)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(statement, raptor_statement, NULL);
+
+ /* static - not usage counted */
+ if(statement->usage < 0) {
+ raptor_statement* s2;
+ /* s2 will be a dynamic, usage->counted statement */
+ s2 = raptor_new_statement(statement->world);
+ if(!s2)
+ return NULL;
+
+ s2->world = statement->world;
+ if(statement->subject)
+ s2->subject = raptor_term_copy(statement->subject);
+ if(statement->predicate)
+ s2->predicate = raptor_term_copy(statement->predicate);
+ if(statement->object)
+ s2->object = raptor_term_copy(statement->object);
+ if(statement->graph)
+ s2->graph = raptor_term_copy(statement->graph);
+
+ return s2;
+ }
+
+ statement->usage++;
+
+ return statement;
+}
+
+
+/**
+ * raptor_statement_clear:
+ * @statement: #raptor_statement object
+ *
+ * Empty a raptor_statement of terms.
+ *
+ **/
+void
+raptor_statement_clear(raptor_statement *statement)
+{
+ if(!statement)
+ return;
+
+ /* raptor_free_term() does a NULL check */
+
+ raptor_free_term(statement->subject);
+ statement->subject = NULL;
+
+ raptor_free_term(statement->predicate);
+ statement->predicate = NULL;
+
+ raptor_free_term(statement->object);
+ statement->object = NULL;
+
+ raptor_free_term(statement->graph);
+ statement->graph = NULL;
+}
+
+
+/**
+ * raptor_free_statement:
+ * @statement: statement
+ *
+ * Destructor
+ *
+ */
+void
+raptor_free_statement(raptor_statement *statement)
+{
+ /* dynamically or statically allocated? */
+ int is_dynamic;
+
+ if(!statement)
+ return;
+
+ is_dynamic = (statement->usage >= 0);
+
+ /* dynamically allocated and still in use? */
+ if(is_dynamic && --statement->usage)
+ return;
+
+ raptor_statement_clear(statement);
+
+ if(is_dynamic)
+ RAPTOR_FREE(raptor_statement, statement);
+}
+
+
+/**
+ * raptor_statement_print:
+ * @statement: #raptor_statement object to print
+ * @stream: FILE* stream
+ *
+ * Print a raptor_statement to a stream.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_statement_print(const raptor_statement * statement, FILE *stream)
+{
+ int rc = 0;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(statement, raptor_statement, 1);
+
+ fputc('[', stream);
+
+ if(!statement->subject) {
+ fputs("NULL", stream);
+ } else {
+ if(statement->subject->type == RAPTOR_TERM_TYPE_BLANK) {
+ fputs((const char*)statement->subject->value.blank.string, stream);
+ } else {
+#ifdef RAPTOR_DEBUG
+ if(!statement->subject->value.uri)
+ RAPTOR_FATAL1("Statement has NULL subject URI\n");
+#endif
+ fputs((const char*)raptor_uri_as_string(statement->subject->value.uri),
+ stream);
+ }
+ }
+
+ fputs(", ", stream);
+
+ if(statement->predicate) {
+#ifdef RAPTOR_DEBUG
+ if(!statement->predicate->value.uri)
+ RAPTOR_FATAL1("Statement has NULL predicate URI\n");
+#endif
+ fputs((const char*)raptor_uri_as_string(statement->predicate->value.uri),
+ stream);
+ } else {
+ fputs("NULL", stream);
+ }
+
+ fputs(", ", stream);
+
+ if(statement->object) {
+ if(statement->object->type == RAPTOR_TERM_TYPE_LITERAL) {
+ if(statement->object->value.literal.datatype) {
+ raptor_uri* dt_uri = statement->object->value.literal.datatype;
+ fputc('<', stream);
+ fputs((const char*)raptor_uri_as_string(dt_uri), stream);
+ fputc('>', stream);
+ }
+ fputc('"', stream);
+ fputs((const char*)statement->object->value.literal.string, stream);
+ fputc('"', stream);
+ } else if(statement->object->type == RAPTOR_TERM_TYPE_BLANK)
+ fputs((const char*)statement->object->value.blank.string, stream);
+ else {
+#ifdef RAPTOR_DEBUG
+ if(!statement->object->value.uri)
+ RAPTOR_FATAL1("Statement has NULL object URI\n");
+#endif
+ fputs((const char*)raptor_uri_as_string(statement->object->value.uri),
+ stream);
+ }
+ } else {
+ fputs("NULL", stream);
+ }
+
+ if(statement->graph) {
+ if(statement->graph->type == RAPTOR_TERM_TYPE_BLANK &&
+ statement->graph->value.blank.string) {
+ fputs(", ", stream);
+
+ fputs((const char*)statement->graph->value.blank.string, stream);
+ } else if(statement->graph->type == RAPTOR_TERM_TYPE_URI &&
+ statement->graph->value.uri) {
+ fputs(", ", stream);
+ fputs((const char*)raptor_uri_as_string(statement->graph->value.uri),
+ stream);
+ }
+ }
+
+ fputc(']', stream);
+
+ return rc;
+}
+
+
+/**
+ * raptor_statement_print_as_ntriples:
+ * @statement: #raptor_statement to print
+ * @stream: FILE* stream
+ *
+ * Print a raptor_statement in N-Triples form.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_statement_print_as_ntriples(const raptor_statement * statement,
+ FILE *stream)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(statement, raptor_statement, 1);
+
+ if(raptor_term_print_as_ntriples(statement->subject, stream))
+ return 1;
+
+ fputc(' ', stream);
+ if(raptor_term_print_as_ntriples(statement->predicate, stream))
+ return 1;
+
+ fputc(' ', stream);
+ if(raptor_term_print_as_ntriples(statement->object, stream))
+ return 1;
+
+ fputs(" .", stream);
+
+ return 0;
+}
+
+
+/**
+ * raptor_statement_compare:
+ * @s1: first statement
+ * @s2: second statement
+ *
+ * Compare a pair of #raptor_statement
+ *
+ * Uses raptor_term_compare() to check ordering between subjects,
+ * predicates and objects of statements.
+ *
+ * Return value: <0 if s1 is before s2, 0 if equal, >0 if s1 is after s2
+ */
+int
+raptor_statement_compare(const raptor_statement *s1,
+ const raptor_statement *s2)
+{
+ int d = 0;
+
+ if(!s1 || !s2) {
+ /* If one or both are NULL, return a stable comparison order */
+ ptrdiff_t pd = (s2 - s1);
+
+ /* copy the sign of the (unknown size) signed integer 'd' into an
+ * int result
+ */
+ return (pd > 0) - (pd < 0);
+ }
+
+ d = raptor_term_compare(s1->subject, s2->subject);
+ if(d)
+ return d;
+
+ /* predicates are URIs */
+ d = raptor_term_compare(s1->predicate, s2->predicate);
+ if(d)
+ return d;
+
+ /* objects are URIs or blank nodes or literals */
+ d = raptor_term_compare(s1->object, s2->object);
+ if(d)
+ return d;
+
+ /* graphs are URIs or blank nodes */
+ d = raptor_term_compare(s1->graph, s2->graph);
+
+ return d;
+}
+
+
+/**
+ * raptor_statement_equals:
+ * @s1: first statement
+ * @s2: second statement
+ *
+ * Compare a pair of #raptor_statement for equality
+ *
+ * Return value: non-0 if statements are equal
+ */
+int
+raptor_statement_equals(const raptor_statement* s1, const raptor_statement* s2)
+{
+ if(!s1 || !s2)
+ return 0;
+
+ if(!raptor_term_equals(s1->subject, s2->subject))
+ return 0;
+
+ if(!raptor_term_equals(s1->predicate, s2->predicate))
+ return 0;
+
+ if(!raptor_term_equals(s1->object, s2->object))
+ return 0;
+
+ return 1;
+}
diff --git a/src/raptor_stringbuffer.c b/src/raptor_stringbuffer.c
new file mode 100644
index 0000000..1d6ab0d
--- /dev/null
+++ b/src/raptor_stringbuffer.c
@@ -0,0 +1,907 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_stringbuffer.c - Stringbuffer class for growing strings
+ *
+ * Copyright (C) 2003-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include <sys/types.h>
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h> /* for abort() as used in errors */
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+#ifndef STANDALONE
+
+struct raptor_stringbuffer_node_s
+{
+ struct raptor_stringbuffer_node_s* next;
+ unsigned char *string;
+ size_t length;
+};
+typedef struct raptor_stringbuffer_node_s raptor_stringbuffer_node;
+
+
+struct raptor_stringbuffer_s
+{
+ /* Pointing to the first item in the list of nodes */
+ raptor_stringbuffer_node* head;
+ /* and the last */
+ raptor_stringbuffer_node* tail;
+
+ /* total length of the string */
+ size_t length;
+
+ /* frozen string if already calculated, or NULL if not present */
+ unsigned char *string;
+};
+
+
+/* prototypes for local functions */
+static int raptor_stringbuffer_append_string_common(raptor_stringbuffer* stringbuffer, const unsigned char *string, size_t length, int do_copy);
+
+
+/* functions implementing the stringbuffer api */
+
+/**
+ * raptor_new_stringbuffer:
+ *
+ * Create a new stringbuffer.
+ *
+ * Return value: pointer to a raptor_stringbuffer object or NULL on failure
+ **/
+raptor_stringbuffer*
+raptor_new_stringbuffer(void)
+{
+ raptor_stringbuffer* sb;
+
+ sb = RAPTOR_CALLOC(raptor_stringbuffer*, 1, sizeof(*sb));
+ return sb;
+}
+
+
+/**
+ * raptor_free_stringbuffer:
+ * @stringbuffer: stringbuffer object to destroy.
+ *
+ * Destroy a stringbuffer.
+ *
+ **/
+void
+raptor_free_stringbuffer(raptor_stringbuffer *stringbuffer)
+{
+ if(!stringbuffer)
+ return;
+
+ if(stringbuffer->head) {
+ raptor_stringbuffer_node *node = stringbuffer->head;
+
+ while(node) {
+ raptor_stringbuffer_node *next = node->next;
+
+ if(node->string)
+ RAPTOR_FREE(char*, node->string);
+ RAPTOR_FREE(raptor_stringbuffer_node, node);
+ node = next;
+ }
+ }
+
+ if(stringbuffer->string)
+ RAPTOR_FREE(char*, stringbuffer->string);
+
+ RAPTOR_FREE(raptor_stringbuffer, stringbuffer);
+}
+
+
+
+/**
+ * raptor_stringbuffer_append_string_common:
+ * @stringbuffer: raptor stringbuffer
+ * @string: string
+ * @length: length of string
+ * @do_copy: non-0 to copy the string
+ *
+ * Add a string to the stringbuffer.
+ *
+ * INTERNAL
+ *
+ * If @string is NULL or @length is 0, no work is performed.
+ *
+ * If @do_copy is non-0, the passed-in string is copied into new memory
+ * otherwise the stringbuffer becomes the owner of the string pointer
+ * and will free it when the stringbuffer is destroyed.
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_stringbuffer_append_string_common(raptor_stringbuffer* stringbuffer,
+ const unsigned char *string,
+ size_t length,
+ int do_copy)
+{
+ raptor_stringbuffer_node *node;
+
+ if(!string || !length)
+ return 0;
+
+ node = RAPTOR_MALLOC(raptor_stringbuffer_node*, sizeof(*node));
+ if(!node) {
+ if(!do_copy)
+ RAPTOR_FREE(char*, string);
+ return 1;
+ }
+
+ if(do_copy) {
+ /* Note this copy does not include the \0 character - not needed */
+ node->string = RAPTOR_MALLOC(unsigned char*, length);
+ if(!node->string) {
+ RAPTOR_FREE(raptor_stringbuffer_node, node);
+ return 1;
+ }
+ memcpy(node->string, string, length);
+ } else
+ node->string = (unsigned char*)string;
+ node->length = length;
+
+
+ if(stringbuffer->tail) {
+ stringbuffer->tail->next = node;
+ stringbuffer->tail = node;
+ } else
+ stringbuffer->head = stringbuffer->tail = node;
+ node->next = NULL;
+
+ if(stringbuffer->string) {
+ RAPTOR_FREE(char*, stringbuffer->string);
+ stringbuffer->string = NULL;
+ }
+ stringbuffer->length += length;
+
+ return 0;
+}
+
+
+
+
+/**
+ * raptor_stringbuffer_append_counted_string:
+ * @stringbuffer: raptor stringbuffer
+ * @string: string
+ * @length: length of string
+ * @do_copy: non-0 to copy the string
+ *
+ * Add a counted string to the stringbuffer.
+ *
+ * If @string is NULL or @length is 0, no work is performed.
+ *
+ * If @do_copy is non-0, the passed-in string is copied into new memory
+ * otherwise the stringbuffer becomes the owner of the string pointer
+ * and will free it when the stringbuffer is destroyed.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_stringbuffer_append_counted_string(raptor_stringbuffer* stringbuffer,
+ const unsigned char *string, size_t length,
+ int do_copy)
+{
+ if(!string || !length)
+ return 0;
+
+ return raptor_stringbuffer_append_string_common(stringbuffer, string, length, do_copy);
+}
+
+
+/**
+ * raptor_stringbuffer_append_string:
+ * @stringbuffer: raptor stringbuffer
+ * @string: string
+ * @do_copy: non-0 to copy the string
+ *
+ * Add a string to the stringbuffer.
+ *
+ * If @string is NULL, no work is performed.
+ *
+ * If @do_copy is non-0, the passed-in string is copied into new memory
+ * otherwise the stringbuffer becomes the owner of the string pointer
+ * and will free it when the stringbuffer is destroyed.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_stringbuffer_append_string(raptor_stringbuffer* stringbuffer,
+ const unsigned char *string, int do_copy)
+{
+ if(!string)
+ return 0;
+
+ return raptor_stringbuffer_append_string_common(stringbuffer, string, strlen((const char*)string), do_copy);
+}
+
+
+/**
+ * raptor_stringbuffer_append_decimal:
+ * @stringbuffer: raptor stringbuffer
+ * @integer: integer to format as decimal and add
+ *
+ * Add an integer in decimal to the stringbuffer.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_stringbuffer_append_decimal(raptor_stringbuffer* stringbuffer,
+ int integer)
+{
+ /* enough for 64 bit signed integer
+ * INT64_MAX is 9223372036854775807 (19 digits) + 1 for sign
+ */
+ unsigned char buf[20];
+ unsigned char *p;
+ int i = integer;
+ size_t length = 1;
+ if(integer < 0) {
+ length++;
+ i= -integer;
+ }
+ while(i /= 10)
+ length++;
+
+ p = buf+length-1;
+ i = integer;
+ if(i < 0)
+ i= -i;
+ do {
+ *p-- ='0'+(i %10);
+ i /= 10;
+ } while(i);
+ if(integer < 0)
+ *p= '-';
+
+ return raptor_stringbuffer_append_counted_string(stringbuffer, buf, length, 1);
+}
+
+
+/**
+ * raptor_stringbuffer_append_stringbuffer:
+ * @stringbuffer: #raptor_stringbuffer
+ * @append: #raptor_stringbuffer to append
+ *
+ * Add a stringbuffer to the stringbuffer.
+ *
+ * This function removes the content from the appending stringbuffer,
+ * making it empty and appends it to the supplied stringbuffer.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_stringbuffer_append_stringbuffer(raptor_stringbuffer* stringbuffer,
+ raptor_stringbuffer* append)
+{
+ raptor_stringbuffer_node *node = append->head;
+
+ if(!node)
+ return 0;
+
+ /* move all append nodes to stringbuffer */
+ if(stringbuffer->tail) {
+ stringbuffer->tail->next = node;
+ } else
+ stringbuffer->head = node;
+
+ stringbuffer->tail = append->tail;
+
+ /* adjust our length */
+ stringbuffer->length += append->length;
+ if(stringbuffer->string) {
+ RAPTOR_FREE(char*, stringbuffer->string);
+ stringbuffer->string = NULL;
+ }
+
+ /* zap append content */
+ append->head = append->tail = NULL;
+ append->length = 0;
+ if(append->string) {
+ RAPTOR_FREE(char*, append->string);
+ append->string = NULL;
+ }
+
+ return 0;
+}
+
+
+
+
+/**
+ * raptor_stringbuffer_prepend_string_common:
+ * @stringbuffer: raptor stringbuffer
+ * @string: string
+ * @length: length of string
+ * @do_copy: non-0 to copy the string
+ *
+ * Add a string to the start of a stringbuffer.
+ *
+ * INTERNAL
+ *
+ * If do_copy is non-0, the passed-in string is copied into new memory
+ * otherwise the stringbuffer becomes the owner of the string pointer
+ * and will free it when the stringbuffer is destroyed.
+ *
+ * Return value: non-0 on failure
+ **/
+static int
+raptor_stringbuffer_prepend_string_common(raptor_stringbuffer* stringbuffer,
+ const unsigned char *string, size_t length,
+ int do_copy)
+{
+ raptor_stringbuffer_node *node;
+
+ node = RAPTOR_MALLOC(raptor_stringbuffer_node*, sizeof(*node));
+ if(!node)
+ return 1;
+
+ if(do_copy) {
+ /* Note this copy does not include the \0 character - not needed */
+ node->string = RAPTOR_MALLOC(unsigned char*, length);
+ if(!node->string) {
+ RAPTOR_FREE(raptor_stringbuffer_node, node);
+ return 1;
+ }
+ memcpy(node->string, string, length);
+ } else
+ node->string = (unsigned char*)string;
+ node->length = length;
+
+
+ node->next = stringbuffer->head;
+ if(stringbuffer->head)
+ stringbuffer->head = node;
+ else
+ stringbuffer->head = stringbuffer->tail = node;
+
+ if(stringbuffer->string) {
+ RAPTOR_FREE(char*, stringbuffer->string);
+ stringbuffer->string = NULL;
+ }
+ stringbuffer->length += length;
+
+ return 0;
+}
+
+
+
+
+/**
+ * raptor_stringbuffer_prepend_counted_string:
+ * @stringbuffer: raptor stringbuffer
+ * @string: string
+ * @length: length of string
+ * @do_copy: non-0 to copy the string
+
+ * If do_copy is non-0, the passed-in string is copied into new memory
+ * otherwise the stringbuffer becomes the owner of the string pointer
+ * and will free it when the stringbuffer is destroyed.
+ *
+ * Add a string to the start of the stringbuffer.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_stringbuffer_prepend_counted_string(raptor_stringbuffer* stringbuffer,
+ const unsigned char *string, size_t length,
+ int do_copy)
+{
+ return raptor_stringbuffer_prepend_string_common(stringbuffer, string, length, do_copy);
+}
+
+
+/**
+ * raptor_stringbuffer_prepend_string:
+ * @stringbuffer: raptor stringbuffer
+ * @string: string
+ * @do_copy: non-0 to copy the string
+ *
+ * Add a string to the start of the stringbuffer.
+ *
+ * If do_copy is non-0, the passed-in string is copied into new memory
+ * otherwise the stringbuffer becomes the owner of the string pointer
+ * and will free it when the stringbuffer is destroyed.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_stringbuffer_prepend_string(raptor_stringbuffer* stringbuffer,
+ const unsigned char *string, int do_copy)
+{
+ return raptor_stringbuffer_prepend_string_common(stringbuffer, string, strlen((const char*)string), do_copy);
+}
+
+
+/**
+ * raptor_stringbuffer_length:
+ * @stringbuffer: raptor stringbuffer
+ *
+ * Return the stringbuffer length.
+ *
+ * Return value: size of stringbuffer
+ **/
+size_t
+raptor_stringbuffer_length(raptor_stringbuffer* stringbuffer)
+{
+ return stringbuffer->length;
+}
+
+
+
+/**
+ * raptor_stringbuffer_as_string:
+ * @stringbuffer: raptor stringbuffer
+ *
+ * Return the stringbuffer as a C string.
+ *
+ * Note: the return value is a to a shared string that the stringbuffer
+ * allocates and manages.
+ *
+ * Return value: NULL on failure or stringbuffer is empty, otherwise
+ * a pointer to a shared copy of the string.
+ **/
+unsigned char *
+raptor_stringbuffer_as_string(raptor_stringbuffer* stringbuffer)
+{
+ raptor_stringbuffer_node *node;
+ unsigned char *p;
+
+ if(!stringbuffer->length)
+ return NULL;
+ if(stringbuffer->string)
+ return stringbuffer->string;
+
+ stringbuffer->string = RAPTOR_MALLOC(unsigned char*, stringbuffer->length + 1);
+ if(!stringbuffer->string)
+ return NULL;
+
+ node = stringbuffer->head;
+ p = stringbuffer->string;
+ while(node) {
+ memcpy(p, node->string, node->length);
+ p+= node->length;
+ node = node->next;
+ }
+ *p='\0';
+ return stringbuffer->string;
+}
+
+
+/**
+ * raptor_stringbuffer_copy_to_string:
+ * @stringbuffer: raptor stringbuffer
+ * @string: output string
+ * @length: size of output string
+ *
+ * Copy the stringbuffer into a string.
+ *
+ * Copies the underlying string to a pre-allocated buffer. The
+ * output string is always '\0' terminated.
+ *
+ * Return value: non-0 on failure such as stringbuffer is empty, buffer is too small
+ **/
+int
+raptor_stringbuffer_copy_to_string(raptor_stringbuffer* stringbuffer,
+ unsigned char *string, size_t length)
+{
+ raptor_stringbuffer_node *node;
+ unsigned char *p;
+
+ if(!string || length < 1)
+ return 1;
+
+ if(!stringbuffer->length)
+ return 0;
+
+ p = string;
+ for(node = stringbuffer->head; node; node = node->next) {
+ if(node->length > length) {
+ p[-1]='\0';
+ return 1;
+ }
+ memcpy(p, node->string, node->length);
+ p+= node->length;
+ length-= node->length;
+ }
+ *p='\0';
+ return 0;
+}
+
+
+
+/**
+ * raptor_stringbuffer_append_hexadecimal:
+ * @stringbuffer: raptor stringbuffer
+ * @hex: integer to format
+ *
+ * Add an integer formatted in hexdecimal (base 16) to the stringbuffer.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_stringbuffer_append_hexadecimal(raptor_stringbuffer* stringbuffer,
+ int hex)
+{
+ unsigned char buf[2];
+
+ if(hex < 0 || hex > 0xF)
+ return 1;
+
+ *buf = (hex < 10) ? ('0' + hex) : ('A' + hex - 10);
+ buf[1] = '\0';
+
+ return raptor_stringbuffer_append_counted_string(stringbuffer, buf, 1, 1);
+}
+
+
+/* RFC3986 Unreserved */
+#define IS_URI_UNRESERVED(c) ( (c >= 'A' && c <= 'F') || \
+ (c >= 'a' && c <= 'f') || \
+ (c >= '0' && c <= '9') || \
+ (c == '-' || c == '.' || c == '_' || c == '~') )
+#define IS_URI_SAFE(c) (IS_URI_UNRESERVED(c))
+
+
+/**
+ * raptor_stringbuffer_append_uri_escaped_counted_string:
+ * @sb: raptor stringbuffer
+ * @string: string
+ * @length: length of string
+ * @space_is_plus: if non-0, escape spaces as '+' otherwise percent-encode them
+ *
+ * Add a URI-escaped version of @string to the stringbuffer.
+ *
+ * If @string is NULL or @length is 0, no work is performed.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_stringbuffer_append_uri_escaped_counted_string(raptor_stringbuffer* sb,
+ const char* string,
+ size_t length,
+ int space_is_plus)
+{
+ unsigned int i;
+ unsigned char buf[2];
+ buf[1] = '\0';
+
+ if(!string || !length)
+ return 0;
+
+ for(i = 0; i < length; i++) {
+ int c = string[i];
+ if(!c)
+ break;
+
+ if(IS_URI_SAFE(c)) {
+ *buf = c;
+
+ if(raptor_stringbuffer_append_counted_string(sb, buf, 1, 1))
+ return 1;
+ } else if (c == ' ' && space_is_plus) {
+ *buf = '+';
+
+ if(raptor_stringbuffer_append_counted_string(sb, buf, 1, 1))
+ return 1;
+ } else {
+ *buf = '%';
+ if(raptor_stringbuffer_append_counted_string(sb, buf, 1, 1))
+ return 1;
+
+ if(raptor_stringbuffer_append_hexadecimal(sb, (c & 0xf0) >> 4))
+ return 1;
+
+ if(raptor_stringbuffer_append_hexadecimal(sb, (c & 0x0f)))
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+
+#endif
+
+
+
+#ifdef STANDALONE
+
+/* one more prototype */
+int main(int argc, char *argv[]);
+
+
+int
+main(int argc, char *argv[])
+{
+ const char *program = raptor_basename(argv[0]);
+#define TEST_ITEMS_COUNT 9
+ const char *items[TEST_ITEMS_COUNT] = { "the", "quick" ,"brown", "fox", "jumps", "over", "the", "lazy", "dog" };
+ const char *items_string = "thequickbrownfoxjumpsoverthelazydog";
+ const size_t items_len = 35;
+ const char *test_integer_string = "abcd";
+#define TEST_INTEGERS_COUNT 7
+ const int test_integers[TEST_INTEGERS_COUNT]={ 0, 1, -1, 11, 1234, 12345, -12345 };
+ const char *test_integer_results[TEST_INTEGERS_COUNT]={ "abcd0", "abcd1", "abcd-1", "abcd11", "abcd1234", "abcd12345", "abcd-12345" };
+ raptor_stringbuffer *sb;
+ unsigned char *str;
+ size_t len;
+ int i = 0;
+ raptor_stringbuffer *sb1, *sb2;
+#define TEST_APPEND_COUNT 2
+ const char *test_append_results[TEST_APPEND_COUNT]={ "thebrownjumpsthedog", "quickfoxoverlazy" };
+ const char *test_append_results_total="thebrownjumpsthedogquickfoxoverlazy";
+#define COPY_STRING_BUFFER_SIZE 100
+ unsigned char *copy_string;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Creating string buffer\n", program);
+#endif
+
+ /* test appending */
+
+ sb = raptor_new_stringbuffer();
+ if(!sb) {
+ fprintf(stderr, "%s: Failed to create string buffer\n", program);
+ exit(1);
+ }
+
+ for(i = 0; i < TEST_ITEMS_COUNT; i++) {
+ int rc;
+ len = strlen(items[i]);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Adding string buffer item '%s'\n", program, items[i]);
+#endif
+
+ rc = raptor_stringbuffer_append_counted_string(sb, (unsigned char*)items[i], len, 1);
+ if(rc) {
+ fprintf(stderr, "%s: Adding string buffer item %d '%s' failed, returning error %d\n",
+ program, i, items[i], rc);
+ exit(1);
+ }
+ }
+
+ len = raptor_stringbuffer_length(sb);
+ if(len != items_len) {
+ fprintf(stderr, "%s: string buffer len is %d, expected %d\n", program,
+ (int)len, (int)items_len);
+ exit(1);
+ }
+
+ str = raptor_stringbuffer_as_string(sb);
+ if(strcmp((const char*)str, items_string)) {
+ fprintf(stderr, "%s: string buffer contains '%s', expected '%s'\n",
+ program, str, items_string);
+ exit(1);
+ }
+
+ raptor_free_stringbuffer(sb);
+
+
+ /* test prepending */
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Creating string buffer\n", program);
+#endif
+
+ sb = raptor_new_stringbuffer();
+ if(!sb) {
+ fprintf(stderr, "%s: Failed to create string buffer\n", program);
+ exit(1);
+ }
+
+ for(i = TEST_ITEMS_COUNT-1; i>=0 ; i--) {
+ int rc;
+ len = strlen(items[i]);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Prepending string buffer item '%s'\n", program, items[i]);
+#endif
+
+ rc = raptor_stringbuffer_prepend_counted_string(sb, (unsigned char*)items[i], len, 1);
+ if(rc) {
+ fprintf(stderr, "%s: Prepending string buffer item %d '%s' failed, returning error %d\n",
+ program, i, items[i], rc);
+ exit(1);
+ }
+ }
+
+ len = raptor_stringbuffer_length(sb);
+ if(len != items_len) {
+ fprintf(stderr, "%s: string buffer len is %d, expected %d\n", program,
+ (int)len, (int)items_len);
+ exit(1);
+ }
+
+ str = raptor_stringbuffer_as_string(sb);
+ if(strcmp((const char*)str, items_string)) {
+ fprintf(stderr, "%s: string buffer contains '%s', expected '%s'\n",
+ program, str, items_string);
+ exit(1);
+ }
+
+
+ /* test adding integers */
+
+ for(i = 0; i < TEST_INTEGERS_COUNT; i++) {
+ raptor_stringbuffer *isb = raptor_new_stringbuffer();
+ if(!isb) {
+ fprintf(stderr, "%s: Failed to create string buffer\n", program);
+ exit(1);
+ }
+
+ raptor_stringbuffer_append_string(isb,
+ (const unsigned char*)test_integer_string, 1);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Adding decimal integer %d to buffer\n", program, test_integers[i]);
+#endif
+
+ raptor_stringbuffer_append_decimal(isb, test_integers[i]);
+
+ str = raptor_stringbuffer_as_string(isb);
+ if(strcmp((const char*)str, test_integer_results[i])) {
+ fprintf(stderr, "%s: string buffer contains '%s', expected '%s'\n",
+ program, str, test_integer_results[i]);
+ exit(1);
+ }
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Freeing string buffer\n", program);
+#endif
+ raptor_free_stringbuffer(isb);
+ }
+
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Creating two stringbuffers to join\n", program);
+#endif
+
+ sb1 = raptor_new_stringbuffer();
+ if(!sb1) {
+ fprintf(stderr, "%s: Failed to create string buffer\n", program);
+ exit(1);
+ }
+ sb2 = raptor_new_stringbuffer();
+ if(!sb2) {
+ fprintf(stderr, "%s: Failed to create string buffer\n", program);
+ exit(1);
+ }
+
+ for(i = 0; i < TEST_ITEMS_COUNT; i++) {
+ raptor_stringbuffer *sbx;
+ int rc;
+ len = strlen(items[i]);
+
+ sbx = (i % 2) ? sb2 : sb1;
+ rc = raptor_stringbuffer_append_counted_string(sbx, (unsigned char*)items[i], len, 1);
+ if(rc) {
+ fprintf(stderr, "%s: Adding string buffer item %d '%s' failed, returning error %d\n",
+ program, i, items[i], rc);
+ exit(1);
+ }
+ }
+
+ if(1) {
+ int rc;
+
+ rc = raptor_stringbuffer_append_counted_string(sb1, (unsigned char*)"X", 0, 1);
+ if(rc) {
+ fprintf(stderr, "%s: Adding 0-length counted string failed, returning error %d\n",
+ program, rc);
+ exit(1);
+ }
+ rc = raptor_stringbuffer_append_string(sb1, NULL, 1);
+ if(rc) {
+ fprintf(stderr, "%s: Adding NULL string failed, returning error %d\n",
+ program, rc);
+ exit(1);
+ }
+ }
+
+ str = raptor_stringbuffer_as_string(sb1);
+ if(strcmp((const char*)str, test_append_results[0])) {
+ fprintf(stderr, "%s: string buffer sb1 contains '%s', expected '%s'\n",
+ program, str, test_append_results[0]);
+ exit(1);
+ }
+ str = raptor_stringbuffer_as_string(sb2);
+ if(strcmp((const char*)str, test_append_results[1])) {
+ fprintf(stderr, "%s: string buffer sb2 contains '%s', expected '%s'\n",
+ program, str, test_append_results[1]);
+ exit(1);
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Appended two stringbuffers\n", program);
+#endif
+
+ if(raptor_stringbuffer_append_stringbuffer(sb1, sb2)) {
+ fprintf(stderr, "%s: Failed to append string buffer\n", program);
+ exit(1);
+ }
+
+ str = raptor_stringbuffer_as_string(sb1);
+ if(strcmp((const char*)str, test_append_results_total)) {
+ fprintf(stderr, "%s: appended string buffer contains '%s', expected '%s'\n",
+ program, str, test_append_results_total);
+ exit(1);
+ }
+
+ len = raptor_stringbuffer_length(sb2);
+ if(len) {
+ fprintf(stderr, "%s: appended string buffer is length %d, not empty'\n",
+ program, (int)len);
+ exit(1);
+ }
+
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Copying string buffer to string\n", program);
+#endif
+
+ copy_string = (unsigned char*)malloc(COPY_STRING_BUFFER_SIZE);
+ if(raptor_stringbuffer_copy_to_string(sb1, copy_string, COPY_STRING_BUFFER_SIZE)) {
+ fprintf(stderr, "%s: copying string buffer to string failed\n",
+ program);
+ exit(1);
+ }
+ if(strcmp((const char*)copy_string, test_append_results_total)) {
+ fprintf(stderr, "%s: copied string buffer contains '%s', expected '%s'\n",
+ program, copy_string, test_append_results_total);
+ exit(1);
+ }
+ free(copy_string);
+
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Freeing string buffers\n", program);
+#endif
+ raptor_free_stringbuffer(sb1);
+ raptor_free_stringbuffer(sb2);
+ raptor_free_stringbuffer(sb);
+
+ /* keep gcc -Wall happy */
+ return(0);
+}
+
+#endif
diff --git a/src/raptor_syntax_description.c b/src/raptor_syntax_description.c
new file mode 100644
index 0000000..7e135a9
--- /dev/null
+++ b/src/raptor_syntax_description.c
@@ -0,0 +1,114 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_syntax_description.c - Raptor syntax description API
+ *
+ * Copyright (C) 2010, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+static unsigned int
+count_strings_array(const char* const * array)
+{
+ unsigned int i;
+
+ if(!array)
+ return 0;
+
+ for(i = 0; (array[i]); i++)
+ ;
+
+ return i;
+}
+
+
+static unsigned int
+count_mime_types_array(const raptor_type_q* array)
+{
+ unsigned int i;
+
+ if(!array)
+ return 0;
+
+ for(i = 0; (array[i].mime_type); i++)
+ ;
+
+ return i;
+}
+
+
+/**
+ * raptor_syntax_description_validate:
+ * @desc: description
+ *
+ * Validate a syntax description has the required fields (name, labels) and update counts
+ *
+ * Returns: non-0 on failure
+ **/
+int
+raptor_syntax_description_validate(raptor_syntax_description* desc)
+{
+ if(!desc || !desc->names || !desc->names[0] || !desc->label)
+ return 1;
+
+#ifdef RAPTOR_DEBUG
+ /* Maintainer only check of static data */
+ if(desc->mime_types) {
+ unsigned int i;
+ const raptor_type_q* type_q = NULL;
+
+ for(i = 0;
+ (type_q = &desc->mime_types[i]) && type_q->mime_type;
+ i++) {
+ size_t len = strlen(type_q->mime_type);
+ if(len != type_q->mime_type_len) {
+ fprintf(stderr,
+ "Format %s mime type %s actual len %d static len %d\n",
+ desc->names[0], type_q->mime_type,
+ (int)len, (int)type_q->mime_type_len);
+ }
+ }
+ }
+#endif
+
+ desc->names_count = count_strings_array(desc->names);
+ if(!desc->names_count)
+ return 1;
+
+ desc->mime_types_count = count_mime_types_array(desc->mime_types);
+ desc->uri_strings_count = count_strings_array(desc->uri_strings);
+
+ return 0;
+}
diff --git a/src/raptor_term.c b/src/raptor_term.c
new file mode 100644
index 0000000..9c43ec9
--- /dev/null
+++ b/src/raptor_term.c
@@ -0,0 +1,967 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_term.c - Raptor terms
+ *
+ * Copyright (C) 2010, David Beckett http://www.dajobe.org/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+#ifndef STANDALONE
+
+/**
+ * raptor_new_term_from_uri:
+ * @world: raptor world
+ * @uri: uri
+ *
+ * Constructor - create a new URI statement term
+ *
+ * Takes a copy (reference) of the passed in @uri
+ *
+ * Return value: new term or NULL on failure
+*/
+raptor_term*
+raptor_new_term_from_uri(raptor_world* world, raptor_uri* uri)
+{
+ raptor_term *t;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!uri)
+ return NULL;
+
+ raptor_world_open(world);
+
+ t = RAPTOR_CALLOC(raptor_term*, 1, sizeof(*t));
+ if(!t)
+ return NULL;
+
+ t->usage = 1;
+ t->world = world;
+ t->type = RAPTOR_TERM_TYPE_URI;
+ t->value.uri = raptor_uri_copy(uri);
+
+ return t;
+}
+
+
+/**
+ * raptor_new_term_from_counted_uri_string:
+ * @world: raptor world
+ * @uri_string: UTF-8 encoded URI string.
+ * @length: length of URI string
+ *
+ * Constructor - create a new URI statement term from a UTF-8 encoded Unicode string
+ *
+ * Note: The @uri_string need not be NULL terminated - a NULL will be
+ * added to the copied string used.
+ *
+ * Return value: new term or NULL on failure
+*/
+raptor_term*
+raptor_new_term_from_counted_uri_string(raptor_world* world,
+ const unsigned char *uri_string,
+ size_t length)
+{
+ raptor_term *t;
+ raptor_uri* uri;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ uri = raptor_new_uri_from_counted_string(world, uri_string, length);
+ if(!uri)
+ return NULL;
+
+ t = raptor_new_term_from_uri(world, uri);
+
+ raptor_free_uri(uri);
+
+ return t;
+}
+
+
+/**
+ * raptor_new_term_from_uri_string:
+ * @world: raptor world
+ * @uri_string: UTF-8 encoded URI string.
+ *
+ * Constructor - create a new URI statement term from a UTF-8 encoded Unicode string
+ *
+ * Return value: new term or NULL on failure
+*/
+raptor_term*
+raptor_new_term_from_uri_string(raptor_world* world,
+ const unsigned char *uri_string)
+{
+ raptor_term *t;
+ raptor_uri* uri;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ uri = raptor_new_uri(world, uri_string);
+ if(!uri)
+ return NULL;
+
+ t = raptor_new_term_from_uri(world, uri);
+
+ raptor_free_uri(uri);
+
+ return t;
+}
+
+
+/**
+ * raptor_new_term_from_counted_literal:
+ * @world: raptor world
+ * @literal: UTF-8 encoded literal string (or NULL for empty literal)
+ * @literal_len: length of literal
+ * @datatype: literal datatype URI (or NULL)
+ * @language: literal language (or NULL for no language)
+ * @language_len: literal language length
+ *
+ * Constructor - create a new literal statement term from a counted UTF-8 encoded literal string
+ *
+ * Takes copies of the passed in @literal, @datatype, @language
+ *
+ * Only one of @language or @datatype may be given. If both are
+ * given, NULL is returned. If @language is the empty string, it is
+ * the equivalent to NULL.
+ *
+ * Note: The @literal need not be NULL terminated - a NULL will be
+ * added to the copied string used.
+ *
+ * Return value: new term or NULL on failure
+ */
+raptor_term*
+raptor_new_term_from_counted_literal(raptor_world* world,
+ const unsigned char* literal,
+ size_t literal_len,
+ raptor_uri* datatype,
+ const unsigned char* language,
+ unsigned char language_len)
+{
+ raptor_term *t;
+ unsigned char* new_literal = NULL;
+ unsigned char* new_language = NULL;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ if(language && !*language)
+ language = NULL;
+
+ if(language && datatype)
+ return NULL;
+
+
+ new_literal = RAPTOR_MALLOC(unsigned char*, literal_len + 1);
+ if(!new_literal)
+ return NULL;
+
+ if(!literal || !*literal)
+ literal_len = 0;
+
+ if(literal_len) {
+ memcpy(new_literal, literal, literal_len);
+ new_literal[literal_len] = '\0';
+ } else
+ *new_literal = '\0';
+
+ if(language) {
+ new_language = RAPTOR_MALLOC(unsigned char*, language_len + 1);
+ if(!new_language) {
+ RAPTOR_FREE(char*, new_literal);
+ return NULL;
+ }
+ memcpy(new_language, language, language_len);
+ new_language[language_len] = '\0';
+ } else
+ language_len = 0;
+
+ if(datatype)
+ datatype = raptor_uri_copy(datatype);
+
+
+ t = RAPTOR_CALLOC(raptor_term*, 1, sizeof(*t));
+ if(!t) {
+ if(new_literal)
+ RAPTOR_FREE(char*, new_literal);
+ if(new_language)
+ RAPTOR_FREE(char*, new_language);
+ if(datatype)
+ raptor_free_uri(datatype);
+ return NULL;
+ }
+ t->usage = 1;
+ t->world = world;
+ t->type = RAPTOR_TERM_TYPE_LITERAL;
+ t->value.literal.string = new_literal;
+ t->value.literal.string_len = RAPTOR_LANG_LEN_FROM_INT(literal_len);
+ t->value.literal.language = new_language;
+ t->value.literal.language_len = language_len;
+ t->value.literal.datatype = datatype;
+
+ return t;
+}
+
+
+/**
+ * raptor_new_term_from_literal:
+ * @world: raptor world
+ * @literal: UTF-8 encoded literal string (or NULL for empty literal)
+ * @datatype: literal datatype URI (or NULL)
+ * @language: literal language (or NULL)
+ *
+ * Constructor - create a new literal statement term
+ *
+ * Takes copies of the passed in @literal, @datatype, @language
+ *
+ * Only one of @language or @datatype may be given. If both are
+ * given, NULL is returned. If @language is the empty string, it is
+ * the equivalent to NULL.
+ *
+ * Return value: new term or NULL on failure
+*/
+raptor_term*
+raptor_new_term_from_literal(raptor_world* world,
+ const unsigned char* literal,
+ raptor_uri* datatype,
+ const unsigned char* language)
+{
+ size_t literal_len = 0;
+ size_t language_len = 0;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ if(literal)
+ literal_len = strlen(RAPTOR_GOOD_CAST(const char*, literal));
+
+ if(language)
+ language_len = strlen(RAPTOR_GOOD_CAST(const char*, language));
+
+ return raptor_new_term_from_counted_literal(world, literal, literal_len,
+ datatype, language,
+ RAPTOR_BAD_CAST(unsigned char, language_len));
+}
+
+
+/**
+ * raptor_new_term_from_counted_blank:
+ * @world: raptor world
+ * @blank: UTF-8 encoded blank node identifier (or NULL)
+ * @length: length of identifier (or 0)
+ *
+ * Constructor - create a new blank node statement term from a counted UTF-8 encoded blank node ID
+ *
+ * Takes a copy of the passed in @blank
+ *
+ * If @blank is NULL, creates a new internal identifier and uses it.
+ * This will use the handler set with
+ * raptor_world_set_generate_bnodeid_parameters()
+ *
+ * Note: The @blank need not be NULL terminated - a NULL will be
+ * added to the copied string used.
+ *
+ * Return value: new term or NULL on failure
+*/
+raptor_term*
+raptor_new_term_from_counted_blank(raptor_world* world,
+ const unsigned char* blank, size_t length)
+{
+ raptor_term *t;
+ unsigned char* new_id;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ if (blank) {
+ new_id = RAPTOR_MALLOC(unsigned char*, length + 1);
+ if(!new_id)
+ return NULL;
+ memcpy(new_id, blank, length);
+ new_id[length] = '\0';
+ } else {
+ new_id = raptor_world_generate_bnodeid(world);
+ length = strlen((const char*)new_id);
+ }
+
+ t = RAPTOR_CALLOC(raptor_term*, 1, sizeof(*t));
+ if(!t) {
+ RAPTOR_FREE(char*, new_id);
+ return NULL;
+ }
+
+ t->usage = 1;
+ t->world = world;
+ t->type = RAPTOR_TERM_TYPE_BLANK;
+ t->value.blank.string = new_id;
+ t->value.blank.string_len = RAPTOR_BAD_CAST(int, length);
+
+ return t;
+}
+
+
+/**
+ * raptor_new_term_from_blank:
+ * @world: raptor world
+ * @blank: UTF-8 encoded blank node identifier (or NULL)
+ *
+ * Constructor - create a new blank node statement term from a UTF-8 encoded blank node ID
+ *
+ * Takes a copy of the passed in @blank
+ *
+ * If @blank is NULL, creates a new internal identifier and uses it.
+ * This will use the handler set with
+ * raptor_world_set_generate_bnodeid_parameters()
+ *
+ * Return value: new term or NULL on failure
+*/
+raptor_term*
+raptor_new_term_from_blank(raptor_world* world, const unsigned char* blank)
+{
+ size_t length = 0;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ if (blank)
+ length = strlen((const char*)blank);
+
+ return raptor_new_term_from_counted_blank(world, blank, length);
+}
+
+
+/**
+ * raptor_term_copy:
+ * @term: raptor term
+ *
+ * Copy constructor - get a copy of a statement term
+ *
+ * Return value: new term object or NULL on failure
+ */
+raptor_term*
+raptor_term_copy(raptor_term* term)
+{
+ if(!term)
+ return NULL;
+
+ term->usage++;
+ return term;
+}
+
+
+/**
+ * raptor_free_term:
+ * @term: #raptor_term object
+ *
+ * Destructor - destroy a raptor_term object.
+ *
+ **/
+void
+raptor_free_term(raptor_term *term)
+{
+ if(!term)
+ return;
+
+ if(--term->usage)
+ return;
+
+ switch(term->type) {
+ case RAPTOR_TERM_TYPE_URI:
+ if(term->value.uri) {
+ raptor_free_uri(term->value.uri);
+ term->value.uri = NULL;
+ }
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ if(term->value.blank.string) {
+ RAPTOR_FREE(char*, term->value.blank.string);
+ term->value.blank.string = NULL;
+ }
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ if(term->value.literal.string) {
+ RAPTOR_FREE(char*, term->value.literal.string);
+ term->value.literal.string = NULL;
+ }
+
+ if(term->value.literal.datatype) {
+ raptor_free_uri(term->value.literal.datatype);
+ term->value.literal.datatype = NULL;
+ }
+
+ if(term->value.literal.language) {
+ RAPTOR_FREE(char*, term->value.literal.language);
+ term->value.literal.language = NULL;
+ }
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ break;
+ }
+
+ RAPTOR_FREE(term, term);
+}
+
+
+/**
+ * raptor_term_to_counted_string:
+ * @term: #raptor_term
+ * @len_p: Pointer to location to store length of new string (if not NULL)
+ *
+ * Turns part of raptor term into a N-Triples format counted string.
+ *
+ * Turns the given @term into an N-Triples escaped string using all the
+ * escapes as defined in http://www.w3.org/TR/rdf-testcases/#ntriples
+ *
+ * This function uses raptor_term_ntriples_write() to write to an
+ * #raptor_iostream which is the prefered way to write formatted
+ * output.
+ *
+ * Return value: the new string or NULL on failure. The length of
+ * the new string is returned in *@len_p if len_p is not NULL.
+ **/
+unsigned char*
+raptor_term_to_counted_string(raptor_term *term, size_t* len_p)
+{
+ raptor_iostream *iostr;
+ void *string = NULL;
+ int rc;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(term, raptor_term, NULL);
+
+ iostr = raptor_new_iostream_to_string(term->world,
+ &string, len_p, NULL);
+ if(!iostr)
+ return NULL;
+ rc = raptor_term_ntriples_write(term, iostr);
+ raptor_free_iostream(iostr);
+
+ if(rc) {
+ if(string) {
+ RAPTOR_FREE(char*, string);
+ string = NULL;
+ }
+ }
+
+ return (unsigned char *)string;
+}
+
+
+/**
+ * raptor_term_to_string:
+ * @term: #raptor_term
+ *
+ * Turns part of raptor statement into a N-Triples format string.
+ *
+ * Turns the given @term into an N-Triples escaped string using all the
+ * escapes as defined in http://www.w3.org/TR/rdf-testcases/#ntriples
+ *
+ * Return value: the new string or NULL on failure.
+ **/
+unsigned char*
+raptor_term_to_string(raptor_term *term)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(term, raptor_term, NULL);
+
+ return raptor_term_to_counted_string(term, NULL);
+}
+
+
+int
+raptor_term_print_as_ntriples(const raptor_term *term, FILE* stream)
+{
+ int rc = 0;
+ raptor_iostream* iostr;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(term, raptor_term, 1);
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(stream, FILE*, 1);
+
+ iostr = raptor_new_iostream_to_file_handle(term->world, stream);
+ if(!iostr)
+ return 1;
+
+ rc = raptor_term_ntriples_write(term, iostr);
+
+ raptor_free_iostream(iostr);
+
+ return rc;
+}
+
+
+/**
+ * raptor_term_equals:
+ * @t1: first term
+ * @t2: second term
+ *
+ * Compare a pair of #raptor_term for equality
+ *
+ * Return value: non-0 if the terms are equal
+ */
+int
+raptor_term_equals(raptor_term* t1, raptor_term* t2)
+{
+ int d = 0;
+
+ if(!t1 || !t2)
+ return 0;
+
+ if(t1->type != t2->type)
+ return 0;
+
+ if(t1 == t2)
+ return 1;
+
+ switch(t1->type) {
+ case RAPTOR_TERM_TYPE_URI:
+ d = raptor_uri_equals(t1->value.uri, t2->value.uri);
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ if(t1->value.blank.string_len != t2->value.blank.string_len)
+ /* different lengths */
+ break;
+
+ d = !strcmp((const char*)t1->value.blank.string,
+ (const char*)t2->value.blank.string);
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ if(t1->value.literal.string_len != t2->value.literal.string_len)
+ /* different lengths */
+ break;
+
+ d = !strcmp((const char*)t1->value.literal.string,
+ (const char*)t2->value.literal.string);
+ if(!d)
+ break;
+
+ if(t1->value.literal.language && t2->value.literal.language) {
+ /* both have a language */
+ d = !strcmp((const char*)t1->value.literal.language,
+ (const char*)t2->value.literal.language);
+ if(!d)
+ break;
+ } else if(t1->value.literal.language || t2->value.literal.language) {
+ /* only one has a language - different */
+ d = 0;
+ break;
+ }
+
+ if(t1->value.literal.datatype && t2->value.literal.datatype) {
+ /* both have a datatype */
+ d = raptor_uri_equals(t1->value.literal.datatype,
+ t2->value.literal.datatype);
+ } else if(t1->value.literal.datatype || t2->value.literal.datatype) {
+ /* only one has a datatype - different */
+ d = 0;
+ }
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ break;
+ }
+
+ return d;
+}
+
+
+/**
+ * raptor_term_compare:
+ * @t1: first term
+ * @t2: second term
+ *
+ * Compare a pair of #raptor_term
+ *
+ * If types are different, the #raptor_term_type order is used.
+ *
+ * Resource and datatype URIs are compared with raptor_uri_compare(),
+ * blank nodes and literals with strcmp(). If one literal has no
+ * language, it is earlier than one with a language. If one literal
+ * has no datatype, it is earlier than one with a datatype.
+ *
+ * Return value: <0 if t1 is before t2, 0 if equal, >0 if t1 is after t2
+ */
+int
+raptor_term_compare(const raptor_term *t1, const raptor_term *t2)
+{
+ int d = 0;
+
+ /* check for NULL terms */
+ if(!t1 || !t2) {
+ if(!t1 && !t2)
+ return 0; /* both NULL */
+
+ /* place NULLs before any other term */
+ return t1 ? 1 : -1;
+ }
+
+ if(t1->type != t2->type)
+ return (t1->type - t2->type);
+
+ switch(t1->type) {
+ case RAPTOR_TERM_TYPE_URI:
+ d = raptor_uri_compare(t1->value.uri, t2->value.uri);
+ break;
+
+ case RAPTOR_TERM_TYPE_BLANK:
+ d = strcmp((const char*)t1->value.blank.string,
+ (const char*)t2->value.blank.string);
+ break;
+
+ case RAPTOR_TERM_TYPE_LITERAL:
+ d = strcmp((const char*)t1->value.literal.string,
+ (const char*)t2->value.literal.string);
+ if(d)
+ break;
+
+ if(t1->value.literal.language && t2->value.literal.language) {
+ /* both have a language */
+ d = strcmp((const char*)t1->value.literal.language,
+ (const char*)t2->value.literal.language);
+ } else if(t1->value.literal.language || t2->value.literal.language)
+ /* only one has a language; the language-less one is earlier */
+ d = (!t1->value.literal.language ? -1 : 1);
+ if(d)
+ break;
+
+ if(t1->value.literal.datatype && t2->value.literal.datatype) {
+ /* both have a datatype */
+ d = raptor_uri_compare(t1->value.literal.datatype,
+ t2->value.literal.datatype);
+ } else if(t1->value.literal.datatype || t2->value.literal.datatype)
+ /* only one has a datatype; the datatype-less one is earlier */
+ d = (!t1->value.literal.datatype ? -1 : 1);
+ break;
+
+ case RAPTOR_TERM_TYPE_UNKNOWN:
+ default:
+ break;
+ }
+
+ return d;
+}
+#endif
+
+
+
+#ifdef STANDALONE
+
+/* one more prototype */
+int main(int argc, char *argv[]);
+
+static const unsigned char *uri_string1 = (const unsigned char *)"http://http://www.dajobe.org/";
+static unsigned int uri_string1_len = 29; /* strlen(uri_string1) */
+static raptor_term_type uri_string1_type = RAPTOR_TERM_TYPE_URI;
+static const unsigned char *uri_string2 = (const unsigned char *)"http://www.example.org/";
+static unsigned int uri_string2_len = 23; /* strlen(uri_string2) */
+static raptor_term_type uri_string2_type = RAPTOR_TERM_TYPE_URI;
+static const unsigned char *literal_string1 = (const unsigned char *)"Dave Beckett";
+static unsigned int literal_string1_len = 12; /* strlen(literal_string1) */
+static raptor_term_type literal_string1_type = RAPTOR_TERM_TYPE_LITERAL;
+static const unsigned char *bnodeid1 = (const unsigned char *)"abc123";
+static unsigned int bnodeid1_len = 6; /* strlen(bnode_id1) */
+static raptor_term_type bnodeid1_type = RAPTOR_TERM_TYPE_BLANK;
+static const unsigned char* language1 = (const unsigned char*)"en";
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world;
+ const char *program = raptor_basename(argv[0]);
+ int rc = 0;
+ raptor_term* term1 = NULL; /* URI string 1 */
+ raptor_term* term2 = NULL; /* literal string1 */
+ raptor_term* term3 = NULL; /* blank node 1 */
+ raptor_term* term4 = NULL; /* URI string 2 */
+ raptor_term* term5 = NULL; /* URI string 1 again */
+ raptor_uri* uri1;
+ unsigned char* uri_str;
+ size_t uri_len;
+
+
+ world = raptor_new_world();
+ if(!world || raptor_world_open(world))
+ exit(1);
+
+
+ /* check a term for NULL URI fails */
+ term1 = raptor_new_term_from_uri(world, NULL);
+ if(term1) {
+ fprintf(stderr, "%s: raptor_new_uri(NULL) returned object rather than failing\n", program);
+ rc = 1;
+ goto tidy;
+ }
+
+ /* check a term for non-NULL URI succeeds */
+ uri1 = raptor_new_uri(world, uri_string1);
+ if(!uri1) {
+ fprintf(stderr, "%s: raptor_new_uri(%s) failed\n", program, uri_string1);
+ rc = 1;
+ goto tidy;
+ }
+ term1 = raptor_new_term_from_uri(world, uri1);
+ if(!term1) {
+ fprintf(stderr, "%s: raptor_new_term_from_uri_string(URI %s) failed\n",
+ program, uri_string1);
+ rc = 1;
+ goto tidy;
+ }
+ raptor_free_uri(uri1); uri1 = NULL;
+ if(term1->type != uri_string1_type) {
+ fprintf(stderr, "%s: raptor term 1 is of type %d expected %d\n",
+ program, term1->type, uri_string1_type);
+ rc = 1;
+ goto tidy;
+ }
+
+
+ /* returns a pointer to shared string */
+ uri_str = raptor_uri_as_counted_string(term1->value.uri, &uri_len);
+ if(!uri_str) {
+ fprintf(stderr, "%s: raptor_uri_as_counted_string term 1 failed\n",
+ program);
+ rc = 1;
+ goto tidy;
+ }
+
+ if(uri_len != uri_string1_len) {
+ fprintf(stderr, "%s: raptor term 1 URI is of length %d expected %d\n",
+ program, (int)uri_len, (int)uri_string1_len);
+ rc = 1;
+ goto tidy;
+ }
+
+
+ /* check an empty literal is created from a NULL literal pointer succeeds */
+ term2 = raptor_new_term_from_counted_literal(world, NULL, 0, NULL, NULL, 0);
+ if(!term2) {
+ fprintf(stderr, "%s: raptor_new_term_from_counted_literal() with all NULLs failed\n", program);
+ rc = 1;
+ goto tidy;
+ }
+ raptor_free_term(term2);
+
+
+ /* check an empty literal from an empty language literal pointer succeeds */
+ term2 = raptor_new_term_from_counted_literal(world, NULL, 0, NULL,
+ (const unsigned char*)"", 0);
+ if(!term2) {
+ fprintf(stderr, "%s: raptor_new_term_from_counted_literal() with empty language failed\n", program);
+ rc = 1;
+ goto tidy;
+ }
+ raptor_free_term(term2);
+
+ /* check a literal with language and datatype fails */
+ uri1 = raptor_new_uri(world, uri_string1);
+ if(!uri1) {
+ fprintf(stderr, "%s: raptor_new_uri(%s) failed\n", program, uri_string1);
+ rc = 1;
+ goto tidy;
+ }
+ term2 = raptor_new_term_from_counted_literal(world, literal_string1,
+ literal_string1_len,
+ uri1, language1, 0);
+ raptor_free_uri(uri1); uri1 = NULL;
+ if(term2) {
+ fprintf(stderr, "%s: raptor_new_term_from_counted_literal() with language and datatype returned object rather than failing\n", program);
+ rc = 1;
+ goto tidy;
+ }
+
+ /* check a literal with no language and no datatype succeeds */
+ term2 = raptor_new_term_from_counted_literal(world, literal_string1,
+ literal_string1_len, NULL, NULL, 0);
+ if(!term2) {
+ fprintf(stderr, "%s: raptor_new_term_from_counted_literal(%s) failed\n",
+ program, literal_string1);
+ rc = 1;
+ goto tidy;
+ }
+ if(term2->type != literal_string1_type) {
+ fprintf(stderr, "%s: raptor term 2 is of type %d expected %d\n",
+ program, term2->type, literal_string1_type);
+ rc = 1;
+ goto tidy;
+ }
+
+
+ /* check a blank node term with NULL id generates a new identifier */
+ term3 = raptor_new_term_from_counted_blank(world, NULL, 0);
+ if(!term3) {
+ fprintf(stderr, "%s: raptor_new_term_from_counted_blank(NULL) failed\n",
+ program);
+ rc = 1;
+ goto tidy;
+ }
+ if(term3->type != bnodeid1_type) {
+ fprintf(stderr, "%s: raptor term 3 is of type %d expected %d\n",
+ program, term3->type, bnodeid1_type);
+ rc = 1;
+ goto tidy;
+ }
+ raptor_free_term(term3);
+
+ /* check a blank node term with an identifier succeeds */
+ term3 = raptor_new_term_from_counted_blank(world, bnodeid1, bnodeid1_len);
+ if(!term3) {
+ fprintf(stderr, "%s: raptor_new_term_from_counted_blank(%s) failed\n",
+ program, bnodeid1);
+ rc = 1;
+ goto tidy;
+ }
+ if(term3->type != bnodeid1_type) {
+ fprintf(stderr, "%s: raptor term 3 is of type %d expected %d\n",
+ program, term3->type, bnodeid1_type);
+ rc = 1;
+ goto tidy;
+ }
+
+
+ /* check a different URI term succeeds */
+ term4 = raptor_new_term_from_counted_uri_string(world, uri_string2,
+ uri_string2_len);
+ if(!term4) {
+ fprintf(stderr,
+ "%s: raptor_new_term_from_counted_uri_string(URI %s) failed\n",
+ program, uri_string2);
+ rc = 1;
+ goto tidy;
+ }
+ if(term4->type != uri_string2_type) {
+ fprintf(stderr, "%s: raptor term 4 is of type %d expected %d\n",
+ program, term4->type, uri_string2_type);
+ rc = 1;
+ goto tidy;
+ }
+ /* returns a pointer to shared string */
+ uri_str = raptor_uri_as_counted_string(term4->value.uri, &uri_len);
+ if(!uri_str) {
+ fprintf(stderr, "%s: raptor_uri_as_counted_string term 4 failed\n",
+ program);
+ rc = 1;
+ goto tidy;
+ }
+
+ if(uri_len != uri_string2_len) {
+ fprintf(stderr, "%s: raptor term 4 URI is of length %d expected %d\n",
+ program, (int)uri_len, (int)uri_string2_len);
+ rc = 1;
+ goto tidy;
+ }
+
+
+ /* check the same URI term as term1 succeeds */
+ term5 = raptor_new_term_from_uri_string(world, uri_string1);
+ if(!term5) {
+ fprintf(stderr, "%s: raptor_new_term_from_uri_string(URI %s) failed\n",
+ program, uri_string1);
+ rc = 1;
+ goto tidy;
+ }
+
+
+ if(raptor_term_equals(term1, term2)) {
+ fprintf(stderr, "%s: raptor_term_equals (URI %s, literal %s) returned equal, expected not-equal\n",
+ program, uri_string1, literal_string1);
+ rc = 1;
+ goto tidy;
+ }
+
+ if(raptor_term_equals(term1, term3)) {
+ fprintf(stderr, "%s: raptor_term_equals (URI %s, bnode %s) returned equal, expected not-equal\n",
+ program, uri_string1, bnodeid1);
+ rc = 1;
+ goto tidy;
+ }
+
+ if(raptor_term_equals(term1, term4)) {
+ fprintf(stderr, "%s: raptor_term_equals (URI %s, URI %s) returned equal, expected not-equal\n",
+ program, uri_string1, uri_string2);
+ rc = 1;
+ goto tidy;
+ }
+
+ if(!raptor_term_equals(term1, term5)) {
+ fprintf(stderr, "%s: raptor_term_equals (URI %s, URI %s) returned not-equal, expected equal\n",
+ program, uri_string1, uri_string1);
+ rc = 1;
+ goto tidy;
+ }
+
+ if(term1->value.uri != term5->value.uri) {
+ fprintf(stderr, "%s: term1 and term5 URI objects returned not-equal pointers, expected equal\n",
+ program);
+ /* This is not necessarily a failure if the raptor_uri module has had
+ * the URI interning disabled with
+ * raptor_world_set_flag(world, RAPTOR_WORLD_FLAG_URI_INTERNING, 0)
+ * however this test suite does not do that, so it is a failure here.
+ */
+ rc = 1;
+ goto tidy;
+ }
+
+
+ tidy:
+ if(term1)
+ raptor_free_term(term1);
+ if(term2)
+ raptor_free_term(term2);
+ if(term3)
+ raptor_free_term(term3);
+ if(term4)
+ raptor_free_term(term4);
+ if(term5)
+ raptor_free_term(term5);
+
+ raptor_free_world(world);
+
+ return rc;
+}
+
+#endif /* STANDALONE */
diff --git a/src/raptor_turtle_writer.c b/src/raptor_turtle_writer.c
new file mode 100644
index 0000000..6eb1c27
--- /dev/null
+++ b/src/raptor_turtle_writer.c
@@ -0,0 +1,1062 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_turtle_writer.c - Raptor Turtle Writer
+ *
+ * Copyright (C) 2006, Dave Robillard
+ * Copyright (C) 2003-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+#include <math.h>
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#ifndef STANDALONE
+
+
+typedef enum {
+ TURTLE_WRITER_AUTO_INDENT = 1,
+} raptor_turtle_writer_flags;
+
+
+#define TURTLE_WRITER_AUTO_INDENT(turtle_writer) ((turtle_writer->flags & TURTLE_WRITER_AUTO_INDENT) != 0)
+
+struct raptor_turtle_writer_s {
+ raptor_world* world;
+
+ int depth;
+
+ raptor_uri* base_uri;
+
+ int my_nstack;
+ raptor_namespace_stack *nstack;
+ int nstack_depth;
+
+ /* outputting to this iostream */
+ raptor_iostream *iostr;
+
+ /* Turtle Writer flags - bits defined in enum raptor_turtle_writer_flags */
+ int flags;
+
+ /* indentation per level if formatting */
+ int indent;
+
+ raptor_uri* xsd_boolean_uri;
+ raptor_uri* xsd_decimal_uri;
+ raptor_uri* xsd_double_uri;
+ raptor_uri* xsd_integer_uri;
+};
+
+
+/* 16 spaces */
+#define SPACES_BUFFER_SIZE sizeof(spaces_buffer)
+static const unsigned char spaces_buffer[] = {
+ ' ', ' ', ' ', ' ',
+ ' ', ' ', ' ', ' ',
+ ' ', ' ', ' ', ' ',
+ ' ', ' ', ' ', ' '
+};
+
+
+void
+raptor_turtle_writer_increase_indent(raptor_turtle_writer *turtle_writer)
+{
+ turtle_writer->depth += turtle_writer->indent;
+}
+
+
+void
+raptor_turtle_writer_decrease_indent(raptor_turtle_writer *turtle_writer)
+{
+ turtle_writer->depth -= turtle_writer->indent;
+}
+
+
+void
+raptor_turtle_writer_newline(raptor_turtle_writer *turtle_writer)
+{
+ int num_spaces;
+
+ raptor_iostream_write_byte('\n', turtle_writer->iostr);
+
+ if(!TURTLE_WRITER_AUTO_INDENT(turtle_writer))
+ return;
+
+ num_spaces = turtle_writer->depth * turtle_writer->indent;
+
+ while(num_spaces > 0) {
+ int count;
+ count = (num_spaces > RAPTOR_GOOD_CAST(int, SPACES_BUFFER_SIZE)) ?
+ RAPTOR_GOOD_CAST(int, SPACES_BUFFER_SIZE) : num_spaces;
+
+ raptor_iostream_counted_string_write(spaces_buffer, count, turtle_writer->iostr);
+
+ num_spaces -= count;
+ }
+
+ return;
+}
+
+
+/**
+ * raptor_new_turtle_writer:
+ * @world: raptor_world object
+ * @base_uri: Base URI for the writer (or NULL)
+ * @write_base_uri: non-0 to write '@base' directive to output
+ * @nstack: Namespace stack for the writer to start with (or NULL)
+ * @iostr: I/O stream to write to
+ *
+ * Constructor - Create a new Turtle Writer writing Turtle to a raptor_iostream
+ *
+ * Return value: a new #raptor_turtle_writer object or NULL on failure
+ **/
+raptor_turtle_writer*
+raptor_new_turtle_writer(raptor_world* world,
+ raptor_uri* base_uri, int write_base_uri,
+ raptor_namespace_stack *nstack,
+ raptor_iostream* iostr)
+{
+ raptor_turtle_writer* turtle_writer;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!nstack || !iostr)
+ return NULL;
+
+ raptor_world_open(world);
+
+ turtle_writer = RAPTOR_CALLOC(raptor_turtle_writer*, 1,
+ sizeof(*turtle_writer));
+
+ if(!turtle_writer)
+ return NULL;
+
+ turtle_writer->world = world;
+
+ turtle_writer->nstack_depth = 0;
+
+ turtle_writer->nstack = nstack;
+ if(!turtle_writer->nstack) {
+ turtle_writer->nstack = raptor_new_namespaces(world, 1);
+ turtle_writer->my_nstack = 1;
+ }
+
+ turtle_writer->iostr = iostr;
+
+ turtle_writer->flags = 0;
+ turtle_writer->indent = 2;
+
+ turtle_writer->base_uri = NULL;
+ /* Ensure any initial base URI is not written relative */
+ if(base_uri && write_base_uri)
+ raptor_turtle_writer_base(turtle_writer, base_uri);
+ turtle_writer->base_uri = base_uri;
+
+ turtle_writer->xsd_boolean_uri = raptor_new_uri(world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#boolean");
+ turtle_writer->xsd_decimal_uri = raptor_new_uri(world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#decimal");
+ turtle_writer->xsd_double_uri = raptor_new_uri(world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#double");
+ turtle_writer->xsd_integer_uri = raptor_new_uri(world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#integer");
+
+ return turtle_writer;
+}
+
+
+/**
+ * raptor_free_turtle_writer:
+ * @turtle_writer: Turtle writer object
+ *
+ * Destructor - Free Turtle Writer
+ *
+ **/
+void
+raptor_free_turtle_writer(raptor_turtle_writer* turtle_writer)
+{
+ if(!turtle_writer)
+ return;
+
+ if(turtle_writer->nstack && turtle_writer->my_nstack)
+ raptor_free_namespaces(turtle_writer->nstack);
+
+ if(turtle_writer->xsd_boolean_uri)
+ raptor_free_uri(turtle_writer->xsd_boolean_uri);
+ if(turtle_writer->xsd_decimal_uri)
+ raptor_free_uri(turtle_writer->xsd_decimal_uri);
+ if(turtle_writer->xsd_double_uri)
+ raptor_free_uri(turtle_writer->xsd_double_uri);
+ if(turtle_writer->xsd_integer_uri)
+ raptor_free_uri(turtle_writer->xsd_integer_uri);
+
+ RAPTOR_FREE(raptor_turtle_writer, turtle_writer);
+}
+
+
+static int
+raptor_turtle_writer_contains_newline(const unsigned char *s)
+{
+ size_t i = 0;
+
+ for( ; i < strlen((char*)s); i++)
+ if(s[i] == '\n')
+ return 1;
+
+ return 0;
+}
+
+
+/**
+ * raptor_turtle_writer_raw:
+ * @turtle_writer: Turtle writer object
+ * @s: raw string to write
+ *
+ * Write a raw string to the Turtle writer verbatim.
+ *
+ **/
+void
+raptor_turtle_writer_raw(raptor_turtle_writer* turtle_writer,
+ const unsigned char *s)
+{
+ raptor_iostream_string_write(s, turtle_writer->iostr);
+}
+
+
+/**
+ * raptor_turtle_writer_raw_counted:
+ * @turtle_writer: Turtle writer object
+ * @s: raw string to write
+ * @len: length of string
+ *
+ * Write a counted string to the Turtle writer verbatim.
+ *
+ **/
+void
+raptor_turtle_writer_raw_counted(raptor_turtle_writer* turtle_writer,
+ const unsigned char *s, unsigned int len)
+{
+ raptor_iostream_counted_string_write(s, len, turtle_writer->iostr);
+}
+
+
+/**
+ * raptor_turtle_writer_namespace_prefix:
+ * @turtle_writer: Turtle writer object
+ * @ns: Namespace to write prefix declaration for
+ *
+ * Write a namespace prefix declaration (@prefix)
+ *
+ * Must only be used at the beginning of a document.
+ */
+void
+raptor_turtle_writer_namespace_prefix(raptor_turtle_writer* turtle_writer,
+ raptor_namespace* ns)
+{
+ raptor_iostream_string_write("@prefix ", turtle_writer->iostr);
+ if(ns->prefix)
+ raptor_iostream_string_write(raptor_namespace_get_prefix(ns),
+ turtle_writer->iostr);
+ raptor_iostream_counted_string_write(": ", 2, turtle_writer->iostr);
+ raptor_turtle_writer_reference(turtle_writer, raptor_namespace_get_uri(ns));
+ raptor_iostream_counted_string_write(" .\n", 3, turtle_writer->iostr);
+}
+
+
+/**
+ * raptor_turtle_writer_base:
+ * @turtle_writer: Turtle writer object
+ * @base_uri: New base URI or NULL
+ *
+ * Write a base URI directive (@base) to set the in-scope base URI
+ */
+void
+raptor_turtle_writer_base(raptor_turtle_writer* turtle_writer,
+ raptor_uri* base_uri)
+{
+ if(base_uri) {
+ raptor_iostream_counted_string_write("@base ", 6, turtle_writer->iostr);
+ raptor_turtle_writer_reference(turtle_writer, base_uri);
+ raptor_iostream_counted_string_write(" .\n", 3, turtle_writer->iostr);
+ }
+}
+
+
+/**
+ * raptor_turtle_writer_reference:
+ * @turtle_writer: Turtle writer object
+ * @uri: URI to write
+ *
+ * Write a URI to the Turtle writer.
+ *
+ **/
+void
+raptor_turtle_writer_reference(raptor_turtle_writer* turtle_writer,
+ raptor_uri* uri)
+{
+ unsigned char* uri_str;
+ size_t length;
+
+ uri_str = raptor_uri_to_relative_counted_uri_string(turtle_writer->base_uri, uri, &length);
+
+ raptor_iostream_write_byte('<', turtle_writer->iostr);
+ if(uri_str)
+ raptor_string_ntriples_write(uri_str, length, '>', turtle_writer->iostr);
+ raptor_iostream_write_byte('>', turtle_writer->iostr);
+
+ RAPTOR_FREE(char*, uri_str);
+}
+
+
+/**
+ * raptor_turtle_writer_qname:
+ * @turtle_writer: Turtle writer object
+ * @qname: qname to write
+ *
+ * Write a QName to the Turtle writer.
+ *
+ **/
+void
+raptor_turtle_writer_qname(raptor_turtle_writer* turtle_writer,
+ raptor_qname* qname)
+{
+ raptor_iostream* iostr = turtle_writer->iostr;
+
+ if(qname->nspace && qname->nspace->prefix_length > 0)
+ raptor_iostream_counted_string_write(qname->nspace->prefix,
+ qname->nspace->prefix_length,
+ iostr);
+ raptor_iostream_write_byte(':', iostr);
+
+ raptor_iostream_counted_string_write(qname->local_name,
+ qname->local_name_length,
+ iostr);
+ return;
+}
+
+
+/**
+ * raptor_string_python_write:
+ * @string: UTF-8 string to write
+ * @len: length of UTF-8 string
+ * @delim: Terminating delimiter character for string (such as " or >)
+ * or \0 for no escaping.
+ * @flags: flags 0=N-Triples mode, 1=Turtle (allow raw UTF-8), 2=Turtle long string (allow raw UTF-8), 3=JSON
+ * @iostr: #raptor_iostream to write to
+ *
+ * Write a UTF-8 string using Python-style escapes (N-Triples, Turtle, JSON) to an iostream.
+ *
+ * Return value: non-0 on failure such as bad UTF-8 encoding.
+ **/
+int
+raptor_string_python_write(const unsigned char *string,
+ size_t len,
+ const char delim,
+ int flags,
+ raptor_iostream *iostr)
+{
+ unsigned char c;
+ int unichar_len;
+ raptor_unichar unichar;
+
+ if(flags < 0 || flags > 3)
+ return 1;
+
+ for(; (c=*string); string++, len--) {
+ if((delim && c == delim && (delim == '\'' || delim == '"')) ||
+ c == '\\') {
+ raptor_iostream_write_byte('\\', iostr);
+ raptor_iostream_write_byte(c, iostr);
+ continue;
+ }
+ if(delim && c == delim) {
+ raptor_iostream_counted_string_write("\\u", 2, iostr);
+ raptor_iostream_hexadecimal_write(c, 4, iostr);
+ continue;
+ }
+
+ if(flags != 2) {
+ /* N-Triples, Turtle or JSON */
+
+ /* Note: NTriples is ASCII */
+ if(c == 0x09) {
+ raptor_iostream_counted_string_write("\\t", 2, iostr);
+ continue;
+ } else if((flags == 3) && c == 0x08) {
+ /* JSON has \b for backspace */
+ raptor_iostream_counted_string_write("\\b", 2, iostr);
+ continue;
+ } else if(c == 0x0a) {
+ raptor_iostream_counted_string_write("\\n", 2, iostr);
+ continue;
+ } else if((flags == 3) && c == 0x0b) {
+ /* JSON has \f for formfeed */
+ raptor_iostream_counted_string_write("\\f", 2, iostr);
+ continue;
+ } else if(c == 0x0d) {
+ raptor_iostream_counted_string_write("\\r", 2, iostr);
+ continue;
+ } else if(c < 0x20|| c == 0x7f) {
+ raptor_iostream_counted_string_write("\\u", 2, iostr);
+ raptor_iostream_hexadecimal_write(c, 4, iostr);
+ continue;
+ } else if(c < 0x80) {
+ raptor_iostream_write_byte(c, iostr);
+ continue;
+ }
+ } else if(c < 0x80) {
+ /* Turtle long string has no escapes except delim */
+ raptor_iostream_write_byte(c, iostr);
+ continue;
+ }
+
+ /* It is unicode */
+
+ unichar_len = raptor_unicode_utf8_string_get_char(string, len, NULL);
+ if(unichar_len < 0 || RAPTOR_GOOD_CAST(size_t, unichar_len) > len)
+ /* UTF-8 encoding had an error or ended in the middle of a string */
+ return 1;
+
+ if(flags >= 1 && flags <= 3) {
+ /* Turtle and JSON are UTF-8 - no need to escape */
+ raptor_iostream_counted_string_write(string, unichar_len, iostr);
+ } else {
+ unichar_len = raptor_unicode_utf8_string_get_char(string, len, &unichar);
+ if(unichar_len < 0)
+ return 1;
+
+ if(unichar < 0x10000) {
+ raptor_iostream_counted_string_write("\\u", 2, iostr);
+ raptor_iostream_hexadecimal_write(RAPTOR_GOOD_CAST(unsigned int, unichar), 4, iostr);
+ } else {
+ raptor_iostream_counted_string_write("\\U", 2, iostr);
+ raptor_iostream_hexadecimal_write(RAPTOR_GOOD_CAST(unsigned int, unichar), 8, iostr);
+ }
+ }
+
+ unichar_len--; /* since loop does len-- */
+ string += unichar_len; len -= unichar_len;
+
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_turtle_writer_quoted_counted_string:
+ * @turtle_writer: Turtle writer object
+ * @s: string to write
+ * @len: string length
+ *
+ * Write a Turtle escaped-string inside double quotes to the writer.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_turtle_writer_quoted_counted_string(raptor_turtle_writer* turtle_writer,
+ const unsigned char *s, size_t len)
+{
+ const unsigned char *quotes = (const unsigned char *)"\"\"\"\"";
+ const unsigned char *q;
+ size_t q_len;
+ int flags;
+ int rc = 0;
+
+ if(!s)
+ return 1;
+
+ /* Turtle """longstring""" (2) or "string" (1) */
+ flags = raptor_turtle_writer_contains_newline(s) ? 2 : 1;
+ q = (flags == 2) ? quotes : quotes + 2;
+ q_len = (q == quotes) ? 3 : 1;
+ raptor_iostream_counted_string_write(q, q_len, turtle_writer->iostr);
+ rc = raptor_string_python_write(s, strlen((const char*)s), '"', flags,
+ turtle_writer->iostr);
+ raptor_iostream_counted_string_write(q, q_len, turtle_writer->iostr);
+
+ return rc;
+}
+
+
+/**
+ * raptor_turtle_writer_literal:
+ * @turtle_writer: Turtle writer object
+ * @nstack: Namespace stack for making a QName for datatype URI
+ * @s: literal string to write (SHARED)
+ * @lang: language tag (may be NULL)
+ * @datatype: datatype URI (may be NULL)
+ *
+ * Write a literal (possibly with lang and datatype) to the Turtle writer.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_turtle_writer_literal(raptor_turtle_writer* turtle_writer,
+ raptor_namespace_stack *nstack,
+ const unsigned char* s, const unsigned char* lang,
+ raptor_uri* datatype)
+{
+ /* DBL_MAX = 309 decimal digits */
+ #define INT_MAX_LEN 309
+
+ /* DBL_EPSILON = 52 digits */
+ #define FRAC_MAX_LEN 52
+
+ char* endptr = (char *)s;
+ int written = 0;
+
+ /* typed literal special cases */
+ if(datatype) {
+ /* integer */
+ if(raptor_uri_equals(datatype, turtle_writer->xsd_integer_uri)) {
+ /* FIXME. Work around that gcc < 4.5 cannot disable warn_unused_result */
+ long gcc_is_stupid = strtol((const char*)s, &endptr, 10);
+ if(endptr != (char*)s && !*endptr) {
+ raptor_iostream_string_write(s, turtle_writer->iostr);
+ /* More gcc madness to 'use' the variable I didn't want */
+ written = 1 + 0 * (int)gcc_is_stupid;
+ } else {
+ raptor_log_error(turtle_writer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Illegal value for xsd:integer literal.");
+ }
+
+ /* double, decimal */
+ } else if(raptor_uri_equals(datatype, turtle_writer->xsd_double_uri) ||
+ raptor_uri_equals(datatype, turtle_writer->xsd_decimal_uri)) {
+ /* FIXME. Work around that gcc < 4.5 cannot disable warn_unused_result */
+ double gcc_is_doubly_stupid = strtod((const char*)s, &endptr);
+ if(endptr != (char*)s && !*endptr) {
+ raptor_iostream_string_write(s, turtle_writer->iostr);
+ /* More gcc madness to 'use' the variable I didn't want */
+ written = 1 + 0 * (int)gcc_is_doubly_stupid;
+ } else {
+ raptor_log_error(turtle_writer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Illegal value for xsd:double or xsd:decimal literal.");
+ }
+
+ /* boolean */
+ } else if(raptor_uri_equals(datatype, turtle_writer->xsd_boolean_uri)) {
+ if(!strcmp((const char*)s, "0") || !strcmp((const char*)s, "false")) {
+ raptor_iostream_string_write("false", turtle_writer->iostr);
+ written = 1;
+ } else if(!strcmp((const char*)s, "1") || !strcmp((const char*)s, "true")) {
+ raptor_iostream_string_write("true", turtle_writer->iostr);
+ written = 1;
+ } else {
+ raptor_log_error(turtle_writer->world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Illegal value for xsd:boolean literal.");
+ }
+ }
+ }
+
+ if(written)
+ return 0;
+
+ if(raptor_turtle_writer_quoted_counted_string(turtle_writer, s,
+ strlen((const char*)s)))
+ return 1;
+
+ /* typed literal, not a special case */
+ if(datatype) {
+ raptor_qname* qname;
+
+ raptor_iostream_string_write("^^", turtle_writer->iostr);
+ qname = raptor_new_qname_from_namespace_uri(nstack, datatype, 10);
+ if(qname) {
+ raptor_turtle_writer_qname(turtle_writer, qname);
+ raptor_free_qname(qname);
+ } else
+ raptor_turtle_writer_reference(turtle_writer, datatype);
+ } else if(lang) {
+ /* literal with language tag */
+ raptor_iostream_write_byte('@', turtle_writer->iostr);
+ raptor_iostream_string_write(lang, turtle_writer->iostr);
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_turtle_writer_comment:
+ * @turtle_writer: Turtle writer object
+ * @s: comment string to write
+ *
+ * Write a Turtle comment to the Turtle writer.
+ *
+ **/
+void
+raptor_turtle_writer_comment(raptor_turtle_writer* turtle_writer,
+ const unsigned char *string)
+{
+ unsigned char c;
+ size_t len = strlen((const char*)string);
+
+ raptor_iostream_counted_string_write((const unsigned char*)"# ", 2,
+ turtle_writer->iostr);
+
+ for(; (c=*string); string++, len--) {
+ if(c == '\n') {
+ raptor_turtle_writer_newline(turtle_writer);
+ raptor_iostream_counted_string_write((const unsigned char*)"# ", 2,
+ turtle_writer->iostr);
+ } else if(c != '\r') {
+ /* skip carriage returns (windows... *sigh*) */
+ raptor_iostream_write_byte(c, turtle_writer->iostr);
+ }
+ }
+
+ raptor_turtle_writer_newline(turtle_writer);
+}
+
+
+/**
+ * raptor_turtle_writer_set_option:
+ * @turtle_writer: #raptor_turtle_writer turtle_writer object
+ * @option: option to set from enumerated #raptor_option values
+ * @value: integer option value (0 or larger)
+ *
+ * Set turtle_writer options with integer values.
+ *
+ * The allowed options are available via
+ * raptor_world_get_option_description()
+ *
+ * Return value: non 0 on failure or if the option is unknown
+ **/
+int
+raptor_turtle_writer_set_option(raptor_turtle_writer *turtle_writer,
+ raptor_option option, int value)
+{
+ if(value < 0 ||
+ !raptor_option_is_valid_for_area(option, RAPTOR_OPTION_AREA_TURTLE_WRITER))
+ return 1;
+
+ switch(option) {
+ case RAPTOR_OPTION_WRITER_AUTO_INDENT:
+ if(value)
+ turtle_writer->flags |= TURTLE_WRITER_AUTO_INDENT;
+ else
+ turtle_writer->flags &= ~TURTLE_WRITER_AUTO_INDENT;
+ break;
+
+ case RAPTOR_OPTION_WRITER_INDENT_WIDTH:
+ turtle_writer->indent = value;
+ break;
+
+ case RAPTOR_OPTION_WRITER_AUTO_EMPTY:
+ case RAPTOR_OPTION_WRITER_XML_VERSION:
+ case RAPTOR_OPTION_WRITER_XML_DECLARATION:
+ break;
+
+ /* parser options */
+ case RAPTOR_OPTION_SCANNING:
+ case RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES:
+ case RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES:
+ case RAPTOR_OPTION_ALLOW_BAGID:
+ case RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST:
+ case RAPTOR_OPTION_NORMALIZE_LANGUAGE:
+ case RAPTOR_OPTION_NON_NFC_FATAL:
+ case RAPTOR_OPTION_WARN_OTHER_PARSETYPES:
+ case RAPTOR_OPTION_CHECK_RDF_ID:
+ case RAPTOR_OPTION_HTML_TAG_SOUP:
+ case RAPTOR_OPTION_MICROFORMATS:
+ case RAPTOR_OPTION_HTML_LINK:
+ case RAPTOR_OPTION_WWW_TIMEOUT:
+ case RAPTOR_OPTION_STRICT:
+
+ /* Shared */
+ case RAPTOR_OPTION_NO_NET:
+ case RAPTOR_OPTION_NO_FILE:
+ case RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES:
+
+ /* XML writer options */
+ case RAPTOR_OPTION_RELATIVE_URIS:
+
+ /* DOT serializer options */
+ case RAPTOR_OPTION_RESOURCE_BORDER:
+ case RAPTOR_OPTION_LITERAL_BORDER:
+ case RAPTOR_OPTION_BNODE_BORDER:
+ case RAPTOR_OPTION_RESOURCE_FILL:
+ case RAPTOR_OPTION_LITERAL_FILL:
+ case RAPTOR_OPTION_BNODE_FILL:
+
+ /* JSON serializer options */
+ case RAPTOR_OPTION_JSON_CALLBACK:
+ case RAPTOR_OPTION_JSON_EXTRA_DATA:
+ case RAPTOR_OPTION_RSS_TRIPLES:
+ case RAPTOR_OPTION_ATOM_ENTRY_URI:
+ case RAPTOR_OPTION_PREFIX_ELEMENTS:
+
+ /* Turtle serializer option */
+ case RAPTOR_OPTION_WRITE_BASE_URI:
+
+ /* WWW option */
+ case RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL:
+ case RAPTOR_OPTION_WWW_HTTP_USER_AGENT:
+ case RAPTOR_OPTION_WWW_CERT_FILENAME:
+ case RAPTOR_OPTION_WWW_CERT_TYPE:
+ case RAPTOR_OPTION_WWW_CERT_PASSPHRASE:
+ case RAPTOR_OPTION_WWW_SSL_VERIFY_PEER:
+ case RAPTOR_OPTION_WWW_SSL_VERIFY_HOST:
+
+ default:
+ return -1;
+ break;
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_turtle_writer_set_option_string:
+ * @turtle_writer: #raptor_turtle_writer turtle_writer object
+ * @option: option to set from enumerated #raptor_option values
+ * @value: option value
+ *
+ * Set turtle_writer options with string values.
+ *
+ * The allowed options are available via
+ * raptor_world_get_option_description().
+ * If the option type is integer, the value is interpreted as an
+ * integer.
+ *
+ * Return value: non 0 on failure or if the option is unknown
+ **/
+int
+raptor_turtle_writer_set_option_string(raptor_turtle_writer *turtle_writer,
+ raptor_option option,
+ const unsigned char *value)
+{
+ if(!value ||
+ !raptor_option_is_valid_for_area(option, RAPTOR_OPTION_AREA_TURTLE_WRITER))
+ return 1;
+
+ if(raptor_option_value_is_numeric(option))
+ return raptor_turtle_writer_set_option(turtle_writer, option,
+ atoi((const char*)value));
+
+ return 1;
+}
+
+
+/**
+ * raptor_turtle_writer_get_option:
+ * @turtle_writer: #raptor_turtle_writer serializer object
+ * @option: option to get value
+ *
+ * Get various turtle_writer options.
+ *
+ * The allowed options are available via raptor_options_enumerate().
+ *
+ * Note: no option value is negative
+ *
+ * Return value: option value or < 0 for an illegal option
+ **/
+int
+raptor_turtle_writer_get_option(raptor_turtle_writer *turtle_writer,
+ raptor_option option)
+{
+ int result = -1;
+
+ switch(option) {
+ case RAPTOR_OPTION_WRITER_AUTO_INDENT:
+ result = TURTLE_WRITER_AUTO_INDENT(turtle_writer);
+ break;
+
+ case RAPTOR_OPTION_WRITER_INDENT_WIDTH:
+ result = turtle_writer->indent;
+ break;
+
+ /* writer options */
+ case RAPTOR_OPTION_WRITER_AUTO_EMPTY:
+ case RAPTOR_OPTION_WRITER_XML_VERSION:
+ case RAPTOR_OPTION_WRITER_XML_DECLARATION:
+
+ /* parser options */
+ case RAPTOR_OPTION_SCANNING:
+ case RAPTOR_OPTION_ALLOW_NON_NS_ATTRIBUTES:
+ case RAPTOR_OPTION_ALLOW_OTHER_PARSETYPES:
+ case RAPTOR_OPTION_ALLOW_BAGID:
+ case RAPTOR_OPTION_ALLOW_RDF_TYPE_RDF_LIST:
+ case RAPTOR_OPTION_NORMALIZE_LANGUAGE:
+ case RAPTOR_OPTION_NON_NFC_FATAL:
+ case RAPTOR_OPTION_WARN_OTHER_PARSETYPES:
+ case RAPTOR_OPTION_CHECK_RDF_ID:
+ case RAPTOR_OPTION_HTML_TAG_SOUP:
+ case RAPTOR_OPTION_MICROFORMATS:
+ case RAPTOR_OPTION_HTML_LINK:
+ case RAPTOR_OPTION_WWW_TIMEOUT:
+ case RAPTOR_OPTION_STRICT:
+
+ /* Shared */
+ case RAPTOR_OPTION_NO_NET:
+ case RAPTOR_OPTION_NO_FILE:
+ case RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES:
+
+ /* XML writer options */
+ case RAPTOR_OPTION_RELATIVE_URIS:
+
+ /* DOT serializer options */
+ case RAPTOR_OPTION_RESOURCE_BORDER:
+ case RAPTOR_OPTION_LITERAL_BORDER:
+ case RAPTOR_OPTION_BNODE_BORDER:
+ case RAPTOR_OPTION_RESOURCE_FILL:
+ case RAPTOR_OPTION_LITERAL_FILL:
+ case RAPTOR_OPTION_BNODE_FILL:
+
+ /* JSON serializer options */
+ case RAPTOR_OPTION_JSON_CALLBACK:
+ case RAPTOR_OPTION_JSON_EXTRA_DATA:
+ case RAPTOR_OPTION_RSS_TRIPLES:
+ case RAPTOR_OPTION_ATOM_ENTRY_URI:
+ case RAPTOR_OPTION_PREFIX_ELEMENTS:
+
+ /* Turtle serializer option */
+ case RAPTOR_OPTION_WRITE_BASE_URI:
+
+ /* WWW option */
+ case RAPTOR_OPTION_WWW_HTTP_CACHE_CONTROL:
+ case RAPTOR_OPTION_WWW_HTTP_USER_AGENT:
+ case RAPTOR_OPTION_WWW_CERT_FILENAME:
+ case RAPTOR_OPTION_WWW_CERT_TYPE:
+ case RAPTOR_OPTION_WWW_CERT_PASSPHRASE:
+ case RAPTOR_OPTION_WWW_SSL_VERIFY_PEER:
+ case RAPTOR_OPTION_WWW_SSL_VERIFY_HOST:
+
+ default:
+ break;
+ }
+
+ return result;
+}
+
+
+/**
+ * raptor_turtle_writer_get_option_string:
+ * @turtle_writer: #raptor_turtle_writer serializer object
+ * @option: option to get value
+ *
+ * Get turtle_writer options with string values.
+ *
+ * The allowed options are available via raptor_options_enumerate().
+ *
+ * Return value: option value or NULL for an illegal option or no value
+ **/
+const unsigned char *
+raptor_turtle_writer_get_option_string(raptor_turtle_writer *turtle_writer,
+ raptor_option option)
+{
+ return NULL;
+}
+
+
+/**
+ * raptor_turtle_writer_bnodeid:
+ * @turtle_writer: Turtle writer object
+ * @bnodeid: blank node ID to write
+ * @len: length of @bnodeid
+ *
+ * Write a blank node ID with leading _: to the Turtle writer.
+ *
+ **/
+void
+raptor_turtle_writer_bnodeid(raptor_turtle_writer* turtle_writer,
+ const unsigned char *bnodeid, size_t len)
+{
+ raptor_bnodeid_ntriples_write(bnodeid, len,
+ turtle_writer->iostr);
+}
+
+
+#endif
+
+
+
+#ifdef STANDALONE
+
+/* one more prototype */
+int main(int argc, char *argv[]);
+
+
+const unsigned char *base_uri_string = (const unsigned char*)"http://example.org/base#";
+
+const unsigned char* longstr = (const unsigned char*)"it's quoted\nand has newlines, \"s <> and\n\ttabbing";
+
+#define OUT_BYTES_COUNT 149
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world;
+ const char *program = raptor_basename(argv[0]);
+ raptor_iostream *iostr;
+ raptor_namespace_stack *nstack;
+ raptor_namespace* ex_ns;
+ raptor_turtle_writer* turtle_writer;
+ raptor_uri* base_uri;
+ raptor_qname* el_name;
+ unsigned long count;
+ raptor_uri* datatype;
+
+ /* for raptor_new_iostream_to_string */
+ void *string = NULL;
+ size_t string_len = 0;
+
+ world = raptor_new_world();
+ if(!world || raptor_world_open(world))
+ exit(1);
+
+ iostr = raptor_new_iostream_to_string(world, &string, &string_len, NULL);
+ if(!iostr) {
+ fprintf(stderr, "%s: Failed to create iostream to string\n", program);
+ exit(1);
+ }
+
+ nstack = raptor_new_namespaces(world, 1);
+
+ base_uri = raptor_new_uri(world, base_uri_string);
+
+ turtle_writer = raptor_new_turtle_writer(world, base_uri, 1, nstack, iostr);
+ if(!turtle_writer) {
+ fprintf(stderr, "%s: Failed to create turtle_writer to iostream\n", program);
+ exit(1);
+ }
+
+ raptor_turtle_writer_set_option(turtle_writer,
+ RAPTOR_OPTION_WRITER_AUTO_INDENT, 1);
+
+ ex_ns = raptor_new_namespace(nstack,
+ (const unsigned char*)"ex",
+ (const unsigned char*)"http://example.org/ns#",
+ 0);
+
+
+ raptor_turtle_writer_namespace_prefix(turtle_writer, ex_ns);
+
+ raptor_turtle_writer_reference(turtle_writer, base_uri);
+
+ raptor_turtle_writer_increase_indent(turtle_writer);
+ raptor_turtle_writer_newline(turtle_writer);
+
+ raptor_turtle_writer_raw(turtle_writer, (const unsigned char*)"ex:foo ");
+
+ raptor_turtle_writer_quoted_counted_string(turtle_writer, longstr,
+ strlen((const char*)longstr));
+ raptor_turtle_writer_raw_counted(turtle_writer,
+ (const unsigned char*)" ;", 2);
+ raptor_turtle_writer_newline(turtle_writer);
+
+ el_name = raptor_new_qname_from_namespace_local_name(world,
+ ex_ns,
+ (const unsigned char*)"bar",
+ NULL);
+
+ raptor_turtle_writer_qname(turtle_writer, el_name);
+ raptor_free_qname(el_name);
+
+ raptor_turtle_writer_raw_counted(turtle_writer, (const unsigned char*)" ", 1);
+
+ datatype = raptor_new_uri(world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#decimal");
+ raptor_turtle_writer_literal(turtle_writer, nstack,
+ (const unsigned char*)"10.0", NULL,
+ datatype);
+ raptor_free_uri(datatype);
+
+ raptor_turtle_writer_newline(turtle_writer);
+
+ raptor_turtle_writer_decrease_indent(turtle_writer);
+
+ raptor_turtle_writer_raw_counted(turtle_writer, (const unsigned char*)".", 1);
+ raptor_turtle_writer_newline(turtle_writer);
+
+
+ raptor_free_turtle_writer(turtle_writer);
+
+ raptor_free_namespace(ex_ns);
+
+ raptor_free_namespaces(nstack);
+
+ raptor_free_uri(base_uri);
+
+
+ count = raptor_iostream_tell(iostr);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Freeing iostream\n", program);
+#endif
+ raptor_free_iostream(iostr);
+
+ if(count != OUT_BYTES_COUNT) {
+ fprintf(stderr, "%s: I/O stream wrote %d bytes, expected %d\n", program,
+ (int)count, (int)OUT_BYTES_COUNT);
+ fputs("[[", stderr);
+ (void)fwrite(string, 1, string_len, stderr);
+ fputs("]]\n", stderr);
+ return 1;
+ }
+
+ if(!string) {
+ fprintf(stderr, "%s: I/O stream failed to create a string\n", program);
+ return 1;
+ }
+ string_len = strlen((const char*)string);
+ if(string_len != count) {
+ fprintf(stderr, "%s: I/O stream created a string length %d, expected %d\n", program, (int)string_len, (int)count);
+ return 1;
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Made Turtle string of %d bytes\n", program, (int)string_len);
+ fputs("[[", stderr);
+ (void)fwrite(string, 1, string_len, stderr);
+ fputs("]]\n", stderr);
+#endif
+
+ raptor_free_memory(string);
+
+ raptor_free_world(world);
+
+ /* keep gcc -Wall happy */
+ return(0);
+}
+
+#endif
diff --git a/src/raptor_unicode.c b/src/raptor_unicode.c
new file mode 100644
index 0000000..347bac7
--- /dev/null
+++ b/src/raptor_unicode.c
@@ -0,0 +1,945 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_unicode.c - Raptor Unicode and UTF-8 support
+ *
+ * Copyright (C) 2002-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2002-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/* Unicode defines only the range U+0000 to U+10FFFF */
+const raptor_unichar raptor_unicode_max_codepoint = 0x10FFFF;
+
+
+/**
+ * raptor_unicode_utf8_string_put_char:
+ * @c: Unicode character
+ * @output: UTF-8 string buffer or NULL
+ * @length: length of output buffer
+ *
+ * Encode a Unicode character to a UTF-8 string
+ *
+ * If @output is NULL, then will calculate the length rather than
+ * perform the encoding. This can be used by the called to allocate
+ * space and then re-call this function with the new buffer.
+ *
+ * Return value: number of bytes encoded to output buffer or <0 on failure
+ **/
+int
+raptor_unicode_utf8_string_put_char(raptor_unichar c,
+ unsigned char *output, size_t length)
+{
+ size_t size = 0;
+
+ /* check for illegal code positions:
+ * [ U+D800 to U+DFFF (UTF-16 surrogates) - now allowed ]
+ * U+FFFE and U+FFFF
+ */
+ if(c == 0xFFFE || c == 0xFFFF)
+ return -1;
+
+ if (c < 0x00000080)
+ size = 1;
+ else if(c < 0x00000800)
+ size = 2;
+ else if(c < 0x00010000)
+ size = 3;
+ else if(c < 0x00200000)
+ size = 4;
+ else if(c < 0x04000000)
+ size = 5;
+ else if(c < 0x80000000)
+ size = 6;
+ else
+ return -1;
+
+ /* when no buffer given, return size */
+ if(!output)
+ return RAPTOR_GOOD_CAST(int, size); /* ok since size is in range 1..6 */
+
+ if(size > length)
+ return -1;
+
+ switch(size) {
+ case 6:
+ output[5] = 0x80 | (unsigned char)(c & 0x3F);
+ c= c >> 6;
+ /* set bit 2 (bits 7,6,5,4,3,2 less 7,6,5,4,3 set below) on last byte */
+ c |= 0x4000000; /* 0x10000 = 0x04 << 24 */
+ /* FALLTHROUGH */
+ case 5:
+ output[4] = 0x80 | (unsigned char)(c & 0x3F);
+ c= c >> 6;
+ /* set bit 3 (bits 7,6,5,4,3 less 7,6,5,4 set below) on last byte */
+ c |= 0x200000; /* 0x10000 = 0x08 << 18 */
+ /* FALLTHROUGH */
+ case 4:
+ output[3] = 0x80 | (unsigned char)(c & 0x3F);
+ c= c >> 6;
+ /* set bit 4 (bits 7,6,5,4 less 7,6,5 set below) on last byte */
+ c |= 0x10000; /* 0x10000 = 0x10 << 12 */
+ /* FALLTHROUGH */
+ case 3:
+ output[2] = 0x80 | (unsigned char)(c & 0x3F);
+ c= c >> 6;
+ /* set bit 5 (bits 7,6,5 less 7,6 set below) on last byte */
+ c |= 0x800; /* 0x800 = 0x20 << 6 */
+ /* FALLTHROUGH */
+ case 2:
+ output[1] = 0x80 | (unsigned char)(c & 0x3F);
+ c= c >> 6;
+ /* set bits 7,6 on last byte */
+ c |= 0xc0;
+ /* FALLTHROUGH */
+ case 1:
+ output[0] = (unsigned char)c;
+ }
+
+ return RAPTOR_GOOD_CAST(int, size); /* ok since size is in range 1..6 */
+}
+
+
+/**
+ * raptor_unicode_utf8_string_get_char:
+ * @input: UTF-8 string buffer
+ * @length: buffer size
+ * @output: Pointer to the Unicode character or NULL
+ *
+ * Decode a UTF-8 encoded string to get a Unicode character.
+ *
+ * If output is NULL, then will calculate the number of bytes that
+ * will be used from the input buffer and not perform the conversion.
+ *
+ * Return value: bytes used from input buffer or <0 on failure: -1 input buffer too short or length error, -2 overlong UTF-8 sequence, -3 illegal code positions, -4 code out of range U+0000 to U+10FFFF. In cases -2, -3 and -4 the coded character is stored in the output.
+ */
+int
+raptor_unicode_utf8_string_get_char(const unsigned char *input, size_t length,
+ raptor_unichar *output)
+{
+ unsigned char in;
+ size_t size;
+ raptor_unichar c = 0;
+
+ if(length < 1)
+ return -1;
+
+ in=*input++;
+ if((in & 0x80) == 0) {
+ size = 1;
+ c= in & 0x7f;
+ } else if((in & 0xe0) == 0xc0) {
+ size = 2;
+ c= in & 0x1f;
+ } else if((in & 0xf0) == 0xe0) {
+ size = 3;
+ c= in & 0x0f;
+ } else if((in & 0xf8) == 0xf0) {
+ size = 4;
+ c = in & 0x07;
+ } else if((in & 0xfc) == 0xf8) {
+ size = 5;
+ c = in & 0x03;
+ } else if((in & 0xfe) == 0xfc) {
+ size = 6;
+ c = in & 0x01;
+ } else
+ return -1;
+
+
+ if(!output)
+ return RAPTOR_GOOD_CAST(int, size); /* ok since size is in range 1..6 */
+
+ if(length < size)
+ return -1;
+
+ switch(size) {
+ case 6:
+ in=*input++ & 0x3f;
+ c= c << 6;
+ c |= in;
+ /* FALLTHROUGH */
+ case 5:
+ in=*input++ & 0x3f;
+ c= c << 6;
+ c |= in;
+ /* FALLTHROUGH */
+ case 4:
+ in=*input++ & 0x3f;
+ c= c << 6;
+ c |= in;
+ /* FALLTHROUGH */
+ case 3:
+ in=*input++ & 0x3f;
+ c= c << 6;
+ c |= in;
+ /* FALLTHROUGH */
+ case 2:
+ /* '*input' used here since we never need to use new value of input [CLANG] */
+ in = *input & 0x3f;
+ c= c << 6;
+ c |= in;
+ /* FALLTHROUGH */
+ default:
+ break;
+ }
+
+ *output=c;
+
+ /* check for overlong UTF-8 sequences */
+ switch(size) {
+ case 2:
+ if(c < 0x00000080)
+ return -2;
+ break;
+ case 3:
+ if(c < 0x00000800)
+ return -2;
+ break;
+ case 4:
+ if(c < 0x00010000)
+ return -2;
+ break;
+
+ default: /* 1 */
+ break;
+ }
+
+
+ /* check for illegal code positions:
+ * [ U+D800 to U+DFFF (UTF-16 surrogates) - now allowed ]
+ * U+FFFE and U+FFFF
+ */
+ if(c == 0xFFFE || c == 0xFFFF)
+ return -3;
+
+ if(c > raptor_unicode_max_codepoint)
+ return -4;
+
+ return RAPTOR_GOOD_CAST(int, size); /* ok since size is in range 1..6 */
+}
+
+
+static int raptor_unicode_is_letter(long c);
+static int raptor_unicode_is_basechar(long c);
+static int raptor_unicode_is_ideographic(long c);
+static int raptor_unicode_is_combiningchar(long c);
+static int raptor_unicode_is_digit(long c);
+static int raptor_unicode_is_extender(long c);
+
+
+/**
+ * raptor_unicode_is_xml11_namestartchar:
+ * @c: Unicode character to check
+ *
+ * Check if Unicode character is legal to start an XML 1.1 Name
+ *
+ * See <ulink url="http://www.w3.org/TR/2004/REC-xml11-20040204/#NT-NameStartChar">Namespaces in XML 1.1 REC 2004-02-04 NameStartChar</ulink>
+ * updating
+ * <ulink url="http://www.w3.org/TR/2004/REC-xml11-20040204/">Extensible Markup Language (XML) 1.1 REC 2004-02-04</ulink> sec 2.3, [4a]
+ * excluding the ':'
+ *
+ * Return value: non-0 if legal
+ **/
+int
+raptor_unicode_is_xml11_namestartchar(raptor_unichar c)
+{
+ return (((c >= 0x0041) && (c <= 0x005A)) || /* [A-Z] */
+ (c == 0x005F) || /* '_' */
+ ((c >= 0x0061) && (c <= 0x007A)) || /* [a-z] */
+ ((c >= 0x00C0) && (c <= 0x00D6)) ||
+ ((c >= 0x00D8) && (c <= 0x00F6)) ||
+ ((c >= 0x00F8) && (c <= 0x02FF)) ||
+ ((c >= 0x0370) && (c <= 0x037D)) ||
+ ((c >= 0x037F) && (c <= 0x1FFF)) ||
+ ((c >= 0x200C) && (c <= 0x200D)) ||
+ ((c >= 0x2070) && (c <= 0x218F)) ||
+ ((c >= 0x2C00) && (c <= 0x2FEF)) ||
+ ((c >= 0x3001) && (c <= 0xD7FF)) ||
+ ((c >= 0xF900) && (c <= 0xFDCF)) ||
+ ((c >= 0xFDF0) && (c <= 0xFFFD)) ||
+ ((c >= 0x10000) && (c <= 0xEFFFF)));
+}
+
+
+/**
+ * raptor_unicode_is_xml10_namestartchar:
+ * @c: Unicode character to check
+ *
+ * Check if Unicode character is legal to start an XML 1.0 Name
+ *
+ * See <ulink url="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName">Namespaces in XML REC 1999-01-14</ulink>
+ * updating
+ * <ulink url="http://www.w3.org/TR/2004/REC-xml-20040204/">Extensible Markup Language (XML) 1.0 (Third Edition) REC 2004-02-04</ulink>
+ * excluding the ':'
+ *
+ * Return value: non-0 if legal
+ **/
+int
+raptor_unicode_is_xml10_namestartchar(raptor_unichar c)
+{
+ return (raptor_unicode_is_letter(c) ||
+ (c == '_'));
+}
+
+
+/**
+ * raptor_unicode_is_namestartchar:
+ * @c: Unicode character to check
+ *
+ * Check if Unicode character is legal to start an XML Name
+ *
+ * Return value: non-0 if the character is legal
+ **/
+int
+raptor_unicode_is_namestartchar(raptor_unichar c) {
+#ifdef RAPTOR_XML_1_1
+ return raptor_unicode_is_xml11_namestartchar(c);
+#else
+ return raptor_unicode_is_xml10_namestartchar(c);
+#endif
+}
+
+
+/**
+ * raptor_unicode_is_xml11_namechar:
+ * @c: Unicode character
+ *
+ * Check if a Unicode codepoint is a legal to continue an XML 1.1 Name
+ *
+ * See <ulink url="http://www.w3.org/TR/2004/REC-xml11-20040204/">Namespaces in XML 1.1 REC 2004-02-04</ulink>
+ * updating
+ * <ulink url="http://www.w3.org/TR/2004/REC-xml-20040204/">Extensible Markup Language (XML) 1.0 (Third Edition) REC 2004-02-04</ulink> sec 2.3, [4a]
+ * excluding the ':'
+ *
+ * Return value: non-0 if legal
+ **/
+int
+raptor_unicode_is_xml11_namechar(raptor_unichar c)
+{
+ return (raptor_unicode_is_xml11_namestartchar(c) ||
+ (c == 0x002D) || /* '-' */
+ (c == 0x002E) || /* '.' */
+ (c >= 0x0030 && c <= 0x0039) || /* 0-9 */
+ (c == 0x00B7) ||
+ (c >= 0x0300 && c <=0x036F) ||
+ (c >= 0x203F && c <=0x2040));
+}
+
+
+/**
+ * raptor_unicode_is_xml10_namechar:
+ * @c: Unicode character
+ *
+ * Check if a Unicode codepoint is a legal to continue an XML 1.0 Name
+ *
+ * See <ulink url="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCNameChar">Namespaces in XML REC 1999-01-14 NCNameChar</ulink>
+ * updating
+ * <ulink url="http://www.w3.org/TR/2004/REC-xml-20040204/">Extensible Markup Language (XML) 1.0 (Third Edition) REC 2004-02-04</ulink>
+ * excluding the ':'
+ *
+ * Return value: non-0 if legal
+ **/
+int
+raptor_unicode_is_xml10_namechar(raptor_unichar c)
+{
+ return (raptor_unicode_is_letter(c) ||
+ raptor_unicode_is_digit(c) ||
+ (c == 0x002E) || /* '.' */
+ (c == 0x002D) || /* '-' */
+ (c == 0x005F) || /* '_' */
+ raptor_unicode_is_combiningchar(c) ||
+ raptor_unicode_is_extender(c));
+}
+
+
+/**
+ * raptor_unicode_is_namechar:
+ * @c: Unicode character to check
+ *
+ * Check if Unicode character is legal to continue an XML Name .
+ *
+ * Return value: non-0 if the character is legal
+ **/
+int
+raptor_unicode_is_namechar(raptor_unichar c)
+{
+#ifdef RAPTOR_XML_1_1
+ return raptor_unicode_is_xml11_namechar(c);
+#else
+ return raptor_unicode_is_xml10_namechar(c);
+#endif
+}
+
+
+/*
+ * All this below was derived by machine-transforming the classes in Appendix B
+ * of http://www.w3.org/TR/2000/REC-xml-20001006
+ */
+
+static int
+raptor_unicode_is_letter(long c)
+{
+ return(raptor_unicode_is_basechar(c) ||
+ raptor_unicode_is_ideographic(c));
+}
+
+
+static int
+raptor_unicode_is_basechar(long c)
+{
+ /* http://www.w3.org/TR/2000/REC-xml-20001006#NT-BaseChar */
+ return((c >= 0x0041 && c <= 0x005A ) ||
+ (c >= 0x0061 && c <= 0x007A ) ||
+ (c >= 0x00C0 && c <= 0x00D6 ) ||
+ (c >= 0x00D8 && c <= 0x00F6 ) ||
+ (c >= 0x00F8 && c <= 0x00FF ) ||
+ (c >= 0x0100 && c <= 0x0131 ) ||
+ (c >= 0x0134 && c <= 0x013E ) ||
+ (c >= 0x0141 && c <= 0x0148 ) ||
+ (c >= 0x014A && c <= 0x017E ) ||
+ (c >= 0x0180 && c <= 0x01C3 ) ||
+ (c >= 0x01CD && c <= 0x01F0 ) ||
+ (c >= 0x01F4 && c <= 0x01F5 ) ||
+ (c >= 0x01FA && c <= 0x0217 ) ||
+ (c >= 0x0250 && c <= 0x02A8 ) ||
+ (c >= 0x02BB && c <= 0x02C1 ) ||
+ (c == 0x0386) ||
+ (c >= 0x0388 && c <= 0x038A ) ||
+ (c == 0x038C) ||
+ (c >= 0x038E && c <= 0x03A1 ) ||
+ (c >= 0x03A3 && c <= 0x03CE ) ||
+ (c >= 0x03D0 && c <= 0x03D6 ) ||
+ (c == 0x03DA) ||
+ (c == 0x03DC) ||
+ (c == 0x03DE) ||
+ (c == 0x03E0) ||
+ (c >= 0x03E2 && c <= 0x03F3 ) ||
+ (c >= 0x0401 && c <= 0x040C ) ||
+ (c >= 0x040E && c <= 0x044F ) ||
+ (c >= 0x0451 && c <= 0x045C ) ||
+ (c >= 0x045E && c <= 0x0481 ) ||
+ (c >= 0x0490 && c <= 0x04C4 ) ||
+ (c >= 0x04C7 && c <= 0x04C8 ) ||
+ (c >= 0x04CB && c <= 0x04CC ) ||
+ (c >= 0x04D0 && c <= 0x04EB ) ||
+ (c >= 0x04EE && c <= 0x04F5 ) ||
+ (c >= 0x04F8 && c <= 0x04F9 ) ||
+ (c >= 0x0531 && c <= 0x0556 ) ||
+ (c == 0x0559) ||
+ (c >= 0x0561 && c <= 0x0586 ) ||
+ (c >= 0x05D0 && c <= 0x05EA ) ||
+ (c >= 0x05F0 && c <= 0x05F2 ) ||
+ (c >= 0x0621 && c <= 0x063A ) ||
+ (c >= 0x0641 && c <= 0x064A ) ||
+ (c >= 0x0671 && c <= 0x06B7 ) ||
+ (c >= 0x06BA && c <= 0x06BE ) ||
+ (c >= 0x06C0 && c <= 0x06CE ) ||
+ (c >= 0x06D0 && c <= 0x06D3 ) ||
+ (c == 0x06D5) ||
+ (c >= 0x06E5 && c <= 0x06E6 ) ||
+ (c >= 0x0905 && c <= 0x0939 ) ||
+ (c == 0x093D) ||
+ (c >= 0x0958 && c <= 0x0961 ) ||
+ (c >= 0x0985 && c <= 0x098C ) ||
+ (c >= 0x098F && c <= 0x0990 ) ||
+ (c >= 0x0993 && c <= 0x09A8 ) ||
+ (c >= 0x09AA && c <= 0x09B0 ) ||
+ (c == 0x09B2) ||
+ (c >= 0x09B6 && c <= 0x09B9 ) ||
+ (c >= 0x09DC && c <= 0x09DD ) ||
+ (c >= 0x09DF && c <= 0x09E1 ) ||
+ (c >= 0x09F0 && c <= 0x09F1 ) ||
+ (c >= 0x0A05 && c <= 0x0A0A ) ||
+ (c >= 0x0A0F && c <= 0x0A10 ) ||
+ (c >= 0x0A13 && c <= 0x0A28 ) ||
+ (c >= 0x0A2A && c <= 0x0A30 ) ||
+ (c >= 0x0A32 && c <= 0x0A33 ) ||
+ (c >= 0x0A35 && c <= 0x0A36 ) ||
+ (c >= 0x0A38 && c <= 0x0A39 ) ||
+ (c >= 0x0A59 && c <= 0x0A5C ) ||
+ (c == 0x0A5E) ||
+ (c >= 0x0A72 && c <= 0x0A74 ) ||
+ (c >= 0x0A85 && c <= 0x0A8B ) ||
+ (c == 0x0A8D) ||
+ (c >= 0x0A8F && c <= 0x0A91 ) ||
+ (c >= 0x0A93 && c <= 0x0AA8 ) ||
+ (c >= 0x0AAA && c <= 0x0AB0 ) ||
+ (c >= 0x0AB2 && c <= 0x0AB3 ) ||
+ (c >= 0x0AB5 && c <= 0x0AB9 ) ||
+ (c == 0x0ABD) ||
+ (c == 0x0AE0) ||
+ (c >= 0x0B05 && c <= 0x0B0C ) ||
+ (c >= 0x0B0F && c <= 0x0B10 ) ||
+ (c >= 0x0B13 && c <= 0x0B28 ) ||
+ (c >= 0x0B2A && c <= 0x0B30 ) ||
+ (c >= 0x0B32 && c <= 0x0B33 ) ||
+ (c >= 0x0B36 && c <= 0x0B39 ) ||
+ (c == 0x0B3D) ||
+ (c >= 0x0B5C && c <= 0x0B5D ) ||
+ (c >= 0x0B5F && c <= 0x0B61 ) ||
+ (c >= 0x0B85 && c <= 0x0B8A ) ||
+ (c >= 0x0B8E && c <= 0x0B90 ) ||
+ (c >= 0x0B92 && c <= 0x0B95 ) ||
+ (c >= 0x0B99 && c <= 0x0B9A ) ||
+ (c == 0x0B9C) ||
+ (c >= 0x0B9E && c <= 0x0B9F ) ||
+ (c >= 0x0BA3 && c <= 0x0BA4 ) ||
+ (c >= 0x0BA8 && c <= 0x0BAA ) ||
+ (c >= 0x0BAE && c <= 0x0BB5 ) ||
+ (c >= 0x0BB7 && c <= 0x0BB9 ) ||
+ (c >= 0x0C05 && c <= 0x0C0C ) ||
+ (c >= 0x0C0E && c <= 0x0C10 ) ||
+ (c >= 0x0C12 && c <= 0x0C28 ) ||
+ (c >= 0x0C2A && c <= 0x0C33 ) ||
+ (c >= 0x0C35 && c <= 0x0C39 ) ||
+ (c >= 0x0C60 && c <= 0x0C61 ) ||
+ (c >= 0x0C85 && c <= 0x0C8C ) ||
+ (c >= 0x0C8E && c <= 0x0C90 ) ||
+ (c >= 0x0C92 && c <= 0x0CA8 ) ||
+ (c >= 0x0CAA && c <= 0x0CB3 ) ||
+ (c >= 0x0CB5 && c <= 0x0CB9 ) ||
+ (c == 0x0CDE) ||
+ (c >= 0x0CE0 && c <= 0x0CE1 ) ||
+ (c >= 0x0D05 && c <= 0x0D0C ) ||
+ (c >= 0x0D0E && c <= 0x0D10 ) ||
+ (c >= 0x0D12 && c <= 0x0D28 ) ||
+ (c >= 0x0D2A && c <= 0x0D39 ) ||
+ (c >= 0x0D60 && c <= 0x0D61 ) ||
+ (c >= 0x0E01 && c <= 0x0E2E ) ||
+ (c == 0x0E30) ||
+ (c >= 0x0E32 && c <= 0x0E33 ) ||
+ (c >= 0x0E40 && c <= 0x0E45 ) ||
+ (c >= 0x0E81 && c <= 0x0E82 ) ||
+ (c == 0x0E84) ||
+ (c >= 0x0E87 && c <= 0x0E88 ) ||
+ (c == 0x0E8A) ||
+ (c == 0x0E8D) ||
+ (c >= 0x0E94 && c <= 0x0E97 ) ||
+ (c >= 0x0E99 && c <= 0x0E9F ) ||
+ (c >= 0x0EA1 && c <= 0x0EA3 ) ||
+ (c == 0x0EA5) ||
+ (c == 0x0EA7) ||
+ (c >= 0x0EAA && c <= 0x0EAB ) ||
+ (c >= 0x0EAD && c <= 0x0EAE ) ||
+ (c == 0x0EB0) ||
+ (c >= 0x0EB2 && c <= 0x0EB3 ) ||
+ (c == 0x0EBD) ||
+ (c >= 0x0EC0 && c <= 0x0EC4 ) ||
+ (c >= 0x0F40 && c <= 0x0F47 ) ||
+ (c >= 0x0F49 && c <= 0x0F69 ) ||
+ (c >= 0x10A0 && c <= 0x10C5 ) ||
+ (c >= 0x10D0 && c <= 0x10F6 ) ||
+ (c == 0x1100) ||
+ (c >= 0x1102 && c <= 0x1103 ) ||
+ (c >= 0x1105 && c <= 0x1107 ) ||
+ (c == 0x1109) ||
+ (c >= 0x110B && c <= 0x110C ) ||
+ (c >= 0x110E && c <= 0x1112 ) ||
+ (c == 0x113C) ||
+ (c == 0x113E) ||
+ (c == 0x1140) ||
+ (c == 0x114C) ||
+ (c == 0x114E) ||
+ (c == 0x1150) ||
+ (c >= 0x1154 && c <= 0x1155 ) ||
+ (c == 0x1159) ||
+ (c >= 0x115F && c <= 0x1161 ) ||
+ (c == 0x1163) ||
+ (c == 0x1165) ||
+ (c == 0x1167) ||
+ (c == 0x1169) ||
+ (c >= 0x116D && c <= 0x116E ) ||
+ (c >= 0x1172 && c <= 0x1173 ) ||
+ (c == 0x1175) ||
+ (c == 0x119E) ||
+ (c == 0x11A8) ||
+ (c == 0x11AB) ||
+ (c >= 0x11AE && c <= 0x11AF ) ||
+ (c >= 0x11B7 && c <= 0x11B8 ) ||
+ (c == 0x11BA) ||
+ (c >= 0x11BC && c <= 0x11C2 ) ||
+ (c == 0x11EB) ||
+ (c == 0x11F0) ||
+ (c == 0x11F9) ||
+ (c >= 0x1E00 && c <= 0x1E9B ) ||
+ (c >= 0x1EA0 && c <= 0x1EF9 ) ||
+ (c >= 0x1F00 && c <= 0x1F15 ) ||
+ (c >= 0x1F18 && c <= 0x1F1D ) ||
+ (c >= 0x1F20 && c <= 0x1F45 ) ||
+ (c >= 0x1F48 && c <= 0x1F4D ) ||
+ (c >= 0x1F50 && c <= 0x1F57 ) ||
+ (c == 0x1F59) ||
+ (c == 0x1F5B) ||
+ (c == 0x1F5D) ||
+ (c >= 0x1F5F && c <= 0x1F7D ) ||
+ (c >= 0x1F80 && c <= 0x1FB4 ) ||
+ (c >= 0x1FB6 && c <= 0x1FBC ) ||
+ (c == 0x1FBE) ||
+ (c >= 0x1FC2 && c <= 0x1FC4 ) ||
+ (c >= 0x1FC6 && c <= 0x1FCC ) ||
+ (c >= 0x1FD0 && c <= 0x1FD3 ) ||
+ (c >= 0x1FD6 && c <= 0x1FDB ) ||
+ (c >= 0x1FE0 && c <= 0x1FEC ) ||
+ (c >= 0x1FF2 && c <= 0x1FF4 ) ||
+ (c >= 0x1FF6 && c <= 0x1FFC ) ||
+ (c == 0x2126) ||
+ (c >= 0x212A && c <= 0x212B ) ||
+ (c == 0x212E) ||
+ (c >= 0x2180 && c <= 0x2182 ) ||
+ (c >= 0x3041 && c <= 0x3094 ) ||
+ (c >= 0x30A1 && c <= 0x30FA ) ||
+ (c >= 0x3105 && c <= 0x312C ) ||
+ (c >= 0xAC00 && c <= 0xD7A3 )
+ );
+}
+
+
+static int
+raptor_unicode_is_ideographic(long c)
+{
+ /* http://www.w3.org/TR/2000/REC-xml-20001006#NT-Ideographic */
+ return((c >= 0x4E00 && c <= 0x9FA5 ) ||
+ (c == 0x3007) ||
+ (c >= 0x3021 && c <= 0x3029 ));
+}
+
+
+static int
+raptor_unicode_is_combiningchar(long c)
+{
+ /* http://www.w3.org/TR/2000/REC-xml-20001006#NT-CombiningChar */
+ return((c >= 0x0300 && c <= 0x0345 ) ||
+ (c >= 0x0360 && c <= 0x0361 ) ||
+ (c >= 0x0483 && c <= 0x0486 ) ||
+ (c >= 0x0591 && c <= 0x05A1 ) ||
+ (c >= 0x05A3 && c <= 0x05B9 ) ||
+ (c >= 0x05BB && c <= 0x05BD ) ||
+ (c == 0x05BF) ||
+ (c >= 0x05C1 && c <= 0x05C2 ) ||
+ (c == 0x05C4) ||
+ (c >= 0x064B && c <= 0x0652 ) ||
+ (c == 0x0670) ||
+ (c >= 0x06D6 && c <= 0x06DC ) ||
+ (c >= 0x06DD && c <= 0x06DF ) ||
+ (c >= 0x06E0 && c <= 0x06E4 ) ||
+ (c >= 0x06E7 && c <= 0x06E8 ) ||
+ (c >= 0x06EA && c <= 0x06ED ) ||
+ (c >= 0x0901 && c <= 0x0903 ) ||
+ (c == 0x093C) ||
+ (c >= 0x093E && c <= 0x094C ) ||
+ (c == 0x094D) ||
+ (c >= 0x0951 && c <= 0x0954 ) ||
+ (c >= 0x0962 && c <= 0x0963 ) ||
+ (c >= 0x0981 && c <= 0x0983 ) ||
+ (c == 0x09BC) ||
+ (c == 0x09BE) ||
+ (c == 0x09BF) ||
+ (c >= 0x09C0 && c <= 0x09C4 ) ||
+ (c >= 0x09C7 && c <= 0x09C8 ) ||
+ (c >= 0x09CB && c <= 0x09CD ) ||
+ (c == 0x09D7) ||
+ (c >= 0x09E2 && c <= 0x09E3 ) ||
+ (c == 0x0A02) ||
+ (c == 0x0A3C) ||
+ (c == 0x0A3E) ||
+ (c == 0x0A3F) ||
+ (c >= 0x0A40 && c <= 0x0A42 ) ||
+ (c >= 0x0A47 && c <= 0x0A48 ) ||
+ (c >= 0x0A4B && c <= 0x0A4D ) ||
+ (c >= 0x0A70 && c <= 0x0A71 ) ||
+ (c >= 0x0A81 && c <= 0x0A83 ) ||
+ (c == 0x0ABC) ||
+ (c >= 0x0ABE && c <= 0x0AC5 ) ||
+ (c >= 0x0AC7 && c <= 0x0AC9 ) ||
+ (c >= 0x0ACB && c <= 0x0ACD ) ||
+ (c >= 0x0B01 && c <= 0x0B03 ) ||
+ (c == 0x0B3C) ||
+ (c >= 0x0B3E && c <= 0x0B43 ) ||
+ (c >= 0x0B47 && c <= 0x0B48 ) ||
+ (c >= 0x0B4B && c <= 0x0B4D ) ||
+ (c >= 0x0B56 && c <= 0x0B57 ) ||
+ (c >= 0x0B82 && c <= 0x0B83 ) ||
+ (c >= 0x0BBE && c <= 0x0BC2 ) ||
+ (c >= 0x0BC6 && c <= 0x0BC8 ) ||
+ (c >= 0x0BCA && c <= 0x0BCD ) ||
+ (c == 0x0BD7) ||
+ (c >= 0x0C01 && c <= 0x0C03 ) ||
+ (c >= 0x0C3E && c <= 0x0C44 ) ||
+ (c >= 0x0C46 && c <= 0x0C48 ) ||
+ (c >= 0x0C4A && c <= 0x0C4D ) ||
+ (c >= 0x0C55 && c <= 0x0C56 ) ||
+ (c >= 0x0C82 && c <= 0x0C83 ) ||
+ (c >= 0x0CBE && c <= 0x0CC4 ) ||
+ (c >= 0x0CC6 && c <= 0x0CC8 ) ||
+ (c >= 0x0CCA && c <= 0x0CCD ) ||
+ (c >= 0x0CD5 && c <= 0x0CD6 ) ||
+ (c >= 0x0D02 && c <= 0x0D03 ) ||
+ (c >= 0x0D3E && c <= 0x0D43 ) ||
+ (c >= 0x0D46 && c <= 0x0D48 ) ||
+ (c >= 0x0D4A && c <= 0x0D4D ) ||
+ (c == 0x0D57) ||
+ (c == 0x0E31) ||
+ (c >= 0x0E34 && c <= 0x0E3A ) ||
+ (c >= 0x0E47 && c <= 0x0E4E ) ||
+ (c == 0x0EB1) ||
+ (c >= 0x0EB4 && c <= 0x0EB9 ) ||
+ (c >= 0x0EBB && c <= 0x0EBC ) ||
+ (c >= 0x0EC8 && c <= 0x0ECD ) ||
+ (c >= 0x0F18 && c <= 0x0F19 ) ||
+ (c == 0x0F35) ||
+ (c == 0x0F37) ||
+ (c == 0x0F39) ||
+ (c == 0x0F3E) ||
+ (c == 0x0F3F) ||
+ (c >= 0x0F71 && c <= 0x0F84 ) ||
+ (c >= 0x0F86 && c <= 0x0F8B ) ||
+ (c >= 0x0F90 && c <= 0x0F95 ) ||
+ (c == 0x0F97) ||
+ (c >= 0x0F99 && c <= 0x0FAD ) ||
+ (c >= 0x0FB1 && c <= 0x0FB7 ) ||
+ (c == 0x0FB9) ||
+ (c >= 0x20D0 && c <= 0x20DC ) ||
+ (c == 0x20E1) ||
+ (c >= 0x302A && c <= 0x302F ) ||
+ (c == 0x3099) ||
+ (c == 0x309A));
+}
+
+
+static int
+raptor_unicode_is_digit(long c)
+{
+ /* http://www.w3.org/TR/2000/REC-xml-20001006#NT-Digit */
+ return((c >= 0x0030 && c <= 0x0039 ) ||
+ (c >= 0x0660 && c <= 0x0669 ) ||
+ (c >= 0x06F0 && c <= 0x06F9 ) ||
+ (c >= 0x0966 && c <= 0x096F ) ||
+ (c >= 0x09E6 && c <= 0x09EF ) ||
+ (c >= 0x0A66 && c <= 0x0A6F ) ||
+ (c >= 0x0AE6 && c <= 0x0AEF ) ||
+ (c >= 0x0B66 && c <= 0x0B6F ) ||
+ (c >= 0x0BE7 && c <= 0x0BEF ) ||
+ (c >= 0x0C66 && c <= 0x0C6F ) ||
+ (c >= 0x0CE6 && c <= 0x0CEF ) ||
+ (c >= 0x0D66 && c <= 0x0D6F ) ||
+ (c >= 0x0E50 && c <= 0x0E59 ) ||
+ (c >= 0x0ED0 && c <= 0x0ED9 ) ||
+ (c >= 0x0F20 && c <= 0x0F29 ));
+}
+
+
+static int
+raptor_unicode_is_extender(long c)
+{
+ /* http://www.w3.org/TR/2000/REC-xml-20001006#NT-Extender */
+ return((c == 0x00B7) ||
+ (c == 0x02D0) ||
+ (c == 0x02D1) ||
+ (c == 0x0387) ||
+ (c == 0x0640) ||
+ (c == 0x0E46) ||
+ (c == 0x0EC6) ||
+ (c == 0x3005) ||
+ (c >= 0x3031 && c <= 0x3035 ) ||
+ (c >= 0x309D && c <= 0x309E ) ||
+ (c >= 0x30FC && c <= 0x30FE ));
+}
+
+
+/*
+ * raptor_unicode_check_utf8_nfc_string:
+ * @input: UTF-8 string
+ * @length: length of string
+ * @error: pointer to error flag (or NULL)
+ *
+ * INTERNAL - Check if a Unicode UTF-8 encoded string is in Unicode Normal Form C.
+ *
+ * Return value: Non 0 if the string is in NFC (or an error)
+ **/
+int
+raptor_unicode_check_utf8_nfc_string(const unsigned char *input, size_t length,
+ int *error)
+{
+ unsigned int i;
+ int plain = 1;
+
+ for(i = 0; i < length; i++)
+ if(input[i] > 0x7f) {
+ plain = 0;
+ break;
+ }
+
+ if(plain)
+ return 1;
+
+#ifdef RAPTOR_NFC_ICU
+ return raptor_nfc_icu_check(input, length, error);
+#else
+ if(error)
+ *error = 1;
+ return 1;
+#endif
+}
+
+
+/**
+ * raptor_unicode_check_utf8_string:
+ * @string: UTF-8 string
+ * @length: length of string
+ *
+ * Check a string is valid Unicode UTF-8.
+ *
+ * Return value: Non 0 if the string is UTF-8
+ **/
+int
+raptor_unicode_check_utf8_string(const unsigned char *string, size_t length)
+{
+ while(length > 0) {
+ raptor_unichar unichar = 0;
+
+ int unichar_len;
+ unichar_len = raptor_unicode_utf8_string_get_char(string, length, &unichar);
+ if(unichar_len < 0 || RAPTOR_GOOD_CAST(size_t, unichar_len) > length)
+ return 0;
+
+ if(unichar > raptor_unicode_max_codepoint)
+ return 0;
+
+ string += unichar_len;
+ length -= unichar_len;
+ }
+ return 1;
+}
+
+
+/**
+ * raptor_unicode_utf8_strlen:
+ * @string: buffer
+ * @length: buffer length
+ *
+ * Calculate the number of Unicode characters in the given UTF-8 encoded buffer
+ *
+ * Return value: number of characters or <0 if sequence is invalid
+ */
+int
+raptor_unicode_utf8_strlen(const unsigned char *string, size_t length)
+{
+ int unicode_length = 0;
+
+ while(length > 0) {
+ int unichar_len;
+ unichar_len = raptor_unicode_utf8_string_get_char(string, length, NULL);
+ if(unichar_len < 0 || RAPTOR_GOOD_CAST(size_t, unichar_len) > length) {
+ unicode_length = -1;
+ break;
+ }
+
+ string += unichar_len;
+ length -= unichar_len;
+
+ unicode_length++;
+ }
+
+ return unicode_length;
+}
+
+
+/**
+ * raptor_unicode_utf8_substr:
+ * @dest: destination string buffer to write to (or NULL)
+ * @dest_length_p: location to store actual destination length (or NULL)
+ * @src: source string
+ * @src_length: source length in bytes
+ * @startingLoc: starting location offset 0 for first Unicode character
+ * @length: number of Unicode characters to copy at offset @startingLoc (or < 0)
+ *
+ * Get a unicode (UTF-8) substring of an existing UTF-8 string
+ *
+ * If @dest is NULL, returns the number of bytes needed to write and
+ * does no work.
+ *
+ * Return value: number of bytes used in destination string or 0 on failure
+ */
+size_t
+raptor_unicode_utf8_substr(unsigned char* dest, size_t* dest_length_p,
+ const unsigned char* src, size_t src_length,
+ int startingLoc, int length)
+{
+ size_t dest_length = 0; /* destination unicode characters count */
+ size_t dest_bytes = 0; /* destination UTF-8 bytes count */
+ int dest_offset = 0; /* destination string unicode characters index */
+ unsigned char* p = dest;
+
+ if(!src)
+ return 0;
+
+ while(src_length > 0) {
+ int unichar_len;
+
+ unichar_len = raptor_unicode_utf8_string_get_char(src, src_length, NULL);
+ if(unichar_len < 0 || RAPTOR_GOOD_CAST(size_t, unichar_len) > src_length)
+ break;
+
+ if(dest_offset >= startingLoc) {
+ if(p) {
+ /* copy 1 Unicode character to dest */
+ memcpy(p, src, RAPTOR_GOOD_CAST(size_t, unichar_len));
+ p += unichar_len;
+ }
+ dest_bytes += unichar_len;
+
+ dest_length++;
+ if(length >= 0 && dest_length == RAPTOR_GOOD_CAST(size_t, length))
+ break;
+ }
+
+ src += unichar_len;
+ src_length -= unichar_len;
+
+ dest_offset++;
+ }
+
+ if(p)
+ *p = '\0';
+
+ if(dest_length_p)
+ *dest_length_p = dest_length;
+
+ return dest_bytes;
+}
diff --git a/src/raptor_uri.c b/src/raptor_uri.c
new file mode 100644
index 0000000..8230b52
--- /dev/null
+++ b/src/raptor_uri.c
@@ -0,0 +1,1961 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_uri.c - Raptor URI class
+ *
+ * Copyright (C) 2002-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2002-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+/* for ptrdiff_t */
+#ifdef HAVE_STDDEF_H
+#include <stddef.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/* Symbian OS uses similar path mappings as Windows but does not necessarily have the WIN32 flag defined */
+#if defined(__SYMBIAN32__) && !defined(WIN32)
+#define WIN32
+#endif
+
+
+/* raptor_uri structure */
+struct raptor_uri_s {
+ /* raptor_world object */
+ raptor_world *world;
+ /* the URI string */
+ unsigned char *string;
+ /* length of string */
+ unsigned int length;
+ /* usage count */
+ int usage;
+};
+
+
+#ifndef STANDALONE
+
+/**
+ * raptor_new_uri_from_counted_string:
+ * @world: raptor_world object
+ * @uri_string: URI string.
+ * @length: length of URI string
+ *
+ * Constructor - create a raptor URI from a UTF-8 encoded Unicode string.
+ *
+ * Note: The @uri_string need not be NULL terminated - a NULL will be
+ * added to the copied string used.
+ *
+ * Return value: a new #raptor_uri object or NULL on failure.
+ **/
+raptor_uri*
+raptor_new_uri_from_counted_string(raptor_world* world,
+ const unsigned char *uri_string,
+ size_t length)
+{
+ raptor_uri* new_uri;
+ unsigned char *new_string;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!uri_string || !*uri_string)
+ return NULL;
+
+ raptor_world_open(world);
+
+#ifdef DEBUG
+ RAPTOR_ASSERT(strlen((const char*)uri_string) != length,
+ "URI string is not declared length");
+#endif
+
+ if(world->uris_tree) {
+ raptor_uri key; /* on stack - not allocated */
+
+ /* just to be safe */
+ memset(&key, 0, sizeof(key));
+
+ key.string = (unsigned char*)uri_string;
+ key.length = (unsigned int)length;
+
+ /* if existing URI found in tree, return it */
+ new_uri = (raptor_uri*)raptor_avltree_search(world->uris_tree, &key);
+ if(new_uri) {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("Found existing URI %s with current usage %d\n",
+ uri_string, new_uri->usage);
+#endif
+
+ new_uri->usage++;
+
+ goto unlock;
+ }
+ }
+
+
+ /* otherwise create a new one */
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("Creating new URI %s in hash\n", uri_string);
+#endif
+
+ new_uri = RAPTOR_CALLOC(raptor_uri*, 1, sizeof(*new_uri));
+ if(!new_uri)
+ goto unlock;
+
+ new_uri->world = world;
+ new_uri->length = (unsigned int)length;
+
+ new_string = RAPTOR_MALLOC(unsigned char*, length + 1);
+ if(!new_string) {
+ RAPTOR_FREE(raptor_uri, new_uri);
+ new_uri=NULL;
+ goto unlock;
+ }
+
+ memcpy((char*)new_string, (const char*)uri_string, length);
+ new_string[length] = '\0';
+ new_uri->string = new_string;
+
+ new_uri->usage = 1; /* for user */
+
+ /* store in tree */
+ if(world->uris_tree) {
+ if(raptor_avltree_add(world->uris_tree, new_uri)) {
+ RAPTOR_FREE(char*, new_string);
+ RAPTOR_FREE(raptor_uri, new_uri);
+ new_uri = NULL;
+ }
+ }
+
+ unlock:
+
+ return new_uri;
+}
+
+
+/**
+ * raptor_new_uri:
+ * @world: raptor_world object
+ * @uri_string: URI string.
+ *
+ * Constructor - create a raptor URI from a UTF-8 encoded Unicode string.
+ *
+ * Return value: a new #raptor_uri object or NULL on failure.
+ **/
+raptor_uri*
+raptor_new_uri(raptor_world* world, const unsigned char *uri_string)
+{
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!uri_string)
+ return NULL;
+
+ raptor_world_open(world);
+
+ return raptor_new_uri_from_counted_string(world, uri_string,
+ strlen((const char*)uri_string));
+}
+
+
+/**
+ * raptor_new_uri_from_uri_local_name:
+ * @world: raptor_world object
+ * @uri: existing #raptor_uri
+ * @local_name: local name
+ *
+ * Constructor - create a raptor URI from an existing URI and a local name.
+ *
+ * Creates a new URI from the concatenation of the @local_name to the
+ * @uri. This is NOT relative URI resolution, which is done by the
+ * raptor_new_uri_relative_to_base() constructor.
+ *
+ * Return value: a new #raptor_uri object or NULL on failure.
+ **/
+raptor_uri*
+raptor_new_uri_from_uri_local_name(raptor_world* world, raptor_uri *uri,
+ const unsigned char *local_name)
+{
+ size_t len;
+ unsigned char *new_string;
+ raptor_uri* new_uri;
+ size_t local_name_length;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!uri)
+ return NULL;
+
+ raptor_world_open(world);
+
+ local_name_length = strlen((const char*)local_name);
+
+ len = uri->length + local_name_length;
+ new_string = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(!new_string)
+ return NULL;
+
+ memcpy((char*)new_string, (const char*)uri->string, uri->length);
+ memcpy((char*)(new_string + uri->length), (const char*)local_name,
+ local_name_length + 1);
+
+ new_uri = raptor_new_uri_from_counted_string(world, new_string, len);
+ RAPTOR_FREE(char*, new_string);
+
+ return new_uri;
+}
+
+
+/**
+ * raptor_new_uri_relative_to_base_counted:
+ * @world: raptor_world object
+ * @base_uri: existing base URI
+ * @uri_string: relative URI string
+ * @uri_len: length of URI string (or 0)
+ *
+ * Constructor - create a raptor URI from a base URI and a relative counted URI string.
+ *
+ * Return value: a new #raptor_uri object or NULL on failure.
+ **/
+raptor_uri*
+raptor_new_uri_relative_to_base_counted(raptor_world* world,
+ raptor_uri *base_uri,
+ const unsigned char *uri_string,
+ size_t uri_len)
+{
+ unsigned char *buffer;
+ size_t buffer_length;
+ raptor_uri* new_uri;
+ size_t actual_length;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!base_uri || !uri_string)
+ return NULL;
+
+ if(!uri_len)
+ uri_len = strlen(RAPTOR_GOOD_CAST(const char*, uri_string));
+
+ raptor_world_open(world);
+
+ /* If URI string is empty, just copy base URI */
+ if(!*uri_string)
+ return raptor_uri_copy(base_uri);
+
+ /* +1 for adding any missing URI path '/' */
+ buffer_length = base_uri->length + uri_len + 1;
+ buffer = RAPTOR_MALLOC(unsigned char*, buffer_length + 1);
+ if(!buffer)
+ return NULL;
+
+ actual_length = raptor_uri_resolve_uri_reference(base_uri->string, uri_string,
+ buffer, buffer_length);
+
+ new_uri = raptor_new_uri_from_counted_string(world, buffer, actual_length);
+ RAPTOR_FREE(char*, buffer);
+ return new_uri;
+}
+
+
+/**
+ * raptor_new_uri_relative_to_base:
+ * @world: raptor_world object
+ * @base_uri: existing base URI
+ * @uri_string: relative URI string
+ *
+ * Constructor - create a raptor URI from a base URI and a relative URI string.
+ *
+ * Use raptor_new_uri_relative_to_base_counted() if the URI string length is known
+ *
+ * Return value: a new #raptor_uri object or NULL on failure.
+ **/
+raptor_uri*
+raptor_new_uri_relative_to_base(raptor_world* world,
+ raptor_uri *base_uri,
+ const unsigned char *uri_string)
+{
+ return raptor_new_uri_relative_to_base_counted(world, base_uri,
+ uri_string, 0);
+}
+
+
+/**
+ * raptor_new_uri_from_id:
+ * @world: raptor_world object
+ * @base_uri: existing base URI
+ * @id: RDF ID
+ *
+ * Constructor - create a new URI from a base URI and RDF ID.
+ *
+ * This creates a URI equivalent to concatenating @base_uri with
+ * ## and @id.
+ *
+ * Return value: a new #raptor_uri object or NULL on failure.
+ **/
+raptor_uri*
+raptor_new_uri_from_id(raptor_world *world, raptor_uri *base_uri,
+ const unsigned char *id)
+{
+ raptor_uri *new_uri;
+ unsigned char *local_name;
+ size_t len;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!base_uri || !id)
+ return NULL;
+
+ raptor_world_open(world);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("Using ID %s\n", id);
+#endif
+
+ len = strlen((char*)id);
+ /* "#id\0" */
+ local_name = RAPTOR_MALLOC(unsigned char*, len + 1 + 1);
+ if(!local_name)
+ return NULL;
+
+ *local_name = '#';
+ memcpy(local_name + 1, id, len + 1); /* len+1 to copy NUL */
+
+ new_uri = raptor_new_uri_relative_to_base(world, base_uri, local_name);
+ RAPTOR_FREE(char*, local_name);
+ return new_uri;
+}
+
+
+/**
+ * raptor_new_uri_for_rdf_concept:
+ * @world: raptor_world object
+ * @name: RDF namespace concept
+ *
+ * Constructor - create a raptor URI for the RDF namespace concept name.
+ *
+ * Example: u=raptor_new_uri_for_rdf_concept("value") creates a new
+ * URI for the rdf:value term.
+ *
+ * Return value: a new #raptor_uri object or NULL on failure
+ **/
+raptor_uri*
+raptor_new_uri_for_rdf_concept(raptor_world* world, const unsigned char *name)
+{
+ raptor_uri *new_uri;
+ unsigned char *new_uri_string;
+ const unsigned char *base_uri_string = raptor_rdf_namespace_uri;
+ size_t base_uri_string_len = raptor_rdf_namespace_uri_len;
+ size_t new_uri_string_len;
+ size_t name_len;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!name)
+ return NULL;
+
+ raptor_world_open(world);
+
+ name_len = strlen((const char*)name);
+ new_uri_string_len = base_uri_string_len + name_len;
+ new_uri_string = RAPTOR_MALLOC(unsigned char*, new_uri_string_len + 1);
+ if(!new_uri_string)
+ return NULL;
+
+ memcpy(new_uri_string, base_uri_string, base_uri_string_len);
+ memcpy(new_uri_string + base_uri_string_len, name, name_len + 1); /* copy NUL */
+
+ new_uri = raptor_new_uri_from_counted_string(world, new_uri_string,
+ new_uri_string_len);
+ RAPTOR_FREE(char*, new_uri_string);
+
+ return new_uri;
+}
+
+
+/**
+ * raptor_new_uri_from_uri_or_file_string:
+ * @world: raptor_world object
+ * @base_uri: existing base URI
+ * @uri_or_file_string: URI string or filename
+ *
+ * Constructor - create a raptor URI from a string that is a relative or absolute URI or a filename
+ *
+ * If the @uri_or_file_string is a filename PATH that exists, the
+ * result will be a URI file://PATH
+ *
+ * Return value: a new #raptor_uri object or NULL on failure
+ **/
+raptor_uri*
+raptor_new_uri_from_uri_or_file_string(raptor_world* world,
+ raptor_uri* base_uri,
+ const unsigned char* uri_or_file_string)
+{
+ raptor_uri* new_uri = NULL;
+ const unsigned char* new_uri_string;
+ const char* path;
+
+ if(raptor_uri_filename_exists(uri_or_file_string) > 0) {
+ /* uri_or_file_string is a file name, not a file: URI */
+ path = RAPTOR_GOOD_CAST(const char*, uri_or_file_string);
+ } else {
+ new_uri = raptor_new_uri_relative_to_base(world, base_uri,
+ uri_or_file_string);
+ new_uri_string = raptor_uri_as_string(new_uri);
+ path = raptor_uri_uri_string_to_counted_filename_fragment(new_uri_string,
+ NULL, NULL, NULL);
+ }
+
+ if(path) {
+ if(new_uri) {
+ raptor_free_uri(new_uri);
+ new_uri = NULL;
+ }
+
+ /* new_uri_string is a string like "file://" + path */
+ new_uri_string = raptor_uri_filename_to_uri_string(path);
+ if(path != RAPTOR_GOOD_CAST(const char*, uri_or_file_string))
+ RAPTOR_FREE(const char*, path);
+
+ new_uri = raptor_new_uri(world, new_uri_string);
+ RAPTOR_FREE(char*, new_uri_string);
+ }
+
+ return new_uri;
+}
+
+
+/**
+ * raptor_free_uri:
+ * @uri: URI to destroy
+ *
+ * Destructor - destroy a #raptor_uri object
+ **/
+void
+raptor_free_uri(raptor_uri *uri)
+{
+ if(!uri)
+ return;
+
+ uri->usage--;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("URI %s usage count now %d\n", uri->string, uri->usage);
+#endif
+
+ /* decrement usage, don't free if not 0 yet*/
+ if(uri->usage > 0) {
+ return;
+ }
+
+ /* this does not free the uri */
+ if(uri->world->uris_tree)
+ raptor_avltree_delete(uri->world->uris_tree, uri);
+
+ if(uri->string)
+ RAPTOR_FREE(char*, uri->string);
+ RAPTOR_FREE(raptor_uri, uri);
+}
+
+
+/**
+ * raptor_uri_equals:
+ * @uri1: URI 1 (may be NULL)
+ * @uri2: URI 2 (may be NULL)
+ *
+ * Check if two URIs are equal.
+ *
+ * A NULL URI is not equal to a non-NULL URI.
+ *
+ * Return value: non-0 if the URIs are equal
+ **/
+int
+raptor_uri_equals(raptor_uri* uri1, raptor_uri* uri2)
+{
+ if(uri1 && uri2) {
+ /* Both not-NULL - compare for equality */
+ if(uri1 == uri2)
+ return 1;
+ else if (uri1->length != uri2->length)
+ /* Different if lengths are different */
+ return 0;
+ else
+ /* Same length compare: do not need strncmp() NUL checking */
+ return memcmp((const char*)uri1->string, (const char*)uri2->string,
+ uri1->length) == 0;
+ } else if(uri1 || uri2)
+ /* Only one is NULL - not equal */
+ return 0;
+ else
+ /* both NULL - equal */
+ return 1;
+}
+
+
+/**
+ * raptor_uri_compare:
+ * @uri1: URI 1 (may be NULL)
+ * @uri2: URI 2 (may be NULL)
+ *
+ * Compare two URIs, ala strcmp.
+ *
+ * A NULL URI is always less than (never equal to) a non-NULL URI.
+ *
+ * Return value: -1 if uri1 < uri2, 0 if equal, 1 if uri1 > uri2
+ **/
+int
+raptor_uri_compare(raptor_uri* uri1, raptor_uri* uri2)
+{
+ if(uri1 == uri2)
+ return 0;
+
+ if(uri1 && uri2) {
+ /* compare common (shortest) prefix */
+ unsigned int len = (uri1->length > uri2->length) ?
+ uri2->length : uri1->length;
+
+ /* Same length compare: Do not need the strncmp() NUL checking */
+ int result = memcmp((const char*)uri1->string, (const char*)uri2->string,
+ len);
+ if(!result)
+ /* if prefix is the same, the shorter is earlier */
+ result = uri1->length - uri2->length;
+ return result;
+ }
+
+ /* One arg is NULL - sort that first */
+ return (!uri1) ? -1 : 1;
+}
+
+
+/**
+ * raptor_uri_copy:
+ * @uri: URI object
+ *
+ * Constructor - get a copy of a URI.
+ *
+ * Return value: a new #raptor_uri object or NULL on failure
+ **/
+raptor_uri*
+raptor_uri_copy(raptor_uri *uri)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(uri, raptor_uri, NULL);
+
+ uri->usage++;
+ return uri;
+}
+
+
+/**
+ * raptor_uri_as_string:
+ * @uri: #raptor_uri object
+ *
+ * Get a string representation of a URI.
+ *
+ * Returns a shared pointer to a string representation of @uri. This
+ * string is shared and must not be freed, otherwise see use the
+ * raptor_uri_to_string() or raptor_uri_to_counted_string() methods.
+ *
+ * Return value: shared string representation of URI
+ **/
+unsigned char*
+raptor_uri_as_string(raptor_uri *uri)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(uri, raptor_uri, NULL);
+
+ return uri->string;
+}
+
+
+/**
+ * raptor_uri_as_counted_string:
+ * @uri: URI object
+ * @len_p: address of length variable or NULL
+ *
+ * Get a string representation of a URI with count.
+ *
+ * Returns a shared pointer to a string representation of @uri along
+ * with the length of the string in @len_p, if not NULL. This
+ * string is shared and must not be freed, otherwise see use the
+ * raptor_uri_to_string() or raptor_uri_to_counted_string() methods.
+ *
+ * Return value: shared string representation of URI
+ **/
+unsigned char*
+raptor_uri_as_counted_string(raptor_uri *uri, size_t* len_p)
+{
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(uri, raptor_uri, NULL);
+
+ if(len_p)
+ *len_p = uri->length;
+ return uri->string;
+}
+
+
+/**
+ * raptor_uri_filename_to_uri_string:
+ * @filename: The filename to convert
+ *
+ * Converts a filename to a file: URI.
+ *
+ * Handles the OS-specific escaping on turning filenames into URIs
+ * and returns a new buffer that the caller must free(). Turns a
+ * space in the filename into \%20 and '%' into \%25.
+ *
+ * Return value: A newly allocated string with the URI or NULL on failure
+ **/
+unsigned char *
+raptor_uri_filename_to_uri_string(const char *filename)
+{
+ unsigned char *buffer = NULL;
+ const char *from;
+ char *to;
+#ifndef WIN32
+ char *path = NULL;
+#endif
+ /* "file://" ... \0 */
+ size_t len = 7 + 1;
+
+ if(!filename)
+ return NULL;
+
+#ifdef WIN32
+/*
+ * On WIN32, filenames turn into
+ * "file://" + translated filename
+ * where the translation is \\ turns into / and ' ' into %20, '%' into %25
+ * and if the filename does not start with '\', it is relative
+ * in which case, a . is appended to the authority
+ *
+ * e.g
+ * FILENAME URI
+ * c:\windows\system file:///c:/windows/system
+ * \\server\dir\file.doc file://server/dir/file.doc
+ * a:foo file:///a:./foo
+ * C:\Documents and Settings\myapp\foo.bat
+ * file:///C:/Documents%20and%20Settings/myapp/foo.bat
+ *
+ * There are also UNC names \\server\share\blah
+ * that turn into file:///server/share/blah
+ * using the above algorithm.
+ */
+ if(filename[1] == ':' && filename[2] != '\\')
+ len += 3; /* relative filename - add / and ./ */
+ else if(*filename == '\\')
+ len -= 2; /* two // from not needed in filename */
+ else
+ len++; /* / at start of path */
+
+#else
+/* others - unix: turn spaces into %20, '%' into %25 */
+
+ if(*filename != '/') {
+ size_t path_max;
+#ifdef PATH_MAX
+ path_max = PATH_MAX;
+#else
+ path_max = 1024; /* an initial guess at the length */
+#endif
+ path = (char*)malloc(path_max);
+ while(1) {
+ /* malloc() failed or getcwd() succeeded */
+ errno = 0;
+ if(!path || getcwd(path, path_max))
+ break;
+
+ /* failed */
+ if(errno != ERANGE)
+ break;
+
+ /* try again with a bigger buffer */
+ path_max *= 2;
+ path = (char*)realloc(path, path_max);
+ }
+ if(!path)
+ goto path_done;
+
+ strcat(path, "/");
+ strcat(path, filename);
+ filename = (const char*)path;
+ }
+#endif
+
+ /* add URI-escaped filename length */
+ for(from = filename; *from ; from++) {
+ len++;
+ if(*from == ' ' || *from == '%')
+ len += 2; /* strlen(%xx)-1 */
+ }
+
+ buffer = RAPTOR_MALLOC(unsigned char*, len);
+ if(!buffer)
+ goto path_done;
+
+ memcpy(buffer, "file://", 7);
+ from = filename;
+ to = (char*)(buffer+7);
+#ifdef WIN32
+ if(*from == '\\' && from[1] == '\\')
+ from += 2;
+ else
+ *to++ ='/';
+#endif
+ while(*from) {
+ char c=*from++;
+#ifdef WIN32
+ if(c == '\\')
+ *to++ ='/';
+ else if(c == ':') {
+ *to++ = c;
+ if(*from != '\\') {
+ *to++ ='.';
+ *to++ ='/';
+ }
+ } else
+#endif
+ if(c == ' ' || c == '%') {
+ *to++ = '%';
+ *to++ = '2';
+ *to++ = (c == ' ') ? '0' : '5';
+ } else
+ *to++ = c;
+ }
+ *to='\0';
+
+ path_done:
+#ifndef WIN32
+ if(path)
+ free(path);
+#endif
+
+ return buffer;
+}
+
+
+/**
+ * raptor_uri_uri_string_to_counted_filename_fragment:
+ * @uri_string: The file: URI to convert
+ * @len_p: address of filename length variable or NULL
+ * @fragment_p: Address of pointer to store any URI fragment or NULL
+ * @fragment_len_p: address of length variable or NULL
+ *
+ * Convert a file: URI to a counted filename and counted fragment.
+ *
+ * Handles the OS-specific file: URIs to filename mappings. Returns
+ * a new buffer containing the filename that the caller must free.
+ *
+ * If @len_p is present the length of the filename is returned
+ *
+ * If @fragment_p is given, a new string containing the URI fragment
+ * is returned, or NULL if none is present. If @fragment_len_p is present
+ * the length is returned in it.
+ *
+ * Return value: A newly allocated string with the filename or NULL on failure
+ **/
+char *
+raptor_uri_uri_string_to_counted_filename_fragment(const unsigned char *uri_string,
+ size_t* len_p,
+ unsigned char **fragment_p,
+ size_t* fragment_len_p)
+{
+ char *filename;
+ size_t len = 0;
+ raptor_uri_detail *ud = NULL;
+ unsigned char *from;
+ char *to;
+#ifdef WIN32
+ unsigned char *p;
+#endif
+
+ if(!uri_string || !*uri_string)
+ return NULL;
+
+ ud = raptor_new_uri_detail(uri_string);
+ if(!ud)
+ return NULL;
+
+
+ if(!ud->scheme || raptor_strcasecmp((const char*)ud->scheme, "file")) {
+ raptor_free_uri_detail(ud);
+ return NULL;
+ }
+
+ if(ud->authority) {
+ if(!*ud->authority)
+ ud->authority = NULL;
+ else if(!raptor_strcasecmp((const char*)ud->authority, "localhost"))
+ ud->authority = NULL;
+ }
+
+ /* Cannot do much if there is no path */
+ if(!ud->path || (ud->path && !*ud->path)) {
+ raptor_free_uri_detail(ud);
+ return NULL;
+ }
+
+ /* See raptor_uri_filename_to_uri_string for details of the mapping */
+#ifdef WIN32
+ if(ud->authority)
+ len += ud->authority_len+3;
+
+ p = ud->path;
+ /* remove leading slash from path if there is one */
+ if(*p && p[0] == '/') {
+ p++;
+ len--;
+ }
+ /* handle case where path starts with drive letter */
+ if(*p && (p[1] == '|' || p[1] == ':')) {
+ /* Either
+ * "a:" like in file://a|/... or file://a:/...
+ * or
+ * "a:." like in file://a:./foo
+ * giving device-relative path a:foo
+ */
+ if(p[2] == '.') {
+ p[2] = *p;
+ p[3] = ':';
+ p += 2;
+ len -= 2; /* remove 2 for ./ */
+ } else
+ p[1] = ':';
+ }
+#endif
+
+
+ /* add URI-escaped filename length */
+ for(from = ud->path; *from ; from++) {
+ len++;
+ if(*from == '%')
+ from += 2;
+ }
+
+
+ /* Something is wrong */
+ if(!len) {
+ raptor_free_uri_detail(ud);
+ return NULL;
+ }
+
+ filename = RAPTOR_MALLOC(char*, len + 1);
+ if(!filename) {
+ raptor_free_uri_detail(ud);
+ return NULL;
+ }
+
+ to = filename;
+
+#ifdef WIN32
+ if(ud->authority) {
+ *to++ = '\\';
+ *to++ = '\\';
+ from = ud->authority;
+ while( (*to++ = *from++) )
+ ;
+ to--;
+ *to++ = '\\';
+ }
+
+ /* copy path after all /s */
+ from = p;
+#else
+ from = ud->path;
+#endif
+
+ while(*from) {
+ char c = *from++;
+#ifdef WIN32
+ if(c == '/')
+ *to++ = '\\';
+ else
+#endif
+ if(c == '%') {
+ if(*from && from[1]) {
+ char hexbuf[3];
+ char *endptr = NULL;
+ hexbuf[0] = (char)*from;
+ hexbuf[1] = (char)from[1];
+ hexbuf[2]='\0';
+ c = (char)strtol((const char*)hexbuf, &endptr, 16);
+ if(endptr == &hexbuf[2])
+ *to++ = c;
+ }
+ from += 2;
+ } else
+ *to++ = c;
+ }
+ *to = '\0';
+
+ if(len_p)
+ *len_p = len;
+
+ if(fragment_p) {
+ size_t fragment_len = 0;
+
+ if(ud->fragment) {
+ fragment_len = ud->fragment_len;
+ *fragment_p = RAPTOR_MALLOC(unsigned char*, fragment_len + 1);
+ if(*fragment_p)
+ memcpy(*fragment_p, ud->fragment, fragment_len + 1);
+ } else
+ *fragment_p = NULL;
+ if(fragment_len_p)
+ *fragment_len_p = fragment_len;
+ }
+
+ raptor_free_uri_detail(ud);
+
+ return filename;
+}
+
+
+/**
+ * raptor_uri_uri_string_to_filename_fragment:
+ * @uri_string: The file: URI to convert
+ * @fragment_p: Address of pointer to store any URI fragment or NULL
+ *
+ * Convert a file: URI to a filename and fragment.
+ *
+ * Handles the OS-specific file: URIs to filename mappings. Returns
+ * a new buffer containing the filename that the caller must free.
+ *
+ * If @fragment_p is given, a new string containing the URI fragment
+ * is returned, or NULL if none is present
+ *
+ * See also raptor_uri_uri_string_to_counted_filename_fragment()
+ *
+ * Return value: A newly allocated string with the filename or NULL on failure
+ **/
+char *
+raptor_uri_uri_string_to_filename_fragment(const unsigned char *uri_string,
+ unsigned char **fragment_p)
+{
+ return raptor_uri_uri_string_to_counted_filename_fragment(uri_string, NULL,
+ fragment_p, NULL);
+}
+
+
+/**
+ * raptor_uri_uri_string_to_filename:
+ * @uri_string: The file: URI to convert
+ *
+ * Convert a file: URI to a filename.
+ *
+ * Handles the OS-specific file: URIs to filename mappings. Returns
+ * a new buffer containing the filename that the caller must free.
+ *
+ * See also raptor_uri_uri_string_to_counted_filename_fragment()
+ *
+ * Return value: A newly allocated string with the filename or NULL on failure
+ **/
+char *
+raptor_uri_uri_string_to_filename(const unsigned char *uri_string)
+{
+ return raptor_uri_uri_string_to_counted_filename_fragment(uri_string, NULL,
+ NULL, NULL);
+}
+
+
+
+/**
+ * raptor_uri_uri_string_is_file_uri:
+ * @uri_string: The URI string to check
+ *
+ * Check if a URI string is a file: URI.
+ *
+ * Return value: Non zero if URI string is a file: URI
+ **/
+int
+raptor_uri_uri_string_is_file_uri(const unsigned char* uri_string)
+{
+ if(!uri_string || !*uri_string)
+ return 1;
+
+ return raptor_strncasecmp((const char*)uri_string, "file:", 5) == 0;
+}
+
+
+/**
+ * raptor_new_uri_for_xmlbase:
+ * @old_uri: URI to transform
+ *
+ * Constructor - create a URI suitable for use as an XML Base.
+ *
+ * Takes an existing URI and ensures it has a path (default /) and has
+ * no fragment or query arguments - XML base does not use these.
+ *
+ * Return value: new #raptor_uri object or NULL on failure.
+ **/
+raptor_uri*
+raptor_new_uri_for_xmlbase(raptor_uri* old_uri)
+{
+ unsigned char *uri_string;
+ unsigned char *new_uri_string;
+ raptor_uri* new_uri;
+ raptor_uri_detail *ud;
+
+ if(!old_uri)
+ return NULL;
+
+ uri_string = raptor_uri_as_string(old_uri);
+
+ ud = raptor_new_uri_detail(uri_string);
+ if(!ud)
+ return NULL;
+
+ if(!ud->path) {
+ ud->path = (unsigned char*)"/";
+ ud->path_len = 1;
+ }
+
+ ud->query = NULL; ud->query_len = 0;
+ ud->fragment = NULL; ud->fragment_len = 0;
+ new_uri_string = raptor_uri_detail_to_string(ud, NULL);
+ raptor_free_uri_detail(ud);
+ if(!new_uri_string)
+ return NULL;
+
+ new_uri = raptor_new_uri(old_uri->world, new_uri_string);
+ RAPTOR_FREE(char*, new_uri_string);
+
+ return new_uri;
+}
+
+
+/**
+ * raptor_new_uri_for_retrieval:
+ * @old_uri: URI to transform
+ *
+ * Constructor - create a URI suitable for retrieval.
+ *
+ * Takes an existing URI and ensures it has a path (default /) and has
+ * no fragment - URI retrieval does not use the fragment part.
+ *
+ * Return value: new #raptor_uri object or NULL on failure.
+ **/
+raptor_uri*
+raptor_new_uri_for_retrieval(raptor_uri* old_uri)
+{
+ unsigned char *uri_string;
+ unsigned char *new_uri_string;
+ raptor_uri* new_uri;
+ raptor_uri_detail *ud;
+
+ if(!old_uri)
+ return NULL;
+
+ uri_string = raptor_uri_as_string(old_uri);
+
+ ud = raptor_new_uri_detail(uri_string);
+ if(!ud)
+ return NULL;
+
+ if(!ud->path) {
+ ud->path = (unsigned char*)"/";
+ ud->path_len = 1;
+ }
+
+ ud->fragment = NULL; ud->fragment_len = 0;
+ new_uri_string = raptor_uri_detail_to_string(ud, NULL);
+ raptor_free_uri_detail(ud);
+ if(!new_uri_string)
+ return NULL;
+
+ new_uri = raptor_new_uri(old_uri->world, new_uri_string);
+ RAPTOR_FREE(char*, new_uri_string);
+
+ return new_uri;
+}
+
+
+int
+raptor_uri_init(raptor_world* world)
+{
+ if(world->uri_interning && !world->uris_tree) {
+ world->uris_tree = raptor_new_avltree((raptor_data_compare_handler)raptor_uri_compare,
+ /* free */ NULL, 0);
+ if(!world->uris_tree) {
+#ifdef RAPTOR_DEBUG
+ RAPTOR_FATAL1("Failed to create raptor URI avltree");
+#else
+ raptor_log_error(world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Failed to create raptor URI avltree");
+#endif
+ }
+
+ }
+
+ return 0;
+}
+
+
+void
+raptor_uri_finish(raptor_world* world)
+{
+ if(world->uris_tree) {
+ raptor_free_avltree(world->uris_tree);
+ world->uris_tree = NULL;
+ }
+}
+
+
+/*
+ * raptor_uri_path_common_base_length:
+ * @first_path: The first path (path only, not a full URI)
+ * @first_path_len: Length of first_path
+ * @second_path: The second path (path only, not a full URI)
+ * @second_path_len: Length of second_path
+ *
+ * Find the common base length of two URI path components.
+ *
+ * Return value: Length of the common base path
+ **/
+
+static size_t
+raptor_uri_path_common_base_length(const unsigned char *first_path,
+ size_t first_path_len,
+ const unsigned char *second_path,
+ size_t second_path_len)
+{
+ ptrdiff_t common_len = 0;
+ const unsigned char *cur_ptr = first_path;
+ const unsigned char *prev_ptr = first_path;
+
+ /* Compare each path component of first_path and second_path until
+ * there is a mismatch. Then return the length from the start of
+ * the path to the last successful match.
+ */
+ while((cur_ptr = (const unsigned char*)memchr(cur_ptr, '/', first_path_len))) {
+ cur_ptr++;
+ if(strncmp((const char*)first_path + common_len,
+ (const char*)second_path + common_len, cur_ptr - prev_ptr))
+ break;
+
+ first_path_len -= cur_ptr - prev_ptr;
+ prev_ptr = cur_ptr;
+ common_len = prev_ptr - first_path;
+ }
+
+ return prev_ptr - first_path;
+}
+
+
+/*
+ * raptor_uri_path_make_relative_path:
+ * @from_path: The base path (path only, not a full URI)
+ * @from_path_len: Length of the base path
+ * @to_path: The reference path (path only, not a full URI)
+ * @to_path_len: Length of the reference path
+ * @suffix: String to be appended to the final relative path
+ * @suffix_len: Length of the suffix
+ * @result_length_p: Location to store the length of the string or NULL
+ *
+ * Make a relative URI path.
+ *
+ * Return value: A newly allocated relative path string or NULL on failure.
+ **/
+
+static unsigned char *
+raptor_uri_path_make_relative_path(const unsigned char *from_path, size_t from_path_len,
+ const unsigned char *to_path, size_t to_path_len,
+ const unsigned char *suffix, size_t suffix_len,
+ size_t *result_length_p)
+{
+ size_t common_len, cur_len, final_len, to_dir_len;
+ int up_dirs = 0;
+ const unsigned char *cur_ptr, *prev_ptr;
+ unsigned char *final_path, *final_path_cur;
+
+ common_len = raptor_uri_path_common_base_length(from_path, from_path_len,
+ to_path, to_path_len);
+
+ if(result_length_p)
+ *result_length_p=0;
+
+ /* Count how many directories we have to go up */
+ cur_ptr = from_path + common_len;
+ prev_ptr = cur_ptr;
+ cur_len = from_path_len - common_len;
+ while((cur_ptr = (const unsigned char*)memchr(cur_ptr, '/', cur_len))) {
+ cur_ptr++;
+ up_dirs++;
+ cur_len -= cur_ptr - prev_ptr;
+ prev_ptr = cur_ptr;
+ }
+
+ /* Calculate how many characters of to_path subdirs (counted from the
+ common base) we have to add. */
+ cur_ptr = to_path + common_len;
+ prev_ptr = cur_ptr;
+ cur_len = to_path_len - common_len;
+ while((cur_ptr = (const unsigned char*)memchr(cur_ptr, '/', cur_len))) {
+ cur_ptr++;
+ cur_len -= cur_ptr - prev_ptr;
+ prev_ptr = cur_ptr;
+ }
+ to_dir_len = prev_ptr - (to_path + common_len);
+
+ /* Create the final relative path */
+ final_len = up_dirs*3 + to_dir_len + suffix_len; /* 3 for each "../" */
+ final_path = RAPTOR_MALLOC(unsigned char*, final_len + 1);
+ if(!final_path)
+ return NULL;
+ *final_path=0;
+
+ /* First, add the necessary "../" parts */
+ final_path_cur = final_path;
+ while(up_dirs--) {
+ *final_path_cur++='.';
+ *final_path_cur++='.';
+ *final_path_cur++='/';
+ }
+
+ /* Then, add the path from the common base to the to_path */
+ memcpy(final_path_cur, to_path + common_len, to_dir_len);
+ final_path_cur += to_dir_len;
+
+ /* Finally, add the suffix */
+ if(suffix && suffix_len) {
+ /* As a special case, if the suffix begins with a dot (".") and the final
+ output string so far is non-empty, skip the dot. */
+ if(*suffix == '.' && final_path_cur != final_path) {
+ /* Make sure that the dot really represents a directory and it's not
+ just part of a file name like ".foo". In other words, the dot must
+ either be the only character or the next character must be the
+ fragment or the query character. */
+ if((suffix_len == 1) ||
+ (suffix_len > 1 && (suffix[1] == '#' || suffix[1] == '?'))) {
+ suffix++;
+ suffix_len--;
+ final_len--;
+ }
+ }
+ if(suffix_len)
+ memcpy(final_path_cur, suffix, suffix_len);
+ }
+
+ final_path[final_len] = 0;
+
+ if(result_length_p)
+ *result_length_p=final_len;
+
+ return final_path;
+}
+
+
+/**
+ * raptor_uri_to_relative_counted_uri_string:
+ * @base_uri: The base absolute URI to resolve against (or NULL)
+ * @reference_uri: The reference absolute URI to use
+ * @length_p: Location to store the length of the relative URI string or NULL
+ *
+ * Get the counted relative URI string of a URI against a base URI.
+ *
+ * Return value: A newly allocated relative URI string or NULL on failure
+ **/
+
+unsigned char*
+raptor_uri_to_relative_counted_uri_string(raptor_uri *base_uri,
+ raptor_uri *reference_uri,
+ size_t *length_p) {
+ raptor_uri_detail *base_detail = NULL, *reference_detail;
+ const unsigned char *base, *reference_str, *base_file, *reference_file;
+ unsigned char *suffix, *cur_ptr;
+ size_t base_len, reference_len, reference_file_len, suffix_len;
+ unsigned char *result = NULL;
+ int suffix_is_result = 0;
+
+ if(!reference_uri)
+ return NULL;
+
+ if(length_p)
+ *length_p=0;
+
+ reference_str = raptor_uri_as_counted_string(reference_uri, &reference_len);
+ reference_detail = raptor_new_uri_detail(reference_str);
+ if(!reference_detail)
+ goto err;
+
+ if(!base_uri)
+ goto buildresult;
+
+ base = raptor_uri_as_counted_string(base_uri, &base_len);
+ base_detail = raptor_new_uri_detail(base);
+ if(!base_detail)
+ goto err;
+
+ /* Check if the whole URIs are equal */
+ if(raptor_uri_equals(base_uri, reference_uri)) {
+ reference_len = 0;
+ goto buildresult;
+ }
+
+ /* Check if scheme and authority of the URIs are equal */
+ if(base_detail->scheme_len == reference_detail->scheme_len &&
+ base_detail->authority_len == reference_detail->authority_len &&
+ !strncmp((const char*)base_detail->scheme,
+ (const char*)reference_detail->scheme,
+ base_detail->scheme_len) &&
+ !strncmp((const char*)base_detail->authority,
+ (const char*)reference_detail->authority,
+ base_detail->authority_len)) {
+
+ if(!base_detail->path) {
+ if(reference_detail->path) {
+ /* if base has no path then the relative URI is relative
+ * to scheme+authority so assemble that in the suffix
+ * buffer (adding any query part or fragment needed)
+ */
+ reference_file = reference_detail->path;
+ reference_file_len = reference_detail->path_len;
+ suffix_is_result = 1;
+ goto addqueryfragment;
+ }
+ goto buildresult;
+ }
+
+ /* Find the file name components */
+ base_file = (const unsigned char*)strrchr((const char*)base_detail->path, '/');
+ if(!base_file)
+ goto buildresult;
+ base_file++;
+
+ if(!reference_detail->path)
+ goto buildresult;
+ reference_file = (const unsigned char*)strrchr((const char*)reference_detail->path, '/');
+ if(!reference_file)
+ goto buildresult;
+ reference_file++;
+
+ reference_file_len = reference_detail->path_len -
+ (reference_file - reference_detail->path);
+
+ if(!strcmp((const char*)base_detail->path, (const char*)reference_detail->path)) {
+ /* If the file names are equal, don't put them in the relative URI */
+ reference_file = NULL;
+ reference_file_len = 0;
+ } else if(*base_file && !*reference_file) {
+ /* If the base file is non-empty, but the reference file is
+ * empty, use "." as the file name.
+ */
+ reference_file = (const unsigned char*)".";
+ reference_file_len = 1;
+ }
+
+ addqueryfragment:
+ /* Calculate the length of the suffix (file name + query + fragment) */
+ suffix_len = reference_file_len + reference_detail->query_len +
+ reference_detail->fragment_len;
+
+ if(reference_detail->query)
+ suffix_len++; /* add one char for the '?' */
+ if(reference_detail->fragment)
+ suffix_len++; /* add one char for the '#' */
+
+ /* Assemble the suffix */
+ suffix = RAPTOR_MALLOC(unsigned char*, suffix_len + 1);
+ if(!suffix)
+ goto err;
+ cur_ptr = suffix;
+ if(reference_file) {
+ memcpy(suffix, reference_file, reference_file_len);
+ cur_ptr+= reference_file_len;
+ }
+
+ if(reference_detail->query) {
+ *cur_ptr++='?';
+ memcpy(cur_ptr, reference_detail->query, reference_detail->query_len);
+ cur_ptr+= reference_detail->query_len;
+ }
+
+ if(reference_detail->fragment) {
+ *cur_ptr++='#';
+ memcpy(cur_ptr, reference_detail->fragment, reference_detail->fragment_len);
+ cur_ptr+= reference_detail->fragment_len;
+ }
+ *cur_ptr=0;
+
+ if(suffix_is_result) {
+ /* If suffix is what we need, just use that as the result */
+ result = suffix;
+ if(length_p)
+ *length_p=suffix_len;
+ } else {
+ /* Otherwise create the full relative path */
+ result = raptor_uri_path_make_relative_path(base_detail->path,
+ base_detail->path_len,
+ reference_detail->path,
+ reference_detail->path_len,
+ suffix,
+ suffix_len,
+ length_p);
+ RAPTOR_FREE(char*, suffix);
+ }
+ }
+
+
+ buildresult:
+ /* If result is NULL at this point, it means that we were unable to find a
+ relative URI, so we'll return a full absolute URI instead. */
+ if(!result) {
+ result = RAPTOR_MALLOC(unsigned char*, reference_len + 1);
+ if(result) {
+ if(reference_len)
+ memcpy(result, reference_str, reference_len);
+ result[reference_len] = 0;
+ if(length_p)
+ *length_p=reference_len;
+ }
+ }
+
+ err:
+ if(base_detail)
+ raptor_free_uri_detail(base_detail);
+ raptor_free_uri_detail(reference_detail);
+
+ return result;
+}
+
+
+/**
+ * raptor_uri_to_relative_uri_string:
+ * @base_uri: The base absolute URI to resolve against
+ * @reference_uri: The reference absolute URI to use
+ *
+ * Get the relative URI string of a URI against a base URI.
+ *
+ * Return value: A newly allocated relative URI string or NULL on failure
+ **/
+unsigned char*
+raptor_uri_to_relative_uri_string(raptor_uri *base_uri,
+ raptor_uri *reference_uri)
+{
+ return raptor_uri_to_relative_counted_uri_string(base_uri, reference_uri,
+ NULL);
+}
+
+
+/**
+ * raptor_uri_print:
+ * @uri: URI to print
+ * @stream: The file handle to print to
+ *
+ * Print a URI to a file handle.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_uri_print(const raptor_uri* uri, FILE *stream)
+{
+ size_t nwritten = 0;
+ size_t len = 10;
+ unsigned char *string = (unsigned char*)"(NULL URI)";
+ raptor_world* world = NULL;
+
+ if(uri) {
+ world = uri->world;
+ string = raptor_uri_as_counted_string((raptor_uri*)uri, &len);
+ }
+
+ nwritten = fwrite(string, 1, len, stream);
+ if(nwritten != len)
+ raptor_log_error_formatted(world, RAPTOR_LOG_LEVEL_ERROR,
+ NULL, "fwrite failed - %s", strerror(errno));
+
+ return (nwritten == len);
+}
+
+
+/**
+ * raptor_uri_to_counted_string:
+ * @uri: #raptor_uri object
+ * @len_p: Pointer to length (or NULL)
+ *
+ * Get a new counted string for a URI.
+ *
+ * If @len_p is not NULL, the length of the string is stored in it.
+ *
+ * The memory allocated must be freed by the caller and
+ * raptor_free_memory() should be used for best portability.
+ *
+ * Return value: new string or NULL on failure
+ **/
+unsigned char*
+raptor_uri_to_counted_string(raptor_uri *uri, size_t *len_p)
+{
+ size_t len;
+ unsigned char *string;
+ unsigned char *new_string;
+
+ if(!uri)
+ return NULL;
+
+ string = raptor_uri_as_counted_string(uri, &len);
+ if(!string)
+ return NULL;
+
+ new_string = RAPTOR_MALLOC(unsigned char*, len + 1); /* +1 for NULL termination */
+ if(!new_string)
+ return NULL;
+
+ memcpy(new_string, string, len+1);
+
+ if(len_p)
+ *len_p=len;
+ return new_string;
+}
+
+
+/**
+ * raptor_uri_to_string:
+ * @uri: #raptor_uri object
+ *
+ * Get a new string for a URI.
+ *
+ * The memory allocated must be freed by the caller and
+ * raptor_free_memory() should be used for best portability.
+ *
+ * Return value: new string or NULL on failure
+ **/
+unsigned char*
+raptor_uri_to_string(raptor_uri *uri)
+{
+ return raptor_uri_to_counted_string(uri, NULL);
+}
+
+
+/**
+ * raptor_new_uri_from_rdf_ordinal:
+ * @world: raptor_world object
+ * @ordinal: integer rdf:_n
+ *
+ * Internal - convert an integer rdf:_n ordinal to the resource URI
+ *
+ * Return value: new URI object or NULL on failure
+ **/
+raptor_uri*
+raptor_new_uri_from_rdf_ordinal(raptor_world* world, int ordinal)
+{
+ /* strlen(rdf namespace URI) + _ + decimal int number + \0 */
+ unsigned char uri_string[43 + 1 + MAX_ASCII_INT_SIZE + 1];
+ unsigned char *p = uri_string;
+
+ memcpy(p, raptor_rdf_namespace_uri, raptor_rdf_namespace_uri_len);
+ p += raptor_rdf_namespace_uri_len;
+ *p++ = '_';
+ (void)raptor_format_integer(RAPTOR_GOOD_CAST(char*, p),
+ MAX_ASCII_INT_SIZE + 1, ordinal, /* base */ 10,
+ -1, '\0');
+
+ return raptor_new_uri(world, uri_string);
+}
+
+
+/**
+ * raptor_uri_get_world:
+ * @uri: #raptor_uri object
+ *
+ * Get the raptor_world object associated with a raptor_uri.
+ *
+ * Return value: raptor_world object
+ **/
+raptor_world*
+raptor_uri_get_world(raptor_uri *uri)
+{
+ return uri->world;
+}
+
+
+/**
+ * raptor_uri_filename_exists:
+ * @path: file path
+ *
+ * Check if @path points to a file that exists
+ *
+ * Return value: > 0 if file exists, 0 if does not exist, < 0 on error
+ **/
+int
+raptor_uri_filename_exists(const unsigned char* path)
+{
+ int exists = -1;
+#ifdef HAVE_STAT
+ struct stat stat_buffer;
+#endif
+
+ if(!path)
+ return -1;
+
+#ifdef HAVE_STAT
+ if(!stat((const char*)path, &stat_buffer))
+ exists = S_ISREG(stat_buffer.st_mode);
+#else
+ exists = (access(path, R_OK) < 0) ? -1 : 1;
+#endif
+
+ return exists;
+}
+
+
+/**
+ * raptor_uri_file_exists:
+ * @uri: URI string
+ *
+ * Check if a file: URI is a file that exists
+ *
+ * Return value: > 0 if file exists, 0 if does not exist, < 0 if not a file URI or error
+ **/
+int
+raptor_uri_file_exists(raptor_uri* uri)
+{
+ const unsigned char* uri_string;
+
+ if(!uri)
+ return -1;
+
+ uri_string = raptor_uri_as_string(uri);
+ if(!raptor_uri_uri_string_is_file_uri(uri_string))
+ return -1;
+
+ return raptor_uri_filename_exists(uri_string + 6);
+}
+
+#endif /* !STANDALONE */
+
+
+#ifdef STANDALONE
+
+#include <stdio.h>
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+/* one more prototype */
+int main(int argc, char *argv[]);
+
+static const char *program;
+
+
+static int
+assert_uri_is_valid(raptor_uri* uri)
+{
+ if(strlen((const char*)uri->string) != uri->length) {
+ fprintf(stderr,
+ "%s: URI with string '%s' is invalid. length is %d, recorded in object as %d\n",
+ program, uri->string,
+ (int)strlen((const char*)uri->string),
+ (int)uri->length);
+ return 0;
+ }
+
+ return 1;
+}
+
+
+static int
+assert_filename_to_uri (const char *filename, const char *reference_uri)
+{
+ unsigned char *uri;
+
+ uri = raptor_uri_filename_to_uri_string(filename);
+
+ if(!uri || strcmp((const char*)uri, (const char*)reference_uri)) {
+ fprintf(stderr,
+ "%s: raptor_uri_filename_to_uri_string(%s) FAILED gaving URI %s != %s\n",
+ program, filename, uri, reference_uri);
+ if(uri)
+ RAPTOR_FREE(char*, uri);
+ return 1;
+ }
+
+ RAPTOR_FREE(char*, uri);
+ return 0;
+}
+
+
+static int
+assert_uri_to_filename (const char *uri, const char *reference_filename)
+{
+ char *filename;
+
+ filename = raptor_uri_uri_string_to_filename((const unsigned char*)uri);
+
+ if(filename && !reference_filename) {
+ fprintf(stderr,
+ "%s: raptor_uri_uri_string_to_filename(%s) FAILED giving filename %s != NULL\n",
+ program, uri, filename);
+ if(filename)
+ RAPTOR_FREE(char*, filename);
+ return 1;
+ } else if(filename && strcmp(filename, reference_filename)) {
+ fprintf(stderr,
+ "%s: raptor_uri_uri_string_to_filename(%s) FAILED gaving filename %s != %s\n",
+ program, uri, filename, reference_filename);
+ if(filename)
+ RAPTOR_FREE(char*, filename);
+ return 1;
+ }
+
+ RAPTOR_FREE(char*, filename);
+ return 0;
+}
+
+
+static int
+assert_uri_to_relative(raptor_world *world, const char *base, const char *uri, const char *relative)
+{
+ unsigned char *output;
+ int result;
+ raptor_uri* base_uri = NULL;
+ raptor_uri* reference_uri = raptor_new_uri(world, (const unsigned char*)uri);
+ size_t length = 0;
+
+ if(!assert_uri_is_valid(reference_uri))
+ return 1;
+
+ if(base) {
+ base_uri = raptor_new_uri(world, (const unsigned char*)base);
+ if(base_uri && !assert_uri_is_valid(base_uri)) {
+ raptor_free_uri(reference_uri);
+ raptor_free_uri(base_uri);
+ return 1;
+ }
+ }
+
+ output = raptor_uri_to_relative_counted_uri_string(base_uri, reference_uri,
+ &length);
+ result = strcmp(relative, (const char*)output);
+ if(result) {
+ fprintf(stderr,
+ "%s: raptor_uri_string_to_relative_uri_string FAILED: base='%s', uri='%s', expected='%s', got='%s'\n",
+ program, base, uri, relative, output);
+ RAPTOR_FREE(char*, output);
+ return 1;
+ }
+ RAPTOR_FREE(char*, output);
+ if(base_uri)
+ raptor_free_uri(base_uri);
+ raptor_free_uri(reference_uri);
+ return 0;
+}
+
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world;
+ const char *base_uri = "http://example.org/bpath/cpath/d;p?querystr#frag";
+ const char *base_uri_xmlbase = "http://example.org/bpath/cpath/d;p";
+ const char *base_uri_retrievable = "http://example.org/bpath/cpath/d;p?querystr";
+#ifndef WIN32
+#if defined(HAVE_UNISTD_H) && defined(HAVE_SYS_STAT_H)
+ const char* dirs[6] = { "/etc", "/bin", "/tmp", "/lib", "/var", NULL };
+ unsigned char uri_buffer[16]; /* strlen("file:///DIR/foo")+1 */
+ int i;
+ const char *dir;
+#endif
+#endif
+ unsigned char *str;
+ raptor_uri *uri1, *uri2, *uri3;
+
+ int failures = 0;
+
+ world = raptor_new_world();
+ if(!world || raptor_world_open(world))
+ exit(1);
+
+ if((program = strrchr(argv[0], '/')))
+ program++;
+ else if((program = strrchr(argv[0], '\\')))
+ program++;
+ else
+ program = argv[0];
+
+#ifdef WIN32
+ failures += assert_filename_to_uri ("c:\\windows\\system", "file:///c:/windows/system");
+ failures += assert_filename_to_uri ("\\\\server\\share\\file.doc", "file://server/share/file.doc");
+ failures += assert_filename_to_uri ("a:foo", "file:///a:./foo");
+
+ failures += assert_filename_to_uri ("C:\\Documents and Settings\\myapp\\foo.bat", "file:///C:/Documents%20and%20Settings/myapp/foo.bat");
+ failures += assert_filename_to_uri ("C:\\My Documents\\%age.txt", "file:///C:/My%20Documents/%25age.txt");
+
+ failures += assert_uri_to_filename ("file:///c|/windows/system", "c:\\windows\\system");
+ failures += assert_uri_to_filename ("file:///c:/windows/system", "c:\\windows\\system");
+ failures += assert_uri_to_filename ("file://server/share/file.doc", "\\\\server\\share\\file.doc");
+ failures += assert_uri_to_filename ("file:///a:./foo", "a:foo");
+ failures += assert_uri_to_filename ("file:///C:/Documents%20and%20Settings/myapp/foo.bat", "C:\\Documents and Settings\\myapp\\foo.bat");
+ failures += assert_uri_to_filename ("file:///C:/My%20Documents/%25age.txt", "C:\\My Documents\\%age.txt");
+
+
+ failures += assert_uri_to_filename ("file:c:\\thing", "c:\\thing");
+ failures += assert_uri_to_filename ("file:/c:\\thing", "c:\\thing");
+ failures += assert_uri_to_filename ("file://c:\\thing", NULL);
+ failures += assert_uri_to_filename ("file:///c:\\thing", "c:\\thing");
+ failures += assert_uri_to_filename ("file://localhost/", NULL);
+ failures += assert_uri_to_filename ("file://c:\\foo\\bar\\x.rdf", NULL);
+
+#else
+
+ failures += assert_filename_to_uri ("/path/to/file", "file:///path/to/file");
+ failures += assert_filename_to_uri ("/path/to/file with spaces", "file:///path/to/file%20with%20spaces");
+ failures += assert_uri_to_filename ("file:///path/to/file", "/path/to/file");
+ failures += assert_uri_to_filename ("file:///path/to/file%20with%20spaces", "/path/to/file with spaces");
+
+ /* Tests for Issue#0000268 http://bugs.librdf.org/mantis/view.php?id = 268 */
+ failures += assert_uri_to_filename ("file:///path/to/http%253A%252F%252Fwww.example.org%252Fa%252Fb%252Fc", "/path/to/http%3A%2F%2Fwww.example.org%2Fa%2Fb%2Fc");
+ failures += assert_filename_to_uri ("/path/to/http%3A%2F%2Fwww.example.org%2Fa%2Fb%2Fc", "file:///path/to/http%253A%252F%252Fwww.example.org%252Fa%252Fb%252Fc");
+
+#if defined(HAVE_UNISTD_H) && defined(HAVE_SYS_STAT_H)
+ /* Need to test this with a real dir (preferably not /)
+ * This is just a test so pretty likely to work on all development systems
+ * that are not WIN32
+ */
+
+ for(i = 0; (dir = dirs[i]); i++) {
+ struct stat buf;
+ if(!lstat(dir, &buf) && S_ISDIR(buf.st_mode) && !S_ISLNK(buf.st_mode)) {
+ if(!chdir(dir))
+ break;
+ }
+ }
+ if(!dir)
+ fprintf(stderr,
+ "%s: WARNING: Found no convenient directory - not testing relative files\n",
+ program);
+ else {
+ sprintf((char*)uri_buffer, "file://%s/foo", dir);
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr,
+ "%s: Checking relative file name 'foo' in dir %s expecting URI %s\n",
+ program, dir, uri_buffer);
+#endif
+ failures += assert_filename_to_uri ("foo", (const char*)uri_buffer);
+ }
+#endif
+
+#endif
+
+ uri1 = raptor_new_uri(world, (const unsigned char*)base_uri);
+
+ str = raptor_uri_as_string(uri1);
+ if(strcmp((const char*)str, base_uri)) {
+ fprintf(stderr,
+ "%s: raptor_uri_as_string(%s) FAILED gaving %s != %s\n",
+ program, base_uri, str, base_uri);
+ failures++;
+ }
+
+ uri2 = raptor_new_uri_for_xmlbase(uri1);
+ str = raptor_uri_as_string(uri2);
+ if(strcmp((const char*)str, base_uri_xmlbase)) {
+ fprintf(stderr,
+ "%s: raptor_new_uri_for_xmlbase(URI %s) FAILED giving %s != %s\n",
+ program, base_uri, str, base_uri_xmlbase);
+ failures++;
+ }
+
+ uri3 = raptor_new_uri_for_retrieval(uri1);
+
+ str = raptor_uri_as_string(uri3);
+ if(strcmp((const char*)str, base_uri_retrievable)) {
+ fprintf(stderr,
+ "%s: raptor_new_uri_for_retrievable(%s) FAILED gaving %s != %s\n",
+ program, base_uri, str, base_uri_retrievable);
+ failures++;
+ }
+
+ raptor_free_uri(uri3);
+ raptor_free_uri(uri2);
+ raptor_free_uri(uri1);
+
+ failures += assert_uri_to_relative(world, NULL, "http://example.com/foo/bar", "http://example.com/foo/bar");
+ failures += assert_uri_to_relative(world, "", "http://example.com/foo/bar", "http://example.com/foo/bar");
+ failures += assert_uri_to_relative(world, "foo:", "http://example.com/foo/bar", "http://example.com/foo/bar");
+ failures += assert_uri_to_relative(world, "http://example.com/base/foo?foo#foo", "http://example.com/base/bar?bar#bar", "bar?bar#bar");
+ failures += assert_uri_to_relative(world, "http://example.com/base/foo", "http://example.com/base/foo/", "foo/");
+ failures += assert_uri_to_relative(world, "http://example.com/base/foo", "http://example.com/base/foo/.foo", "foo/.foo");
+ failures += assert_uri_to_relative(world, "http://example.com/base/foo", "http://example.com/base/foo/.foo#bar", "foo/.foo#bar");
+ failures += assert_uri_to_relative(world, "http://example.com/base/foo", "http://example.com/base/foo/bar", "foo/bar");
+ failures += assert_uri_to_relative(world, "http://example.com/base/foo", "http://example.com/base/foo#bar", "#bar");
+ failures += assert_uri_to_relative(world, "http://example.com/base/foo", "http://example.com/base/bar#foo", "bar#foo");
+ failures += assert_uri_to_relative(world, "http://example.com/base/foo", "http://example.com/otherbase/foo", "../otherbase/foo");
+ failures += assert_uri_to_relative(world, "http://example.com/base/foo", "http://example.com/otherbase/bar", "../otherbase/bar");
+ failures += assert_uri_to_relative(world, "http://example.com/base/foo", "http://example.com/base/#foo", ".#foo");
+ failures += assert_uri_to_relative(world, "http://example.com/base/foo", "http://example2.com/base/bar", "http://example2.com/base/bar");
+ failures += assert_uri_to_relative(world, "http://example.com/base/one?path=/should/be/ignored", "http://example.com/base/two?path=/should/be/ignored", "two?path=/should/be/ignored");
+ failures += assert_uri_to_relative(world, "http://example.org/base#", "http://www.foo.org", "http://www.foo.org");
+ failures += assert_uri_to_relative(world, "http://example.org", "http://a.example.org/", "http://a.example.org/");
+ failures += assert_uri_to_relative(world, "http://example.org", "http://a.example.org", "http://a.example.org");
+ failures += assert_uri_to_relative(world, "http://abcdefgh.example.org/foo/bar/", "http://ijklmnop.example.org/", "http://ijklmnop.example.org/");
+ failures += assert_uri_to_relative(world, "http://example.org", "http://example.org/a/b/c/d/efgh", "/a/b/c/d/efgh");
+
+ if(1) {
+ int ret;
+ raptor_uri* u1;
+ raptor_uri* u2;
+
+ u1 = raptor_new_uri(world, (const unsigned char *)"http://example.org/abc");
+ u2 = raptor_new_uri(world, (const unsigned char *)"http://example.org/def");
+
+ ret = raptor_uri_compare(u1, u2);
+ if(!(ret < 0)) {
+ fprintf(stderr,
+ "%s: raptor_uri_compare(%s, %s) FAILED gave %d expected <0\n",
+ program, raptor_uri_as_string(u1), raptor_uri_as_string(u2),
+ ret);
+ failures++;
+ }
+
+ raptor_free_uri(u1);
+ raptor_free_uri(u2);
+ }
+
+ raptor_free_world(world);
+
+ return failures ;
+}
+
+#endif /* STANDALONE */
diff --git a/src/raptor_win32.c b/src/raptor_win32.c
new file mode 100644
index 0000000..d97d73b
--- /dev/null
+++ b/src/raptor_win32.c
@@ -0,0 +1,49 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_win32.c - Raptor WIN32 support functions
+ *
+ * Copyright (C) 2002-2006, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2002-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#ifdef WIN32
+
+/* Only on WIN32 systems */
+
+
+/* DLL entry point */
+BOOL APIENTRY
+DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
+{
+ return TRUE;
+}
+
+
+/* end if WIN32 */
+#endif
diff --git a/src/raptor_www.c b/src/raptor_www.c
new file mode 100644
index 0000000..f70dcfe
--- /dev/null
+++ b/src/raptor_www.c
@@ -0,0 +1,832 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_www.c - Raptor WWW retrieval core
+ *
+ * Copyright (C) 2003-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+static int raptor_www_file_fetch(raptor_www* www);
+
+
+
+/*
+ * raptor_www_init:
+ * @world: raptor_world object
+ *
+ * INTERNAL - Initialise the WWW class.
+ *
+ * Must be called before creating any #raptor_www object.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_www_init(raptor_world* world)
+{
+ int rc = 0;
+
+ if(world->www_initialized)
+ return 0;
+
+ if(!world->www_skip_www_init_finish) {
+#ifdef RAPTOR_WWW_LIBCURL
+ rc = curl_global_init(CURL_GLOBAL_ALL);
+#endif
+ }
+
+ world->www_initialized = 1;
+ return rc;
+}
+
+
+/*
+ * raptor_www_finish:
+ * @world: raptor_world object
+ *
+ * INTERNAL - Terminate the WWW class.
+ *
+ * Must be called to clean any resources used by the WWW implementation.
+ *
+ **/
+void
+raptor_www_finish(raptor_world* world)
+{
+ if(!world->www_skip_www_init_finish) {
+#ifdef RAPTOR_WWW_LIBCURL
+ curl_global_cleanup();
+#endif
+ }
+}
+
+
+/**
+ * raptor_new_www_with_connection:
+ * @world: raptor_world object
+ * @connection: external WWW connection object.
+ *
+ * Constructor - create a new #raptor_www object over an existing WWW connection.
+ *
+ * At present this only works with a libcurl CURL handle object
+ * when raptor is compiled with libcurl suppport. Otherwise the
+ * @connection is ignored. This allows such things as setting
+ * up special flags on the curl handle before passing into the constructor.
+ *
+ * Return value: a new #raptor_www object or NULL on failure.
+ **/
+raptor_www*
+raptor_new_www_with_connection(raptor_world* world, void *connection)
+{
+ raptor_www* www;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ www = RAPTOR_CALLOC(raptor_www*, 1, sizeof(*www));
+ if(!www)
+ return NULL;
+
+ www->world = world;
+ www->type = NULL;
+ www->free_type = 1; /* default is to free content type */
+ www->total_bytes = 0;
+ www->failed = 0;
+ www->status_code = 0;
+ www->write_bytes = NULL;
+ www->content_type = NULL;
+ www->uri_filter = NULL;
+ www->connection_timeout = 10;
+ www->cache_control = NULL;
+
+#ifdef RAPTOR_WWW_LIBCURL
+ www->curl_handle = (CURL*)connection;
+ raptor_www_curl_init(www);
+#endif
+#ifdef RAPTOR_WWW_LIBXML
+ raptor_www_libxml_init(www);
+#endif
+#ifdef RAPTOR_WWW_LIBFETCH
+ raptor_www_libfetch_init(www);
+#endif
+
+ return www;
+}
+
+
+/**
+ * raptor_new_www:
+ * @world: raptor_world object
+ *
+ * Constructor - create a new #raptor_www object.
+ *
+ * Return value: a new #raptor_www or NULL on failure.
+ **/
+raptor_www*
+raptor_new_www(raptor_world* world)
+{
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ raptor_world_open(world);
+
+ return raptor_new_www_with_connection(world, NULL);
+}
+
+
+/**
+ * raptor_free_www:
+ * @www: WWW object.
+ *
+ * Destructor - destroy a #raptor_www object.
+ **/
+void
+raptor_free_www(raptor_www* www)
+{
+ /* free context */
+ if(www->type) {
+ if(www->free_type)
+ RAPTOR_FREE(char*, www->type);
+ www->type = NULL;
+ }
+
+ if(www->user_agent) {
+ RAPTOR_FREE(char*, www->user_agent);
+ www->user_agent = NULL;
+ }
+
+ if(www->cache_control) {
+ RAPTOR_FREE(char*, www->cache_control);
+ www->cache_control = NULL;
+ }
+
+ if(www->proxy) {
+ RAPTOR_FREE(char*, www->proxy);
+ www->proxy = NULL;
+ }
+
+ if(www->http_accept) {
+ RAPTOR_FREE(char*, www->http_accept);
+ www->http_accept = NULL;
+ }
+
+#ifdef RAPTOR_WWW_LIBCURL
+ raptor_www_curl_free(www);
+#endif
+#ifdef RAPTOR_WWW_LIBXML
+ raptor_www_libxml_free(www);
+#endif
+#ifdef RAPTOR_WWW_LIBFETCH
+ raptor_www_libfetch_free(www);
+#endif
+
+ if(www->uri)
+ raptor_free_uri(www->uri);
+
+ if(www->final_uri)
+ raptor_free_uri(www->final_uri);
+
+ RAPTOR_FREE(www, www);
+}
+
+
+
+/**
+ * raptor_www_set_write_bytes_handler:
+ * @www: WWW object
+ * @handler: bytes handler function
+ * @user_data: bytes handler data
+ *
+ * Set the handler to receive bytes written by the #raptor_www implementation.
+ *
+ **/
+void
+raptor_www_set_write_bytes_handler(raptor_www* www,
+ raptor_www_write_bytes_handler handler,
+ void *user_data)
+{
+ www->write_bytes = handler;
+ www->write_bytes_userdata = user_data;
+}
+
+
+/**
+ * raptor_www_set_content_type_handler:
+ * @www: WWW object
+ * @handler: content type handler function
+ * @user_data: content type handler data
+ *
+ * Set the handler to receive the HTTP Content-Type header value.
+ *
+ * This is called if or when the value is discovered during retrieval
+ * by the raptor_www implementation. Not all implementations provide
+ * access to this.
+ **/
+void
+raptor_www_set_content_type_handler(raptor_www* www,
+ raptor_www_content_type_handler handler,
+ void *user_data)
+{
+ www->content_type = handler;
+ www->content_type_userdata = user_data;
+}
+
+
+/**
+ * raptor_www_set_user_agent:
+ * @www: WWW object
+ * @user_agent: User-Agent string
+ *
+ * Set the user agent value, for HTTP requests typically.
+ **/
+void
+raptor_www_set_user_agent(raptor_www* www, const char *user_agent)
+{
+ char *ua_copy = NULL;
+ size_t ua_len;
+
+ if(!user_agent || !*user_agent) {
+ www->user_agent = NULL;
+ return;
+ }
+
+ ua_len = strlen(user_agent);
+ ua_copy = RAPTOR_MALLOC(char*, ua_len + 1);
+ if(!ua_copy)
+ return;
+
+ memcpy(ua_copy, user_agent, ua_len + 1); /* copy NUL */
+
+ www->user_agent = ua_copy;
+}
+
+
+/**
+ * raptor_www_set_proxy:
+ * @www: WWW object
+ * @proxy: proxy string.
+ *
+ * Set the proxy for the WWW object.
+ *
+ * The @proxy usually a string of the form http://server.domain:port.
+ **/
+void
+raptor_www_set_proxy(raptor_www* www, const char *proxy)
+{
+ char *proxy_copy;
+ size_t proxy_len;
+
+ if(!proxy)
+ return;
+
+ proxy_len = strlen(proxy);
+ proxy_copy = RAPTOR_MALLOC(char*, proxy_len + 1);
+ if(!proxy_copy)
+ return;
+
+ memcpy(proxy_copy, proxy, proxy_len + 1); /* copy NUL */
+
+ www->proxy = proxy_copy;
+}
+
+
+/**
+ * raptor_www_set_http_accept:
+ * @www: #raptor_www class
+ * @value: Accept: header value or NULL to have an empty one.
+ *
+ * Set HTTP Accept header.
+ *
+ **/
+void
+raptor_www_set_http_accept(raptor_www* www, const char *value)
+{
+ char *value_copy;
+ size_t len = 8; /* strlen("Accept:")+1 */
+ size_t value_len = 0;
+
+ if(value) {
+ value_len = strlen(value);
+ len += 1 + value_len; /* " "+value */
+ }
+
+ value_copy = RAPTOR_MALLOC(char*, len);
+ if(!value_copy)
+ return;
+ www->http_accept = value_copy;
+
+ /* copy header name */
+ memcpy(value_copy, "Accept:", 7); /* Do not copy NUL */
+ value_copy += 7;
+
+ /* copy header value */
+ if(value) {
+ *value_copy ++= ' ';
+ memcpy(value_copy, value, value_len + 1); /* Copy NUL */
+ } else {
+ /* Ensure value is NUL terminated */
+ *value_copy = '\0';
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("Using Accept header: '%s'\n", www->http_accept);
+#endif
+}
+
+
+/**
+ * raptor_www_set_connection_timeout:
+ * @www: WWW object
+ * @timeout: Timeout in seconds
+ *
+ * Set WWW connection timeout
+ **/
+void
+raptor_www_set_connection_timeout(raptor_www* www, int timeout)
+{
+ www->connection_timeout = timeout;
+}
+
+
+/**
+ * raptor_www_set_http_cache_control:
+ * @www: WWW object
+ * @cache_control: Cache-Control header value (or NULL to disable)
+ *
+ * Set HTTP Cache-Control:header (default none)
+ *
+ * The @cache_control value can be a string to set it, "" to send
+ * a blank header or NULL to not set the header at all.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_www_set_http_cache_control(raptor_www* www, const char* cache_control)
+{
+ char *cache_control_copy;
+ const char* const header="Cache-Control:";
+ const size_t header_len = 14; /* strlen("Cache-Control:") */
+ size_t len;
+ size_t cc_len;
+
+ RAPTOR_ASSERT((strlen(header) != header_len), "Cache-Control header length is wrong");
+
+ if(www->cache_control) {
+ RAPTOR_FREE(char*, www->cache_control);
+ www->cache_control = NULL;
+ }
+
+ if(!cache_control) {
+ www->cache_control = NULL;
+ return 0;
+ }
+
+ cc_len = strlen(cache_control);
+ len = header_len + 1 + cc_len + 1; /* header+" "+cache_control+"\0" */
+
+ cache_control_copy = RAPTOR_MALLOC(char*, len);
+ if(!cache_control_copy)
+ return 1;
+
+ www->cache_control = cache_control_copy;
+
+ /* copy header name */
+ memcpy(cache_control_copy, header, header_len); /* Do not copy NUL */
+ cache_control_copy += header_len;
+
+ /* copy header value */
+ if(*cache_control) {
+ *cache_control_copy ++= ' ';
+ memcpy(cache_control_copy, cache_control, cc_len + 1); /* Copy NUL */
+ } else {
+ /* Ensure value is NUL terminated */
+ *cache_control_copy = '\0';
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("Using Cache-Control header: '%s'\n", www->cache_control);
+#endif
+
+ return 0;
+}
+
+
+/**
+ * raptor_www_set_uri_filter:
+ * @www: WWW object
+ * @filter: URI filter function
+ * @user_data: User data to pass to filter function
+ *
+ * Set URI filter function for WWW retrieval.
+ **/
+void
+raptor_www_set_uri_filter(raptor_www* www,
+ raptor_uri_filter_func filter,
+ void *user_data)
+{
+ www->uri_filter = filter;
+ www->uri_filter_user_data = user_data;
+}
+
+
+/**
+ * raptor_www_set_ssl_cert_options:
+ * @www: WWW object
+ * @cert_filename: SSL client certificate file
+ * @cert_type: SSL client certificate type (default is "PEM")
+ * @cert_passphrase: SSL client certificate password
+ *
+ * Set SSL client certificate options (where supported)
+ *
+ * Return value: non-0 when setting options is not supported
+ **/
+int
+raptor_www_set_ssl_cert_options(raptor_www* www,
+ const char* cert_filename,
+ const char* cert_type,
+ const char* cert_passphrase)
+{
+#ifdef RAPTOR_WWW_LIBCURL
+ return raptor_www_curl_set_ssl_cert_options(www, cert_filename, cert_type,
+ cert_passphrase);
+#else
+ return 1;
+#endif
+}
+
+
+/**
+ * raptor_www_set_ssl_verify_options:
+ * @www: WWW object
+ * @verify_peer: SSL verify peer - non-0 to verify peer SSL certificate (default)
+ * @verify_host: SSL verify host - 0 none, 1 CN match, 2 host match (default). Other values are ignored.
+ *
+ * Set whether SSL verifies the authenticity of the peer's certificate
+ *
+ * These options correspond to setting the curl
+ * CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options.
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_www_set_ssl_verify_options(raptor_www* www, int verify_peer,
+ int verify_host)
+{
+#ifdef RAPTOR_WWW_LIBCURL
+ return raptor_www_curl_set_ssl_verify_options(www, verify_peer,
+ verify_host);
+#else
+ return 1;
+#endif
+}
+
+
+
+/**
+ * raptor_www_get_connection:
+ * @www: #raptor_www object
+ *
+ * Get WWW library connection object.
+ *
+ * Return the internal WWW connection handle. For libcurl, this
+ * returns the CURL handle and for libxml the context. Otherwise
+ * it returns NULL.
+ *
+ * Return value: connection pointer
+ **/
+void*
+raptor_www_get_connection(raptor_www* www)
+{
+#ifdef RAPTOR_WWW_NONE
+ return NULL;
+#endif
+
+#ifdef RAPTOR_WWW_LIBCURL
+ return www->curl_handle;
+#endif
+
+#ifdef RAPTOR_WWW_LIBXML
+ return www->ctxt;
+#endif
+
+#ifdef RAPTOR_WWW_LIBFETCH
+ return NULL;
+#endif
+
+ return NULL;
+}
+
+
+/**
+ * raptor_www_abort:
+ * @www: WWW object
+ * @reason: abort reason message
+ *
+ * Abort an ongoing raptor WWW operation and pass back a reason.
+ *
+ * This is typically used within one of the raptor WWW handlers
+ * when retrieval need no longer continue due to another
+ * processing issue or error.
+ **/
+void
+raptor_www_abort(raptor_www* www, const char *reason)
+{
+ www->failed = 1;
+}
+
+
+void
+raptor_www_error(raptor_www* www, const char *message, ...)
+{
+ va_list arguments;
+
+ va_start(arguments, message);
+
+ raptor_log_error_varargs(www->world,
+ RAPTOR_LOG_LEVEL_ERROR,
+ &www->locator,
+ message, arguments);
+
+ va_end(arguments);
+}
+
+
+static int
+raptor_www_file_handle_fetch(raptor_www* www, FILE* fh)
+{
+ while(!feof(fh)) {
+ size_t len = fread(www->buffer, 1, RAPTOR_WWW_BUFFER_SIZE, fh);
+ if(len > 0) {
+ www->total_bytes += len;
+ www->buffer[len]='\0';
+
+ if(www->write_bytes)
+ www->write_bytes(www, www->write_bytes_userdata, www->buffer, len, 1);
+ }
+
+ if(feof(fh) || www->failed)
+ break;
+ }
+
+ if(!www->failed)
+ www->status_code = 200;
+
+ return www->failed;
+}
+
+
+static int
+raptor_www_file_fetch(raptor_www* www)
+{
+ char *filename;
+ FILE *fh;
+ unsigned char *uri_string = raptor_uri_as_string(www->uri);
+#if defined(HAVE_UNISTD_H) && defined(HAVE_SYS_STAT_H)
+ struct stat buf;
+#endif
+
+ www->status_code = 200;
+
+ filename = raptor_uri_uri_string_to_filename(uri_string);
+ if(!filename) {
+ raptor_www_error(www, "Not a file: URI");
+ return 1;
+ }
+
+#if defined(HAVE_UNISTD_H) && defined(HAVE_SYS_STAT_H)
+ if(!stat(filename, &buf) && S_ISDIR(buf.st_mode)) {
+ raptor_www_error(www, "Cannot read from a directory '%s'", filename);
+ RAPTOR_FREE(char*, filename);
+ www->status_code = 404;
+ return 1;
+ }
+#endif
+
+ fh = fopen(filename, "rb");
+ if(!fh) {
+ raptor_www_error(www, "file '%s' open failed - %s",
+ filename, strerror(errno));
+ RAPTOR_FREE(char*, filename);
+ www->status_code = (errno == EACCES) ? 403: 404;
+ www->failed = 1;
+
+ return www->failed;
+ }
+
+ raptor_www_file_handle_fetch(www, fh);
+ fclose(fh);
+
+ RAPTOR_FREE(char*, filename);
+
+ return www->failed;
+}
+
+
+/**
+* raptor_www_fetch:
+* @www: WWW object
+* @uri: URI to read from
+*
+* Start a WWW content retrieval for the given URI, returning data via the write_bytes handler.
+*
+* Return value: non-0 on failure.
+**/
+int
+raptor_www_fetch(raptor_www *www, raptor_uri *uri)
+{
+ int status = 1;
+
+ www->uri = raptor_new_uri_for_retrieval(uri);
+
+ www->locator.uri = uri;
+ www->locator.line= -1;
+ www->locator.column= -1;
+
+ if(www->uri_filter) {
+ int rc = www->uri_filter(www->uri_filter_user_data, uri);
+ if(rc)
+ return rc;
+ }
+
+#ifdef RAPTOR_WWW_NONE
+ status = raptor_www_file_fetch(www);
+#else
+
+ if(raptor_uri_uri_string_is_file_uri(raptor_uri_as_string(www->uri)))
+ status = raptor_www_file_fetch(www);
+ else {
+#ifdef RAPTOR_WWW_LIBCURL
+ status = raptor_www_curl_fetch(www);
+#endif
+
+#ifdef RAPTOR_WWW_LIBXML
+ status = raptor_www_libxml_fetch(www);
+#endif
+
+#ifdef RAPTOR_WWW_LIBFETCH
+ status = raptor_www_libfetch_fetch(www);
+#endif
+ }
+
+#endif
+ if(!status && www->status_code && www->status_code != 200){
+ raptor_www_error(www, "Resolving URI failed with HTTP status %d",
+ www->status_code);
+ status = 1;
+ }
+
+ www->failed = status;
+
+ return www->failed;
+}
+
+
+static void
+raptor_www_fetch_to_string_write_bytes(raptor_www* www, void *userdata,
+ const void *ptr, size_t size,
+ size_t nmemb)
+{
+ raptor_stringbuffer* sb = (raptor_stringbuffer*)userdata;
+ size_t len = size * nmemb;
+
+ raptor_stringbuffer_append_counted_string(sb, (unsigned char*)ptr, len, 1);
+}
+
+
+/**
+ * raptor_www_fetch_to_string:
+ * @www: raptor_www object
+ * @uri: raptor_uri to retrieve
+ * @string_p: pointer to location to hold string
+ * @length_p: pointer to location to hold length of string (or NULL)
+ * @malloc_handler: pointer to malloc() to use to make string (or NULL)
+ *
+ * Start a WWW content retrieval for the given URI, returning the data in a new string.
+ *
+ * If @malloc_handler is null, raptor will allocate it using it's
+ * own memory allocator. *string_p is set to NULL on failure (and
+ * *length_p to 0 if length_p is not NULL).
+ *
+ * Return value: non-0 on failure
+ **/
+RAPTOR_EXTERN_C
+int
+raptor_www_fetch_to_string(raptor_www *www, raptor_uri *uri,
+ void **string_p, size_t *length_p,
+ raptor_data_malloc_handler const malloc_handler)
+{
+ raptor_stringbuffer *sb = NULL;
+ void *str = NULL;
+ raptor_www_write_bytes_handler saved_write_bytes;
+ void *saved_write_bytes_userdata;
+
+ sb = raptor_new_stringbuffer();
+ if(!sb)
+ return 1;
+
+ if(length_p)
+ *length_p=0;
+
+ saved_write_bytes = www->write_bytes;
+ saved_write_bytes_userdata = www->write_bytes_userdata;
+ raptor_www_set_write_bytes_handler(www, raptor_www_fetch_to_string_write_bytes, sb);
+
+ if(raptor_www_fetch(www, uri))
+ str = NULL;
+ else {
+ size_t len = raptor_stringbuffer_length(sb);
+ if(len) {
+ str = (void*)malloc_handler(len+1);
+ if(str) {
+ raptor_stringbuffer_copy_to_string(sb, (unsigned char*)str, len+1);
+ *string_p=str;
+ if(length_p)
+ *length_p=len;
+ }
+ }
+ }
+
+ if(sb)
+ raptor_free_stringbuffer(sb);
+
+ raptor_www_set_write_bytes_handler(www, saved_write_bytes, saved_write_bytes_userdata);
+
+ return (str == NULL);
+}
+
+
+/**
+ * raptor_www_get_final_uri:
+ * @www: #raptor_www object
+ *
+ * Get the WWW final resolved URI.
+ *
+ * This returns the URI used after any protocol redirection.
+ *
+ * Return value: a new URI or NULL if not known.
+ **/
+raptor_uri*
+raptor_www_get_final_uri(raptor_www* www)
+{
+ return www->final_uri ? raptor_uri_copy(www->final_uri) : NULL;
+}
+
+
+/**
+ * raptor_www_set_final_uri_handler:
+ * @www: WWW object
+ * @handler: content type handler function
+ * @user_data: content type handler data
+ *
+ * Set the handler to receive the HTTP Content-Type header value.
+ *
+ * This is called if or when the value is discovered during retrieval
+ * by the raptor_www implementation. Not all implementations provide
+ * access to this.
+ **/
+void
+raptor_www_set_final_uri_handler(raptor_www* www,
+ raptor_www_final_uri_handler handler,
+ void *user_data)
+{
+ www->final_uri_handler = handler;
+ www->final_uri_userdata = user_data;
+}
diff --git a/src/raptor_www_curl.c b/src/raptor_www_curl.c
new file mode 100644
index 0000000..27182ec
--- /dev/null
+++ b/src/raptor_www_curl.c
@@ -0,0 +1,306 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_www_curl.c - Raptor WWW retrieval via libcurl
+ *
+ * Copyright (C) 2003-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#ifdef RAPTOR_WWW_LIBCURL
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+static void
+raptor_www_curl_update_status(raptor_www* www)
+{
+ char* final_uri;
+
+ if(www->failed)
+ return;
+
+ if(www->checked_status++)
+ return;
+
+ if(!www->final_uri) {
+ /* If not already found in headers by
+ * raptor_www_curl_header_callback() which overrides what libcurl
+ * found in HTTP status line (3xx)
+ */
+
+ if(curl_easy_getinfo(www->curl_handle, CURLINFO_EFFECTIVE_URL,
+ &final_uri) == CURLE_OK) {
+ www->final_uri = raptor_new_uri(www->world, (const unsigned char*)final_uri);
+ if(www->final_uri_handler)
+ www->final_uri_handler(www, www->final_uri_userdata, www->final_uri);
+ }
+ }
+
+}
+
+
+static size_t
+raptor_www_curl_write_callback(void *ptr, size_t size, size_t nmemb, void *userdata)
+{
+ raptor_www* www = (raptor_www*)userdata;
+ size_t bytes = size * nmemb;
+
+ /* If WWW has been aborted, return nothing so that
+ * libcurl will abort the transfer
+ */
+ if(www->failed)
+ return 0;
+
+ raptor_www_curl_update_status(www);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+ RAPTOR_DEBUG2("Got %d bytes\n", bytes);
+#endif
+
+ if(www->write_bytes)
+ www->write_bytes(www, www->write_bytes_userdata, ptr, size, nmemb);
+ www->total_bytes += bytes;
+ return bytes;
+}
+
+
+static size_t
+raptor_www_curl_header_callback(void* ptr, size_t size, size_t nmemb,
+ void *userdata)
+{
+ raptor_www* www = (raptor_www*)userdata;
+ size_t bytes = size * nmemb;
+ int c;
+
+ /* If WWW has been aborted, return nothing so that
+ * libcurl will abort the transfer
+ */
+ if(www->failed)
+ return 0;
+
+#define CONTENT_TYPE_LEN 14
+ if(!raptor_strncasecmp((char*)ptr, "Content-Type: ", CONTENT_TYPE_LEN)) {
+ size_t len = bytes - CONTENT_TYPE_LEN - 2; /* for \r\n */
+ char *type_buffer = RAPTOR_MALLOC(char*, len + 1);
+ memcpy(type_buffer, (char*)ptr + 14, len);
+ type_buffer[len]='\0';
+ if(www->type)
+ RAPTOR_FREE(char*, www->type);
+ www->type = type_buffer;
+ www->free_type = 1;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+ RAPTOR_DEBUG3("Got content type header '%s' (%d bytes)\n", type_buffer, len);
+#endif
+ if(www->content_type)
+ www->content_type(www, www->content_type_userdata, www->type);
+ }
+
+
+#define CONTENT_LOCATION_LEN 18
+ if(!raptor_strncasecmp((char*)ptr, "Content-Location: ",
+ CONTENT_LOCATION_LEN)) {
+ size_t uri_len = bytes - CONTENT_LOCATION_LEN - 2; /* for \r\n */
+ unsigned char* uri_str = (unsigned char*)ptr + CONTENT_LOCATION_LEN;
+
+ if(www->final_uri)
+ raptor_free_uri(www->final_uri);
+
+ /* Ensure it is NUL terminated */
+ c = uri_str[uri_len];
+ uri_str[uri_len] = '\0';
+ www->final_uri = raptor_new_uri_relative_to_base_counted(www->world,
+ www->uri,
+ uri_str, uri_len);
+ uri_str[uri_len] = c;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+ if(www->final_uri)
+ RAPTOR_DEBUG2("Got content location header '%s'\n",
+ raptor_uri_as_string(www->final_uri));
+#endif
+ if(www->final_uri_handler)
+ www->final_uri_handler(www, www->final_uri_userdata, www->final_uri);
+ }
+
+ return bytes;
+}
+
+
+void
+raptor_www_curl_init(raptor_www *www)
+{
+ if(!www->curl_handle) {
+ www->curl_handle = curl_easy_init();
+ www->curl_init_here = 1;
+ }
+
+
+#ifndef CURLOPT_WRITEDATA
+#define CURLOPT_WRITEDATA CURLOPT_FILE
+#endif
+
+ /* send all data to this function */
+ curl_easy_setopt(www->curl_handle, CURLOPT_WRITEFUNCTION,
+ raptor_www_curl_write_callback);
+ /* ... using this data pointer */
+ curl_easy_setopt(www->curl_handle, CURLOPT_WRITEDATA, www);
+
+
+ /* send all headers to this function */
+ curl_easy_setopt(www->curl_handle, CURLOPT_HEADERFUNCTION,
+ raptor_www_curl_header_callback);
+ /* ... using this data pointer */
+ curl_easy_setopt(www->curl_handle, CURLOPT_WRITEHEADER, www);
+
+ /* Make it follow Location: headers */
+ curl_easy_setopt(www->curl_handle, CURLOPT_FOLLOWLOCATION, 1);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+ curl_easy_setopt(www->curl_handle, CURLOPT_VERBOSE, (void*)1);
+#endif
+
+ curl_easy_setopt(www->curl_handle, CURLOPT_ERRORBUFFER, www->error_buffer);
+
+ /* Connection timeout in seconds */
+ curl_easy_setopt(www->curl_handle, CURLOPT_CONNECTTIMEOUT,
+ www->connection_timeout);
+ curl_easy_setopt(www->curl_handle, CURLOPT_NOSIGNAL, 1);
+}
+
+
+void
+raptor_www_curl_free(raptor_www *www)
+{
+ /* only tidy up if we did all the work */
+ if(www->curl_init_here && www->curl_handle) {
+ curl_easy_cleanup(www->curl_handle);
+ www->curl_handle = NULL;
+ }
+}
+
+
+int
+raptor_www_curl_fetch(raptor_www *www)
+{
+ struct curl_slist *slist = NULL;
+
+ if(www->proxy)
+ curl_easy_setopt(www->curl_handle, CURLOPT_PROXY, www->proxy);
+
+ if(www->user_agent)
+ curl_easy_setopt(www->curl_handle, CURLOPT_USERAGENT, www->user_agent);
+
+ if(www->http_accept)
+ slist = curl_slist_append(slist, (const char*)www->http_accept);
+
+ /* ALWAYS disable curl default "Pragma: no-cache" */
+ slist = curl_slist_append(slist, "Pragma:");
+ if(www->cache_control)
+ slist = curl_slist_append(slist, (const char*)www->cache_control);
+
+ if(slist)
+ curl_easy_setopt(www->curl_handle, CURLOPT_HTTPHEADER, slist);
+
+ /* specify URL to get */
+ curl_easy_setopt(www->curl_handle, CURLOPT_URL,
+ raptor_uri_as_string(www->uri));
+
+ if(curl_easy_perform(www->curl_handle)) {
+ /* failed */
+ www->failed = 1;
+ raptor_www_error(www, "Resolving URI failed: %s", www->error_buffer);
+ } else {
+ long lstatus;
+
+#ifndef CURLINFO_RESPONSE_CODE
+#define CURLINFO_RESPONSE_CODE CURLINFO_HTTP_CODE
+#endif
+
+ /* Requires pointer to a long */
+ if(curl_easy_getinfo(www->curl_handle, CURLINFO_RESPONSE_CODE, &lstatus) == CURLE_OK)
+ /* CURL status code will always fit in an int */
+ www->status_code = RAPTOR_GOOD_CAST(int, lstatus);
+
+ }
+
+ if(slist)
+ curl_slist_free_all(slist);
+
+ return www->failed;
+}
+
+
+int
+raptor_www_curl_set_ssl_cert_options(raptor_www* www,
+ const char* cert_filename,
+ const char* cert_type,
+ const char* cert_passphrase)
+{
+ /* client certificate file name */
+ if(cert_filename)
+ curl_easy_setopt(www->curl_handle, CURLOPT_SSLCERT, cert_filename);
+
+ /* curl default is "PEM" */
+ if(cert_type)
+ curl_easy_setopt(www->curl_handle, CURLOPT_SSLCERTTYPE, cert_type);
+
+ /* passphrase */
+ /* Removed in 7.16.4 */
+#if LIBCURL_VERSION_NUM < 0x071004
+#define CURLOPT_KEYPASSWD CURLOPT_SSLKEYPASSWD
+#endif
+ if(cert_passphrase)
+ curl_easy_setopt(www->curl_handle, CURLOPT_KEYPASSWD, cert_passphrase);
+
+ return 0;
+}
+
+
+int
+raptor_www_curl_set_ssl_verify_options(raptor_www* www, int verify_peer,
+ int verify_host)
+{
+ if(verify_peer)
+ verify_peer = 1;
+ curl_easy_setopt(www->curl_handle, CURLOPT_SSL_VERIFYPEER, verify_peer);
+
+ if(verify_host >= 0 && verify_host <= 2)
+ curl_easy_setopt(www->curl_handle, CURLOPT_SSL_VERIFYHOST, verify_host);
+
+ return 0;
+}
+
+
+#endif /* RAPTOR_WWW_LIBCURL */
diff --git a/src/raptor_www_libfetch.c b/src/raptor_www_libfetch.c
new file mode 100644
index 0000000..f2e54b4
--- /dev/null
+++ b/src/raptor_www_libfetch.c
@@ -0,0 +1,101 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_www_libfetch.c - Raptor WWW retrieval via libfetch
+ *
+ * Copyright (C) 2003-2006, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#ifdef RAPTOR_WWW_LIBFETCH
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include <errno.h>
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <fetch.h>
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+void
+raptor_www_libfetch_init(raptor_www *www)
+{
+}
+
+
+void
+raptor_www_libfetch_free(raptor_www *www)
+{
+}
+
+
+int
+raptor_www_libfetch_fetch(raptor_www *www)
+{
+ FILE *stream;
+
+ if(www->proxy) {
+ setenv("HTTP_PROXY", www->proxy, 0);
+ setenv("FTP_PROXY", www->proxy, 0);
+ }
+
+ if(www->user_agent)
+ setenv("HTTP_USER_AGENT", www->user_agent, 0);
+
+ stream = fetchXGetURL((const char*)raptor_uri_as_string(www->uri), NULL, NULL);
+ if(!stream) {
+ www->failed = 1;
+ raptor_www_error(www, "%s", fetchLastErrString);
+ return 1;
+ }
+
+ /* fetch does not give us access to this */
+ www->status_code = 200;
+
+ while(!feof(stream)) {
+ size_t len = fread(www->buffer, 1, RAPTOR_WWW_BUFFER_SIZE, stream);
+
+ www->total_bytes += len;
+
+ if(www->write_bytes)
+ www->write_bytes(www, www->write_bytes_userdata, www->buffer, len, 1);
+
+ if(len < RAPTOR_WWW_BUFFER_SIZE)
+ break;
+ }
+ fclose(stream);
+
+ return www->failed;
+}
+
+#endif /* RAPTOR_WWW_LIBFETCH */
diff --git a/src/raptor_www_libxml.c b/src/raptor_www_libxml.c
new file mode 100644
index 0000000..8e53a4e
--- /dev/null
+++ b/src/raptor_www_libxml.c
@@ -0,0 +1,163 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_www_libxml.c - Raptor WWW retrieval via libxml2
+ *
+ * Copyright (C) 2003-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#ifdef RAPTOR_WWW_LIBXML
+
+void
+raptor_www_libxml_init(raptor_www *www)
+{
+ xmlNanoHTTPInit();
+ www->ctxt = NULL;
+}
+
+
+void
+raptor_www_libxml_free(raptor_www *www)
+{
+ xmlNanoHTTPCleanup();
+}
+
+
+int
+raptor_www_libxml_fetch(raptor_www *www)
+{
+ char* headers = NULL;
+
+ if(www->proxy)
+ xmlNanoHTTPScanProxy(www->proxy);
+
+ if(www->http_accept || www->user_agent) {
+ size_t accept_len = 0;
+ size_t ua_len = 0;
+ size_t cc_len = 0;
+ size_t len = 0;
+ char *p;
+
+ if(www->http_accept) {
+ accept_len = strlen(www->http_accept);
+ len += accept_len+2; /* \r\n */
+ }
+
+ if(www->user_agent) {
+ ua_len = strlen(www->user_agent);
+ len += 12+ua_len+2; /* strlen("User-Agent: ") + \r\n */
+ }
+
+ if(www->cache_control) {
+ cc_len = strlen(www->cache_control);
+ len += cc_len+2; /* \r\n */
+ }
+
+ headers = RAPTOR_MALLOC(char*, len + 1);
+ if(!headers)
+ return 1;
+
+ p = headers;
+ if(www->http_accept) {
+ memcpy(p, www->http_accept, accept_len);
+ p+= accept_len;
+ *p++='\r';
+ *p++='\n';
+ }
+ if(www->user_agent) {
+ memcpy(p, "User-Agent: ", 12);
+ p += 12;
+ memcpy(p, www->user_agent, ua_len);
+ p+= ua_len;
+ *p++='\r';
+ *p++='\n';
+ }
+ if(www->cache_control) {
+ memcpy(p, www->cache_control, cc_len);
+ p+= cc_len;
+ *p++='\r';
+ *p++='\n';
+ }
+ *p='\0';
+ }
+
+ www->ctxt = xmlNanoHTTPMethod((const char*)raptor_uri_as_string(www->uri),
+ NULL, /* HTTP method (default GET) */
+ NULL, /* input string */
+ &www->type,
+ headers,
+ 0); /* input length - ilen */
+
+ if(headers)
+ RAPTOR_FREE(char*, headers);
+
+ if(!www->ctxt)
+ return 1;
+
+ if(www->type) {
+ if(www->content_type) {
+ www->content_type(www, www->content_type_userdata, www->type);
+ if(www->failed) {
+ xmlNanoHTTPClose(www->ctxt);
+ return 1;
+ }
+ }
+ xmlFree(www->type);
+ www->type = NULL;
+ }
+
+ www->status_code = xmlNanoHTTPReturnCode(www->ctxt);
+
+ while(1) {
+ int len = xmlNanoHTTPRead(www->ctxt, www->buffer, RAPTOR_WWW_BUFFER_SIZE);
+ if(len < 0)
+ break;
+
+ www->total_bytes += len;
+
+ if(www->write_bytes)
+ www->write_bytes(www, www->write_bytes_userdata, www->buffer, len, 1);
+
+ if(len < RAPTOR_WWW_BUFFER_SIZE || www->failed)
+ break;
+ }
+
+ xmlNanoHTTPClose(www->ctxt);
+
+ return www->failed;
+}
+
+#endif /* #ifdef RAPTOR_WWW_LIBXML*/
diff --git a/src/raptor_www_test.c b/src/raptor_www_test.c
new file mode 100644
index 0000000..2968c96
--- /dev/null
+++ b/src/raptor_www_test.c
@@ -0,0 +1,109 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_www_test.c - Raptor WWW retrieval test code
+ *
+ * Copyright (C) 2003-2006, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+static void
+write_content_type(raptor_www* www,
+ void *userdata, const char *content_type)
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf((FILE*)userdata, "Content Type: %s\n", content_type);
+#endif
+}
+
+
+int main (int argc, char *argv[])
+{
+ const char *program = raptor_basename(argv[0]);
+ raptor_world *world;
+ const char *uri_string;
+ raptor_www *www;
+ const char *user_agent = "raptor_www_test/0.1";
+ raptor_uri *uri;
+ void *string = NULL;
+ size_t string_length = 0;
+
+ if(argc > 1)
+ uri_string = argv[1];
+ else
+ uri_string = "http://librdf.org/";
+
+ world = raptor_new_world();
+ if(!world || raptor_world_open(world))
+ exit(1);
+
+ uri = raptor_new_uri(world, (const unsigned char*)uri_string);
+ if(!uri) {
+ fprintf(stderr, "%s: Failed to create Raptor URI for %s\n",
+ program, uri_string);
+ exit(1);
+ }
+
+ www = raptor_new_www(world);
+
+ raptor_www_set_content_type_handler(www, write_content_type, (void*)stderr);
+ raptor_www_set_user_agent(www, user_agent);
+
+ /* start retrieval (always a GET) */
+
+ if(raptor_www_fetch_to_string(www, uri,
+ &string, &string_length, malloc)) {
+ fprintf(stderr, "%s: WWW fetch failed\n", program);
+ } else {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: HTTP response status %d\n",
+ program, www->status_code);
+
+ fprintf(stderr, "%s: Returned %d bytes of content\n",
+ program, (int)string_length);
+#endif
+ }
+ if(string)
+ free(string);
+
+ raptor_free_www(www);
+
+ raptor_free_uri(uri);
+
+ raptor_free_world(world);
+
+ return 0;
+}
diff --git a/src/raptor_xml.c b/src/raptor_xml.c
new file mode 100644
index 0000000..eb09d7b
--- /dev/null
+++ b/src/raptor_xml.c
@@ -0,0 +1,1095 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_xml.c - Raptor XML routines
+ *
+ * Copyright (C) 2003-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+#ifndef STANDALONE
+
+/**
+ * raptor_new_xml_element:
+ * @name: The XML element name
+ * @xml_language: the in-scope XML language (or NULL)
+ * @xml_base: the in-scope XML base URI (or NULL)
+ *
+ * Constructor - create a new XML element from a QName
+ *
+ * Return value: a new #raptor_xml_element or NULL on failure
+ **/
+raptor_xml_element*
+raptor_new_xml_element(raptor_qname *name,
+ const unsigned char *xml_language,
+ raptor_uri *xml_base)
+{
+ raptor_xml_element* xml_element;
+
+ xml_element = RAPTOR_CALLOC(raptor_xml_element*, 1, sizeof(*xml_element));
+ if(!xml_element)
+ return NULL;
+
+ /* Element name */
+ xml_element->name = name;
+ xml_element->xml_language = xml_language;
+ xml_element->base_uri = xml_base;
+
+ xml_element->declared_nspaces = NULL;
+
+ xml_element->content_cdata_sb = raptor_new_stringbuffer();
+ if(!xml_element->content_cdata_sb) {
+ RAPTOR_FREE(raptor_xml_element, xml_element);
+ xml_element = NULL;
+ }
+
+ return xml_element;
+}
+
+
+/**
+ * raptor_new_xml_element_from_namespace_local_name:
+ * @ns: namespace
+ * @name: the XML element local name
+ * @xml_language: the in-scope XML language (or NULL)
+ * @xml_base: base uri (or NULL)
+ *
+ * Constructor - create a new XML element from an XML namespace and a local name
+ *
+ * Added in 1.4.16.
+ *
+ * Return value: a new #raptor_xml_element or NULL on failure
+ */
+raptor_xml_element*
+raptor_new_xml_element_from_namespace_local_name(raptor_namespace *ns,
+ const unsigned char *name,
+ const unsigned char *xml_language,
+ raptor_uri *xml_base)
+{
+ raptor_uri *base_uri_copy;
+ raptor_qname *qname;
+ raptor_xml_element *element = NULL;
+
+ qname = raptor_new_qname_from_namespace_local_name(ns->nstack->world, ns,
+ name, NULL);
+ if(qname) {
+ base_uri_copy = xml_base ? raptor_uri_copy(xml_base) : NULL;
+ element = raptor_new_xml_element(qname, xml_language, base_uri_copy);
+ if(!element) {
+ raptor_free_qname(qname);
+ if(base_uri_copy)
+ raptor_free_uri(base_uri_copy);
+ }
+ }
+ return element;
+}
+
+
+/**
+ * raptor_free_xml_element:
+ * @element: XML Element
+ *
+ * Destructor - destroy a raptor_xml_element object.
+ **/
+void
+raptor_free_xml_element(raptor_xml_element *element)
+{
+ unsigned int i;
+
+ if(!element)
+ return;
+
+ for(i = 0; i < element->attribute_count; i++)
+ if(element->attributes[i])
+ raptor_free_qname(element->attributes[i]);
+
+ if(element->attributes)
+ RAPTOR_FREE(raptor_qname_array, element->attributes);
+
+ if(element->content_cdata_sb)
+ raptor_free_stringbuffer(element->content_cdata_sb);
+
+ if(element->base_uri)
+ raptor_free_uri(element->base_uri);
+
+ if(element->xml_language)
+ RAPTOR_FREE(char*, element->xml_language);
+
+ raptor_free_qname(element->name);
+
+ if(element->declared_nspaces)
+ raptor_free_sequence(element->declared_nspaces);
+
+ RAPTOR_FREE(raptor_element, element);
+}
+
+
+/**
+ * raptor_xml_element_get_name:
+ * @xml_element: XML Element
+ *
+ * Get the XML Name of an XML element
+ *
+ * Return value: The Name.
+ **/
+raptor_qname*
+raptor_xml_element_get_name(raptor_xml_element *xml_element)
+{
+ return xml_element->name;
+}
+
+
+/**
+ * raptor_xml_element_set_attributes:
+ * @xml_element: XML Element
+ * @attributes: Array of XML Qname attributes with values
+ * @count: Length of array
+ *
+ * Set the attributes on an XML element.
+ *
+ * The @attributes array becomes owned by the element after this function.
+ **/
+void
+raptor_xml_element_set_attributes(raptor_xml_element* xml_element,
+ raptor_qname **attributes, int count)
+{
+ xml_element->attributes = attributes;
+ xml_element->attribute_count = count;
+}
+
+
+/**
+ * raptor_xml_element_get_attributes:
+ * @xml_element: XML Element
+ *
+ * Get the array of attributes on the XML element.
+ *
+ * Use raptor_xml_element_get_attributes_count() to get the count
+ * of the array size.
+ *
+ * Return value: the array of qnames or NULL if none are present.
+ **/
+raptor_qname**
+raptor_xml_element_get_attributes(raptor_xml_element* xml_element)
+{
+ return xml_element->attributes;
+}
+
+
+/**
+ * raptor_xml_element_get_attributes_count:
+ * @xml_element: XML Element
+ *
+ * Get the number of attributes on the XML element.
+ *
+ * Return value: Integer number of attributes - 0 or more.
+ **/
+int
+raptor_xml_element_get_attributes_count(raptor_xml_element* xml_element)
+{
+ return xml_element->attribute_count;
+}
+
+
+/**
+ * raptor_xml_element_declare_namespace:
+ * @xml_element: XML Element
+ * @nspace: raptor_namespace to declare
+ *
+ * Declare a namespace on the XML Element.
+ *
+ * Return value: non-0 if namespace cannot be declared
+ **/
+int
+raptor_xml_element_declare_namespace(raptor_xml_element* xml_element,
+ raptor_namespace *nspace)
+{
+ int i;
+ const raptor_namespace *ns;
+
+ if(!xml_element->declared_nspaces)
+ xml_element->declared_nspaces = raptor_new_sequence(NULL, NULL);
+
+ if((ns = xml_element->name->nspace)) {
+ /* Cannot have same namespace already seen */
+ if(ns == nspace ||
+ /* ... or two default nspaces */
+ (!ns->prefix && !nspace->prefix) ||
+ /* ... or two same prefixes */
+ (ns->prefix && nspace->prefix &&
+ !strcmp((const char*)ns->prefix, (const char*)nspace->prefix))
+ )
+ return 1;
+ }
+
+
+ for(i = 0;
+ (ns = (const raptor_namespace*)raptor_sequence_get_at(xml_element->declared_nspaces, i));
+ i++) {
+ /* Cannot have same namespace already seen */
+ if(ns == nspace ||
+ /* ... or two default nspaces */
+ (!ns->prefix && !nspace->prefix) ||
+ /* ... or two same prefixes */
+ (ns->prefix && nspace->prefix &&
+ !strcmp((const char*)ns->prefix, (const char*)nspace->prefix))
+ )
+ return 1;
+ }
+
+ raptor_sequence_push(xml_element->declared_nspaces, nspace);
+
+ return 0;
+}
+
+
+#ifdef RAPTOR_DEBUG
+void
+raptor_print_xml_element(raptor_xml_element *element, FILE* stream)
+{
+ raptor_qname_print(stream, element->name);
+ fputc('\n', stream);
+
+ if(element->attribute_count) {
+ unsigned int i;
+ int printed = 0;
+
+ fputs(" attributes: ", stream);
+ for(i = 0; i < element->attribute_count; i++) {
+ if(element->attributes[i]) {
+ if(printed)
+ fputc(' ', stream);
+ raptor_qname_print(stream, element->attributes[i]);
+ fprintf(stream, "='%s'", element->attributes[i]->value);
+ printed = 1;
+ }
+ }
+ fputc('\n', stream);
+ }
+}
+#endif
+
+
+struct nsd
+{
+ const raptor_namespace *nspace;
+ unsigned char *declaration;
+ size_t length;
+};
+
+
+static int
+raptor_nsd_compare(const void *a, const void *b)
+{
+ struct nsd* nsd_a = (struct nsd*)a;
+ struct nsd* nsd_b = (struct nsd*)b;
+ return strcmp((const char*)nsd_a->declaration, (const char*)nsd_b->declaration);
+}
+
+
+/**
+ * raptor_xml_element_write:
+ * @element: XML element to format
+ * @nstack: Namespace stack context to use in formatting
+ * @is_empty: non-0 if element is empty
+ * @is_end: non-0 if this is an end element (else is a start element)
+ * @depth: XML element depth
+ * @iostr: iostream object
+ *
+ * Write a formatted XML element to a #raptor_iostream
+ *
+ * Return value: non-0 on failure
+*/
+int
+raptor_xml_element_write(raptor_xml_element *element,
+ raptor_namespace_stack *nstack,
+ int is_empty,
+ int is_end,
+ int depth,
+ raptor_iostream* iostr)
+{
+ struct nsd *nspace_declarations = NULL;
+ size_t nspace_declarations_count = 0;
+ unsigned int i;
+
+ /* max is 1 per element and 1 for each attribute + size of declared */
+ if(nstack) {
+ int nspace_max_count = element->attribute_count+1;
+ if(element->declared_nspaces)
+ nspace_max_count += raptor_sequence_size(element->declared_nspaces);
+
+ nspace_declarations = RAPTOR_CALLOC(struct nsd*, nspace_max_count,
+ sizeof(struct nsd));
+ }
+
+ if(element->name->nspace) {
+ if(!is_end && nstack &&
+ !raptor_namespaces_namespace_in_scope(nstack, element->name->nspace)) {
+ nspace_declarations[0].declaration=
+ raptor_namespace_format_as_xml(element->name->nspace,
+ &nspace_declarations[0].length);
+ nspace_declarations[0].nspace = element->name->nspace;
+ nspace_declarations_count++;
+ }
+ }
+
+ if(!is_end && element->attributes) {
+ for(i = 0; i < element->attribute_count; i++) {
+ /* qname */
+ if(element->attributes[i]->nspace) {
+ if(nstack &&
+ !raptor_namespaces_namespace_in_scope(nstack, element->attributes[i]->nspace) && element->attributes[i]->nspace != element->name->nspace) {
+ /* not in scope and not same as element (so already going to be declared)*/
+ unsigned int j;
+ int declare_me = 1;
+
+ /* check it wasn't an earlier declaration too */
+ for(j = 0; j < nspace_declarations_count; j++)
+ if(nspace_declarations[j].nspace == element->attributes[j]->nspace) {
+ declare_me = 0;
+ break;
+ }
+
+ if(declare_me) {
+ nspace_declarations[nspace_declarations_count].declaration=
+ raptor_namespace_format_as_xml(element->attributes[i]->nspace,
+ &nspace_declarations[nspace_declarations_count].length);
+ nspace_declarations[nspace_declarations_count].nspace = element->attributes[i]->nspace;
+ nspace_declarations_count++;
+ }
+ }
+
+ }
+ }
+ }
+
+
+ if(!is_end && nstack && element->declared_nspaces &&
+ raptor_sequence_size(element->declared_nspaces) > 0) {
+ for(i = 0; i< (unsigned int)raptor_sequence_size(element->declared_nspaces); i++) {
+ raptor_namespace* nspace = (raptor_namespace*)raptor_sequence_get_at(element->declared_nspaces, i);
+ unsigned int j;
+ int declare_me = 1;
+
+ /* check it wasn't an earlier declaration too */
+ for(j = 0; j < nspace_declarations_count; j++)
+ if(nspace_declarations[j].nspace == nspace) {
+ declare_me = 0;
+ break;
+ }
+
+ if(declare_me) {
+ nspace_declarations[nspace_declarations_count].declaration=
+ raptor_namespace_format_as_xml(nspace,
+ &nspace_declarations[nspace_declarations_count].length);
+ nspace_declarations[nspace_declarations_count].nspace = nspace;
+ nspace_declarations_count++;
+ }
+
+ }
+ }
+
+
+
+ raptor_iostream_write_byte('<', iostr);
+ if(is_end)
+ raptor_iostream_write_byte('/', iostr);
+
+ if(element->name->nspace && element->name->nspace->prefix_length > 0) {
+ raptor_iostream_counted_string_write((const char*)element->name->nspace->prefix,
+ element->name->nspace->prefix_length,
+ iostr);
+ raptor_iostream_write_byte(':', iostr);
+ }
+ raptor_iostream_counted_string_write((const char*)element->name->local_name,
+ element->name->local_name_length,
+ iostr);
+
+ /* declare namespaces */
+ if(nspace_declarations_count) {
+ /* sort them into the canonical order */
+ qsort((void*)nspace_declarations,
+ nspace_declarations_count, sizeof(struct nsd),
+ raptor_nsd_compare);
+ /* add them */
+ for(i = 0; i < nspace_declarations_count; i++) {
+ raptor_iostream_write_byte(' ', iostr);
+ raptor_iostream_counted_string_write((const char*)nspace_declarations[i].declaration,
+ nspace_declarations[i].length,
+ iostr);
+ RAPTOR_FREE(char*, nspace_declarations[i].declaration);
+ nspace_declarations[i].declaration = NULL;
+
+ raptor_namespace_stack_start_namespace(nstack,
+ (raptor_namespace*)nspace_declarations[i].nspace,
+ depth);
+ }
+ }
+
+
+ if(!is_end && element->attributes) {
+ for(i = 0; i < element->attribute_count; i++) {
+ raptor_iostream_write_byte(' ', iostr);
+
+ if(element->attributes[i]->nspace &&
+ element->attributes[i]->nspace->prefix_length > 0) {
+ raptor_iostream_counted_string_write((char*)element->attributes[i]->nspace->prefix,
+ element->attributes[i]->nspace->prefix_length,
+ iostr);
+ raptor_iostream_write_byte(':', iostr);
+ }
+
+ raptor_iostream_counted_string_write((const char*)element->attributes[i]->local_name,
+ element->attributes[i]->local_name_length,
+ iostr);
+
+ raptor_iostream_counted_string_write("=\"", 2, iostr);
+
+ raptor_xml_escape_string_write(element->attributes[i]->value,
+ element->attributes[i]->value_length,
+ '"',
+ iostr);
+ raptor_iostream_write_byte('"', iostr);
+ }
+ }
+
+ if(is_empty)
+ raptor_iostream_write_byte('/', iostr);
+
+ raptor_iostream_write_byte('>', iostr);
+
+ if(nstack)
+ RAPTOR_FREE(stringarray, nspace_declarations);
+
+ return 0;
+}
+
+
+/**
+ * raptor_xml_element_get_language:
+ * @xml_element: XML Element
+ *
+ * Get the XML language of the element.
+ *
+ * Return value: XML language or NULL if none in scope
+ **/
+const unsigned char*
+raptor_xml_element_get_language(raptor_xml_element* xml_element)
+{
+ return xml_element->xml_language;
+}
+
+
+/**
+ * raptor_valid_xml_ID:
+ * @rdf_parser: RDF parser
+ * @string: The string to check.
+ *
+ * Check the string matches the xml:ID value constraints.
+ *
+ * This checks the syntax part of the xml:ID validity constraint,
+ * that it matches [ VC: Name Token ] as amended by XML Namespaces:
+ *
+ * See <ulink url="http://www.w3.org/TR/REC-xml-names/#NT-NCName">Namespaces in XML NCName<ulink>
+ *
+ * Return value: non-zero if the ID string is valid
+ **/
+int
+raptor_valid_xml_ID(raptor_parser *rdf_parser, const unsigned char *string)
+{
+ size_t len = strlen((const char*)string);
+#ifdef RAPTOR_XML_1_1
+ #define XML_ID_XML_VERSION 11
+#else
+ #define XML_ID_XML_VERSION 10
+#endif
+
+ return raptor_xml_name_check(string, len, XML_ID_XML_VERSION);
+}
+
+
+/**
+ * raptor_xml_escape_string_any:
+ * @world: raptor world
+ * @string: string to XML escape (UTF-8)
+ * @len: length of string
+ * @buffer: the buffer to use for new string (UTF-8) or NULL to just calculate expected length
+ * @length: buffer size
+ * @quote: optional quote character to escape for attribute content, or 0
+ * @xml_version: XML 1.0 (10) or XML 1.1 (11)
+ *
+ * Return an XML-escaped version a string.
+ *
+ * Follows
+ * <ulink url="http://www.w3.org/TR/xml-c14n#ProcessingModel">Canonical XML rules on Text Nodes and Attribute Nodes</ulink>
+ *
+ * Both:
+ * Replaces <literal>&amp;</literal> and <literal>&lt;</literal>
+ * with <literal>&amp;amp;</literal> and <literal>&amp;lt;</literal>
+ * respectively, preserving other characters.
+ *
+ * Text Nodes:
+ * <literal>&gt;</literal> is turned into <literal>&amp;gt;</literal>
+ * ##xD is turned into <literal>&amp;##xD;</literal>
+ *
+ * Attribute Nodes:
+ * <literal>&gt;</literal> is generated not <literal>&amp;gt</literal>.
+ * ##x9, ##xA and ##xD are turned into
+ * <literal>&amp;##x9;</literal>,
+ * <literal>&amp;##xA;</literal> and
+ * <literal>&amp;##xD;</literal>
+ * entities.
+ *
+ * If @quote is given it can be either of '\'' or '\"'
+ * which will be turned into <literal>&amp;apos;</literal> or
+ * <literal>&amp;quot;</literal> respectively.
+ * ASCII NUL ('\0') or any other character will not be escaped.
+ *
+ * If @buffer is NULL, no work is done but the size of buffer
+ * required is returned. The output in buffer remains in UTF-8.
+ *
+ * If the input @string is empty, a single NUL will be written to the
+ * buffer.
+ *
+ * Return value: the number of bytes required / used or <0 on failure.
+ **/
+int
+raptor_xml_escape_string_any(raptor_world *world,
+ const unsigned char *string, size_t len,
+ unsigned char *buffer, size_t length,
+ char quote,
+ int xml_version)
+{
+ size_t l;
+ size_t new_len = 0;
+ const unsigned char *p;
+ unsigned char *q;
+ int unichar_len;
+ raptor_unichar unichar;
+
+ if(!string)
+ return -1;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, -1);
+
+ raptor_world_open(world);
+
+ if(quote != '\"' && quote != '\'')
+ quote='\0';
+
+ for(l = len, p = string; l; p++, l--) {
+ if(*p > 0x7f) {
+ unichar_len = raptor_unicode_utf8_string_get_char(p, l, &unichar);
+ if(unichar_len < 0 || RAPTOR_GOOD_CAST(size_t, unichar_len) > l) {
+ raptor_log_error(world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Bad UTF-8 encoding.");
+ return -1;
+ }
+ } else {
+ unichar=*p;
+ unichar_len = 1;
+ }
+
+ if(unichar == '&')
+ /* &amp; */
+ new_len+= 5;
+ else if(unichar == '<' || (!quote && unichar == '>'))
+ /* &lt; or &gt; */
+ new_len+= 4;
+ else if(quote && unichar == (unsigned long)quote)
+ /* &apos; or &quot; */
+ new_len+= 6;
+ else if(unichar == 0x0d ||
+ (quote && (unichar == 0x09 || unichar == 0x0a)))
+ /* &#xD; or &#x9; or &xA; */
+ new_len+= 5;
+ else if(unichar == 0x7f ||
+ (unichar < 0x20 && unichar != 0x09 && unichar != 0x0a)) {
+ if(!unichar || xml_version < 11) {
+ raptor_log_error_formatted(world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot write illegal XML 1.0 character U+%6lX.",
+ unichar);
+ } else {
+ /* &#xX; */
+ new_len+= 5;
+ if(unichar > 0x0f)
+ new_len++;
+ }
+ } else
+ new_len+= unichar_len;
+
+ unichar_len--; /* since loop does len-- */
+ p += unichar_len; l -= unichar_len;
+ }
+
+ if(length && new_len > length)
+ return 0;
+
+ if(!buffer)
+ return RAPTOR_BAD_CAST(int, new_len);
+
+ for(l = len, p = string, q = buffer; l; p++, l--) {
+ if(*p > 0x7f) {
+ unichar_len = raptor_unicode_utf8_string_get_char(p, l, &unichar);
+ /* if the UTF-8 encoding is bad, we already did return -1 above */
+ } else {
+ unichar=*p;
+ unichar_len = 1;
+ }
+
+ if(unichar == '&') {
+ memcpy(q, "&amp;", 5);
+ q+= 5;
+ } else if(unichar == '<') {
+ memcpy(q, "&lt;", 4);
+ q+= 4;
+ } else if(!quote && unichar == '>') {
+ memcpy(q, "&gt;", 4);
+ q+= 4;
+ } else if(quote && unichar == (unsigned long)quote) {
+ if(quote == '\'')
+ memcpy(q, "&apos;", 6);
+ else
+ memcpy(q, "&quot;", 6);
+ q+= 6;
+ } else if(unichar == 0x0d ||
+ (quote && (unichar == 0x09 || unichar == 0x0a))) {
+ /* &#xX; */
+ *q++='&';
+ *q++='#';
+ *q++='x';
+ if(unichar == 0x09)
+ *q++ = '9';
+ else
+ *q++ = 'A'+ ((char)unichar-0x0a);
+ *q++= ';';
+ } else if(unichar == 0x7f ||
+ (unichar < 0x20 && unichar != 0x09 && unichar != 0x0a)) {
+ if(!unichar || xml_version < 11) {
+ raptor_log_error_formatted(world, RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot write illegal XML 1.0 character U+%6lX.",
+ unichar);
+ } else {
+ /* &#xX; */
+ *q++ = '&';
+ *q++ = '#';
+ *q++ = 'x';
+ q += raptor_format_integer((char*)q, 3,
+ RAPTOR_GOOD_CAST(unsigned int, unichar),
+ /* base */ 16, -1, '\0');
+ *q++ = ';';
+ }
+ } else {
+ memcpy(q, p, unichar_len);
+ q+= unichar_len;
+ }
+
+ unichar_len--; /* since loop does len-- */
+ p += unichar_len; l -= unichar_len;
+ }
+
+ /* Terminate new string */
+ *q = '\0';
+
+ return RAPTOR_BAD_CAST(int, new_len);
+}
+
+
+/**
+ * raptor_xml_escape_string:
+ * @world: raptor world
+ * @string: string to XML 1.0 escape (UTF-8)
+ * @len: length of string
+ * @buffer: the buffer to use for new string (UTF-8) or NULL to just calculate expected length.
+ * @length: buffer size
+ * @quote: optional quote character to escape for attribute content, or 0
+ *
+ * Return an XML 1.0-escaped version a string.
+ *
+ * See raptor_xml_escape_string_any() for the conditions on parameters.
+ *
+ * Return value: the number of bytes required / used or <0 on failure.
+ **/
+int
+raptor_xml_escape_string(raptor_world *world,
+ const unsigned char *string, size_t len,
+ unsigned char *buffer, size_t length,
+ char quote)
+{
+ if(!string)
+ return -1;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(world, raptor_world, -1);
+
+ raptor_world_open(world);
+
+ return raptor_xml_escape_string_any(world, string, len,
+ buffer, length,
+ quote,
+ 10);
+}
+
+
+/**
+ * raptor_xml_escape_string_any_write:
+ * @string: string to XML escape (UTF-8)
+ * @len: length of string
+ * @quote: optional quote character to escape for attribute content, or 0
+ * @xml_version: XML version - 10 (XML 1.0) or 11 (XML 1.1)
+ * @iostr: the #raptor_iostream to write to
+ *
+ * Write an XML-escaped version of a string to an iostream.
+ *
+ * See raptor_xml_escape_string() for the escapes performed and
+ * the conditions on @quote and @string. XML 1.1 allows additional
+ * characters in XML such as U+0001 to U+001F inclusive.
+ *
+ * Return value: non 0 on failure
+ **/
+int
+raptor_xml_escape_string_any_write(const unsigned char *string,
+ size_t len,
+ char quote,
+ int xml_version,
+ raptor_iostream* iostr)
+{
+ size_t l;
+ const unsigned char *p;
+
+ if(xml_version != 10)
+ xml_version = 11;
+
+ if(quote != '\"' && quote != '\'')
+ quote='\0';
+
+ for(l = len, p = string; l; p++, l--) {
+ int unichar_len = 1;
+ raptor_unichar unichar=*p;
+
+ if(*p > 0x7f) {
+ unichar_len = raptor_unicode_utf8_string_get_char(p, l, &unichar);
+ if(unichar_len < 0 || RAPTOR_GOOD_CAST(size_t, unichar_len) > l) {
+ raptor_log_error(raptor_iostream_get_world(iostr),
+ RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Bad UTF-8 encoding.");
+ return 1;
+ }
+ }
+
+ if(unichar == '&')
+ raptor_iostream_counted_string_write("&amp;", 5, iostr);
+ else if(unichar == '<')
+ raptor_iostream_counted_string_write("&lt;", 4, iostr);
+ else if(!quote && unichar == '>')
+ raptor_iostream_counted_string_write("&gt;", 4, iostr);
+ else if(quote && unichar == (unsigned long)quote) {
+ if(quote == '\'')
+ raptor_iostream_counted_string_write("&apos;", 6, iostr);
+ else
+ raptor_iostream_counted_string_write("&quot;", 6, iostr);
+ } else if(unichar == 0x0d ||
+ (quote && (unichar == 0x09 || unichar == 0x0a))) {
+ /* &#xX; */
+ raptor_iostream_counted_string_write("&#x", 3, iostr);
+ if(unichar == 0x09)
+ raptor_iostream_write_byte('9', iostr);
+ else
+ raptor_iostream_write_byte('A'+ ((char)unichar-0x0a), iostr);
+ raptor_iostream_write_byte(';', iostr);
+ } else if(unichar == 0x7f ||
+ (unichar < 0x20 && unichar != 0x09 && unichar != 0x0a)) {
+ if(!unichar || xml_version < 11) {
+ raptor_log_error_formatted(raptor_iostream_get_world(iostr),
+ RAPTOR_LOG_LEVEL_ERROR, NULL,
+ "Cannot write illegal XML 1.0 character U+%6lX.",
+ unichar);
+ } else {
+ int width = (unichar < 0x10) ? 1 : 2;
+
+ /* &#xX; */
+ raptor_iostream_counted_string_write("&#x", 3, iostr);
+ raptor_iostream_hexadecimal_write(RAPTOR_GOOD_CAST(unsigned int, unichar), width, iostr);
+ raptor_iostream_write_byte(';', iostr);
+ }
+ } else
+ raptor_iostream_counted_string_write((const char*)p, unichar_len, iostr);
+
+ unichar_len--; /* since loop does len-- */
+ p += unichar_len; l -= unichar_len;
+ }
+
+ return 0;
+}
+
+
+/**
+ * raptor_xml_escape_string_write:
+ * @string: string to XML 1.0 escape (UTF-8)
+ * @len: length of string
+ * @quote: optional quote character to escape for attribute content, or 0
+ * @iostr: the #raptor_iostream to write to
+ *
+ * Write an XML 1.0-escaped version of a string to an iostream.
+ *
+ * See raptor_xml_escape_string_any_write() for the escapes
+ * performed and the conditions on @quote and @string.
+ *
+ * Return value: non 0 on failure
+ **/
+int
+raptor_xml_escape_string_write(const unsigned char *string,
+ size_t len,
+ char quote,
+ raptor_iostream* iostr)
+{
+ return raptor_xml_escape_string_any_write(string, len, quote, 10,
+ iostr);
+}
+
+
+/**
+ * raptor_xml_name_check:
+ * @string: UTF-8 name string
+ * @length: length of string
+ * @xml_version: XML version
+ *
+ * Check a string is a legal XML name (and legal UTF8).
+ *
+ * xml_version is either 10 (for XML 1.0) or 11 for (XML 1.1). Any
+ * other version fails.
+ *
+ * Return value: Non 0 if the string is a legal XML name
+ **/
+int
+raptor_xml_name_check(const unsigned char *string, size_t length,
+ int xml_version)
+{
+ int pos;
+
+ if(xml_version != 10 && xml_version != 11)
+ return 0;
+
+ for(pos = 0; length > 0; pos++) {
+ raptor_unichar unichar = 0;
+
+ int unichar_len;
+ unichar_len = raptor_unicode_utf8_string_get_char(string, length, &unichar);
+ if(unichar_len < 0 || RAPTOR_GOOD_CAST(size_t, unichar_len) > length)
+ return 0;
+
+ if(unichar > raptor_unicode_max_codepoint)
+ return 0;
+
+ if(!pos) {
+ /* start of name */
+ if(xml_version == 10) {
+ if(!raptor_unicode_is_xml10_namestartchar(unichar))
+ return 0;
+ } else {
+ if(!raptor_unicode_is_xml11_namestartchar(unichar))
+ return 0;
+ }
+ } else {
+ /* rest of name */
+ if(xml_version == 10) {
+ if(!raptor_unicode_is_xml10_namechar(unichar))
+ return 0;
+ } else {
+ if(!raptor_unicode_is_xml11_namechar(unichar))
+ return 0;
+ }
+ }
+
+ string += unichar_len;
+ length -= unichar_len;
+ }
+ return 1;
+}
+
+
+#endif
+
+
+
+
+#ifdef STANDALONE
+
+/* static prototypes */
+void raptor_bad_string_print(const unsigned char *input, FILE *stream);
+int main(int argc, char *argv[]);
+
+void
+raptor_bad_string_print(const unsigned char *input, FILE *stream)
+{
+ while(*input) {
+ char c=(char)*input;
+ if(isprint(c))
+ fputc(c, stream);
+ else
+ fprintf(stream, "\\x%02X", (c & 0xff));
+ input++;
+ }
+}
+
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world;
+ const char *program = raptor_basename(argv[0]);
+ struct tv {
+ const char *string;
+ const char quote;
+ const char *result;
+ };
+ struct tv *t;
+ struct tv test_values[]={
+ {"", 0, ""},
+
+ {"&", 0, "&amp;"},
+ {"<", 0, "&lt;"},
+ {">", 0, "&gt;"},
+ {"\x09", 0, "\x09"},
+ {"\x0a", 0, "\x0a"},
+ {"\x0d", 0, "&#xD;"},
+
+ {"'&'", '\'', "&apos;&amp;&apos;"},
+ {"'<'", '\'', "&apos;&lt;&apos;"},
+ {"'>'", '\'', "&apos;>&apos;"},
+ {"\x09", '\'', "&#x9;"},
+ {"\x0a", '\'', "&#xA;"},
+ {"\x0d", '\'', "&#xD;"},
+
+ {"\"&\"", '\"', "&quot;&amp;&quot;"},
+ {"\"<\"", '\"', "&quot;&lt;&quot;"},
+ {"\">\"", '\"', "&quot;>&quot;"},
+ {"\x09", '\"', "&#x9;"},
+ {"\x0a", '\"', "&#xA;"},
+ {"\x0d", '\"', "&#xD;"},
+
+ {"&amp;", 0, "&amp;amp;"},
+ {"<foo>", 0, "&lt;foo&gt;"},
+#if 0
+ {"\x1f", 0, "&#x1F;"},
+ {"\xc2\x80", 0, "&#x80;"},
+ {"\xe0\xa0\x80", 0, "&#x0800;"},
+ {"\xf0\x90\x80\x80", 0, "&#x10000;"},
+
+ {"\x7f", 0, "&#x7F;"},
+ {"\xdf\xbf", 0, "&#x07FF;"},
+ {"\xef\xbf\xbd", 0, "&#xFFFD;"},
+ {"\xf4\x8f\xbf\xbf", 0, "&#x10FFFF;"},
+
+ {"\xc3\xbf", 0, "&#xFF;"},
+ {"\xf0\x8f\xbf\xbf", 0, "&#xFFFF;"},
+#endif
+ {NULL, 0, 0}
+ };
+ int i;
+ int failures = 0;
+
+ world = raptor_new_world();
+ if(!world || raptor_world_open(world))
+ exit(1);
+
+ for(i = 0; (t=&test_values[i]) && t->string; i++) {
+ const unsigned char *utf8_string = (const unsigned char*)t->string;
+ char quote = t->quote;
+ size_t utf8_string_len = strlen((const char*)utf8_string);
+ unsigned char *xml_string;
+ int xml_string_len = 0;
+
+ xml_string_len = raptor_xml_escape_string(world,
+ utf8_string, utf8_string_len,
+ NULL, 0, quote);
+ if(xml_string_len < 0) {
+ fprintf(stderr, "%s: raptor_xml_escape_string FAILED to escape string '",
+ program);
+ raptor_bad_string_print(utf8_string, stderr);
+ fputs("'\n", stderr);
+ failures++;
+ continue;
+ }
+
+ xml_string = RAPTOR_MALLOC(unsigned char*, xml_string_len + 1);
+
+ xml_string_len = raptor_xml_escape_string(world,
+ utf8_string, utf8_string_len,
+ xml_string, xml_string_len, quote);
+ if(xml_string_len < 0) {
+ fprintf(stderr, "%s: raptor_xml_escape_string FAILED to escape string '",
+ program);
+ raptor_bad_string_print(utf8_string, stderr);
+ fputs("'\n", stderr);
+ failures++;
+ continue;
+ }
+ if(strcmp((const char*)xml_string, t->result)) {
+ fprintf(stderr, "%s: raptor_xml_escape_string FAILED to escape string '",
+ program);
+ raptor_bad_string_print(utf8_string, stderr);
+ fprintf(stderr, "', expected '%s', result was '%s'\n",
+ t->result, xml_string);
+ failures++;
+ continue;
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: raptor_xml_escape_string escaped string to '%s' ok\n",
+ program, xml_string);
+#endif
+ RAPTOR_FREE(char*, xml_string);
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ if(!failures)
+ fprintf(stderr, "%s: raptor_xml_escape_string all tests OK\n", program);
+#endif
+
+ raptor_free_world(world);
+
+ return failures;
+}
+
+#endif
diff --git a/src/raptor_xml_writer.c b/src/raptor_xml_writer.c
new file mode 100644
index 0000000..51eb4e9
--- /dev/null
+++ b/src/raptor_xml_writer.c
@@ -0,0 +1,1008 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * raptor_xml_writer.c - Raptor XML Writer for SAX2 events API
+ *
+ * Copyright (C) 2003-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#ifndef STANDALONE
+
+
+#define XML_WRITER_AUTO_INDENT(xml_writer) RAPTOR_OPTIONS_GET_NUMERIC(xml_writer, RAPTOR_OPTION_WRITER_AUTO_INDENT)
+#define XML_WRITER_AUTO_EMPTY(xml_writer) RAPTOR_OPTIONS_GET_NUMERIC(xml_writer, RAPTOR_OPTION_WRITER_AUTO_EMPTY)
+#define XML_WRITER_INDENT(xml_writer) RAPTOR_OPTIONS_GET_NUMERIC(xml_writer, RAPTOR_OPTION_WRITER_INDENT_WIDTH)
+#define XML_WRITER_XML_VERSION(xml_writer) RAPTOR_OPTIONS_GET_NUMERIC(xml_writer, RAPTOR_OPTION_WRITER_XML_VERSION)
+
+
+#define XML_WRITER_FLUSH_CLOSE_BRACKET(xml_writer) \
+ if((XML_WRITER_AUTO_EMPTY(xml_writer)) && \
+ xml_writer->current_element && \
+ !(xml_writer->current_element->content_cdata_seen || \
+ xml_writer->current_element->content_element_seen)) { \
+ raptor_iostream_write_byte('>', xml_writer->iostr); \
+}
+
+
+/* Define this for far too much output */
+#undef RAPTOR_DEBUG_CDATA
+
+
+struct raptor_xml_writer_s {
+ raptor_world *world;
+
+ int canonicalize;
+
+ int depth;
+
+ int my_nstack;
+ raptor_namespace_stack *nstack;
+ int nstack_depth;
+
+ raptor_xml_element* current_element;
+
+ /* outputting to this iostream */
+ raptor_iostream *iostr;
+
+ /* Has writing the XML declaration writing been checked? */
+ int xml_declaration_checked;
+
+ /* An extra newline is wanted */
+ int pending_newline;
+
+ /* Options (per-object) */
+ raptor_object_options options;
+};
+
+
+/* 16 spaces */
+#define SPACES_BUFFER_SIZE sizeof(spaces_buffer)
+static const unsigned char spaces_buffer[] = {
+ ' ', ' ', ' ', ' ',
+ ' ', ' ', ' ', ' ',
+ ' ', ' ', ' ', ' ',
+ ' ', ' ', ' ', ' '
+};
+
+
+
+/* helper functions */
+
+/* Handle printing a pending newline OR newline with indenting */
+static int
+raptor_xml_writer_indent(raptor_xml_writer *xml_writer)
+{
+ int num_spaces;
+
+ if(!XML_WRITER_AUTO_INDENT(xml_writer)) {
+ if(xml_writer->pending_newline) {
+ raptor_iostream_write_byte('\n', xml_writer->iostr);
+ xml_writer->pending_newline = 0;
+
+ if(xml_writer->current_element)
+ xml_writer->current_element->content_cdata_seen = 1;
+ }
+ return 0;
+ }
+
+ num_spaces = xml_writer->depth * XML_WRITER_INDENT(xml_writer);
+
+ /* Do not write an extra newline at the start of the document
+ * (after the XML declaration or XMP processing instruction has
+ * been writtten)
+ */
+ if(xml_writer->xml_declaration_checked == 1)
+ xml_writer->xml_declaration_checked++;
+ else {
+ raptor_iostream_write_byte('\n', xml_writer->iostr);
+ xml_writer->pending_newline = 0;
+ }
+
+ while(num_spaces > 0) {
+
+ int count = (num_spaces > RAPTOR_GOOD_CAST(int, SPACES_BUFFER_SIZE)) ?
+ RAPTOR_GOOD_CAST(int, SPACES_BUFFER_SIZE) : num_spaces;
+
+ raptor_iostream_counted_string_write(spaces_buffer, count,
+ xml_writer->iostr);
+
+ num_spaces -= count;
+ }
+
+ if(xml_writer->current_element)
+ xml_writer->current_element->content_cdata_seen = 1;
+
+ return 0;
+}
+
+
+struct nsd {
+ const raptor_namespace *nspace;
+ unsigned char *declaration;
+ size_t length;
+};
+
+
+static int
+raptor_xml_writer_nsd_compare(const void *a, const void *b)
+{
+ struct nsd* nsd_a = (struct nsd*)a;
+ struct nsd* nsd_b = (struct nsd*)b;
+ return strcmp((const char*)nsd_a->declaration, (const char*)nsd_b->declaration);
+}
+
+
+static int
+raptor_xml_writer_start_element_common(raptor_xml_writer* xml_writer,
+ raptor_xml_element* element,
+ int auto_empty)
+{
+ raptor_iostream* iostr = xml_writer->iostr;
+ raptor_namespace_stack *nstack = xml_writer->nstack;
+ int depth = xml_writer->depth;
+ int auto_indent = XML_WRITER_AUTO_INDENT(xml_writer);
+ int xml_version = XML_WRITER_XML_VERSION(xml_writer);
+ struct nsd *nspace_declarations = NULL;
+ size_t nspace_declarations_count = 0;
+ unsigned int i;
+
+ /* max is 1 per element and 1 for each attribute + size of declared */
+ if(nstack) {
+ int nspace_max_count = element->attribute_count+1;
+ if(element->declared_nspaces)
+ nspace_max_count += raptor_sequence_size(element->declared_nspaces);
+
+ nspace_declarations = RAPTOR_CALLOC(struct nsd*, nspace_max_count,
+ sizeof(struct nsd));
+ if(!nspace_declarations)
+ return 1;
+ }
+
+ if(element->name->nspace) {
+ if(nstack && !raptor_namespaces_namespace_in_scope(nstack, element->name->nspace)) {
+ nspace_declarations[0].declaration=
+ raptor_namespace_format_as_xml(element->name->nspace,
+ &nspace_declarations[0].length);
+ if(!nspace_declarations[0].declaration)
+ goto error;
+ nspace_declarations[0].nspace = element->name->nspace;
+ nspace_declarations_count++;
+ }
+ }
+
+ if(element->attributes) {
+ for(i = 0; i < element->attribute_count; i++) {
+ /* qname */
+ if(element->attributes[i]->nspace) {
+ if(nstack &&
+ !raptor_namespaces_namespace_in_scope(nstack, element->attributes[i]->nspace) && element->attributes[i]->nspace != element->name->nspace) {
+ /* not in scope and not same as element (so already going to be declared)*/
+ unsigned int j;
+ int declare_me = 1;
+
+ /* check it wasn't an earlier declaration too */
+ for(j = 0; j < nspace_declarations_count; j++)
+ if(nspace_declarations[j].nspace == element->attributes[j]->nspace) {
+ declare_me = 0;
+ break;
+ }
+
+ if(declare_me) {
+ nspace_declarations[nspace_declarations_count].declaration=
+ raptor_namespace_format_as_xml(element->attributes[i]->nspace,
+ &nspace_declarations[nspace_declarations_count].length);
+ if(!nspace_declarations[nspace_declarations_count].declaration)
+ goto error;
+ nspace_declarations[nspace_declarations_count].nspace = element->attributes[i]->nspace;
+ nspace_declarations_count++;
+ }
+ }
+ }
+ }
+ }
+
+ if(nstack && element->declared_nspaces &&
+ raptor_sequence_size(element->declared_nspaces) > 0) {
+ for(i = 0; i< (unsigned int)raptor_sequence_size(element->declared_nspaces); i++) {
+ raptor_namespace* nspace = (raptor_namespace*)raptor_sequence_get_at(element->declared_nspaces, i);
+ unsigned int j;
+ int declare_me = 1;
+
+ /* check it wasn't an earlier declaration too */
+ for(j = 0; j < nspace_declarations_count; j++)
+ if(nspace_declarations[j].nspace == nspace) {
+ declare_me = 0;
+ break;
+ }
+
+ if(declare_me) {
+ nspace_declarations[nspace_declarations_count].declaration=
+ raptor_namespace_format_as_xml(nspace,
+ &nspace_declarations[nspace_declarations_count].length);
+ if(!nspace_declarations[nspace_declarations_count].declaration)
+ goto error;
+ nspace_declarations[nspace_declarations_count].nspace = nspace;
+ nspace_declarations_count++;
+ }
+
+ }
+ }
+
+ raptor_iostream_write_byte('<', iostr);
+
+ if(element->name->nspace && element->name->nspace->prefix_length > 0) {
+ raptor_iostream_counted_string_write((const char*)element->name->nspace->prefix,
+ element->name->nspace->prefix_length,
+ iostr);
+ raptor_iostream_write_byte(':', iostr);
+ }
+ raptor_iostream_counted_string_write((const char*)element->name->local_name,
+ element->name->local_name_length,
+ iostr);
+
+ /* declare namespaces */
+ if(nspace_declarations_count) {
+ /* sort them into the canonical order */
+ qsort((void*)nspace_declarations,
+ nspace_declarations_count, sizeof(struct nsd),
+ raptor_xml_writer_nsd_compare);
+ /* add them */
+ for(i = 0; i < nspace_declarations_count; i++) {
+ if(auto_indent && nspace_declarations_count > 1) {
+ /* indent xmlns namespace attributes */
+ raptor_xml_writer_newline(xml_writer);
+ xml_writer->depth++;
+ raptor_xml_writer_indent(xml_writer);
+ xml_writer->depth--;
+ }
+ raptor_iostream_write_byte(' ', iostr);
+ raptor_iostream_counted_string_write((const char*)nspace_declarations[i].declaration,
+ nspace_declarations[i].length,
+ iostr);
+ RAPTOR_FREE(char*, nspace_declarations[i].declaration);
+ nspace_declarations[i].declaration = NULL;
+
+ if(raptor_namespace_stack_start_namespace(nstack,
+ (raptor_namespace*)nspace_declarations[i].nspace,
+ depth))
+ goto error;
+ }
+ }
+
+
+ if(element->attributes) {
+ for(i = 0; i < element->attribute_count; i++) {
+ raptor_iostream_write_byte(' ', iostr);
+
+ if(element->attributes[i]->nspace &&
+ element->attributes[i]->nspace->prefix_length > 0) {
+ raptor_iostream_counted_string_write((char*)element->attributes[i]->nspace->prefix,
+ element->attributes[i]->nspace->prefix_length,
+ iostr);
+ raptor_iostream_write_byte(':', iostr);
+ }
+
+ raptor_iostream_counted_string_write((const char*)element->attributes[i]->local_name,
+ element->attributes[i]->local_name_length,
+ iostr);
+
+ raptor_iostream_counted_string_write("=\"", 2, iostr);
+
+ raptor_xml_escape_string_any_write(element->attributes[i]->value,
+ element->attributes[i]->value_length,
+ '"',
+ xml_version,
+ iostr);
+ raptor_iostream_write_byte('"', iostr);
+ }
+ }
+
+ if(!auto_empty)
+ raptor_iostream_write_byte('>', iostr);
+
+ if(nstack)
+ RAPTOR_FREE(stringarray, nspace_declarations);
+
+ return 0;
+
+ /* Clean up nspace_declarations on error */
+ error:
+
+ for(i = 0; i < nspace_declarations_count; i++) {
+ if(nspace_declarations[i].declaration)
+ RAPTOR_FREE(char*, nspace_declarations[i].declaration);
+ }
+
+ if(nspace_declarations)
+ RAPTOR_FREE(stringarray, nspace_declarations);
+
+ return 1;
+}
+
+
+static int
+raptor_xml_writer_end_element_common(raptor_xml_writer* xml_writer,
+ raptor_xml_element *element,
+ int is_empty)
+{
+ raptor_iostream* iostr = xml_writer->iostr;
+
+ if(is_empty)
+ raptor_iostream_write_byte('/', iostr);
+ else {
+
+ raptor_iostream_write_byte('<', iostr);
+
+ raptor_iostream_write_byte('/', iostr);
+
+ if(element->name->nspace && element->name->nspace->prefix_length > 0) {
+ raptor_iostream_counted_string_write((const char*)element->name->nspace->prefix,
+ element->name->nspace->prefix_length,
+ iostr);
+ raptor_iostream_write_byte(':', iostr);
+ }
+ raptor_iostream_counted_string_write((const char*)element->name->local_name,
+ element->name->local_name_length,
+ iostr);
+ }
+
+ raptor_iostream_write_byte('>', iostr);
+
+ return 0;
+
+}
+
+
+/**
+ * raptor_new_xml_writer:
+ * @world: raptor_world object
+ * @nstack: Namespace stack for the writer to start with (or NULL)
+ * @iostr: I/O stream to write to
+ *
+ * Constructor - Create a new XML Writer writing XML to a raptor_iostream
+ *
+ * Return value: a new #raptor_xml_writer object or NULL on failure
+ **/
+raptor_xml_writer*
+raptor_new_xml_writer(raptor_world* world,
+ raptor_namespace_stack *nstack,
+ raptor_iostream* iostr)
+{
+ raptor_xml_writer* xml_writer;
+
+ RAPTOR_CHECK_CONSTRUCTOR_WORLD(world);
+
+ if(!iostr)
+ return NULL;
+
+ raptor_world_open(world);
+
+ xml_writer = RAPTOR_CALLOC(raptor_xml_writer*, 1, sizeof(*xml_writer));
+ if(!xml_writer)
+ return NULL;
+
+ xml_writer->world = world;
+
+ xml_writer->nstack_depth = 0;
+
+ xml_writer->nstack = nstack;
+ if(!xml_writer->nstack) {
+ xml_writer->nstack = raptor_new_namespaces(world, 1);
+ xml_writer->my_nstack = 1;
+ }
+
+ xml_writer->iostr = iostr;
+
+ raptor_object_options_init(&xml_writer->options,
+ RAPTOR_OPTION_AREA_XML_WRITER);
+
+ return xml_writer;
+}
+
+
+/**
+ * raptor_free_xml_writer:
+ * @xml_writer: XML writer object
+ *
+ * Destructor - Free XML Writer
+ *
+ **/
+void
+raptor_free_xml_writer(raptor_xml_writer* xml_writer)
+{
+ if(!xml_writer)
+ return;
+
+ if(xml_writer->nstack && xml_writer->my_nstack)
+ raptor_free_namespaces(xml_writer->nstack);
+
+ raptor_object_options_clear(&xml_writer->options);
+
+ RAPTOR_FREE(raptor_xml_writer, xml_writer);
+}
+
+
+static void
+raptor_xml_writer_write_xml_declaration(raptor_xml_writer* xml_writer)
+{
+ if(!xml_writer->xml_declaration_checked) {
+ /* check that it should be written once only */
+ xml_writer->xml_declaration_checked = 1;
+
+ if(RAPTOR_OPTIONS_GET_NUMERIC(xml_writer,
+ RAPTOR_OPTION_WRITER_XML_DECLARATION)) {
+ raptor_iostream_string_write((const unsigned char*)"<?xml version=\"",
+ xml_writer->iostr);
+ raptor_iostream_counted_string_write((XML_WRITER_XML_VERSION(xml_writer) == 10) ?
+ (const unsigned char*)"1.0" :
+ (const unsigned char*)"1.1",
+ 3, xml_writer->iostr);
+ raptor_iostream_string_write((const unsigned char*)"\" encoding=\"utf-8\"?>\n",
+ xml_writer->iostr);
+ }
+ }
+
+}
+
+
+/**
+ * raptor_xml_writer_empty_element:
+ * @xml_writer: XML writer object
+ * @element: XML element object
+ *
+ * Write an empty XML element to the XML writer.
+ *
+ * Closes any previous empty element if XML writer option AUTO_EMPTY
+ * is enabled.
+ **/
+void
+raptor_xml_writer_empty_element(raptor_xml_writer* xml_writer,
+ raptor_xml_element *element)
+{
+ raptor_xml_writer_write_xml_declaration(xml_writer);
+
+ XML_WRITER_FLUSH_CLOSE_BRACKET(xml_writer);
+
+ if(xml_writer->pending_newline || XML_WRITER_AUTO_INDENT(xml_writer))
+ raptor_xml_writer_indent(xml_writer);
+
+ raptor_xml_writer_start_element_common(xml_writer, element, 1);
+
+ raptor_xml_writer_end_element_common(xml_writer, element, 1);
+
+ raptor_namespaces_end_for_depth(xml_writer->nstack, xml_writer->depth);
+}
+
+
+/**
+ * raptor_xml_writer_start_element:
+ * @xml_writer: XML writer object
+ * @element: XML element object
+ *
+ * Write a start XML element to the XML writer.
+ *
+ * Closes any previous empty element if XML writer option AUTO_EMPTY
+ * is enabled.
+ *
+ * Indents the start element if XML writer option AUTO_INDENT is enabled.
+ **/
+void
+raptor_xml_writer_start_element(raptor_xml_writer* xml_writer,
+ raptor_xml_element *element)
+{
+ raptor_xml_writer_write_xml_declaration(xml_writer);
+
+ XML_WRITER_FLUSH_CLOSE_BRACKET(xml_writer);
+
+ if(xml_writer->pending_newline || XML_WRITER_AUTO_INDENT(xml_writer))
+ raptor_xml_writer_indent(xml_writer);
+
+ raptor_xml_writer_start_element_common(xml_writer, element,
+ XML_WRITER_AUTO_EMPTY(xml_writer));
+
+ xml_writer->depth++;
+
+ /* SJS Note: This "if" clause is necessary because raptor_rdfxml.c
+ * uses xml_writer for parseType="literal" and passes in elements
+ * whose parent field is already set. The first time this function
+ * is called, it sets element->parent to 0, causing the warn-07.rdf
+ * test to fail. Subsequent calls to this function set
+ * element->parent to its existing value.
+ */
+ if(xml_writer->current_element)
+ element->parent = xml_writer->current_element;
+
+ xml_writer->current_element = element;
+ if(element && element->parent)
+ element->parent->content_element_seen = 1;
+}
+
+
+/**
+ * raptor_xml_writer_end_element:
+ * @xml_writer: XML writer object
+ * @element: XML element object
+ *
+ * Write an end XML element to the XML writer.
+ *
+ * Indents the end element if XML writer option AUTO_INDENT is enabled.
+ **/
+void
+raptor_xml_writer_end_element(raptor_xml_writer* xml_writer,
+ raptor_xml_element* element)
+{
+ int is_empty;
+
+ xml_writer->depth--;
+
+ if(xml_writer->pending_newline ||
+ (XML_WRITER_AUTO_INDENT(xml_writer) && element->content_element_seen))
+ raptor_xml_writer_indent(xml_writer);
+
+ is_empty = XML_WRITER_AUTO_EMPTY(xml_writer) ?
+ !(element->content_cdata_seen || element->content_element_seen) : 0;
+
+ raptor_xml_writer_end_element_common(xml_writer, element, is_empty);
+
+ raptor_namespaces_end_for_depth(xml_writer->nstack, xml_writer->depth);
+
+ if(xml_writer->current_element)
+ xml_writer->current_element = xml_writer->current_element->parent;
+}
+
+
+/**
+ * raptor_xml_writer_newline:
+ * @xml_writer: XML writer object
+ *
+ * Write a newline to the XML writer.
+ *
+ * Indents the next line if XML writer option AUTO_INDENT is enabled.
+ **/
+void
+raptor_xml_writer_newline(raptor_xml_writer* xml_writer)
+{
+ xml_writer->pending_newline = 1;
+}
+
+
+/**
+ * raptor_xml_writer_cdata:
+ * @xml_writer: XML writer object
+ * @s: string to XML escape and write
+ *
+ * Write CDATA XML-escaped to the XML writer.
+ *
+ * Closes any previous empty element if XML writer option AUTO_EMPTY
+ * is enabled.
+ *
+ **/
+void
+raptor_xml_writer_cdata(raptor_xml_writer* xml_writer,
+ const unsigned char *s)
+{
+ raptor_xml_writer_write_xml_declaration(xml_writer);
+
+ XML_WRITER_FLUSH_CLOSE_BRACKET(xml_writer);
+
+ raptor_xml_escape_string_any_write(s, strlen((const char*)s),
+ '\0',
+ XML_WRITER_XML_VERSION(xml_writer),
+ xml_writer->iostr);
+
+ if(xml_writer->current_element)
+ xml_writer->current_element->content_cdata_seen = 1;
+}
+
+
+/**
+ * raptor_xml_writer_cdata_counted:
+ * @xml_writer: XML writer object
+ * @s: string to XML escape and write
+ * @len: length of string
+ *
+ * Write counted CDATA XML-escaped to the XML writer.
+ *
+ * Closes any previous empty element if XML writer option AUTO_EMPTY
+ * is enabled.
+ *
+ **/
+void
+raptor_xml_writer_cdata_counted(raptor_xml_writer* xml_writer,
+ const unsigned char *s, unsigned int len)
+{
+ raptor_xml_writer_write_xml_declaration(xml_writer);
+
+ XML_WRITER_FLUSH_CLOSE_BRACKET(xml_writer);
+
+ raptor_xml_escape_string_any_write(s, len,
+ '\0',
+ XML_WRITER_XML_VERSION(xml_writer),
+ xml_writer->iostr);
+
+ if(xml_writer->current_element)
+ xml_writer->current_element->content_cdata_seen = 1;
+}
+
+
+/**
+ * raptor_xml_writer_raw:
+ * @xml_writer: XML writer object
+ * @s: string to write
+ *
+ * Write a string raw to the XML writer.
+ *
+ * Closes any previous empty element if XML writer option AUTO_EMPTY
+ * is enabled.
+ *
+ **/
+void
+raptor_xml_writer_raw(raptor_xml_writer* xml_writer,
+ const unsigned char *s)
+{
+ raptor_xml_writer_write_xml_declaration(xml_writer);
+
+ XML_WRITER_FLUSH_CLOSE_BRACKET(xml_writer);
+
+ raptor_iostream_string_write(s, xml_writer->iostr);
+
+ if(xml_writer->current_element)
+ xml_writer->current_element->content_cdata_seen = 1;
+}
+
+
+/**
+ * raptor_xml_writer_raw_counted:
+ * @xml_writer: XML writer object
+ * @s: string to write
+ * @len: length of string
+ *
+ * Write a counted string raw to the XML writer.
+ *
+ * Closes any previous empty element if XML writer option AUTO_EMPTY
+ * is enabled.
+ *
+ **/
+void
+raptor_xml_writer_raw_counted(raptor_xml_writer* xml_writer,
+ const unsigned char *s, unsigned int len)
+{
+ raptor_xml_writer_write_xml_declaration(xml_writer);
+
+ XML_WRITER_FLUSH_CLOSE_BRACKET(xml_writer);
+
+ raptor_iostream_counted_string_write(s, len, xml_writer->iostr);
+
+ if(xml_writer->current_element)
+ xml_writer->current_element->content_cdata_seen = 1;
+}
+
+
+/**
+ * raptor_xml_writer_comment:
+ * @xml_writer: XML writer object
+ * @s: comment string to write
+ *
+ * Write an XML comment to the XML writer.
+ *
+ * Closes any previous empty element if XML writer option AUTO_EMPTY
+ * is enabled.
+ *
+ **/
+void
+raptor_xml_writer_comment(raptor_xml_writer* xml_writer,
+ const unsigned char *s)
+{
+ XML_WRITER_FLUSH_CLOSE_BRACKET(xml_writer);
+
+ raptor_xml_writer_raw_counted(xml_writer, (const unsigned char*)"<!-- ", 5);
+ raptor_xml_writer_cdata(xml_writer, s);
+ raptor_xml_writer_raw_counted(xml_writer, (const unsigned char*)" -->", 4);
+}
+
+
+/**
+ * raptor_xml_writer_comment_counted:
+ * @xml_writer: XML writer object
+ * @s: comment string to write
+ * @len: length of string
+ *
+ * Write a counted XML comment to the XML writer.
+ *
+ * Closes any previous empty element if XML writer option AUTO_EMPTY
+ * is enabled.
+ *
+ **/
+void
+raptor_xml_writer_comment_counted(raptor_xml_writer* xml_writer,
+ const unsigned char *s, unsigned int len)
+{
+ XML_WRITER_FLUSH_CLOSE_BRACKET(xml_writer);
+
+ raptor_xml_writer_raw_counted(xml_writer, (const unsigned char*)"<!-- ", 5);
+ raptor_xml_writer_cdata_counted(xml_writer, s, len);
+ raptor_xml_writer_raw_counted(xml_writer, (const unsigned char*)" -->", 4);
+}
+
+
+/**
+ * raptor_xml_writer_flush:
+ * @xml_writer: XML writer object
+ *
+ * Finish the XML writer.
+ *
+ **/
+void
+raptor_xml_writer_flush(raptor_xml_writer* xml_writer)
+{
+ if(xml_writer->pending_newline) {
+ raptor_iostream_write_byte('\n', xml_writer->iostr);
+ xml_writer->pending_newline = 0;
+ }
+}
+
+
+/**
+ * raptor_xml_writer_set_option:
+ * @xml_writer: #raptor_xml_writer xml_writer object
+ * @option: option to set from enumerated #raptor_option values
+ * @string: string option value (or NULL)
+ * @integer: integer option value
+ *
+ * Set xml_writer option.
+ *
+ * If @string is not NULL and the option type is numeric, the string
+ * value is converted to an integer and used in preference to @integer.
+ *
+ * If @string is NULL and the option type is not numeric, an error is
+ * returned.
+ *
+ * The @string values used are copied.
+ *
+ * The allowed options are available via
+ * raptor_world_get_option_description().
+ *
+ * Return value: non 0 on failure or if the option is unknown
+ **/
+int
+raptor_xml_writer_set_option(raptor_xml_writer *xml_writer,
+ raptor_option option, char* string, int integer)
+{
+ return raptor_object_options_set_option(&xml_writer->options, option,
+ string, integer);
+}
+
+
+/**
+ * raptor_xml_writer_get_option:
+ * @xml_writer: #raptor_xml_writer xml_writer object
+ * @option: option to get value
+ * @string_p: pointer to where to store string value
+ * @integer_p: pointer to where to store integer value
+ *
+ * Get xml_writer option.
+ *
+ * Any string value returned in *@string_p is shared and must
+ * be copied by the caller.
+ *
+ * The allowed options are available via
+ * raptor_world_get_option_description().
+ *
+ * Return value: option value or < 0 for an illegal option
+ **/
+int
+raptor_xml_writer_get_option(raptor_xml_writer *xml_writer,
+ raptor_option option,
+ char** string_p, int* integer_p)
+{
+ return raptor_object_options_get_option(&xml_writer->options, option,
+ string_p, integer_p);
+}
+
+
+/**
+ * raptor_xml_writer_get_depth:
+ * @xml_writer: #raptor_xml_writer xml writer object
+ *
+ * Get the current XML Writer element depth
+ *
+ * Return value: element stack depth
+ */
+int
+raptor_xml_writer_get_depth(raptor_xml_writer *xml_writer)
+{
+ return xml_writer->depth;
+}
+
+
+#endif
+
+
+
+#ifdef STANDALONE
+
+/* one more prototype */
+int main(int argc, char *argv[]);
+
+
+const unsigned char *base_uri_string = (const unsigned char*)"http://example.org/base#";
+
+#define OUT_BYTES_COUNT 135
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world;
+ const char *program = raptor_basename(argv[0]);
+ raptor_iostream *iostr;
+ raptor_namespace_stack *nstack;
+ raptor_namespace* foo_ns;
+ raptor_xml_writer* xml_writer;
+ raptor_uri* base_uri;
+ raptor_qname* el_name;
+ raptor_xml_element *element;
+ unsigned long offset;
+ raptor_qname **attrs;
+ raptor_uri* base_uri_copy = NULL;
+
+ /* for raptor_new_iostream_to_string */
+ void *string = NULL;
+ size_t string_len = 0;
+
+ world = raptor_new_world();
+ if(!world || raptor_world_open(world))
+ exit(1);
+
+ iostr = raptor_new_iostream_to_string(world, &string, &string_len, NULL);
+ if(!iostr) {
+ fprintf(stderr, "%s: Failed to create iostream to string\n", program);
+ exit(1);
+ }
+
+ nstack = raptor_new_namespaces(world, 1);
+
+ xml_writer = raptor_new_xml_writer(world, nstack, iostr);
+ if(!xml_writer) {
+ fprintf(stderr, "%s: Failed to create xml_writer to iostream\n", program);
+ exit(1);
+ }
+
+ base_uri = raptor_new_uri(world, base_uri_string);
+
+ foo_ns = raptor_new_namespace(nstack,
+ (const unsigned char*)"foo",
+ (const unsigned char*)"http://example.org/foo-ns#",
+ 0);
+
+
+ el_name = raptor_new_qname_from_namespace_local_name(world,
+ foo_ns,
+ (const unsigned char*)"bar",
+ NULL);
+ base_uri_copy = base_uri ? raptor_uri_copy(base_uri) : NULL;
+ element = raptor_new_xml_element(el_name,
+ NULL, /* language */
+ base_uri_copy);
+
+ raptor_xml_writer_start_element(xml_writer, element);
+ raptor_xml_writer_cdata_counted(xml_writer, (const unsigned char*)"hello\n", 6);
+ raptor_xml_writer_comment_counted(xml_writer, (const unsigned char*)"comment", 7);
+ raptor_xml_writer_cdata(xml_writer, (const unsigned char*)"\n");
+ raptor_xml_writer_end_element(xml_writer, element);
+
+ raptor_free_xml_element(element);
+
+ raptor_xml_writer_cdata(xml_writer, (const unsigned char*)"\n");
+
+ el_name = raptor_new_qname(nstack,
+ (const unsigned char*)"blah",
+ NULL /* no attribute value - element */);
+ base_uri_copy = base_uri ? raptor_uri_copy(base_uri) : NULL;
+ element = raptor_new_xml_element(el_name,
+ NULL, /* language */
+ base_uri_copy);
+
+ attrs = RAPTOR_CALLOC(raptor_qname**, 1, sizeof(raptor_qname*));
+ attrs[0] = raptor_new_qname(nstack,
+ (const unsigned char*)"a",
+ (const unsigned char*)"b" /* attribute value */);
+ raptor_xml_element_set_attributes(element, attrs, 1);
+
+ raptor_xml_writer_empty_element(xml_writer, element);
+
+ raptor_xml_writer_cdata(xml_writer, (const unsigned char*)"\n");
+
+ raptor_free_xml_writer(xml_writer);
+
+ raptor_free_xml_element(element);
+
+ raptor_free_namespace(foo_ns);
+
+ raptor_free_namespaces(nstack);
+
+ raptor_free_uri(base_uri);
+
+
+ offset = raptor_iostream_tell(iostr);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Freeing iostream\n", program);
+#endif
+ raptor_free_iostream(iostr);
+
+ if(offset != OUT_BYTES_COUNT) {
+ fprintf(stderr, "%s: I/O stream wrote %d bytes, expected %d\n", program,
+ (int)offset, (int)OUT_BYTES_COUNT);
+ fputs("[[", stderr);
+ (void)fwrite(string, 1, string_len, stderr);
+ fputs("]]\n", stderr);
+ return 1;
+ }
+
+ if(!string) {
+ fprintf(stderr, "%s: I/O stream failed to create a string\n", program);
+ return 1;
+ }
+ string_len = strlen((const char*)string);
+ if(string_len != offset) {
+ fprintf(stderr, "%s: I/O stream created a string length %d, expected %d\n", program, (int)string_len, (int)offset);
+ return 1;
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "%s: Made XML string of %d bytes\n", program, (int)string_len);
+ fputs("[[", stderr);
+ (void)fwrite(string, 1, string_len, stderr);
+ fputs("]]\n", stderr);
+#endif
+
+ raptor_free_memory(string);
+
+ raptor_free_world(world);
+
+ /* keep gcc -Wall happy */
+ return(0);
+}
+
+#endif
diff --git a/src/snprintf.c b/src/snprintf.c
new file mode 100644
index 0000000..e8c5563
--- /dev/null
+++ b/src/snprintf.c
@@ -0,0 +1,444 @@
+/*
+ * This file is in the Public Domain
+ *
+ * Based on code from Public Domain snprintf.c from mutt
+ * http://dev.mutt.org/hg/mutt/file/55cd4cb611d9/snprintf.c
+ * Tue Aug 08 22:49:12 2006 +0000
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#ifdef HAVE_VASPRINTF
+#define _GNU_SOURCE /* to get vasprintf() available */
+#endif
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+
+/*
+ * Thanks to the patch in this Debian bug for the solution
+ * to the crash inside vsnprintf on some architectures.
+ *
+ * "reuse of args inside the while(1) loop is in violation of the
+ * specs and only happens to work by accident on other systems."
+ *
+ * http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=104325
+ */
+
+#ifndef va_copy
+#ifdef __va_copy
+#define va_copy(dest, src) __va_copy(dest,src)
+#else
+#define va_copy(dest, src) (dest) = (src)
+#endif
+#endif
+
+
+#ifdef CHECK_VSNPRINTF_RUNTIME
+static int vsnprintf_checked = -1;
+
+static int
+vsnprintf_check_is_c99(char *buf, const char *s, ...)
+{
+ va_list args;
+ int r;
+ va_start(args, s);
+ r = vsnprintf(buf, buf ? 5 : 0, s, args);
+ va_end(args);
+
+ return (r == 7);
+}
+
+static int
+vsnprintf_is_c99(void)
+{
+ if(vsnprintf_checked < 0) {
+ char buffer[32];
+ vsnprintf_checked = (vsnprintf_check_is_c99(NULL, "1234567") &&
+ vsnprintf_check_is_c99(buffer, "1234567"))
+ ? 1 : 0;
+ }
+
+ return vsnprintf_checked;
+}
+#endif /* CHECK_VSNPRINTF_RUNTIME */
+
+
+#define VSNPRINTF_C99_BLOCK(len, buffer, size, format, arguments) \
+ do { \
+ len = vsnprintf(buffer, size, format, arguments); \
+ } while(0)
+
+#define VSNPRINTF_NOT_C99_BLOCK(len, buffer, size, format, arguments) \
+ do { \
+ if(!buffer || !size) { \
+ /* This vsnprintf doesn't return number of bytes required */ \
+ size = 2 + strlen(format); \
+ while(1) { \
+ va_list args_copy; \
+ char* tmp_buffer = RAPTOR_MALLOC(char*, size + 1); \
+ \
+ if(!tmp_buffer) \
+ break; \
+ \
+ /* copy for re-use */ \
+ va_copy(args_copy, arguments); \
+ len = vsnprintf(tmp_buffer, size, format, args_copy); \
+ va_end(args_copy); \
+ \
+ /* On windows, vsnprintf() returns -1 if the buffer does not \
+ * fit. If the buffer exactly fits the string without a NULL \
+ * terminator, it returns the string length and it ends up \
+ * with an unterminated string. The added check makes sure \
+ * the string returned is terminated - otherwise more buffer \
+ * space is allocated and the while() loop retries. \
+ */ \
+ if((len >= 0) && \
+ (RAPTOR_GOOD_CAST(size_t, len) < size) && \
+ (tmp_buffer[len] == '\0')) { \
+ len = RAPTOR_BAD_CAST(int, strlen(tmp_buffer)); \
+ RAPTOR_FREE(char*, tmp_buffer); \
+ break; \
+ } \
+ RAPTOR_FREE(char*, tmp_buffer); \
+ size += (size >> 1); \
+ } \
+ } \
+ \
+ if(buffer) \
+ len = vsnprintf(buffer, size, format, arguments); \
+ } while(0)
+
+#ifndef STANDALONE
+
+/**
+ * raptor_vsnprintf2:
+ * @buffer: buffer (or NULL)
+ * @size: size of buffer (or 0)
+ * @format: printf-style format string
+ * @arguments: variable arguments list
+ *
+ * Format output for a variable arguments list into an allocated sized buffer.
+ *
+ * This is a wrapper around system versions of vsnprintf with
+ * different call and return conventions.
+ *
+ * If @buffer is NULL or size is 0 or the buffer size is too small,
+ * returns the number of bytes that would be needed for buffer
+ *
+ * Return value: number of bytes allocated (excluding NUL) or <0 on failure
+ **/
+int
+raptor_vsnprintf2(char *buffer, size_t size,
+ const char *format, va_list arguments)
+{
+ int len = -1;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(format, char*, -1);
+
+#ifdef CHECK_VSNPRINTF_RUNTIME
+
+ if(vsnprintf_is_c99())
+ VSNPRINTF_C99_BLOCK(len, buffer, size, format, arguments) ;
+ else
+ VSNPRINTF_NOT_C99_BLOCK(len, buffer, size, format, arguments) ;
+
+#else
+
+#ifdef HAVE_C99_VSNPRINTF
+ VSNPRINTF_C99_BLOCK(len, buffer, size, format, arguments) ;
+#else
+ VSNPRINTF_NOT_C99_BLOCK(len, buffer, size, format, arguments) ;
+#endif
+
+#endif
+
+ return len;
+}
+
+
+/**
+ * raptor_vsnprintf:
+ * @format: printf-style format string
+ * @arguments: variable arguments list
+ *
+ * Format output for a variable arguments list into a newly allocated buffer
+ *
+ * @Deprecated: This does not actually conform to vsnprintf's calling
+ * convention and does not return the allocated buffer length. Use
+ * raptor_vsnprintf2() or raptor_vasprintf() instead.
+ *
+ * Return value: a newly allocated string as the formatted result or NULL on failure
+ **/
+char*
+raptor_vsnprintf(const char *format, va_list arguments)
+{
+ int len;
+ char *buffer = NULL;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(format, char*, NULL);
+
+ len = raptor_vasprintf(&buffer, format, arguments);
+ if(len < 0)
+ return NULL;
+
+ return buffer;
+}
+
+
+/**
+ * raptor_snprintf:
+ * @buffer: buffer (or NULL)
+ * @size: bufer size (or 0)
+ * @format: printf-style format string
+ * @...: format arguments
+ *
+ * Format output into an allocated sized buffer
+ *
+ * This provides a portable version snprintf() over variants on
+ * different systems.
+ *
+ * If @buffer is NULL, calculates the number of bytes needed to
+ * allocate for buffer and do no formatting.
+ *
+ * Return value: number of bytes allocated (excluding NUL) or 0 on failure
+ **/
+int
+raptor_snprintf(char *buffer, size_t size, const char *format, ...)
+{
+ va_list arguments;
+ int length;
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(format, char*, 0);
+
+ va_start(arguments, format);
+ length = raptor_vsnprintf2(buffer, size, format, arguments);
+ va_end(arguments);
+
+ return length;
+}
+
+
+/**
+ * raptor_vasprintf:
+ * @ret: pointer to store buffer
+ * @format: printf-style format string
+ * @arguments: format arguments list
+ *
+ * Format output into a new buffer and return it
+ *
+ * This is a wrapper around the (GNU) vasprintf function that is not
+ * always avaiable.
+ *
+ * Return value: number of bytes allocated (excluding NUL) or < 0 on failure
+ **/
+int
+raptor_vasprintf(char **ret, const char *format, va_list arguments)
+{
+ int length;
+#ifndef HAVE_VASPRINTF
+ va_list args_copy;
+#endif
+
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(ret, char**, -1);
+ RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(format, char*, -1);
+
+#ifdef HAVE_VASPRINTF
+ length = vasprintf(ret, format, arguments);
+#else
+ va_copy(args_copy, arguments);
+ length = raptor_vsnprintf2(NULL, 0, format, args_copy);
+ va_end(args_copy);
+ if(length < 0) {
+ *ret = NULL;
+ return length;
+ }
+ *ret = RAPTOR_MALLOC(char*, length + 1);
+ if(!*ret)
+ return -1;
+
+ va_copy(args_copy, arguments);
+ length = raptor_vsnprintf2(*ret, length + 1, format, args_copy);
+ va_end(args_copy);
+#endif
+
+ return length;
+}
+
+
+static const char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+/**
+ * raptor_format_integer:
+ * @buffer: buffer (or NULL)
+ * @bufsize: size of above (or 0)
+ * @integer: integer value to format
+ * @base: numeric base up to 36
+ * @width: field width (or -1)
+ * @padding: padding char (or \0)
+ *
+ * INTERNAL - Format an integer as a decimal into a buffer or
+ * calculate the size needed.
+ *
+ * Works Like the C99 snprintf() but just for integers.
+ *
+ * If @buffer is NULL or the @bufsize is too small, the number of
+ * bytes needed (excluding NUL) is returned and no formatting is done.
+ *
+ * Return value: number of bytes needed or written (excluding NUL) or 0 on failure
+ */
+size_t
+raptor_format_integer(char* buffer, size_t bufsize, int integer,
+ unsigned int base, int width, char padding)
+{
+ size_t len = 1;
+ char *p;
+ unsigned int value;
+
+ if(integer < 0) {
+ value = (unsigned int)-integer;
+ len++;
+ width++;
+ } else
+ value = (unsigned int)integer;
+ while(value /= base)
+ len++;
+
+ if(width > 0 && RAPTOR_GOOD_CAST(size_t, width) > len)
+ len = width;
+
+ if(!buffer || bufsize < RAPTOR_GOOD_CAST(size_t, (len + 1))) /* +1 for NUL */
+ return len;
+
+ if(!padding)
+ padding = ' ';
+
+ if(integer < 0)
+ value = (unsigned int)-integer;
+ else
+ value = (unsigned int)integer;
+
+ p = &buffer[len];
+ *p-- = '\0';
+ while(value > 0 && p >= buffer) {
+ *p-- = digits[value % base];
+ value /= base;
+ }
+ while(p >= buffer)
+ *p-- = padding;
+ if(integer < 0)
+ *buffer = '-';
+
+ return len;
+}
+
+
+#else /* STANDALONE */
+
+
+int main(int argc, char *argv[]);
+static int test_snprintf_real(int len_ref, const char *format, va_list arguments) RAPTOR_PRINTF_FORMAT(2, 0);
+static int test_snprintf(size_t len_ref, const char *format, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+
+static const char* program;
+
+
+static int
+test_snprintf_real(int len_ref, const char *format, va_list arguments)
+{
+ int len = -2;
+ size_t size = 0;
+
+ VSNPRINTF_NOT_C99_BLOCK(len, NULL, size, format, arguments);
+
+ if(len != len_ref) {
+ fprintf(stderr,
+ "%s: VSNPRINTF_NOT_C99_BLOCK(len=%d, size=%d, format=\"%s\") failed : expected %d, got %d\n",
+ program, len, (int)size, format, (int)len_ref, (int)len);
+ return 1;
+ }
+
+ return 0;
+}
+
+
+static int
+test_snprintf(size_t len_ref, const char *format, ...)
+{
+ va_list arguments;
+ int rc;
+
+ va_start(arguments, format);
+ rc = test_snprintf_real(RAPTOR_BAD_CAST(int, len_ref), format, arguments);
+ va_end(arguments);
+
+ return rc;
+}
+
+
+#define FMT_LEN_MAX 128
+#define ARG_LEN_MAX 128
+
+int
+main(int argc, char *argv[])
+{
+ char fmt[FMT_LEN_MAX + 1];
+ char arg[ARG_LEN_MAX + 1];
+ size_t x, y;
+ int errors = 0;
+
+ program = raptor_basename(argv[0]);
+
+ for(x = 2; x < FMT_LEN_MAX; x++) {
+ for(y = 0; y < ARG_LEN_MAX; y++) {
+ size_t len_ref = x + y - 2;
+
+ /* fmt = "xxxxxxxx%s"
+ * (number of 'x' characters varies)
+ */
+ memset(fmt, 'x', x - 2);
+ fmt[x - 2] = '%';
+ fmt[x - 1] = 's';
+ fmt[x] = '\0';
+
+ /* arg = "yyyyyyyy"
+ * (number of 'y' characters varies)
+ */
+ memset(arg, 'y', y);
+ arg[y] = '\0';
+
+ /* assert(strlen(fmt) == x); */
+ /* assert(strlen(arg) == y); */
+
+ /* len_ref = sprintf(buf_ref, fmt, arg);
+ assert((size_t)len_ref == x + y - 2); */
+
+ if(test_snprintf(len_ref, fmt, arg))
+ errors++;
+ }
+ }
+
+ return errors;
+}
+
+
+#endif /* STANDALONE */
diff --git a/src/strcasecmp.c b/src/strcasecmp.c
new file mode 100644
index 0000000..c40252c
--- /dev/null
+++ b/src/strcasecmp.c
@@ -0,0 +1,112 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * strcasecmp.c - strcasecmp compatibility
+ *
+ * This file is in the public domain.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+
+int raptor_strcasecmp(const char* s1, const char* s2);
+int raptor_strncasecmp(const char* s1, const char* s2, size_t n);
+
+
+int
+raptor_strcasecmp(const char* s1, const char* s2)
+{
+ register int c1, c2;
+
+ while(*s1 && *s2) {
+ c1 = tolower((int)*s1);
+ c2 = tolower((int)*s2);
+ if(c1 != c2)
+ return (c1 - c2);
+ s1++;
+ s2++;
+ }
+ return (int) (*s1 - *s2);
+}
+
+
+int
+raptor_strncasecmp(const char* s1, const char* s2, size_t n)
+{
+ register int c1, c2;
+
+ while(*s1 && *s2 && n) {
+ c1 = tolower((int)*s1);
+ c2 = tolower((int)*s2);
+ if(c1 != c2)
+ return (c1 - c2);
+ s1++;
+ s2++;
+ n--;
+ }
+ return 0;
+}
+
+
+
+#ifdef STANDALONE
+
+
+static int
+assert_strcasecmp (const char *s1, const char *s2, int expected)
+{
+ int result = raptor_strcasecmp(s1, s2);
+ result = (result > 0) ? 1 : ((result <0) ? -1 : 0);
+
+ if(result != expected)
+ {
+ fprintf(stderr, "FAIL strcasecmp (%s, %s) gave %d != %d\n",
+ s1, s2, result, expected);
+ return 1;
+ }
+ return 0;
+}
+
+
+static int
+assert_strncasecmp (const char *s1, const char *s2, size_t size, int expected)
+{
+ int result = raptor_strncasecmp(s1, s2, size);
+ result = (result > 0) ? 1 : ((result <0) ? -1 : 0);
+
+ if(result != expected)
+ {
+ fprintf(stderr, "FAIL strncasecmp (%s, %s, %d) gave %d != %d\n",
+ s1, s2, (unsigned int)size, result, expected);
+ return 1;
+ }
+ return 0;
+}
+
+
+int
+main(int argc, char *argv[])
+{
+ int failures = 0;
+
+ failures += assert_strcasecmp("foo", "foo", 0);
+ failures += assert_strcasecmp("foo", "FOO", 0);
+ failures += assert_strcasecmp("foo", "BaR", 1);
+
+ failures += assert_strncasecmp("foo", "foobar", 3, 0);
+ failures += assert_strncasecmp("foo", "FOOxyz", 3, 0);
+ failures += assert_strncasecmp("foo", "BaRfoo", 3, 1);
+
+ return failures;
+}
+
+#endif
diff --git a/src/turtle_common.c b/src/turtle_common.c
new file mode 100644
index 0000000..72618ee
--- /dev/null
+++ b/src/turtle_common.c
@@ -0,0 +1,163 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * turtle_common.c - Raptor Turtle common code
+ *
+ * Copyright (C) 2003-2007, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+/* Raptor includes */
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+
+/**
+ * raptor_stringbuffer_append_turtle_string:
+ * @stringbuffer: String buffer to add to
+ * @text: turtle string to decode
+ * @len: length of string
+ * @delim: terminating delimiter for string - only ', " or &gt; are allowed
+ * @error_handler: error handling function
+ * @error_data: error handler data
+ *
+ * Append to a stringbuffer a Turtle-escaped string.
+ *
+ * The passed in string is handled according to the Turtle string
+ * escape rules giving a UTF-8 encoded output of the Unicode codepoints.
+ *
+ * The Turtle escapes are \n \r \t \\
+ * \uXXXX \UXXXXXXXX where X is [A-F0-9]
+ *
+ * Return value: non-0 on failure
+ **/
+int
+raptor_stringbuffer_append_turtle_string(raptor_stringbuffer* stringbuffer,
+ const unsigned char *text,
+ size_t len, int delim,
+ raptor_simple_message_handler error_handler,
+ void *error_data)
+{
+ size_t i;
+ const unsigned char *s;
+ unsigned char *d;
+ unsigned char *string = RAPTOR_MALLOC(unsigned char*, len + 1);
+
+ if(!string)
+ return -1;
+
+ for(s = text, d = string, i = 0; i < len; s++, i++) {
+ unsigned char c=*s;
+
+ if(c == '\\' ) {
+ s++; i++;
+ c=*s;
+ if(c == 'n')
+ *d++= '\n';
+ else if(c == 'r')
+ *d++= '\r';
+ else if(c == 't')
+ *d++= '\t';
+ else if(c == '\\' || c == delim)
+ *d++=c;
+ else if(c == 'u' || c == 'U') {
+ size_t ulen = (c == 'u') ? 4 : 8;
+ unsigned long unichar = 0;
+ int n;
+ int unichar_width;
+
+ s++; i++;
+ if(i+ulen > len) {
+ error_handler(error_data,
+ "Turtle string error - \\%c over end of line", c);
+ RAPTOR_FREE(char*, string);
+ return 1;
+ }
+
+ n = sscanf((const char*)s, ((ulen == 4) ? "%04lx" : "%08lx"), &unichar);
+ if(n != 1) {
+ error_handler(error_data,
+ "Turtle string error - illegal Uncode escape '%c%s...'",
+ c, s);
+ RAPTOR_FREE(char*, string);
+ return 1;
+ }
+
+ s+= ulen-1;
+ i+= ulen-1;
+
+ if(unichar > raptor_unicode_max_codepoint) {
+ error_handler(error_data,
+ "Turtle string error - illegal Unicode character with code point #x%lX (max #x%lX).",
+ unichar, raptor_unicode_max_codepoint);
+ RAPTOR_FREE(char*, string);
+ return 1;
+ }
+
+ unichar_width = raptor_unicode_utf8_string_put_char(unichar, d,
+ len-(d-string));
+ if(unichar_width < 0) {
+ error_handler(error_data,
+ "Turtle string error - illegal Unicode character with code point #x%lX.",
+ unichar);
+ RAPTOR_FREE(char*, string);
+ return 1;
+ }
+ d += (size_t)unichar_width;
+
+ } else {
+ /* don't handle \x where x isn't one of: \t \n \r \\ (delim) */
+ error_handler(error_data,
+ "Turtle string error - illegal escape \\%c (#x%02X) in \"%s\"",
+ c, c, text);
+ }
+ } else
+ *d++=c;
+ }
+ *d='\0';
+
+ /* calculate output string size */
+ len = d-string;
+
+ /* string gets owned by the stringbuffer after this */
+ return raptor_stringbuffer_append_counted_string(stringbuffer,
+ string, len, 0);
+
+}
+
+
+
diff --git a/src/turtle_common.h b/src/turtle_common.h
new file mode 100644
index 0000000..0592d60
--- /dev/null
+++ b/src/turtle_common.h
@@ -0,0 +1,84 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * turtle_common.h - Turtle lexer/parser shared internals
+ *
+ * Copyright (C) 2003-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+#ifndef TURTLE_COMMON_H
+#define TURTLE_COMMON_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* turtle_parser.y */
+int turtle_syntax_error(raptor_parser *rdf_parser, const char *message, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+raptor_uri* turtle_qname_to_uri(raptor_parser *rdf_parser, unsigned char *name, size_t name_len);
+
+/* turtle_lexer.l */
+extern void turtle_token_free(raptor_world* world, int token, YYSTYPE *lval);
+
+
+/*
+ * Turtle parser object
+ */
+struct raptor_turtle_parser_s {
+ /* buffer */
+ char *buffer;
+
+ /* buffer length */
+ size_t buffer_length;
+
+ /* static statement for use in passing to user code */
+ raptor_statement statement;
+
+ raptor_namespace_stack namespaces; /* static */
+
+ /* for lexer to store result in */
+ YYSTYPE lval;
+
+ /* STATIC lexer */
+ yyscan_t scanner;
+
+ int scanner_set;
+
+ int lineno;
+
+ /* for creating long literals */
+ raptor_stringbuffer* sb;
+
+ /* count of errors in current parse */
+ int error_count;
+
+ /* TRIG graph name */
+ raptor_term* graph_name;
+
+ /* Allow TRIG extensions */
+ int trig;
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/turtle_lexer.c b/src/turtle_lexer.c
new file mode 100644
index 0000000..05acdf3
--- /dev/null
+++ b/src/turtle_lexer.c
@@ -0,0 +1,3052 @@
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#line 10 "turtle_lexer.c"
+
+#line 12 "turtle_lexer.c"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index. If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* An opaque pointer. */
+#ifndef YY_TYPEDEF_YY_SCANNER_T
+#define YY_TYPEDEF_YY_SCANNER_T
+typedef void* yyscan_t;
+#endif
+
+/* For convenience, these vars (plus the bison vars far below)
+ are macros in the reentrant scanner. */
+#define yyin yyg->yyin_r
+#define yyout yyg->yyout_r
+#define yyextra yyg->yyextra_r
+#define yyleng yyg->yyleng_r
+#define yytext yyg->yytext_r
+#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
+#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
+#define yy_flex_debug yyg->yy_flex_debug_r
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yyg->yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yyg->yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE turtle_lexer_restart(yyin ,yyscanner )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
+#define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = yyg->yy_hold_char; \
+ YY_RESTORE_YY_MORE_OFFSET \
+ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via turtle_lexer_restart()), so that the user can continue scanning by
+ * just pointing yyin at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
+ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
+
+void turtle_lexer_restart (FILE *input_file ,yyscan_t yyscanner );
+void turtle_lexer__switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+YY_BUFFER_STATE turtle_lexer__create_buffer (FILE *file,int size ,yyscan_t yyscanner );
+void turtle_lexer__delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void turtle_lexer__flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void turtle_lexer_push_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+void turtle_lexer_pop_buffer_state (yyscan_t yyscanner );
+
+static void turtle_lexer_ensure_buffer_stack (yyscan_t yyscanner );
+static void turtle_lexer__load_buffer_state (yyscan_t yyscanner );
+static void turtle_lexer__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
+
+#define YY_FLUSH_BUFFER turtle_lexer__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
+
+YY_BUFFER_STATE turtle_lexer__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
+YY_BUFFER_STATE turtle_lexer__scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
+YY_BUFFER_STATE turtle_lexer__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
+
+void *turtle_lexer_alloc (yy_size_t ,yyscan_t yyscanner );
+void *turtle_lexer_realloc (void *,yy_size_t ,yyscan_t yyscanner );
+void turtle_lexer_free (void * ,yyscan_t yyscanner );
+
+#define yy_new_buffer turtle_lexer__create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ turtle_lexer_ensure_buffer_stack (yyscanner); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ turtle_lexer__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ turtle_lexer_ensure_buffer_stack (yyscanner); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ turtle_lexer__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+typedef unsigned char YY_CHAR;
+
+typedef int yy_state_type;
+
+#define yytext_ptr yytext_r
+
+static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
+static int yy_get_next_buffer (yyscan_t yyscanner );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+ yyg->yytext_ptr = yy_bp; \
+ yyleng = (size_t) (yy_cp - yy_bp); \
+ yyg->yy_hold_char = *yy_cp; \
+ *yy_cp = '\0'; \
+ yyg->yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 40
+#define YY_END_OF_BUFFER 41
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int16_t yy_accept[112] =
+ { 0,
+ 0, 0, 0, 0, 22, 22, 41, 39, 2, 1,
+ 1, 39, 38, 13, 14, 39, 5, 4, 28, 25,
+ 6, 39, 11, 36, 7, 39, 8, 39, 39, 3,
+ 36, 36, 15, 16, 32, 29, 31, 32, 22, 22,
+ 22, 23, 2, 1, 0, 19, 0, 38, 37, 37,
+ 0, 28, 26, 26, 0, 0, 0, 25, 34, 0,
+ 35, 0, 0, 36, 25, 0, 12, 0, 36, 36,
+ 29, 0, 30, 22, 22, 0, 0, 19, 20, 0,
+ 26, 0, 0, 27, 0, 25, 0, 0, 33, 0,
+ 0, 24, 36, 36, 21, 0, 27, 0, 27, 0,
+
+ 0, 0, 24, 36, 17, 10, 0, 18, 0, 9,
+ 0
+ } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 2, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 5, 6, 1, 1, 1, 1, 7,
+ 8, 1, 9, 10, 11, 12, 1, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 14, 15, 16,
+ 17, 18, 1, 19, 20, 20, 20, 20, 21, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 22, 23, 24, 25, 26, 1, 27, 28, 20, 20,
+
+ 29, 30, 20, 20, 31, 20, 20, 32, 20, 20,
+ 20, 33, 20, 34, 35, 36, 37, 20, 20, 38,
+ 20, 20, 39, 1, 40, 1, 1, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41
+ } ;
+
+static yyconst flex_int32_t yy_meta[42] =
+ { 0,
+ 1, 2, 3, 4, 5, 1, 1, 1, 1, 1,
+ 6, 1, 6, 7, 1, 1, 2, 1, 1, 8,
+ 8, 1, 8, 1, 1, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 2, 1,
+ 8
+ } ;
+
+static yyconst flex_int16_t yy_base[124] =
+ { 0,
+ 0, 0, 41, 0, 80, 81, 262, 301, 259, 301,
+ 243, 82, 85, 301, 301, 78, 301, 232, 80, 93,
+ 301, 215, 66, 83, 301, 217, 301, 205, 215, 84,
+ 88, 85, 301, 301, 301, 226, 301, 212, 97, 105,
+ 220, 111, 222, 301, 108, 218, 0, 114, 301, 219,
+ 208, 109, 113, 114, 128, 142, 144, 146, 301, 202,
+ 148, 192, 184, 190, 150, 202, 301, 0, 128, 96,
+ 212, 199, 301, 133, 151, 159, 207, 301, 301, 157,
+ 148, 162, 198, 197, 155, 176, 188, 193, 301, 174,
+ 179, 0, 145, 155, 301, 194, 193, 191, 190, 195,
+
+ 173, 171, 0, 159, 173, 301, 168, 165, 138, 301,
+ 301, 234, 242, 250, 257, 265, 268, 271, 274, 282,
+ 289, 132, 292
+ } ;
+
+static yyconst flex_int16_t yy_def[124] =
+ { 0,
+ 111, 1, 111, 3, 112, 112, 111, 111, 111, 111,
+ 111, 113, 114, 111, 111, 111, 111, 111, 111, 115,
+ 111, 116, 111, 117, 111, 118, 111, 111, 111, 117,
+ 117, 31, 111, 111, 111, 111, 111, 119, 120, 120,
+ 111, 120, 111, 111, 113, 111, 113, 114, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111, 121, 111, 116,
+ 111, 111, 111, 31, 115, 118, 111, 122, 31, 31,
+ 111, 119, 111, 120, 120, 120, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 121, 111, 111, 111, 111,
+ 111, 123, 31, 31, 111, 111, 111, 111, 111, 111,
+
+ 111, 111, 123, 31, 31, 111, 111, 31, 111, 111,
+ 0, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 111
+ } ;
+
+static yyconst flex_int16_t yy_nxt[343] =
+ { 0,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 16, 18, 19, 20, 21, 22, 8, 8, 23, 24,
+ 24, 25, 26, 27, 28, 29, 30, 24, 24, 31,
+ 24, 24, 24, 24, 24, 32, 24, 24, 33, 34,
+ 26, 35, 36, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 37, 35, 35, 35, 35, 35,
+ 38, 38, 35, 38, 35, 35, 35, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 38, 38, 35,
+ 35, 38, 40, 40, 41, 41, 46, 49, 50, 51,
+ 52, 54, 52, 62, 56, 56, 65, 65, 63, 75,
+
+ 55, 65, 42, 42, 47, 66, 66, 75, 55, 57,
+ 66, 64, 78, 111, 69, 74, 49, 50, 70, 76,
+ 54, 52, 64, 66, 66, 53, 81, 76, 66, 55,
+ 47, 59, 94, 80, 82, 75, 83, 55, 83, 92,
+ 84, 80, 82, 56, 56, 85, 85, 56, 56, 87,
+ 87, 56, 56, 75, 64, 76, 85, 85, 57, 93,
+ 81, 111, 57, 74, 88, 96, 57, 96, 82, 97,
+ 98, 64, 98, 76, 99, 110, 82, 56, 56, 104,
+ 59, 64, 59, 105, 59, 64, 89, 108, 59, 87,
+ 87, 64, 57, 59, 100, 100, 100, 100, 109, 64,
+
+ 107, 106, 99, 99, 88, 97, 97, 102, 101, 84,
+ 84, 95, 73, 71, 59, 65, 64, 91, 90, 61,
+ 53, 49, 79, 43, 77, 73, 89, 71, 68, 67,
+ 65, 89, 61, 89, 39, 39, 39, 39, 39, 39,
+ 39, 39, 45, 45, 53, 44, 45, 45, 45, 45,
+ 48, 48, 48, 48, 48, 48, 48, 48, 58, 58,
+ 43, 111, 111, 111, 58, 60, 60, 60, 60, 60,
+ 60, 60, 60, 64, 64, 64, 66, 66, 66, 72,
+ 72, 72, 74, 74, 74, 74, 111, 74, 74, 74,
+ 86, 86, 111, 111, 86, 111, 86, 103, 111, 103,
+
+ 7, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111
+ } ;
+
+static yyconst flex_int16_t yy_chk[343] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 5, 6, 5, 6, 12, 13, 13, 16,
+ 16, 19, 19, 23, 20, 20, 24, 30, 23, 39,
+
+ 19, 31, 5, 6, 12, 24, 30, 40, 19, 20,
+ 31, 32, 45, 42, 31, 42, 48, 48, 32, 39,
+ 52, 52, 70, 24, 30, 53, 54, 40, 31, 52,
+ 45, 20, 70, 53, 54, 74, 55, 52, 55, 122,
+ 55, 53, 54, 56, 56, 57, 57, 58, 58, 61,
+ 61, 65, 65, 75, 69, 74, 85, 85, 56, 69,
+ 81, 76, 58, 76, 61, 80, 65, 80, 81, 80,
+ 82, 93, 82, 75, 82, 109, 81, 86, 86, 93,
+ 56, 94, 57, 94, 58, 104, 61, 104, 65, 87,
+ 87, 108, 86, 85, 88, 88, 100, 100, 107, 105,
+
+ 102, 101, 99, 98, 87, 97, 96, 91, 90, 84,
+ 83, 77, 72, 71, 86, 66, 64, 63, 62, 60,
+ 51, 50, 46, 43, 41, 38, 87, 36, 29, 28,
+ 26, 88, 22, 100, 112, 112, 112, 112, 112, 112,
+ 112, 112, 113, 113, 18, 11, 113, 113, 113, 113,
+ 114, 114, 114, 114, 114, 114, 114, 114, 115, 115,
+ 9, 7, 0, 0, 115, 116, 116, 116, 116, 116,
+ 116, 116, 116, 117, 117, 117, 118, 118, 118, 119,
+ 119, 119, 120, 120, 120, 120, 0, 120, 120, 120,
+ 121, 121, 0, 0, 121, 0, 121, 123, 0, 123,
+
+ 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111
+ } ;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+#line 1 "./turtle_lexer.l"
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * turtle_lexer.l - Raptor Turtle lexer - making tokens for turtle grammar generator
+ *
+ * Copyright (C) 2003-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ * Turtle is defined in http://www.dajobe.org/2004/01/turtle/
+ *
+ * To generate the C files from this source, rather than use the
+ * shipped turtle_lexer.c/.h needs a patched version of flex 2.5.31 such
+ * as the one available in Debian GNU/Linux. Details below
+ * near the %option descriptions.
+ *
+ */
+/* recognise 8-bits */
+/* all symbols prefixed by this */
+/* This is not needed, flex is invoked -oturtle_lexer.c */
+/* %option outfile="turtle_lexer.c" */
+/* Emit a C header file for prototypes
+ * Only available in flex 2.5.13 or newer.
+ * It was renamed to header-file in flex 2.5.19
+ */
+/* Do not emit #include <unistd.h>
+ * Only available in flex 2.5.7 or newer.
+ * Broken in flex 2.5.31 without patches.
+ */
+#define YY_NO_UNISTD_H 1
+/* Never interactive */
+/* No isatty() check */
+/* Batch scanner */
+/* Never use yyunput */
+/* Supply our own alloc/realloc/free functions */
+/* Re-entrant scanner */
+/* definitions */
+#line 77 "./turtle_lexer.l"
+
+/* NOTE: These headers are NOT included here but are inserted by
+ * fix-flex since otherwise it appears far too late in the generated C
+ */
+
+/*
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_SETJMP_H
+#include <setjmp.h>
+#endif
+
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#include <turtle_parser.h>
+
+#include <turtle_common.h>
+
+
+/* Prototypes */
+static unsigned char *turtle_copy_token(unsigned char *text, size_t len);
+static unsigned char *turtle_copy_string_token(raptor_parser* rdf_parser, unsigned char *text, size_t len, int delim);
+void turtle_lexer_syntax_error(void* ctx, const char *message, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+
+#ifdef RAPTOR_DEBUG
+const char * turtle_token_print(raptor_world* world, int token, YYSTYPE *lval);
+#endif
+
+int turtle_lexer_lex (YYSTYPE *turtle_parser_lval, yyscan_t yyscanner);
+#define YY_DECL int turtle_lexer_lex (YYSTYPE *turtle_parser_lval, yyscan_t yyscanner)
+
+#ifdef __cplusplus
+#define INPUT_FN yyinput
+#else
+#define INPUT_FN input
+#endif
+
+
+/* Missing turtle_lexer.c/h prototypes */
+int turtle_lexer_get_column(yyscan_t yyscanner);
+void turtle_lexer_set_column(int column_no , yyscan_t yyscanner);
+
+static void turtle_lexer_cleanup(yyscan_t yyscanner);
+
+#ifdef HAVE_SETJMP
+static jmp_buf turtle_lexer_fatal_error_longjmp_env;
+
+/* fatal error handler declaration */
+#define YY_FATAL_ERROR(msg) do { \
+ turtle_lexer_error(yyscanner, RAPTOR_LOG_LEVEL_FATAL, msg); \
+ longjmp(turtle_lexer_fatal_error_longjmp_env, 1); \
+} while(0)
+#else
+#define YY_FATAL_ERROR(msg) do { \
+ turtle_lexer_error(yyscanner, RAPTOR_LOG_LEVEL_FATAL, msg); \
+ abort(); \
+} while(0)
+#endif
+
+static void turtle_lexer_error(yyscan_t yyscanner, raptor_log_level level, yyconst char *message, ...) RAPTOR_PRINTF_FORMAT(3, 4);
+
+/* Fatal error handler that returns EOF instead of abort()/longjmp()
+ * so that parser can clean up properly */
+#define YY_FATAL_ERROR_EOF(msg) do { \
+ turtle_lexer_error(yyscanner, RAPTOR_LOG_LEVEL_FATAL, "%s", msg); \
+ yyterminate(); \
+} while(0)
+
+/* Out-of-memory reporting macro */
+#define TURTLE_LEXER_OOM() YY_FATAL_ERROR_EOF(turtle_lexer_oom_text)
+static char turtle_lexer_oom_text[]="turtle_lexer: Out of memory";
+
+/* Dot not need input() to to read from stdin */
+#define YY_NO_INPUT 1
+
+/* Tokens from SPARQL spec, adjusted for Turtle */
+/* SPARQL allows . in prefix after first position. Would be:
+ NCNAME_PREFIX {NCCHAR1}(({NCCHAR}|".")*{NCCHAR})?
+*/
+/* SPARQL allows . in name after first position. Would be:
+ NCNAME ("_"|{NCCHAR1})(({NCCHAR}|".")*{NCCHAR})?
+*/
+/* similar to SPARQL but no need for <= check here */
+
+#line 714 "turtle_lexer.c"
+
+#define INITIAL 0
+#define PREF 1
+#define LITERAL 2
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#ifndef YY_NO_UNISTD_H
+#include <unistd.h>
+#endif
+#endif
+
+#define YY_EXTRA_TYPE raptor_parser*
+
+/* Holds the entire state of the reentrant scanner. */
+struct yyguts_t
+ {
+
+ /* User-defined. Not touched by flex. */
+ YY_EXTRA_TYPE yyextra_r;
+
+ /* The rest are the same as the globals declared in the non-reentrant scanner. */
+ FILE *yyin_r, *yyout_r;
+ size_t yy_buffer_stack_top; /**< index of top of stack. */
+ size_t yy_buffer_stack_max; /**< capacity of stack. */
+ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
+ char yy_hold_char;
+ int yy_n_chars;
+ int yyleng_r;
+ char *yy_c_buf_p;
+ int yy_init;
+ int yy_start;
+ int yy_did_buffer_switch_on_eof;
+ int yy_start_stack_ptr;
+ int yy_start_stack_depth;
+ int *yy_start_stack;
+ yy_state_type yy_last_accepting_state;
+ char* yy_last_accepting_cpos;
+
+ int yylineno_r;
+ int yy_flex_debug_r;
+
+ char *yytext_r;
+ int yy_more_flag;
+ int yy_more_len;
+
+ }; /* end struct yyguts_t */
+
+static int yy_init_globals (yyscan_t yyscanner );
+
+int turtle_lexer_lex_init (yyscan_t* scanner);
+
+int turtle_lexer_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int turtle_lexer_lex_destroy (yyscan_t yyscanner );
+
+int turtle_lexer_get_debug (yyscan_t yyscanner );
+
+void turtle_lexer_set_debug (int debug_flag ,yyscan_t yyscanner );
+
+YY_EXTRA_TYPE turtle_lexer_get_extra (yyscan_t yyscanner );
+
+void turtle_lexer_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
+
+FILE *turtle_lexer_get_in (yyscan_t yyscanner );
+
+void turtle_lexer_set_in (FILE * in_str ,yyscan_t yyscanner );
+
+FILE *turtle_lexer_get_out (yyscan_t yyscanner );
+
+void turtle_lexer_set_out (FILE * out_str ,yyscan_t yyscanner );
+
+int turtle_lexer_get_leng (yyscan_t yyscanner );
+
+char *turtle_lexer_get_text (yyscan_t yyscanner );
+
+int turtle_lexer_get_lineno (yyscan_t yyscanner );
+
+void turtle_lexer_set_lineno (int line_number ,yyscan_t yyscanner );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int turtle_lexer_wrap (yyscan_t yyscanner );
+#else
+extern int turtle_lexer_wrap (yyscan_t yyscanner );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (yyscan_t yyscanner );
+#else
+static int input (yyscan_t yyscanner );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
+#define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+ { \
+ int c = '*'; \
+ size_t n; \
+ for ( n = 0; n < max_size && \
+ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+ buf[n] = (char) c; \
+ if ( c == '\n' ) \
+ buf[n++] = (char) c; \
+ if ( c == EOF && ferror( yyin ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ result = n; \
+ } \
+ else \
+ { \
+ errno=0; \
+ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(yyin); \
+ } \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int turtle_lexer_lex (yyscan_t yyscanner);
+
+#define YY_DECL int turtle_lexer_lex (yyscan_t yyscanner)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+#line 198 "./turtle_lexer.l"
+
+ /* rules */
+
+
+ raptor_parser *rdf_parser = yyextra;
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+#ifdef HAVE_SETJMP
+ if(setjmp(turtle_lexer_fatal_error_longjmp_env))
+ return 1;
+#endif
+
+
+
+#line 955 "turtle_lexer.c"
+
+ if ( !yyg->yy_init )
+ {
+ yyg->yy_init = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! yyg->yy_start )
+ yyg->yy_start = 1; /* first start state */
+
+ if ( ! yyin )
+ yyin = stdin;
+
+ if ( ! yyout )
+ yyout = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ turtle_lexer_ensure_buffer_stack (yyscanner);
+ YY_CURRENT_BUFFER_LVALUE =
+ turtle_lexer__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+ }
+
+ turtle_lexer__load_buffer_state(yyscanner );
+ }
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = yyg->yy_c_buf_p;
+
+ /* Support of yytext. */
+ *yy_cp = yyg->yy_hold_char;
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = yyg->yy_start;
+yy_match:
+ do
+ {
+ register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 112 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ ++yy_cp;
+ }
+ while ( yy_current_state != 111 );
+ yy_cp = yyg->yy_last_accepting_cpos;
+ yy_current_state = yyg->yy_last_accepting_state;
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+ case 0: /* must back up */
+ /* undo the effects of YY_DO_BEFORE_ACTION */
+ *yy_cp = yyg->yy_hold_char;
+ yy_cp = yyg->yy_last_accepting_cpos;
+ yy_current_state = yyg->yy_last_accepting_state;
+ goto yy_find_action;
+
+case 1:
+/* rule 1 can match eol */
+YY_RULE_SETUP
+#line 212 "./turtle_lexer.l"
+{ turtle_parser->lineno++; }
+ YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 214 "./turtle_lexer.l"
+{ /* empty */ }
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 217 "./turtle_lexer.l"
+{ return A; }
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 219 "./turtle_lexer.l"
+{ return DOT; }
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 220 "./turtle_lexer.l"
+{ return COMMA; }
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 221 "./turtle_lexer.l"
+{ return SEMICOLON; }
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 222 "./turtle_lexer.l"
+{ return LEFT_SQUARE; }
+ YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 223 "./turtle_lexer.l"
+{ return RIGHT_SQUARE; }
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 224 "./turtle_lexer.l"
+{ BEGIN(PREF); return PREFIX; }
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 225 "./turtle_lexer.l"
+{ return BASE; }
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 226 "./turtle_lexer.l"
+{ return AT; }
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 227 "./turtle_lexer.l"
+{ return HAT; }
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 228 "./turtle_lexer.l"
+{ return LEFT_ROUND; }
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 229 "./turtle_lexer.l"
+{ return RIGHT_ROUND; }
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 230 "./turtle_lexer.l"
+{ return LEFT_CURLY; }
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 231 "./turtle_lexer.l"
+{ return RIGHT_CURLY; }
+ YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 232 "./turtle_lexer.l"
+{ return TRUE_TOKEN; }
+ YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 233 "./turtle_lexer.l"
+{ return FALSE_TOKEN; }
+ YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 236 "./turtle_lexer.l"
+{ turtle_parser_lval->string = turtle_copy_string_token(rdf_parser, (unsigned char*)yytext+1, yyleng-2, '"'); /* ' */
+ if(!turtle_parser_lval->string)
+ yyterminate();
+
+ return STRING_LITERAL; }
+ YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 242 "./turtle_lexer.l"
+{ BEGIN(LITERAL);
+ turtle_parser->sb = raptor_new_stringbuffer();
+ if(!turtle_parser->sb)
+ TURTLE_LEXER_OOM();
+ }
+ YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 248 "./turtle_lexer.l"
+{
+ size_t len;
+
+ BEGIN(INITIAL);
+ len = raptor_stringbuffer_length(turtle_parser->sb);
+ turtle_parser_lval->string = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(!turtle_parser_lval->string)
+ TURTLE_LEXER_OOM();
+ raptor_stringbuffer_copy_to_string(turtle_parser->sb, (unsigned char*)turtle_parser_lval->string, len);
+ turtle_parser_lval->string[len]='\0';
+
+ raptor_free_stringbuffer(turtle_parser->sb);
+ turtle_parser->sb = NULL;
+ return STRING_LITERAL; }
+ YY_BREAK
+case 22:
+/* rule 22 can match eol */
+YY_RULE_SETUP
+#line 263 "./turtle_lexer.l"
+{
+ char *p;
+
+ if(*yytext == EOF) {
+ BEGIN(INITIAL);
+ turtle_syntax_error(rdf_parser, "End of file in middle of literal");
+ raptor_free_stringbuffer(turtle_parser->sb);
+ turtle_parser->sb = NULL;
+ return EOF;
+ }
+
+ for(p = yytext; *p; p++) {
+ if(*p == '\n')
+ turtle_parser->lineno++;
+ }
+
+ if(raptor_stringbuffer_append_turtle_string(turtle_parser->sb, (unsigned char*)yytext, yyleng, '"', (raptor_simple_message_handler)turtle_lexer_syntax_error, rdf_parser)) { /* " */
+ BEGIN(INITIAL);
+ raptor_free_stringbuffer(turtle_parser->sb);
+ turtle_parser->sb = NULL;
+ YY_FATAL_ERROR_EOF("raptor_stringbuffer_append_turtle_string failed");
+ }
+
+ }
+ YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 288 "./turtle_lexer.l"
+{
+ /* this should only happen if \ is at the end of the file so the Turtle doc is illegal anyway */
+ BEGIN(INITIAL);
+ raptor_free_stringbuffer(turtle_parser->sb);
+ turtle_parser->sb = NULL;
+ turtle_syntax_error(rdf_parser, "End of file in middle of literal");
+ yyterminate();
+}
+ YY_BREAK
+case YY_STATE_EOF(LITERAL):
+#line 297 "./turtle_lexer.l"
+{
+ BEGIN(INITIAL);
+ raptor_free_stringbuffer(turtle_parser->sb);
+ turtle_parser->sb = NULL;
+ turtle_syntax_error(rdf_parser, "End of file in middle of literal");
+ yyterminate();
+}
+ YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 305 "./turtle_lexer.l"
+{ turtle_parser_lval->string = turtle_copy_token((unsigned char*)yytext+2, yyleng-2);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ return BLANK_LITERAL; }
+ YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 310 "./turtle_lexer.l"
+{ turtle_parser_lval->uri = turtle_qname_to_uri(rdf_parser, (unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->uri) {
+ turtle_lexer_error(yyscanner, RAPTOR_LOG_LEVEL_ERROR, "Failed to convert qname %s to URI", yytext);
+ yyterminate();
+ }
+
+ return QNAME_LITERAL; }
+ YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 318 "./turtle_lexer.l"
+{ turtle_parser_lval->string = turtle_copy_token((unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ return DECIMAL_LITERAL;
+}
+ YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 324 "./turtle_lexer.l"
+{ turtle_parser_lval->string = turtle_copy_token((unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ return FLOATING_LITERAL;
+}
+ YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 330 "./turtle_lexer.l"
+{ turtle_parser_lval->string = turtle_copy_token((unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ return INTEGER_LITERAL; }
+ YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 335 "./turtle_lexer.l"
+{ /* eat up leading whitespace */ }
+ YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 336 "./turtle_lexer.l"
+{ turtle_parser_lval->string=turtle_copy_token((unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ BEGIN(INITIAL);
+ return IDENTIFIER; }
+ YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 341 "./turtle_lexer.l"
+{ BEGIN(INITIAL);
+ turtle_parser_lval->string = turtle_copy_token((unsigned char*)yytext, 0);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ return IDENTIFIER; }
+ YY_BREAK
+case 32:
+/* rule 32 can match eol */
+YY_RULE_SETUP
+#line 347 "./turtle_lexer.l"
+{ BEGIN(INITIAL);
+ if(*yytext == EOF)
+ return EOF;
+
+ turtle_syntax_error(rdf_parser, "syntax error at '%c'", *yytext);
+ yyterminate(); }
+ YY_BREAK
+case 33:
+/* rule 33 can match eol */
+YY_RULE_SETUP
+#line 355 "./turtle_lexer.l"
+{
+ raptor_stringbuffer* sb;
+ unsigned char* uri_string;
+
+ /* make length just the QUOTEDURI */
+ while(yytext[yyleng - 1] != '>')
+ yyleng--;
+
+ sb = raptor_new_stringbuffer();
+ if(!sb)
+ TURTLE_LEXER_OOM();
+
+ /* start at yytext + 1 to skip '<' and operate over
+ * length-2 bytes to skip '<' and '>'
+ */
+ if(raptor_stringbuffer_append_turtle_string(sb, (unsigned char*)yytext+1, yyleng-2, '>', (raptor_simple_message_handler)turtle_lexer_syntax_error, rdf_parser)) {
+ raptor_free_stringbuffer(sb);
+ YY_FATAL_ERROR_EOF("raptor_stringbuffer_append_turtle_string failed");
+ }
+ uri_string = raptor_stringbuffer_as_string(sb);
+
+ if(!*uri_string)
+ turtle_parser_lval->uri = raptor_uri_copy(rdf_parser->base_uri);
+ else
+ turtle_parser_lval->uri = raptor_new_uri_relative_to_base(rdf_parser->world, rdf_parser->base_uri, uri_string);
+
+ raptor_free_stringbuffer(sb);
+
+ if(!turtle_parser_lval->uri)
+ TURTLE_LEXER_OOM();
+ return GRAPH_NAME_LEFT_CURLY; }
+ YY_BREAK
+case 34:
+/* rule 34 can match eol */
+YY_RULE_SETUP
+#line 387 "./turtle_lexer.l"
+{
+ while(1) {
+ int c = yytext[yyleng - 1];
+ if(c == '{' || c == ' ' || c=='\t' || c == '\v' || c == '\n' ||
+ c == '=') {
+ yyleng--;
+ } else
+ break;
+ }
+ yytext[yyleng] = '\0';
+
+ turtle_parser_lval->uri = turtle_qname_to_uri(rdf_parser, (unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->uri) {
+ turtle_lexer_error(yyscanner, RAPTOR_LOG_LEVEL_ERROR, "Failed to convert qname %s to URI", yytext);
+ yyterminate();
+ }
+
+ return GRAPH_NAME_LEFT_CURLY; }
+ YY_BREAK
+case 35:
+/* rule 35 can match eol */
+YY_RULE_SETUP
+#line 406 "./turtle_lexer.l"
+{ if(yyleng == 2)
+ turtle_parser_lval->uri = raptor_uri_copy(rdf_parser->base_uri);
+ else {
+ raptor_stringbuffer* sb;
+ unsigned char* uri_string;
+
+ yytext[yyleng-1]='\0';
+ sb = raptor_new_stringbuffer();
+ if(!sb)
+ TURTLE_LEXER_OOM();
+ if(raptor_stringbuffer_append_turtle_string(sb, (unsigned char*)yytext+1, yyleng-1, '>', (raptor_simple_message_handler)turtle_lexer_syntax_error, rdf_parser)) {
+ raptor_free_stringbuffer(sb);
+ YY_FATAL_ERROR_EOF("raptor_stringbuffer_append_turtle_string failed");
+ }
+ uri_string = raptor_stringbuffer_as_string(sb);
+ turtle_parser_lval->uri = raptor_new_uri_relative_to_base(rdf_parser->world, rdf_parser->base_uri, uri_string);
+ if(!turtle_parser_lval->uri) {
+ raptor_free_stringbuffer(sb);
+ TURTLE_LEXER_OOM();
+ }
+ raptor_free_stringbuffer(sb);
+ }
+ return URI_LITERAL; }
+ YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 430 "./turtle_lexer.l"
+{ turtle_parser_lval->string = turtle_copy_token((unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ return IDENTIFIER; }
+ YY_BREAK
+case 37:
+/* rule 37 can match eol */
+YY_RULE_SETUP
+#line 435 "./turtle_lexer.l"
+{ /* # comment */
+ turtle_parser->lineno++;
+ }
+ YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 439 "./turtle_lexer.l"
+{ /* # comment on the last line with no terminating newline */
+ }
+ YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 442 "./turtle_lexer.l"
+{ if(*yytext == EOF)
+ return EOF;
+
+ turtle_syntax_error(rdf_parser, "syntax error at '%c'", *yytext);
+ yyterminate();
+ }
+ YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 449 "./turtle_lexer.l"
+YY_FATAL_ERROR( "flex scanner jammed" );
+ YY_BREAK
+#line 1415 "turtle_lexer.c"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(PREF):
+ yyterminate();
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = yyg->yy_hold_char;
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed yyin at a new source and called
+ * turtle_lexer_lex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
+
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++yyg->yy_c_buf_p;
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = yyg->yy_last_accepting_cpos;
+ yy_current_state = yyg->yy_last_accepting_state;
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( yyscanner ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ yyg->yy_did_buffer_switch_on_eof = 0;
+
+ if ( turtle_lexer_wrap(yyscanner ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * yytext, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! yyg->yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yyg->yy_c_buf_p =
+ yyg->yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ yy_cp = yyg->yy_c_buf_p;
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ yyg->yy_c_buf_p =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ yy_cp = yyg->yy_c_buf_p;
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+} /* end of turtle_lexer_lex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = yyg->yytext_ptr;
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
+
+ else
+ {
+ int num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+ int yy_c_buf_p_offset =
+ (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ turtle_lexer_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ yyg->yy_n_chars, num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ if ( yyg->yy_n_chars == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ turtle_lexer_restart(yyin ,yyscanner);
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) turtle_lexer_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ yyg->yy_n_chars += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+ yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ yy_current_state = yyg->yy_start;
+
+ for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
+ {
+ register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 112 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
+{
+ register int yy_is_jam;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
+ register char *yy_cp = yyg->yy_c_buf_p;
+
+ register YY_CHAR yy_c = 1;
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 112 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ yy_is_jam = (yy_current_state == 111);
+
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (yyscan_t yyscanner)
+#else
+ static int input (yyscan_t yyscanner)
+#endif
+
+{
+ int c;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+
+ if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
+ /* This was really a NUL. */
+ *yyg->yy_c_buf_p = '\0';
+
+ else
+ { /* need more input */
+ int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
+ ++yyg->yy_c_buf_p;
+
+ switch ( yy_get_next_buffer( yyscanner ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ turtle_lexer_restart(yyin ,yyscanner);
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( turtle_lexer_wrap(yyscanner ) )
+ return EOF;
+
+ if ( ! yyg->yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput(yyscanner);
+#else
+ return input(yyscanner);
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
+ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
+ yyg->yy_hold_char = *++yyg->yy_c_buf_p;
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * @param yyscanner The scanner object.
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void turtle_lexer_restart (FILE * input_file , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if ( ! YY_CURRENT_BUFFER ){
+ turtle_lexer_ensure_buffer_stack (yyscanner);
+ YY_CURRENT_BUFFER_LVALUE =
+ turtle_lexer__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+ }
+
+ turtle_lexer__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
+ turtle_lexer__load_buffer_state(yyscanner );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * @param yyscanner The scanner object.
+ */
+ void turtle_lexer__switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * turtle_lexer_pop_buffer_state();
+ * turtle_lexer_push_buffer_state(new_buffer);
+ */
+ turtle_lexer_ensure_buffer_stack (yyscanner);
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ turtle_lexer__load_buffer_state(yyscanner );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (turtle_lexer_wrap()) processing, but the only time this flag
+ * is looked at is after turtle_lexer_wrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ yyg->yy_did_buffer_switch_on_eof = 1;
+}
+
+static void turtle_lexer__load_buffer_state (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ yyg->yy_hold_char = *yyg->yy_c_buf_p;
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * @param yyscanner The scanner object.
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE turtle_lexer__create_buffer (FILE * file, int size , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) turtle_lexer_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in turtle_lexer__create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) turtle_lexer_alloc(b->yy_buf_size + 2 ,yyscanner );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in turtle_lexer__create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ turtle_lexer__init_buffer(b,file ,yyscanner);
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with turtle_lexer__create_buffer()
+ * @param yyscanner The scanner object.
+ */
+ void turtle_lexer__delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ turtle_lexer_free((void *) b->yy_ch_buf ,yyscanner );
+
+ turtle_lexer_free((void *) b ,yyscanner );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a turtle_lexer_restart() or at EOF.
+ */
+ static void turtle_lexer__init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
+
+{
+ int oerrno = errno;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ turtle_lexer__flush_buffer(b ,yyscanner);
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then turtle_lexer__init_buffer was _probably_
+ * called from turtle_lexer_restart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * @param yyscanner The scanner object.
+ */
+ void turtle_lexer__flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ turtle_lexer__load_buffer_state(yyscanner );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ * @param yyscanner The scanner object.
+ */
+void turtle_lexer_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if (new_buffer == NULL)
+ return;
+
+ turtle_lexer_ensure_buffer_stack(yyscanner);
+
+ /* This block is copied from turtle_lexer__switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ yyg->yy_buffer_stack_top++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from turtle_lexer__switch_to_buffer. */
+ turtle_lexer__load_buffer_state(yyscanner );
+ yyg->yy_did_buffer_switch_on_eof = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ * @param yyscanner The scanner object.
+ */
+void turtle_lexer_pop_buffer_state (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ turtle_lexer__delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if (yyg->yy_buffer_stack_top > 0)
+ --yyg->yy_buffer_stack_top;
+
+ if (YY_CURRENT_BUFFER) {
+ turtle_lexer__load_buffer_state(yyscanner );
+ yyg->yy_did_buffer_switch_on_eof = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void turtle_lexer_ensure_buffer_stack (yyscan_t yyscanner)
+{
+ int num_to_alloc;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (!yyg->yy_buffer_stack) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ yyg->yy_buffer_stack = (struct yy_buffer_state**)turtle_lexer_alloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ , yyscanner);
+ if ( ! yyg->yy_buffer_stack )
+ YY_FATAL_ERROR( "out of dynamic memory in turtle_lexer_ensure_buffer_stack()" );
+
+ memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ yyg->yy_buffer_stack_max = num_to_alloc;
+ yyg->yy_buffer_stack_top = 0;
+ return;
+ }
+
+ if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
+ yyg->yy_buffer_stack = (struct yy_buffer_state**)turtle_lexer_realloc
+ (yyg->yy_buffer_stack,
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ , yyscanner);
+ if ( ! yyg->yy_buffer_stack )
+ YY_FATAL_ERROR( "out of dynamic memory in turtle_lexer_ensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
+ yyg->yy_buffer_stack_max = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE turtle_lexer__scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) turtle_lexer_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in turtle_lexer__scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ turtle_lexer__switch_to_buffer(b ,yyscanner );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to turtle_lexer_lex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * turtle_lexer__scan_bytes() instead.
+ */
+YY_BUFFER_STATE turtle_lexer__scan_string (yyconst char * yystr , yyscan_t yyscanner)
+{
+
+ return turtle_lexer__scan_bytes(yystr,strlen(yystr) ,yyscanner);
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to turtle_lexer_lex() will
+ * scan from a @e copy of @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE turtle_lexer__scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ int i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) turtle_lexer_alloc(n ,yyscanner );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in turtle_lexer__scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = turtle_lexer__scan_buffer(buf,n ,yyscanner);
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in turtle_lexer__scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ yytext[yyleng] = yyg->yy_hold_char; \
+ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
+ yyg->yy_hold_char = *yyg->yy_c_buf_p; \
+ *yyg->yy_c_buf_p = '\0'; \
+ yyleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the user-defined data for this scanner.
+ * @param yyscanner The scanner object.
+ */
+YY_EXTRA_TYPE turtle_lexer_get_extra (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyextra;
+}
+
+/** Get the current line number.
+ * @param yyscanner The scanner object.
+ */
+int turtle_lexer_get_lineno (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (! YY_CURRENT_BUFFER)
+ return 0;
+
+ return yylineno;
+}
+
+/** Get the current column number.
+ * @param yyscanner The scanner object.
+ */
+int turtle_lexer_get_column (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (! YY_CURRENT_BUFFER)
+ return 0;
+
+ return yycolumn;
+}
+
+/** Get the input stream.
+ * @param yyscanner The scanner object.
+ */
+FILE *turtle_lexer_get_in (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyin;
+}
+
+/** Get the output stream.
+ * @param yyscanner The scanner object.
+ */
+FILE *turtle_lexer_get_out (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyout;
+}
+
+/** Get the length of the current token.
+ * @param yyscanner The scanner object.
+ */
+int turtle_lexer_get_leng (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyleng;
+}
+
+/** Get the current token.
+ * @param yyscanner The scanner object.
+ */
+
+char *turtle_lexer_get_text (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yytext;
+}
+
+/** Set the user-defined data. This data is never touched by the scanner.
+ * @param user_defined The data to be associated with this scanner.
+ * @param yyscanner The scanner object.
+ */
+void turtle_lexer_set_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyextra = user_defined ;
+}
+
+/** Set the current line number.
+ * @param line_number
+ * @param yyscanner The scanner object.
+ */
+void turtle_lexer_set_lineno (int line_number , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* lineno is only valid if an input buffer exists. */
+ if (! YY_CURRENT_BUFFER )
+ YY_FATAL_ERROR("turtle_lexer_set_lineno called with no buffer");
+
+ yylineno = line_number;
+}
+
+/** Set the current column.
+ * @param line_number
+ * @param yyscanner The scanner object.
+ */
+void turtle_lexer_set_column (int column_no , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* column is only valid if an input buffer exists. */
+ if (! YY_CURRENT_BUFFER )
+ YY_FATAL_ERROR("turtle_lexer_set_column called with no buffer");
+
+ yycolumn = column_no;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ * @param yyscanner The scanner object.
+ * @see turtle_lexer__switch_to_buffer
+ */
+void turtle_lexer_set_in (FILE * in_str , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyin = in_str ;
+}
+
+void turtle_lexer_set_out (FILE * out_str , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyout = out_str ;
+}
+
+int turtle_lexer_get_debug (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yy_flex_debug;
+}
+
+void turtle_lexer_set_debug (int bdebug , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yy_flex_debug = bdebug ;
+}
+
+/* Accessor methods for yylval and yylloc */
+
+/* User-visible API */
+
+/* turtle_lexer_lex_init is special because it creates the scanner itself, so it is
+ * the ONLY reentrant function that doesn't take the scanner as the last argument.
+ * That's why we explicitly handle the declaration, instead of using our macros.
+ */
+
+int turtle_lexer_lex_init(yyscan_t* ptr_yy_globals)
+
+{
+ if (ptr_yy_globals == NULL){
+ errno = EINVAL;
+ return 1;
+ }
+
+ *ptr_yy_globals = (yyscan_t) turtle_lexer_alloc ( sizeof( struct yyguts_t ), NULL );
+
+ if (*ptr_yy_globals == NULL){
+ errno = ENOMEM;
+ return 1;
+ }
+
+ /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
+ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
+
+ return yy_init_globals ( *ptr_yy_globals );
+}
+
+/* turtle_lexer_lex_init_extra has the same functionality as turtle_lexer_lex_init, but follows the
+ * convention of taking the scanner as the last argument. Note however, that
+ * this is a *pointer* to a scanner, as it will be allocated by this call (and
+ * is the reason, too, why this function also must handle its own declaration).
+ * The user defined value in the first argument will be available to turtle_lexer_alloc in
+ * the yyextra field.
+ */
+
+int turtle_lexer_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
+
+{
+ struct yyguts_t dummy_yyguts;
+
+ turtle_lexer_set_extra (yy_user_defined, &dummy_yyguts);
+
+ if (ptr_yy_globals == NULL){
+ errno = EINVAL;
+ return 1;
+ }
+
+ *ptr_yy_globals = (yyscan_t) turtle_lexer_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
+
+ if (*ptr_yy_globals == NULL){
+ errno = ENOMEM;
+ return 1;
+ }
+
+ /* By setting to 0xAA, we expose bugs in
+ yy_init_globals. Leave at 0x00 for releases. */
+ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
+
+ turtle_lexer_set_extra (yy_user_defined, *ptr_yy_globals);
+
+ return yy_init_globals ( *ptr_yy_globals );
+}
+
+static int yy_init_globals (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from turtle_lexer_lex_destroy(), so don't allocate here.
+ */
+
+ yyg->yy_buffer_stack = 0;
+ yyg->yy_buffer_stack_top = 0;
+ yyg->yy_buffer_stack_max = 0;
+ yyg->yy_c_buf_p = (char *) 0;
+ yyg->yy_init = 0;
+ yyg->yy_start = 0;
+
+ yyg->yy_start_stack_ptr = 0;
+ yyg->yy_start_stack_depth = 0;
+ yyg->yy_start_stack = NULL;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ yyin = stdin;
+ yyout = stdout;
+#else
+ yyin = (FILE *) 0;
+ yyout = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * turtle_lexer_lex_init()
+ */
+ return 0;
+}
+
+/* turtle_lexer_lex_destroy is for both reentrant and non-reentrant scanners. */
+int turtle_lexer_lex_destroy (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ turtle_lexer__delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ turtle_lexer_pop_buffer_state(yyscanner);
+ }
+
+ /* Destroy the stack itself. */
+ turtle_lexer_free(yyg->yy_buffer_stack ,yyscanner);
+ yyg->yy_buffer_stack = NULL;
+
+ /* Destroy the start condition stack. */
+ turtle_lexer_free(yyg->yy_start_stack ,yyscanner );
+ yyg->yy_start_stack = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * turtle_lexer_lex() is called, initialization will occur. */
+ yy_init_globals( yyscanner);
+
+ /* Destroy the main struct (reentrant only). */
+ /* clean up leaks if any before freeing yyscanner */
+ turtle_lexer_cleanup(yyscanner);
+ turtle_lexer_free ( yyscanner , yyscanner );
+ yyscanner = NULL;
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+#define YYTABLES_NAME "yytables"
+
+#line 449 "./turtle_lexer.l"
+
+
+ /* user code */
+
+int
+turtle_lexer_wrap (yyscan_t yyscanner) {
+ return 1;
+}
+
+
+static unsigned char *
+turtle_copy_token(unsigned char *text, size_t len)
+{
+ unsigned char *s;
+ if(!len)
+ len = strlen((const char*)text);
+ s = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(s) {
+ memcpy(s, text, len);
+ s[len] = '\0';
+ }
+ return s;
+}
+
+
+static unsigned char *
+turtle_copy_string_token(raptor_parser* rdf_parser,
+ unsigned char *string, size_t len, int delim)
+{
+ raptor_stringbuffer* sb = NULL;
+ int rc;
+
+ if(len) {
+ sb = raptor_new_stringbuffer();
+ if(!sb)
+ return NULL;
+
+ rc = raptor_stringbuffer_append_turtle_string(sb, string, len, delim,
+ (raptor_simple_message_handler)turtle_lexer_syntax_error,
+ rdf_parser);
+ if(rc) {
+ raptor_free_stringbuffer(sb);
+ return NULL;
+ }
+
+ len = raptor_stringbuffer_length(sb);
+ }
+
+ string = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(string) {
+ if(sb)
+ raptor_stringbuffer_copy_to_string(sb, string, len+1);
+ string[len]='\0';
+ }
+
+ if(sb)
+ raptor_free_stringbuffer(sb);
+
+ return string;
+}
+
+
+void
+turtle_lexer_syntax_error(void* ctx, const char *message, ...)
+{
+ raptor_parser* rdf_parser = (raptor_parser *)ctx;
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+ va_list arguments;
+
+ rdf_parser->locator.line = turtle_parser->lineno;
+#ifdef RAPTOR_TURTLE_USE_ERROR_COLUMNS
+ rdf_parser->locator.column = turtle_lexer_get_column(yyscanner);
+#endif
+
+ va_start(arguments, message);
+ raptor_parser_log_error_varargs(((raptor_parser*)rdf_parser),
+ RAPTOR_LOG_LEVEL_ERROR, message, arguments);
+
+ va_end(arguments);
+}
+
+
+/*
+ * turtle_lexer_error:
+ * @yyscanner: scanner object
+ * @level: log level RAPTOR_LOG_LEVEL_FATAL otherwise error
+ * @message: erro message
+ *
+ * INTERNAL - replacement for the generated error handler.
+ */
+static void turtle_lexer_error(yyscan_t yyscanner,
+ raptor_log_level level,
+ yyconst char *message, ...)
+{
+ raptor_parser *rdf_parser = NULL;
+ va_list arguments;
+
+ va_start(arguments, message);
+
+ if(yyscanner)
+ rdf_parser = (raptor_parser*)turtle_lexer_get_extra(yyscanner);
+
+ /* This handles NULL rdf_parser properly */
+ raptor_parser_log_error_varargs(rdf_parser, level, message, arguments);
+
+ va_end(arguments);
+}
+
+
+/* Define LEXER_ALLOC_TRACKING to enable allocated memory tracking
+ * - fixes lexer memory leak when ensure_buffer_stack fails
+ */
+
+#ifdef LEXER_ALLOC_TRACKING
+typedef struct {
+ /* Number of void* slots allocated */
+ int lexer_allocs_size;
+ /* Allocted void* slots follow in memory after this header */
+} lexer_alloc_tracker_header;
+
+/* Initial alloc tracker slot array size - 2 seems to be enough for almost all cases */
+static const int initial_lexer_allocs_size = 2;
+#endif
+
+/*
+ * turtle_lexer_cleanup:
+ * @yyscanner:
+ *
+ * INTERNAL - Clean up unfreed lexer allocs if LEXER_ALLOC_TRACKING is enabled.
+ */
+static void turtle_lexer_cleanup(yyscan_t yyscanner)
+{
+#ifdef LEXER_ALLOC_TRACKING
+ raptor_parser *rdf_parser;
+ lexer_alloc_tracker_header *tracker;
+ void **lexer_allocs;
+ int i;
+
+ if(!yyscanner)
+ return;
+
+ rdf_parser = (raptor_parser *)turtle_lexer_get_extra(yyscanner);
+ if(!rdf_parser)
+ return;
+
+ tracker = (lexer_alloc_tracker_header *)rdf_parser->lexer_user_data;
+ if(!tracker)
+ return;
+ lexer_allocs = (void**)&tracker[1];
+
+ for(i = 0; i < tracker->lexer_allocs_size; ++i) {
+ if(lexer_allocs[i])
+ free(lexer_allocs[i]);
+ lexer_allocs[i] = NULL;
+ }
+ free(rdf_parser->lexer_user_data);
+ rdf_parser->lexer_user_data = NULL;
+#endif
+}
+
+
+/*
+ * turtle_lexer_alloc:
+ * @size
+ * @yyscanner
+ *
+ * INTERNAL - alloc replacement.
+ * Tracks allocated cells if LEXER_ALLOC_TRACKING is enabled.
+ */
+void *turtle_lexer_alloc(yy_size_t size, yyscan_t yyscanner)
+{
+#ifdef LEXER_ALLOC_TRACKING
+ raptor_parser *rdf_parser;
+ lexer_alloc_tracker_header *tracker;
+ void **lexer_allocs;
+ int i;
+ void *ptr;
+
+ /* yyscanner not initialized -> probably initializing yyscanner itself
+ * -> just malloc without tracking
+ */
+ if(!yyscanner)
+ return malloc(size);
+
+ rdf_parser = (raptor_parser *)turtle_lexer_get_extra(yyscanner);
+ if(!rdf_parser)
+ YY_FATAL_ERROR("lexer_alloc: yyscanner extra not initialized");
+
+ /* try to allocate tracker if it does not exist */
+ tracker = (lexer_alloc_tracker_header *)rdf_parser->lexer_user_data;
+ if(!tracker) {
+ /* allocate tracker header + array of void* slots */
+ tracker = (lexer_alloc_tracker_header*)calloc(1, sizeof(lexer_alloc_tracker_header)+initial_lexer_allocs_size*sizeof(void*));
+ if(!tracker)
+ YY_FATAL_ERROR("lexer_alloc: cannot allocate tracker");
+ tracker->lexer_allocs_size = initial_lexer_allocs_size;
+ rdf_parser->lexer_user_data = (void *)tracker;
+ }
+ lexer_allocs = (void**)&tracker[1];
+
+ /* allocate memory */
+ ptr = malloc(size);
+
+ /* find a free slot for ptr */
+ for(i = 0; i < tracker->lexer_allocs_size; ++i) {
+ if(!lexer_allocs[i]) {
+ lexer_allocs[i] = ptr;
+ break;
+ }
+ }
+
+ /* no free slots -> grow tracker slot array */
+ if(i>=tracker->lexer_allocs_size) {
+ int j;
+ void **dest;
+ tracker = (lexer_alloc_tracker_header*)calloc(1, sizeof(lexer_alloc_tracker_header)+i*2*sizeof(void*));
+ if(!tracker) {
+ if(ptr)
+ free(ptr);
+ YY_FATAL_ERROR("lexer_alloc: cannot grow tracker");
+ }
+ tracker->lexer_allocs_size = i*2;
+
+ /* copy data from old tracker */
+ dest = (void**)&tracker[1];
+ for(j = 0; j < i; ++j) {
+ dest[j] = lexer_allocs[j];
+ }
+
+ /* set new item to first free slot */
+ dest[j] = ptr;
+
+ /* free old tracker and replace with new one */
+ free(rdf_parser->lexer_user_data);
+ rdf_parser->lexer_user_data = tracker;
+ }
+
+ return ptr;
+#else
+ return malloc(size);
+#endif
+}
+
+
+/*
+ * turtle_lexer_realloc:
+ *
+ * INTERNAL - realloc replacement
+ * Tracks allocated cells if LEXER_ALLOC_TRACKING is enabled.
+ */
+void *turtle_lexer_realloc(void *ptr, yy_size_t size, yyscan_t yyscanner)
+{
+#ifdef LEXER_ALLOC_TRACKING
+ raptor_parser *rdf_parser;
+ lexer_alloc_tracker_header *tracker;
+ void **lexer_allocs;
+ int i;
+ void *newptr;
+
+ if(!yyscanner)
+ YY_FATAL_ERROR("lexer_realloc: yyscanner not initialized");
+
+ rdf_parser = (raptor_parser *)turtle_lexer_get_extra(yyscanner);
+ if(!rdf_parser)
+ YY_FATAL_ERROR("lexer_realloc: yyscanner extra not initialized");
+
+ tracker = (lexer_alloc_tracker_header *)rdf_parser->lexer_user_data;
+ if(!tracker)
+ YY_FATAL_ERROR("lexer_realloc: no alloc tracker");
+ lexer_allocs = (void**)&tracker[1];
+
+ /* find the old slot for ptr */
+ for(i = 0; i < tracker->lexer_allocs_size; ++i) {
+ if(lexer_allocs[i] == ptr)
+ break;
+ }
+
+ /* no old slot -> error */
+ if(i>=tracker->lexer_allocs_size)
+ YY_FATAL_ERROR("lexer_realloc: cell not in tracker");
+
+ /* realloc */
+ newptr = realloc((char*)ptr, size);
+
+ /* replace entry in tracker */
+ lexer_allocs[i] = newptr;
+
+ return newptr;
+#else
+ return realloc((char*)ptr, size);
+#endif
+}
+
+
+/*
+ * turtle_lexer_free:
+ *
+ * INTERNAL - free replacement.
+ * Checks for NULL pointer to be freed unlike the default lexer free function.
+ * Tracks allocated cells if LEXER_ALLOC_TRACKING is enabled.
+ */
+void turtle_lexer_free(void *ptr, yyscan_t yyscanner)
+{
+#ifdef LEXER_ALLOC_TRACKING
+ raptor_parser *rdf_parser;
+ lexer_alloc_tracker_header *tracker;
+ void **lexer_allocs;
+ int i;
+
+ /* do not free NULL */
+ if(!ptr)
+ return;
+
+ /* free ptr even if we would encounter an error */
+ free(ptr);
+
+ /* yyscanner is allocated with turtle_lexer_alloc() but it's never stored in the tracker
+ * - we need yyscanner to access the tracker */
+ if(!yyscanner || ptr == yyscanner)
+ return;
+
+ rdf_parser = (raptor_parser *)turtle_lexer_get_extra(yyscanner);
+ if(!rdf_parser)
+ return;
+
+ tracker = (lexer_alloc_tracker_header *)rdf_parser->lexer_user_data;
+ if(!tracker)
+ return;
+ lexer_allocs = (void**)&tracker[1];
+
+ /* find the slot for ptr */
+ for(i = 0; i < tracker->lexer_allocs_size; ++i) {
+ if(lexer_allocs[i] == ptr)
+ break;
+ }
+
+ /* no slot -> error */
+ if(i>=tracker->lexer_allocs_size)
+ YY_FATAL_ERROR("lexer_free: cell not in tracker");
+
+ /* remove entry from tracker */
+ lexer_allocs[i] = NULL;
+#else
+ if(ptr)
+ free(ptr);
+#endif
+}
+
+
+#ifdef RAPTOR_DEBUG
+
+const char *
+turtle_token_print(raptor_world* world, int token, YYSTYPE *lval)
+{
+ static char buffer[2048];
+
+ if(!token)
+ return "<<EOF>>";
+
+ switch(token) {
+ case PREFIX:
+ return "PREFIX";
+
+ case BASE:
+ return "BASE";
+
+ case A:
+ return "A";
+
+ case DOT:
+ return "DOT";
+
+ case COMMA:
+ return "COMMA";
+
+ case SEMICOLON:
+ return "SEMICOLON";
+
+ case LEFT_SQUARE:
+ return "LEFT_SQUARE";
+
+ case RIGHT_SQUARE:
+ return "RIGHT_SQUARE";
+
+ case AT:
+ return "AT";
+
+ case HAT:
+ return "HAT";
+
+ case STRING_LITERAL:
+ sprintf(buffer, "STRING_LITERAL(%s)", lval->string);
+ return buffer;
+
+ case URI_LITERAL:
+ sprintf(buffer, "URI_LITERAL(%s)",
+ (lval->uri ? (char*)raptor_uri_as_string(lval->uri) : ""));
+ return buffer;
+
+ case BLANK_LITERAL:
+ sprintf(buffer, "BLANK_LITERAL(%s)", lval->string);
+ return buffer;
+
+ case QNAME_LITERAL:
+ sprintf(buffer, "QNAME_LITERAL(%s)",
+ (lval->uri ? (char*)raptor_uri_as_string(lval->uri) : ""));
+ return buffer;
+
+ case INTEGER_LITERAL:
+ sprintf(buffer, "INTEGER_LITERAL(%d)", lval->integer);
+ return buffer;
+
+ case FLOATING_LITERAL:
+ sprintf(buffer, "FLOATING_LITERAL(%s)", lval->string);
+ return buffer;
+
+ case IDENTIFIER:
+ sprintf(buffer, "IDENTIFIER(%s)",
+ (lval->string ? (char*)lval->string : ""));
+ return buffer;
+
+ case DECIMAL_LITERAL:
+ sprintf(buffer, "DECIMAL_LITERAL(%s)", lval->string);
+ return buffer;
+
+ case ERROR_TOKEN:
+ return "ERROR";
+
+ default:
+ RAPTOR_DEBUG2("UNKNOWN token %d - add a new case\n", token);
+ return "(UNKNOWN)";
+ }
+}
+#endif
+
+
+
+void
+turtle_token_free(raptor_world* world, int token, YYSTYPE *lval)
+{
+ if(!token)
+ return;
+
+ switch(token) {
+ case STRING_LITERAL:
+ case BLANK_LITERAL:
+ case IDENTIFIER:
+ if(lval->string)
+ RAPTOR_FREE(char*, lval->string);
+ break;
+
+ case URI_LITERAL:
+ case QNAME_LITERAL:
+ if(lval->uri)
+ raptor_free_uri(lval->uri);
+ break;
+ default:
+ break;
+ }
+}
+
+
+#ifdef STANDALONE
+
+int
+main(int argc, char *argv[])
+{
+ raptor_parser rdf_parser;
+ raptor_turtle_parser turtle_parser;
+ yyscan_t scanner;
+ int token = EOF;
+ FILE *fh;
+ YYSTYPE lval;
+ const unsigned char *uri_string;
+ const char *filename = NULL;
+ raptor_world* world;
+
+ world = raptor_new_world();
+
+ if(argc > 1) {
+ filename = argv[1];
+ fh = fopen(filename, "r");
+ if(!fh) {
+ fprintf(stderr, "%s: Cannot open file %s - %s\n", argv[0], filename,
+ strerror(errno));
+ exit(1);
+ }
+ } else {
+ filename="<stdin>";
+ fh = (FILE*)stdin;
+ }
+
+ memset(&rdf_parser, 0, sizeof(rdf_parser));
+ memset(&turtle_parser, 0, sizeof(turtle_parser));
+
+ rdf_parser.world = world;
+
+ /* discard namespace errors - caused by not interpreting @prefix
+ * and hence causing failed qname construction
+ */
+ raptor_namespaces_init(rdf_parser.world, &turtle_parser.namespaces, 0);
+
+ turtle_lexer_lex_init(&turtle_parser.scanner);
+ scanner = turtle_parser.scanner;
+ turtle_lexer_set_in(fh, scanner);
+ turtle_lexer_set_extra(&rdf_parser, scanner);
+
+ /* Initialise enough of the parser and locator to get error messages */
+ rdf_parser.context = &turtle_parser;
+ turtle_parser.lineno = 1;
+ rdf_parser.locator.file = filename;
+ rdf_parser.locator.column = -1;
+
+ uri_string = raptor_uri_filename_to_uri_string(filename);
+ rdf_parser.base_uri = raptor_new_uri(world, uri_string);
+ RAPTOR_FREE(char*, uri_string);
+
+ while(1) {
+ memset(&lval, 0, sizeof(YYSTYPE));
+ if(turtle_lexer_get_text(scanner) != NULL)
+ printf("yyinput '%s'\n", turtle_lexer_get_text(scanner));
+ token = turtle_lexer_lex(&lval,scanner);
+#ifdef RAPTOR_DEBUG
+ printf("token %s\n", turtle_token_print(world, token, &lval));
+#else
+ printf("token %d\n", token);
+#endif
+ turtle_token_free(world, token, &lval);
+ if(!token || token == EOF || token == ERROR_TOKEN)
+ break;
+ }
+
+ turtle_lexer_lex_destroy(scanner);
+
+ raptor_namespaces_clear(&turtle_parser.namespaces);
+
+ raptor_free_uri(rdf_parser.base_uri);
+
+ raptor_free_world(world);
+
+
+ if(token == ERROR_TOKEN)
+ return 1;
+
+ return 0;
+}
+#endif
+
diff --git a/src/turtle_lexer.h b/src/turtle_lexer.h
new file mode 100644
index 0000000..bbb8c10
--- /dev/null
+++ b/src/turtle_lexer.h
@@ -0,0 +1,346 @@
+#ifndef turtle_lexer_HEADER_H
+#define turtle_lexer_HEADER_H 1
+#define turtle_lexer_IN_HEADER 1
+
+#line 6 "turtle_lexer.h"
+
+#line 8 "turtle_lexer.h"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* An opaque pointer. */
+#ifndef YY_TYPEDEF_YY_SCANNER_T
+#define YY_TYPEDEF_YY_SCANNER_T
+typedef void* yyscan_t;
+#endif
+
+/* For convenience, these vars (plus the bison vars far below)
+ are macros in the reentrant scanner. */
+#define yyin yyg->yyin_r
+#define yyout yyg->yyout_r
+#define yyextra yyg->yyextra_r
+#define yyleng yyg->yyleng_r
+#define yytext yyg->yytext_r
+#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
+#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
+#define yy_flex_debug yyg->yy_flex_debug_r
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
+#define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
+#endif
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+void turtle_lexer_restart (FILE *input_file ,yyscan_t yyscanner );
+void turtle_lexer__switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+YY_BUFFER_STATE turtle_lexer__create_buffer (FILE *file,int size ,yyscan_t yyscanner );
+void turtle_lexer__delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void turtle_lexer__flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void turtle_lexer_push_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+void turtle_lexer_pop_buffer_state (yyscan_t yyscanner );
+
+YY_BUFFER_STATE turtle_lexer__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
+YY_BUFFER_STATE turtle_lexer__scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
+YY_BUFFER_STATE turtle_lexer__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
+
+void *turtle_lexer_alloc (yy_size_t ,yyscan_t yyscanner );
+void *turtle_lexer_realloc (void *,yy_size_t ,yyscan_t yyscanner );
+void turtle_lexer_free (void * ,yyscan_t yyscanner );
+
+/* Begin user sect3 */
+
+#define yytext_ptr yytext_r
+
+#ifdef YY_HEADER_EXPORT_START_CONDITIONS
+#define INITIAL 0
+#define PREF 1
+#define LITERAL 2
+
+#endif
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#define YY_EXTRA_TYPE raptor_parser*
+
+int turtle_lexer_lex_init (yyscan_t* scanner);
+
+int turtle_lexer_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int turtle_lexer_lex_destroy (yyscan_t yyscanner );
+
+int turtle_lexer_get_debug (yyscan_t yyscanner );
+
+void turtle_lexer_set_debug (int debug_flag ,yyscan_t yyscanner );
+
+YY_EXTRA_TYPE turtle_lexer_get_extra (yyscan_t yyscanner );
+
+void turtle_lexer_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
+
+FILE *turtle_lexer_get_in (yyscan_t yyscanner );
+
+void turtle_lexer_set_in (FILE * in_str ,yyscan_t yyscanner );
+
+FILE *turtle_lexer_get_out (yyscan_t yyscanner );
+
+void turtle_lexer_set_out (FILE * out_str ,yyscan_t yyscanner );
+
+int turtle_lexer_get_leng (yyscan_t yyscanner );
+
+char *turtle_lexer_get_text (yyscan_t yyscanner );
+
+int turtle_lexer_get_lineno (yyscan_t yyscanner );
+
+void turtle_lexer_set_lineno (int line_number ,yyscan_t yyscanner );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int turtle_lexer_wrap (yyscan_t yyscanner );
+#else
+extern int turtle_lexer_wrap (yyscan_t yyscanner );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
+#endif
+
+#ifndef YY_NO_INPUT
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
+#define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int turtle_lexer_lex (yyscan_t yyscanner);
+
+#define YY_DECL int turtle_lexer_lex (yyscan_t yyscanner)
+#endif /* !YY_DECL */
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+#undef YY_NEW_FILE
+#undef YY_FLUSH_BUFFER
+#undef yy_set_bol
+#undef yy_new_buffer
+#undef yy_set_interactive
+#undef YY_DO_BEFORE_ACTION
+
+#ifdef YY_DECL_IS_OURS
+#undef YY_DECL_IS_OURS
+#undef YY_DECL
+#endif
+
+#line 449 "./turtle_lexer.l"
+
+
+#line 345 "turtle_lexer.h"
+#undef turtle_lexer_IN_HEADER
+#endif /* turtle_lexer_HEADER_H */
diff --git a/src/turtle_lexer.l b/src/turtle_lexer.l
new file mode 100644
index 0000000..6d5bc30
--- /dev/null
+++ b/src/turtle_lexer.l
@@ -0,0 +1,994 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * turtle_lexer.l - Raptor Turtle lexer - making tokens for turtle grammar generator
+ *
+ * Copyright (C) 2003-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ * Turtle is defined in http://www.dajobe.org/2004/01/turtle/
+ *
+ * To generate the C files from this source, rather than use the
+ * shipped turtle_lexer.c/.h needs a patched version of flex 2.5.31 such
+ * as the one available in Debian GNU/Linux. Details below
+ * near the %option descriptions.
+ *
+ */
+
+
+/* recognise 8-bits */
+%option 8bit
+%option warn nodefault
+
+/* all symbols prefixed by this */
+%option prefix="turtle_lexer_"
+
+/* This is not needed, flex is invoked -oturtle_lexer.c */
+/* %option outfile="turtle_lexer.c" */
+
+/* Emit a C header file for prototypes
+ * Only available in flex 2.5.13 or newer.
+ * It was renamed to header-file in flex 2.5.19
+ */
+%option header-file="turtle_lexer.h"
+
+/* Do not emit #include <unistd.h>
+ * Only available in flex 2.5.7 or newer.
+ * Broken in flex 2.5.31 without patches.
+ */
+%option nounistd
+
+/* Never interactive */
+/* No isatty() check */
+%option never-interactive
+
+/* Batch scanner */
+%option batch
+
+/* Never use yyunput */
+%option nounput
+
+/* Supply our own alloc/realloc/free functions */
+%option noyyalloc noyyrealloc noyyfree
+
+/* Re-entrant scanner */
+%option reentrant
+
+%option extra-type="raptor_parser*"
+
+
+ /* definitions */
+
+%{
+
+/* NOTE: These headers are NOT included here but are inserted by
+ * fix-flex since otherwise it appears far too late in the generated C
+ */
+
+/*
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_SETJMP_H
+#include <setjmp.h>
+#endif
+
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#include <turtle_parser.h>
+
+#include <turtle_common.h>
+
+
+/* Prototypes */
+static unsigned char *turtle_copy_token(unsigned char *text, size_t len);
+static unsigned char *turtle_copy_string_token(raptor_parser* rdf_parser, unsigned char *text, size_t len, int delim);
+void turtle_lexer_syntax_error(void* ctx, const char *message, ...) RAPTOR_PRINTF_FORMAT(2, 3);
+
+#ifdef RAPTOR_DEBUG
+const char * turtle_token_print(raptor_world* world, int token, YYSTYPE *lval);
+#endif
+
+int turtle_lexer_lex (YYSTYPE *turtle_parser_lval, yyscan_t yyscanner);
+#define YY_DECL int turtle_lexer_lex (YYSTYPE *turtle_parser_lval, yyscan_t yyscanner)
+
+#ifdef __cplusplus
+#define INPUT_FN yyinput
+#else
+#define INPUT_FN input
+#endif
+
+
+/* Missing turtle_lexer.c/h prototypes */
+int turtle_lexer_get_column(yyscan_t yyscanner);
+void turtle_lexer_set_column(int column_no , yyscan_t yyscanner);
+
+static void turtle_lexer_cleanup(yyscan_t yyscanner);
+
+#ifdef HAVE_SETJMP
+static jmp_buf turtle_lexer_fatal_error_longjmp_env;
+
+/* fatal error handler declaration */
+#define YY_FATAL_ERROR(msg) do { \
+ turtle_lexer_error(yyscanner, RAPTOR_LOG_LEVEL_FATAL, msg); \
+ longjmp(turtle_lexer_fatal_error_longjmp_env, 1); \
+} while(0)
+#else
+#define YY_FATAL_ERROR(msg) do { \
+ turtle_lexer_error(yyscanner, RAPTOR_LOG_LEVEL_FATAL, msg); \
+ abort(); \
+} while(0)
+#endif
+
+static void turtle_lexer_error(yyscan_t yyscanner, raptor_log_level level, yyconst char *message, ...) RAPTOR_PRINTF_FORMAT(3, 4);
+
+/* Fatal error handler that returns EOF instead of abort()/longjmp()
+ * so that parser can clean up properly */
+#define YY_FATAL_ERROR_EOF(msg) do { \
+ turtle_lexer_error(yyscanner, RAPTOR_LOG_LEVEL_FATAL, "%s", msg); \
+ yyterminate(); \
+} while(0)
+
+/* Out-of-memory reporting macro */
+#define TURTLE_LEXER_OOM() YY_FATAL_ERROR_EOF(turtle_lexer_oom_text)
+static char turtle_lexer_oom_text[]="turtle_lexer: Out of memory";
+
+/* Dot not need input() to to read from stdin */
+#define YY_NO_INPUT 1
+
+%}
+
+/* Tokens from SPARQL spec, adjusted for Turtle */
+LANGUAGETOKEN [A-Za-z][-A-Z_a-z0-9]*
+NCCHAR1 [A-Za-z\\\x80-\xff]
+NCCHAR {NCCHAR1}|"-"|"_"|[0-9]
+/* SPARQL allows . in prefix after first position. Would be:
+ NCNAME_PREFIX {NCCHAR1}(({NCCHAR}|".")*{NCCHAR})?
+*/
+NCNAME_PREFIX {NCCHAR1}{NCCHAR}*
+/* SPARQL allows . in name after first position. Would be:
+ NCNAME ("_"|{NCCHAR1})(({NCCHAR}|".")*{NCCHAR})?
+*/
+NCNAME ("_"|{NCCHAR1}){NCCHAR}*
+QNAME {NCNAME_PREFIX}?":"{NCNAME}?
+BNAME "_:"{NCNAME}
+
+/* similar to SPARQL but no need for <= check here */
+QUOTEDURI \<[^\>]*\>
+
+DECIMAL [0-9]+"."[0-9]*|"."[0-9]+
+DOUBLE [0-9]+"."[0-9]*{EXPONENT}|"."([0-9])+{EXPONENT}|([0-9])+{EXPONENT}
+EXPONENT [eE][+-]?[0-9]+
+
+
+%x PREF LITERAL
+
+
+%%
+ /* rules */
+
+%{
+ raptor_parser *rdf_parser = yyextra;
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+#ifdef HAVE_SETJMP
+ if(setjmp(turtle_lexer_fatal_error_longjmp_env))
+ return 1;
+#endif
+%}
+
+
+\r\n|\r|\n { turtle_parser->lineno++; }
+
+[\ \t\v]+ { /* empty */ }
+
+
+"a" { return A; }
+
+"." { return DOT; }
+"," { return COMMA; }
+";" { return SEMICOLON; }
+"[" { return LEFT_SQUARE; }
+"]" { return RIGHT_SQUARE; }
+"@prefix" { BEGIN(PREF); return PREFIX; }
+"@base" { return BASE; }
+"@" { return AT; }
+"^^" { return HAT; }
+"(" { return LEFT_ROUND; }
+")" { return RIGHT_ROUND; }
+"{" { return LEFT_CURLY; }
+"}" { return RIGHT_CURLY; }
+"true" { return TRUE_TOKEN; }
+"false" { return FALSE_TOKEN; }
+
+
+\"([^"\\\n\r]|\\[^\n\r])*\" { turtle_parser_lval->string = turtle_copy_string_token(rdf_parser, (unsigned char*)yytext+1, yyleng-2, '"'); /* ' */
+ if(!turtle_parser_lval->string)
+ yyterminate();
+
+ return STRING_LITERAL; }
+
+\"\"\" { BEGIN(LITERAL);
+ turtle_parser->sb = raptor_new_stringbuffer();
+ if(!turtle_parser->sb)
+ TURTLE_LEXER_OOM();
+ }
+
+<LITERAL>\"\"\" {
+ size_t len;
+
+ BEGIN(INITIAL);
+ len = raptor_stringbuffer_length(turtle_parser->sb);
+ turtle_parser_lval->string = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(!turtle_parser_lval->string)
+ TURTLE_LEXER_OOM();
+ raptor_stringbuffer_copy_to_string(turtle_parser->sb, (unsigned char*)turtle_parser_lval->string, len);
+ turtle_parser_lval->string[len]='\0';
+
+ raptor_free_stringbuffer(turtle_parser->sb);
+ turtle_parser->sb = NULL;
+ return STRING_LITERAL; }
+
+<LITERAL>\"|(\\.|[^\"\\]|\n)* {
+ char *p;
+
+ if(*yytext == EOF) {
+ BEGIN(INITIAL);
+ turtle_syntax_error(rdf_parser, "End of file in middle of literal");
+ raptor_free_stringbuffer(turtle_parser->sb);
+ turtle_parser->sb = NULL;
+ return EOF;
+ }
+
+ for(p = yytext; *p; p++) {
+ if(*p == '\n')
+ turtle_parser->lineno++;
+ }
+
+ if(raptor_stringbuffer_append_turtle_string(turtle_parser->sb, (unsigned char*)yytext, yyleng, '"', (raptor_simple_message_handler)turtle_lexer_syntax_error, rdf_parser)) { /* " */
+ BEGIN(INITIAL);
+ raptor_free_stringbuffer(turtle_parser->sb);
+ turtle_parser->sb = NULL;
+ YY_FATAL_ERROR_EOF("raptor_stringbuffer_append_turtle_string failed");
+ }
+
+ }
+
+<LITERAL>\\ {
+ /* this should only happen if \ is at the end of the file so the Turtle doc is illegal anyway */
+ BEGIN(INITIAL);
+ raptor_free_stringbuffer(turtle_parser->sb);
+ turtle_parser->sb = NULL;
+ turtle_syntax_error(rdf_parser, "End of file in middle of literal");
+ yyterminate();
+}
+
+<LITERAL><<EOF>> {
+ BEGIN(INITIAL);
+ raptor_free_stringbuffer(turtle_parser->sb);
+ turtle_parser->sb = NULL;
+ turtle_syntax_error(rdf_parser, "End of file in middle of literal");
+ yyterminate();
+}
+
+{BNAME} { turtle_parser_lval->string = turtle_copy_token((unsigned char*)yytext+2, yyleng-2);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ return BLANK_LITERAL; }
+
+{QNAME} { turtle_parser_lval->uri = turtle_qname_to_uri(rdf_parser, (unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->uri) {
+ turtle_lexer_error(yyscanner, RAPTOR_LOG_LEVEL_ERROR, "Failed to convert qname %s to URI", yytext);
+ yyterminate();
+ }
+
+ return QNAME_LITERAL; }
+
+[-+]?{DECIMAL} { turtle_parser_lval->string = turtle_copy_token((unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ return DECIMAL_LITERAL;
+}
+
+[-+]?{DOUBLE} { turtle_parser_lval->string = turtle_copy_token((unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ return FLOATING_LITERAL;
+}
+
+[-+]?[0-9]+ { turtle_parser_lval->string = turtle_copy_token((unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ return INTEGER_LITERAL; }
+
+<PREF>[\ \t\v]+ { /* eat up leading whitespace */ }
+<PREF>{NCNAME_PREFIX}":" { turtle_parser_lval->string=turtle_copy_token((unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ BEGIN(INITIAL);
+ return IDENTIFIER; }
+<PREF>":" { BEGIN(INITIAL);
+ turtle_parser_lval->string = turtle_copy_token((unsigned char*)yytext, 0);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ return IDENTIFIER; }
+
+<PREF>(.|\n) { BEGIN(INITIAL);
+ if(*yytext == EOF)
+ return EOF;
+
+ turtle_syntax_error(rdf_parser, "syntax error at '%c'", *yytext);
+ yyterminate(); }
+
+
+{QUOTEDURI}[\ \t\v\n]*("=")?[\ \t\v\n]*"{" {
+ raptor_stringbuffer* sb;
+ unsigned char* uri_string;
+
+ /* make length just the QUOTEDURI */
+ while(yytext[yyleng - 1] != '>')
+ yyleng--;
+
+ sb = raptor_new_stringbuffer();
+ if(!sb)
+ TURTLE_LEXER_OOM();
+
+ /* start at yytext + 1 to skip '<' and operate over
+ * length-2 bytes to skip '<' and '>'
+ */
+ if(raptor_stringbuffer_append_turtle_string(sb, (unsigned char*)yytext+1, yyleng-2, '>', (raptor_simple_message_handler)turtle_lexer_syntax_error, rdf_parser)) {
+ raptor_free_stringbuffer(sb);
+ YY_FATAL_ERROR_EOF("raptor_stringbuffer_append_turtle_string failed");
+ }
+ uri_string = raptor_stringbuffer_as_string(sb);
+
+ if(!*uri_string)
+ turtle_parser_lval->uri = raptor_uri_copy(rdf_parser->base_uri);
+ else
+ turtle_parser_lval->uri = raptor_new_uri_relative_to_base(rdf_parser->world, rdf_parser->base_uri, uri_string);
+
+ raptor_free_stringbuffer(sb);
+
+ if(!turtle_parser_lval->uri)
+ TURTLE_LEXER_OOM();
+ return GRAPH_NAME_LEFT_CURLY; }
+
+{QNAME}[\ \t\v\n]*("=")?[\ \t\v\n]*"{" {
+ while(1) {
+ int c = yytext[yyleng - 1];
+ if(c == '{' || c == ' ' || c=='\t' || c == '\v' || c == '\n' ||
+ c == '=') {
+ yyleng--;
+ } else
+ break;
+ }
+ yytext[yyleng] = '\0';
+
+ turtle_parser_lval->uri = turtle_qname_to_uri(rdf_parser, (unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->uri) {
+ turtle_lexer_error(yyscanner, RAPTOR_LOG_LEVEL_ERROR, "Failed to convert qname %s to URI", yytext);
+ yyterminate();
+ }
+
+ return GRAPH_NAME_LEFT_CURLY; }
+
+{QUOTEDURI} { if(yyleng == 2)
+ turtle_parser_lval->uri = raptor_uri_copy(rdf_parser->base_uri);
+ else {
+ raptor_stringbuffer* sb;
+ unsigned char* uri_string;
+
+ yytext[yyleng-1]='\0';
+ sb = raptor_new_stringbuffer();
+ if(!sb)
+ TURTLE_LEXER_OOM();
+ if(raptor_stringbuffer_append_turtle_string(sb, (unsigned char*)yytext+1, yyleng-1, '>', (raptor_simple_message_handler)turtle_lexer_syntax_error, rdf_parser)) {
+ raptor_free_stringbuffer(sb);
+ YY_FATAL_ERROR_EOF("raptor_stringbuffer_append_turtle_string failed");
+ }
+ uri_string = raptor_stringbuffer_as_string(sb);
+ turtle_parser_lval->uri = raptor_new_uri_relative_to_base(rdf_parser->world, rdf_parser->base_uri, uri_string);
+ if(!turtle_parser_lval->uri) {
+ raptor_free_stringbuffer(sb);
+ TURTLE_LEXER_OOM();
+ }
+ raptor_free_stringbuffer(sb);
+ }
+ return URI_LITERAL; }
+
+{LANGUAGETOKEN} { turtle_parser_lval->string = turtle_copy_token((unsigned char*)yytext, yyleng);
+ if(!turtle_parser_lval->string)
+ YY_FATAL_ERROR_EOF("turtle_copy_token failed");
+ return IDENTIFIER; }
+
+\#[^\r\n]*(\r\n|\r|\n) { /* # comment */
+ turtle_parser->lineno++;
+ }
+
+\#[^\r\n]* { /* # comment on the last line with no terminating newline */
+ }
+
+. { if(*yytext == EOF)
+ return EOF;
+
+ turtle_syntax_error(rdf_parser, "syntax error at '%c'", *yytext);
+ yyterminate();
+ }
+
+%%
+ /* user code */
+
+int
+yywrap (yyscan_t yyscanner) {
+ return 1;
+}
+
+
+static unsigned char *
+turtle_copy_token(unsigned char *text, size_t len)
+{
+ unsigned char *s;
+ if(!len)
+ len = strlen((const char*)text);
+ s = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(s) {
+ memcpy(s, text, len);
+ s[len] = '\0';
+ }
+ return s;
+}
+
+
+static unsigned char *
+turtle_copy_string_token(raptor_parser* rdf_parser,
+ unsigned char *string, size_t len, int delim)
+{
+ raptor_stringbuffer* sb = NULL;
+ int rc;
+
+ if(len) {
+ sb = raptor_new_stringbuffer();
+ if(!sb)
+ return NULL;
+
+ rc = raptor_stringbuffer_append_turtle_string(sb, string, len, delim,
+ (raptor_simple_message_handler)turtle_lexer_syntax_error,
+ rdf_parser);
+ if(rc) {
+ raptor_free_stringbuffer(sb);
+ return NULL;
+ }
+
+ len = raptor_stringbuffer_length(sb);
+ }
+
+ string = RAPTOR_MALLOC(unsigned char*, len + 1);
+ if(string) {
+ if(sb)
+ raptor_stringbuffer_copy_to_string(sb, string, len+1);
+ string[len]='\0';
+ }
+
+ if(sb)
+ raptor_free_stringbuffer(sb);
+
+ return string;
+}
+
+
+void
+turtle_lexer_syntax_error(void* ctx, const char *message, ...)
+{
+ raptor_parser* rdf_parser = (raptor_parser *)ctx;
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+ va_list arguments;
+
+ rdf_parser->locator.line = turtle_parser->lineno;
+#ifdef RAPTOR_TURTLE_USE_ERROR_COLUMNS
+ rdf_parser->locator.column = turtle_lexer_get_column(yyscanner);
+#endif
+
+ va_start(arguments, message);
+ raptor_parser_log_error_varargs(((raptor_parser*)rdf_parser),
+ RAPTOR_LOG_LEVEL_ERROR, message, arguments);
+
+ va_end(arguments);
+}
+
+
+/*
+ * turtle_lexer_error:
+ * @yyscanner: scanner object
+ * @level: log level RAPTOR_LOG_LEVEL_FATAL otherwise error
+ * @message: erro message
+ *
+ * INTERNAL - replacement for the generated error handler.
+ */
+static void turtle_lexer_error(yyscan_t yyscanner,
+ raptor_log_level level,
+ yyconst char *message, ...)
+{
+ raptor_parser *rdf_parser = NULL;
+ va_list arguments;
+
+ va_start(arguments, message);
+
+ if(yyscanner)
+ rdf_parser = (raptor_parser*)turtle_lexer_get_extra(yyscanner);
+
+ /* This handles NULL rdf_parser properly */
+ raptor_parser_log_error_varargs(rdf_parser, level, message, arguments);
+
+ va_end(arguments);
+}
+
+
+/* Define LEXER_ALLOC_TRACKING to enable allocated memory tracking
+ * - fixes lexer memory leak when ensure_buffer_stack fails
+ */
+
+#ifdef LEXER_ALLOC_TRACKING
+typedef struct {
+ /* Number of void* slots allocated */
+ int lexer_allocs_size;
+ /* Allocted void* slots follow in memory after this header */
+} lexer_alloc_tracker_header;
+
+/* Initial alloc tracker slot array size - 2 seems to be enough for almost all cases */
+static const int initial_lexer_allocs_size = 2;
+#endif
+
+/*
+ * turtle_lexer_cleanup:
+ * @yyscanner:
+ *
+ * INTERNAL - Clean up unfreed lexer allocs if LEXER_ALLOC_TRACKING is enabled.
+ */
+static void turtle_lexer_cleanup(yyscan_t yyscanner)
+{
+#ifdef LEXER_ALLOC_TRACKING
+ raptor_parser *rdf_parser;
+ lexer_alloc_tracker_header *tracker;
+ void **lexer_allocs;
+ int i;
+
+ if(!yyscanner)
+ return;
+
+ rdf_parser = (raptor_parser *)turtle_lexer_get_extra(yyscanner);
+ if(!rdf_parser)
+ return;
+
+ tracker = (lexer_alloc_tracker_header *)rdf_parser->lexer_user_data;
+ if(!tracker)
+ return;
+ lexer_allocs = (void**)&tracker[1];
+
+ for(i = 0; i < tracker->lexer_allocs_size; ++i) {
+ if(lexer_allocs[i])
+ free(lexer_allocs[i]);
+ lexer_allocs[i] = NULL;
+ }
+ free(rdf_parser->lexer_user_data);
+ rdf_parser->lexer_user_data = NULL;
+#endif
+}
+
+
+/*
+ * turtle_lexer_alloc:
+ * @size
+ * @yyscanner
+ *
+ * INTERNAL - alloc replacement.
+ * Tracks allocated cells if LEXER_ALLOC_TRACKING is enabled.
+ */
+void *turtle_lexer_alloc(yy_size_t size, yyscan_t yyscanner)
+{
+#ifdef LEXER_ALLOC_TRACKING
+ raptor_parser *rdf_parser;
+ lexer_alloc_tracker_header *tracker;
+ void **lexer_allocs;
+ int i;
+ void *ptr;
+
+ /* yyscanner not initialized -> probably initializing yyscanner itself
+ * -> just malloc without tracking
+ */
+ if(!yyscanner)
+ return malloc(size);
+
+ rdf_parser = (raptor_parser *)turtle_lexer_get_extra(yyscanner);
+ if(!rdf_parser)
+ YY_FATAL_ERROR("lexer_alloc: yyscanner extra not initialized");
+
+ /* try to allocate tracker if it does not exist */
+ tracker = (lexer_alloc_tracker_header *)rdf_parser->lexer_user_data;
+ if(!tracker) {
+ /* allocate tracker header + array of void* slots */
+ tracker = (lexer_alloc_tracker_header*)calloc(1, sizeof(lexer_alloc_tracker_header)+initial_lexer_allocs_size*sizeof(void*));
+ if(!tracker)
+ YY_FATAL_ERROR("lexer_alloc: cannot allocate tracker");
+ tracker->lexer_allocs_size = initial_lexer_allocs_size;
+ rdf_parser->lexer_user_data = (void *)tracker;
+ }
+ lexer_allocs = (void**)&tracker[1];
+
+ /* allocate memory */
+ ptr = malloc(size);
+
+ /* find a free slot for ptr */
+ for(i = 0; i < tracker->lexer_allocs_size; ++i) {
+ if(!lexer_allocs[i]) {
+ lexer_allocs[i] = ptr;
+ break;
+ }
+ }
+
+ /* no free slots -> grow tracker slot array */
+ if(i>=tracker->lexer_allocs_size) {
+ int j;
+ void **dest;
+ tracker = (lexer_alloc_tracker_header*)calloc(1, sizeof(lexer_alloc_tracker_header)+i*2*sizeof(void*));
+ if(!tracker) {
+ if(ptr)
+ free(ptr);
+ YY_FATAL_ERROR("lexer_alloc: cannot grow tracker");
+ }
+ tracker->lexer_allocs_size = i*2;
+
+ /* copy data from old tracker */
+ dest = (void**)&tracker[1];
+ for(j = 0; j < i; ++j) {
+ dest[j] = lexer_allocs[j];
+ }
+
+ /* set new item to first free slot */
+ dest[j] = ptr;
+
+ /* free old tracker and replace with new one */
+ free(rdf_parser->lexer_user_data);
+ rdf_parser->lexer_user_data = tracker;
+ }
+
+ return ptr;
+#else
+ return malloc(size);
+#endif
+}
+
+
+/*
+ * turtle_lexer_realloc:
+ *
+ * INTERNAL - realloc replacement
+ * Tracks allocated cells if LEXER_ALLOC_TRACKING is enabled.
+ */
+void *turtle_lexer_realloc(void *ptr, yy_size_t size, yyscan_t yyscanner)
+{
+#ifdef LEXER_ALLOC_TRACKING
+ raptor_parser *rdf_parser;
+ lexer_alloc_tracker_header *tracker;
+ void **lexer_allocs;
+ int i;
+ void *newptr;
+
+ if(!yyscanner)
+ YY_FATAL_ERROR("lexer_realloc: yyscanner not initialized");
+
+ rdf_parser = (raptor_parser *)turtle_lexer_get_extra(yyscanner);
+ if(!rdf_parser)
+ YY_FATAL_ERROR("lexer_realloc: yyscanner extra not initialized");
+
+ tracker = (lexer_alloc_tracker_header *)rdf_parser->lexer_user_data;
+ if(!tracker)
+ YY_FATAL_ERROR("lexer_realloc: no alloc tracker");
+ lexer_allocs = (void**)&tracker[1];
+
+ /* find the old slot for ptr */
+ for(i = 0; i < tracker->lexer_allocs_size; ++i) {
+ if(lexer_allocs[i] == ptr)
+ break;
+ }
+
+ /* no old slot -> error */
+ if(i>=tracker->lexer_allocs_size)
+ YY_FATAL_ERROR("lexer_realloc: cell not in tracker");
+
+ /* realloc */
+ newptr = realloc((char*)ptr, size);
+
+ /* replace entry in tracker */
+ lexer_allocs[i] = newptr;
+
+ return newptr;
+#else
+ return realloc((char*)ptr, size);
+#endif
+}
+
+
+/*
+ * turtle_lexer_free:
+ *
+ * INTERNAL - free replacement.
+ * Checks for NULL pointer to be freed unlike the default lexer free function.
+ * Tracks allocated cells if LEXER_ALLOC_TRACKING is enabled.
+ */
+void turtle_lexer_free(void *ptr, yyscan_t yyscanner)
+{
+#ifdef LEXER_ALLOC_TRACKING
+ raptor_parser *rdf_parser;
+ lexer_alloc_tracker_header *tracker;
+ void **lexer_allocs;
+ int i;
+
+ /* do not free NULL */
+ if(!ptr)
+ return;
+
+ /* free ptr even if we would encounter an error */
+ free(ptr);
+
+ /* yyscanner is allocated with turtle_lexer_alloc() but it's never stored in the tracker
+ * - we need yyscanner to access the tracker */
+ if(!yyscanner || ptr == yyscanner)
+ return;
+
+ rdf_parser = (raptor_parser *)turtle_lexer_get_extra(yyscanner);
+ if(!rdf_parser)
+ return;
+
+ tracker = (lexer_alloc_tracker_header *)rdf_parser->lexer_user_data;
+ if(!tracker)
+ return;
+ lexer_allocs = (void**)&tracker[1];
+
+ /* find the slot for ptr */
+ for(i = 0; i < tracker->lexer_allocs_size; ++i) {
+ if(lexer_allocs[i] == ptr)
+ break;
+ }
+
+ /* no slot -> error */
+ if(i>=tracker->lexer_allocs_size)
+ YY_FATAL_ERROR("lexer_free: cell not in tracker");
+
+ /* remove entry from tracker */
+ lexer_allocs[i] = NULL;
+#else
+ if(ptr)
+ free(ptr);
+#endif
+}
+
+
+#ifdef RAPTOR_DEBUG
+
+const char *
+turtle_token_print(raptor_world* world, int token, YYSTYPE *lval)
+{
+ static char buffer[2048];
+
+ if(!token)
+ return "<<EOF>>";
+
+ switch(token) {
+ case PREFIX:
+ return "PREFIX";
+
+ case BASE:
+ return "BASE";
+
+ case A:
+ return "A";
+
+ case DOT:
+ return "DOT";
+
+ case COMMA:
+ return "COMMA";
+
+ case SEMICOLON:
+ return "SEMICOLON";
+
+ case LEFT_SQUARE:
+ return "LEFT_SQUARE";
+
+ case RIGHT_SQUARE:
+ return "RIGHT_SQUARE";
+
+ case AT:
+ return "AT";
+
+ case HAT:
+ return "HAT";
+
+ case STRING_LITERAL:
+ sprintf(buffer, "STRING_LITERAL(%s)", lval->string);
+ return buffer;
+
+ case URI_LITERAL:
+ sprintf(buffer, "URI_LITERAL(%s)",
+ (lval->uri ? (char*)raptor_uri_as_string(lval->uri) : ""));
+ return buffer;
+
+ case BLANK_LITERAL:
+ sprintf(buffer, "BLANK_LITERAL(%s)", lval->string);
+ return buffer;
+
+ case QNAME_LITERAL:
+ sprintf(buffer, "QNAME_LITERAL(%s)",
+ (lval->uri ? (char*)raptor_uri_as_string(lval->uri) : ""));
+ return buffer;
+
+ case INTEGER_LITERAL:
+ sprintf(buffer, "INTEGER_LITERAL(%d)", lval->integer);
+ return buffer;
+
+ case FLOATING_LITERAL:
+ sprintf(buffer, "FLOATING_LITERAL(%s)", lval->string);
+ return buffer;
+
+ case IDENTIFIER:
+ sprintf(buffer, "IDENTIFIER(%s)",
+ (lval->string ? (char*)lval->string : ""));
+ return buffer;
+
+ case DECIMAL_LITERAL:
+ sprintf(buffer, "DECIMAL_LITERAL(%s)", lval->string);
+ return buffer;
+
+ case ERROR_TOKEN:
+ return "ERROR";
+
+ default:
+ RAPTOR_DEBUG2("UNKNOWN token %d - add a new case\n", token);
+ return "(UNKNOWN)";
+ }
+}
+#endif
+
+
+
+void
+turtle_token_free(raptor_world* world, int token, YYSTYPE *lval)
+{
+ if(!token)
+ return;
+
+ switch(token) {
+ case STRING_LITERAL:
+ case BLANK_LITERAL:
+ case IDENTIFIER:
+ if(lval->string)
+ RAPTOR_FREE(char*, lval->string);
+ break;
+
+ case URI_LITERAL:
+ case QNAME_LITERAL:
+ if(lval->uri)
+ raptor_free_uri(lval->uri);
+ break;
+ default:
+ break;
+ }
+}
+
+
+#ifdef STANDALONE
+
+int
+main(int argc, char *argv[])
+{
+ raptor_parser rdf_parser;
+ raptor_turtle_parser turtle_parser;
+ yyscan_t scanner;
+ int token = EOF;
+ FILE *fh;
+ YYSTYPE lval;
+ const unsigned char *uri_string;
+ const char *filename = NULL;
+ raptor_world* world;
+
+ world = raptor_new_world();
+
+ if(argc > 1) {
+ filename = argv[1];
+ fh = fopen(filename, "r");
+ if(!fh) {
+ fprintf(stderr, "%s: Cannot open file %s - %s\n", argv[0], filename,
+ strerror(errno));
+ exit(1);
+ }
+ } else {
+ filename="<stdin>";
+ fh = (FILE*)stdin;
+ }
+
+ memset(&rdf_parser, 0, sizeof(rdf_parser));
+ memset(&turtle_parser, 0, sizeof(turtle_parser));
+
+ rdf_parser.world = world;
+
+ /* discard namespace errors - caused by not interpreting @prefix
+ * and hence causing failed qname construction
+ */
+ raptor_namespaces_init(rdf_parser.world, &turtle_parser.namespaces, 0);
+
+ yylex_init(&turtle_parser.scanner);
+ scanner = turtle_parser.scanner;
+ turtle_lexer_set_in(fh, scanner);
+ turtle_lexer_set_extra(&rdf_parser, scanner);
+
+ /* Initialise enough of the parser and locator to get error messages */
+ rdf_parser.context = &turtle_parser;
+ turtle_parser.lineno = 1;
+ rdf_parser.locator.file = filename;
+ rdf_parser.locator.column = -1;
+
+ uri_string = raptor_uri_filename_to_uri_string(filename);
+ rdf_parser.base_uri = raptor_new_uri(world, uri_string);
+ RAPTOR_FREE(char*, uri_string);
+
+ while(1) {
+ memset(&lval, 0, sizeof(YYSTYPE));
+ if(turtle_lexer_get_text(scanner) != NULL)
+ printf("yyinput '%s'\n", turtle_lexer_get_text(scanner));
+ token = yylex(&lval, scanner);
+#ifdef RAPTOR_DEBUG
+ printf("token %s\n", turtle_token_print(world, token, &lval));
+#else
+ printf("token %d\n", token);
+#endif
+ turtle_token_free(world, token, &lval);
+ if(!token || token == EOF || token == ERROR_TOKEN)
+ break;
+ }
+
+ yylex_destroy(scanner);
+
+ raptor_namespaces_clear(&turtle_parser.namespaces);
+
+ raptor_free_uri(rdf_parser.base_uri);
+
+ raptor_free_world(world);
+
+
+ if(token == ERROR_TOKEN)
+ return 1;
+
+ return 0;
+}
+#endif
diff --git a/src/turtle_parser.c b/src/turtle_parser.c
new file mode 100644
index 0000000..d705848
--- /dev/null
+++ b/src/turtle_parser.c
@@ -0,0 +1,3817 @@
+/* A Bison parser, made by GNU Bison 2.5. */
+
+/* Bison implementation for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "2.5"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 1
+
+/* Push parsers. */
+#define YYPUSH 0
+
+/* Pull parsers. */
+#define YYPULL 1
+
+/* Using locations. */
+#define YYLSP_NEEDED 0
+
+/* Substitute the variable and function names. */
+#define yyparse turtle_parser_parse
+#define yylex turtle_parser_lex
+#define yyerror turtle_parser_error
+#define yylval turtle_parser_lval
+#define yychar turtle_parser_char
+#define yydebug turtle_parser_debug
+#define yynerrs turtle_parser_nerrs
+
+
+/* Copy the first part of user declarations. */
+
+/* Line 268 of yacc.c */
+#line 31 "./turtle_parser.y"
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#include <turtle_parser.h>
+
+#define YY_DECL int turtle_lexer_lex (YYSTYPE *turtle_parser_lval, yyscan_t yyscanner)
+#define YY_NO_UNISTD_H 1
+#include <turtle_lexer.h>
+
+#include <turtle_common.h>
+
+
+/* Make verbose error messages for syntax errors */
+#ifdef RAPTOR_DEBUG
+#define YYERROR_VERBOSE 1
+#endif
+
+#ifdef RAPTOR_DEBUG
+const char * turtle_token_print(raptor_world* world, int token, YYSTYPE *lval);
+#endif
+
+
+
+/* Slow down the grammar operation and watch it work */
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+#define YYDEBUG 1
+#endif
+
+/* the lexer does not seem to track this */
+#undef RAPTOR_TURTLE_USE_ERROR_COLUMNS
+
+/* set api.push_pull to "push" if this is defined */
+#undef TURTLE_PUSH_PARSE
+
+/* Prototypes */
+int turtle_parser_error(void* rdf_parser, const char *msg);
+
+/* Missing turtle_lexer.c/h prototypes */
+int turtle_lexer_get_column(yyscan_t yyscanner);
+/* Not used here */
+/* void turtle_lexer_set_column(int column_no , yyscan_t yyscanner);*/
+
+
+/* What the lexer wants */
+extern int turtle_lexer_lex (YYSTYPE *turtle_parser_lval, yyscan_t scanner);
+
+/* Make lex/yacc interface as small as possible */
+#undef yylex
+#define yylex turtle_lexer_lex
+#define YYLEX_PARAM ((raptor_turtle_parser*)(((raptor_parser*)rdf_parser)->context))->scanner
+
+
+/* Prototypes for local functions */
+static void raptor_turtle_generate_statement(raptor_parser *parser, raptor_statement *triple);
+
+
+
+/* Line 268 of yacc.c */
+#line 157 "turtle_parser.c"
+
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table. */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ A = 258,
+ AT = 259,
+ HAT = 260,
+ DOT = 261,
+ COMMA = 262,
+ SEMICOLON = 263,
+ LEFT_SQUARE = 264,
+ RIGHT_SQUARE = 265,
+ LEFT_ROUND = 266,
+ RIGHT_ROUND = 267,
+ LEFT_CURLY = 268,
+ RIGHT_CURLY = 269,
+ TRUE_TOKEN = 270,
+ FALSE_TOKEN = 271,
+ PREFIX = 272,
+ BASE = 273,
+ STRING_LITERAL = 274,
+ URI_LITERAL = 275,
+ GRAPH_NAME_LEFT_CURLY = 276,
+ BLANK_LITERAL = 277,
+ QNAME_LITERAL = 278,
+ IDENTIFIER = 279,
+ INTEGER_LITERAL = 280,
+ FLOATING_LITERAL = 281,
+ DECIMAL_LITERAL = 282,
+ ERROR_TOKEN = 283
+ };
+#endif
+/* Tokens. */
+#define A 258
+#define AT 259
+#define HAT 260
+#define DOT 261
+#define COMMA 262
+#define SEMICOLON 263
+#define LEFT_SQUARE 264
+#define RIGHT_SQUARE 265
+#define LEFT_ROUND 266
+#define RIGHT_ROUND 267
+#define LEFT_CURLY 268
+#define RIGHT_CURLY 269
+#define TRUE_TOKEN 270
+#define FALSE_TOKEN 271
+#define PREFIX 272
+#define BASE 273
+#define STRING_LITERAL 274
+#define URI_LITERAL 275
+#define GRAPH_NAME_LEFT_CURLY 276
+#define BLANK_LITERAL 277
+#define QNAME_LITERAL 278
+#define IDENTIFIER 279
+#define INTEGER_LITERAL 280
+#define FLOATING_LITERAL 281
+#define DECIMAL_LITERAL 282
+#define ERROR_TOKEN 283
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+{
+
+/* Line 293 of yacc.c */
+#line 122 "./turtle_parser.y"
+
+ unsigned char *string;
+ raptor_term *identifier;
+ raptor_sequence *sequence;
+ raptor_uri *uri;
+ int integer; /* 0+ for a xsd:integer datatyped RDF literal */
+
+
+
+/* Line 293 of yacc.c */
+#line 259 "turtle_parser.c"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+/* Copy the second part of user declarations. */
+
+
+/* Line 343 of yacc.c */
+#line 271 "turtle_parser.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int yyi)
+#else
+static int
+YYID (yyi)
+ int yyi;
+#endif
+{
+ return yyi;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# endif
+# endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+};
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+# define YYCOPY_NEEDED 1
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (YYID (0))
+
+#endif
+
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 3
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 132
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 29
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 26
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 59
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 79
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 283
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const yytype_uint8 yyprhs[] =
+{
+ 0, 0, 3, 5, 6, 11, 12, 17, 19, 20,
+ 22, 25, 27, 31, 34, 38, 39, 41, 43, 45,
+ 48, 51, 55, 57, 60, 62, 64, 66, 71, 74,
+ 77, 79, 81, 86, 90, 92, 94, 96, 98, 100,
+ 102, 106, 112, 118, 122, 126, 128, 130, 132, 134,
+ 136, 138, 140, 142, 144, 145, 147, 151, 153, 157
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yytype_int8 yyrhs[] =
+{
+ 30, 0, -1, 37, -1, -1, 21, 32, 34, 14,
+ -1, -1, 13, 33, 34, 14, -1, 35, -1, -1,
+ 36, -1, 36, 6, -1, 39, -1, 36, 6, 39,
+ -1, 37, 38, -1, 37, 38, 6, -1, -1, 44,
+ -1, 31, -1, 39, -1, 47, 43, -1, 1, 6,
+ -1, 40, 7, 49, -1, 49, -1, 41, 49, -1,
+ 49, -1, 48, -1, 3, -1, 43, 8, 42, 40,
+ -1, 42, 40, -1, 43, 8, -1, 45, -1, 46,
+ -1, 17, 24, 20, 6, -1, 18, 20, 6, -1,
+ 51, -1, 53, -1, 51, -1, 51, -1, 53, -1,
+ 50, -1, 19, 4, 24, -1, 19, 4, 24, 5,
+ 20, -1, 19, 4, 24, 5, 23, -1, 19, 5,
+ 20, -1, 19, 5, 23, -1, 19, -1, 25, -1,
+ 26, -1, 27, -1, 15, -1, 16, -1, 20, -1,
+ 23, -1, 43, -1, -1, 22, -1, 9, 52, 10,
+ -1, 54, -1, 11, 41, 12, -1, 11, 12, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const yytype_uint16 yyrline[] =
+{
+ 0, 193, 193, 198, 197, 230, 229, 257, 258, 262,
+ 263, 266, 267, 270, 271, 272, 275, 276, 277, 280,
+ 321, 325, 365, 409, 449, 493, 503, 516, 577, 609,
+ 620, 620, 623, 660, 671, 675, 682, 689, 693, 697,
+ 710, 723, 747, 771, 788, 804, 816, 834, 852, 870,
+ 885, 903, 917, 934, 939, 944, 961, 1012, 1019, 1121
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "\"a\"", "\"@\"", "\"^\"", "\".\"",
+ "\",\"", "\";\"", "\"[\"", "\"]\"", "\"(\"", "\")\"", "\"{\"", "\"}\"",
+ "\"true\"", "\"false\"", "\"@prefix\"", "\"@base\"",
+ "\"string literal\"", "\"URI literal\"", "\"Graph URI literal {\"",
+ "\"blank node\"", "\"QName\"", "\"identifier\"", "\"integer literal\"",
+ "\"floating point literal\"", "\"decimal literal\"", "ERROR_TOKEN",
+ "$accept", "Document", "graph", "$@1", "$@2", "graphBody", "triplesList",
+ "dotTriplesList", "statementList", "statement", "triples", "objectList",
+ "itemList", "verb", "propertyList", "directive", "prefix", "base",
+ "subject", "predicate", "object", "literal", "resource",
+ "propertyListOpt", "blank", "collection", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const yytype_uint16 yytoknum[] =
+{
+ 0, 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
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 29, 30, 32, 31, 33, 31, 34, 34, 35,
+ 35, 36, 36, 37, 37, 37, 38, 38, 38, 39,
+ 39, 40, 40, 41, 41, 42, 42, 43, 43, 43,
+ 44, 44, 45, 46, 47, 47, 48, 49, 49, 49,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 51, 51, 52, 52, 53, 53, 53, 54, 54
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 1, 0, 4, 0, 4, 1, 0, 1,
+ 2, 1, 3, 2, 3, 0, 1, 1, 1, 2,
+ 2, 3, 1, 2, 1, 1, 1, 4, 2, 2,
+ 1, 1, 4, 3, 1, 1, 1, 1, 1, 1,
+ 3, 5, 5, 3, 3, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 0, 1, 3, 1, 3, 2
+};
+
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint8 yydefact[] =
+{
+ 15, 0, 0, 1, 0, 54, 0, 5, 0, 0,
+ 51, 3, 55, 52, 17, 13, 18, 16, 30, 31,
+ 0, 34, 35, 57, 20, 26, 0, 53, 25, 36,
+ 0, 59, 49, 50, 45, 46, 47, 48, 0, 24,
+ 39, 37, 38, 0, 0, 0, 0, 14, 19, 28,
+ 22, 29, 56, 0, 0, 58, 23, 0, 7, 9,
+ 11, 0, 33, 0, 0, 0, 40, 43, 44, 6,
+ 0, 32, 4, 21, 27, 0, 12, 41, 42
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int8 yydefgoto[] =
+{
+ -1, 1, 14, 46, 43, 57, 58, 59, 2, 15,
+ 60, 49, 38, 26, 27, 17, 18, 19, 20, 28,
+ 50, 40, 41, 30, 42, 23
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -15
+static const yytype_int8 yypact[] =
+{
+ -15, 10, 4, -15, 2, 8, 67, -15, -12, -6,
+ -15, -15, -15, -15, -15, 14, -15, -15, -15, -15,
+ 8, -15, -15, -15, -15, -15, 105, 15, -15, -15,
+ 22, -15, -15, -15, 25, -15, -15, -15, 86, -15,
+ -15, -15, -15, 37, 13, 28, 37, -15, 15, 29,
+ -15, 8, -15, 11, -14, -15, -15, 23, -15, 34,
+ -15, 41, -15, 36, 105, 105, 38, -15, -15, -15,
+ 52, -15, -15, -15, 29, -4, -15, -15, -15
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yytype_int8 yypgoto[] =
+{
+ -15, -15, -15, -15, -15, 6, -15, -15, -15, -15,
+ 0, -11, -15, 5, 35, -15, -15, -15, -15, -15,
+ 1, -15, -2, -15, -1, -15
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -11
+static const yytype_int8 yytable[] =
+{
+ 21, 22, 16, 29, -2, 4, 67, 39, 24, 68,
+ 3, 25, 44, 5, 45, 6, 77, 7, 29, 78,
+ 47, 8, 9, 51, 10, 11, 12, 13, 10, 53,
+ 54, 13, 52, 61, 62, 66, 64, 69, 4, 56,
+ 70, 21, 22, 75, 21, 22, 5, 71, 6, 29,
+ 72, -8, 63, 4, 74, 48, 65, 10, 0, 12,
+ 13, 5, 0, 6, 0, 73, -10, 0, 21, 22,
+ 76, 0, 10, 0, 12, 13, 5, 0, 6, 31,
+ 0, 0, 32, 33, 0, 0, 34, 10, 0, 12,
+ 13, 0, 35, 36, 37, 5, 0, 6, 55, 0,
+ 0, 32, 33, 0, 0, 34, 10, 0, 12, 13,
+ 0, 35, 36, 37, 5, 0, 6, 0, 0, 0,
+ 32, 33, 0, 0, 34, 10, 0, 12, 13, 0,
+ 35, 36, 37
+};
+
+#define yypact_value_is_default(yystate) \
+ ((yystate) == (-15))
+
+#define yytable_value_is_error(yytable_value) \
+ YYID (0)
+
+static const yytype_int8 yycheck[] =
+{
+ 2, 2, 2, 5, 0, 1, 20, 6, 6, 23,
+ 0, 3, 24, 9, 20, 11, 20, 13, 20, 23,
+ 6, 17, 18, 8, 20, 21, 22, 23, 20, 4,
+ 5, 23, 10, 20, 6, 24, 7, 14, 1, 38,
+ 6, 43, 43, 5, 46, 46, 9, 6, 11, 51,
+ 14, 14, 46, 1, 65, 20, 51, 20, -1, 22,
+ 23, 9, -1, 11, -1, 64, 14, -1, 70, 70,
+ 70, -1, 20, -1, 22, 23, 9, -1, 11, 12,
+ -1, -1, 15, 16, -1, -1, 19, 20, -1, 22,
+ 23, -1, 25, 26, 27, 9, -1, 11, 12, -1,
+ -1, 15, 16, -1, -1, 19, 20, -1, 22, 23,
+ -1, 25, 26, 27, 9, -1, 11, -1, -1, -1,
+ 15, 16, -1, -1, 19, 20, -1, 22, 23, -1,
+ 25, 26, 27
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint8 yystos[] =
+{
+ 0, 30, 37, 0, 1, 9, 11, 13, 17, 18,
+ 20, 21, 22, 23, 31, 38, 39, 44, 45, 46,
+ 47, 51, 53, 54, 6, 3, 42, 43, 48, 51,
+ 52, 12, 15, 16, 19, 25, 26, 27, 41, 49,
+ 50, 51, 53, 33, 24, 20, 32, 6, 43, 40,
+ 49, 8, 10, 4, 5, 12, 49, 34, 35, 36,
+ 39, 20, 6, 34, 7, 42, 24, 20, 23, 14,
+ 6, 6, 14, 49, 40, 5, 39, 20, 23
+};
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. However,
+ YYFAIL appears to be in use. Nevertheless, it is formally deprecated
+ in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+ discussed. */
+
+#define YYFAIL goto yyerrlab
+#if defined YYFAIL
+ /* This is here to suppress warnings from the GCC cpp's
+ -Wunused-macros. Normally we don't worry about that warning, but
+ some users do, and we want to make it easy for users to remove
+ YYFAIL uses, which will produce warnings from Bison 2.5. */
+#endif
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (rdf_parser, YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (0))
+
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (YYID (0))
+#endif
+
+
+/* This macro is provided for backward compatibility. */
+
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, YYLEX_PARAM)
+#else
+# define YYLEX yylex (&yylval)
+#endif
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value, rdf_parser); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, raptor_parser* rdf_parser)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep, rdf_parser)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+ raptor_parser* rdf_parser;
+#endif
+{
+ if (!yyvaluep)
+ return;
+ YYUSE (rdf_parser);
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, raptor_parser* rdf_parser)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep, rdf_parser)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+ raptor_parser* rdf_parser;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, rdf_parser);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+#else
+static void
+yy_stack_print (yybottom, yytop)
+ yytype_int16 *yybottom;
+ yytype_int16 *yytop;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule, raptor_parser* rdf_parser)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule, rdf_parser)
+ YYSTYPE *yyvsp;
+ int yyrule;
+ raptor_parser* rdf_parser;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ , rdf_parser);
+ YYFPRINTF (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule, rdf_parser); \
+} while (YYID (0))
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+#endif
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYSIZE_T yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
+
+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+{
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = 0;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ int yycount = 0;
+
+ /* There are many possibilities here to consider:
+ - Assume YYFAIL is not used. It's too flawed to consider. See
+ <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+ for details. YYERROR is fine as it does not invoke this
+ function.
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yytoken != YYEMPTY)
+ {
+ int yyn = yypact[*yyssp];
+ yyarg[yycount++] = yytname[yytoken];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
+
+ switch (yycount)
+ {
+# define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+ }
+
+ yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
+ }
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyformat += 2;
+ }
+ else
+ {
+ yyp++;
+ yyformat++;
+ }
+ }
+ return 0;
+}
+#endif /* YYERROR_VERBOSE */
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, raptor_parser* rdf_parser)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep, rdf_parser)
+ const char *yymsg;
+ int yytype;
+ YYSTYPE *yyvaluep;
+ raptor_parser* rdf_parser;
+#endif
+{
+ YYUSE (yyvaluep);
+ YYUSE (rdf_parser);
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ switch (yytype)
+ {
+ case 19: /* "\"string literal\"" */
+
+/* Line 1391 of yacc.c */
+#line 171 "./turtle_parser.y"
+ {
+ if((yyvaluep->string))
+ RAPTOR_FREE(char*, (yyvaluep->string));
+};
+
+/* Line 1391 of yacc.c */
+#line 1293 "turtle_parser.c"
+ break;
+ case 20: /* "\"URI literal\"" */
+
+/* Line 1391 of yacc.c */
+#line 176 "./turtle_parser.y"
+ {
+ if((yyvaluep->uri))
+ raptor_free_uri((yyvaluep->uri));
+};
+
+/* Line 1391 of yacc.c */
+#line 1305 "turtle_parser.c"
+ break;
+ case 22: /* "\"blank node\"" */
+
+/* Line 1391 of yacc.c */
+#line 171 "./turtle_parser.y"
+ {
+ if((yyvaluep->string))
+ RAPTOR_FREE(char*, (yyvaluep->string));
+};
+
+/* Line 1391 of yacc.c */
+#line 1317 "turtle_parser.c"
+ break;
+ case 23: /* "\"QName\"" */
+
+/* Line 1391 of yacc.c */
+#line 176 "./turtle_parser.y"
+ {
+ if((yyvaluep->uri))
+ raptor_free_uri((yyvaluep->uri));
+};
+
+/* Line 1391 of yacc.c */
+#line 1329 "turtle_parser.c"
+ break;
+ case 24: /* "\"identifier\"" */
+
+/* Line 1391 of yacc.c */
+#line 171 "./turtle_parser.y"
+ {
+ if((yyvaluep->string))
+ RAPTOR_FREE(char*, (yyvaluep->string));
+};
+
+/* Line 1391 of yacc.c */
+#line 1341 "turtle_parser.c"
+ break;
+ case 25: /* "\"integer literal\"" */
+
+/* Line 1391 of yacc.c */
+#line 171 "./turtle_parser.y"
+ {
+ if((yyvaluep->string))
+ RAPTOR_FREE(char*, (yyvaluep->string));
+};
+
+/* Line 1391 of yacc.c */
+#line 1353 "turtle_parser.c"
+ break;
+ case 26: /* "\"floating point literal\"" */
+
+/* Line 1391 of yacc.c */
+#line 171 "./turtle_parser.y"
+ {
+ if((yyvaluep->string))
+ RAPTOR_FREE(char*, (yyvaluep->string));
+};
+
+/* Line 1391 of yacc.c */
+#line 1365 "turtle_parser.c"
+ break;
+ case 27: /* "\"decimal literal\"" */
+
+/* Line 1391 of yacc.c */
+#line 171 "./turtle_parser.y"
+ {
+ if((yyvaluep->string))
+ RAPTOR_FREE(char*, (yyvaluep->string));
+};
+
+/* Line 1391 of yacc.c */
+#line 1377 "turtle_parser.c"
+ break;
+ case 40: /* "objectList" */
+
+/* Line 1391 of yacc.c */
+#line 186 "./turtle_parser.y"
+ {
+ if((yyvaluep->sequence))
+ raptor_free_sequence((yyvaluep->sequence));
+};
+
+/* Line 1391 of yacc.c */
+#line 1389 "turtle_parser.c"
+ break;
+ case 41: /* "itemList" */
+
+/* Line 1391 of yacc.c */
+#line 186 "./turtle_parser.y"
+ {
+ if((yyvaluep->sequence))
+ raptor_free_sequence((yyvaluep->sequence));
+};
+
+/* Line 1391 of yacc.c */
+#line 1401 "turtle_parser.c"
+ break;
+ case 42: /* "verb" */
+
+/* Line 1391 of yacc.c */
+#line 181 "./turtle_parser.y"
+ {
+ if((yyvaluep->identifier))
+ raptor_free_term((yyvaluep->identifier));
+};
+
+/* Line 1391 of yacc.c */
+#line 1413 "turtle_parser.c"
+ break;
+ case 43: /* "propertyList" */
+
+/* Line 1391 of yacc.c */
+#line 186 "./turtle_parser.y"
+ {
+ if((yyvaluep->sequence))
+ raptor_free_sequence((yyvaluep->sequence));
+};
+
+/* Line 1391 of yacc.c */
+#line 1425 "turtle_parser.c"
+ break;
+ case 47: /* "subject" */
+
+/* Line 1391 of yacc.c */
+#line 181 "./turtle_parser.y"
+ {
+ if((yyvaluep->identifier))
+ raptor_free_term((yyvaluep->identifier));
+};
+
+/* Line 1391 of yacc.c */
+#line 1437 "turtle_parser.c"
+ break;
+ case 48: /* "predicate" */
+
+/* Line 1391 of yacc.c */
+#line 181 "./turtle_parser.y"
+ {
+ if((yyvaluep->identifier))
+ raptor_free_term((yyvaluep->identifier));
+};
+
+/* Line 1391 of yacc.c */
+#line 1449 "turtle_parser.c"
+ break;
+ case 49: /* "object" */
+
+/* Line 1391 of yacc.c */
+#line 181 "./turtle_parser.y"
+ {
+ if((yyvaluep->identifier))
+ raptor_free_term((yyvaluep->identifier));
+};
+
+/* Line 1391 of yacc.c */
+#line 1461 "turtle_parser.c"
+ break;
+ case 50: /* "literal" */
+
+/* Line 1391 of yacc.c */
+#line 181 "./turtle_parser.y"
+ {
+ if((yyvaluep->identifier))
+ raptor_free_term((yyvaluep->identifier));
+};
+
+/* Line 1391 of yacc.c */
+#line 1473 "turtle_parser.c"
+ break;
+ case 51: /* "resource" */
+
+/* Line 1391 of yacc.c */
+#line 181 "./turtle_parser.y"
+ {
+ if((yyvaluep->identifier))
+ raptor_free_term((yyvaluep->identifier));
+};
+
+/* Line 1391 of yacc.c */
+#line 1485 "turtle_parser.c"
+ break;
+ case 52: /* "propertyListOpt" */
+
+/* Line 1391 of yacc.c */
+#line 186 "./turtle_parser.y"
+ {
+ if((yyvaluep->sequence))
+ raptor_free_sequence((yyvaluep->sequence));
+};
+
+/* Line 1391 of yacc.c */
+#line 1497 "turtle_parser.c"
+ break;
+ case 53: /* "blank" */
+
+/* Line 1391 of yacc.c */
+#line 181 "./turtle_parser.y"
+ {
+ if((yyvaluep->identifier))
+ raptor_free_term((yyvaluep->identifier));
+};
+
+/* Line 1391 of yacc.c */
+#line 1509 "turtle_parser.c"
+ break;
+ case 54: /* "collection" */
+
+/* Line 1391 of yacc.c */
+#line 181 "./turtle_parser.y"
+ {
+ if((yyvaluep->identifier))
+ raptor_free_term((yyvaluep->identifier));
+};
+
+/* Line 1391 of yacc.c */
+#line 1521 "turtle_parser.c"
+ break;
+
+ default:
+ break;
+ }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes. */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (raptor_parser* rdf_parser);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (raptor_parser* rdf_parser)
+#else
+int
+yyparse (rdf_parser)
+ raptor_parser* rdf_parser;
+#endif
+#endif
+{
+/* The lookahead symbol. */
+int yychar;
+
+/* The semantic value of the lookahead symbol. */
+YYSTYPE yylval;
+
+ /* Number of syntax errors so far. */
+ int yynerrs;
+
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+
+ /* The stacks and their tools:
+ `yyss': related to states.
+ `yyvs': related to semantic values.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
+
+ YYSIZE_T yystacksize;
+
+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken;
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ yytoken = 0;
+ yyss = yyssa;
+ yyvs = yyvsa;
+ yystacksize = YYINITDEPTH;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+ yyssp = yyss;
+ yyvsp = yyvs;
+
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+ /* Do appropriate processing given the current state. Read a
+ lookahead token if we need one and don't already have one. */
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+ if (yypact_value_is_default (yyn))
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the lookahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 3:
+
+/* Line 1806 of yacc.c */
+#line 198 "./turtle_parser.y"
+ {
+ /* action in mid-rule so this is run BEFORE the triples in graphBody */
+ raptor_parser* parser = (raptor_parser *)rdf_parser;
+ raptor_turtle_parser* turtle_parser;
+
+ turtle_parser = (raptor_turtle_parser*)parser->context;
+ if(!turtle_parser->trig)
+ turtle_parser_error(rdf_parser, "{ ... } is not allowed in Turtle");
+ else {
+ if(turtle_parser->graph_name)
+ raptor_free_term(turtle_parser->graph_name);
+ turtle_parser->graph_name = raptor_new_term_from_uri(((raptor_parser*)rdf_parser)->world, (yyvsp[(1) - (1)].uri));
+ raptor_free_uri((yyvsp[(1) - (1)].uri));
+ raptor_parser_start_graph(parser, turtle_parser->graph_name->value.uri, 1);
+ }
+ }
+ break;
+
+ case 4:
+
+/* Line 1806 of yacc.c */
+#line 215 "./turtle_parser.y"
+ {
+ raptor_parser* parser = (raptor_parser *)rdf_parser;
+ raptor_turtle_parser* turtle_parser;
+
+ turtle_parser = (raptor_turtle_parser*)parser->context;
+
+ if(turtle_parser->trig) {
+ raptor_parser_end_graph(parser, turtle_parser->graph_name->value.uri, 1);
+ raptor_free_term(turtle_parser->graph_name);
+ turtle_parser->graph_name = NULL;
+ parser->emitted_default_graph = 0;
+ }
+}
+ break;
+
+ case 5:
+
+/* Line 1806 of yacc.c */
+#line 230 "./turtle_parser.y"
+ {
+ /* action in mid-rule so this is run BEFORE the triples in graphBody */
+ raptor_parser* parser = (raptor_parser *)rdf_parser;
+ raptor_turtle_parser* turtle_parser;
+
+ turtle_parser = (raptor_turtle_parser*)parser->context;
+ if(!turtle_parser->trig)
+ turtle_parser_error(rdf_parser, "{ ... } is not allowed in Turtle");
+ else {
+ raptor_parser_start_graph(parser, NULL, 1);
+ parser->emitted_default_graph++;
+ }
+ }
+ break;
+
+ case 6:
+
+/* Line 1806 of yacc.c */
+#line 244 "./turtle_parser.y"
+ {
+ raptor_parser* parser = (raptor_parser *)rdf_parser;
+ raptor_turtle_parser* turtle_parser;
+
+ turtle_parser = (raptor_turtle_parser*)parser->context;
+ if(turtle_parser->trig) {
+ raptor_parser_end_graph(parser, NULL, 1);
+ parser->emitted_default_graph = 0;
+ }
+}
+ break;
+
+ case 19:
+
+/* Line 1806 of yacc.c */
+#line 281 "./turtle_parser.y"
+ {
+ int i;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("statement 2\n subject=");
+ if((yyvsp[(1) - (2)].identifier))
+ raptor_term_print_as_ntriples((yyvsp[(1) - (2)].identifier), stdout);
+ else
+ fputs("NULL", stdout);
+ if((yyvsp[(2) - (2)].sequence)) {
+ printf("\n propertyList (reverse order to syntax)=");
+ raptor_sequence_print((yyvsp[(2) - (2)].sequence), stdout);
+ printf("\n");
+ } else
+ printf("\n and empty propertyList\n");
+#endif
+
+ if((yyvsp[(1) - (2)].identifier) && (yyvsp[(2) - (2)].sequence)) {
+ /* have subject and non-empty property list, handle it */
+ for(i = 0; i < raptor_sequence_size((yyvsp[(2) - (2)].sequence)); i++) {
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_get_at((yyvsp[(2) - (2)].sequence), i);
+ t2->subject = raptor_term_copy((yyvsp[(1) - (2)].identifier));
+ }
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" after substitution propertyList=");
+ raptor_sequence_print((yyvsp[(2) - (2)].sequence), stdout);
+ printf("\n\n");
+#endif
+ for(i = 0; i < raptor_sequence_size((yyvsp[(2) - (2)].sequence)); i++) {
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_get_at((yyvsp[(2) - (2)].sequence), i);
+ raptor_turtle_generate_statement((raptor_parser*)rdf_parser, t2);
+ }
+ }
+
+ if((yyvsp[(2) - (2)].sequence))
+ raptor_free_sequence((yyvsp[(2) - (2)].sequence));
+
+ if((yyvsp[(1) - (2)].identifier))
+ raptor_free_term((yyvsp[(1) - (2)].identifier));
+}
+ break;
+
+ case 21:
+
+/* Line 1806 of yacc.c */
+#line 326 "./turtle_parser.y"
+ {
+ raptor_statement *triple;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("objectList 1\n");
+ if((yyvsp[(3) - (3)].identifier)) {
+ printf(" object=\n");
+ raptor_term_print_as_ntriples((yyvsp[(3) - (3)].identifier), stdout);
+ printf("\n");
+ } else
+ printf(" and empty object\n");
+ if((yyvsp[(1) - (3)].sequence)) {
+ printf(" objectList=");
+ raptor_sequence_print((yyvsp[(1) - (3)].sequence), stdout);
+ printf("\n");
+ } else
+ printf(" and empty objectList\n");
+#endif
+
+ if(!(yyvsp[(3) - (3)].identifier))
+ (yyval.sequence) = NULL;
+ else {
+ triple = raptor_new_statement_from_nodes(((raptor_parser*)rdf_parser)->world, NULL, NULL, (yyvsp[(3) - (3)].identifier), NULL);
+ if(!triple) {
+ raptor_free_sequence((yyvsp[(1) - (3)].sequence));
+ YYERROR;
+ }
+ if(raptor_sequence_push((yyvsp[(1) - (3)].sequence), triple)) {
+ raptor_free_sequence((yyvsp[(1) - (3)].sequence));
+ YYERROR;
+ }
+ (yyval.sequence) = (yyvsp[(1) - (3)].sequence);
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" objectList is now ");
+ raptor_sequence_print((yyval.sequence), stdout);
+ printf("\n\n");
+#endif
+ }
+}
+ break;
+
+ case 22:
+
+/* Line 1806 of yacc.c */
+#line 366 "./turtle_parser.y"
+ {
+ raptor_statement *triple;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("objectList 2\n");
+ if((yyvsp[(1) - (1)].identifier)) {
+ printf(" object=\n");
+ raptor_term_print_as_ntriples((yyvsp[(1) - (1)].identifier), stdout);
+ printf("\n");
+ } else
+ printf(" and empty object\n");
+#endif
+
+ if(!(yyvsp[(1) - (1)].identifier))
+ (yyval.sequence) = NULL;
+ else {
+ triple = raptor_new_statement_from_nodes(((raptor_parser*)rdf_parser)->world, NULL, NULL, (yyvsp[(1) - (1)].identifier), NULL);
+ if(!triple)
+ YYERROR;
+#ifdef RAPTOR_DEBUG
+ (yyval.sequence) = raptor_new_sequence((raptor_data_free_handler)raptor_free_statement,
+ (raptor_data_print_handler)raptor_statement_print);
+#else
+ (yyval.sequence) = raptor_new_sequence((raptor_data_free_handler)raptor_free_statement, NULL);
+#endif
+ if(!(yyval.sequence)) {
+ raptor_free_statement(triple);
+ YYERROR;
+ }
+ if(raptor_sequence_push((yyval.sequence), triple)) {
+ raptor_free_sequence((yyval.sequence));
+ (yyval.sequence) = NULL;
+ YYERROR;
+ }
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" objectList is now ");
+ raptor_sequence_print((yyval.sequence), stdout);
+ printf("\n\n");
+#endif
+ }
+}
+ break;
+
+ case 23:
+
+/* Line 1806 of yacc.c */
+#line 410 "./turtle_parser.y"
+ {
+ raptor_statement *triple;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("objectList 1\n");
+ if((yyvsp[(2) - (2)].identifier)) {
+ printf(" object=\n");
+ raptor_term_print_as_ntriples((yyvsp[(2) - (2)].identifier), stdout);
+ printf("\n");
+ } else
+ printf(" and empty object\n");
+ if((yyvsp[(1) - (2)].sequence)) {
+ printf(" objectList=");
+ raptor_sequence_print((yyvsp[(1) - (2)].sequence), stdout);
+ printf("\n");
+ } else
+ printf(" and empty objectList\n");
+#endif
+
+ if(!(yyvsp[(2) - (2)].identifier))
+ (yyval.sequence) = NULL;
+ else {
+ triple = raptor_new_statement_from_nodes(((raptor_parser*)rdf_parser)->world, NULL, NULL, (yyvsp[(2) - (2)].identifier), NULL);
+ if(!triple) {
+ raptor_free_sequence((yyvsp[(1) - (2)].sequence));
+ YYERROR;
+ }
+ if(raptor_sequence_push((yyvsp[(1) - (2)].sequence), triple)) {
+ raptor_free_sequence((yyvsp[(1) - (2)].sequence));
+ YYERROR;
+ }
+ (yyval.sequence) = (yyvsp[(1) - (2)].sequence);
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" objectList is now ");
+ raptor_sequence_print((yyval.sequence), stdout);
+ printf("\n\n");
+#endif
+ }
+}
+ break;
+
+ case 24:
+
+/* Line 1806 of yacc.c */
+#line 450 "./turtle_parser.y"
+ {
+ raptor_statement *triple;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("objectList 2\n");
+ if((yyvsp[(1) - (1)].identifier)) {
+ printf(" object=\n");
+ raptor_term_print_as_ntriples((yyvsp[(1) - (1)].identifier), stdout);
+ printf("\n");
+ } else
+ printf(" and empty object\n");
+#endif
+
+ if(!(yyvsp[(1) - (1)].identifier))
+ (yyval.sequence) = NULL;
+ else {
+ triple = raptor_new_statement_from_nodes(((raptor_parser*)rdf_parser)->world, NULL, NULL, (yyvsp[(1) - (1)].identifier), NULL);
+ if(!triple)
+ YYERROR;
+#ifdef RAPTOR_DEBUG
+ (yyval.sequence) = raptor_new_sequence((raptor_data_free_handler)raptor_free_statement,
+ (raptor_data_print_handler)raptor_statement_print);
+#else
+ (yyval.sequence) = raptor_new_sequence((raptor_data_free_handler)raptor_free_statement, NULL);
+#endif
+ if(!(yyval.sequence)) {
+ raptor_free_statement(triple);
+ YYERROR;
+ }
+ if(raptor_sequence_push((yyval.sequence), triple)) {
+ raptor_free_sequence((yyval.sequence));
+ (yyval.sequence) = NULL;
+ YYERROR;
+ }
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" objectList is now ");
+ raptor_sequence_print((yyval.sequence), stdout);
+ printf("\n\n");
+#endif
+ }
+}
+ break;
+
+ case 25:
+
+/* Line 1806 of yacc.c */
+#line 494 "./turtle_parser.y"
+ {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("verb predicate=");
+ raptor_term_print_as_ntriples((yyvsp[(1) - (1)].identifier), stdout);
+ printf("\n");
+#endif
+
+ (yyval.identifier) = (yyvsp[(1) - (1)].identifier);
+}
+ break;
+
+ case 26:
+
+/* Line 1806 of yacc.c */
+#line 504 "./turtle_parser.y"
+ {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("verb predicate = rdf:type (a)\n");
+#endif
+
+ (yyval.identifier) = raptor_term_copy(RAPTOR_RDF_type_term(((raptor_parser*)rdf_parser)->world));
+ if(!(yyval.identifier))
+ YYERROR;
+}
+ break;
+
+ case 27:
+
+/* Line 1806 of yacc.c */
+#line 517 "./turtle_parser.y"
+ {
+ int i;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("propertyList 1\n verb=");
+ raptor_term_print_as_ntriples((yyvsp[(3) - (4)].identifier), stdout);
+ printf("\n objectList=");
+ raptor_sequence_print((yyvsp[(4) - (4)].sequence), stdout);
+ printf("\n propertyList=");
+ raptor_sequence_print((yyvsp[(1) - (4)].sequence), stdout);
+ printf("\n\n");
+#endif
+
+ if((yyvsp[(4) - (4)].sequence) == NULL) {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" empty objectList not processed\n");
+#endif
+ } else if((yyvsp[(3) - (4)].identifier) && (yyvsp[(4) - (4)].sequence)) {
+ /* non-empty property list, handle it */
+ for(i = 0; i < raptor_sequence_size((yyvsp[(4) - (4)].sequence)); i++) {
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_get_at((yyvsp[(4) - (4)].sequence), i);
+ t2->predicate = raptor_term_copy((yyvsp[(3) - (4)].identifier));
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" after substitution objectList=");
+ raptor_sequence_print((yyvsp[(4) - (4)].sequence), stdout);
+ printf("\n");
+#endif
+ }
+
+ if((yyvsp[(1) - (4)].sequence) == NULL) {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" empty propertyList not copied\n\n");
+#endif
+ } else if((yyvsp[(3) - (4)].identifier) && (yyvsp[(4) - (4)].sequence) && (yyvsp[(1) - (4)].sequence)) {
+ while(raptor_sequence_size((yyvsp[(4) - (4)].sequence))) {
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_unshift((yyvsp[(4) - (4)].sequence));
+ if(raptor_sequence_push((yyvsp[(1) - (4)].sequence), t2)) {
+ raptor_free_sequence((yyvsp[(1) - (4)].sequence));
+ raptor_free_term((yyvsp[(3) - (4)].identifier));
+ raptor_free_sequence((yyvsp[(4) - (4)].sequence));
+ YYERROR;
+ }
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" after appending objectList (reverse order)=");
+ raptor_sequence_print((yyvsp[(1) - (4)].sequence), stdout);
+ printf("\n\n");
+#endif
+
+ raptor_free_sequence((yyvsp[(4) - (4)].sequence));
+ }
+
+ if((yyvsp[(3) - (4)].identifier))
+ raptor_free_term((yyvsp[(3) - (4)].identifier));
+
+ (yyval.sequence) = (yyvsp[(1) - (4)].sequence);
+}
+ break;
+
+ case 28:
+
+/* Line 1806 of yacc.c */
+#line 578 "./turtle_parser.y"
+ {
+ int i;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("propertyList 2\n verb=");
+ raptor_term_print_as_ntriples((yyvsp[(1) - (2)].identifier), stdout);
+ if((yyvsp[(2) - (2)].sequence)) {
+ printf("\n objectList=");
+ raptor_sequence_print((yyvsp[(2) - (2)].sequence), stdout);
+ printf("\n");
+ } else
+ printf("\n and empty objectList\n");
+#endif
+
+ if((yyvsp[(1) - (2)].identifier) && (yyvsp[(2) - (2)].sequence)) {
+ for(i = 0; i < raptor_sequence_size((yyvsp[(2) - (2)].sequence)); i++) {
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_get_at((yyvsp[(2) - (2)].sequence), i);
+ t2->predicate = raptor_term_copy((yyvsp[(1) - (2)].identifier));
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" after substitution objectList=");
+ raptor_sequence_print((yyvsp[(2) - (2)].sequence), stdout);
+ printf("\n\n");
+#endif
+ }
+
+ if((yyvsp[(1) - (2)].identifier))
+ raptor_free_term((yyvsp[(1) - (2)].identifier));
+
+ (yyval.sequence) = (yyvsp[(2) - (2)].sequence);
+}
+ break;
+
+ case 29:
+
+/* Line 1806 of yacc.c */
+#line 610 "./turtle_parser.y"
+ {
+ (yyval.sequence) = (yyvsp[(1) - (2)].sequence);
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("propertyList 5\n trailing semicolon returning existing list ");
+ raptor_sequence_print((yyval.sequence), stdout);
+ printf("\n\n");
+#endif
+}
+ break;
+
+ case 32:
+
+/* Line 1806 of yacc.c */
+#line 624 "./turtle_parser.y"
+ {
+ unsigned char *prefix = (yyvsp[(2) - (4)].string);
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)(((raptor_parser*)rdf_parser)->context);
+ raptor_namespace *ns;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("directive @prefix %s %s\n",((yyvsp[(2) - (4)].string) ? (char*)(yyvsp[(2) - (4)].string) : "(default)"), raptor_uri_as_string((yyvsp[(3) - (4)].uri)));
+#endif
+
+ if(prefix) {
+ size_t len = strlen((const char*)prefix);
+ if(prefix[len-1] == ':') {
+ if(len == 1)
+ /* declaring default namespace prefix @prefix : ... */
+ prefix = NULL;
+ else
+ prefix[len-1]='\0';
+ }
+ }
+
+ ns = raptor_new_namespace_from_uri(&turtle_parser->namespaces, prefix, (yyvsp[(3) - (4)].uri), 0);
+ if(ns) {
+ raptor_namespaces_start_namespace(&turtle_parser->namespaces, ns);
+ raptor_parser_start_namespace((raptor_parser*)rdf_parser, ns);
+ }
+
+ if((yyvsp[(2) - (4)].string))
+ RAPTOR_FREE(char*, (yyvsp[(2) - (4)].string));
+ raptor_free_uri((yyvsp[(3) - (4)].uri));
+
+ if(!ns)
+ YYERROR;
+}
+ break;
+
+ case 33:
+
+/* Line 1806 of yacc.c */
+#line 661 "./turtle_parser.y"
+ {
+ raptor_uri *uri=(yyvsp[(2) - (3)].uri);
+ /*raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)(((raptor_parser*)rdf_parser)->context);*/
+ raptor_parser* parser = (raptor_parser*)rdf_parser;
+ if(parser->base_uri)
+ raptor_free_uri(parser->base_uri);
+ parser->base_uri = uri;
+}
+ break;
+
+ case 34:
+
+/* Line 1806 of yacc.c */
+#line 672 "./turtle_parser.y"
+ {
+ (yyval.identifier) = (yyvsp[(1) - (1)].identifier);
+}
+ break;
+
+ case 35:
+
+/* Line 1806 of yacc.c */
+#line 676 "./turtle_parser.y"
+ {
+ (yyval.identifier) = (yyvsp[(1) - (1)].identifier);
+}
+ break;
+
+ case 36:
+
+/* Line 1806 of yacc.c */
+#line 683 "./turtle_parser.y"
+ {
+ (yyval.identifier) = (yyvsp[(1) - (1)].identifier);
+}
+ break;
+
+ case 37:
+
+/* Line 1806 of yacc.c */
+#line 690 "./turtle_parser.y"
+ {
+ (yyval.identifier) = (yyvsp[(1) - (1)].identifier);
+}
+ break;
+
+ case 38:
+
+/* Line 1806 of yacc.c */
+#line 694 "./turtle_parser.y"
+ {
+ (yyval.identifier) = (yyvsp[(1) - (1)].identifier);
+}
+ break;
+
+ case 39:
+
+/* Line 1806 of yacc.c */
+#line 698 "./turtle_parser.y"
+ {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("object literal=");
+ raptor_term_print_as_ntriples((yyvsp[(1) - (1)].identifier), stdout);
+ printf("\n");
+#endif
+
+ (yyval.identifier) = (yyvsp[(1) - (1)].identifier);
+}
+ break;
+
+ case 40:
+
+/* Line 1806 of yacc.c */
+#line 711 "./turtle_parser.y"
+ {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("literal + language string=\"%s\"\n", (yyvsp[(1) - (3)].string));
+#endif
+
+ (yyval.identifier) = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (yyvsp[(1) - (3)].string), NULL, (yyvsp[(3) - (3)].string));
+ RAPTOR_FREE(char*, (yyvsp[(1) - (3)].string));
+ RAPTOR_FREE(char*, (yyvsp[(3) - (3)].string));
+ if(!(yyval.identifier))
+ YYERROR;
+}
+ break;
+
+ case 41:
+
+/* Line 1806 of yacc.c */
+#line 724 "./turtle_parser.y"
+ {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("literal + language=\"%s\" datatype string=\"%s\" uri=\"%s\"\n", (yyvsp[(1) - (5)].string), (yyvsp[(3) - (5)].string), raptor_uri_as_string((yyvsp[(5) - (5)].uri)));
+#endif
+
+ if((yyvsp[(5) - (5)].uri)) {
+ if((yyvsp[(3) - (5)].string)) {
+ raptor_parser_warning((raptor_parser*)rdf_parser,
+ "Ignoring language used with datatyped literal");
+ RAPTOR_FREE(char*, (yyvsp[(3) - (5)].string));
+ (yyvsp[(3) - (5)].string) = NULL;
+ }
+
+ (yyval.identifier) = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (yyvsp[(1) - (5)].string), (yyvsp[(5) - (5)].uri), NULL);
+ RAPTOR_FREE(char*, (yyvsp[(1) - (5)].string));
+ raptor_free_uri((yyvsp[(5) - (5)].uri));
+ if(!(yyval.identifier))
+ YYERROR;
+ } else
+ (yyval.identifier) = NULL;
+
+}
+ break;
+
+ case 42:
+
+/* Line 1806 of yacc.c */
+#line 748 "./turtle_parser.y"
+ {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("literal + language=\"%s\" datatype string=\"%s\" qname URI=<%s>\n", (yyvsp[(1) - (5)].string), (yyvsp[(3) - (5)].string), raptor_uri_as_string((yyvsp[(5) - (5)].uri)));
+#endif
+
+ if((yyvsp[(5) - (5)].uri)) {
+ if((yyvsp[(3) - (5)].string)) {
+ raptor_parser_warning((raptor_parser*)rdf_parser,
+ "Ignoring language used with datatyped literal");
+ RAPTOR_FREE(char*, (yyvsp[(3) - (5)].string));
+ (yyvsp[(3) - (5)].string) = NULL;
+ }
+
+ (yyval.identifier) = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (yyvsp[(1) - (5)].string), (yyvsp[(5) - (5)].uri), NULL);
+ RAPTOR_FREE(char*, (yyvsp[(1) - (5)].string));
+ raptor_free_uri((yyvsp[(5) - (5)].uri));
+ if(!(yyval.identifier))
+ YYERROR;
+ } else
+ (yyval.identifier) = NULL;
+
+}
+ break;
+
+ case 43:
+
+/* Line 1806 of yacc.c */
+#line 772 "./turtle_parser.y"
+ {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("literal + datatype string=\"%s\" uri=\"%s\"\n", (yyvsp[(1) - (3)].string), raptor_uri_as_string((yyvsp[(3) - (3)].uri)));
+#endif
+
+ if((yyvsp[(3) - (3)].uri)) {
+ (yyval.identifier) = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (yyvsp[(1) - (3)].string), (yyvsp[(3) - (3)].uri), NULL);
+ RAPTOR_FREE(char*, (yyvsp[(1) - (3)].string));
+ raptor_free_uri((yyvsp[(3) - (3)].uri));
+ if(!(yyval.identifier))
+ YYERROR;
+ } else
+ (yyval.identifier) = NULL;
+
+}
+ break;
+
+ case 44:
+
+/* Line 1806 of yacc.c */
+#line 789 "./turtle_parser.y"
+ {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("literal + datatype string=\"%s\" qname URI=<%s>\n", (yyvsp[(1) - (3)].string), raptor_uri_as_string((yyvsp[(3) - (3)].uri)));
+#endif
+
+ if((yyvsp[(3) - (3)].uri)) {
+ (yyval.identifier) = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (yyvsp[(1) - (3)].string), (yyvsp[(3) - (3)].uri), NULL);
+ RAPTOR_FREE(char*, (yyvsp[(1) - (3)].string));
+ raptor_free_uri((yyvsp[(3) - (3)].uri));
+ if(!(yyval.identifier))
+ YYERROR;
+ } else
+ (yyval.identifier) = NULL;
+}
+ break;
+
+ case 45:
+
+/* Line 1806 of yacc.c */
+#line 805 "./turtle_parser.y"
+ {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("literal string=\"%s\"\n", (yyvsp[(1) - (1)].string));
+#endif
+
+ (yyval.identifier) = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (yyvsp[(1) - (1)].string), NULL, NULL);
+ RAPTOR_FREE(char*, (yyvsp[(1) - (1)].string));
+ if(!(yyval.identifier))
+ YYERROR;
+}
+ break;
+
+ case 46:
+
+/* Line 1806 of yacc.c */
+#line 817 "./turtle_parser.y"
+ {
+ raptor_uri *uri;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource integer=%s\n", (yyvsp[(1) - (1)].string));
+#endif
+ uri = raptor_new_uri(((raptor_parser*)rdf_parser)->world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#integer");
+ if(!uri) {
+ RAPTOR_FREE(char*, (yyvsp[(1) - (1)].string));
+ YYERROR;
+ }
+ (yyval.identifier) = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (yyvsp[(1) - (1)].string), uri, NULL);
+ RAPTOR_FREE(char*, (yyvsp[(1) - (1)].string));
+ raptor_free_uri(uri);
+ if(!(yyval.identifier))
+ YYERROR;
+}
+ break;
+
+ case 47:
+
+/* Line 1806 of yacc.c */
+#line 835 "./turtle_parser.y"
+ {
+ raptor_uri *uri;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource double=%s\n", (yyvsp[(1) - (1)].string));
+#endif
+ uri = raptor_new_uri(((raptor_parser*)rdf_parser)->world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#double");
+ if(!uri) {
+ RAPTOR_FREE(char*, (yyvsp[(1) - (1)].string));
+ YYERROR;
+ }
+ (yyval.identifier) = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (yyvsp[(1) - (1)].string), uri, NULL);
+ RAPTOR_FREE(char*, (yyvsp[(1) - (1)].string));
+ raptor_free_uri(uri);
+ if(!(yyval.identifier))
+ YYERROR;
+}
+ break;
+
+ case 48:
+
+/* Line 1806 of yacc.c */
+#line 853 "./turtle_parser.y"
+ {
+ raptor_uri *uri;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource decimal=%s\n", (yyvsp[(1) - (1)].string));
+#endif
+ uri = raptor_new_uri(((raptor_parser*)rdf_parser)->world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#decimal");
+ if(!uri) {
+ RAPTOR_FREE(char*, (yyvsp[(1) - (1)].string));
+ YYERROR;
+ }
+ (yyval.identifier) = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (yyvsp[(1) - (1)].string), uri, NULL);
+ RAPTOR_FREE(char*, (yyvsp[(1) - (1)].string));
+ raptor_free_uri(uri);
+ if(!(yyval.identifier))
+ YYERROR;
+}
+ break;
+
+ case 49:
+
+/* Line 1806 of yacc.c */
+#line 871 "./turtle_parser.y"
+ {
+ raptor_uri *uri;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fputs("resource boolean true\n", stderr);
+#endif
+ uri = raptor_new_uri(((raptor_parser*)rdf_parser)->world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#boolean");
+ if(!uri)
+ YYERROR;
+ (yyval.identifier) = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (const unsigned char*)"true", uri, NULL);
+ raptor_free_uri(uri);
+ if(!(yyval.identifier))
+ YYERROR;
+}
+ break;
+
+ case 50:
+
+/* Line 1806 of yacc.c */
+#line 886 "./turtle_parser.y"
+ {
+ raptor_uri *uri;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fputs("resource boolean false\n", stderr);
+#endif
+ uri = raptor_new_uri(((raptor_parser*)rdf_parser)->world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#boolean");
+ if(!uri)
+ YYERROR;
+ (yyval.identifier) = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (const unsigned char*)"false", uri, NULL);
+ raptor_free_uri(uri);
+ if(!(yyval.identifier))
+ YYERROR;
+}
+ break;
+
+ case 51:
+
+/* Line 1806 of yacc.c */
+#line 904 "./turtle_parser.y"
+ {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource URI=<%s>\n", raptor_uri_as_string((yyvsp[(1) - (1)].uri)));
+#endif
+
+ if((yyvsp[(1) - (1)].uri)) {
+ (yyval.identifier) = raptor_new_term_from_uri(((raptor_parser*)rdf_parser)->world, (yyvsp[(1) - (1)].uri));
+ raptor_free_uri((yyvsp[(1) - (1)].uri));
+ if(!(yyval.identifier))
+ YYERROR;
+ } else
+ (yyval.identifier) = NULL;
+}
+ break;
+
+ case 52:
+
+/* Line 1806 of yacc.c */
+#line 918 "./turtle_parser.y"
+ {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource qname URI=<%s>\n", raptor_uri_as_string((yyvsp[(1) - (1)].uri)));
+#endif
+
+ if((yyvsp[(1) - (1)].uri)) {
+ (yyval.identifier) = raptor_new_term_from_uri(((raptor_parser*)rdf_parser)->world, (yyvsp[(1) - (1)].uri));
+ raptor_free_uri((yyvsp[(1) - (1)].uri));
+ if(!(yyval.identifier))
+ YYERROR;
+ } else
+ (yyval.identifier) = NULL;
+}
+ break;
+
+ case 53:
+
+/* Line 1806 of yacc.c */
+#line 935 "./turtle_parser.y"
+ {
+ (yyval.sequence) = (yyvsp[(1) - (1)].sequence);
+}
+ break;
+
+ case 54:
+
+/* Line 1806 of yacc.c */
+#line 939 "./turtle_parser.y"
+ {
+ (yyval.sequence) = NULL;
+}
+ break;
+
+ case 55:
+
+/* Line 1806 of yacc.c */
+#line 945 "./turtle_parser.y"
+ {
+ const unsigned char *id;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("subject blank=\"%s\"\n", (yyvsp[(1) - (1)].string));
+#endif
+ id = raptor_world_internal_generate_id(((raptor_parser*)rdf_parser)->world,
+ (yyvsp[(1) - (1)].string));
+ if(!id)
+ YYERROR;
+
+ (yyval.identifier) = raptor_new_term_from_blank(((raptor_parser*)rdf_parser)->world, id);
+ RAPTOR_FREE(char*, id);
+
+ if(!(yyval.identifier))
+ YYERROR;
+}
+ break;
+
+ case 56:
+
+/* Line 1806 of yacc.c */
+#line 962 "./turtle_parser.y"
+ {
+ int i;
+ const unsigned char *id;
+
+ id = raptor_world_generate_bnodeid(((raptor_parser*)rdf_parser)->world);
+ if(!id) {
+ if((yyvsp[(2) - (3)].sequence))
+ raptor_free_sequence((yyvsp[(2) - (3)].sequence));
+ YYERROR;
+ }
+
+ (yyval.identifier) = raptor_new_term_from_blank(((raptor_parser*)rdf_parser)->world, id);
+ RAPTOR_FREE(char*, id);
+ if(!(yyval.identifier)) {
+ if((yyvsp[(2) - (3)].sequence))
+ raptor_free_sequence((yyvsp[(2) - (3)].sequence));
+ YYERROR;
+ }
+
+ if((yyvsp[(2) - (3)].sequence) == NULL) {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource\n propertyList=");
+ raptor_term_print_as_ntriples((yyval.identifier), stdout);
+ printf("\n");
+#endif
+ } else {
+ /* non-empty property list, handle it */
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource\n propertyList=");
+ raptor_sequence_print((yyvsp[(2) - (3)].sequence), stdout);
+ printf("\n");
+#endif
+
+ for(i = 0; i < raptor_sequence_size((yyvsp[(2) - (3)].sequence)); i++) {
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_get_at((yyvsp[(2) - (3)].sequence), i);
+ t2->subject = raptor_term_copy((yyval.identifier));
+ raptor_turtle_generate_statement((raptor_parser*)rdf_parser, t2);
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" after substitution objectList=");
+ raptor_sequence_print((yyvsp[(2) - (3)].sequence), stdout);
+ printf("\n\n");
+#endif
+
+ raptor_free_sequence((yyvsp[(2) - (3)].sequence));
+
+ }
+
+}
+ break;
+
+ case 57:
+
+/* Line 1806 of yacc.c */
+#line 1013 "./turtle_parser.y"
+ {
+ (yyval.identifier) = (yyvsp[(1) - (1)].identifier);
+}
+ break;
+
+ case 58:
+
+/* Line 1806 of yacc.c */
+#line 1020 "./turtle_parser.y"
+ {
+ int i;
+ raptor_world* world = ((raptor_parser*)rdf_parser)->world;
+ raptor_term* first_identifier = NULL;
+ raptor_term* rest_identifier = NULL;
+ raptor_term* object = NULL;
+ raptor_term* blank = NULL;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("collection\n objectList=");
+ raptor_sequence_print((yyvsp[(2) - (3)].sequence), stdout);
+ printf("\n");
+#endif
+
+ first_identifier = raptor_new_term_from_uri(world, RAPTOR_RDF_first_URI(world));
+ if(!first_identifier)
+ goto err_collection;
+ rest_identifier = raptor_new_term_from_uri(world, RAPTOR_RDF_rest_URI(world));
+ if(!rest_identifier)
+ goto err_collection;
+
+ /* non-empty property list, handle it */
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource\n propertyList=");
+ raptor_sequence_print((yyvsp[(2) - (3)].sequence), stdout);
+ printf("\n");
+#endif
+
+ object = raptor_new_term_from_uri(world, RAPTOR_RDF_nil_URI(world));
+ if(!object)
+ goto err_collection;
+
+ for(i = raptor_sequence_size((yyvsp[(2) - (3)].sequence))-1; i>=0; i--) {
+ raptor_term* temp;
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_get_at((yyvsp[(2) - (3)].sequence), i);
+ const unsigned char *blank_id;
+
+ blank_id = raptor_world_generate_bnodeid(((raptor_parser*)rdf_parser)->world);
+ if(!blank_id)
+ goto err_collection;
+
+ blank = raptor_new_term_from_blank(((raptor_parser*)rdf_parser)->world,
+ blank_id);
+ RAPTOR_FREE(char*, blank_id);
+ if(!blank)
+ goto err_collection;
+
+ t2->subject = blank;
+ t2->predicate = first_identifier;
+ /* t2->object already set to the value we want */
+ raptor_turtle_generate_statement((raptor_parser*)rdf_parser, t2);
+
+ temp = t2->object;
+
+ t2->subject = blank;
+ t2->predicate = rest_identifier;
+ t2->object = object;
+ raptor_turtle_generate_statement((raptor_parser*)rdf_parser, t2);
+
+ t2->subject = NULL;
+ t2->predicate = NULL;
+ t2->object = temp;
+
+ raptor_free_term(object);
+ object = blank;
+ blank = NULL;
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" after substitution objectList=");
+ raptor_sequence_print((yyvsp[(2) - (3)].sequence), stdout);
+ printf("\n\n");
+#endif
+
+ raptor_free_sequence((yyvsp[(2) - (3)].sequence));
+
+ raptor_free_term(first_identifier);
+ raptor_free_term(rest_identifier);
+
+ (yyval.identifier)=object;
+
+ break; /* success */
+
+ err_collection:
+
+ if(blank)
+ raptor_free_term(blank);
+
+ if(object)
+ raptor_free_term(object);
+
+ if(rest_identifier)
+ raptor_free_term(rest_identifier);
+
+ if(first_identifier)
+ raptor_free_term(first_identifier);
+
+ raptor_free_sequence((yyvsp[(2) - (3)].sequence));
+
+ YYERROR;
+}
+ break;
+
+ case 59:
+
+/* Line 1806 of yacc.c */
+#line 1122 "./turtle_parser.y"
+ {
+ raptor_world* world = ((raptor_parser*)rdf_parser)->world;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("collection\n empty\n");
+#endif
+
+ (yyval.identifier) = raptor_new_term_from_uri(world, RAPTOR_RDF_nil_URI(world));
+ if(!(yyval.identifier))
+ YYERROR;
+}
+ break;
+
+
+
+/* Line 1806 of yacc.c */
+#line 2901 "turtle_parser.c"
+ default: break;
+ }
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if ! YYERROR_VERBOSE
+ yyerror (rdf_parser, YY_("syntax error"));
+#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
+ {
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == 1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ if (!yymsg)
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = 2;
+ }
+ else
+ {
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ yymsgp = yymsg;
+ }
+ }
+ yyerror (rdf_parser, yymsgp);
+ if (yysyntax_error_status == 2)
+ goto yyexhaustedlab;
+ }
+# undef YYSYNTAX_ERROR
+#endif
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval, rdf_parser);
+ yychar = YYEMPTY;
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (!yypact_value_is_default (yyn))
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp, rdf_parser);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ *++yyvsp = yylval;
+
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#if !defined(yyoverflow) || YYERROR_VERBOSE
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (rdf_parser, YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+ if (yychar != YYEMPTY)
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval, rdf_parser);
+ }
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp, rdf_parser);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+
+
+/* Line 2067 of yacc.c */
+#line 1136 "./turtle_parser.y"
+
+
+
+/* Support functions */
+
+int
+turtle_parser_error(void* ctx, const char *msg)
+{
+ raptor_parser* rdf_parser = (raptor_parser *)ctx;
+ raptor_turtle_parser* turtle_parser;
+
+ turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+ if(turtle_parser->error_count++)
+ return 0;
+
+ rdf_parser->locator.line = turtle_parser->lineno;
+#ifdef RAPTOR_TURTLE_USE_ERROR_COLUMNS
+ rdf_parser->locator.column = turtle_lexer_get_column(yyscanner);
+#endif
+
+ raptor_log_error(rdf_parser->world, RAPTOR_LOG_LEVEL_ERROR,
+ &rdf_parser->locator, msg);
+
+ return 0;
+}
+
+
+int
+turtle_syntax_error(raptor_parser *rdf_parser, const char *message, ...)
+{
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+ va_list arguments;
+
+ if(turtle_parser->error_count++)
+ return 0;
+
+ rdf_parser->locator.line = turtle_parser->lineno;
+#ifdef RAPTOR_TURTLE_USE_ERROR_COLUMNS
+ rdf_parser->locator.column = turtle_lexer_get_column(yyscanner);
+#endif
+
+ va_start(arguments, message);
+
+ raptor_parser_log_error_varargs(((raptor_parser*)rdf_parser),
+ RAPTOR_LOG_LEVEL_ERROR, message, arguments);
+
+ va_end(arguments);
+
+ return 0;
+}
+
+
+raptor_uri*
+turtle_qname_to_uri(raptor_parser *rdf_parser, unsigned char *name, size_t name_len)
+{
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+ rdf_parser->locator.line = turtle_parser->lineno;
+#ifdef RAPTOR_TURTLE_USE_ERROR_COLUMNS
+ rdf_parser->locator.column = turtle_lexer_get_column(yyscanner);
+#endif
+
+ return raptor_qname_string_to_uri(&turtle_parser->namespaces, name, name_len);
+}
+
+
+
+#ifndef TURTLE_PUSH_PARSE
+static int
+turtle_parse(raptor_parser *rdf_parser, const char *string, size_t length)
+{
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+ int rc;
+
+ if(!string || !*string)
+ return 0;
+
+ if(turtle_lexer_lex_init(&turtle_parser->scanner))
+ return 1;
+ turtle_parser->scanner_set = 1;
+
+#if defined(YYDEBUG) && YYDEBUG > 0
+ turtle_parser_debug = 1;
+#endif
+
+ turtle_lexer_set_extra(rdf_parser, turtle_parser->scanner);
+ (void)turtle_lexer__scan_bytes((char *)string, (int)length, turtle_parser->scanner);
+
+ rc = turtle_parser_parse(rdf_parser);
+
+ turtle_lexer_lex_destroy(turtle_parser->scanner);
+ turtle_parser->scanner_set = 0;
+
+ return rc;
+}
+#endif
+
+
+#ifdef TURTLE_PUSH_PARSE
+static int
+turtle_push_parse(raptor_parser *rdf_parser,
+ const char *string, size_t length)
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ raptor_world* world = rdf_parser->world;
+#endif
+ raptor_turtle_parser* turtle_parser;
+ void *buffer;
+ int status;
+ yypstate *ps;
+
+ turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+ if(!string || !*string)
+ return 0;
+
+ if(turtle_lexer_lex_init(&turtle_parser->scanner))
+ return 1;
+ turtle_parser->scanner_set = 1;
+
+#if defined(YYDEBUG) && YYDEBUG > 0
+ turtle_parser_debug = 1;
+#endif
+
+ turtle_lexer_set_extra(rdf_parser, turtle_parser->scanner);
+ buffer = turtle_lexer__scan_bytes(string, length, turtle_parser->scanner);
+
+ /* returns a parser instance or 0 on out of memory */
+ ps = yypstate_new();
+ if(!ps)
+ return 1;
+
+ do {
+ YYSTYPE lval;
+ int token;
+
+ memset(&lval, 0, sizeof(YYSTYPE));
+
+ token = turtle_lexer_lex(&lval, turtle_parser->scanner);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("token %s\n", turtle_token_print(world, token, &lval));
+#endif
+
+ status = yypush_parse(ps, token, &lval, rdf_parser);
+
+ /* turtle_token_free(world, token, &lval); */
+
+ if(!token || token == EOF || token == ERROR_TOKEN)
+ break;
+ } while (status == YYPUSH_MORE);
+ yypstate_delete(ps);
+
+ turtle_lexer_lex_destroy(turtle_parser->scanner);
+ turtle_parser->scanner_set = 0;
+
+ return 0;
+}
+#endif
+
+
+/**
+ * raptor_turtle_parse_init - Initialise the Raptor Turtle parser
+ *
+ * Return value: non 0 on failure
+ **/
+
+static int
+raptor_turtle_parse_init(raptor_parser* rdf_parser, const char *name) {
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+ if(raptor_namespaces_init(rdf_parser->world, &turtle_parser->namespaces, 0))
+ return 1;
+
+ turtle_parser->trig = !strcmp(name, "trig");
+
+ return 0;
+}
+
+
+/* PUBLIC FUNCTIONS */
+
+
+/*
+ * raptor_turtle_parse_terminate - Free the Raptor Turtle parser
+ * @rdf_parser: parser object
+ *
+ **/
+static void
+raptor_turtle_parse_terminate(raptor_parser *rdf_parser) {
+ raptor_turtle_parser *turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+ raptor_namespaces_clear(&turtle_parser->namespaces);
+
+ if(turtle_parser->scanner_set) {
+ turtle_lexer_lex_destroy(turtle_parser->scanner);
+ turtle_parser->scanner_set = 0;
+ }
+
+ if(turtle_parser->buffer)
+ RAPTOR_FREE(cdata, turtle_parser->buffer);
+
+ if(turtle_parser->graph_name) {
+ raptor_free_term(turtle_parser->graph_name);
+ turtle_parser->graph_name = NULL;
+ }
+}
+
+
+static void
+raptor_turtle_generate_statement(raptor_parser *parser, raptor_statement *t)
+{
+ raptor_turtle_parser *turtle_parser = (raptor_turtle_parser*)parser->context;
+ raptor_statement *statement = &parser->statement;
+
+ if(!t->subject || !t->predicate || !t->object)
+ return;
+
+ if(!parser->statement_handler)
+ return;
+
+ if(turtle_parser->trig && turtle_parser->graph_name)
+ statement->graph = raptor_term_copy(turtle_parser->graph_name);
+
+ if(!parser->emitted_default_graph && !turtle_parser->graph_name) {
+ /* for non-TRIG - start default graph at first triple */
+ raptor_parser_start_graph(parser, NULL, 0);
+ parser->emitted_default_graph++;
+ }
+
+ /* Two choices for subject for Turtle */
+ if(t->subject->type == RAPTOR_TERM_TYPE_BLANK) {
+ statement->subject = raptor_new_term_from_blank(parser->world,
+ t->subject->value.blank.string);
+ } else {
+ /* RAPTOR_TERM_TYPE_URI */
+ RAPTOR_ASSERT(t->subject->type != RAPTOR_TERM_TYPE_URI,
+ "subject type is not resource");
+ statement->subject = raptor_new_term_from_uri(parser->world,
+ t->subject->value.uri);
+ }
+
+ /* Predicates are URIs but check for bad ordinals */
+ if(!strncmp((const char*)raptor_uri_as_string(t->predicate->value.uri),
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#_", 44)) {
+ unsigned char* predicate_uri_string = raptor_uri_as_string(t->predicate->value.uri);
+ int predicate_ordinal = raptor_check_ordinal(predicate_uri_string+44);
+ if(predicate_ordinal <= 0)
+ raptor_parser_error(parser, "Illegal ordinal value %d in property '%s'.", predicate_ordinal, predicate_uri_string);
+ }
+
+ statement->predicate = raptor_new_term_from_uri(parser->world,
+ t->predicate->value.uri);
+
+
+ /* Three choices for object for Turtle */
+ if(t->object->type == RAPTOR_TERM_TYPE_URI) {
+ statement->object = raptor_new_term_from_uri(parser->world,
+ t->object->value.uri);
+ } else if(t->object->type == RAPTOR_TERM_TYPE_BLANK) {
+ statement->object = raptor_new_term_from_blank(parser->world,
+ t->object->value.blank.string);
+ } else {
+ /* RAPTOR_TERM_TYPE_LITERAL */
+ RAPTOR_ASSERT(t->object->type != RAPTOR_TERM_TYPE_LITERAL,
+ "object type is not literal");
+ statement->object = raptor_new_term_from_literal(parser->world,
+ t->object->value.literal.string,
+ t->object->value.literal.datatype,
+ t->object->value.literal.language);
+ }
+
+ /* Generate the statement */
+ (*parser->statement_handler)(parser->user_data, statement);
+
+ raptor_free_term(statement->subject); statement->subject = NULL;
+ raptor_free_term(statement->predicate); statement->predicate = NULL;
+ raptor_free_term(statement->object); statement->object = NULL;
+ if(statement->graph) {
+ raptor_free_term(statement->graph); statement->graph = NULL;
+ }
+}
+
+
+
+static int
+raptor_turtle_parse_chunk(raptor_parser* rdf_parser,
+ const unsigned char *s, size_t len,
+ int is_end)
+{
+ char *ptr;
+ raptor_turtle_parser *turtle_parser;
+ int rc;
+
+ turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("adding %d bytes to line buffer\n", (int)len);
+#endif
+
+ if(len) {
+ turtle_parser->buffer = RAPTOR_REALLOC(char*, turtle_parser->buffer,
+ turtle_parser->buffer_length + len + 1);
+ if(!turtle_parser->buffer) {
+ raptor_parser_fatal_error(rdf_parser, "Out of memory");
+ return 1;
+ }
+
+ /* move pointer to end of cdata buffer */
+ ptr = turtle_parser->buffer+turtle_parser->buffer_length;
+
+ /* adjust stored length */
+ turtle_parser->buffer_length += len;
+
+ /* now write new stuff at end of cdata buffer */
+ memcpy(ptr, s, len);
+ ptr += len;
+ *ptr = '\0';
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("buffer buffer now '%s' (%d bytes)\n",
+ turtle_parser->buffer, turtle_parser->buffer_length);
+#endif
+ }
+
+ /* if not end, wait for rest of input */
+ if(!is_end)
+ return 0;
+
+ /* Nothing to do */
+ if(!turtle_parser->buffer_length)
+ return 0;
+
+#ifdef TURTLE_PUSH_PARSE
+ rc = turtle_push_parse(rdf_parser,
+ turtle_parser->buffer, turtle_parser->buffer_length);
+#else
+ rc = turtle_parse(rdf_parser, turtle_parser->buffer, turtle_parser->buffer_length);
+#endif
+
+ if(rdf_parser->emitted_default_graph) {
+ /* for non-TRIG - end default graph after last triple */
+ raptor_parser_end_graph(rdf_parser, NULL, 0);
+ rdf_parser->emitted_default_graph--;
+ }
+ return rc;
+}
+
+
+static int
+raptor_turtle_parse_start(raptor_parser *rdf_parser)
+{
+ raptor_locator *locator=&rdf_parser->locator;
+ raptor_turtle_parser *turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+ /* base URI required for Turtle */
+ if(!rdf_parser->base_uri)
+ return 1;
+
+ locator->line = 1;
+ locator->column= -1; /* No column info */
+ locator->byte= -1; /* No bytes info */
+
+ if(turtle_parser->buffer_length) {
+ RAPTOR_FREE(cdata, turtle_parser->buffer);
+ turtle_parser->buffer = NULL;
+ turtle_parser->buffer_length = 0;
+ }
+
+ turtle_parser->lineno = 1;
+
+ return 0;
+}
+
+
+static int
+raptor_turtle_parse_recognise_syntax(raptor_parser_factory* factory,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier,
+ const unsigned char *suffix,
+ const char *mime_type)
+{
+ int score= 0;
+
+ if(suffix) {
+ if(!strcmp((const char*)suffix, "ttl"))
+ score = 8;
+ if(!strcmp((const char*)suffix, "n3"))
+ score = 3;
+ }
+
+ if(mime_type) {
+ if(strstr((const char*)mime_type, "turtle"))
+ score += 6;
+ if(strstr((const char*)mime_type, "n3"))
+ score += 3;
+ }
+
+ /* Do this as long as N3 is not supported since it shares the same syntax */
+ if(buffer && len) {
+#define HAS_TURTLE_PREFIX (raptor_memstr((const char*)buffer, len, "@prefix ") != NULL)
+/* The following could also be found with N-Triples but not with @prefix */
+#define HAS_TURTLE_RDF_URI (raptor_memstr((const char*)buffer, len, ": <http://www.w3.org/1999/02/22-rdf-syntax-ns#>") != NULL)
+
+ if(HAS_TURTLE_PREFIX) {
+ score = 6;
+ if(HAS_TURTLE_RDF_URI)
+ score += 2;
+ }
+ }
+
+ return score;
+}
+
+
+static raptor_uri*
+raptor_turtle_get_graph(raptor_parser* rdf_parser)
+{
+ raptor_turtle_parser *turtle_parser;
+
+ turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+ if(turtle_parser->graph_name)
+ return raptor_uri_copy(turtle_parser->graph_name->value.uri);
+
+ return NULL;
+}
+
+
+#ifdef RAPTOR_PARSER_TRIG
+static int
+raptor_trig_parse_recognise_syntax(raptor_parser_factory* factory,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier,
+ const unsigned char *suffix,
+ const char *mime_type)
+{
+ int score= 0;
+
+ if(suffix) {
+ if(!strcmp((const char*)suffix, "trig"))
+ score = 9;
+#ifndef RAPTOR_PARSER_TURTLE
+ if(!strcmp((const char*)suffix, "ttl"))
+ score = 8;
+ if(!strcmp((const char*)suffix, "n3"))
+ score = 3;
+#endif
+ }
+
+ if(mime_type) {
+ if(strstr((const char*)mime_type, "trig"))
+ score = 6;
+#ifndef RAPTOR_PARSER_TURTLE
+ if(strstr((const char*)mime_type, "turtle"))
+ score += 6;
+ if(strstr((const char*)mime_type, "n3"))
+ score += 3;
+#endif
+ }
+
+#ifndef RAPTOR_PARSER_TURTLE
+ /* Do this as long as N3 is not supported since it shares the same syntax */
+ if(buffer && len) {
+#define HAS_TRIG_PREFIX (raptor_memstr((const char*)buffer, len, "@prefix ") != NULL)
+/* The following could also be found with N-Triples but not with @prefix */
+#define HAS_TRIG_RDF_URI (raptor_memstr((const char*)buffer, len, ": <http://www.w3.org/1999/02/22-rdf-syntax-ns#>") != NULL)
+
+ if(HAS_TRIG_PREFIX) {
+ score = 6;
+ if(HAS_TRIG_RDF_URI)
+ score += 2;
+ }
+ }
+#endif
+
+ return score;
+}
+#endif
+
+
+#ifdef RAPTOR_PARSER_TURTLE
+static const char* const turtle_names[4] = { "turtle", "ntriples-plus", "n3", NULL };
+
+static const char* const turtle_uri_strings[3] = {
+ "http://www.w3.org/ns/formats/Turtle",
+ "http://www.dajobe.org/2004/01/turtle/",
+ NULL
+};
+
+#define TURTLE_TYPES_COUNT 6
+static const raptor_type_q turtle_types[TURTLE_TYPES_COUNT + 1] = {
+ /* first one is the default */
+ { "text/turtle", 11, 10},
+ { "application/x-turtle", 20, 10},
+ { "application/turtle", 18, 10},
+ { "text/n3", 7, 3},
+ { "text/rdf+n3", 11, 3},
+ { "application/rdf+n3", 18, 3},
+ { NULL, 0}
+};
+
+static int
+raptor_turtle_parser_register_factory(raptor_parser_factory *factory)
+{
+ int rc = 0;
+
+ factory->desc.names = turtle_names;
+
+ factory->desc.mime_types = turtle_types;
+
+ factory->desc.label = "Turtle Terse RDF Triple Language";
+ factory->desc.uri_strings = turtle_uri_strings;
+
+ factory->desc.flags = RAPTOR_SYNTAX_NEED_BASE_URI;
+
+ factory->context_length = sizeof(raptor_turtle_parser);
+
+ factory->init = raptor_turtle_parse_init;
+ factory->terminate = raptor_turtle_parse_terminate;
+ factory->start = raptor_turtle_parse_start;
+ factory->chunk = raptor_turtle_parse_chunk;
+ factory->recognise_syntax = raptor_turtle_parse_recognise_syntax;
+ factory->get_graph = raptor_turtle_get_graph;
+
+ return rc;
+}
+#endif
+
+
+#ifdef RAPTOR_PARSER_TRIG
+static const char* const trig_names[2] = { "trig", NULL };
+
+static const char* const trig_uri_strings[2] = {
+ "http://www.wiwiss.fu-berlin.de/suhl/bizer/TriG/Spec/",
+ NULL
+};
+
+#define TRIG_TYPES_COUNT 1
+static const raptor_type_q trig_types[TRIG_TYPES_COUNT + 1] = {
+ /* first one is the default */
+ { "application/x-trig", 18, 10},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_trig_parser_register_factory(raptor_parser_factory *factory)
+{
+ int rc = 0;
+
+ factory->desc.names = trig_names;
+
+ factory->desc.mime_types = trig_types;
+
+ factory->desc.label = "TriG - Turtle with Named Graphs";
+ factory->desc.uri_strings = trig_uri_strings;
+
+ factory->desc.flags = RAPTOR_SYNTAX_NEED_BASE_URI;
+
+ factory->context_length = sizeof(raptor_turtle_parser);
+
+ factory->init = raptor_turtle_parse_init;
+ factory->terminate = raptor_turtle_parse_terminate;
+ factory->start = raptor_turtle_parse_start;
+ factory->chunk = raptor_turtle_parse_chunk;
+ factory->recognise_syntax = raptor_trig_parse_recognise_syntax;
+ factory->get_graph = raptor_turtle_get_graph;
+
+ return rc;
+}
+#endif
+
+
+#ifdef RAPTOR_PARSER_TURTLE
+int
+raptor_init_parser_turtle(raptor_world* world)
+{
+ return !raptor_world_register_parser_factory(world,
+ &raptor_turtle_parser_register_factory);
+}
+#endif
+
+#ifdef RAPTOR_PARSER_TRIG
+int
+raptor_init_parser_trig(raptor_world* world)
+{
+ return !raptor_world_register_parser_factory(world,
+ &raptor_trig_parser_register_factory);
+}
+#endif
+
+
+#ifdef STANDALONE
+#include <stdio.h>
+#include <locale.h>
+
+#define TURTLE_FILE_BUF_SIZE 2048
+
+static void
+turtle_parser_print_statement(void *user,
+ raptor_statement *statement)
+{
+ FILE* stream = (FILE*)user;
+ raptor_statement_print(statement, stream);
+ putc('\n', stream);
+}
+
+
+
+int
+main(int argc, char *argv[])
+{
+ char string[TURTLE_FILE_BUF_SIZE];
+ raptor_parser rdf_parser; /* static */
+ raptor_turtle_parser turtle_parser; /* static */
+ raptor_locator *locator = &rdf_parser.locator;
+ FILE *fh;
+ const char *filename;
+ size_t nobj;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+ turtle_parser_debug = 1;
+#endif
+
+ if(argc > 1) {
+ filename = argv[1];
+ fh = fopen(filename, "r");
+ if(!fh) {
+ fprintf(stderr, "%s: Cannot open file %s - %s\n", argv[0], filename,
+ strerror(errno));
+ exit(1);
+ }
+ } else {
+ filename="<stdin>";
+ fh = stdin;
+ }
+
+ memset(string, 0, TURTLE_FILE_BUF_SIZE);
+ nobj = fread(string, TURTLE_FILE_BUF_SIZE, 1, fh);
+ if(nobj < TURTLE_FILE_BUF_SIZE) {
+ if(ferror(fh)) {
+ fprintf(stderr, "%s: file '%s' read failed - %s\n",
+ argv[0], filename, strerror(errno));
+ fclose(fh);
+ return(1);
+ }
+ }
+
+ if(argc > 1)
+ fclose(fh);
+
+ memset(&rdf_parser, 0, sizeof(rdf_parser));
+ memset(&turtle_parser, 0, sizeof(turtle_parser));
+
+ locator->line= locator->column = -1;
+ locator->file= filename;
+
+ turtle_parser.lineno= 1;
+
+ rdf_parser.world = raptor_new_world();
+ rdf_parser.context = &turtle_parser;
+ rdf_parser.base_uri = raptor_new_uri(rdf_parser.world,
+ (const unsigned char*)"http://example.org/fake-base-uri/");
+
+ raptor_parser_set_statement_handler(&rdf_parser, stdout,
+ turtle_parser_print_statement);
+ raptor_turtle_parse_init(&rdf_parser, "turtle");
+
+ turtle_parser.error_count = 0;
+
+#ifdef TURTLE_PUSH_PARSE
+ turtle_push_parse(&rdf_parser, string, strlen(string));
+#else
+ turtle_parse(&rdf_parser, string, strlen(string));
+#endif
+
+ raptor_turtle_parse_terminate(&rdf_parser);
+
+ raptor_free_uri(rdf_parser.base_uri);
+
+ raptor_free_world(rdf_parser.world);
+
+ return (0);
+}
+#endif
+
diff --git a/src/turtle_parser.h b/src/turtle_parser.h
new file mode 100644
index 0000000..fcb4864
--- /dev/null
+++ b/src/turtle_parser.h
@@ -0,0 +1,124 @@
+/* A Bison parser, made by GNU Bison 2.5. */
+
+/* Bison interface for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ A = 258,
+ AT = 259,
+ HAT = 260,
+ DOT = 261,
+ COMMA = 262,
+ SEMICOLON = 263,
+ LEFT_SQUARE = 264,
+ RIGHT_SQUARE = 265,
+ LEFT_ROUND = 266,
+ RIGHT_ROUND = 267,
+ LEFT_CURLY = 268,
+ RIGHT_CURLY = 269,
+ TRUE_TOKEN = 270,
+ FALSE_TOKEN = 271,
+ PREFIX = 272,
+ BASE = 273,
+ STRING_LITERAL = 274,
+ URI_LITERAL = 275,
+ GRAPH_NAME_LEFT_CURLY = 276,
+ BLANK_LITERAL = 277,
+ QNAME_LITERAL = 278,
+ IDENTIFIER = 279,
+ INTEGER_LITERAL = 280,
+ FLOATING_LITERAL = 281,
+ DECIMAL_LITERAL = 282,
+ ERROR_TOKEN = 283
+ };
+#endif
+/* Tokens. */
+#define A 258
+#define AT 259
+#define HAT 260
+#define DOT 261
+#define COMMA 262
+#define SEMICOLON 263
+#define LEFT_SQUARE 264
+#define RIGHT_SQUARE 265
+#define LEFT_ROUND 266
+#define RIGHT_ROUND 267
+#define LEFT_CURLY 268
+#define RIGHT_CURLY 269
+#define TRUE_TOKEN 270
+#define FALSE_TOKEN 271
+#define PREFIX 272
+#define BASE 273
+#define STRING_LITERAL 274
+#define URI_LITERAL 275
+#define GRAPH_NAME_LEFT_CURLY 276
+#define BLANK_LITERAL 277
+#define QNAME_LITERAL 278
+#define IDENTIFIER 279
+#define INTEGER_LITERAL 280
+#define FLOATING_LITERAL 281
+#define DECIMAL_LITERAL 282
+#define ERROR_TOKEN 283
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+{
+
+/* Line 2068 of yacc.c */
+#line 122 "./turtle_parser.y"
+
+ unsigned char *string;
+ raptor_term *identifier;
+ raptor_sequence *sequence;
+ raptor_uri *uri;
+ int integer; /* 0+ for a xsd:integer datatyped RDF literal */
+
+
+
+/* Line 2068 of yacc.c */
+#line 116 "turtle_parser.tab.h"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+
+
diff --git a/src/turtle_parser.y b/src/turtle_parser.y
new file mode 100644
index 0000000..2d72435
--- /dev/null
+++ b/src/turtle_parser.y
@@ -0,0 +1,1820 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * turtle_parser.y - Raptor Turtle / TRIG / N3 parsers - over tokens from turtle grammar lexer
+ *
+ * Copyright (C) 2003-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2003-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ * Turtle is defined in http://www.dajobe.org/2004/01/turtle/
+ *
+ * Made from a subset of the terms in
+ * http://www.w3.org/DesignIssues/Notation3.html
+ *
+ * TRIG is defined in http://www.wiwiss.fu-berlin.de/suhl/bizer/TriG/Spec/
+ */
+
+%{
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include "raptor2.h"
+#include "raptor_internal.h"
+
+#include <turtle_parser.h>
+
+#define YY_DECL int turtle_lexer_lex (YYSTYPE *turtle_parser_lval, yyscan_t yyscanner)
+#define YY_NO_UNISTD_H 1
+#include <turtle_lexer.h>
+
+#include <turtle_common.h>
+
+
+/* Make verbose error messages for syntax errors */
+#ifdef RAPTOR_DEBUG
+#define YYERROR_VERBOSE 1
+#endif
+
+#ifdef RAPTOR_DEBUG
+const char * turtle_token_print(raptor_world* world, int token, YYSTYPE *lval);
+#endif
+
+
+
+/* Slow down the grammar operation and watch it work */
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+#define YYDEBUG 1
+#endif
+
+/* the lexer does not seem to track this */
+#undef RAPTOR_TURTLE_USE_ERROR_COLUMNS
+
+/* set api.push_pull to "push" if this is defined */
+#undef TURTLE_PUSH_PARSE
+
+/* Prototypes */
+int turtle_parser_error(void* rdf_parser, const char *msg);
+
+/* Missing turtle_lexer.c/h prototypes */
+int turtle_lexer_get_column(yyscan_t yyscanner);
+/* Not used here */
+/* void turtle_lexer_set_column(int column_no , yyscan_t yyscanner);*/
+
+
+/* What the lexer wants */
+extern int turtle_lexer_lex (YYSTYPE *turtle_parser_lval, yyscan_t scanner);
+
+/* Make lex/yacc interface as small as possible */
+#undef yylex
+#define yylex turtle_lexer_lex
+#define YYLEX_PARAM ((raptor_turtle_parser*)(((raptor_parser*)rdf_parser)->context))->scanner
+
+
+/* Prototypes for local functions */
+static void raptor_turtle_generate_statement(raptor_parser *parser, raptor_statement *triple);
+
+%}
+
+
+/* directives */
+
+
+/* Pure parser - want a reentrant parser */
+%define api.pure
+
+/* Push or pull parser? */
+%define api.push_pull "pull"
+
+/* Pure parser argument */
+%parse-param { raptor_parser* rdf_parser }
+
+/* Interface between lexer and parser */
+%union {
+ unsigned char *string;
+ raptor_term *identifier;
+ raptor_sequence *sequence;
+ raptor_uri *uri;
+ int integer; /* 0+ for a xsd:integer datatyped RDF literal */
+}
+
+%expect 2
+
+
+/* others */
+
+%token A "a"
+%token AT "@"
+%token HAT "^"
+%token DOT "."
+%token COMMA ","
+%token SEMICOLON ";"
+%token LEFT_SQUARE "["
+%token RIGHT_SQUARE "]"
+%token LEFT_ROUND "("
+%token RIGHT_ROUND ")"
+%token LEFT_CURLY "{"
+%token RIGHT_CURLY "}"
+%token TRUE_TOKEN "true"
+%token FALSE_TOKEN "false"
+%token PREFIX "@prefix"
+%token BASE "@base"
+
+/* literals */
+%token <string> STRING_LITERAL "string literal"
+%token <uri> URI_LITERAL "URI literal"
+%token <uri> GRAPH_NAME_LEFT_CURLY "Graph URI literal {"
+%token <string> BLANK_LITERAL "blank node"
+%token <uri> QNAME_LITERAL "QName"
+%token <string> IDENTIFIER "identifier"
+%token <string> INTEGER_LITERAL "integer literal"
+%token <string> FLOATING_LITERAL "floating point literal"
+%token <string> DECIMAL_LITERAL "decimal literal"
+
+/* syntax error */
+%token ERROR_TOKEN
+
+%type <identifier> subject predicate object verb literal resource blank collection
+%type <sequence> objectList itemList propertyList propertyListOpt
+
+/* tidy up tokens after errors */
+
+%destructor {
+ if($$)
+ RAPTOR_FREE(char*, $$);
+} STRING_LITERAL BLANK_LITERAL INTEGER_LITERAL FLOATING_LITERAL DECIMAL_LITERAL IDENTIFIER
+
+%destructor {
+ if($$)
+ raptor_free_uri($$);
+} URI_LITERAL QNAME_LITERAL
+
+%destructor {
+ if($$)
+ raptor_free_term($$);
+} subject predicate object verb literal resource blank collection
+
+%destructor {
+ if($$)
+ raptor_free_sequence($$);
+} objectList itemList propertyList propertyListOpt
+
+%%
+
+Document : statementList
+;;
+
+
+graph: GRAPH_NAME_LEFT_CURLY
+ {
+ /* action in mid-rule so this is run BEFORE the triples in graphBody */
+ raptor_parser* parser = (raptor_parser *)rdf_parser;
+ raptor_turtle_parser* turtle_parser;
+
+ turtle_parser = (raptor_turtle_parser*)parser->context;
+ if(!turtle_parser->trig)
+ turtle_parser_error(rdf_parser, "{ ... } is not allowed in Turtle");
+ else {
+ if(turtle_parser->graph_name)
+ raptor_free_term(turtle_parser->graph_name);
+ turtle_parser->graph_name = raptor_new_term_from_uri(((raptor_parser*)rdf_parser)->world, $1);
+ raptor_free_uri($1);
+ raptor_parser_start_graph(parser, turtle_parser->graph_name->value.uri, 1);
+ }
+ }
+ graphBody RIGHT_CURLY
+{
+ raptor_parser* parser = (raptor_parser *)rdf_parser;
+ raptor_turtle_parser* turtle_parser;
+
+ turtle_parser = (raptor_turtle_parser*)parser->context;
+
+ if(turtle_parser->trig) {
+ raptor_parser_end_graph(parser, turtle_parser->graph_name->value.uri, 1);
+ raptor_free_term(turtle_parser->graph_name);
+ turtle_parser->graph_name = NULL;
+ parser->emitted_default_graph = 0;
+ }
+}
+|
+LEFT_CURLY
+ {
+ /* action in mid-rule so this is run BEFORE the triples in graphBody */
+ raptor_parser* parser = (raptor_parser *)rdf_parser;
+ raptor_turtle_parser* turtle_parser;
+
+ turtle_parser = (raptor_turtle_parser*)parser->context;
+ if(!turtle_parser->trig)
+ turtle_parser_error(rdf_parser, "{ ... } is not allowed in Turtle");
+ else {
+ raptor_parser_start_graph(parser, NULL, 1);
+ parser->emitted_default_graph++;
+ }
+ }
+ graphBody RIGHT_CURLY
+{
+ raptor_parser* parser = (raptor_parser *)rdf_parser;
+ raptor_turtle_parser* turtle_parser;
+
+ turtle_parser = (raptor_turtle_parser*)parser->context;
+ if(turtle_parser->trig) {
+ raptor_parser_end_graph(parser, NULL, 1);
+ parser->emitted_default_graph = 0;
+ }
+}
+;
+
+
+graphBody: triplesList
+|
+/* empty */
+;
+
+triplesList: dotTriplesList
+| dotTriplesList DOT
+;
+
+dotTriplesList: triples
+| dotTriplesList DOT triples
+;
+
+statementList: statementList statement
+| statementList statement DOT
+| /* empty */
+;
+
+statement: directive
+| graph
+| triples
+;
+
+triples: subject propertyList
+{
+ int i;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("statement 2\n subject=");
+ if($1)
+ raptor_term_print_as_ntriples($1, stdout);
+ else
+ fputs("NULL", stdout);
+ if($2) {
+ printf("\n propertyList (reverse order to syntax)=");
+ raptor_sequence_print($2, stdout);
+ printf("\n");
+ } else
+ printf("\n and empty propertyList\n");
+#endif
+
+ if($1 && $2) {
+ /* have subject and non-empty property list, handle it */
+ for(i = 0; i < raptor_sequence_size($2); i++) {
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_get_at($2, i);
+ t2->subject = raptor_term_copy($1);
+ }
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" after substitution propertyList=");
+ raptor_sequence_print($2, stdout);
+ printf("\n\n");
+#endif
+ for(i = 0; i < raptor_sequence_size($2); i++) {
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_get_at($2, i);
+ raptor_turtle_generate_statement((raptor_parser*)rdf_parser, t2);
+ }
+ }
+
+ if($2)
+ raptor_free_sequence($2);
+
+ if($1)
+ raptor_free_term($1);
+}
+| error DOT
+;
+
+
+objectList: objectList COMMA object
+{
+ raptor_statement *triple;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("objectList 1\n");
+ if($3) {
+ printf(" object=\n");
+ raptor_term_print_as_ntriples($3, stdout);
+ printf("\n");
+ } else
+ printf(" and empty object\n");
+ if($1) {
+ printf(" objectList=");
+ raptor_sequence_print($1, stdout);
+ printf("\n");
+ } else
+ printf(" and empty objectList\n");
+#endif
+
+ if(!$3)
+ $$ = NULL;
+ else {
+ triple = raptor_new_statement_from_nodes(((raptor_parser*)rdf_parser)->world, NULL, NULL, $3, NULL);
+ if(!triple) {
+ raptor_free_sequence($1);
+ YYERROR;
+ }
+ if(raptor_sequence_push($1, triple)) {
+ raptor_free_sequence($1);
+ YYERROR;
+ }
+ $$ = $1;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" objectList is now ");
+ raptor_sequence_print($$, stdout);
+ printf("\n\n");
+#endif
+ }
+}
+| object
+{
+ raptor_statement *triple;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("objectList 2\n");
+ if($1) {
+ printf(" object=\n");
+ raptor_term_print_as_ntriples($1, stdout);
+ printf("\n");
+ } else
+ printf(" and empty object\n");
+#endif
+
+ if(!$1)
+ $$ = NULL;
+ else {
+ triple = raptor_new_statement_from_nodes(((raptor_parser*)rdf_parser)->world, NULL, NULL, $1, NULL);
+ if(!triple)
+ YYERROR;
+#ifdef RAPTOR_DEBUG
+ $$ = raptor_new_sequence((raptor_data_free_handler)raptor_free_statement,
+ (raptor_data_print_handler)raptor_statement_print);
+#else
+ $$ = raptor_new_sequence((raptor_data_free_handler)raptor_free_statement, NULL);
+#endif
+ if(!$$) {
+ raptor_free_statement(triple);
+ YYERROR;
+ }
+ if(raptor_sequence_push($$, triple)) {
+ raptor_free_sequence($$);
+ $$ = NULL;
+ YYERROR;
+ }
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" objectList is now ");
+ raptor_sequence_print($$, stdout);
+ printf("\n\n");
+#endif
+ }
+}
+;
+
+itemList: itemList object
+{
+ raptor_statement *triple;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("objectList 1\n");
+ if($2) {
+ printf(" object=\n");
+ raptor_term_print_as_ntriples($2, stdout);
+ printf("\n");
+ } else
+ printf(" and empty object\n");
+ if($1) {
+ printf(" objectList=");
+ raptor_sequence_print($1, stdout);
+ printf("\n");
+ } else
+ printf(" and empty objectList\n");
+#endif
+
+ if(!$2)
+ $$ = NULL;
+ else {
+ triple = raptor_new_statement_from_nodes(((raptor_parser*)rdf_parser)->world, NULL, NULL, $2, NULL);
+ if(!triple) {
+ raptor_free_sequence($1);
+ YYERROR;
+ }
+ if(raptor_sequence_push($1, triple)) {
+ raptor_free_sequence($1);
+ YYERROR;
+ }
+ $$ = $1;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" objectList is now ");
+ raptor_sequence_print($$, stdout);
+ printf("\n\n");
+#endif
+ }
+}
+| object
+{
+ raptor_statement *triple;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("objectList 2\n");
+ if($1) {
+ printf(" object=\n");
+ raptor_term_print_as_ntriples($1, stdout);
+ printf("\n");
+ } else
+ printf(" and empty object\n");
+#endif
+
+ if(!$1)
+ $$ = NULL;
+ else {
+ triple = raptor_new_statement_from_nodes(((raptor_parser*)rdf_parser)->world, NULL, NULL, $1, NULL);
+ if(!triple)
+ YYERROR;
+#ifdef RAPTOR_DEBUG
+ $$ = raptor_new_sequence((raptor_data_free_handler)raptor_free_statement,
+ (raptor_data_print_handler)raptor_statement_print);
+#else
+ $$ = raptor_new_sequence((raptor_data_free_handler)raptor_free_statement, NULL);
+#endif
+ if(!$$) {
+ raptor_free_statement(triple);
+ YYERROR;
+ }
+ if(raptor_sequence_push($$, triple)) {
+ raptor_free_sequence($$);
+ $$ = NULL;
+ YYERROR;
+ }
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" objectList is now ");
+ raptor_sequence_print($$, stdout);
+ printf("\n\n");
+#endif
+ }
+}
+;
+
+verb: predicate
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("verb predicate=");
+ raptor_term_print_as_ntriples($1, stdout);
+ printf("\n");
+#endif
+
+ $$ = $1;
+}
+| A
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("verb predicate = rdf:type (a)\n");
+#endif
+
+ $$ = raptor_term_copy(RAPTOR_RDF_type_term(((raptor_parser*)rdf_parser)->world));
+ if(!$$)
+ YYERROR;
+}
+;
+
+
+propertyList: propertyList SEMICOLON verb objectList
+{
+ int i;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("propertyList 1\n verb=");
+ raptor_term_print_as_ntriples($3, stdout);
+ printf("\n objectList=");
+ raptor_sequence_print($4, stdout);
+ printf("\n propertyList=");
+ raptor_sequence_print($1, stdout);
+ printf("\n\n");
+#endif
+
+ if($4 == NULL) {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" empty objectList not processed\n");
+#endif
+ } else if($3 && $4) {
+ /* non-empty property list, handle it */
+ for(i = 0; i < raptor_sequence_size($4); i++) {
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_get_at($4, i);
+ t2->predicate = raptor_term_copy($3);
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" after substitution objectList=");
+ raptor_sequence_print($4, stdout);
+ printf("\n");
+#endif
+ }
+
+ if($1 == NULL) {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" empty propertyList not copied\n\n");
+#endif
+ } else if($3 && $4 && $1) {
+ while(raptor_sequence_size($4)) {
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_unshift($4);
+ if(raptor_sequence_push($1, t2)) {
+ raptor_free_sequence($1);
+ raptor_free_term($3);
+ raptor_free_sequence($4);
+ YYERROR;
+ }
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" after appending objectList (reverse order)=");
+ raptor_sequence_print($1, stdout);
+ printf("\n\n");
+#endif
+
+ raptor_free_sequence($4);
+ }
+
+ if($3)
+ raptor_free_term($3);
+
+ $$ = $1;
+}
+| verb objectList
+{
+ int i;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("propertyList 2\n verb=");
+ raptor_term_print_as_ntriples($1, stdout);
+ if($2) {
+ printf("\n objectList=");
+ raptor_sequence_print($2, stdout);
+ printf("\n");
+ } else
+ printf("\n and empty objectList\n");
+#endif
+
+ if($1 && $2) {
+ for(i = 0; i < raptor_sequence_size($2); i++) {
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_get_at($2, i);
+ t2->predicate = raptor_term_copy($1);
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" after substitution objectList=");
+ raptor_sequence_print($2, stdout);
+ printf("\n\n");
+#endif
+ }
+
+ if($1)
+ raptor_free_term($1);
+
+ $$ = $2;
+}
+| propertyList SEMICOLON
+{
+ $$ = $1;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("propertyList 5\n trailing semicolon returning existing list ");
+ raptor_sequence_print($$, stdout);
+ printf("\n\n");
+#endif
+}
+;
+
+directive : prefix | base
+;
+
+prefix: PREFIX IDENTIFIER URI_LITERAL DOT
+{
+ unsigned char *prefix = $2;
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)(((raptor_parser*)rdf_parser)->context);
+ raptor_namespace *ns;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("directive @prefix %s %s\n",($2 ? (char*)$2 : "(default)"), raptor_uri_as_string($3));
+#endif
+
+ if(prefix) {
+ size_t len = strlen((const char*)prefix);
+ if(prefix[len-1] == ':') {
+ if(len == 1)
+ /* declaring default namespace prefix @prefix : ... */
+ prefix = NULL;
+ else
+ prefix[len-1]='\0';
+ }
+ }
+
+ ns = raptor_new_namespace_from_uri(&turtle_parser->namespaces, prefix, $3, 0);
+ if(ns) {
+ raptor_namespaces_start_namespace(&turtle_parser->namespaces, ns);
+ raptor_parser_start_namespace((raptor_parser*)rdf_parser, ns);
+ }
+
+ if($2)
+ RAPTOR_FREE(char*, $2);
+ raptor_free_uri($3);
+
+ if(!ns)
+ YYERROR;
+}
+;
+
+
+base: BASE URI_LITERAL DOT
+{
+ raptor_uri *uri=$2;
+ /*raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)(((raptor_parser*)rdf_parser)->context);*/
+ raptor_parser* parser = (raptor_parser*)rdf_parser;
+ if(parser->base_uri)
+ raptor_free_uri(parser->base_uri);
+ parser->base_uri = uri;
+}
+;
+
+subject: resource
+{
+ $$ = $1;
+}
+| blank
+{
+ $$ = $1;
+}
+;
+
+
+predicate: resource
+{
+ $$ = $1;
+}
+;
+
+
+object: resource
+{
+ $$ = $1;
+}
+| blank
+{
+ $$ = $1;
+}
+| literal
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("object literal=");
+ raptor_term_print_as_ntriples($1, stdout);
+ printf("\n");
+#endif
+
+ $$ = $1;
+}
+;
+
+
+literal: STRING_LITERAL AT IDENTIFIER
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("literal + language string=\"%s\"\n", $1);
+#endif
+
+ $$ = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ $1, NULL, $3);
+ RAPTOR_FREE(char*, $1);
+ RAPTOR_FREE(char*, $3);
+ if(!$$)
+ YYERROR;
+}
+| STRING_LITERAL AT IDENTIFIER HAT URI_LITERAL
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("literal + language=\"%s\" datatype string=\"%s\" uri=\"%s\"\n", $1, $3, raptor_uri_as_string($5));
+#endif
+
+ if($5) {
+ if($3) {
+ raptor_parser_warning((raptor_parser*)rdf_parser,
+ "Ignoring language used with datatyped literal");
+ RAPTOR_FREE(char*, $3);
+ $3 = NULL;
+ }
+
+ $$ = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ $1, $5, NULL);
+ RAPTOR_FREE(char*, $1);
+ raptor_free_uri($5);
+ if(!$$)
+ YYERROR;
+ } else
+ $$ = NULL;
+
+}
+| STRING_LITERAL AT IDENTIFIER HAT QNAME_LITERAL
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("literal + language=\"%s\" datatype string=\"%s\" qname URI=<%s>\n", $1, $3, raptor_uri_as_string($5));
+#endif
+
+ if($5) {
+ if($3) {
+ raptor_parser_warning((raptor_parser*)rdf_parser,
+ "Ignoring language used with datatyped literal");
+ RAPTOR_FREE(char*, $3);
+ $3 = NULL;
+ }
+
+ $$ = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ $1, $5, NULL);
+ RAPTOR_FREE(char*, $1);
+ raptor_free_uri($5);
+ if(!$$)
+ YYERROR;
+ } else
+ $$ = NULL;
+
+}
+| STRING_LITERAL HAT URI_LITERAL
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("literal + datatype string=\"%s\" uri=\"%s\"\n", $1, raptor_uri_as_string($3));
+#endif
+
+ if($3) {
+ $$ = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ $1, $3, NULL);
+ RAPTOR_FREE(char*, $1);
+ raptor_free_uri($3);
+ if(!$$)
+ YYERROR;
+ } else
+ $$ = NULL;
+
+}
+| STRING_LITERAL HAT QNAME_LITERAL
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("literal + datatype string=\"%s\" qname URI=<%s>\n", $1, raptor_uri_as_string($3));
+#endif
+
+ if($3) {
+ $$ = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ $1, $3, NULL);
+ RAPTOR_FREE(char*, $1);
+ raptor_free_uri($3);
+ if(!$$)
+ YYERROR;
+ } else
+ $$ = NULL;
+}
+| STRING_LITERAL
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("literal string=\"%s\"\n", $1);
+#endif
+
+ $$ = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ $1, NULL, NULL);
+ RAPTOR_FREE(char*, $1);
+ if(!$$)
+ YYERROR;
+}
+| INTEGER_LITERAL
+{
+ raptor_uri *uri;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource integer=%s\n", $1);
+#endif
+ uri = raptor_new_uri(((raptor_parser*)rdf_parser)->world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#integer");
+ if(!uri) {
+ RAPTOR_FREE(char*, $1);
+ YYERROR;
+ }
+ $$ = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ $1, uri, NULL);
+ RAPTOR_FREE(char*, $1);
+ raptor_free_uri(uri);
+ if(!$$)
+ YYERROR;
+}
+| FLOATING_LITERAL
+{
+ raptor_uri *uri;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource double=%s\n", $1);
+#endif
+ uri = raptor_new_uri(((raptor_parser*)rdf_parser)->world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#double");
+ if(!uri) {
+ RAPTOR_FREE(char*, $1);
+ YYERROR;
+ }
+ $$ = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ $1, uri, NULL);
+ RAPTOR_FREE(char*, $1);
+ raptor_free_uri(uri);
+ if(!$$)
+ YYERROR;
+}
+| DECIMAL_LITERAL
+{
+ raptor_uri *uri;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource decimal=%s\n", $1);
+#endif
+ uri = raptor_new_uri(((raptor_parser*)rdf_parser)->world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#decimal");
+ if(!uri) {
+ RAPTOR_FREE(char*, $1);
+ YYERROR;
+ }
+ $$ = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ $1, uri, NULL);
+ RAPTOR_FREE(char*, $1);
+ raptor_free_uri(uri);
+ if(!$$)
+ YYERROR;
+}
+| TRUE_TOKEN
+{
+ raptor_uri *uri;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fputs("resource boolean true\n", stderr);
+#endif
+ uri = raptor_new_uri(((raptor_parser*)rdf_parser)->world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#boolean");
+ if(!uri)
+ YYERROR;
+ $$ = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (const unsigned char*)"true", uri, NULL);
+ raptor_free_uri(uri);
+ if(!$$)
+ YYERROR;
+}
+| FALSE_TOKEN
+{
+ raptor_uri *uri;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fputs("resource boolean false\n", stderr);
+#endif
+ uri = raptor_new_uri(((raptor_parser*)rdf_parser)->world, (const unsigned char*)"http://www.w3.org/2001/XMLSchema#boolean");
+ if(!uri)
+ YYERROR;
+ $$ = raptor_new_term_from_literal(((raptor_parser*)rdf_parser)->world,
+ (const unsigned char*)"false", uri, NULL);
+ raptor_free_uri(uri);
+ if(!$$)
+ YYERROR;
+}
+;
+
+
+resource: URI_LITERAL
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource URI=<%s>\n", raptor_uri_as_string($1));
+#endif
+
+ if($1) {
+ $$ = raptor_new_term_from_uri(((raptor_parser*)rdf_parser)->world, $1);
+ raptor_free_uri($1);
+ if(!$$)
+ YYERROR;
+ } else
+ $$ = NULL;
+}
+| QNAME_LITERAL
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource qname URI=<%s>\n", raptor_uri_as_string($1));
+#endif
+
+ if($1) {
+ $$ = raptor_new_term_from_uri(((raptor_parser*)rdf_parser)->world, $1);
+ raptor_free_uri($1);
+ if(!$$)
+ YYERROR;
+ } else
+ $$ = NULL;
+}
+;
+
+
+propertyListOpt: propertyList
+{
+ $$ = $1;
+}
+| /* empty */
+{
+ $$ = NULL;
+}
+
+
+blank: BLANK_LITERAL
+{
+ const unsigned char *id;
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("subject blank=\"%s\"\n", $1);
+#endif
+ id = raptor_world_internal_generate_id(((raptor_parser*)rdf_parser)->world,
+ $1);
+ if(!id)
+ YYERROR;
+
+ $$ = raptor_new_term_from_blank(((raptor_parser*)rdf_parser)->world, id);
+ RAPTOR_FREE(char*, id);
+
+ if(!$$)
+ YYERROR;
+}
+| LEFT_SQUARE propertyListOpt RIGHT_SQUARE
+{
+ int i;
+ const unsigned char *id;
+
+ id = raptor_world_generate_bnodeid(((raptor_parser*)rdf_parser)->world);
+ if(!id) {
+ if($2)
+ raptor_free_sequence($2);
+ YYERROR;
+ }
+
+ $$ = raptor_new_term_from_blank(((raptor_parser*)rdf_parser)->world, id);
+ RAPTOR_FREE(char*, id);
+ if(!$$) {
+ if($2)
+ raptor_free_sequence($2);
+ YYERROR;
+ }
+
+ if($2 == NULL) {
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource\n propertyList=");
+ raptor_term_print_as_ntriples($$, stdout);
+ printf("\n");
+#endif
+ } else {
+ /* non-empty property list, handle it */
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource\n propertyList=");
+ raptor_sequence_print($2, stdout);
+ printf("\n");
+#endif
+
+ for(i = 0; i < raptor_sequence_size($2); i++) {
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_get_at($2, i);
+ t2->subject = raptor_term_copy($$);
+ raptor_turtle_generate_statement((raptor_parser*)rdf_parser, t2);
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" after substitution objectList=");
+ raptor_sequence_print($2, stdout);
+ printf("\n\n");
+#endif
+
+ raptor_free_sequence($2);
+
+ }
+
+}
+| collection
+{
+ $$ = $1;
+}
+;
+
+
+collection: LEFT_ROUND itemList RIGHT_ROUND
+{
+ int i;
+ raptor_world* world = ((raptor_parser*)rdf_parser)->world;
+ raptor_term* first_identifier = NULL;
+ raptor_term* rest_identifier = NULL;
+ raptor_term* object = NULL;
+ raptor_term* blank = NULL;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("collection\n objectList=");
+ raptor_sequence_print($2, stdout);
+ printf("\n");
+#endif
+
+ first_identifier = raptor_new_term_from_uri(world, RAPTOR_RDF_first_URI(world));
+ if(!first_identifier)
+ goto err_collection;
+ rest_identifier = raptor_new_term_from_uri(world, RAPTOR_RDF_rest_URI(world));
+ if(!rest_identifier)
+ goto err_collection;
+
+ /* non-empty property list, handle it */
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("resource\n propertyList=");
+ raptor_sequence_print($2, stdout);
+ printf("\n");
+#endif
+
+ object = raptor_new_term_from_uri(world, RAPTOR_RDF_nil_URI(world));
+ if(!object)
+ goto err_collection;
+
+ for(i = raptor_sequence_size($2)-1; i>=0; i--) {
+ raptor_term* temp;
+ raptor_statement* t2 = (raptor_statement*)raptor_sequence_get_at($2, i);
+ const unsigned char *blank_id;
+
+ blank_id = raptor_world_generate_bnodeid(((raptor_parser*)rdf_parser)->world);
+ if(!blank_id)
+ goto err_collection;
+
+ blank = raptor_new_term_from_blank(((raptor_parser*)rdf_parser)->world,
+ blank_id);
+ RAPTOR_FREE(char*, blank_id);
+ if(!blank)
+ goto err_collection;
+
+ t2->subject = blank;
+ t2->predicate = first_identifier;
+ /* t2->object already set to the value we want */
+ raptor_turtle_generate_statement((raptor_parser*)rdf_parser, t2);
+
+ temp = t2->object;
+
+ t2->subject = blank;
+ t2->predicate = rest_identifier;
+ t2->object = object;
+ raptor_turtle_generate_statement((raptor_parser*)rdf_parser, t2);
+
+ t2->subject = NULL;
+ t2->predicate = NULL;
+ t2->object = temp;
+
+ raptor_free_term(object);
+ object = blank;
+ blank = NULL;
+ }
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf(" after substitution objectList=");
+ raptor_sequence_print($2, stdout);
+ printf("\n\n");
+#endif
+
+ raptor_free_sequence($2);
+
+ raptor_free_term(first_identifier);
+ raptor_free_term(rest_identifier);
+
+ $$=object;
+
+ break; /* success */
+
+ err_collection:
+
+ if(blank)
+ raptor_free_term(blank);
+
+ if(object)
+ raptor_free_term(object);
+
+ if(rest_identifier)
+ raptor_free_term(rest_identifier);
+
+ if(first_identifier)
+ raptor_free_term(first_identifier);
+
+ raptor_free_sequence($2);
+
+ YYERROR;
+}
+| LEFT_ROUND RIGHT_ROUND
+{
+ raptor_world* world = ((raptor_parser*)rdf_parser)->world;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("collection\n empty\n");
+#endif
+
+ $$ = raptor_new_term_from_uri(world, RAPTOR_RDF_nil_URI(world));
+ if(!$$)
+ YYERROR;
+}
+;
+
+
+%%
+
+
+/* Support functions */
+
+int
+turtle_parser_error(void* ctx, const char *msg)
+{
+ raptor_parser* rdf_parser = (raptor_parser *)ctx;
+ raptor_turtle_parser* turtle_parser;
+
+ turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+ if(turtle_parser->error_count++)
+ return 0;
+
+ rdf_parser->locator.line = turtle_parser->lineno;
+#ifdef RAPTOR_TURTLE_USE_ERROR_COLUMNS
+ rdf_parser->locator.column = turtle_lexer_get_column(yyscanner);
+#endif
+
+ raptor_log_error(rdf_parser->world, RAPTOR_LOG_LEVEL_ERROR,
+ &rdf_parser->locator, msg);
+
+ return 0;
+}
+
+
+int
+turtle_syntax_error(raptor_parser *rdf_parser, const char *message, ...)
+{
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+ va_list arguments;
+
+ if(turtle_parser->error_count++)
+ return 0;
+
+ rdf_parser->locator.line = turtle_parser->lineno;
+#ifdef RAPTOR_TURTLE_USE_ERROR_COLUMNS
+ rdf_parser->locator.column = turtle_lexer_get_column(yyscanner);
+#endif
+
+ va_start(arguments, message);
+
+ raptor_parser_log_error_varargs(((raptor_parser*)rdf_parser),
+ RAPTOR_LOG_LEVEL_ERROR, message, arguments);
+
+ va_end(arguments);
+
+ return 0;
+}
+
+
+raptor_uri*
+turtle_qname_to_uri(raptor_parser *rdf_parser, unsigned char *name, size_t name_len)
+{
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+ rdf_parser->locator.line = turtle_parser->lineno;
+#ifdef RAPTOR_TURTLE_USE_ERROR_COLUMNS
+ rdf_parser->locator.column = turtle_lexer_get_column(yyscanner);
+#endif
+
+ return raptor_qname_string_to_uri(&turtle_parser->namespaces, name, name_len);
+}
+
+
+
+#ifndef TURTLE_PUSH_PARSE
+static int
+turtle_parse(raptor_parser *rdf_parser, const char *string, size_t length)
+{
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+ int rc;
+
+ if(!string || !*string)
+ return 0;
+
+ if(turtle_lexer_lex_init(&turtle_parser->scanner))
+ return 1;
+ turtle_parser->scanner_set = 1;
+
+#if defined(YYDEBUG) && YYDEBUG > 0
+ turtle_parser_debug = 1;
+#endif
+
+ turtle_lexer_set_extra(rdf_parser, turtle_parser->scanner);
+ (void)turtle_lexer__scan_bytes((char *)string, (int)length, turtle_parser->scanner);
+
+ rc = turtle_parser_parse(rdf_parser);
+
+ turtle_lexer_lex_destroy(turtle_parser->scanner);
+ turtle_parser->scanner_set = 0;
+
+ return rc;
+}
+#endif
+
+
+#ifdef TURTLE_PUSH_PARSE
+static int
+turtle_push_parse(raptor_parser *rdf_parser,
+ const char *string, size_t length)
+{
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ raptor_world* world = rdf_parser->world;
+#endif
+ raptor_turtle_parser* turtle_parser;
+ void *buffer;
+ int status;
+ yypstate *ps;
+
+ turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+ if(!string || !*string)
+ return 0;
+
+ if(turtle_lexer_lex_init(&turtle_parser->scanner))
+ return 1;
+ turtle_parser->scanner_set = 1;
+
+#if defined(YYDEBUG) && YYDEBUG > 0
+ turtle_parser_debug = 1;
+#endif
+
+ turtle_lexer_set_extra(rdf_parser, turtle_parser->scanner);
+ buffer = turtle_lexer__scan_bytes(string, length, turtle_parser->scanner);
+
+ /* returns a parser instance or 0 on out of memory */
+ ps = yypstate_new();
+ if(!ps)
+ return 1;
+
+ do {
+ YYSTYPE lval;
+ int token;
+
+ memset(&lval, 0, sizeof(YYSTYPE));
+
+ token = turtle_lexer_lex(&lval, turtle_parser->scanner);
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ printf("token %s\n", turtle_token_print(world, token, &lval));
+#endif
+
+ status = yypush_parse(ps, token, &lval, rdf_parser);
+
+ /* turtle_token_free(world, token, &lval); */
+
+ if(!token || token == EOF || token == ERROR_TOKEN)
+ break;
+ } while (status == YYPUSH_MORE);
+ yypstate_delete(ps);
+
+ turtle_lexer_lex_destroy(turtle_parser->scanner);
+ turtle_parser->scanner_set = 0;
+
+ return 0;
+}
+#endif
+
+
+/**
+ * raptor_turtle_parse_init - Initialise the Raptor Turtle parser
+ *
+ * Return value: non 0 on failure
+ **/
+
+static int
+raptor_turtle_parse_init(raptor_parser* rdf_parser, const char *name) {
+ raptor_turtle_parser* turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+ if(raptor_namespaces_init(rdf_parser->world, &turtle_parser->namespaces, 0))
+ return 1;
+
+ turtle_parser->trig = !strcmp(name, "trig");
+
+ return 0;
+}
+
+
+/* PUBLIC FUNCTIONS */
+
+
+/*
+ * raptor_turtle_parse_terminate - Free the Raptor Turtle parser
+ * @rdf_parser: parser object
+ *
+ **/
+static void
+raptor_turtle_parse_terminate(raptor_parser *rdf_parser) {
+ raptor_turtle_parser *turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+ raptor_namespaces_clear(&turtle_parser->namespaces);
+
+ if(turtle_parser->scanner_set) {
+ turtle_lexer_lex_destroy(turtle_parser->scanner);
+ turtle_parser->scanner_set = 0;
+ }
+
+ if(turtle_parser->buffer)
+ RAPTOR_FREE(cdata, turtle_parser->buffer);
+
+ if(turtle_parser->graph_name) {
+ raptor_free_term(turtle_parser->graph_name);
+ turtle_parser->graph_name = NULL;
+ }
+}
+
+
+static void
+raptor_turtle_generate_statement(raptor_parser *parser, raptor_statement *t)
+{
+ raptor_turtle_parser *turtle_parser = (raptor_turtle_parser*)parser->context;
+ raptor_statement *statement = &parser->statement;
+
+ if(!t->subject || !t->predicate || !t->object)
+ return;
+
+ if(!parser->statement_handler)
+ return;
+
+ if(turtle_parser->trig && turtle_parser->graph_name)
+ statement->graph = raptor_term_copy(turtle_parser->graph_name);
+
+ if(!parser->emitted_default_graph && !turtle_parser->graph_name) {
+ /* for non-TRIG - start default graph at first triple */
+ raptor_parser_start_graph(parser, NULL, 0);
+ parser->emitted_default_graph++;
+ }
+
+ /* Two choices for subject for Turtle */
+ if(t->subject->type == RAPTOR_TERM_TYPE_BLANK) {
+ statement->subject = raptor_new_term_from_blank(parser->world,
+ t->subject->value.blank.string);
+ } else {
+ /* RAPTOR_TERM_TYPE_URI */
+ RAPTOR_ASSERT(t->subject->type != RAPTOR_TERM_TYPE_URI,
+ "subject type is not resource");
+ statement->subject = raptor_new_term_from_uri(parser->world,
+ t->subject->value.uri);
+ }
+
+ /* Predicates are URIs but check for bad ordinals */
+ if(!strncmp((const char*)raptor_uri_as_string(t->predicate->value.uri),
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#_", 44)) {
+ unsigned char* predicate_uri_string = raptor_uri_as_string(t->predicate->value.uri);
+ int predicate_ordinal = raptor_check_ordinal(predicate_uri_string+44);
+ if(predicate_ordinal <= 0)
+ raptor_parser_error(parser, "Illegal ordinal value %d in property '%s'.", predicate_ordinal, predicate_uri_string);
+ }
+
+ statement->predicate = raptor_new_term_from_uri(parser->world,
+ t->predicate->value.uri);
+
+
+ /* Three choices for object for Turtle */
+ if(t->object->type == RAPTOR_TERM_TYPE_URI) {
+ statement->object = raptor_new_term_from_uri(parser->world,
+ t->object->value.uri);
+ } else if(t->object->type == RAPTOR_TERM_TYPE_BLANK) {
+ statement->object = raptor_new_term_from_blank(parser->world,
+ t->object->value.blank.string);
+ } else {
+ /* RAPTOR_TERM_TYPE_LITERAL */
+ RAPTOR_ASSERT(t->object->type != RAPTOR_TERM_TYPE_LITERAL,
+ "object type is not literal");
+ statement->object = raptor_new_term_from_literal(parser->world,
+ t->object->value.literal.string,
+ t->object->value.literal.datatype,
+ t->object->value.literal.language);
+ }
+
+ /* Generate the statement */
+ (*parser->statement_handler)(parser->user_data, statement);
+
+ raptor_free_term(statement->subject); statement->subject = NULL;
+ raptor_free_term(statement->predicate); statement->predicate = NULL;
+ raptor_free_term(statement->object); statement->object = NULL;
+ if(statement->graph) {
+ raptor_free_term(statement->graph); statement->graph = NULL;
+ }
+}
+
+
+
+static int
+raptor_turtle_parse_chunk(raptor_parser* rdf_parser,
+ const unsigned char *s, size_t len,
+ int is_end)
+{
+ char *ptr;
+ raptor_turtle_parser *turtle_parser;
+ int rc;
+
+ turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG2("adding %d bytes to line buffer\n", (int)len);
+#endif
+
+ if(len) {
+ turtle_parser->buffer = RAPTOR_REALLOC(char*, turtle_parser->buffer,
+ turtle_parser->buffer_length + len + 1);
+ if(!turtle_parser->buffer) {
+ raptor_parser_fatal_error(rdf_parser, "Out of memory");
+ return 1;
+ }
+
+ /* move pointer to end of cdata buffer */
+ ptr = turtle_parser->buffer+turtle_parser->buffer_length;
+
+ /* adjust stored length */
+ turtle_parser->buffer_length += len;
+
+ /* now write new stuff at end of cdata buffer */
+ memcpy(ptr, s, len);
+ ptr += len;
+ *ptr = '\0';
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ RAPTOR_DEBUG3("buffer buffer now '%s' (%d bytes)\n",
+ turtle_parser->buffer, turtle_parser->buffer_length);
+#endif
+ }
+
+ /* if not end, wait for rest of input */
+ if(!is_end)
+ return 0;
+
+ /* Nothing to do */
+ if(!turtle_parser->buffer_length)
+ return 0;
+
+#ifdef TURTLE_PUSH_PARSE
+ rc = turtle_push_parse(rdf_parser,
+ turtle_parser->buffer, turtle_parser->buffer_length);
+#else
+ rc = turtle_parse(rdf_parser, turtle_parser->buffer, turtle_parser->buffer_length);
+#endif
+
+ if(rdf_parser->emitted_default_graph) {
+ /* for non-TRIG - end default graph after last triple */
+ raptor_parser_end_graph(rdf_parser, NULL, 0);
+ rdf_parser->emitted_default_graph--;
+ }
+ return rc;
+}
+
+
+static int
+raptor_turtle_parse_start(raptor_parser *rdf_parser)
+{
+ raptor_locator *locator=&rdf_parser->locator;
+ raptor_turtle_parser *turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+
+ /* base URI required for Turtle */
+ if(!rdf_parser->base_uri)
+ return 1;
+
+ locator->line = 1;
+ locator->column= -1; /* No column info */
+ locator->byte= -1; /* No bytes info */
+
+ if(turtle_parser->buffer_length) {
+ RAPTOR_FREE(cdata, turtle_parser->buffer);
+ turtle_parser->buffer = NULL;
+ turtle_parser->buffer_length = 0;
+ }
+
+ turtle_parser->lineno = 1;
+
+ return 0;
+}
+
+
+static int
+raptor_turtle_parse_recognise_syntax(raptor_parser_factory* factory,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier,
+ const unsigned char *suffix,
+ const char *mime_type)
+{
+ int score= 0;
+
+ if(suffix) {
+ if(!strcmp((const char*)suffix, "ttl"))
+ score = 8;
+ if(!strcmp((const char*)suffix, "n3"))
+ score = 3;
+ }
+
+ if(mime_type) {
+ if(strstr((const char*)mime_type, "turtle"))
+ score += 6;
+ if(strstr((const char*)mime_type, "n3"))
+ score += 3;
+ }
+
+ /* Do this as long as N3 is not supported since it shares the same syntax */
+ if(buffer && len) {
+#define HAS_TURTLE_PREFIX (raptor_memstr((const char*)buffer, len, "@prefix ") != NULL)
+/* The following could also be found with N-Triples but not with @prefix */
+#define HAS_TURTLE_RDF_URI (raptor_memstr((const char*)buffer, len, ": <http://www.w3.org/1999/02/22-rdf-syntax-ns#>") != NULL)
+
+ if(HAS_TURTLE_PREFIX) {
+ score = 6;
+ if(HAS_TURTLE_RDF_URI)
+ score += 2;
+ }
+ }
+
+ return score;
+}
+
+
+static raptor_uri*
+raptor_turtle_get_graph(raptor_parser* rdf_parser)
+{
+ raptor_turtle_parser *turtle_parser;
+
+ turtle_parser = (raptor_turtle_parser*)rdf_parser->context;
+ if(turtle_parser->graph_name)
+ return raptor_uri_copy(turtle_parser->graph_name->value.uri);
+
+ return NULL;
+}
+
+
+#ifdef RAPTOR_PARSER_TRIG
+static int
+raptor_trig_parse_recognise_syntax(raptor_parser_factory* factory,
+ const unsigned char *buffer, size_t len,
+ const unsigned char *identifier,
+ const unsigned char *suffix,
+ const char *mime_type)
+{
+ int score= 0;
+
+ if(suffix) {
+ if(!strcmp((const char*)suffix, "trig"))
+ score = 9;
+#ifndef RAPTOR_PARSER_TURTLE
+ if(!strcmp((const char*)suffix, "ttl"))
+ score = 8;
+ if(!strcmp((const char*)suffix, "n3"))
+ score = 3;
+#endif
+ }
+
+ if(mime_type) {
+ if(strstr((const char*)mime_type, "trig"))
+ score = 6;
+#ifndef RAPTOR_PARSER_TURTLE
+ if(strstr((const char*)mime_type, "turtle"))
+ score += 6;
+ if(strstr((const char*)mime_type, "n3"))
+ score += 3;
+#endif
+ }
+
+#ifndef RAPTOR_PARSER_TURTLE
+ /* Do this as long as N3 is not supported since it shares the same syntax */
+ if(buffer && len) {
+#define HAS_TRIG_PREFIX (raptor_memstr((const char*)buffer, len, "@prefix ") != NULL)
+/* The following could also be found with N-Triples but not with @prefix */
+#define HAS_TRIG_RDF_URI (raptor_memstr((const char*)buffer, len, ": <http://www.w3.org/1999/02/22-rdf-syntax-ns#>") != NULL)
+
+ if(HAS_TRIG_PREFIX) {
+ score = 6;
+ if(HAS_TRIG_RDF_URI)
+ score += 2;
+ }
+ }
+#endif
+
+ return score;
+}
+#endif
+
+
+#ifdef RAPTOR_PARSER_TURTLE
+static const char* const turtle_names[4] = { "turtle", "ntriples-plus", "n3", NULL };
+
+static const char* const turtle_uri_strings[3] = {
+ "http://www.w3.org/ns/formats/Turtle",
+ "http://www.dajobe.org/2004/01/turtle/",
+ NULL
+};
+
+#define TURTLE_TYPES_COUNT 6
+static const raptor_type_q turtle_types[TURTLE_TYPES_COUNT + 1] = {
+ /* first one is the default */
+ { "text/turtle", 11, 10},
+ { "application/x-turtle", 20, 10},
+ { "application/turtle", 18, 10},
+ { "text/n3", 7, 3},
+ { "text/rdf+n3", 11, 3},
+ { "application/rdf+n3", 18, 3},
+ { NULL, 0}
+};
+
+static int
+raptor_turtle_parser_register_factory(raptor_parser_factory *factory)
+{
+ int rc = 0;
+
+ factory->desc.names = turtle_names;
+
+ factory->desc.mime_types = turtle_types;
+
+ factory->desc.label = "Turtle Terse RDF Triple Language";
+ factory->desc.uri_strings = turtle_uri_strings;
+
+ factory->desc.flags = RAPTOR_SYNTAX_NEED_BASE_URI;
+
+ factory->context_length = sizeof(raptor_turtle_parser);
+
+ factory->init = raptor_turtle_parse_init;
+ factory->terminate = raptor_turtle_parse_terminate;
+ factory->start = raptor_turtle_parse_start;
+ factory->chunk = raptor_turtle_parse_chunk;
+ factory->recognise_syntax = raptor_turtle_parse_recognise_syntax;
+ factory->get_graph = raptor_turtle_get_graph;
+
+ return rc;
+}
+#endif
+
+
+#ifdef RAPTOR_PARSER_TRIG
+static const char* const trig_names[2] = { "trig", NULL };
+
+static const char* const trig_uri_strings[2] = {
+ "http://www.wiwiss.fu-berlin.de/suhl/bizer/TriG/Spec/",
+ NULL
+};
+
+#define TRIG_TYPES_COUNT 1
+static const raptor_type_q trig_types[TRIG_TYPES_COUNT + 1] = {
+ /* first one is the default */
+ { "application/x-trig", 18, 10},
+ { NULL, 0, 0}
+};
+
+static int
+raptor_trig_parser_register_factory(raptor_parser_factory *factory)
+{
+ int rc = 0;
+
+ factory->desc.names = trig_names;
+
+ factory->desc.mime_types = trig_types;
+
+ factory->desc.label = "TriG - Turtle with Named Graphs";
+ factory->desc.uri_strings = trig_uri_strings;
+
+ factory->desc.flags = RAPTOR_SYNTAX_NEED_BASE_URI;
+
+ factory->context_length = sizeof(raptor_turtle_parser);
+
+ factory->init = raptor_turtle_parse_init;
+ factory->terminate = raptor_turtle_parse_terminate;
+ factory->start = raptor_turtle_parse_start;
+ factory->chunk = raptor_turtle_parse_chunk;
+ factory->recognise_syntax = raptor_trig_parse_recognise_syntax;
+ factory->get_graph = raptor_turtle_get_graph;
+
+ return rc;
+}
+#endif
+
+
+#ifdef RAPTOR_PARSER_TURTLE
+int
+raptor_init_parser_turtle(raptor_world* world)
+{
+ return !raptor_world_register_parser_factory(world,
+ &raptor_turtle_parser_register_factory);
+}
+#endif
+
+#ifdef RAPTOR_PARSER_TRIG
+int
+raptor_init_parser_trig(raptor_world* world)
+{
+ return !raptor_world_register_parser_factory(world,
+ &raptor_trig_parser_register_factory);
+}
+#endif
+
+
+#ifdef STANDALONE
+#include <stdio.h>
+#include <locale.h>
+
+#define TURTLE_FILE_BUF_SIZE 2048
+
+static void
+turtle_parser_print_statement(void *user,
+ raptor_statement *statement)
+{
+ FILE* stream = (FILE*)user;
+ raptor_statement_print(statement, stream);
+ putc('\n', stream);
+}
+
+
+
+int
+main(int argc, char *argv[])
+{
+ char string[TURTLE_FILE_BUF_SIZE];
+ raptor_parser rdf_parser; /* static */
+ raptor_turtle_parser turtle_parser; /* static */
+ raptor_locator *locator = &rdf_parser.locator;
+ FILE *fh;
+ const char *filename;
+ size_t nobj;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 2
+ turtle_parser_debug = 1;
+#endif
+
+ if(argc > 1) {
+ filename = argv[1];
+ fh = fopen(filename, "r");
+ if(!fh) {
+ fprintf(stderr, "%s: Cannot open file %s - %s\n", argv[0], filename,
+ strerror(errno));
+ exit(1);
+ }
+ } else {
+ filename="<stdin>";
+ fh = stdin;
+ }
+
+ memset(string, 0, TURTLE_FILE_BUF_SIZE);
+ nobj = fread(string, TURTLE_FILE_BUF_SIZE, 1, fh);
+ if(nobj < TURTLE_FILE_BUF_SIZE) {
+ if(ferror(fh)) {
+ fprintf(stderr, "%s: file '%s' read failed - %s\n",
+ argv[0], filename, strerror(errno));
+ fclose(fh);
+ return(1);
+ }
+ }
+
+ if(argc > 1)
+ fclose(fh);
+
+ memset(&rdf_parser, 0, sizeof(rdf_parser));
+ memset(&turtle_parser, 0, sizeof(turtle_parser));
+
+ locator->line= locator->column = -1;
+ locator->file= filename;
+
+ turtle_parser.lineno= 1;
+
+ rdf_parser.world = raptor_new_world();
+ rdf_parser.context = &turtle_parser;
+ rdf_parser.base_uri = raptor_new_uri(rdf_parser.world,
+ (const unsigned char*)"http://example.org/fake-base-uri/");
+
+ raptor_parser_set_statement_handler(&rdf_parser, stdout,
+ turtle_parser_print_statement);
+ raptor_turtle_parse_init(&rdf_parser, "turtle");
+
+ turtle_parser.error_count = 0;
+
+#ifdef TURTLE_PUSH_PARSE
+ turtle_push_parse(&rdf_parser, string, strlen(string));
+#else
+ turtle_parse(&rdf_parser, string, strlen(string));
+#endif
+
+ raptor_turtle_parse_terminate(&rdf_parser);
+
+ raptor_free_uri(rdf_parser.base_uri);
+
+ raptor_free_world(rdf_parser.world);
+
+ return (0);
+}
+#endif
diff --git a/src/win32_raptor_config.h b/src/win32_raptor_config.h
new file mode 100644
index 0000000..713113e
--- /dev/null
+++ b/src/win32_raptor_config.h
@@ -0,0 +1,168 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * win32_config.h - Raptor WIN32 hard-coded config
+ *
+ * Copyright (C) 2002-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2002-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifndef WIN32_CONFIG_H
+#define WIN32_CONFIG_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define WIN32_LEAN_AND_MEAN 1
+
+/* getopt is not in standard win32 C library - define if we have it */
+/* #define HAVE_GETOPT_H 1 */
+
+#define HAVE_STDLIB_H 1
+
+#if 0
+/* For using expat on win32 */
+#define RAPTOR_XML_EXPAT 1
+#define HAVE_EXPAT_H 1
+
+#else
+/* For using libxml2 on win32 */
+#define RAPTOR_XML_LIBXML
+#define HAVE_LIBXML_XMLREADER_H
+/* does libxml struct xmlEntity have a field etype */
+/*#define RAPTOR_LIBXML_ENTITY_ETYPE*/
+
+/* does libxml struct xmlEntity have a field name_length */
+/*#define RAPTOR_LIBXML_ENTITY_NAME_LENGTH*/
+
+/* Define to 1 if you have the `xmlCtxtUseOptions' function. */
+#define HAVE_XMLCTXTUSEOPTIONS 1
+
+/* Define to 1 if you have the `xmlSAX2InternalSubset' function. */
+#define HAVE_XMLSAX2INTERNALSUBSET 1
+
+/* does libxml xmlSAXHandler have externalSubset field */
+/*#define RAPTOR_LIBXML_XMLSAXHANDLER_EXTERNALSUBSET*/
+
+/* does libxml xmlSAXHandler have initialized field */
+/*#define RAPTOR_LIBXML_XMLSAXHANDLER_INITIALIZED*/
+#endif
+
+#define HAVE_STRICMP 1
+
+/* MS names for these functions */
+#define vsnprintf _vsnprintf
+#define snprintf _snprintf
+#define access _access
+#define stricmp _stricmp
+#define strnicmp _strnicmp
+#define isnan(n) _isnan(n)
+
+/*#define HAVE_C99_VSNPRINTF */
+
+/* for access() which is POSIX but doesn't seem to have the defines in VC */
+#ifndef R_OK
+#define R_OK 4
+#endif
+
+/* __func__ doesn't exist in Visual Studio 6 */
+#define __func__ ""
+
+/*
+ * Defines that come from config.h
+ */
+
+/* Release version as a decimal */
+#define RAPTOR_VERSION_DECIMAL 20008
+
+/* Version number of package */
+#define RAPTOR_VERSION_STRING "2.0.8"
+
+/* Major version number */
+#define RAPTOR_VERSION_MAJOR 2
+
+/* Minor version number */
+#define RAPTOR_VERSION_MINOR 0
+
+/* Release version number */
+#define RAPTOR_VERSION_RELEASE 8
+
+
+#ifdef RAPTOR_XML_LIBXML
+/* RSS parser needs libxml 2.5.x+ */
+#define RAPTOR_PARSER_RSS 1
+#else
+#undef RAPTOR_PARSER_RSS
+#endif
+
+#define RAPTOR_PARSER_GUESS 1
+#define RAPTOR_PARSER_GRDDL 1
+#define RAPTOR_PARSER_N3 1
+#define RAPTOR_PARSER_TURTLE 1
+#define RAPTOR_PARSER_NTRIPLES 1
+#define RAPTOR_PARSER_RDFXML 1
+
+#define RAPTOR_SERIALIZER_ATOM 1
+#define RAPTOR_SERIALIZER_RSS_1_0 1
+#define RAPTOR_SERIALIZER_RDFXML 1
+#define RAPTOR_SERIALIZER_RDFXML_ABBREV 1
+#define RAPTOR_SERIALIZER_NTRIPLES 1
+
+#define RAPTOR_WWW_LIBCURL 1
+
+
+#include <windows.h>
+
+#include <io.h>
+#include <memory.h>
+
+/* bison: output uses ERROR in an enum which breaks if this is defined */
+#ifdef ERROR
+#undef ERROR
+#endif
+
+/* flex: const is available */
+#define YY_USE_CONST
+
+#undef RAPTOR_INLINE
+#define RAPTOR_INLINE __inline
+
+/* The size of a `unsigned char', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_CHAR 1
+
+/* The size of a `unsigned short', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT 2
+
+/* The size of a `unsigned int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_INT 4
+
+/* The size of a `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 4
+
+/* The size of a `unsigned long long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG_LONG 8
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/win32_raptor_config.h.in b/src/win32_raptor_config.h.in
new file mode 100644
index 0000000..637b852
--- /dev/null
+++ b/src/win32_raptor_config.h.in
@@ -0,0 +1,168 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * win32_config.h - Raptor WIN32 hard-coded config
+ *
+ * Copyright (C) 2002-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2002-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifndef WIN32_CONFIG_H
+#define WIN32_CONFIG_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define WIN32_LEAN_AND_MEAN 1
+
+/* getopt is not in standard win32 C library - define if we have it */
+/* #define HAVE_GETOPT_H 1 */
+
+#define HAVE_STDLIB_H 1
+
+#if 0
+/* For using expat on win32 */
+#define RAPTOR_XML_EXPAT 1
+#define HAVE_EXPAT_H 1
+
+#else
+/* For using libxml2 on win32 */
+#define RAPTOR_XML_LIBXML
+#define HAVE_LIBXML_XMLREADER_H
+/* does libxml struct xmlEntity have a field etype */
+/*#define RAPTOR_LIBXML_ENTITY_ETYPE*/
+
+/* does libxml struct xmlEntity have a field name_length */
+/*#define RAPTOR_LIBXML_ENTITY_NAME_LENGTH*/
+
+/* Define to 1 if you have the `xmlCtxtUseOptions' function. */
+#define HAVE_XMLCTXTUSEOPTIONS 1
+
+/* Define to 1 if you have the `xmlSAX2InternalSubset' function. */
+#define HAVE_XMLSAX2INTERNALSUBSET 1
+
+/* does libxml xmlSAXHandler have externalSubset field */
+/*#define RAPTOR_LIBXML_XMLSAXHANDLER_EXTERNALSUBSET*/
+
+/* does libxml xmlSAXHandler have initialized field */
+/*#define RAPTOR_LIBXML_XMLSAXHANDLER_INITIALIZED*/
+#endif
+
+#define HAVE_STRICMP 1
+
+/* MS names for these functions */
+#define vsnprintf _vsnprintf
+#define snprintf _snprintf
+#define access _access
+#define stricmp _stricmp
+#define strnicmp _strnicmp
+#define isnan(n) _isnan(n)
+
+/*#define HAVE_C99_VSNPRINTF */
+
+/* for access() which is POSIX but doesn't seem to have the defines in VC */
+#ifndef R_OK
+#define R_OK 4
+#endif
+
+/* __func__ doesn't exist in Visual Studio 6 */
+#define __func__ ""
+
+/*
+ * Defines that come from config.h
+ */
+
+/* Release version as a decimal */
+#define RAPTOR_VERSION_DECIMAL @RAPTOR_VERSION_DECIMAL@
+
+/* Version number of package */
+#define RAPTOR_VERSION_STRING "@VERSION@"
+
+/* Major version number */
+#define RAPTOR_VERSION_MAJOR @RAPTOR_VERSION_MAJOR@
+
+/* Minor version number */
+#define RAPTOR_VERSION_MINOR @RAPTOR_VERSION_MINOR@
+
+/* Release version number */
+#define RAPTOR_VERSION_RELEASE @RAPTOR_VERSION_RELEASE@
+
+
+#ifdef RAPTOR_XML_LIBXML
+/* RSS parser needs libxml 2.5.x+ */
+#define RAPTOR_PARSER_RSS 1
+#else
+#undef RAPTOR_PARSER_RSS
+#endif
+
+#define RAPTOR_PARSER_GUESS 1
+#define RAPTOR_PARSER_GRDDL 1
+#define RAPTOR_PARSER_N3 1
+#define RAPTOR_PARSER_TURTLE 1
+#define RAPTOR_PARSER_NTRIPLES 1
+#define RAPTOR_PARSER_RDFXML 1
+
+#define RAPTOR_SERIALIZER_ATOM 1
+#define RAPTOR_SERIALIZER_RSS_1_0 1
+#define RAPTOR_SERIALIZER_RDFXML 1
+#define RAPTOR_SERIALIZER_RDFXML_ABBREV 1
+#define RAPTOR_SERIALIZER_NTRIPLES 1
+
+#define RAPTOR_WWW_LIBCURL 1
+
+
+#include <windows.h>
+
+#include <io.h>
+#include <memory.h>
+
+/* bison: output uses ERROR in an enum which breaks if this is defined */
+#ifdef ERROR
+#undef ERROR
+#endif
+
+/* flex: const is available */
+#define YY_USE_CONST
+
+#undef RAPTOR_INLINE
+#define RAPTOR_INLINE __inline
+
+/* The size of a `unsigned char', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_CHAR 1
+
+/* The size of a `unsigned short', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT 2
+
+/* The size of a `unsigned int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_INT 4
+
+/* The size of a `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 4
+
+/* The size of a `unsigned long long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG_LONG 8
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644
index 0000000..f6d5025
--- /dev/null
+++ b/tests/Makefile.am
@@ -0,0 +1,44 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor tests
+#
+# Copyright (C) 2000-2008, David Beckett http://www.dajobe.org/
+# Copyright (C) 2000-2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+TESTS=raptor_empty_test$(EXEEXT)
+
+AM_CPPFLAGS=-I$(top_srcdir)/src
+AM_CFLAGS= -I$(top_builddir)/src @CFLAGS@ $(MEM)
+AM_LDFLAGS=$(top_builddir)/src/libraptor2.la $(MEM_LIBS)
+
+EXTRA_PROGRAMS=$(TESTS)
+
+CLEANFILES=$(TESTS)
+
+raptor_empty_test_SOURCES=empty.c
+
+
+# Used to make N-triples output consistent
+BASE_URI=http://librdf.org/raptor/tests/
+
+SUBDIRS = rdfxml ntriples turtle trig grddl rdfa rdfa11 json feeds
+
+
+$(top_builddir)/src/libraptor2.la:
+ cd $(top_builddir)/src && $(MAKE) $(AM_MAKEFLAGS) libraptor2.la
diff --git a/tests/Makefile.in b/tests/Makefile.in
new file mode 100644
index 0000000..24f0826
--- /dev/null
+++ b/tests/Makefile.in
@@ -0,0 +1,818 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor tests
+#
+# Copyright (C) 2000-2008, David Beckett http://www.dajobe.org/
+# Copyright (C) 2000-2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am_raptor_empty_test_OBJECTS = empty.$(OBJEXT)
+raptor_empty_test_OBJECTS = $(am_raptor_empty_test_OBJECTS)
+raptor_empty_test_LDADD = $(LDADD)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
+depcomp = $(SHELL) $(top_srcdir)/build/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(raptor_empty_test_SOURCES)
+DIST_SOURCES = $(raptor_empty_test_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = raptor_empty_test$(EXEEXT)
+AM_CPPFLAGS = -I$(top_srcdir)/src
+AM_CFLAGS = -I$(top_builddir)/src @CFLAGS@ $(MEM)
+AM_LDFLAGS = $(top_builddir)/src/libraptor2.la $(MEM_LIBS)
+EXTRA_PROGRAMS = $(TESTS)
+CLEANFILES = $(TESTS)
+raptor_empty_test_SOURCES = empty.c
+
+# Used to make N-triples output consistent
+BASE_URI = http://librdf.org/raptor/tests/
+SUBDIRS = rdfxml ntriples turtle trig grddl rdfa rdfa11 json feeds
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+raptor_empty_test$(EXEEXT): $(raptor_empty_test_OBJECTS) $(raptor_empty_test_DEPENDENCIES) $(EXTRA_raptor_empty_test_DEPENDENCIES)
+ @rm -f raptor_empty_test$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(raptor_empty_test_OBJECTS) $(raptor_empty_test_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/empty.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ fi; \
+ echo "$${col}$$dashes$${std}"; \
+ echo "$${col}$$banner$${std}"; \
+ test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
+ test -z "$$report" || echo "$${col}$$report$${std}"; \
+ echo "$${col}$$dashes$${std}"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
+ ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-TESTS check-am clean clean-generic \
+ clean-libtool ctags ctags-recursive distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am
+
+
+$(top_builddir)/src/libraptor2.la:
+ cd $(top_builddir)/src && $(MAKE) $(AM_MAKEFLAGS) libraptor2.la
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/empty.c b/tests/empty.c
new file mode 100644
index 0000000..aa23fac
--- /dev/null
+++ b/tests/empty.c
@@ -0,0 +1,33 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * empty.c - Raptor empty file test
+ *
+ * Copyright (C) 2004-2006, David Beckett http://purl.org/net/dajobe/
+ * Copyright (C) 2004-2004, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+#include <raptor2.h>
+
+int main(int argc, char *argv[]);
+
+int
+main(int argc, char *argv[])
+{
+ return 0;
+}
diff --git a/tests/feeds/Makefile.am b/tests/feeds/Makefile.am
new file mode 100644
index 0000000..c70536c
--- /dev/null
+++ b/tests/feeds/Makefile.am
@@ -0,0 +1,223 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor Feed tests
+#
+# Copyright (C) 2009, David Beckett http://www.dajobe.org/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+# Input RDF/XML (atom model) files - rdfxml parser
+TEST_IN_RDF_ATOMS= test01.rdf test02.rdf test03.rdf
+# Input Atom 1.0 (atom model) files - rss-tag-soup parser
+TEST_IN_ATOMS= test04.atom test05.atom
+
+# Output files in Turtle (after parsing) and Atom (after serializing)
+OUT_RDF_TTLS= $(TEST_IN_RDF_ATOMS:.rdf=.ttl)
+OUT_ATOM_TTLS= $(TEST_IN_ATOMS:.atom=.ttl)
+OUT_RDF_ATOMS= $(TEST_IN_RDF_ATOMS:.rdf=.atom)
+
+# Expected results for above
+EXPECTED_TTLS= $(OUT_RDF_TTLS:.ttl=-result.ttl) $(OUT_ATOM_TTLS:.ttl=-result.ttl)
+EXPECTED_ATOMS= $(OUT_RDF_ATOMS:.atom=-result.atom)
+
+# Files generated during testing (to delete/clean)
+OUT_TTLS = $(OUT_RDF_TTLS) $(OUT_ATOM_TTLS)
+OUT_ATOMS = $(OUT_RDF_ATOMS)
+
+EXTRA_DIST = \
+$(TEST_IN_RDF_ATOMS) $(TEST_IN_ATOMS) \
+$(EXPECTED_TTLS) $(EXPECTED_ATOMS) \
+atom.rng atom.rnc
+
+CLEANFILES = $(OUT_ATOMS) $(OUT_TTLS) errors.log
+
+RAPPER = $(top_builddir)/utils/rapper
+
+# http://www.thaiopensource.com/relaxng/trang.html
+TRANG = trang
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+FEED_TESTS=
+
+if RAPTOR_PARSER_RDFXML
+FEED_TESTS += check-rdfxml-to-turtle
+endif
+
+if RAPTOR_PARSER_RSS
+FEED_TESTS += check-atom-to-turtle
+endif
+
+if RAPTOR_SERIALIZER_ATOM
+FEED_TESTS += check-serialize-atom
+endif
+
+if MAINTAINER_MODE
+FEED_TESTS += check-validate-atom
+endif
+
+check-local: build-rapper $(FEED_TESTS)
+
+if MAINTAINER_MODE
+check_rdfxml_to_turtle_deps = $(TEST_IN_RDF_ATOMS)
+endif
+
+# Parse from RDF/XML and Serialize to Turtle
+check-rdfxml-to-turtle: $(check_rdfxml_to_turtle_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing RDF/XML to Turtle"; \
+ for test in $(TEST_IN_RDF_ATOMS); do \
+ parser=rdfxml; \
+ name=`basename $$test .rdf` ; \
+ turtle="$$name.ttl"; \
+ expected="$$name-result.ttl"; \
+ opts="-f writeBaseURI=0"; \
+ if test $$name = test01; then \
+ baseuri="http://example.org/whatsnew"; \
+ elif test $$name = test02; then \
+ baseuri="http://example.org/news/"; \
+ elif test $$name = test03; then \
+ baseuri="http://example.org"; \
+ fi; \
+ opts="-q -i $$parser -o turtle $$opts -O $$baseuri"; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) $$opts file:$(srcdir)/$$test > $$turtle 2> errors.log; \
+ status=$$?; \
+ if test $$status != 0; then \
+ $(RECHO) "FAILED with code $$status"; \
+ $(RECHO) "$(RAPPER) $$opts file:$(srcdir)/$$test"; \
+ cat errors.log ; \
+ result=1 ; \
+ elif cmp $(srcdir)/$$expected $$turtle >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ $(RECHO) "$(RAPPER) $$opts file:$(srcdir)/$$test"; \
+ diff -u $(srcdir)/$$expected $$turtle; result=1; \
+ fi; \
+ rm -f errors.log ; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_atom_to_turtle_deps = $(TEST_IN_ATOMS)
+endif
+
+# Parser from Atom and Serialize to Turtle
+check-atom-to-turtle: $(check_atom_to_turtle_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing Atom to Turtle"; \
+ for test in $(TEST_IN_ATOMS); do \
+ parser=rss-tag-soup; \
+ name=`basename $$test .atom` ; \
+ turtle="$$name.ttl"; \
+ expected="$$name-result.ttl"; \
+ opts="-f writeBaseURI=0"; \
+ baseuri="http://www.example.org/blog/"; \
+ if test $$name = test04; then \
+ baseuri="http://www.example.org/blog/"; \
+ fi; \
+ opts="-q -i $$parser -o turtle $$opts -O $$baseuri"; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) $$opts file:$(srcdir)/$$test > $$turtle 2> errors.log; \
+ status=$$?; \
+ if test $$status != 0; then \
+ $(RECHO) "FAILED with code $$status"; \
+ $(RECHO) "$(RAPPER) $$opts file:$(srcdir)/$$test"; \
+ cat errors.log ; \
+ result=1 ; \
+ elif cmp $(srcdir)/$$expected $$turtle >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ $(RECHO) "$(RAPPER) $$opts file:$(srcdir)/$$test"; \
+ diff -u $(srcdir)/$$expected $$turtle; result=1; \
+ fi; \
+ rm -f errors.log ; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_serialize_atom_deps = $(OUT_RDF_TTLS)
+endif
+
+# Parser from Turtle and Serialize to Atom
+check-serialize-atom: $(check_serialize_atom_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing Turtle to Atom XML"; \
+ for test in $(OUT_RDF_TTLS); do \
+ name=`basename $$test .ttl` ; \
+ atom="$$name.atom"; \
+ expected="$$name-result.atom"; \
+ opts="-f writeBaseURI=0 -f rssTriples=atom-triples"; \
+ if test $$name = test01; then \
+ baseuri="http://example.org/whatsnew"; \
+ opts="$$opts -f atomEntryUri=http://example.org/2006/03/28/blog-item"; \
+ elif test $$name = test02; then \
+ baseuri="http://example.org/news/"; \
+ elif test $$name = test03; then \
+ baseuri="http://example.org"; \
+ fi; \
+ opts="-q -i turtle -o atom $$opts -I $$baseuri -O $$baseuri"; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) $$opts file:$$test > $$atom 2> errors.log; \
+ status=$$?; \
+ if test $$status != 0; then \
+ $(RECHO) "FAILED with code $$status"; \
+ $(RECHO) "$(RAPPER) $$opts file:$$test"; \
+ cat errors.log ; \
+ result=1 ; \
+ elif cmp $(srcdir)/$$expected $$atom >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ $(RECHO) "$(RAPPER) $$opts file:$(srcdir)/$$test"; \
+ diff -u $(srcdir)/$$expected $$atom; result=1; \
+ fi; \
+ rm -f errors.log ; \
+ done; \
+ set -e; exit $$result
+
+
+if MAINTAINER_MODE
+SUFFIXES = .rng .rnc
+
+.rnc.rng:
+ $(TRANG) $< $@
+
+check-validate-atom: $(srcdir)/atom.rng $(OUT_ATOMS) $(TEST_IN_ATOMS)
+ @set +e; result=0; \
+ $(RECHO) "Validating Atom XML with RelaxNG"; \
+ for atom in $(OUT_ATOMS) $(TEST_IN_ATOMS); do \
+ test -f $$atom || atom=$(srcdir)/$$atom; \
+ $(RECHO) $(RECHO_N) "Validating $$atom $(RECHO_C)"; \
+ jing $(srcdir)/atom.rng $$atom > errors.log 2>&1; \
+ status=$$?; \
+ if test $$status != 0; then \
+ $(RECHO) "FAILED with code $$status"; result=1; \
+ $(RECHO) jing $(srcdir)/atom.rng $$atom; \
+ sed -e "s,^.*$$atom,$$atom," errors.log ; \
+ result=1 ; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ rm -f errors.log; \
+ done; \
+ set -e; exit $$result
+
+endif
diff --git a/tests/feeds/Makefile.in b/tests/feeds/Makefile.in
new file mode 100644
index 0000000..36bba5a
--- /dev/null
+++ b/tests/feeds/Makefile.in
@@ -0,0 +1,621 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor Feed tests
+#
+# Copyright (C) 2009, David Beckett http://www.dajobe.org/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@RAPTOR_PARSER_RDFXML_TRUE@am__append_1 = check-rdfxml-to-turtle
+@RAPTOR_PARSER_RSS_TRUE@am__append_2 = check-atom-to-turtle
+@RAPTOR_SERIALIZER_ATOM_TRUE@am__append_3 = check-serialize-atom
+@MAINTAINER_MODE_TRUE@am__append_4 = check-validate-atom
+subdir = tests/feeds
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Input RDF/XML (atom model) files - rdfxml parser
+TEST_IN_RDF_ATOMS = test01.rdf test02.rdf test03.rdf
+# Input Atom 1.0 (atom model) files - rss-tag-soup parser
+TEST_IN_ATOMS = test04.atom test05.atom
+
+# Output files in Turtle (after parsing) and Atom (after serializing)
+OUT_RDF_TTLS = $(TEST_IN_RDF_ATOMS:.rdf=.ttl)
+OUT_ATOM_TTLS = $(TEST_IN_ATOMS:.atom=.ttl)
+OUT_RDF_ATOMS = $(TEST_IN_RDF_ATOMS:.rdf=.atom)
+
+# Expected results for above
+EXPECTED_TTLS = $(OUT_RDF_TTLS:.ttl=-result.ttl) $(OUT_ATOM_TTLS:.ttl=-result.ttl)
+EXPECTED_ATOMS = $(OUT_RDF_ATOMS:.atom=-result.atom)
+
+# Files generated during testing (to delete/clean)
+OUT_TTLS = $(OUT_RDF_TTLS) $(OUT_ATOM_TTLS)
+OUT_ATOMS = $(OUT_RDF_ATOMS)
+EXTRA_DIST = \
+$(TEST_IN_RDF_ATOMS) $(TEST_IN_ATOMS) \
+$(EXPECTED_TTLS) $(EXPECTED_ATOMS) \
+atom.rng atom.rnc
+
+CLEANFILES = $(OUT_ATOMS) $(OUT_TTLS) errors.log
+RAPPER = $(top_builddir)/utils/rapper
+
+# http://www.thaiopensource.com/relaxng/trang.html
+TRANG = trang
+FEED_TESTS = $(am__append_1) $(am__append_2) $(am__append_3) \
+ $(am__append_4)
+@MAINTAINER_MODE_TRUE@check_rdfxml_to_turtle_deps = $(TEST_IN_RDF_ATOMS)
+@MAINTAINER_MODE_TRUE@check_atom_to_turtle_deps = $(TEST_IN_ATOMS)
+@MAINTAINER_MODE_TRUE@check_serialize_atom_deps = $(OUT_RDF_TTLS)
+@MAINTAINER_MODE_TRUE@SUFFIXES = .rng .rnc
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .rng .rnc
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/feeds/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/feeds/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-am check-local clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+check-local: build-rapper $(FEED_TESTS)
+
+# Parse from RDF/XML and Serialize to Turtle
+check-rdfxml-to-turtle: $(check_rdfxml_to_turtle_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing RDF/XML to Turtle"; \
+ for test in $(TEST_IN_RDF_ATOMS); do \
+ parser=rdfxml; \
+ name=`basename $$test .rdf` ; \
+ turtle="$$name.ttl"; \
+ expected="$$name-result.ttl"; \
+ opts="-f writeBaseURI=0"; \
+ if test $$name = test01; then \
+ baseuri="http://example.org/whatsnew"; \
+ elif test $$name = test02; then \
+ baseuri="http://example.org/news/"; \
+ elif test $$name = test03; then \
+ baseuri="http://example.org"; \
+ fi; \
+ opts="-q -i $$parser -o turtle $$opts -O $$baseuri"; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) $$opts file:$(srcdir)/$$test > $$turtle 2> errors.log; \
+ status=$$?; \
+ if test $$status != 0; then \
+ $(RECHO) "FAILED with code $$status"; \
+ $(RECHO) "$(RAPPER) $$opts file:$(srcdir)/$$test"; \
+ cat errors.log ; \
+ result=1 ; \
+ elif cmp $(srcdir)/$$expected $$turtle >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ $(RECHO) "$(RAPPER) $$opts file:$(srcdir)/$$test"; \
+ diff -u $(srcdir)/$$expected $$turtle; result=1; \
+ fi; \
+ rm -f errors.log ; \
+ done; \
+ set -e; exit $$result
+
+# Parser from Atom and Serialize to Turtle
+check-atom-to-turtle: $(check_atom_to_turtle_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing Atom to Turtle"; \
+ for test in $(TEST_IN_ATOMS); do \
+ parser=rss-tag-soup; \
+ name=`basename $$test .atom` ; \
+ turtle="$$name.ttl"; \
+ expected="$$name-result.ttl"; \
+ opts="-f writeBaseURI=0"; \
+ baseuri="http://www.example.org/blog/"; \
+ if test $$name = test04; then \
+ baseuri="http://www.example.org/blog/"; \
+ fi; \
+ opts="-q -i $$parser -o turtle $$opts -O $$baseuri"; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) $$opts file:$(srcdir)/$$test > $$turtle 2> errors.log; \
+ status=$$?; \
+ if test $$status != 0; then \
+ $(RECHO) "FAILED with code $$status"; \
+ $(RECHO) "$(RAPPER) $$opts file:$(srcdir)/$$test"; \
+ cat errors.log ; \
+ result=1 ; \
+ elif cmp $(srcdir)/$$expected $$turtle >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ $(RECHO) "$(RAPPER) $$opts file:$(srcdir)/$$test"; \
+ diff -u $(srcdir)/$$expected $$turtle; result=1; \
+ fi; \
+ rm -f errors.log ; \
+ done; \
+ set -e; exit $$result
+
+# Parser from Turtle and Serialize to Atom
+check-serialize-atom: $(check_serialize_atom_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing Turtle to Atom XML"; \
+ for test in $(OUT_RDF_TTLS); do \
+ name=`basename $$test .ttl` ; \
+ atom="$$name.atom"; \
+ expected="$$name-result.atom"; \
+ opts="-f writeBaseURI=0 -f rssTriples=atom-triples"; \
+ if test $$name = test01; then \
+ baseuri="http://example.org/whatsnew"; \
+ opts="$$opts -f atomEntryUri=http://example.org/2006/03/28/blog-item"; \
+ elif test $$name = test02; then \
+ baseuri="http://example.org/news/"; \
+ elif test $$name = test03; then \
+ baseuri="http://example.org"; \
+ fi; \
+ opts="-q -i turtle -o atom $$opts -I $$baseuri -O $$baseuri"; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) $$opts file:$$test > $$atom 2> errors.log; \
+ status=$$?; \
+ if test $$status != 0; then \
+ $(RECHO) "FAILED with code $$status"; \
+ $(RECHO) "$(RAPPER) $$opts file:$$test"; \
+ cat errors.log ; \
+ result=1 ; \
+ elif cmp $(srcdir)/$$expected $$atom >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ $(RECHO) "$(RAPPER) $$opts file:$(srcdir)/$$test"; \
+ diff -u $(srcdir)/$$expected $$atom; result=1; \
+ fi; \
+ rm -f errors.log ; \
+ done; \
+ set -e; exit $$result
+
+@MAINTAINER_MODE_TRUE@.rnc.rng:
+@MAINTAINER_MODE_TRUE@ $(TRANG) $< $@
+
+@MAINTAINER_MODE_TRUE@check-validate-atom: $(srcdir)/atom.rng $(OUT_ATOMS) $(TEST_IN_ATOMS)
+@MAINTAINER_MODE_TRUE@ @set +e; result=0; \
+@MAINTAINER_MODE_TRUE@ $(RECHO) "Validating Atom XML with RelaxNG"; \
+@MAINTAINER_MODE_TRUE@ for atom in $(OUT_ATOMS) $(TEST_IN_ATOMS); do \
+@MAINTAINER_MODE_TRUE@ test -f $$atom || atom=$(srcdir)/$$atom; \
+@MAINTAINER_MODE_TRUE@ $(RECHO) $(RECHO_N) "Validating $$atom $(RECHO_C)"; \
+@MAINTAINER_MODE_TRUE@ jing $(srcdir)/atom.rng $$atom > errors.log 2>&1; \
+@MAINTAINER_MODE_TRUE@ status=$$?; \
+@MAINTAINER_MODE_TRUE@ if test $$status != 0; then \
+@MAINTAINER_MODE_TRUE@ $(RECHO) "FAILED with code $$status"; result=1; \
+@MAINTAINER_MODE_TRUE@ $(RECHO) jing $(srcdir)/atom.rng $$atom; \
+@MAINTAINER_MODE_TRUE@ sed -e "s,^.*$$atom,$$atom," errors.log ; \
+@MAINTAINER_MODE_TRUE@ result=1 ; \
+@MAINTAINER_MODE_TRUE@ else \
+@MAINTAINER_MODE_TRUE@ $(RECHO) "ok"; \
+@MAINTAINER_MODE_TRUE@ fi; \
+@MAINTAINER_MODE_TRUE@ rm -f errors.log; \
+@MAINTAINER_MODE_TRUE@ done; \
+@MAINTAINER_MODE_TRUE@ set -e; exit $$result
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/feeds/atom.rnc b/tests/feeds/atom.rnc
new file mode 100644
index 0000000..c657b24
--- /dev/null
+++ b/tests/feeds/atom.rnc
@@ -0,0 +1,334 @@
+# -*- rnc -*-
+# RELAX NG Compact Syntax Grammar for the
+# Atom Format Specification Version 11
+
+namespace atom = "http://www.w3.org/2005/Atom"
+namespace xhtml = "http://www.w3.org/1999/xhtml"
+namespace s = "http://www.ascc.net/xml/schematron"
+namespace local = ""
+
+start = atomFeed | atomEntry
+
+# Common attributes
+
+atomCommonAttributes =
+ attribute xml:base { atomUri }?,
+ attribute xml:lang { atomLanguageTag }?,
+ undefinedAttribute*
+
+# Text Constructs
+atomPlainTextConstruct =
+ atomCommonAttributes,
+ attribute type { "text" | "html" }?,
+ text
+
+atomXHTMLTextConstruct =
+ atomCommonAttributes,
+ attribute type { "xhtml" },
+ xhtmlDiv
+
+atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct
+
+# Person Construct
+
+atomPersonConstruct =
+ atomCommonAttributes,
+ (element atom:name { text }
+ & element atom:uri { atomUri }?
+ & element atom:email { atomEmailAddress }?
+ & extensionElement*)
+
+# Date Construct
+
+atomDateConstruct =
+ atomCommonAttributes,
+ xsd:dateTime
+
+# atom:feed
+
+atomFeed =
+ [
+ s:rule [
+ context = "atom:feed"
+ s:assert [
+ test = "atom:author or not(atom:entry[not(atom:author)])"
+ "An atom:feed must have an atom:author unless all "
+ ~ "of its atom:entry children have an atom:author."
+ ]
+ ]
+ ]
+ element atom:feed {
+ atomCommonAttributes,
+ (atomAuthor*
+ & atomCategory*
+ & atomContributor*
+ & atomGenerator?
+ & atomIcon?
+ & atomId
+ & atomLink*
+ & atomLogo?
+ & atomRights?
+ & atomSubtitle?
+ & atomTitle
+ & atomUpdated
+ & extensionElement*),
+ atomEntry*
+ }
+
+# atom:entry
+
+atomEntry =
+ [
+ s:rule [
+ context = "atom:entry"
+ s:assert [
+ test = "atom:link[@rel='alternate'] "
+ ~ "or atom:link[not(@rel)] "
+ ~ "or atom:content"
+ "An atom:entry must have at least one atom:link element "
+ ~ "with a rel attribute of 'alternate' "
+ ~ "or an atom:content."
+ ]
+ ]
+ s:rule [
+ context = "atom:entry"
+ s:assert [
+ test = "atom:author or "
+ ~ "../atom:author or atom:source/atom:author"
+ "An atom:entry must have an atom:author "
+ ~ "if its feed does not."
+ ]
+ ]
+ ]
+ element atom:entry {
+ atomCommonAttributes,
+ (atomAuthor*
+ & atomCategory*
+ & atomContent?
+ & atomContributor*
+ & atomId
+ & atomLink*
+ & atomPublished?
+ & atomRights?
+ & atomSource?
+ & atomSummary?
+ & atomTitle
+ & atomUpdated
+ & extensionElement*)
+ }
+
+# atom:content
+
+atomInlineTextContent =
+ element atom:content {
+ atomCommonAttributes,
+ attribute type { "text" | "html" }?,
+ (text)*
+ }
+
+atomInlineXHTMLContent =
+ element atom:content {
+ atomCommonAttributes,
+ attribute type { "xhtml" },
+ xhtmlDiv
+ }
+
+atomInlineOtherContent =
+ element atom:content {
+ atomCommonAttributes,
+ attribute type { atomMediaType }?,
+ (text|anyElement)*
+ }
+
+atomOutOfLineContent =
+ element atom:content {
+ atomCommonAttributes,
+ attribute type { atomMediaType }?,
+ attribute src { atomUri },
+ empty
+ }
+
+atomContent = atomInlineTextContent
+ | atomInlineXHTMLContent
+ | atomInlineOtherContent
+ | atomOutOfLineContent
+
+# atom:author
+
+atomAuthor = element atom:author { atomPersonConstruct }
+
+# atom:category
+
+atomCategory =
+ element atom:category {
+ atomCommonAttributes,
+ attribute term { text },
+ attribute scheme { atomUri }?,
+ attribute label { text }?,
+ undefinedContent
+ }
+
+# atom:contributor
+
+atomContributor = element atom:contributor { atomPersonConstruct }
+
+# atom:generator
+
+atomGenerator = element atom:generator {
+ atomCommonAttributes,
+ attribute uri { atomUri }?,
+ attribute version { text }?,
+ text
+}
+
+# atom:icon
+
+atomIcon = element atom:icon {
+ atomCommonAttributes,
+ (atomUri)
+}
+
+# atom:id
+
+atomId = element atom:id {
+ atomCommonAttributes,
+ (atomUri)
+}
+
+# atom:logo
+
+atomLogo = element atom:logo {
+ atomCommonAttributes,
+ (atomUri)
+}
+
+# atom:link
+
+atomLink =
+ element atom:link {
+ atomCommonAttributes,
+ attribute href { atomUri },
+ attribute rel { atomNCName | atomUri }?,
+ attribute type { atomMediaType }?,
+ attribute hreflang { atomLanguageTag }?,
+ attribute title { text }?,
+ attribute length { text }?,
+ undefinedContent
+ }
+
+# atom:published
+
+atomPublished = element atom:published { atomDateConstruct }
+
+# atom:rights
+
+atomRights = element atom:rights { atomTextConstruct }
+
+# atom:source
+
+atomSource =
+ element atom:source {
+ atomCommonAttributes,
+ (atomAuthor*
+ & atomCategory*
+ & atomContributor*
+ & atomGenerator?
+ & atomIcon?
+ & atomId?
+ & atomLink*
+ & atomLogo?
+ & atomRights?
+ & atomSubtitle?
+ & atomTitle?
+ & atomUpdated?
+ & extensionElement*)
+ }
+
+# atom:subtitle
+
+atomSubtitle = element atom:subtitle { atomTextConstruct }
+
+# atom:summary
+
+atomSummary = element atom:summary { atomTextConstruct }
+
+# atom:title
+
+atomTitle = element atom:title { atomTextConstruct }
+
+# atom:updated
+atomUpdated = element atom:updated { atomDateConstruct }
+
+# Low-level simple types
+
+atomNCName = xsd:string { minLength = "1" pattern = "[^:]*" }
+
+# Whatever a media type is, it contains at least one slash
+atomMediaType = xsd:string { pattern = ".+/.+" }
+
+# As defined in RFC 3066
+atomLanguageTag = xsd:string {
+ pattern = "[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*"
+}
+
+# Unconstrained; it's not entirely clear how IRI fit into
+# xsd:anyURI so let's not try to constrain it here
+atomUri = text
+
+# Whatever an email address is, it contains at least one @
+atomEmailAddress = xsd:string { pattern = ".+@.+" }
+
+# Simple Extension
+
+simpleExtensionElement =
+ element * - atom:* {
+ text
+ }
+
+# Structured Extension
+
+structuredExtensionElement =
+ element * - atom:* {
+ (attribute * { text }+,
+ (text|anyElement)*)
+ | (attribute * { text }*,
+ (text?, anyElement+, (text|anyElement)*))
+ }
+
+# Other Extensibility
+
+extensionElement =
+ simpleExtensionElement | structuredExtensionElement
+
+undefinedAttribute =
+ attribute * - (xml:base | xml:lang | local:*) { text }
+
+undefinedContent = (text|anyForeignElement)*
+
+anyElement =
+ element * {
+ (attribute * { text }
+ | text
+ | anyElement)*
+ }
+
+anyForeignElement =
+ element * - atom:* {
+ (attribute * { text }
+ | text
+ | anyElement)*
+ }
+
+# XHTML
+
+anyXHTML = element xhtml:* {
+ (attribute * { text }
+ | text
+ | anyXHTML)*
+}
+
+xhtmlDiv = element xhtml:div {
+ (attribute * { text }
+ | text
+ | anyXHTML)*
+}
diff --git a/tests/feeds/atom.rng b/tests/feeds/atom.rng
new file mode 100644
index 0000000..c2df4e4
--- /dev/null
+++ b/tests/feeds/atom.rng
@@ -0,0 +1,597 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ -*- rnc -*-
+ RELAX NG Compact Syntax Grammar for the
+ Atom Format Specification Version 11
+-->
+<grammar xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:s="http://www.ascc.net/xml/schematron" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <choice>
+ <ref name="atomFeed"/>
+ <ref name="atomEntry"/>
+ </choice>
+ </start>
+ <!-- Common attributes -->
+ <define name="atomCommonAttributes">
+ <optional>
+ <attribute name="xml:base">
+ <ref name="atomUri"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xml:lang">
+ <ref name="atomLanguageTag"/>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="undefinedAttribute"/>
+ </zeroOrMore>
+ </define>
+ <!-- Text Constructs -->
+ <define name="atomPlainTextConstruct">
+ <ref name="atomCommonAttributes"/>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>text</value>
+ <value>html</value>
+ </choice>
+ </attribute>
+ </optional>
+ <text/>
+ </define>
+ <define name="atomXHTMLTextConstruct">
+ <ref name="atomCommonAttributes"/>
+ <attribute name="type">
+ <value>xhtml</value>
+ </attribute>
+ <ref name="xhtmlDiv"/>
+ </define>
+ <define name="atomTextConstruct">
+ <choice>
+ <ref name="atomPlainTextConstruct"/>
+ <ref name="atomXHTMLTextConstruct"/>
+ </choice>
+ </define>
+ <!-- Person Construct -->
+ <define name="atomPersonConstruct">
+ <ref name="atomCommonAttributes"/>
+ <interleave>
+ <element name="atom:name">
+ <text/>
+ </element>
+ <optional>
+ <element name="atom:uri">
+ <ref name="atomUri"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="atom:email">
+ <ref name="atomEmailAddress"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <ref name="extensionElement"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <!-- Date Construct -->
+ <define name="atomDateConstruct">
+ <ref name="atomCommonAttributes"/>
+ <data type="dateTime"/>
+ </define>
+ <!-- atom:feed -->
+ <define name="atomFeed">
+ <element name="atom:feed">
+ <s:rule context="atom:feed">
+ <s:assert test="atom:author or not(atom:entry[not(atom:author)])">An atom:feed must have an atom:author unless all of its atom:entry children have an atom:author.</s:assert>
+ </s:rule>
+ <ref name="atomCommonAttributes"/>
+ <interleave>
+ <zeroOrMore>
+ <ref name="atomAuthor"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="atomCategory"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="atomContributor"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="atomGenerator"/>
+ </optional>
+ <optional>
+ <ref name="atomIcon"/>
+ </optional>
+ <ref name="atomId"/>
+ <zeroOrMore>
+ <ref name="atomLink"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="atomLogo"/>
+ </optional>
+ <optional>
+ <ref name="atomRights"/>
+ </optional>
+ <optional>
+ <ref name="atomSubtitle"/>
+ </optional>
+ <ref name="atomTitle"/>
+ <ref name="atomUpdated"/>
+ <zeroOrMore>
+ <ref name="extensionElement"/>
+ </zeroOrMore>
+ </interleave>
+ <zeroOrMore>
+ <ref name="atomEntry"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <!-- atom:entry -->
+ <define name="atomEntry">
+ <element name="atom:entry">
+ <s:rule context="atom:entry">
+ <s:assert test="atom:link[@rel='alternate'] or atom:link[not(@rel)] or atom:content">An atom:entry must have at least one atom:link element with a rel attribute of 'alternate' or an atom:content.</s:assert>
+ </s:rule>
+ <s:rule context="atom:entry">
+ <s:assert test="atom:author or ../atom:author or atom:source/atom:author">An atom:entry must have an atom:author if its feed does not.</s:assert>
+ </s:rule>
+ <ref name="atomCommonAttributes"/>
+ <interleave>
+ <zeroOrMore>
+ <ref name="atomAuthor"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="atomCategory"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="atomContent"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="atomContributor"/>
+ </zeroOrMore>
+ <ref name="atomId"/>
+ <zeroOrMore>
+ <ref name="atomLink"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="atomPublished"/>
+ </optional>
+ <optional>
+ <ref name="atomRights"/>
+ </optional>
+ <optional>
+ <ref name="atomSource"/>
+ </optional>
+ <optional>
+ <ref name="atomSummary"/>
+ </optional>
+ <ref name="atomTitle"/>
+ <ref name="atomUpdated"/>
+ <zeroOrMore>
+ <ref name="extensionElement"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <!-- atom:content -->
+ <define name="atomInlineTextContent">
+ <element name="atom:content">
+ <ref name="atomCommonAttributes"/>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>text</value>
+ <value>html</value>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <text/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="atomInlineXHTMLContent">
+ <element name="atom:content">
+ <ref name="atomCommonAttributes"/>
+ <attribute name="type">
+ <value>xhtml</value>
+ </attribute>
+ <ref name="xhtmlDiv"/>
+ </element>
+ </define>
+ <define name="atomInlineOtherContent">
+ <element name="atom:content">
+ <ref name="atomCommonAttributes"/>
+ <optional>
+ <attribute name="type">
+ <ref name="atomMediaType"/>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="anyElement"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="atomOutOfLineContent">
+ <element name="atom:content">
+ <ref name="atomCommonAttributes"/>
+ <optional>
+ <attribute name="type">
+ <ref name="atomMediaType"/>
+ </attribute>
+ </optional>
+ <attribute name="src">
+ <ref name="atomUri"/>
+ </attribute>
+ <empty/>
+ </element>
+ </define>
+ <define name="atomContent">
+ <choice>
+ <ref name="atomInlineTextContent"/>
+ <ref name="atomInlineXHTMLContent"/>
+ <ref name="atomInlineOtherContent"/>
+ <ref name="atomOutOfLineContent"/>
+ </choice>
+ </define>
+ <!-- atom:author -->
+ <define name="atomAuthor">
+ <element name="atom:author">
+ <ref name="atomPersonConstruct"/>
+ </element>
+ </define>
+ <!-- atom:category -->
+ <define name="atomCategory">
+ <element name="atom:category">
+ <ref name="atomCommonAttributes"/>
+ <attribute name="term"/>
+ <optional>
+ <attribute name="scheme">
+ <ref name="atomUri"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="label"/>
+ </optional>
+ <ref name="undefinedContent"/>
+ </element>
+ </define>
+ <!-- atom:contributor -->
+ <define name="atomContributor">
+ <element name="atom:contributor">
+ <ref name="atomPersonConstruct"/>
+ </element>
+ </define>
+ <!-- atom:generator -->
+ <define name="atomGenerator">
+ <element name="atom:generator">
+ <ref name="atomCommonAttributes"/>
+ <optional>
+ <attribute name="uri">
+ <ref name="atomUri"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="version"/>
+ </optional>
+ <text/>
+ </element>
+ </define>
+ <!-- atom:icon -->
+ <define name="atomIcon">
+ <element name="atom:icon">
+ <ref name="atomCommonAttributes"/>
+ <ref name="atomUri"/>
+ </element>
+ </define>
+ <!-- atom:id -->
+ <define name="atomId">
+ <element name="atom:id">
+ <ref name="atomCommonAttributes"/>
+ <ref name="atomUri"/>
+ </element>
+ </define>
+ <!-- atom:logo -->
+ <define name="atomLogo">
+ <element name="atom:logo">
+ <ref name="atomCommonAttributes"/>
+ <ref name="atomUri"/>
+ </element>
+ </define>
+ <!-- atom:link -->
+ <define name="atomLink">
+ <element name="atom:link">
+ <ref name="atomCommonAttributes"/>
+ <attribute name="href">
+ <ref name="atomUri"/>
+ </attribute>
+ <optional>
+ <attribute name="rel">
+ <choice>
+ <ref name="atomNCName"/>
+ <ref name="atomUri"/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="atomMediaType"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="hreflang">
+ <ref name="atomLanguageTag"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="title"/>
+ </optional>
+ <optional>
+ <attribute name="length"/>
+ </optional>
+ <ref name="undefinedContent"/>
+ </element>
+ </define>
+ <!-- atom:published -->
+ <define name="atomPublished">
+ <element name="atom:published">
+ <ref name="atomDateConstruct"/>
+ </element>
+ </define>
+ <!-- atom:rights -->
+ <define name="atomRights">
+ <element name="atom:rights">
+ <ref name="atomTextConstruct"/>
+ </element>
+ </define>
+ <!-- atom:source -->
+ <define name="atomSource">
+ <element name="atom:source">
+ <ref name="atomCommonAttributes"/>
+ <interleave>
+ <zeroOrMore>
+ <ref name="atomAuthor"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="atomCategory"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="atomContributor"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="atomGenerator"/>
+ </optional>
+ <optional>
+ <ref name="atomIcon"/>
+ </optional>
+ <optional>
+ <ref name="atomId"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="atomLink"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="atomLogo"/>
+ </optional>
+ <optional>
+ <ref name="atomRights"/>
+ </optional>
+ <optional>
+ <ref name="atomSubtitle"/>
+ </optional>
+ <optional>
+ <ref name="atomTitle"/>
+ </optional>
+ <optional>
+ <ref name="atomUpdated"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="extensionElement"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <!-- atom:subtitle -->
+ <define name="atomSubtitle">
+ <element name="atom:subtitle">
+ <ref name="atomTextConstruct"/>
+ </element>
+ </define>
+ <!-- atom:summary -->
+ <define name="atomSummary">
+ <element name="atom:summary">
+ <ref name="atomTextConstruct"/>
+ </element>
+ </define>
+ <!-- atom:title -->
+ <define name="atomTitle">
+ <element name="atom:title">
+ <ref name="atomTextConstruct"/>
+ </element>
+ </define>
+ <!-- atom:updated -->
+ <define name="atomUpdated">
+ <element name="atom:updated">
+ <ref name="atomDateConstruct"/>
+ </element>
+ </define>
+ <!-- Low-level simple types -->
+ <define name="atomNCName">
+ <data type="string">
+ <param name="minLength">1</param>
+ <param name="pattern">[^:]*</param>
+ </data>
+ </define>
+ <!-- Whatever a media type is, it contains at least one slash -->
+ <define name="atomMediaType">
+ <data type="string">
+ <param name="pattern">.+/.+</param>
+ </data>
+ </define>
+ <!-- As defined in RFC 3066 -->
+ <define name="atomLanguageTag">
+ <data type="string">
+ <param name="pattern">[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*</param>
+ </data>
+ </define>
+ <!--
+ Unconstrained; it's not entirely clear how IRI fit into
+ xsd:anyURI so let's not try to constrain it here
+ -->
+ <define name="atomUri">
+ <text/>
+ </define>
+ <!-- Whatever an email address is, it contains at least one @ -->
+ <define name="atomEmailAddress">
+ <data type="string">
+ <param name="pattern">.+@.+</param>
+ </data>
+ </define>
+ <!-- Simple Extension -->
+ <define name="simpleExtensionElement">
+ <element>
+ <anyName>
+ <except>
+ <nsName ns="http://www.w3.org/2005/Atom"/>
+ </except>
+ </anyName>
+ <text/>
+ </element>
+ </define>
+ <!-- Structured Extension -->
+ <define name="structuredExtensionElement">
+ <element>
+ <anyName>
+ <except>
+ <nsName ns="http://www.w3.org/2005/Atom"/>
+ </except>
+ </anyName>
+ <choice>
+ <group>
+ <oneOrMore>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </oneOrMore>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="anyElement"/>
+ </choice>
+ </zeroOrMore>
+ </group>
+ <group>
+ <zeroOrMore>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </zeroOrMore>
+ <group>
+ <optional>
+ <text/>
+ </optional>
+ <oneOrMore>
+ <ref name="anyElement"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="anyElement"/>
+ </choice>
+ </zeroOrMore>
+ </group>
+ </group>
+ </choice>
+ </element>
+ </define>
+ <!-- Other Extensibility -->
+ <define name="extensionElement">
+ <choice>
+ <ref name="simpleExtensionElement"/>
+ <ref name="structuredExtensionElement"/>
+ </choice>
+ </define>
+ <define name="undefinedAttribute">
+ <attribute>
+ <anyName>
+ <except>
+ <name>xml:base</name>
+ <name>xml:lang</name>
+ <nsName ns=""/>
+ </except>
+ </anyName>
+ </attribute>
+ </define>
+ <define name="undefinedContent">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="anyForeignElement"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="anyElement">
+ <element>
+ <anyName/>
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ <ref name="anyElement"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="anyForeignElement">
+ <element>
+ <anyName>
+ <except>
+ <nsName ns="http://www.w3.org/2005/Atom"/>
+ </except>
+ </anyName>
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ <ref name="anyElement"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <!-- XHTML -->
+ <define name="anyXHTML">
+ <element>
+ <nsName ns="http://www.w3.org/1999/xhtml"/>
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ <ref name="anyXHTML"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="xhtmlDiv">
+ <element name="xhtml:div">
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ <ref name="anyXHTML"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+</grammar>
diff --git a/tests/feeds/test01-result.atom b/tests/feeds/test01-result.atom
new file mode 100644
index 0000000..949d95f
--- /dev/null
+++ b/tests/feeds/test01-result.atom
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<atom:entry
+ xmlns:at="http://purl.org/syndication/atomtriples/1"
+ xmlns:atom="http://www.w3.org/2005/Atom"
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:enc="http://purl.oclc.org/net/rss_2.0/enc#"
+ xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rss091="http://purl.org/rss/1.0/modules/rss091#"
+ xmlns:rss="http://purl.org/rss/1.0/"
+ xmlns="http://www.w3.org/2005/Atom">
+ <atom:id>http://example.org/2006/03/28/blog-item</atom:id>
+ <atom:title>atomic blog item title</atom:title>
+ <atom:updated>2006-03-28T20:57:15Z</atom:updated>
+ <atom:link href="2006/03/28/blog-item" rel="alternate"/>
+ <atom:summary>rss:description here</atom:summary>
+ <at:md>
+ <dc:creator>
+ <dc:Person>
+ <dc:title>Example</dc:title>
+ </dc:Person>
+ </dc:creator>
+ </at:md>
+
+</atom:entry>
diff --git a/tests/feeds/test01-result.ttl b/tests/feeds/test01-result.ttl
new file mode 100644
index 0000000..ed1399e
--- /dev/null
+++ b/tests/feeds/test01-result.ttl
@@ -0,0 +1,40 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix atom: <http://www.w3.org/2005/Atom> .
+@prefix content: <http://purl.org/rss/1.0/modules/content/> .
+@prefix dc: <http://purl.org/dc/elements/1.1/> .
+@prefix enc: <http://purl.oclc.org/net/rss_2.0/enc#> .
+@prefix rss091: <http://purl.org/rss/1.0/modules/rss091#> .
+@prefix : <http://purl.org/rss/1.0/> .
+
+<2006/03/28/blog-item>
+ dc:creator [
+ dc:title "Example" ;
+ a dc:Person
+ ] ;
+ dc:date "2006-03-28T20:57:15Z" ;
+ :description "rss:description here" ;
+ :link "http://example.org/2006/03/28/blog-item" ;
+ :title "Original blog item title 2006-03" ;
+ a :item ;
+ atom:summary """<div xmlns=\"http://www.w3.org/1999/xhtml\">The atom:summary description including
+<b>tags</b>
+over several lines.
+</div>"""^^rdf:XMLLiteral ;
+ atom:title "atomic blog item title" ;
+ atom:updated "2006-03-28T20:57:15Z" .
+
+<>
+ dc:date "2006-03-28T17:05:01-05:00" ;
+ :items [
+ rdf:_1 <2006/03/28/blog-item> ;
+ a rdf:Seq
+ ] ;
+ :link "http://example.org/whatsnew" ;
+ :title "example feed with 1 item" ;
+ a :channel ;
+ atom:author "example" ;
+ atom:email "example@example.com" ;
+ atom:title "atomic title" ;
+ atom:updated "2006-03-28T20:57:15Z" ;
+ atom:uri "http://example.com/" .
+
diff --git a/tests/feeds/test01.rdf b/tests/feeds/test01.rdf
new file mode 100644
index 0000000..bb26a6e
--- /dev/null
+++ b/tests/feeds/test01.rdf
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF
+ xmlns:atom="http://www.w3.org/2005/Atom"
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:enc="http://purl.oclc.org/net/rss_2.0/enc#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rss091="http://purl.org/rss/1.0/modules/rss091#"
+ xmlns="http://purl.org/rss/1.0/">
+ <channel rdf:about="http://example.org/whatsnew">
+ <title>example feed with 1 item</title>
+ <atom:title>atomic title</atom:title>
+ <atom:updated>2006-03-28T20:57:15Z</atom:updated>
+ <atom:author>example</atom:author>
+ <atom:email>example@example.com</atom:email>
+ <atom:uri>http://example.com/</atom:uri>
+ <link>http://example.org/whatsnew</link>
+ <dc:date>2006-03-28T17:05:01-05:00</dc:date>
+ <items>
+ <rdf:Seq>
+ <rdf:li rdf:resource="http://example.org/2006/03/28/blog-item"/>
+ </rdf:Seq>
+ </items>
+ </channel>
+
+ <item rdf:about="http://example.org/2006/03/28/blog-item">
+ <title>Original blog item title 2006-03</title>
+ <description>rss:description here</description>
+ <atom:summary rdf:parseType="Literal"><div xmlns="http://www.w3.org/1999/xhtml">The atom:summary description including
+<b>tags</b>
+over several lines.
+</div></atom:summary>
+ <atom:title>atomic blog item title</atom:title>
+ <link>http://example.org/2006/03/28/blog-item</link>
+ <atom:updated>2006-03-28T20:57:15Z</atom:updated>
+ <dc:date>2006-03-28T20:57:15Z</dc:date>
+ <dc:creator>
+ <dc:Person>
+ <dc:title>Example</dc:title>
+ </dc:Person>
+ </dc:creator>
+ </item>
+
+</rdf:RDF>
diff --git a/tests/feeds/test02-result.atom b/tests/feeds/test02-result.atom
new file mode 100644
index 0000000..b87e370
--- /dev/null
+++ b/tests/feeds/test02-result.atom
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<atom:feed
+ xmlns:at="http://purl.org/syndication/atomtriples/1"
+ xmlns:atom="http://www.w3.org/2005/Atom"
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:enc="http://purl.oclc.org/net/rss_2.0/enc#"
+ xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rss091="http://purl.org/rss/1.0/modules/rss091#"
+ xmlns:rss="http://purl.org/rss/1.0/"
+ xmlns="http://www.w3.org/2005/Atom">
+ <atom:id>http://example.org/news/</atom:id>
+ <atom:title>Example News</atom:title>
+ <atom:updated>2008-03-30T05:52:06Z</atom:updated>
+ <atom:author>
+ <atom:name>unknown</atom:name>
+ </atom:author>
+ <atom:link href="" rel="self"/>
+ <at:feedmap>
+ <at:feedmap property="http://purl.org/rss/1.0/link">atom:id</at:feedmap>
+ <at:feedmap property="http://purl.org/dc/elements/1.1/date">atom:updated</at:feedmap>
+ <at:feedmap property="http://purl.org/dc/elements/1.1/rights">atom:rights</at:feedmap>
+ <at:feedmap property="http://purl.org/rss/1.0/title">atom:title</at:feedmap>
+ </at:feedmap>
+ <at:entrymap>
+ <at:entrymap property="http://purl.org/rss/1.0/description">atom:summary</at:entrymap>
+ <at:entrymap property="http://purl.org/rss/1.0/link">atom:id</at:entrymap>
+ <at:entrymap property="http://purl.org/dc/elements/1.1/date">atom:updated</at:entrymap>
+ <at:entrymap property="http://purl.org/dc/elements/1.1/rights">atom:rights</at:entrymap>
+ <at:entrymap property="http://purl.org/rss/1.0/title">atom:title</at:entrymap>
+ <at:entrymap property="http://purl.org/rss/1.0/modules/content/encoded">atom:summary</at:entrymap>
+ <at:entrymap property="http://purl.org/dc/elements/1.1/date">rss091:pubDate</at:entrymap>
+ <at:entrymap property="http://purl.org/rss/1.0/modules/content/encoded">rss:description</at:entrymap>
+ </at:entrymap>
+
+ <atom:entry>
+ <atom:id>http://example.org/news/2008-03-30</atom:id>
+ <atom:title>News for 2008-03-30</atom:title>
+ <atom:updated>2008-03-30T06:07:28Z</atom:updated>
+ <atom:link href="2008-03-30" rel="alternate"/>
+ <atom:summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
+html description 2
+</div></atom:summary>
+ <at:md/>
+ </atom:entry>
+
+ <atom:entry>
+ <atom:id>http://example.org/news/2007-10-01</atom:id>
+ <atom:title>News for 2007-10-01</atom:title>
+ <atom:updated>2007-10-01T06:56:58Z</atom:updated>
+ <atom:link href="2007-10-01" rel="alternate"/>
+ <atom:summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
+html description 4
+</div></atom:summary>
+ <at:md/>
+ </atom:entry>
+
+</atom:feed>
diff --git a/tests/feeds/test02-result.ttl b/tests/feeds/test02-result.ttl
new file mode 100644
index 0000000..ea74c59
--- /dev/null
+++ b/tests/feeds/test02-result.ttl
@@ -0,0 +1,41 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix content: <http://purl.org/rss/1.0/modules/content/> .
+@prefix dc: <http://purl.org/dc/elements/1.1/> .
+@prefix : <http://purl.org/rss/1.0/> .
+
+<>
+ dc:date "2008-03-30T05:52:06Z" ;
+ :description "Example News feed." ;
+ :items [
+ rdf:_1 <2008-03-30> ;
+ rdf:_2 <2007-10-01> ;
+ a rdf:Seq
+ ] ;
+ :link "http://example.org/news/" ;
+ :title "Example News" ;
+ a :channel .
+
+<2007-10-01>
+ dc:date "2007-10-01T06:56:58Z" ;
+ :description """<div xmlns=\"http://www.w3.org/1999/xhtml\">
+html description 4
+</div>""" ;
+ :link "http://example.org/news/2007-10-01" ;
+ content:encoded """<div xmlns=\"http://www.w3.org/1999/xhtml\">
+html description 3
+</div>""" ;
+ :title "News for 2007-10-01" ;
+ a :item .
+
+<2008-03-30>
+ dc:date "2008-03-30T06:07:28Z" ;
+ :description """<div xmlns=\"http://www.w3.org/1999/xhtml\">
+html description 2
+</div>""" ;
+ :link "http://example.org/news/2008-03-30" ;
+ content:encoded """<div xmlns=\"http://www.w3.org/1999/xhtml\">
+html description 1
+</div>""" ;
+ :title "News for 2008-03-30" ;
+ a :item .
+
diff --git a/tests/feeds/test02.rdf b/tests/feeds/test02.rdf
new file mode 100644
index 0000000..d761513
--- /dev/null
+++ b/tests/feeds/test02.rdf
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<rdf:RDF xml:base="http://example.org/news/NEWS.rdf"
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://purl.org/rss/1.0/">
+ <channel rdf:about="http://example.org/news/">
+ <title>Example News</title>
+ <link>http://example.org/news/</link>
+ <description>Example News feed.</description>
+ <dc:date>2008-03-30T05:52:06Z</dc:date>
+ <items>
+ <rdf:Seq>
+ <rdf:li rdf:resource="http://example.org/news/2008-03-30"/>
+ <rdf:li rdf:resource="http://example.org/news/2007-10-01"/>
+ </rdf:Seq>
+ </items>
+ </channel>
+
+ <item rdf:about="http://example.org/news/2008-03-30">
+ <link>http://example.org/news/2008-03-30</link>
+ <title>News for 2008-03-30</title>
+ <content:encoded><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
+html description 1
+</div>]]></content:encoded>
+ <description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
+html description 2
+&lt;/div&gt;</description>
+ <dc:date>2008-03-30T06:07:28Z</dc:date>
+ </item>
+
+ <item rdf:about="http://example.org/news/2007-10-01">
+ <link>http://example.org/news/2007-10-01</link>
+ <title>News for 2007-10-01</title>
+ <content:encoded><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
+html description 3
+</div>]]></content:encoded>
+ <description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
+html description 4
+&lt;/div&gt;</description>
+ <dc:date>2007-10-01T06:56:58Z</dc:date>
+ </item>
+
+</rdf:RDF>
diff --git a/tests/feeds/test03-result.atom b/tests/feeds/test03-result.atom
new file mode 100644
index 0000000..a08bbb9
--- /dev/null
+++ b/tests/feeds/test03-result.atom
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<atom:feed
+ xmlns:at="http://purl.org/syndication/atomtriples/1"
+ xmlns:atom="http://www.w3.org/2005/Atom"
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:enc="http://purl.oclc.org/net/rss_2.0/enc#"
+ xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rss091="http://purl.org/rss/1.0/modules/rss091#"
+ xmlns:rss="http://purl.org/rss/1.0/"
+ xmlns="http://www.w3.org/2005/Atom">
+ <atom:id>http://example.org/whatsnew</atom:id>
+ <atom:title>example feed with 3 items</atom:title>
+ <atom:updated>2006-03-28T20:57:15Z</atom:updated>
+ <atom:author>
+ <atom:email>bob@bob.com</atom:email>
+ <atom:name>unknown</atom:name>
+ <atom:uri>http://bob.com/</atom:uri>
+ </atom:author>
+ <atom:link href="/whatsnew" rel="self"/>
+ <at:feedmap>
+ <at:feedmap property="http://purl.org/rss/1.0/link">atom:id</at:feedmap>
+ <at:feedmap property="http://purl.org/dc/elements/1.1/date">atom:updated</at:feedmap>
+ <at:feedmap property="http://purl.org/dc/elements/1.1/rights">atom:rights</at:feedmap>
+ <at:feedmap property="http://purl.org/rss/1.0/title">atom:title</at:feedmap>
+ </at:feedmap>
+ <at:entrymap>
+ <at:entrymap property="http://purl.org/rss/1.0/description">atom:summary</at:entrymap>
+ <at:entrymap property="http://purl.org/rss/1.0/link">atom:id</at:entrymap>
+ <at:entrymap property="http://purl.org/dc/elements/1.1/date">atom:updated</at:entrymap>
+ <at:entrymap property="http://purl.org/dc/elements/1.1/rights">atom:rights</at:entrymap>
+ <at:entrymap property="http://purl.org/rss/1.0/title">atom:title</at:entrymap>
+ <at:entrymap property="http://purl.org/rss/1.0/modules/content/encoded">atom:summary</at:entrymap>
+ <at:entrymap property="http://purl.org/dc/elements/1.1/date">rss091:pubDate</at:entrymap>
+ <at:entrymap property="http://purl.org/rss/1.0/modules/content/encoded">rss:description</at:entrymap>
+ </at:entrymap>
+
+ <atom:entry>
+ <atom:id>http://example.org/2006/03/03/blog-item</atom:id>
+ <atom:title>blog item title 2006-02</atom:title>
+ <atom:updated>2006-03-03T23:59:59Z</atom:updated>
+ <atom:content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">a literal XML atom:content with
+<b>tags</b> and
+newlines</div></atom:content>
+ <atom:summary>the summary of the item</atom:summary>
+ <at:md/>
+ </atom:entry>
+
+ <atom:entry>
+ <atom:id>http://example.org/2006/02/02/blog-item</atom:id>
+ <atom:title>blog item title 2006-02</atom:title>
+ <atom:updated>2006-02-02T00:00:02Z</atom:updated>
+ <atom:link href="/2006/02/02/blog-item" rel="alternate"/>
+ <atom:summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">a content:encoded description with
+<b xmlns="http://www.w3.org/1999/xhtml">tags</b> and
+newlines</div></atom:summary>
+ <at:md/>
+ </atom:entry>
+
+ <atom:entry>
+ <atom:id>http://example.org/2006/01/01/blog-item</atom:id>
+ <atom:title>blog item title 2006-01</atom:title>
+ <atom:updated>2006-01-01T00:00:01Z</atom:updated>
+ <atom:link href="/2006/01/01/blog-item" rel="alternate"/>
+ <atom:summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">The atom:summary description including
+<b>tags</b>
+over several lines.</div></atom:summary>
+ <at:md/>
+ </atom:entry>
+
+ <atom:entry>
+ <atom:id>http://example.org/2005/12/12/blog-item</atom:id>
+ <atom:title>blog item title 2005-12</atom:title>
+ <atom:updated>2005-12-12T00:00:00Z</atom:updated>
+ <atom:content src="http://external.example.org/" type="text/html"/>
+ <atom:summary>the rss description</atom:summary>
+ <at:md/>
+ </atom:entry>
+
+</atom:feed>
diff --git a/tests/feeds/test03-result.ttl b/tests/feeds/test03-result.ttl
new file mode 100644
index 0000000..45c0455
--- /dev/null
+++ b/tests/feeds/test03-result.ttl
@@ -0,0 +1,57 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix atom: <http://www.w3.org/2005/Atom> .
+@prefix content: <http://purl.org/rss/1.0/modules/content/> .
+@prefix dc: <http://purl.org/dc/elements/1.1/> .
+@prefix at: <http://purl.org/syndication/atomtriples/1> .
+@prefix : <http://purl.org/rss/1.0/> .
+
+</2005/12/12/blog-item>
+ dc:date "2005-12-12T00:00:00Z" ;
+ :description "the rss description" ;
+ :title "blog item title 2005-12" ;
+ at:contentType "text/html" ;
+ a :item ;
+ atom:content <http://external.example.org/> .
+
+</2006/01/01/blog-item>
+ dc:date "2006-01-01T00:00:01Z" ;
+ :title "blog item title 2006-01" ;
+ a :item ;
+ atom:summary """<div xmlns=\"http://www.w3.org/1999/xhtml\">The atom:summary description including
+<b>tags</b>
+over several lines.</div>"""^^rdf:XMLLiteral .
+
+</2006/02/02/blog-item>
+ dc:date "2006-02-02T00:00:02Z" ;
+ content:encoded """<div xmlns=\"http://www.w3.org/1999/xhtml\">a content:encoded description with
+<b xmlns=\"http://www.w3.org/1999/xhtml\">tags</b> and
+newlines</div>""" ;
+ :title "blog item title 2006-02" ;
+ a :item .
+
+</2006/03/03/blog-item>
+ dc:date "2006-03-03T12:00:005Z" ;
+ :description "the summary of the item" ;
+ :title "blog item title 2006-02" ;
+ a :item ;
+ atom:content """<div xmlns=\"http://www.w3.org/1999/xhtml\">a literal XML atom:content with
+<b>tags</b> and
+newlines</div>"""^^rdf:XMLLiteral ;
+ atom:updated "2006-03-03T23:59:59Z" .
+
+</whatsnew>
+ dc:date "2006-03-28T17:05:01-05:00" ;
+ :items [
+ rdf:_1 </2006/03/03/blog-item> ;
+ rdf:_2 </2006/02/02/blog-item> ;
+ rdf:_3 </2006/01/01/blog-item> ;
+ rdf:_4 </2005/12/12/blog-item> ;
+ a rdf:Seq
+ ] ;
+ :title "example feed with 3 items" ;
+ a :channel ;
+ atom:author "bob" ;
+ atom:email "bob@bob.com" ;
+ atom:updated "2006-03-28T20:57:15Z" ;
+ atom:uri "http://bob.com/" .
+
diff --git a/tests/feeds/test03.rdf b/tests/feeds/test03.rdf
new file mode 100644
index 0000000..6a47edd
--- /dev/null
+++ b/tests/feeds/test03.rdf
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF
+ xmlns:atom="http://www.w3.org/2005/Atom"
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:at="http://purl.org/syndication/atomtriples/1"
+ xmlns="http://purl.org/rss/1.0/">
+ <channel rdf:about="http://example.org/whatsnew">
+ <title>example feed with 3 items</title>
+ <atom:updated>2006-03-28T20:57:15Z</atom:updated>
+ <atom:author>bob</atom:author>
+ <atom:email>bob@bob.com</atom:email>
+ <atom:uri>http://bob.com/</atom:uri>
+ <dc:date>2006-03-28T17:05:01-05:00</dc:date>
+ <items>
+ <rdf:Seq>
+ <rdf:li rdf:resource="http://example.org/2006/03/03/blog-item"/>
+ <rdf:li rdf:resource="http://example.org/2006/02/02/blog-item"/>
+ <rdf:li rdf:resource="http://example.org/2006/01/01/blog-item"/>
+ <rdf:li rdf:resource="http://example.org/2005/12/12/blog-item"/>
+ </rdf:Seq>
+ </items>
+ </channel>
+
+ <item rdf:about="http://example.org/2006/03/03/blog-item">
+ <!-- this is used as atom:title -->
+ <title>blog item title 2006-02</title>
+ <!-- this is used as atom:summary -->
+ <description>the summary of the item</description>
+ <atom:content rdf:parseType="Literal"><div xmlns="http://www.w3.org/1999/xhtml">a literal XML atom:content with
+<b xmlns="http://www.w3.org/1999/xhtml">tags</b> and
+newlines</div></atom:content>
+ <!-- this overrides the dc:date -->
+ <atom:updated>2006-03-03T23:59:59Z</atom:updated>
+ <dc:date>2006-03-03T12:00:005Z</dc:date>
+ </item>
+
+ <!-- recommended rss & atom form with no content -->
+ <item rdf:about="http://example.org/2006/02/02/blog-item">
+ <title>blog item title 2006-02</title>
+ <!-- this is used as atom:summary -->
+ <content:encoded><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">a content:encoded description with
+<b xmlns="http://www.w3.org/1999/xhtml">tags</b> and
+newlines</div>]]></content:encoded>
+ <dc:date>2006-02-02T00:00:02Z</dc:date>
+ <!-- content is link to URI of item/@rdf:about -->
+ </item>
+
+
+ <item rdf:about="http://example.org/2006/01/01/blog-item">
+ <title>blog item title 2006-01</title>
+ <atom:summary rdf:parseType="Literal"><div xmlns="http://www.w3.org/1999/xhtml">The atom:summary description including
+<b>tags</b>
+over several lines.</div></atom:summary>
+ <dc:date>2006-01-01T00:00:01Z</dc:date>
+ <!-- content is link to URI of item/@rdf:about -->
+ </item>
+
+
+ <!-- atom only form with external content -->
+ <item rdf:about="http://example.org/2005/12/12/blog-item">
+ <title>blog item title 2005-12</title>
+ <!-- this is used as atom:summary -->
+ <description>the rss description</description>
+ <!-- external content -->
+ <atom:content rdf:resource="http://external.example.org/"/>
+ <at:contentType>text/html</at:contentType>
+ <dc:date>2005-12-12T00:00:00Z</dc:date>
+ </item>
+
+</rdf:RDF>
diff --git a/tests/feeds/test04-result.ttl b/tests/feeds/test04-result.ttl
new file mode 100644
index 0000000..8977a78
--- /dev/null
+++ b/tests/feeds/test04-result.ttl
@@ -0,0 +1,67 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rss091: <http://purl.org/rss/1.0/modules/rss091#> .
+@prefix rss: <http://purl.org/rss/1.0/> .
+@prefix dc: <http://purl.org/dc/elements/1.1/> .
+@prefix content: <http://purl.org/rss/1.0/modules/content/> .
+@prefix atom: <http://www.w3.org/2005/Atom> .
+
+<2006/04/01/More-Stuff>
+ dc:date "2006-04-01T08:03:19-05:00" ;
+ rss:link "http://www.example.org/blog/2006/04/01/More-Stuff" ;
+ rss:title "More stuff" ;
+ a rss:item ;
+ atom:content "<div xmlns=\"http://www.w3.org/1999/xhtml\"><em>More stuff</em></div>" ;
+ atom:id <tag:example.org,2004:2216> ;
+ atom:link [
+ a atom:Link ;
+ atom:href <2006/04/01/More-Stuff>
+ ] ;
+ atom:title "More stuff" ;
+ atom:updated "2006-04-01T08:03:19-05:00" .
+
+<2006/04/02/Blah-Blah>
+ dc:date "2006-04-02T07:06:12-04:00" ;
+ rss:description "Blah blah summary." ;
+ rss:link "http://www.example.org/blog/2006/04/02/Blah-Blah" ;
+ content:encoded "Blah blah summary." ;
+ rss:title "Blah Blah" ;
+ a rss:item ;
+ atom:content "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p>Blah blah</p></div>" ;
+ atom:id <tag:example.org,2004:2217> ;
+ atom:link [
+ a atom:Link ;
+ atom:href <2006/04/02/Blah-Blah>
+ ] ;
+ atom:summary "Blah blah summary." ;
+ atom:title "Blah Blah" ;
+ atom:updated "2006-04-02T07:06:12-04:00" .
+
+<index.atom>
+ dc:date "2006-04-02T22:15:25-04:00" ;
+ rss:items [
+ rdf:_1 <2006/04/02/Blah-Blah> ;
+ rdf:_2 <2006/04/01/More-Stuff> ;
+ a rdf:Seq
+ ] ;
+ rss:link "http://www.example.org/blog/index.atom" ;
+ rss:title "Kim Doe" ;
+ a rss:channel ;
+ atom:author [
+ a atom:Author ;
+ atom:email "me@example.org" ;
+ atom:name "Kim Doe" ;
+ atom:uri "http://www.example.org/blog/"
+ ] ;
+ atom:id <index.atom> ;
+ atom:link [
+ a atom:Link ;
+ atom:href <index.atom> ;
+ atom:rel "self"
+ ], [
+ a atom:Link ;
+ atom:href <>
+ ] ;
+ atom:subtitle "Blog subtitle" ;
+ atom:title "Kim Doe" ;
+ atom:updated "2006-04-02T22:15:25-04:00" .
+
diff --git a/tests/feeds/test04.atom b/tests/feeds/test04.atom
new file mode 100644
index 0000000..ac547c4
--- /dev/null
+++ b/tests/feeds/test04.atom
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed
+ xmlns:at="http://purl.org/syndication/atomtriples/1"
+ xmlns:atom="http://www.w3.org/2005/Atom"
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:enc="http://purl.oclc.org/net/rss_2.0/enc#"
+ xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rss091="http://purl.org/rss/1.0/modules/rss091#"
+ xmlns:rss="http://purl.org/rss/1.0/"
+ xmlns="http://www.w3.org/2005/Atom">
+
+ <link rel="self" href="http://www.example.org/blog/index.atom"/>
+ <id>http://www.example.org/blog/index.atom</id>
+
+ <title>Kim Doe</title>
+ <subtitle>Blog subtitle</subtitle>
+ <author>
+ <name>Kim Doe</name>
+ <email>me@example.org</email>
+ <uri>http://www.example.org/blog/</uri>
+ </author>
+ <updated>2006-04-02T22:15:25-04:00</updated>
+ <link href="http://www.example.org/blog/"/>
+
+ <entry>
+ <id>tag:example.org,2004:2217</id>
+ <link href="http://www.example.org/blog/2006/04/02/Blah-Blah"/>
+ <title>Blah Blah</title>
+ <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Blah blah</p></div></content>
+ <summary>Blah blah summary.</summary>
+ <updated>2006-04-02T07:06:12-04:00</updated>
+ </entry>
+
+ <entry>
+ <id>tag:example.org,2004:2216</id>
+ <link href="http://www.example.org/blog/2006/04/01/More-Stuff"/>
+ <title>More stuff</title>
+ <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><em>More stuff</em></div></content>
+ <updated>2006-04-01T08:03:19-05:00</updated>
+ </entry>
+
+</feed>
diff --git a/tests/feeds/test05-result.ttl b/tests/feeds/test05-result.ttl
new file mode 100644
index 0000000..e40cf91
--- /dev/null
+++ b/tests/feeds/test05-result.ttl
@@ -0,0 +1,24 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rss091: <http://purl.org/rss/1.0/modules/rss091#> .
+@prefix rss: <http://purl.org/rss/1.0/> .
+@prefix dc: <http://purl.org/dc/elements/1.1/> .
+@prefix atom: <http://www.w3.org/2005/Atom> .
+
+<index.atom>
+ dc:date "2009-01-01T00:00:00-00:00" ;
+ rss:link "http://www.example.org/blog/index.atom" ;
+ rss:title "Kim Doe" ;
+ a rss:channel ;
+ atom:author [
+ a atom:Author ;
+ atom:name "Kim Doe"
+ ] ;
+ atom:id <index.atom> ;
+ atom:link [
+ a atom:Link ;
+ atom:href <index.atom> ;
+ atom:rel "self"
+ ] ;
+ atom:title "Kim Doe" ;
+ atom:updated "2009-01-01T00:00:00-00:00" .
+
diff --git a/tests/feeds/test05.atom b/tests/feeds/test05.atom
new file mode 100644
index 0000000..e76a6bb
--- /dev/null
+++ b/tests/feeds/test05.atom
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+ <link rel="self" href="http://www.example.org/blog/index.atom"/>
+ <id>http://www.example.org/blog/index.atom</id>
+
+ <title>Kim Doe</title>
+ <author><name>Kim Doe</name></author>
+ <updated>2009-01-01T00:00:00-00:00</updated>
+</feed>
diff --git a/tests/grddl/Makefile.am b/tests/grddl/Makefile.am
new file mode 100644
index 0000000..d3c6c8e
--- /dev/null
+++ b/tests/grddl/Makefile.am
@@ -0,0 +1,76 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor GRDDL tests
+#
+# Copyright (C) 2007, David Beckett http://purl.org/net/dajobe/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+TEST_FILES=test-01.html
+TEST_BAD_FILES=
+TEST_OUT_FILES=test-01.out
+TEST_DATA_FILES=\
+data-01.rdf data-02.rdf data-01.nt
+
+ALL_TEST_FILES= \
+ $(TEST_FILES) \
+ $(TEST_BAD_FILES) \
+ $(TEST_OUT_FILES) \
+ $(TEST_DATA_FILES)
+
+EXTRA_DIST = $(ALL_TEST_FILES)
+
+RAPPER = $(top_builddir)/utils/rapper
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+if RAPTOR_PARSER_GRDDL
+check-local: check-grddl
+else
+check-local:
+endif
+
+if MAINTAINER_MODE
+check_grddl_deps = $(TEST_FILES)
+endif
+
+check-grddl: build-rapper $(check_grddl_deps)
+ @result=0; \
+ $(RECHO) "Testing GRDDL"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .html` ; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -f noNet -q -i grddl -o ntriples $(srcdir)/$$test > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status != 0 -a $$status != 2 ; then \
+ $(RECHO) FAILED returned status $$status; result=1; \
+ elif cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ if test $$status = 2 ; then \
+ $(RECHO) "ok with warnings"; grep Warning $$name.err; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ if test $$status != 1 ; then \
+ rm -f $$name.res $$name.err; \
+ fi; \
+ done; \
+ exit $$result
diff --git a/tests/grddl/Makefile.in b/tests/grddl/Makefile.in
new file mode 100644
index 0000000..4c90722
--- /dev/null
+++ b/tests/grddl/Makefile.in
@@ -0,0 +1,492 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor GRDDL tests
+#
+# Copyright (C) 2007, David Beckett http://purl.org/net/dajobe/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/grddl
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TEST_FILES = test-01.html
+TEST_BAD_FILES =
+TEST_OUT_FILES = test-01.out
+TEST_DATA_FILES = \
+data-01.rdf data-02.rdf data-01.nt
+
+ALL_TEST_FILES = \
+ $(TEST_FILES) \
+ $(TEST_BAD_FILES) \
+ $(TEST_OUT_FILES) \
+ $(TEST_DATA_FILES)
+
+EXTRA_DIST = $(ALL_TEST_FILES)
+RAPPER = $(top_builddir)/utils/rapper
+@MAINTAINER_MODE_TRUE@check_grddl_deps = $(TEST_FILES)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/grddl/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/grddl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-am check-local clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+@RAPTOR_PARSER_GRDDL_TRUE@check-local: check-grddl
+@RAPTOR_PARSER_GRDDL_FALSE@check-local:
+
+check-grddl: build-rapper $(check_grddl_deps)
+ @result=0; \
+ $(RECHO) "Testing GRDDL"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .html` ; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -f noNet -q -i grddl -o ntriples $(srcdir)/$$test > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status != 0 -a $$status != 2 ; then \
+ $(RECHO) FAILED returned status $$status; result=1; \
+ elif cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ if test $$status = 2 ; then \
+ $(RECHO) "ok with warnings"; grep Warning $$name.err; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ if test $$status != 1 ; then \
+ rm -f $$name.res $$name.err; \
+ fi; \
+ done; \
+ exit $$result
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/grddl/data-01.nt b/tests/grddl/data-01.nt
new file mode 100644
index 0000000..7ee0b35
--- /dev/null
+++ b/tests/grddl/data-01.nt
@@ -0,0 +1 @@
+# No Triples
diff --git a/tests/grddl/data-01.rdf b/tests/grddl/data-01.rdf
new file mode 100644
index 0000000..0982964
--- /dev/null
+++ b/tests/grddl/data-01.rdf
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description>
+ <rdf:value>Triple from data-01.rdf</rdf:value>
+</rdf:Description>
+</rdf:RDF>
diff --git a/tests/grddl/data-02.rdf b/tests/grddl/data-02.rdf
new file mode 100644
index 0000000..1c7af74
--- /dev/null
+++ b/tests/grddl/data-02.rdf
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description>
+ <rdf:value>Triple from data-02.rdf</rdf:value>
+</rdf:Description>
+</rdf:RDF>
diff --git a/tests/grddl/test-01.html b/tests/grddl/test-01.html
new file mode 100644
index 0000000..6ea16f6
--- /dev/null
+++ b/tests/grddl/test-01.html
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!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">
+<head>
+ <title>GRDDL link genid test</title>
+ <!--
+ This link order is to ensure that the internal raptor GRDDL
+ RDF/XML parser is destroyed between parsing data-01.rdf and
+ data-02.rdf
+
+ The @type attribute is actually ignored when guessing a parser
+ to use so data-01.nt is attempted to be parsed as N-Triples.
+ -->
+ <link rel="meta" type="application/rdf+xml" title="rdf1" href="data-01.rdf" />
+ <link rel="meta" type="application/rdf+xml" title="rdf2" href="data-01.nt" />
+ <link rel="meta" type="application/rdf+xml" title="rdf3" href="data-02.rdf" />
+</head>
+<body>
+
+</body>
+</html>
diff --git a/tests/grddl/test-01.out b/tests/grddl/test-01.out
new file mode 100644
index 0000000..7aaecc7
--- /dev/null
+++ b/tests/grddl/test-01.out
@@ -0,0 +1,2 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Triple from data-01.rdf" .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Triple from data-02.rdf" .
diff --git a/tests/json/Makefile.am b/tests/json/Makefile.am
new file mode 100644
index 0000000..83e9bd9
--- /dev/null
+++ b/tests/json/Makefile.am
@@ -0,0 +1,110 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor JSON tests
+#
+# Copyright (C) 2010, David Beckett http://purl.org/net/dajobe/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+TEST_FILES=\
+example1.json example2.json example3.json example4.json
+
+TEST_OUT_FILES=\
+example1.nt example2.nt example3.nt example4.nt
+
+JSON_BAD_TEST_FILES=bad-00.json bad-01.json bad-02.json bad-03.json \
+bad-04.json bad-05.json bad-06.json bad-07.json bad-08.json bad-09.json \
+bad-10.json bad-11.json bad-12.json bad-13.json
+
+# Used to make N-triples output consistent
+BASE_URI=http://example.librdf.org/
+
+EXTRA_DIST = \
+ $(TEST_FILES) \
+ $(TEST_OUT_FILES) \
+ $(JSON_BAD_TEST_FILES)
+
+RAPPER = $(top_builddir)/utils/rapper
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+if RAPTOR_PARSER_JSON
+check-local: build-rapper check-json check-bad-json
+else
+check-local:
+endif
+
+if MAINTAINER_MODE
+check_json_deps = $(TEST_FILES)
+endif
+
+check-json: build-rapper $(check_json_deps)
+ @result=0; \
+ $(RECHO) "Testing legal JSON"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .json` ; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i json -o ntriples $(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status != 0 -a $$status != 2 ; then \
+ $(RECHO) FAILED returned status $$status; result=1; \
+ elif cmp $(srcdir)/$$name.nt $$name.res >/dev/null 2>&1; then \
+ if test $$status = 2 ; then \
+ $(RECHO) "ok with warnings"; grep Warning $$name.err; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ else \
+ $(RECHO) "FAILED"; \
+ cat $$name.err; \
+ diff $(srcdir)/$$name.nt $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ exit $$result
+
+if MAINTAINER_MODE
+check_bad_json_deps = $(JSON_BAD_TEST_FILES)
+endif
+
+check-bad-json: build-rapper $(check_bad_json_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing that bad JSON fails"; \
+ for test in $(JSON_BAD_TEST_FILES); do \
+ name=`basename $$test .json` ; \
+ baseuri=$(BASE_URI)$$name.json; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i json -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "ok"; \
+ elif test $$status -eq 2 ; then \
+ $(RECHO) "FAILED - parsing succeeded with a warning"; \
+ cat $$name.res; grep Warning $$name.err; result=1; \
+ elif test $$status -eq 0 ; then \
+ $(RECHO) "FAILED - parsing succeeded but should have failed"; \
+ cat $$name.res; result=1; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; \
+ cat $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
diff --git a/tests/json/Makefile.in b/tests/json/Makefile.in
new file mode 100644
index 0000000..d2c76ac
--- /dev/null
+++ b/tests/json/Makefile.in
@@ -0,0 +1,523 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor JSON tests
+#
+# Copyright (C) 2010, David Beckett http://purl.org/net/dajobe/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/json
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TEST_FILES = \
+example1.json example2.json example3.json example4.json
+
+TEST_OUT_FILES = \
+example1.nt example2.nt example3.nt example4.nt
+
+JSON_BAD_TEST_FILES = bad-00.json bad-01.json bad-02.json bad-03.json \
+bad-04.json bad-05.json bad-06.json bad-07.json bad-08.json bad-09.json \
+bad-10.json bad-11.json bad-12.json bad-13.json
+
+
+# Used to make N-triples output consistent
+BASE_URI = http://example.librdf.org/
+EXTRA_DIST = \
+ $(TEST_FILES) \
+ $(TEST_OUT_FILES) \
+ $(JSON_BAD_TEST_FILES)
+
+RAPPER = $(top_builddir)/utils/rapper
+@MAINTAINER_MODE_TRUE@check_json_deps = $(TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_bad_json_deps = $(JSON_BAD_TEST_FILES)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/json/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/json/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-am check-local clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+@RAPTOR_PARSER_JSON_TRUE@check-local: build-rapper check-json check-bad-json
+@RAPTOR_PARSER_JSON_FALSE@check-local:
+
+check-json: build-rapper $(check_json_deps)
+ @result=0; \
+ $(RECHO) "Testing legal JSON"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .json` ; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i json -o ntriples $(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status != 0 -a $$status != 2 ; then \
+ $(RECHO) FAILED returned status $$status; result=1; \
+ elif cmp $(srcdir)/$$name.nt $$name.res >/dev/null 2>&1; then \
+ if test $$status = 2 ; then \
+ $(RECHO) "ok with warnings"; grep Warning $$name.err; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ else \
+ $(RECHO) "FAILED"; \
+ cat $$name.err; \
+ diff $(srcdir)/$$name.nt $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ exit $$result
+
+check-bad-json: build-rapper $(check_bad_json_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing that bad JSON fails"; \
+ for test in $(JSON_BAD_TEST_FILES); do \
+ name=`basename $$test .json` ; \
+ baseuri=$(BASE_URI)$$name.json; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i json -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "ok"; \
+ elif test $$status -eq 2 ; then \
+ $(RECHO) "FAILED - parsing succeeded with a warning"; \
+ cat $$name.res; grep Warning $$name.err; result=1; \
+ elif test $$status -eq 0 ; then \
+ $(RECHO) "FAILED - parsing succeeded but should have failed"; \
+ cat $$name.res; result=1; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; \
+ cat $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/json/bad-00.json b/tests/json/bad-00.json
new file mode 100644
index 0000000..ba9fba4
--- /dev/null
+++ b/tests/json/bad-00.json
@@ -0,0 +1,3 @@
+/* bad-00.json - Nearly empty document */
+
+{
diff --git a/tests/json/bad-01.json b/tests/json/bad-01.json
new file mode 100644
index 0000000..83d2614
--- /dev/null
+++ b/tests/json/bad-01.json
@@ -0,0 +1,10 @@
+/* bad-01.json - Missing trailing curly-brace */
+
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" },
+ "object" : { "type" : "literal", "value" : "Anna Wilder" }
+ }
+ ]
diff --git a/tests/json/bad-02.json b/tests/json/bad-02.json
new file mode 100644
index 0000000..8188c24
--- /dev/null
+++ b/tests/json/bad-02.json
@@ -0,0 +1,11 @@
+// bad-02.json - Missing the value for a literal
+
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" },
+ "object" : { "type" : "literal" }
+ }
+ ]
+} \ No newline at end of file
diff --git a/tests/json/bad-03.json b/tests/json/bad-03.json
new file mode 100644
index 0000000..913d9e8
--- /dev/null
+++ b/tests/json/bad-03.json
@@ -0,0 +1,10 @@
+/* bad-03.json - No object defined for triple */
+
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" }
+ }
+ ]
+}
diff --git a/tests/json/bad-04.json b/tests/json/bad-04.json
new file mode 100644
index 0000000..6746c18
--- /dev/null
+++ b/tests/json/bad-04.json
@@ -0,0 +1,7 @@
+/* bad-04.json - Resource-centric JSON missing an object */
+
+{
+ "http://example.org/about" : {
+ "http://purl.org/dc/elements/1.1/creator" : [ {} ]
+ }
+}
diff --git a/tests/json/bad-05.json b/tests/json/bad-05.json
new file mode 100644
index 0000000..0343e08
--- /dev/null
+++ b/tests/json/bad-05.json
@@ -0,0 +1,11 @@
+/* bad-05.json - Invalid attribute */
+
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" },
+ "object" : { "type" : "literal", "value" : "Anna Wilder", "foo" : "bar" }
+ }
+ ]
+} \ No newline at end of file
diff --git a/tests/json/bad-06.json b/tests/json/bad-06.json
new file mode 100644
index 0000000..b2c3ca2
--- /dev/null
+++ b/tests/json/bad-06.json
@@ -0,0 +1,12 @@
+/* bad-06.json - Invalid term name */
+
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" },
+ "object" : { "type" : "literal", "value" : "Anna Wilder" },
+ "foo" : { "type" : "literal", "value" : "Anna Wilder" }
+ }
+ ]
+}
diff --git a/tests/json/bad-07.json b/tests/json/bad-07.json
new file mode 100644
index 0000000..408fdc4
--- /dev/null
+++ b/tests/json/bad-07.json
@@ -0,0 +1,11 @@
+/* bad-07.json - Document with a null value */
+
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" },
+ "object" : { "type" : "literal", "value" : null }
+ }
+ ]
+}
diff --git a/tests/json/bad-08.json b/tests/json/bad-08.json
new file mode 100644
index 0000000..02dcf7c
--- /dev/null
+++ b/tests/json/bad-08.json
@@ -0,0 +1,11 @@
+/* bad-08.json - Document with a boolean value */
+
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" },
+ "object" : { "type" : "literal", "value" : true }
+ }
+ ]
+}
diff --git a/tests/json/bad-09.json b/tests/json/bad-09.json
new file mode 100644
index 0000000..d442522
--- /dev/null
+++ b/tests/json/bad-09.json
@@ -0,0 +1,11 @@
+/* bad-07.json - Document with a integer value */
+
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" },
+ "object" : { "type" : "literal", "value" : 44 }
+ }
+ ]
+}
diff --git a/tests/json/bad-10.json b/tests/json/bad-10.json
new file mode 100644
index 0000000..9eb69f4
--- /dev/null
+++ b/tests/json/bad-10.json
@@ -0,0 +1,11 @@
+/* bad-11.json - Document with a float value */
+
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" },
+ "object" : { "type" : "literal", "value" : 4.4 }
+ }
+ ]
+}
diff --git a/tests/json/bad-11.json b/tests/json/bad-11.json
new file mode 100644
index 0000000..12a9f36
--- /dev/null
+++ b/tests/json/bad-11.json
@@ -0,0 +1,11 @@
+/* bad-11.json - Syntax error in the JSON - extra square-brace */
+
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" ]},
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" },
+ "object" : { "type" : "literal", "value" : "Anna Wilder" }
+ }
+ ]
+}
diff --git a/tests/json/bad-12.json b/tests/json/bad-12.json
new file mode 100644
index 0000000..d44ed04
--- /dev/null
+++ b/tests/json/bad-12.json
@@ -0,0 +1,7 @@
+/* bad-12.json - Not RDF/JSON */
+
+{
+ "key1" : "value1",
+ "key2" : "value2",
+ "key3" : "value3"
+}
diff --git a/tests/json/bad-13.json b/tests/json/bad-13.json
new file mode 100644
index 0000000..0763679
--- /dev/null
+++ b/tests/json/bad-13.json
@@ -0,0 +1,11 @@
+/* bad-06.json - Missing term type */
+
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" },
+ "object" : { "value" : "Anna Wilder" },
+ }
+ ]
+}
diff --git a/tests/json/example1.json b/tests/json/example1.json
new file mode 100644
index 0000000..23d7b42
--- /dev/null
+++ b/tests/json/example1.json
@@ -0,0 +1,22 @@
+{
+ "http://example.org/about" : {
+ "http://purl.org/dc/elements/1.1/creator" : [ { "value" : "Anna Wilder", "type" : "literal" } ],
+ "http://purl.org/dc/elements/1.1/title" : [ { "value" : "Anna's Homepage", "type" : "literal", "lang" : "en" } ] ,
+ "http://xmlns.com/foaf/0.1/maker" : [ { "value" : "_:person", "type" : "bnode" } ]
+ } ,
+
+ "_:person" : {
+ "http://xmlns.com/foaf/0.1/homepage" : [ { "value" : "http://example.org/about", "type" : "uri" } ] ,
+ "http://xmlns.com/foaf/0.1/made" : [ { "value" : "http://example.org/about", "type" : "uri" } ] ,
+ "http://xmlns.com/foaf/0.1/name" : [ { "value" : "Anna Wilder", "type" : "literal" } ] ,
+ "http://xmlns.com/foaf/0.1/firstName" : [ { "value" : "Anna", "type" : "literal" } ] ,
+ "http://xmlns.com/foaf/0.1/surname" : [ { "value" : "Wilder", "type" : "literal" } ] ,
+ "http://xmlns.com/foaf/0.1/depiction" : [ { "value" : "http://example.org/pic.jpg", "type" : "uri" } ] ,
+ "http://xmlns.com/foaf/0.1/nick" : [
+ { "type" : "literal", "value" : "wildling"} ,
+ { "type" : "literal", "value" : "wilda" }
+ ] ,
+ "http://xmlns.com/foaf/0.1/age" : [ { "value" : "48", "type" : "literal", "datatype" : "http://www.w3.org/2001/XMLSchema#integer" } ] ,
+ "http://xmlns.com/foaf/0.1/mbox_sha1sum" : [ { "value" : "69e31bbcf58d432950127593e292a55975bc66fd", "type" : "literal" } ]
+ }
+}
diff --git a/tests/json/example1.nt b/tests/json/example1.nt
new file mode 100644
index 0000000..ba74572
--- /dev/null
+++ b/tests/json/example1.nt
@@ -0,0 +1,13 @@
+<http://example.org/about> <http://purl.org/dc/elements/1.1/creator> "Anna Wilder" .
+<http://example.org/about> <http://purl.org/dc/elements/1.1/title> "Anna's Homepage"@en .
+<http://example.org/about> <http://xmlns.com/foaf/0.1/maker> _:person .
+_:person <http://xmlns.com/foaf/0.1/homepage> <http://example.org/about> .
+_:person <http://xmlns.com/foaf/0.1/made> <http://example.org/about> .
+_:person <http://xmlns.com/foaf/0.1/name> "Anna Wilder" .
+_:person <http://xmlns.com/foaf/0.1/firstName> "Anna" .
+_:person <http://xmlns.com/foaf/0.1/surname> "Wilder" .
+_:person <http://xmlns.com/foaf/0.1/depiction> <http://example.org/pic.jpg> .
+_:person <http://xmlns.com/foaf/0.1/nick> "wildling" .
+_:person <http://xmlns.com/foaf/0.1/nick> "wilda" .
+_:person <http://xmlns.com/foaf/0.1/age> "48"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:person <http://xmlns.com/foaf/0.1/mbox_sha1sum> "69e31bbcf58d432950127593e292a55975bc66fd" .
diff --git a/tests/json/example2.json b/tests/json/example2.json
new file mode 100644
index 0000000..adf3a6f
--- /dev/null
+++ b/tests/json/example2.json
@@ -0,0 +1,57 @@
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" },
+ "object" : { "type" : "literal", "value" : "Anna Wilder" }
+ },{
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/title" },
+ "object" : { "type" : "literal", "value" : "Anna's Homepage", "lang" : "en" }
+ },{
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://xmlns.com/foaf/0.1/maker" },
+ "object" : { "type" : "bnode", "value" : "_:person" }
+ },{
+ "subject" : { "type" : "bnode", "value" : "_:person" },
+ "predicate" : { "type" : "uri", "value" : "http://xmlns.com/foaf/0.1/homepage" },
+ "object" : { "type" : "uri", "value" : "http://example.org/about" }
+ },{
+ "subject" : { "type" : "bnode", "value" : "_:person" },
+ "predicate" : { "type" : "uri", "value" : "http://xmlns.com/foaf/0.1/made" },
+ "object" : { "type" : "uri", "value" : "http://example.org/about" }
+ },{
+ "subject" : { "type" : "bnode", "value" : "_:person" },
+ "predicate" : { "type" : "uri", "value" : "http://xmlns.com/foaf/0.1/name" },
+ "object" : { "type" : "literal", "value" : "Anna Wilder" }
+ },{
+ "subject" : { "type" : "bnode", "value" : "_:person" },
+ "predicate" : { "type" : "uri", "value" : "http://xmlns.com/foaf/0.1/firstName" },
+ "object" : { "type" : "literal", "value" : "Anna" }
+ },{
+ "subject" : { "type" : "bnode", "value" : "_:person" },
+ "predicate" : { "type" : "uri", "value" : "http://xmlns.com/foaf/0.1/surname" },
+ "object" : { "type" : "literal", "value" : "Wilder" }
+ },{
+ "subject" : { "type" : "bnode", "value" : "_:person" },
+ "predicate" : { "type" : "uri", "value" : "http://xmlns.com/foaf/0.1/depiction" },
+ "object" : { "type" : "uri", "value" : "http://example.org/pic.jpg" }
+ },{
+ "subject" : { "type" : "bnode", "value" : "_:person" },
+ "predicate" : { "type" : "uri", "value" : "http://xmlns.com/foaf/0.1/nick" },
+ "object" : { "type" : "literal", "value" : "wildling" }
+ },{
+ "subject" : { "type" : "bnode", "value" : "_:person" },
+ "predicate" : { "type" : "uri", "value" : "http://xmlns.com/foaf/0.1/nick" },
+ "object" : { "type" : "literal", "value" : "wilda" }
+ },{
+ "subject" : { "type" : "bnode", "value" : "_:person" },
+ "predicate" : { "type" : "uri", "value" : "http://xmlns.com/foaf/0.1/age" },
+ "object" : { "type" : "literal", "value" : "48", "datatype" : "http://www.w3.org/2001/XMLSchema#integer" }
+ },{
+ "subject" : { "type" : "bnode", "value" : "_:person" },
+ "predicate" : { "type" : "uri", "value" : "http://xmlns.com/foaf/0.1/mbox_sha1sum" },
+ "object" : { "type" : "literal", "value" : "69e31bbcf58d432950127593e292a55975bc66fd" }
+ }
+ ]
+}
diff --git a/tests/json/example2.nt b/tests/json/example2.nt
new file mode 100644
index 0000000..ba74572
--- /dev/null
+++ b/tests/json/example2.nt
@@ -0,0 +1,13 @@
+<http://example.org/about> <http://purl.org/dc/elements/1.1/creator> "Anna Wilder" .
+<http://example.org/about> <http://purl.org/dc/elements/1.1/title> "Anna's Homepage"@en .
+<http://example.org/about> <http://xmlns.com/foaf/0.1/maker> _:person .
+_:person <http://xmlns.com/foaf/0.1/homepage> <http://example.org/about> .
+_:person <http://xmlns.com/foaf/0.1/made> <http://example.org/about> .
+_:person <http://xmlns.com/foaf/0.1/name> "Anna Wilder" .
+_:person <http://xmlns.com/foaf/0.1/firstName> "Anna" .
+_:person <http://xmlns.com/foaf/0.1/surname> "Wilder" .
+_:person <http://xmlns.com/foaf/0.1/depiction> <http://example.org/pic.jpg> .
+_:person <http://xmlns.com/foaf/0.1/nick> "wildling" .
+_:person <http://xmlns.com/foaf/0.1/nick> "wilda" .
+_:person <http://xmlns.com/foaf/0.1/age> "48"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:person <http://xmlns.com/foaf/0.1/mbox_sha1sum> "69e31bbcf58d432950127593e292a55975bc66fd" .
diff --git a/tests/json/example3.json b/tests/json/example3.json
new file mode 100644
index 0000000..ba8e095
--- /dev/null
+++ b/tests/json/example3.json
@@ -0,0 +1,14 @@
+/* example3.json - a comment at the start of the file */
+
+// C++ style comment
+
+{
+ "triples" : [
+ {
+ "subject" : { "type" : "uri", "value" : "http://example.org/about" },
+ "predicate" : { "type" : "uri", "value" : "http://purl.org/dc/elements/1.1/creator" },
+ // Comment in the middle
+ "object" : { "type" : "literal", "value" : "Anna Wilder" }
+ }
+ ]
+}
diff --git a/tests/json/example3.nt b/tests/json/example3.nt
new file mode 100644
index 0000000..4606943
--- /dev/null
+++ b/tests/json/example3.nt
@@ -0,0 +1 @@
+<http://example.org/about> <http://purl.org/dc/elements/1.1/creator> "Anna Wilder" .
diff --git a/tests/json/example4.json b/tests/json/example4.json
new file mode 100644
index 0000000..5603272
--- /dev/null
+++ b/tests/json/example4.json
@@ -0,0 +1,39 @@
+{
+ "http://example.com/joe/foaf.rdf" : {
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" : [ {
+ "value" : "http://xmlns.com/foaf/0.1/PersonalProfileDocument",
+ "type" : "uri"
+ }
+
+ ],
+ "http://xmlns.com/foaf/0.1/primaryTopic" : [ {
+ "value" : "http://www.example.com/joe#me",
+ "type" : "uri"
+ }
+
+ ]
+ }
+ ,
+ "http://www.example.com/joe#me" : {
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" : [ {
+ "value" : "http://xmlns.com/foaf/0.1/Person",
+ "type" : "uri"
+ }
+
+ ],
+ "http://xmlns.com/foaf/0.1/name" : [ {
+ "value" : "Joe Bloggs",
+ "lang" : "en",
+ "type" : "literal"
+ }
+
+ ],
+ "http://xmlns.com/foaf/0.1/age" : [ {
+ "value" : "59",
+ "datatype" : "http://www.w3.org/2001/XMLSchema#integer",
+ "type" : "literal"
+ }
+
+ ]
+ }
+}
diff --git a/tests/json/example4.nt b/tests/json/example4.nt
new file mode 100644
index 0000000..ab1bee9
--- /dev/null
+++ b/tests/json/example4.nt
@@ -0,0 +1,5 @@
+<http://example.com/joe/foaf.rdf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/PersonalProfileDocument> .
+<http://example.com/joe/foaf.rdf> <http://xmlns.com/foaf/0.1/primaryTopic> <http://www.example.com/joe#me> .
+<http://www.example.com/joe#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.com/joe#me> <http://xmlns.com/foaf/0.1/name> "Joe Bloggs"@en .
+<http://www.example.com/joe#me> <http://xmlns.com/foaf/0.1/age> "59"^^<http://www.w3.org/2001/XMLSchema#integer> .
diff --git a/tests/ntriples/Makefile.am b/tests/ntriples/Makefile.am
new file mode 100644
index 0000000..058f82f
--- /dev/null
+++ b/tests/ntriples/Makefile.am
@@ -0,0 +1,126 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor N-Triples tests
+#
+# Copyright (C) 2000-2009, David Beckett http://www.dajobe.org/
+# Copyright (C) 2000-2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+NT_TEST_FILES=test.nt
+
+NT_OUT_FILES=test.out
+
+NT_BAD_TEST_FILES=bad-00.nt bad-01.nt bad-02.nt bad-03.nt bad-04.nt \
+bad-05.nt bad-06.nt bad-07.nt
+
+NQ_TEST_FILES=testnq-1.nq testnq-optional-context.nq bug-481.nq
+
+NQ_OUT_FILES=testnq-1.out testnq-optional-context.out bug-481.out
+
+# Used to make N-triples output consistent
+BASE_URI=http://librdf.org/raptor/tests/
+
+EXTRA_DIST = \
+ $(NT_TEST_FILES) \
+ $(NT_OUT_FILES) \
+ $(NT_BAD_TEST_FILES) \
+ $(NQ_TEST_FILES) \
+ $(NQ_OUT_FILES)
+
+
+RAPPER = $(top_builddir)/utils/rapper
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+check-local: build-rapper \
+check-nt check-bad-nt check-nq
+
+if MAINTAINER_MODE
+check_nt_deps = $(NT_TEST_FILES)
+endif
+
+check-nt: build-rapper $(check_nt_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing N-Triples"; \
+ for test in $(NT_TEST_FILES); do \
+ name=`basename $$test .nt` ; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i ntriples -o ntriples file:$(srcdir)/$$test $(BASE_URI)$$test > $$name.res 2>/dev/null; \
+ if cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res ; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_bad_nt_deps = $(NT_BAD_TEST_FILES)
+endif
+
+check-bad-nt: build-rapper $(check_bad_nt_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing that bad N-Triples fails"; \
+ for test in $(NT_BAD_TEST_FILES); do \
+ name=`basename $$test .nt` ; \
+ baseuri=$(BASE_URI)$$name.nt; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i ntriples -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "ok"; \
+ elif test $$status -eq 2 ; then \
+ $(RECHO) "FAILED - parsing succeeded with a warning"; \
+ cat $$name.res; grep Warning $$name.err; result=1; \
+ elif test $$status -eq 0 ; then \
+ $(RECHO) "FAILED - parsing succeeded but should have failed"; \
+ cat $$name.res; result=1; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; \
+ cat $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_nq_deps = $(NQ_TEST_FILES)
+endif
+
+check-nq: build-rapper $(check_nq_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing N-Quads"; \
+ for test in $(NQ_TEST_FILES); do \
+ name=`basename $$test .nq` ; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i nquads -o nquads file:$(srcdir)/$$test $(BASE_URI)$$test > $$name.res 2>/dev/null; \
+ if cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res ; \
+ done; \
+ set -e; exit $$result
+
+print-nt-test-files:
+ @echo $(NT_TEST_FILES) | tr ' ' '\012'
diff --git a/tests/ntriples/Makefile.in b/tests/ntriples/Makefile.in
new file mode 100644
index 0000000..df2fe92
--- /dev/null
+++ b/tests/ntriples/Makefile.in
@@ -0,0 +1,535 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor N-Triples tests
+#
+# Copyright (C) 2000-2009, David Beckett http://www.dajobe.org/
+# Copyright (C) 2000-2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/ntriples
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+NT_TEST_FILES = test.nt
+NT_OUT_FILES = test.out
+NT_BAD_TEST_FILES = bad-00.nt bad-01.nt bad-02.nt bad-03.nt bad-04.nt \
+bad-05.nt bad-06.nt bad-07.nt
+
+NQ_TEST_FILES = testnq-1.nq testnq-optional-context.nq bug-481.nq
+NQ_OUT_FILES = testnq-1.out testnq-optional-context.out bug-481.out
+
+# Used to make N-triples output consistent
+BASE_URI = http://librdf.org/raptor/tests/
+EXTRA_DIST = \
+ $(NT_TEST_FILES) \
+ $(NT_OUT_FILES) \
+ $(NT_BAD_TEST_FILES) \
+ $(NQ_TEST_FILES) \
+ $(NQ_OUT_FILES)
+
+RAPPER = $(top_builddir)/utils/rapper
+@MAINTAINER_MODE_TRUE@check_nt_deps = $(NT_TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_bad_nt_deps = $(NT_BAD_TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_nq_deps = $(NQ_TEST_FILES)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/ntriples/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/ntriples/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-am check-local clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+check-local: build-rapper \
+check-nt check-bad-nt check-nq
+
+check-nt: build-rapper $(check_nt_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing N-Triples"; \
+ for test in $(NT_TEST_FILES); do \
+ name=`basename $$test .nt` ; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i ntriples -o ntriples file:$(srcdir)/$$test $(BASE_URI)$$test > $$name.res 2>/dev/null; \
+ if cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res ; \
+ done; \
+ set -e; exit $$result
+
+check-bad-nt: build-rapper $(check_bad_nt_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing that bad N-Triples fails"; \
+ for test in $(NT_BAD_TEST_FILES); do \
+ name=`basename $$test .nt` ; \
+ baseuri=$(BASE_URI)$$name.nt; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i ntriples -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "ok"; \
+ elif test $$status -eq 2 ; then \
+ $(RECHO) "FAILED - parsing succeeded with a warning"; \
+ cat $$name.res; grep Warning $$name.err; result=1; \
+ elif test $$status -eq 0 ; then \
+ $(RECHO) "FAILED - parsing succeeded but should have failed"; \
+ cat $$name.res; result=1; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; \
+ cat $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+check-nq: build-rapper $(check_nq_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing N-Quads"; \
+ for test in $(NQ_TEST_FILES); do \
+ name=`basename $$test .nq` ; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i nquads -o nquads file:$(srcdir)/$$test $(BASE_URI)$$test > $$name.res 2>/dev/null; \
+ if cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res ; \
+ done; \
+ set -e; exit $$result
+
+print-nt-test-files:
+ @echo $(NT_TEST_FILES) | tr ' ' '\012'
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/ntriples/bad-00.nt b/tests/ntriples/bad-00.nt
new file mode 100644
index 0000000..9de91e2
--- /dev/null
+++ b/tests/ntriples/bad-00.nt
@@ -0,0 +1 @@
+_: <http://foo> "blah" .
diff --git a/tests/ntriples/bad-01.nt b/tests/ntriples/bad-01.nt
new file mode 100644
index 0000000..80f7e9b
--- /dev/null
+++ b/tests/ntriples/bad-01.nt
@@ -0,0 +1 @@
+_:a<http://foo> "blah" .
diff --git a/tests/ntriples/bad-02.nt b/tests/ntriples/bad-02.nt
new file mode 100644
index 0000000..64c1dfb
--- /dev/null
+++ b/tests/ntriples/bad-02.nt
@@ -0,0 +1 @@
+_:a <http://foo "blah" .
diff --git a/tests/ntriples/bad-03.nt b/tests/ntriples/bad-03.nt
new file mode 100644
index 0000000..71f6db5
--- /dev/null
+++ b/tests/ntriples/bad-03.nt
@@ -0,0 +1 @@
+_:a <http://foo> "blah .
diff --git a/tests/ntriples/bad-04.nt b/tests/ntriples/bad-04.nt
new file mode 100644
index 0000000..64c1dfb
--- /dev/null
+++ b/tests/ntriples/bad-04.nt
@@ -0,0 +1 @@
+_:a <http://foo "blah" .
diff --git a/tests/ntriples/bad-05.nt b/tests/ntriples/bad-05.nt
new file mode 100644
index 0000000..6000036
--- /dev/null
+++ b/tests/ntriples/bad-05.nt
@@ -0,0 +1 @@
+<http://example.org/resource19> <http://example.org/property> "\U00110000" .
diff --git a/tests/ntriples/bad-06.nt b/tests/ntriples/bad-06.nt
new file mode 100644
index 0000000..ac35f18
--- /dev/null
+++ b/tests/ntriples/bad-06.nt
@@ -0,0 +1 @@
+<http://example.org/res1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_abc> <http://example.org/res2> .
diff --git a/tests/ntriples/bad-07.nt b/tests/ntriples/bad-07.nt
new file mode 100644
index 0000000..732f69c
--- /dev/null
+++ b/tests/ntriples/bad-07.nt
@@ -0,0 +1 @@
+<http://example.org/resource34> <http://example.org/property> xml"<foo>bar</foo>" .
diff --git a/tests/ntriples/bug-481.nq b/tests/ntriples/bug-481.nq
new file mode 100644
index 0000000..be20395
--- /dev/null
+++ b/tests/ntriples/bug-481.nq
@@ -0,0 +1 @@
+_:httpx3Ax2Fx2Fapix2Ehi5x2Ecomx2Frestx2Fprofilex2Ffoafx2F504083723xxbnode229 <http://xmlns.com/foaf/0.1/nick> "\u0102\uD838\uDF06\u0941\u04EANONGJEE\u04EA\u0941\uD838\uDF06\u0102" <http://api.hi5.com/rest/profile/foaf/504083723> .
diff --git a/tests/ntriples/bug-481.out b/tests/ntriples/bug-481.out
new file mode 100644
index 0000000..be20395
--- /dev/null
+++ b/tests/ntriples/bug-481.out
@@ -0,0 +1 @@
+_:httpx3Ax2Fx2Fapix2Ehi5x2Ecomx2Frestx2Fprofilex2Ffoafx2F504083723xxbnode229 <http://xmlns.com/foaf/0.1/nick> "\u0102\uD838\uDF06\u0941\u04EANONGJEE\u04EA\u0941\uD838\uDF06\u0102" <http://api.hi5.com/rest/profile/foaf/504083723> .
diff --git a/tests/ntriples/test.nt b/tests/ntriples/test.nt
new file mode 100644
index 0000000..62f0e16
--- /dev/null
+++ b/tests/ntriples/test.nt
@@ -0,0 +1,65 @@
+#
+# N-Triples Test Cases
+# Dave Beckett - http://purl.org/net/dajobe/
+#
+# $Id$
+#
+# comment lines
+ # comment line after whitespace
+# empty blank line, then one with spaces and tabs
+
+
+<http://example.org/resource1> <http://example.org/property> <http://example.org/resource2> .
+_:anon <http://example.org/property> <http://example.org/resource2> .
+<http://example.org/resource2> <http://example.org/property> _:anon .
+# spaces and tabs throughout:
+ <http://example.org/resource3> <http://example.org/property> <http://example.org/resource2> .
+
+# line ending with CR NL (ASCII 13, ASCII 10)
+<http://example.org/resource4> <http://example.org/property> <http://example.org/resource2> .
+
+# 2 statement lines separated by single CR (ASCII 10)
+<http://example.org/resource5> <http://example.org/property> <http://example.org/resource2> . <http://example.org/resource6> <http://example.org/property> <http://example.org/resource2> .
+
+
+# All literal escapes
+<http://example.org/resource7> <http://example.org/property> "simple literal" .
+<http://example.org/resource8> <http://example.org/property> "backslash:\\" .
+<http://example.org/resource9> <http://example.org/property> "dquote:\"" .
+<http://example.org/resource10> <http://example.org/property> "newline:\n" .
+<http://example.org/resource11> <http://example.org/property> "return\r" .
+<http://example.org/resource12> <http://example.org/property> "tab:\t" .
+
+# Space is optional before final .
+<http://example.org/resource13> <http://example.org/property> <http://example.org/resource2>.
+<http://example.org/resource14> <http://example.org/property> "x".
+<http://example.org/resource15> <http://example.org/property> _:anon.
+
+# \u and \U escapes
+# latin small letter e with acute symbol \u00E9 - 3 UTF-8 bytes #xC3 #A9
+<http://example.org/resource16> <http://example.org/property> "\u00E9" .
+# Euro symbol \u20ac - 3 UTF-8 bytes #xE2 #x82 #xAC
+<http://example.org/resource17> <http://example.org/property> "\u20AC" .
+# ? symbol \U0010FFFF - 4 UTF-8 bytes #xF4 #x8F #xBF #xBF
+<http://example.org/resource18> <http://example.org/property> "\U0010FFFF" .
+
+# extended literal syntax - parseType="Literal" (XML)
+<http://example.org/resource21> <http://example.org/property> ""^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource22> <http://example.org/property> " "^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource23> <http://example.org/property> "x"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource23> <http://example.org/property> "\""^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource24> <http://example.org/property> "<a></a>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource25> <http://example.org/property> "a <b></b>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource26> <http://example.org/property> "a <b></b> c"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource26> <http://example.org/property> "a\n<b></b>\nc"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource27> <http://example.org/property> "chat"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+# resource28 removed 2003-08-03
+# resource29 removed 2003-08-03
+
+# literals with languages
+<http://example.org/resource30> <http://example.org/property> "chat"@fr .
+<http://example.org/resource31> <http://example.org/property> "chat"@en .
+
+# Datatype Literals
+<http://example.org/resource32> <http://example.org/property> "abc"^^<http://example.org/datatype1> .
+# resource33 removed 2003-08-03
diff --git a/tests/ntriples/test.out b/tests/ntriples/test.out
new file mode 100644
index 0000000..266ee3f
--- /dev/null
+++ b/tests/ntriples/test.out
@@ -0,0 +1,31 @@
+<http://example.org/resource1> <http://example.org/property> <http://example.org/resource2> .
+_:anon <http://example.org/property> <http://example.org/resource2> .
+<http://example.org/resource2> <http://example.org/property> _:anon .
+<http://example.org/resource3> <http://example.org/property> <http://example.org/resource2> .
+<http://example.org/resource4> <http://example.org/property> <http://example.org/resource2> .
+<http://example.org/resource5> <http://example.org/property> <http://example.org/resource2> .
+<http://example.org/resource6> <http://example.org/property> <http://example.org/resource2> .
+<http://example.org/resource7> <http://example.org/property> "simple literal" .
+<http://example.org/resource8> <http://example.org/property> "backslash:\\" .
+<http://example.org/resource9> <http://example.org/property> "dquote:\"" .
+<http://example.org/resource10> <http://example.org/property> "newline:\n" .
+<http://example.org/resource11> <http://example.org/property> "return\r" .
+<http://example.org/resource12> <http://example.org/property> "tab:\t" .
+<http://example.org/resource13> <http://example.org/property> <http://example.org/resource2> .
+<http://example.org/resource14> <http://example.org/property> "x" .
+<http://example.org/resource15> <http://example.org/property> _:anon .
+<http://example.org/resource16> <http://example.org/property> "\u00E9" .
+<http://example.org/resource17> <http://example.org/property> "\u20AC" .
+<http://example.org/resource18> <http://example.org/property> "\U0010FFFF" .
+<http://example.org/resource21> <http://example.org/property> ""^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource22> <http://example.org/property> " "^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource23> <http://example.org/property> "x"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource23> <http://example.org/property> "\""^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource24> <http://example.org/property> "<a></a>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource25> <http://example.org/property> "a <b></b>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource26> <http://example.org/property> "a <b></b> c"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource26> <http://example.org/property> "a\n<b></b>\nc"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource27> <http://example.org/property> "chat"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/resource30> <http://example.org/property> "chat"@fr .
+<http://example.org/resource31> <http://example.org/property> "chat"@en .
+<http://example.org/resource32> <http://example.org/property> "abc"^^<http://example.org/datatype1> .
diff --git a/tests/ntriples/testnq-1.nq b/tests/ntriples/testnq-1.nq
new file mode 100644
index 0000000..3c42217
--- /dev/null
+++ b/tests/ntriples/testnq-1.nq
@@ -0,0 +1,11 @@
+<http://example.org/alice/foaf.rdf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/alice/foaf.rdf> .
+<http://example.org/alice/foaf.rdf#me> <http://xmlns.com/foaf/0.1/name> "Alice" <http://example.org/alice/foaf.rdf> .
+<http://example.org/alice/foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> _:bnode1 <http://example.org/alice/foaf.rdf> .
+_:bnode1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/alice/foaf.rdf> .
+_:bnode1 <http://xmlns.com/foaf/0.1/name> "Bob" <http://example.org/alice/foaf.rdf> .
+_:bnode1 <http://xmlns.com/foaf/0.1/homepage> <http://example.org/bob/> <http://example.org/alice/foaf.rdf> .
+_:bnode1 <http://www.w3. org/2000/01/rdf-schema#seeAlso> <http://example.org/bob/foaf.rdf> <http://example.org/alice/foaf.rdf> .
+
+<http://example.org/bob/foaf.rdf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/bob/foaf.rdf> .
+<http://example.org/bob/foaf.rdf#me> <http://xmlns.com/foaf/0.1/name> "Bob" <http://example.org/bob/foaf.rdf> .
+<http://example.org/bob/foaf.rdf#me> <http://xmlns.com/foaf/0.1/homepage> <http://example.org/bob/> <http://example.org/bob/foaf.rdf> .
diff --git a/tests/ntriples/testnq-1.out b/tests/ntriples/testnq-1.out
new file mode 100644
index 0000000..51dd2d0
--- /dev/null
+++ b/tests/ntriples/testnq-1.out
@@ -0,0 +1,10 @@
+<http://example.org/alice/foaf.rdf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/alice/foaf.rdf> .
+<http://example.org/alice/foaf.rdf#me> <http://xmlns.com/foaf/0.1/name> "Alice" <http://example.org/alice/foaf.rdf> .
+<http://example.org/alice/foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> _:bnode1 <http://example.org/alice/foaf.rdf> .
+_:bnode1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/alice/foaf.rdf> .
+_:bnode1 <http://xmlns.com/foaf/0.1/name> "Bob" <http://example.org/alice/foaf.rdf> .
+_:bnode1 <http://xmlns.com/foaf/0.1/homepage> <http://example.org/bob/> <http://example.org/alice/foaf.rdf> .
+_:bnode1 <http://www.w3. org/2000/01/rdf-schema#seeAlso> <http://example.org/bob/foaf.rdf> <http://example.org/alice/foaf.rdf> .
+<http://example.org/bob/foaf.rdf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/bob/foaf.rdf> .
+<http://example.org/bob/foaf.rdf#me> <http://xmlns.com/foaf/0.1/name> "Bob" <http://example.org/bob/foaf.rdf> .
+<http://example.org/bob/foaf.rdf#me> <http://xmlns.com/foaf/0.1/homepage> <http://example.org/bob/> <http://example.org/bob/foaf.rdf> .
diff --git a/tests/ntriples/testnq-optional-context.nq b/tests/ntriples/testnq-optional-context.nq
new file mode 100644
index 0000000..7c7bf96
--- /dev/null
+++ b/tests/ntriples/testnq-optional-context.nq
@@ -0,0 +1,2 @@
+<http://example.org/a> <http://example.org/b> <http://example.org/c> .
+<http://example.org/d> <http://example.org/e> <http://example.org/f> <http://example.org/g> .
diff --git a/tests/ntriples/testnq-optional-context.out b/tests/ntriples/testnq-optional-context.out
new file mode 100644
index 0000000..7c7bf96
--- /dev/null
+++ b/tests/ntriples/testnq-optional-context.out
@@ -0,0 +1,2 @@
+<http://example.org/a> <http://example.org/b> <http://example.org/c> .
+<http://example.org/d> <http://example.org/e> <http://example.org/f> <http://example.org/g> .
diff --git a/tests/rdfa/0001.out b/tests/rdfa/0001.out
new file mode 100644
index 0000000..05e2309
--- /dev/null
+++ b/tests/rdfa/0001.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa/0001.xml b/tests/rdfa/0001.xml
new file mode 100644
index 0000000..cffb7a4
--- /dev/null
+++ b/tests/rdfa/0001.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<head>
+ <title>Test 0001</title>
+</head>
+<body>
+ <p>This photo was taken by <span class="author" about="photo1.jpg" property="dc:creator">Mark Birbeck</span>.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0006.out b/tests/rdfa/0006.out
new file mode 100644
index 0000000..ceb222c
--- /dev/null
+++ b/tests/rdfa/0006.out
@@ -0,0 +1,2 @@
+<http://www.blogger.com/profile/1109404> <http://xmlns.com/foaf/0.1/img> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/creator> <http://www.blogger.com/profile/1109404> .
diff --git a/tests/rdfa/0006.xml b/tests/rdfa/0006.xml
new file mode 100644
index 0000000..44b48a3
--- /dev/null
+++ b/tests/rdfa/0006.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0006</title>
+ </head>
+ <body>
+ <p>
+ This photo was taken by
+ <a about="photo1.jpg" rel="dc:creator" rev="foaf:img"
+ href="http://www.blogger.com/profile/1109404">Mark Birbeck</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0007.out b/tests/rdfa/0007.out
new file mode 100644
index 0000000..721bb2f
--- /dev/null
+++ b/tests/rdfa/0007.out
@@ -0,0 +1,3 @@
+<http://www.blogger.com/profile/1109404> <http://xmlns.com/foaf/0.1/img> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/title> "Portrait of Mark" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/creator> <http://www.blogger.com/profile/1109404> .
diff --git a/tests/rdfa/0007.xml b/tests/rdfa/0007.xml
new file mode 100644
index 0000000..fd7a1aa
--- /dev/null
+++ b/tests/rdfa/0007.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0007</title>
+ </head>
+ <body>
+ <p>This photo was taken by
+ <a about="photo1.jpg" property="dc:title"
+ content="Portrait of Mark" rel="dc:creator"
+ rev="foaf:img" href="http://www.blogger.com/profile/1109404">Mark Birbeck</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0008.out b/tests/rdfa/0008.out
new file mode 100644
index 0000000..79512e5
--- /dev/null
+++ b/tests/rdfa/0008.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0008.xml> <http://creativecommons.org/ns#license> <http://creativecommons.org/licenses/by-nc-nd/2.5/> .
diff --git a/tests/rdfa/0008.xml b/tests/rdfa/0008.xml
new file mode 100644
index 0000000..955ba1d
--- /dev/null
+++ b/tests/rdfa/0008.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cc="http://creativecommons.org/ns#">
+ <head>
+ <title>Test 0008</title>
+ </head>
+ <body>
+ <p>This document is licensed under a
+ <a about="" rel="cc:license"
+ href="http://creativecommons.org/licenses/by-nc-nd/2.5/">
+ Creative Commons
+ </a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0009.out b/tests/rdfa/0009.out
new file mode 100644
index 0000000..595fa69
--- /dev/null
+++ b/tests/rdfa/0009.out
@@ -0,0 +1 @@
+<http://example.org/people#Person2> <http://xmlns.com/foaf/0.1/knows> <http://example.org/people#Person1> .
diff --git a/tests/rdfa/0009.xml b/tests/rdfa/0009.xml
new file mode 100644
index 0000000..89a33ac
--- /dev/null
+++ b/tests/rdfa/0009.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0009</title>
+ <link about="http://example.org/people#Person1"
+ rev="foaf:knows" href="http://example.org/people#Person2" />
+
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0010.out b/tests/rdfa/0010.out
new file mode 100644
index 0000000..f194d4b
--- /dev/null
+++ b/tests/rdfa/0010.out
@@ -0,0 +1,2 @@
+<http://example.org/people#Person1> <http://xmlns.com/foaf/0.1/knows> <http://example.org/people#Person2> .
+<http://example.org/people#Person2> <http://xmlns.com/foaf/0.1/knows> <http://example.org/people#Person1> .
diff --git a/tests/rdfa/0010.xml b/tests/rdfa/0010.xml
new file mode 100644
index 0000000..c693827
--- /dev/null
+++ b/tests/rdfa/0010.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0010</title>
+ <link about="http://example.org/people#Person1"
+ rel="foaf:knows" rev="foaf:knows" href="http://example.org/people#Person2" />
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0012.out b/tests/rdfa/0012.out
new file mode 100644
index 0000000..28e5e42
--- /dev/null
+++ b/tests/rdfa/0012.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/property> "chat"@fr .
diff --git a/tests/rdfa/0012.xml b/tests/rdfa/0012.xml
new file mode 100644
index 0000000..2f727b5
--- /dev/null
+++ b/tests/rdfa/0012.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/">
+ <head about="">
+ <title>Test 0012</title>
+ <meta about="http://example.org/node" property="ex:property" xml:lang="fr" content="chat" />
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0013.out b/tests/rdfa/0013.out
new file mode 100644
index 0000000..28e5e42
--- /dev/null
+++ b/tests/rdfa/0013.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/property> "chat"@fr .
diff --git a/tests/rdfa/0013.xml b/tests/rdfa/0013.xml
new file mode 100644
index 0000000..e3a201c
--- /dev/null
+++ b/tests/rdfa/0013.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/">
+ <head about="" xml:lang="fr">
+ <title xml:lang="en">Test 0013</title>
+ <meta about="http://example.org/node" property="ex:property" content="chat" />
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0014.out b/tests/rdfa/0014.out
new file mode 100644
index 0000000..4f7b7f3
--- /dev/null
+++ b/tests/rdfa/0014.out
@@ -0,0 +1 @@
+<http://example.org/foo> <http://example.org/bar> "10"^^<http://www.w3.org/2001/XMLSchema#integer> .
diff --git a/tests/rdfa/0014.xml b/tests/rdfa/0014.xml
new file mode 100644
index 0000000..56b0134
--- /dev/null
+++ b/tests/rdfa/0014.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
+ <head>
+ <title>Test 0014</title>
+ </head>
+ <body>
+ <p>
+ <span about="http://example.org/foo"
+ property="ex:bar" content="10" datatype="xsd:integer">ten</span>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0015.out b/tests/rdfa/0015.out
new file mode 100644
index 0000000..c055122
--- /dev/null
+++ b/tests/rdfa/0015.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0015.xml> <http://purl.org/dc/elements/1.1/creator> "Fyodor Dostoevsky" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0015.xml> <http://purl.org/dc/elements/1.1/source> <urn:isbn:0140449132> .
diff --git a/tests/rdfa/0015.xml b/tests/rdfa/0015.xml
new file mode 100644
index 0000000..5991810
--- /dev/null
+++ b/tests/rdfa/0015.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0015</title>
+ <link rel="dc:source" href="urn:isbn:0140449132" />
+ <meta property="dc:creator" content="Fyodor Dostoevsky" />
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0017.out b/tests/rdfa/0017.out
new file mode 100644
index 0000000..eeaa6fb
--- /dev/null
+++ b/tests/rdfa/0017.out
@@ -0,0 +1,3 @@
+_:x <http://xmlns.com/foaf/0.1/name> "Manu Sporny" .
+_:x <http://xmlns.com/foaf/0.1/knows> _:y .
+_:y <http://xmlns.com/foaf/0.1/name> "Ralph Swick" .
diff --git a/tests/rdfa/0017.xml b/tests/rdfa/0017.xml
new file mode 100644
index 0000000..36328d6
--- /dev/null
+++ b/tests/rdfa/0017.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0017</title>
+ </head>
+ <body>
+ <p>
+ <span about="[_:a]" property="foaf:name">Manu Sporny</span>
+ <span about="[_:a]" rel="foaf:knows"
+resource="[_:b]">knows</span>
+ <span about="[_:b]" property="foaf:name">Ralph Swick</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0018.out b/tests/rdfa/0018.out
new file mode 100644
index 0000000..0cb9e31
--- /dev/null
+++ b/tests/rdfa/0018.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/creator> <http://www.blogger.com/profile/1109404> .
diff --git a/tests/rdfa/0018.xml b/tests/rdfa/0018.xml
new file mode 100644
index 0000000..014b92f
--- /dev/null
+++ b/tests/rdfa/0018.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0018</title>
+ </head>
+ <body>
+ <p>
+ This photo was taken by
+ <a about="photo1.jpg" rel="dc:creator"
+ href="http://www.blogger.com/profile/1109404">Mark Birbeck</a>.
+ </p>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0019.out b/tests/rdfa/0019.out
new file mode 100644
index 0000000..de2bb18
--- /dev/null
+++ b/tests/rdfa/0019.out
@@ -0,0 +1 @@
+<mailto:manu.sporny@digitalbazaar.com> <http://xmlns.com/foaf/0.1/knows> <mailto:michael.hausenblas@joanneum.at> .
diff --git a/tests/rdfa/0019.xml b/tests/rdfa/0019.xml
new file mode 100644
index 0000000..d7782f6
--- /dev/null
+++ b/tests/rdfa/0019.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0019</title>
+ </head>
+ <body>
+ <div about="mailto:manu.sporny@digitalbazaar.com"
+ rel="foaf:knows" href="mailto:michael.hausenblas@joanneum.at"></div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0020.out b/tests/rdfa/0020.out
new file mode 100644
index 0000000..05e2309
--- /dev/null
+++ b/tests/rdfa/0020.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa/0020.xml b/tests/rdfa/0020.xml
new file mode 100644
index 0000000..509e20b
--- /dev/null
+++ b/tests/rdfa/0020.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0020</title>
+ </head>
+ <body>
+ <div about="photo1.jpg">
+ <span class="attribution-line">this photo was taken by
+ <span property="dc:creator">Mark Birbeck</span>
+ </span>
+ </div>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0021.out b/tests/rdfa/0021.out
new file mode 100644
index 0000000..bc8b5bc
--- /dev/null
+++ b/tests/rdfa/0021.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0021.xml> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa/0021.xml b/tests/rdfa/0021.xml
new file mode 100644
index 0000000..1728de4
--- /dev/null
+++ b/tests/rdfa/0021.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<head>
+ <title>Test 0021</title>
+</head>
+<body>
+ <div>
+ <span class="attribution-line">this photo was taken by
+ <span property="dc:creator">Mark Birbeck</span>
+ </span>
+ </div>
+</body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0023.out b/tests/rdfa/0023.out
new file mode 100644
index 0000000..6f1b48f
--- /dev/null
+++ b/tests/rdfa/0023.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0023.xml> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa/0023.xml b/tests/rdfa/0023.xml
new file mode 100644
index 0000000..8a153c7
--- /dev/null
+++ b/tests/rdfa/0023.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0023</title>
+ </head>
+ <body>
+ <div id="photo1">
+ This photo was taken by
+ <span property="dc:creator">Mark Birbeck</span>
+ </div>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0025.out b/tests/rdfa/0025.out
new file mode 100644
index 0000000..ac8bf24
--- /dev/null
+++ b/tests/rdfa/0025.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0025.xml> <http://purl.org/dc/elements/1.1/creator> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0025.xml#me> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0025.xml#me> <http://xmlns.com/foaf/0.1/name> "Ben Adida" .
diff --git a/tests/rdfa/0025.xml b/tests/rdfa/0025.xml
new file mode 100644
index 0000000..00270df
--- /dev/null
+++ b/tests/rdfa/0025.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0025</title>
+ </head>
+ <body>
+ <p>
+ This paper was written by
+ <span rel="dc:creator" resource="#me">
+ <span property="foaf:name">Ben Adida</span>.
+ </span>
+ </p>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0026.out b/tests/rdfa/0026.out
new file mode 100644
index 0000000..e867cfd
--- /dev/null
+++ b/tests/rdfa/0026.out
@@ -0,0 +1 @@
+<http://internet-apps.blogspot.com/> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa/0026.xml b/tests/rdfa/0026.xml
new file mode 100644
index 0000000..73a37a1
--- /dev/null
+++ b/tests/rdfa/0026.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0026</title>
+ </head>
+ <body>
+ <p>
+ <span about="http://internet-apps.blogspot.com/"
+ property="dc:creator" content="Mark Birbeck" />
+ </p>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0027.out b/tests/rdfa/0027.out
new file mode 100644
index 0000000..e867cfd
--- /dev/null
+++ b/tests/rdfa/0027.out
@@ -0,0 +1 @@
+<http://internet-apps.blogspot.com/> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa/0027.xml b/tests/rdfa/0027.xml
new file mode 100644
index 0000000..56c237a
--- /dev/null
+++ b/tests/rdfa/0027.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0027</title>
+ </head>
+ <body>
+ <p>
+ <span about="http://internet-apps.blogspot.com/"
+ property="dc:creator" content="Mark Birbeck">Mark B.
+ </span>
+ </p>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0029.out b/tests/rdfa/0029.out
new file mode 100644
index 0000000..00221fd
--- /dev/null
+++ b/tests/rdfa/0029.out
@@ -0,0 +1 @@
+<http://example.org/foo> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck"^^<http://www.w3.org/2001/XMLSchema#string> .
diff --git a/tests/rdfa/0029.xml b/tests/rdfa/0029.xml
new file mode 100644
index 0000000..1a46b29
--- /dev/null
+++ b/tests/rdfa/0029.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
+ <head>
+ <title>Test 0029</title>
+ </head>
+ <body>
+ <p>
+ <span about="http://example.org/foo"
+ property="dc:creator" datatype="xsd:string"><b>M</b>ark <b>B</b>irbeck</span>.
+ </p>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0030.out b/tests/rdfa/0030.out
new file mode 100644
index 0000000..2a294b1
--- /dev/null
+++ b/tests/rdfa/0030.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0030.xml> <http://creativecommons.org/ns#license> <http://creativecommons.org/licenses/by-nc-nd/2.5/> .
diff --git a/tests/rdfa/0030.xml b/tests/rdfa/0030.xml
new file mode 100644
index 0000000..a901b35
--- /dev/null
+++ b/tests/rdfa/0030.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cc="http://creativecommons.org/ns#">
+ <head>
+ <title>Test 0030</title>
+ </head>
+ <body>
+ <p>This document is licensed under a
+ <a rel="cc:license"
+ href="http://creativecommons.org/licenses/by-nc-nd/2.5/">
+ Creative Commons License
+ </a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0031.out b/tests/rdfa/0031.out
new file mode 100644
index 0000000..7d653ab
--- /dev/null
+++ b/tests/rdfa/0031.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0031.xml#wtw> <http://purl.org/dc/elements/1.1/identifier> <urn:ISBN:0752820907> .
diff --git a/tests/rdfa/0031.xml b/tests/rdfa/0031.xml
new file mode 100644
index 0000000..102d506
--- /dev/null
+++ b/tests/rdfa/0031.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0031</title>
+ </head>
+ <body>
+ <p about="#wtw">
+ The book <b>Weaving the Web</b> (hardcover) has the ISBN
+ <span rel="dc:identifier" resource="urn:ISBN:0752820907">0752820907</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0032.out b/tests/rdfa/0032.out
new file mode 100644
index 0000000..80fb928
--- /dev/null
+++ b/tests/rdfa/0032.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0032.xml#wtw> <http://purl.org/dc/elements/1.1/identifier> <urn:ISBN:0752820907> .
diff --git a/tests/rdfa/0032.xml b/tests/rdfa/0032.xml
new file mode 100644
index 0000000..b1155f4
--- /dev/null
+++ b/tests/rdfa/0032.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0032</title>
+ </head>
+ <body>
+ <p about="#wtw">
+ The book <b>Weaving the Web</b> (hardcover) has the ISBN
+ <a rel="dc:identifier" resource="urn:ISBN:0752820907"
+ href="http://www.amazon.com/Weaving-Web-Tim-Berners-Lee/dp/0752820907">0752820907</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0033.out b/tests/rdfa/0033.out
new file mode 100644
index 0000000..567b20c
--- /dev/null
+++ b/tests/rdfa/0033.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0033.xml> <http://purl.org/dc/elements/1.1/creator> _:a .
+_:a <http://xmlns.com/foaf/0.1/name> "Ben Adida" .
diff --git a/tests/rdfa/0033.xml b/tests/rdfa/0033.xml
new file mode 100644
index 0000000..6ee7917
--- /dev/null
+++ b/tests/rdfa/0033.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0033</title>
+ </head>
+ <body>
+ <p>
+ This paper was written by
+ <span rel="dc:creator">
+ <span property="foaf:name">Ben Adida</span>.
+ </span>
+ </p>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0034.out b/tests/rdfa/0034.out
new file mode 100644
index 0000000..ec5eb38
--- /dev/null
+++ b/tests/rdfa/0034.out
@@ -0,0 +1 @@
+<http://sw-app.org/mic.xhtml#i> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/img/mic_2007_01.jpg> .
diff --git a/tests/rdfa/0034.xml b/tests/rdfa/0034.xml
new file mode 100644
index 0000000..c54a11e
--- /dev/null
+++ b/tests/rdfa/0034.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0034</title>
+ </head>
+ <body>
+ <div about="http://sw-app.org/mic.xhtml#i" rel="foaf:img">
+ <img src="http://sw-app.org/img/mic_2007_01.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0035.out b/tests/rdfa/0035.out
new file mode 100644
index 0000000..47d806c
--- /dev/null
+++ b/tests/rdfa/0035.out
@@ -0,0 +1 @@
+<http://sw-app.org/mic.xhtml#i> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/img/mic_2006_03.jpg> .
diff --git a/tests/rdfa/0035.xml b/tests/rdfa/0035.xml
new file mode 100644
index 0000000..4772d63
--- /dev/null
+++ b/tests/rdfa/0035.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0035</title>
+ </head>
+ <body>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ href="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0036.out b/tests/rdfa/0036.out
new file mode 100644
index 0000000..47d806c
--- /dev/null
+++ b/tests/rdfa/0036.out
@@ -0,0 +1 @@
+<http://sw-app.org/mic.xhtml#i> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/img/mic_2006_03.jpg> .
diff --git a/tests/rdfa/0036.xml b/tests/rdfa/0036.xml
new file mode 100644
index 0000000..fc7f000
--- /dev/null
+++ b/tests/rdfa/0036.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0036</title>
+ </head>
+ <body>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ resource="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0037.out b/tests/rdfa/0037.out
new file mode 100644
index 0000000..942e7c7
--- /dev/null
+++ b/tests/rdfa/0037.out
@@ -0,0 +1 @@
+<http://sw-app.org/mic.xhtml#i> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/mic.xhtml#photo> .
diff --git a/tests/rdfa/0037.xml b/tests/rdfa/0037.xml
new file mode 100644
index 0000000..7304ed7
--- /dev/null
+++ b/tests/rdfa/0037.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0037</title>
+ </head>
+ <body>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ href="http://sw-app.org/img/mic_2006_03.jpg"
+ resource="http://sw-app.org/mic.xhtml#photo"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0038.out b/tests/rdfa/0038.out
new file mode 100644
index 0000000..4285a7c
--- /dev/null
+++ b/tests/rdfa/0038.out
@@ -0,0 +1 @@
+<http://sw-app.org/img/mic_2007_01.jpg> <http://xmlns.com/foaf/0.1/depicts> <http://sw-app.org/mic.xhtml#i> .
diff --git a/tests/rdfa/0038.xml b/tests/rdfa/0038.xml
new file mode 100644
index 0000000..697f6ac
--- /dev/null
+++ b/tests/rdfa/0038.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0038</title>
+ </head>
+ <body>
+ <div about="http://sw-app.org/mic.xhtml#i" rev="foaf:depicts">
+ <img src="http://sw-app.org/img/mic_2007_01.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0039.out b/tests/rdfa/0039.out
new file mode 100644
index 0000000..51f9b05
--- /dev/null
+++ b/tests/rdfa/0039.out
@@ -0,0 +1 @@
+<http://sw-app.org/img/mic_2006_03.jpg> <http://xmlns.com/foaf/0.1/depicts> <http://sw-app.org/mic.xhtml#i> .
diff --git a/tests/rdfa/0039.xml b/tests/rdfa/0039.xml
new file mode 100644
index 0000000..02835f0
--- /dev/null
+++ b/tests/rdfa/0039.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0039</title>
+ </head>
+ <body>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rev="foaf:depicts"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ href="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0040.out b/tests/rdfa/0040.out
new file mode 100644
index 0000000..d5c78dd
--- /dev/null
+++ b/tests/rdfa/0040.out
@@ -0,0 +1 @@
+<http://sw-app.org/img/mic_2006_03.jpg> <http://www.w3.org/1999/xhtml/vocab#alternate> <http://sw-app.org/img/mic_2007_01.jpg> .
diff --git a/tests/rdfa/0040.xml b/tests/rdfa/0040.xml
new file mode 100644
index 0000000..d9a487a
--- /dev/null
+++ b/tests/rdfa/0040.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0040</title>
+ </head>
+ <body>
+ <div>
+ <img src="http://sw-app.org/img/mic_2007_01.jpg"
+ rev="alternate"
+ resource="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0041.out b/tests/rdfa/0041.out
new file mode 100644
index 0000000..7679b31
--- /dev/null
+++ b/tests/rdfa/0041.out
@@ -0,0 +1 @@
+<http://sw-app.org/mic.xhtml#photo> <http://xmlns.com/foaf/0.1/depicts> <http://sw-app.org/mic.xhtml#i> .
diff --git a/tests/rdfa/0041.xml b/tests/rdfa/0041.xml
new file mode 100644
index 0000000..08ffb9c
--- /dev/null
+++ b/tests/rdfa/0041.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0041</title>
+ </head>
+ <body>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rev="foaf:depicts"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ href="http://sw-app.org/img/mic_2006_03.jpg"
+ resource="http://sw-app.org/mic.xhtml#photo"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0042.out b/tests/rdfa/0042.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfa/0042.out
diff --git a/tests/rdfa/0042.xml b/tests/rdfa/0042.xml
new file mode 100644
index 0000000..043ba2d
--- /dev/null
+++ b/tests/rdfa/0042.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0042</title>
+ </head>
+ <body>
+ <div>
+ <img rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0046.out b/tests/rdfa/0046.out
new file mode 100644
index 0000000..9848b91
--- /dev/null
+++ b/tests/rdfa/0046.out
@@ -0,0 +1,3 @@
+_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
+_:a <http://xmlns.com/foaf/0.1/maker> _:b .
+_:b <http://xmlns.com/foaf/0.1/name> "John Doe" .
diff --git a/tests/rdfa/0046.xml b/tests/rdfa/0046.xml
new file mode 100644
index 0000000..6be1342
--- /dev/null
+++ b/tests/rdfa/0046.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0046</title>
+ </head>
+ <body>
+ <div rel="foaf:maker" typeof="foaf:Document">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0047.out b/tests/rdfa/0047.out
new file mode 100644
index 0000000..1181116
--- /dev/null
+++ b/tests/rdfa/0047.out
@@ -0,0 +1,3 @@
+_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
+_:a <http://xmlns.com/foaf/0.1/maker> <http://www.example.org/#me> .
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/name> "John Doe" .
diff --git a/tests/rdfa/0047.xml b/tests/rdfa/0047.xml
new file mode 100644
index 0000000..d30b38f
--- /dev/null
+++ b/tests/rdfa/0047.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0047</title>
+ </head>
+ <body>
+ <div rel="foaf:maker" typeof="foaf:Document" resource="http://www.example.org/#me">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0048.out b/tests/rdfa/0048.out
new file mode 100644
index 0000000..4f260fc
--- /dev/null
+++ b/tests/rdfa/0048.out
@@ -0,0 +1,3 @@
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/knows> _:a .
+_:a <http://xmlns.com/foaf/0.1/name> "John Doe" .
diff --git a/tests/rdfa/0048.xml b/tests/rdfa/0048.xml
new file mode 100644
index 0000000..7cc80b6
--- /dev/null
+++ b/tests/rdfa/0048.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0048</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#me" rel="foaf:knows" typeof="foaf:Person">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0049.out b/tests/rdfa/0049.out
new file mode 100644
index 0000000..8a369ce
--- /dev/null
+++ b/tests/rdfa/0049.out
@@ -0,0 +1,2 @@
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/name> "John Doe" .
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
diff --git a/tests/rdfa/0049.xml b/tests/rdfa/0049.xml
new file mode 100644
index 0000000..5f3fbe3
--- /dev/null
+++ b/tests/rdfa/0049.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0049</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#me" typeof="foaf:Person">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0050.out b/tests/rdfa/0050.out
new file mode 100644
index 0000000..0dcfd58
--- /dev/null
+++ b/tests/rdfa/0050.out
@@ -0,0 +1,2 @@
+_:a <http://xmlns.com/foaf/0.1/name> "John Doe" .
+_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
diff --git a/tests/rdfa/0050.xml b/tests/rdfa/0050.xml
new file mode 100644
index 0000000..d330c49
--- /dev/null
+++ b/tests/rdfa/0050.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0050</title>
+ </head>
+ <body>
+ <div typeof="foaf:Person">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0051.out b/tests/rdfa/0051.out
new file mode 100644
index 0000000..67fb26e
--- /dev/null
+++ b/tests/rdfa/0051.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0051.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0051.xml> <http://xmlns.com/foaf/0.1/topic> "John Doe" .
diff --git a/tests/rdfa/0051.xml b/tests/rdfa/0051.xml
new file mode 100644
index 0000000..ad7c2ae
--- /dev/null
+++ b/tests/rdfa/0051.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0051</title>
+ </head>
+ <body>
+ <p about="" typeof="foaf:Document" property="foaf:topic">John Doe</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0052.out b/tests/rdfa/0052.out
new file mode 100644
index 0000000..a8b78a7
--- /dev/null
+++ b/tests/rdfa/0052.out
@@ -0,0 +1 @@
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
diff --git a/tests/rdfa/0052.xml b/tests/rdfa/0052.xml
new file mode 100644
index 0000000..1c51412
--- /dev/null
+++ b/tests/rdfa/0052.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0052</title>
+ </head>
+ <body>
+ <p typeof="foaf:Person" resource="http://www.example.org/#me">
+ John Doe
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0053.out b/tests/rdfa/0053.out
new file mode 100644
index 0000000..ff12bfd
--- /dev/null
+++ b/tests/rdfa/0053.out
@@ -0,0 +1,2 @@
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/name> "John Doe" .
diff --git a/tests/rdfa/0053.xml b/tests/rdfa/0053.xml
new file mode 100644
index 0000000..dbffdd4
--- /dev/null
+++ b/tests/rdfa/0053.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0053</title>
+ </head>
+ <body>
+ <p typeof="foaf:Person" resource="http://www.example.org/#me">
+ <span property="foaf:name">John Doe</span>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0054.out b/tests/rdfa/0054.out
new file mode 100644
index 0000000..92f24b0
--- /dev/null
+++ b/tests/rdfa/0054.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0054.xml> <http://purl.org/dc/elements/1.1/creator> "Fabien Gandon" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0054.xml> <http://purl.org/dc/elements/1.1/publisher> "Fabien Gandon" .
diff --git a/tests/rdfa/0054.xml b/tests/rdfa/0054.xml
new file mode 100644
index 0000000..470462a
--- /dev/null
+++ b/tests/rdfa/0054.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0054</title>
+ </head>
+ <body>
+ <p>
+ This document was authored and published by
+ <span about="" property="dc:creator dc:publisher">Fabien Gandon</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0055.out b/tests/rdfa/0055.out
new file mode 100644
index 0000000..5250259
--- /dev/null
+++ b/tests/rdfa/0055.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0055.xml> <http://purl.org/dc/elements/1.1/creator> <http://www-sop.inria.fr/acacia/fabien/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0055.xml> <http://purl.org/dc/elements/1.1/publisher> <http://www-sop.inria.fr/acacia/fabien/> .
diff --git a/tests/rdfa/0055.xml b/tests/rdfa/0055.xml
new file mode 100644
index 0000000..7e8cef6
--- /dev/null
+++ b/tests/rdfa/0055.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0055</title>
+ </head>
+ <body>
+ <p>
+ This document was authored and published by
+ <a about="" rel="dc:creator dc:publisher" href="http://www-sop.inria.fr/acacia/fabien/">Fabien Gandon</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0056.out b/tests/rdfa/0056.out
new file mode 100644
index 0000000..219c49d
--- /dev/null
+++ b/tests/rdfa/0056.out
@@ -0,0 +1,3 @@
+<http://www.example.org/#ben> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#mark> .
+<http://www.example.org/#mark> <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
diff --git a/tests/rdfa/0056.xml b/tests/rdfa/0056.xml
new file mode 100644
index 0000000..8e79cab
--- /dev/null
+++ b/tests/rdfa/0056.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0056</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#ben" typeof="foaf:Person" rel="foaf:knows">
+ <p about="http://www.example.org/#mark" property="foaf:name">Mark Birbeck</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0057.out b/tests/rdfa/0057.out
new file mode 100644
index 0000000..6711b2d
--- /dev/null
+++ b/tests/rdfa/0057.out
@@ -0,0 +1,4 @@
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#mark> .
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#ivan> .
+<http://www.example.org/#mark> <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
+<http://www.example.org/#ivan> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
diff --git a/tests/rdfa/0057.xml b/tests/rdfa/0057.xml
new file mode 100644
index 0000000..03e6236
--- /dev/null
+++ b/tests/rdfa/0057.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0057</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#ben" rel="foaf:knows">
+ <p about="http://www.example.org/#mark" property="foaf:name">Mark Birbeck</p>
+ <p about="http://www.example.org/#ivan" property="foaf:name">Ivan Herman</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0058.out b/tests/rdfa/0058.out
new file mode 100644
index 0000000..36a85c6
--- /dev/null
+++ b/tests/rdfa/0058.out
@@ -0,0 +1,6 @@
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> _:a .
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> _:b .
+_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:a <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
+_:b <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:b <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
diff --git a/tests/rdfa/0058.xml b/tests/rdfa/0058.xml
new file mode 100644
index 0000000..dd7f57c
--- /dev/null
+++ b/tests/rdfa/0058.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0058</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#ben" rel="foaf:knows">
+ <p typeof="foaf:Person" property="foaf:name">Mark Birbeck</p>
+ <p typeof="foaf:Person" property="foaf:name">Ivan Herman</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0059.out b/tests/rdfa/0059.out
new file mode 100644
index 0000000..1e75747
--- /dev/null
+++ b/tests/rdfa/0059.out
@@ -0,0 +1,6 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0059.xml> <http://purl.org/dc/elements/1.1/creator> <http://www.example.org/#manu> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0059.xml> <http://purl.org/dc/elements/1.1/publisher> <http://www.example.org/#manu> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0059.xml> <http://purl.org/dc/elements/1.1/creator> <http://www.example.org/#fabien> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0059.xml> <http://purl.org/dc/elements/1.1/publisher> <http://www.example.org/#fabien> .
+<http://www.example.org/#manu> <http://xmlns.com/foaf/0.1/name> "Manu Sporny" .
+<http://www.example.org/#fabien> <http://xmlns.com/foaf/0.1/name> "Fabien Gandon" .
diff --git a/tests/rdfa/0059.xml b/tests/rdfa/0059.xml
new file mode 100644
index 0000000..3c4aee6
--- /dev/null
+++ b/tests/rdfa/0059.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0059</title>
+ </head>
+ <body>
+ <p>This document was authored and published by:</p>
+ <ul rel="dc:creator dc:publisher">
+ <li about="http://www.example.org/#manu" property="foaf:name">Manu Sporny</li>
+ <li about="http://www.example.org/#fabien" property="foaf:name">Fabien Gandon</li>
+ </ul>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0060.out b/tests/rdfa/0060.out
new file mode 100644
index 0000000..5ec9d10
--- /dev/null
+++ b/tests/rdfa/0060.out
@@ -0,0 +1,2 @@
+<http://www.example.org/#matsumoto-kimiko> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#matsumoto-kimiko> <http://xmlns.com/foaf/0.1/name> "\u677E\u672C \u540E\u5B50" .
diff --git a/tests/rdfa/0060.xml b/tests/rdfa/0060.xml
new file mode 100644
index 0000000..427b3b2
--- /dev/null
+++ b/tests/rdfa/0060.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0060</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#matsumoto-kimiko"
+ typeof="foaf:Person">
+ <p property="foaf:name">æ¾æœ¬ åŽå­</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0061.out b/tests/rdfa/0061.out
new file mode 100644
index 0000000..8562bb2
--- /dev/null
+++ b/tests/rdfa/0061.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0061.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0062.xml> .
diff --git a/tests/rdfa/0061.xml b/tests/rdfa/0061.xml
new file mode 100644
index 0000000..299451c
--- /dev/null
+++ b/tests/rdfa/0061.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0061</title>
+ <link rel="next" href="http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0062.xml" />
+ </head>
+ <body>
+ <p>This is the first chapter in a series of chapters.</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0062.out b/tests/rdfa/0062.out
new file mode 100644
index 0000000..f4a6365
--- /dev/null
+++ b/tests/rdfa/0062.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0063.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0062.xml> .
diff --git a/tests/rdfa/0062.xml b/tests/rdfa/0062.xml
new file mode 100644
index 0000000..ecb2b55
--- /dev/null
+++ b/tests/rdfa/0062.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0062</title>
+ <link rev="prev" href="http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0063.xml" />
+ </head>
+ <body>
+ <p>This is unit test #62. The next unit test is #63.</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0063.out b/tests/rdfa/0063.out
new file mode 100644
index 0000000..3239933
--- /dev/null
+++ b/tests/rdfa/0063.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0063.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0064.xml> .
diff --git a/tests/rdfa/0063.xml b/tests/rdfa/0063.xml
new file mode 100644
index 0000000..aab4ade
--- /dev/null
+++ b/tests/rdfa/0063.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0063</title>
+ <link rel=":next" href="http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0064.xml" />
+ </head>
+ <body>
+ <p>This is the 63<sup>rd</sup> test. The next test is #64.</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0064.out b/tests/rdfa/0064.out
new file mode 100644
index 0000000..dbee7e5
--- /dev/null
+++ b/tests/rdfa/0064.out
@@ -0,0 +1 @@
+_:a <http://xmlns.com/foaf/0.1/knows> <http://digitalbazaar.com/people/manu> .
diff --git a/tests/rdfa/0064.xml b/tests/rdfa/0064.xml
new file mode 100644
index 0000000..d7955f0
--- /dev/null
+++ b/tests/rdfa/0064.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0064</title>
+ </head>
+ <body>
+ <p about="[_:michael]">Michael knows
+ <a rel="foaf:knows" href="http://digitalbazaar.com/people/manu">Manu</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0065.out b/tests/rdfa/0065.out
new file mode 100644
index 0000000..b1ae56e
--- /dev/null
+++ b/tests/rdfa/0065.out
@@ -0,0 +1,3 @@
+_:a <http://xmlns.com/foaf/0.1/mbox> <mailto:manu.sporny@digitalbazaar.com> .
+_:b <http://xmlns.com/foaf/0.1/mbox> <mailto:michael.hausenblas@joanneum.at> .
+_:a <http://xmlns.com/foaf/0.1/knows> _:b .
diff --git a/tests/rdfa/0065.xml b/tests/rdfa/0065.xml
new file mode 100644
index 0000000..a21a778
--- /dev/null
+++ b/tests/rdfa/0065.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0065</title>
+ </head>
+ <body>
+ <div about="[_:manu]">
+ Manu Sporny can be reached via
+ <a rel="foaf:mbox" href="mailto:manu.sporny@digitalbazaar.com">email</a>.
+ <span rel="foaf:knows" resource="[_:michael]">He knows Michael.</span>
+ </div>
+
+ <div about="[_:michael]">
+ Michael can be reached via
+ <a rel="foaf:mbox" href="mailto:michael.hausenblas@joanneum.at">email</a>.
+ </div>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0066.out b/tests/rdfa/0066.out
new file mode 100644
index 0000000..3ba0a4a
--- /dev/null
+++ b/tests/rdfa/0066.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0066.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
diff --git a/tests/rdfa/0066.xml b/tests/rdfa/0066.xml
new file mode 100644
index 0000000..0b59195
--- /dev/null
+++ b/tests/rdfa/0066.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head typeof="foaf:Document">
+ <title>Test 0066</title>
+ </head>
+ <body>
+ <p>This is test #66.</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0067.out b/tests/rdfa/0067.out
new file mode 100644
index 0000000..bedebdf
--- /dev/null
+++ b/tests/rdfa/0067.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0067.xml> <http://xmlns.com/foaf/0.1/topic> "Test 0067" .
diff --git a/tests/rdfa/0067.xml b/tests/rdfa/0067.xml
new file mode 100644
index 0000000..a3c9e69
--- /dev/null
+++ b/tests/rdfa/0067.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title property="foaf:topic">Test 0067</title>
+ </head>
+ <body>
+ <p>This is test #67.</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0068.out b/tests/rdfa/0068.out
new file mode 100644
index 0000000..ade3acc
--- /dev/null
+++ b/tests/rdfa/0068.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0067.xml> <http://purl.org/dc/elements/1.1/title> "Test 0067" .
diff --git a/tests/rdfa/0068.xml b/tests/rdfa/0068.xml
new file mode 100644
index 0000000..a4219c0
--- /dev/null
+++ b/tests/rdfa/0068.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0068</title>
+ </head>
+ <body>
+ <p about="0067.xml">
+ The previous test was
+ <span property="dc:title">Test 0067</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0069.out b/tests/rdfa/0069.out
new file mode 100644
index 0000000..5e2cd80
--- /dev/null
+++ b/tests/rdfa/0069.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0069.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0070.xml> .
diff --git a/tests/rdfa/0069.xml b/tests/rdfa/0069.xml
new file mode 100644
index 0000000..098c593
--- /dev/null
+++ b/tests/rdfa/0069.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#">
+ <head>
+ <title>Test 0069</title>
+ </head>
+ <body>
+ <p>The next test will be
+ <a about="" rel="xhv:next" href="0070.xml">Test 0070</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0070.out b/tests/rdfa/0070.out
new file mode 100644
index 0000000..3981691
--- /dev/null
+++ b/tests/rdfa/0070.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0070.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0069.xml> .
diff --git a/tests/rdfa/0070.xml b/tests/rdfa/0070.xml
new file mode 100644
index 0000000..1a8c28c
--- /dev/null
+++ b/tests/rdfa/0070.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#">
+ <head>
+ <title>Test 0070</title>
+ </head>
+ <body>
+ <p>The previous test was
+ <span about="" rel="xhv:prev" resource="0069.xml">Test 0069</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0071.out b/tests/rdfa/0071.out
new file mode 100644
index 0000000..9a4d463
--- /dev/null
+++ b/tests/rdfa/0071.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0071.xml> <http://creativecommons.org/ns#license> <http://creativecommons.org/licenses/by-nd/3.0/> .
diff --git a/tests/rdfa/0071.xml b/tests/rdfa/0071.xml
new file mode 100644
index 0000000..4749bba
--- /dev/null
+++ b/tests/rdfa/0071.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cc="http://creativecommons.org/ns#">
+ <head>
+ <title>Test 0071</title>
+ </head>
+ <body>
+ <p>This page is under a Creative Commons
+ <a rel="cc:license"
+ href="http://creativecommons.org/licenses/by-nd/3.0/">
+ Attribution-No Derivatives 3.0 license</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0072.out b/tests/rdfa/0072.out
new file mode 100644
index 0000000..3756af9
--- /dev/null
+++ b/tests/rdfa/0072.out
@@ -0,0 +1 @@
+<http://www.example.org/faq> <http://purl.org/dc/elements/1.1/title> "Example FAQ" .
diff --git a/tests/rdfa/0072.xml b/tests/rdfa/0072.xml
new file mode 100644
index 0000000..35accf5
--- /dev/null
+++ b/tests/rdfa/0072.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <base href="http://www.example.org/"></base>
+ <title>Test 0072</title>
+ </head>
+ <body>
+ <p about="faq">
+ Learn more by reading the example.org
+ <span property="dc:title">Example FAQ</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0073.out b/tests/rdfa/0073.out
new file mode 100644
index 0000000..1ee3798
--- /dev/null
+++ b/tests/rdfa/0073.out
@@ -0,0 +1 @@
+<http://www.example.org/> <http://purl.org/dc/elements/1.1/creator> <http://www.example.org/jane> .
diff --git a/tests/rdfa/0073.xml b/tests/rdfa/0073.xml
new file mode 100644
index 0000000..cac4c31
--- /dev/null
+++ b/tests/rdfa/0073.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <base href="http://www.example.org/"></base>
+ <title>Test 0073</title>
+ </head>
+ <body>
+ <p>
+ This article was written by
+ <span rel="dc:creator" resource="jane">Jane</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0074.out b/tests/rdfa/0074.out
new file mode 100644
index 0000000..1ee3798
--- /dev/null
+++ b/tests/rdfa/0074.out
@@ -0,0 +1 @@
+<http://www.example.org/> <http://purl.org/dc/elements/1.1/creator> <http://www.example.org/jane> .
diff --git a/tests/rdfa/0074.xml b/tests/rdfa/0074.xml
new file mode 100644
index 0000000..00335e5
--- /dev/null
+++ b/tests/rdfa/0074.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <base href="http://www.example.org/"></base>
+ <title>Test 0074</title>
+ </head>
+ <body>
+ <p>
+ This article was written by
+ <a rel="dc:creator" href="jane">Jane</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0075.out b/tests/rdfa/0075.out
new file mode 100644
index 0000000..037c1f3
--- /dev/null
+++ b/tests/rdfa/0075.out
@@ -0,0 +1 @@
+<http://www.example.org/> <http://www.w3.org/1999/xhtml/vocab#license> <http://creativecommons.org/licenses/by-nd/3.0/> .
diff --git a/tests/rdfa/0075.xml b/tests/rdfa/0075.xml
new file mode 100644
index 0000000..413ae48
--- /dev/null
+++ b/tests/rdfa/0075.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <base href="http://www.example.org/"></base>
+ <title>Test 0075</title>
+ </head>
+ <body>
+ <p>
+ This page is under a Creative Commons
+ <a rel="license" href="http://creativecommons.org/licenses/by-nd/3.0/">Attribution-No Derivatives 3.0 license</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0076.out b/tests/rdfa/0076.out
new file mode 100644
index 0000000..67617de
--- /dev/null
+++ b/tests/rdfa/0076.out
@@ -0,0 +1,23 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#alternate> <http://example.org/alternate> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#appendix> <http://example.org/appendix> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#bookmark> <http://example.org/bookmark> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#cite> <http://example.org/cite> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#chapter> <http://example.org/chapter> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#contents> <http://example.org/contents> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#copyright> <http://example.org/copyright> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#glossary> <http://example.org/glossary> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#help> <http://example.org/help> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#icon> <http://example.org/icon> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#index> <http://example.org/index> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#meta> <http://example.org/meta> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/next> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#p3pv1> <http://example.org/p3pv1> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/prev> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#role> <http://example.org/role> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#section> <http://example.org/section> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#subsection> <http://example.org/subsection> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#start> <http://example.org/start> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/license> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#up> <http://example.org/up> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#last> <http://example.org/last> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#stylesheet> <http://example.org/stylesheet> .
diff --git a/tests/rdfa/0076.xml b/tests/rdfa/0076.xml
new file mode 100644
index 0000000..4edae83
--- /dev/null
+++ b/tests/rdfa/0076.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0076</title>
+ </head>
+ <body>
+ <p>
+ <a rel="alternate" href="http://example.org/alternate">alternate</a>
+ <a rel="appendix" href="http://example.org/appendix">appendix</a>
+ <a rel="bookmark" href="http://example.org/bookmark">bookmark</a>
+ <a rel="cite" href="http://example.org/cite">cite</a>
+ <a rel="chapter" href="http://example.org/chapter">chapter</a>
+ <a rel="contents" href="http://example.org/contents">contents</a>
+ <a rel="copyright" href="http://example.org/copyright">copyright</a>
+ <a rel="glossary" href="http://example.org/glossary">glossary</a>
+ <a rel="help" href="http://example.org/help">help</a>
+ <a rel="icon" href="http://example.org/icon">icon</a>
+ <a rel="index" href="http://example.org/index">index</a>
+ <a rel="last" href="http://example.org/last">last</a>
+ <a rel="license" href="http://example.org/license">license</a>
+ <a rel="meta" href="http://example.org/meta">meta</a>
+ <a rel="next" href="http://example.org/next">next</a>
+ <a rel="p3pv1" href="http://example.org/p3pv1">p3pv1</a>
+ <a rel="prev" href="http://example.org/prev">prev</a>
+ <a rel="role" href="http://example.org/role">role</a>
+ <a rel="section" href="http://example.org/section">section</a>
+ <a rel="subsection" href="http://example.org/subsection">subsection</a>
+ <a rel="start" href="http://example.org/start">start</a>
+ <a rel="stylesheet" href="http://example.org/stylesheet">stylesheet</a>
+ <a rel="up" href="http://example.org/up">up</a>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0077.out b/tests/rdfa/0077.out
new file mode 100644
index 0000000..78547d1
--- /dev/null
+++ b/tests/rdfa/0077.out
@@ -0,0 +1,24 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#alternate> <http://example.org/alternate> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#appendix> <http://example.org/appendix> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#bookmark> <http://example.org/bookmark> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#cite> <http://example.org/cite> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#chapter> <http://example.org/chapter> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#contents> <http://example.org/contents> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#copyright> <http://example.org/copyright> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#glossary> <http://example.org/glossary> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#help> <http://example.org/help> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#icon> <http://example.org/icon> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#index> <http://example.org/index> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#meta> <http://example.org/meta> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/next> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#p3pv1> <http://example.org/p3pv1> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/prev> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#role> <http://example.org/role> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#section> <http://example.org/section> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#subsection> <http://example.org/subsection> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#start> <http://example.org/start> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/license> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#up> <http://example.org/up> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#first> <http://example.org/first> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#last> <http://example.org/last> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#stylesheet> <http://example.org/stylesheet> .
diff --git a/tests/rdfa/0077.xml b/tests/rdfa/0077.xml
new file mode 100644
index 0000000..f4bc8eb
--- /dev/null
+++ b/tests/rdfa/0077.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0077</title>
+ </head>
+ <body>
+ <p>
+ <span about="http://example.org/alternate" rev="alternate"
+ href="0077.xml">alternate</span>
+ <span about="http://example.org/appendix" rev="appendix"
+ href="0077.xml">appendix</span>
+ <span about="http://example.org/bookmark" rev="bookmark"
+ href="0077.xml">bookmark</span>
+ <span about="http://example.org/cite" rev="cite"
+ href="0077.xml">cite</span>
+ <span about="http://example.org/chapter" rev="chapter"
+ href="0077.xml">chapter</span>
+ <span about="http://example.org/contents" rev="contents"
+ href="0077.xml">contents</span>
+ <span about="http://example.org/copyright" rev="copyright"
+ href="0077.xml">copyright</span>
+ <span about="http://example.org/glossary" rev="glossary"
+ href="0077.xml">glossary</span>
+ <span about="http://example.org/help" rev="help"
+ href="0077.xml">help</span>
+ <span about="http://example.org/icon" rev="icon"
+ href="0077.xml">icon</span>
+ <span about="http://example.org/index" rev="index"
+ href="0077.xml">index</span>
+ <span about="http://example.org/first" rev="first"
+ href="0077.xml">first</span>
+ <span about="http://example.org/last" rev="last"
+ href="0077.xml">last</span>
+ <span about="http://example.org/license" rev="license"
+ href="0077.xml">license</span>
+ <span about="http://example.org/meta" rev="meta"
+ href="0077.xml">meta</span>
+ <span about="http://example.org/next" rev="next"
+ href="0077.xml">next</span>
+ <span about="http://example.org/p3pv1" rev="p3pv1"
+ href="0077.xml">p3pv1</span>
+ <span about="http://example.org/prev" rev="prev"
+ href="0077.xml">prev</span>
+ <span about="http://example.org/role" rev="role"
+ href="0077.xml">role</span>
+ <span about="http://example.org/section" rev="section"
+ href="0077.xml">section</span>
+ <span about="http://example.org/subsection" rev="subsection"
+ href="0077.xml">subsection</span>
+ <span about="http://example.org/start" rev="start"
+ href="0077.xml">start</span>
+ <span about="http://example.org/stylesheet" rev="stylesheet"
+ href="0077.xml">stylesheet</span>
+ <span about="http://example.org/up" rev="up"
+ href="0077.xml">up</span>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0078.out b/tests/rdfa/0078.out
new file mode 100644
index 0000000..13d24aa
--- /dev/null
+++ b/tests/rdfa/0078.out
@@ -0,0 +1,6 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnodeid1 .
+_:bnodeid1 <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+_:bnodeid1 <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnodeid2 .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:bnodeid2 <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
diff --git a/tests/rdfa/0078.xml b/tests/rdfa/0078.xml
new file mode 100644
index 0000000..5c5cb19
--- /dev/null
+++ b/tests/rdfa/0078.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0078</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p typeof="foaf:Person" property="foaf:name">Mark Birbeck</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0079.out b/tests/rdfa/0079.out
new file mode 100644
index 0000000..b600268
--- /dev/null
+++ b/tests/rdfa/0079.out
@@ -0,0 +1,3 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://www.ivan-herman.org/Ivan_Herman> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://www.w3.org/People/Berners-Lee/card#i> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
diff --git a/tests/rdfa/0079.xml b/tests/rdfa/0079.xml
new file mode 100644
index 0000000..d5d9a54
--- /dev/null
+++ b/tests/rdfa/0079.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0079</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <p resource="http://www.ivan-herman.org/Ivan_Herman">Ivan Herman</p>
+ <p href="http://www.w3.org/People/Berners-Lee/card#i">Tim Berners Lee</p>
+ <p resource="http://danbri.org/foaf.rdf#danbri" href="http://www.leobard.net/rdf/foaf.xml#me">Dan Brickley</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0080.out b/tests/rdfa/0080.out
new file mode 100644
index 0000000..66e5baa
--- /dev/null
+++ b/tests/rdfa/0080.out
@@ -0,0 +1 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
diff --git a/tests/rdfa/0080.xml b/tests/rdfa/0080.xml
new file mode 100644
index 0000000..973e618
--- /dev/null
+++ b/tests/rdfa/0080.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0080</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <p about="http://danbri.org/foaf.rdf#danbri" resource="http://www.leobard.net/rdf/foaf.xml#me">Dan Brickley</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0081.out b/tests/rdfa/0081.out
new file mode 100644
index 0000000..d48f932
--- /dev/null
+++ b/tests/rdfa/0081.out
@@ -0,0 +1,6 @@
+_:a <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:a <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+_:a <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+_:b <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:b <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:b <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
diff --git a/tests/rdfa/0081.xml b/tests/rdfa/0081.xml
new file mode 100644
index 0000000..4027682
--- /dev/null
+++ b/tests/rdfa/0081.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0081</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rev="foaf:knows">
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p typeof="foaf:Person" property="foaf:name">Mark Birbeck</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0082.out b/tests/rdfa/0082.out
new file mode 100644
index 0000000..b1baa9f
--- /dev/null
+++ b/tests/rdfa/0082.out
@@ -0,0 +1,8 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:a .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:b .
+_:a <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:a <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+_:a <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+_:b <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:b <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:b <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
diff --git a/tests/rdfa/0082.xml b/tests/rdfa/0082.xml
new file mode 100644
index 0000000..94808e0
--- /dev/null
+++ b/tests/rdfa/0082.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0082</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rev="foaf:knows" rel="foaf:knows">
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p typeof="foaf:Person" property="foaf:name">Mark Birbeck</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0083.out b/tests/rdfa/0083.out
new file mode 100644
index 0000000..854ae53
--- /dev/null
+++ b/tests/rdfa/0083.out
@@ -0,0 +1,6 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:a .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
+_:a <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+_:a <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+<http://danbri.org/foaf.rdf#danbri> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://danbri.org/foaf.rdf#danbri> <http://xmlns.com/foaf/0.1/name> "Dan Brickley" .
diff --git a/tests/rdfa/0083.xml b/tests/rdfa/0083.xml
new file mode 100644
index 0000000..4ced120
--- /dev/null
+++ b/tests/rdfa/0083.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0083</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#somebody" rel="foaf:knows">
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p about="http://danbri.org/foaf.rdf#danbri" typeof="foaf:Person" property="foaf:name">Dan Brickley</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0084.out b/tests/rdfa/0084.out
new file mode 100644
index 0000000..df51d3d
--- /dev/null
+++ b/tests/rdfa/0084.out
@@ -0,0 +1,8 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:a .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
+_:a <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:a <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+_:a <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://danbri.org/foaf.rdf#danbri> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://danbri.org/foaf.rdf#danbri> <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+<http://danbri.org/foaf.rdf#danbri> <http://xmlns.com/foaf/0.1/name> "Dan Brickley" .
diff --git a/tests/rdfa/0084.xml b/tests/rdfa/0084.xml
new file mode 100644
index 0000000..4189fa9
--- /dev/null
+++ b/tests/rdfa/0084.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0084</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rev="foaf:knows" rel="foaf:knows">
+ <div>
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p about="http://danbri.org/foaf.rdf#danbri" typeof="foaf:Person" property="foaf:name">Dan Brickley</p>
+
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0085.out b/tests/rdfa/0085.out
new file mode 100644
index 0000000..6432ea0
--- /dev/null
+++ b/tests/rdfa/0085.out
@@ -0,0 +1,4 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:a .
+_:a <http://xmlns.com/foaf/0.1/knows> <http://www.ivan-herman.org/Ivan_Herman> .
+_:a <http://xmlns.com/foaf/0.1/knows> <http://www.w3.org/People/Berners-Lee/card#i> .
+_:a <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
diff --git a/tests/rdfa/0085.xml b/tests/rdfa/0085.xml
new file mode 100644
index 0000000..5cb51ab
--- /dev/null
+++ b/tests/rdfa/0085.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0085</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <div rel="foaf:knows">
+ <p resource="http://www.ivan-herman.org/Ivan_Herman">Ivan Herman</p>
+ <p href="http://www.w3.org/People/Berners-Lee/card#i">Tim Berners Lee</p>
+ <p resource="http://danbri.org/foaf.rdf#danbri" href="http://www.leobard.net/rdf/foaf.xml#me">Dan Brickley</p>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0087.out b/tests/rdfa/0087.out
new file mode 100644
index 0000000..3b4a443
--- /dev/null
+++ b/tests/rdfa/0087.out
@@ -0,0 +1,24 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#alternate> <http://example.org/alternate> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#appendix> <http://example.org/appendix> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#bookmark> <http://example.org/bookmark> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#cite> <http://example.org/cite> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#chapter> <http://example.org/chapter> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#contents> <http://example.org/contents> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#copyright> <http://example.org/copyright> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#glossary> <http://example.org/glossary> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#help> <http://example.org/help> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#icon> <http://example.org/icon> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#index> <http://example.org/index> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#meta> <http://example.org/meta> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/next> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#p3pv1> <http://example.org/p3pv1> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/prev> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#role> <http://example.org/role> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#section> <http://example.org/section> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#subsection> <http://example.org/subsection> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#start> <http://example.org/start> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/license> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#up> <http://example.org/up> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#first> <http://example.org/first> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#last> <http://example.org/last> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#stylesheet> <http://example.org/stylesheet> .
diff --git a/tests/rdfa/0087.xml b/tests/rdfa/0087.xml
new file mode 100644
index 0000000..ad589ba
--- /dev/null
+++ b/tests/rdfa/0087.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0087</title>
+ </head>
+ <body>
+ <p>
+ <a rel=":alternate" href="http://example.org/alternate">alternate</a>
+ <a rel=":appendix" href="http://example.org/appendix">appendix</a>
+ <a rel=":bookmark" href="http://example.org/bookmark">bookmark</a>
+ <a rel=":cite" href="http://example.org/cite">cite</a>
+ <a rel=":chapter" href="http://example.org/chapter">chapter</a>
+ <a rel=":contents" href="http://example.org/contents">contents</a>
+ <a rel=":copyright" href="http://example.org/copyright">copyright</a>
+ <a rel=":glossary" href="http://example.org/glossary">glossary</a>
+ <a rel=":help" href="http://example.org/help">help</a>
+ <a rel=":icon" href="http://example.org/icon">icon</a>
+ <a rel=":index" href="http://example.org/index">index</a>
+ <a rel=":first" href="http://example.org/first">first</a>
+ <a rel=":last" href="http://example.org/last">last</a>
+ <a rel=":license" href="http://example.org/license">license</a>
+ <a rel=":meta" href="http://example.org/meta">meta</a>
+ <a rel=":next" href="http://example.org/next">next</a>
+ <a rel=":p3pv1" href="http://example.org/p3pv1">p3pv1</a>
+ <a rel=":prev" href="http://example.org/prev">prev</a>
+ <a rel=":role" href="http://example.org/role">role</a>
+ <a rel=":section" href="http://example.org/section">section</a>
+ <a rel=":subsection" href="http://example.org/subsection">subsection</a>
+ <a rel=":start" href="http://example.org/start">start</a>
+ <a rel=":stylesheet" href="http://example.org/stylesheet">stylesheet</a>
+ <a rel=":up" href="http://example.org/up">up</a>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0088.out b/tests/rdfa/0088.out
new file mode 100644
index 0000000..d37e9dd
--- /dev/null
+++ b/tests/rdfa/0088.out
@@ -0,0 +1,3 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:a .
+_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:a <http://xmlns.com/foaf/0.1/name> "Dan Brickley" .
diff --git a/tests/rdfa/0088.xml b/tests/rdfa/0088.xml
new file mode 100644
index 0000000..870c2fc
--- /dev/null
+++ b/tests/rdfa/0088.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0088</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <p about="[_:]" property="foaf:name">Dan Brickley</p>
+ <p about="[_:]" typeof="foaf:Person">Dan Brickley again:-)</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0089.out b/tests/rdfa/0089.out
new file mode 100644
index 0000000..3630849
--- /dev/null
+++ b/tests/rdfa/0089.out
@@ -0,0 +1 @@
+<http://example.org/example.png> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Image> .
diff --git a/tests/rdfa/0089.xml b/tests/rdfa/0089.xml
new file mode 100644
index 0000000..7283f2d
--- /dev/null
+++ b/tests/rdfa/0089.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head profile="http://www.w3.org/1999/xhtml/vocab">
+ <title>Test 0089</title>
+ </head>
+ <body>
+ <div>
+ <img src="http://example.org/example.png" typeof="foaf:Image" alt="example image" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0090.out b/tests/rdfa/0090.out
new file mode 100644
index 0000000..d902862
--- /dev/null
+++ b/tests/rdfa/0090.out
@@ -0,0 +1 @@
+<http://example.org/example.png> <http://www.w3.org/1999/xhtml/vocab#license> <http://creativecommons.org/licenses/by-nc-sa/2.0/> .
diff --git a/tests/rdfa/0090.xml b/tests/rdfa/0090.xml
new file mode 100644
index 0000000..6ad0d81
--- /dev/null
+++ b/tests/rdfa/0090.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head profile="http://www.w3.org/1999/xhtml/vocab">
+ <title>Test 0090</title>
+ </head>
+ <body>
+ <div>
+ <img src="http://example.org/example.png"
+ rel="license"
+ href="http://creativecommons.org/licenses/by-nc-sa/2.0/"
+ alt="example image" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0091.out b/tests/rdfa/0091.out
new file mode 100644
index 0000000..f57f53e
--- /dev/null
+++ b/tests/rdfa/0091.out
@@ -0,0 +1,3 @@
+_:a <http://www.w3.org/1999/xhtml/vocab#definition> "a bi-pedal primate" .
+_:a <http://www.w3.org/1999/xhtml/vocab#note> "confused animal" .
+_:a <http://www.w3.org/1999/xhtml/vocab#foo> "Milky Way" .
diff --git a/tests/rdfa/0091.xml b/tests/rdfa/0091.xml
new file mode 100644
index 0000000..79f208b
--- /dev/null
+++ b/tests/rdfa/0091.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head profile="http://www.w3.org/1999/xhtml/vocab">
+ <title>Test 0091</title>
+ </head>
+ <body>
+ <p about="[_:human]">
+ A human is
+ <span property=":definition">a bi-pedal primate</span>.
+ They are quite possibly one of the most
+ <span property=":note">confused animal</span>s residing in the
+ <span property=":foo">Milky Way</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0093.out b/tests/rdfa/0093.out
new file mode 100644
index 0000000..6c96dd4
--- /dev/null
+++ b/tests/rdfa/0093.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0093.xml> <http://purl.org/dc/elements/1.1/creator> "Albert Einstein" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0093.xml> <http://purl.org/dc/elements/1.1/title> "E = mc2: The Most Urgent Problem of Our Time"^^<http://www.example.org/XMLLiteral> .
diff --git a/tests/rdfa/0093.xml b/tests/rdfa/0093.xml
new file mode 100644
index 0000000..e076480
--- /dev/null
+++ b/tests/rdfa/0093.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:ex="http://www.example.org/">
+ <head profile="http://www.w3.org/1999/xhtml/vocab">
+ <title>Test 0093</title>
+ </head>
+ <body>
+ <div about="">
+ Author: <span property="dc:creator">Albert Einstein</span>
+ <h2 property="dc:title" datatype="ex:XMLLiteral">E = mc<sup>2</sup>: The Most Urgent Problem of Our Time</h2>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0099.out b/tests/rdfa/0099.out
new file mode 100644
index 0000000..a1389b0
--- /dev/null
+++ b/tests/rdfa/0099.out
@@ -0,0 +1 @@
+<http://www.cwi.nl/~steven/> <http://www.example.org/likes> "\n We put thirty spokes together and call it a wheel;\n But it is on the space where there is nothing that the usefulness of the wheel depends.\n We turn clay to make a vessel;\n But it is on the space where there is nothing that the usefulness of the vessel depends.\n We pierce doors and windows to make a house;\n And it is on these spaces where there is nothing that the usefulness of the house depends.\n Therefore just as we take advantage of what is, we should recognize the usefulness of what is not.\n\n Lao Tzu: Tao Te Ching" .
diff --git a/tests/rdfa/0099.xml b/tests/rdfa/0099.xml
new file mode 100644
index 0000000..822ce68
--- /dev/null
+++ b/tests/rdfa/0099.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:example="http://www.example.org/">
+ <head profile="http://www.w3.org/1999/xhtml/vocab">
+ <title>Test 0099</title>
+ </head>
+ <body>
+ <p about="http://www.cwi.nl/~steven/" property="example:likes">
+ We put thirty spokes together and call it a wheel;
+ But it is on the space where there is nothing that the usefulness of the wheel depends.
+ We turn clay to make a vessel;
+ But it is on the space where there is nothing that the usefulness of the vessel depends.
+ We pierce doors and windows to make a house;
+ And it is on these spaces where there is nothing that the usefulness of the house depends.
+ Therefore just as we take advantage of what is, we should recognize the usefulness of what is not.
+
+ Lao Tzu: Tao Te Ching</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0104.out b/tests/rdfa/0104.out
new file mode 100644
index 0000000..50073cd
--- /dev/null
+++ b/tests/rdfa/0104.out
@@ -0,0 +1,3 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0104.xml#interfenestration> <http://www.example.org/size> _:a .
+_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "17" .
+_:a <http://www.example.org/unit> "character" .
diff --git a/tests/rdfa/0104.xml b/tests/rdfa/0104.xml
new file mode 100644
index 0000000..2d990fa
--- /dev/null
+++ b/tests/rdfa/0104.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+xmlns:example="http://www.example.org/">
+ <head profile="http://www.w3.org/1999/xhtml/vocab">
+ <title>Test 0104</title>
+ </head>
+ <body>
+ <p>
+ The word "interfenestration" has
+ <span about="#interfenestration" rel="example:size">
+ <span property="rdf:value">17</span>
+ <span property="example:unit">character</span>s.
+ </span>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0106.out b/tests/rdfa/0106.out
new file mode 100644
index 0000000..3db1836
--- /dev/null
+++ b/tests/rdfa/0106.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0106.xml> <http://purl.org/dc/elements/1.1/creator> _:a .
diff --git a/tests/rdfa/0106.xml b/tests/rdfa/0106.xml
new file mode 100644
index 0000000..c7138c9
--- /dev/null
+++ b/tests/rdfa/0106.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0106</title>
+ </head>
+ <body>
+ <div about="" rel="dc:creator">
+ <a rel="" href="manu.html">Manu</a> created this page.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0107.out b/tests/rdfa/0107.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfa/0107.out
diff --git a/tests/rdfa/0107.xml b/tests/rdfa/0107.xml
new file mode 100644
index 0000000..2217ce7
--- /dev/null
+++ b/tests/rdfa/0107.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/">
+ <head>
+ <title>Test 0107</title>
+ </head>
+ <body>
+ <div rel="next"></div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0108.out b/tests/rdfa/0108.out
new file mode 100644
index 0000000..1a5c32d
--- /dev/null
+++ b/tests/rdfa/0108.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/property> "\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03CC\n\u03AC\u03C3\u03C0\u03C1\u03BF \u03B4\u03B9\u03AC\u03C3\u03C4\u03B7\u03BC\u03B1\n"@el .
diff --git a/tests/rdfa/0108.xml b/tests/rdfa/0108.xml
new file mode 100644
index 0000000..eaf2cb9
--- /dev/null
+++ b/tests/rdfa/0108.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/">
+ <head>
+ <title>Test 0108</title>
+ </head>
+ <body>
+ <p about="http://example.org/node" property="ex:property"
+ datatype="" xml:lang="el">ελληνικό
+άσπÏο διάστημα
+</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0109.out b/tests/rdfa/0109.out
new file mode 100644
index 0000000..2cdc0f0
--- /dev/null
+++ b/tests/rdfa/0109.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0109.xml> <http://purl.org/dc/elements/1.1/title> "Test 0109" .
diff --git a/tests/rdfa/0109.xml b/tests/rdfa/0109.xml
new file mode 100644
index 0000000..68a2e67
--- /dev/null
+++ b/tests/rdfa/0109.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xml:base="http://example.org/invalid/">
+ <head>
+ <title>Test 0109</title>
+ </head>
+ <body>
+ <!-- This a NOT a valid XHTML document (due to @xml:base) -->
+ <div xml:base="http://example.org/invalid/">
+ <p about="">This is <span property="dc:title">Test 0109</span>.</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0110.out b/tests/rdfa/0110.out
new file mode 100644
index 0000000..dbe0b56
--- /dev/null
+++ b/tests/rdfa/0110.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0110.xml> <http://www.w3.org/1999/xhtml/vocab#next> _:a .
diff --git a/tests/rdfa/0110.xml b/tests/rdfa/0110.xml
new file mode 100644
index 0000000..586b875
--- /dev/null
+++ b/tests/rdfa/0110.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#">
+ <head>
+ <title>Test 0110</title>
+ </head>
+ <body>
+ <div rel="xhv:next">
+ <div rel="xhv:next" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0111.out b/tests/rdfa/0111.out
new file mode 100644
index 0000000..f788f8e
--- /dev/null
+++ b/tests/rdfa/0111.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0111.xml> <http://www.w3.org/1999/xhtml/vocab#next> _:a .
+_:a <http://www.w3.org/1999/xhtml/vocab#next> _:b .
diff --git a/tests/rdfa/0111.xml b/tests/rdfa/0111.xml
new file mode 100644
index 0000000..50bd9c2
--- /dev/null
+++ b/tests/rdfa/0111.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#">
+ <head>
+ <title>Test 0111</title>
+ </head>
+ <body>
+ <div rel="xhv:next">
+ <div rel="xhv:next">
+ <div rel="xhv:next" />
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0112.out b/tests/rdfa/0112.out
new file mode 100644
index 0000000..0359dad
--- /dev/null
+++ b/tests/rdfa/0112.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/property> "not an XML Literal,\nwhitespace preserved\n" .
diff --git a/tests/rdfa/0112.xml b/tests/rdfa/0112.xml
new file mode 100644
index 0000000..f17a428
--- /dev/null
+++ b/tests/rdfa/0112.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/">
+ <head>
+ <title>Test 0112</title>
+ </head>
+ <body>
+ <p>
+ <span about="http://example.org/node" property="ex:property"
+ datatype="">not an XML Literal,
+whitespace preserved
+</span>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0113.out b/tests/rdfa/0113.out
new file mode 100644
index 0000000..5363635
--- /dev/null
+++ b/tests/rdfa/0113.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0113.xml#a> <http://purl.org/dc/elements/1.1/title> "" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0113.xml#b> <http://purl.org/dc/elements/1.1/title> "" .
diff --git a/tests/rdfa/0113.xml b/tests/rdfa/0113.xml
new file mode 100644
index 0000000..4dbe2fe
--- /dev/null
+++ b/tests/rdfa/0113.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0113</title>
+ </head>
+ <body>
+ <span about="#a" property="dc:title"></span>
+ <span about="#b" property="dc:title" />
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0114.out b/tests/rdfa/0114.out
new file mode 100644
index 0000000..ce68623
--- /dev/null
+++ b/tests/rdfa/0114.out
@@ -0,0 +1,8 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://www.w3.org/1999/xhtml/vocab#index> <http://rdfa.info/test-suite/#> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0115.xml> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://www.w3.org/1999/xhtml/vocab#up> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://creativecommons.org/ns#attributionURL> <http://rdfa.info/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase1> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase3> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/...> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase4> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml?foo=bar../baz> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase5> <http://rdfa.info/test-suite/test-cases/.../.htaccess> .
diff --git a/tests/rdfa/0114.xml b/tests/rdfa/0114.xml
new file mode 100644
index 0000000..76caa12
--- /dev/null
+++ b/tests/rdfa/0114.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cc="http://creativecommons.org/ns#"
+xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#"
+xmlns:rdfatest="http://rdfa.info/vocabs/rdfa-test#">
+ <head>
+ <title>Test 0114</title>
+ </head>
+ <body>
+ <div>
+ <a rel="xhv:index" href="../../.././#">Test Suite</a>
+ <a rel="xhv:next" href="0115.xml">Test Case 0115</a>
+ <a rel="xhv:up" href="./">Test Case 0114</a>
+ <a rel="cc:attributionURL" href="../../../../">RDFa Website</a>
+ <a rel="rdfatest:cornerCase1" href=".">Corner Case #1</a>
+ <a rel="rdfatest:cornerCase3" href="...">Corner Case #3</a>
+ <a rel="rdfatest:cornerCase4" href="?foo=bar../baz">Corner Case #4</a>
+ <a rel="rdfatest:cornerCase5" href="../..../../../.../.htaccess">Corner Case #5</a>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0115.out b/tests/rdfa/0115.out
new file mode 100644
index 0000000..7fd325b
--- /dev/null
+++ b/tests/rdfa/0115.out
@@ -0,0 +1,4 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0115.xml> <http://www.example.com/entity1> ">" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0115.xml> <http://www.example.com/entity2> "Ben & Co." .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0115.xml> <http://www.example.com/entity3> "@" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0115.xml> <http://www.example.com/entity4> "@" .
diff --git a/tests/rdfa/0115.xml b/tests/rdfa/0115.xml
new file mode 100644
index 0000000..81e0288
--- /dev/null
+++ b/tests/rdfa/0115.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://www.example.com/">
+ <head>
+ <title>Test 0115</title>
+ </head>
+ <body>
+ <p>Description: XML entities in the RDFa content</p>
+ <p>
+ <span property="ex:entity1">&gt;</span>
+ <span property="ex:entity2">Ben &amp; Co.</span>
+ <span property="ex:entity3">&#x40;</span>
+ <span property="ex:entity4">&#64;</span>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0117.out b/tests/rdfa/0117.out
new file mode 100644
index 0000000..024ca4f
--- /dev/null
+++ b/tests/rdfa/0117.out
@@ -0,0 +1,2 @@
+<http://www.example.org/tc117.xhtml> <http://purl.org/dc/elements/1.1/title> "Test 0117" .
+<http://www.example.org/tc117.xhtml> <http://purl.org/dc/elements/1.1/contributor> "Mark Birbeck" .
diff --git a/tests/rdfa/0117.xml b/tests/rdfa/0117.xml
new file mode 100644
index 0000000..4ee4b32
--- /dev/null
+++ b/tests/rdfa/0117.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <base href="http://www.example.org/tc117.xhtml#fragment"></base>
+ <title property="dc:title">Test 0117</title>
+ </head>
+ <body>
+ <p>
+ <span property="dc:contributor">Mark Birbeck</span>
+ added this triple test.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0118.out b/tests/rdfa/0118.out
new file mode 100644
index 0000000..9bad5c3
--- /dev/null
+++ b/tests/rdfa/0118.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0118.xml> <http://purl.org/dc/elements/1.1/creator> "Ben" .
diff --git a/tests/rdfa/0118.xml b/tests/rdfa/0118.xml
new file mode 100644
index 0000000..38631af
--- /dev/null
+++ b/tests/rdfa/0118.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0118</title>
+ </head>
+ <body>
+ <p>
+ Check to see if parsers get confused when "" is
+ interpreted as NULL in some chaining cases.
+ <a href="http://example.org/ben.html"><span
+ about="" property="dc:creator">Ben</span></a>
+ </p>
+ </body>
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0119.out b/tests/rdfa/0119.out
new file mode 100644
index 0000000..72b1b09
--- /dev/null
+++ b/tests/rdfa/0119.out
@@ -0,0 +1 @@
+<http://example.org/> <http://purl.org/dc/elements/1.1/title> "Example Website" .
diff --git a/tests/rdfa/0119.xml b/tests/rdfa/0119.xml
new file mode 100644
index 0000000..3f872d6
--- /dev/null
+++ b/tests/rdfa/0119.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:example="http://example.org/">
+ <head>
+ <title>Test 0119</title>
+ </head>
+ <body>
+ <div>
+ <p about="[example:]">
+ The
+ <span property="dc:title">Example Website</span>
+ is used in many W3C tutorials.
+ </p>
+ </div>
+ </body>
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0120.out b/tests/rdfa/0120.out
new file mode 100644
index 0000000..01a237d
--- /dev/null
+++ b/tests/rdfa/0120.out
@@ -0,0 +1 @@
+<http://www.w3.org/1999/xhtml/vocab#> <http://purl.org/dc/elements/1.1/title> "The XHTML Vocabulary Document" .
diff --git a/tests/rdfa/0120.xml b/tests/rdfa/0120.xml
new file mode 100644
index 0000000..8735eb1
--- /dev/null
+++ b/tests/rdfa/0120.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:example="http://example.org/">
+ <head>
+ <title>Test 0120</title>
+ </head>
+ <body>
+ <p about="[:]">
+ The
+ <span property="dc:title">The XHTML Vocabulary Document</span>
+ is the default prefix for XHTML+RDFa 1.0.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0121.out b/tests/rdfa/0121.out
new file mode 100644
index 0000000..515f701
--- /dev/null
+++ b/tests/rdfa/0121.out
@@ -0,0 +1,2 @@
+<http://example.org/> <http://purl.org/dc/elements/1.1/title> "Test Case 0121" .
+<http://example.org/> <http://purl.org/dc/elements/1.1/contributor> "Shane McCarron" .
diff --git a/tests/rdfa/0121.xml b/tests/rdfa/0121.xml
new file mode 100644
index 0000000..b0d573a
--- /dev/null
+++ b/tests/rdfa/0121.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0121</title>
+ </head>
+ <body>
+ <div>
+ <p about="http://example.org/">
+ <span about="[]" property="dc:title">Test Case 0121</span>
+ checks to make sure RDFa processors resolve the empty CURIE correctly.
+ <p resource="[]">
+ <span property="dc:contributor">Shane McCarron</span>
+ contributed to this test.
+ </p>
+ </p>
+ </div>
+ </body>
+
+
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0122.out b/tests/rdfa/0122.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfa/0122.out
diff --git a/tests/rdfa/0122.xml b/tests/rdfa/0122.xml
new file mode 100644
index 0000000..6cbe23b
--- /dev/null
+++ b/tests/rdfa/0122.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0122</title>
+ </head>
+ <body>
+ <p about="http://example.org/section1.html">
+ This section is contained below <span rel="up" resource="[]">the main site</span>.
+ </p>
+ </body>
+
+
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0126.out b/tests/rdfa/0126.out
new file mode 100644
index 0000000..9bf0b7a
--- /dev/null
+++ b/tests/rdfa/0126.out
@@ -0,0 +1,3 @@
+<http://www.example.org/#article> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
+<http://www.example.org/#article> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://rdfs.org/sioc/ns#Post> .
+<http://www.example.org/#article> <http://purl.org/dc/terms/title> "My article" .
diff --git a/tests/rdfa/0126.xml b/tests/rdfa/0126.xml
new file mode 100644
index 0000000..3dbb78a
--- /dev/null
+++ b/tests/rdfa/0126.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dct="http://purl.org/dc/terms/"
+xmlns:sioc="http://rdfs.org/sioc/ns#"
+xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0126</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#article" typeof="foaf:Document sioc:Post">
+ <h1 property="dct:title">My article</h1>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0131.out b/tests/rdfa/0131.out
new file mode 100644
index 0000000..b3e2547
--- /dev/null
+++ b/tests/rdfa/0131.out
@@ -0,0 +1,5 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0131.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0131.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/test.css> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0131.xml> <http://www.w3.org/1999/xhtml/vocab#first> <http://example.org/test.css> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0131.xml> <http://www.w3.org/1999/xhtml/vocab#last> <http://example.org/test.css> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0131.xml> <http://www.w3.org/1999/xhtml/vocab#subsection> <http://example.org/test.css> .
diff --git a/tests/rdfa/0131.xml b/tests/rdfa/0131.xml
new file mode 100644
index 0000000..f24b722
--- /dev/null
+++ b/tests/rdfa/0131.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#">
+<head>
+ <title>Test</title>
+ <link rel="xhv:next&#x20;xhv:prev&#x09;xhv:first&#x0a;xhv:last&#x0d;xhv:subsection" href="http://example.org/test.css" />
+</head>
+<body>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0134.out b/tests/rdfa/0134.out
new file mode 100644
index 0000000..4989b6c
--- /dev/null
+++ b/tests/rdfa/0134.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0134.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/test.css> .
diff --git a/tests/rdfa/0134.xml b/tests/rdfa/0134.xml
new file mode 100644
index 0000000..d352c4b
--- /dev/null
+++ b/tests/rdfa/0134.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test</title>
+ <link rel="LICENSE" href="http://example.org/test.css" />
+</head>
+<body>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0140.out b/tests/rdfa/0140.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfa/0140.out
diff --git a/tests/rdfa/0140.xml b/tests/rdfa/0140.xml
new file mode 100644
index 0000000..2876574
--- /dev/null
+++ b/tests/rdfa/0140.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Blank-node as Predicate Test</title>
+</head>
+<body>
+<p>Blank Nodes are not allowed to be predicate identifiers in RDF:</p>
+<p property="_:invalid">Test</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0147.out b/tests/rdfa/0147.out
new file mode 100644
index 0000000..8dbe80f
--- /dev/null
+++ b/tests/rdfa/0147.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0147.xml> <http://example.org/test> "Test" .
diff --git a/tests/rdfa/0147.xml b/tests/rdfa/0147.xml
new file mode 100644
index 0000000..1d6b062
--- /dev/null
+++ b/tests/rdfa/0147.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test</title>
+</head>
+<body>
+<p xmlns:xmlzzz="http://example.org/" property="xmlzzz:test">Test</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0172.out b/tests/rdfa/0172.out
new file mode 100644
index 0000000..989f53a
--- /dev/null
+++ b/tests/rdfa/0172.out
@@ -0,0 +1 @@
+<http://example.org/> <http://example.org/terms#prop> "A plain literal with a lang tag."@en .
diff --git a/tests/rdfa/0172.xml b/tests/rdfa/0172.xml
new file mode 100644
index 0000000..055f4a2
--- /dev/null
+++ b/tests/rdfa/0172.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/terms#">
+<head>
+ <title>Test 0172</title>
+ <base href="http://example.org/"/>
+</head>
+<body xml:lang="en">
+ <p property="ex:prop" datatype="">A <strong>plain literal</strong> with a lang tag.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0173.out b/tests/rdfa/0173.out
new file mode 100644
index 0000000..fcecb33
--- /dev/null
+++ b/tests/rdfa/0173.out
@@ -0,0 +1 @@
+<http://example.org/> <http://example.org/terms#prop> "Just a plain literal." .
diff --git a/tests/rdfa/0173.xml b/tests/rdfa/0173.xml
new file mode 100644
index 0000000..f8991aa
--- /dev/null
+++ b/tests/rdfa/0173.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/terms#">
+<head>
+ <title>Test 0173</title>
+ <base href="http://example.org/"/>
+</head>
+<body xml:lang="en">
+ <p property="ex:prop" xml:lang="">Just a plain literal.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0174.out b/tests/rdfa/0174.out
new file mode 100644
index 0000000..5f559e7
--- /dev/null
+++ b/tests/rdfa/0174.out
@@ -0,0 +1 @@
+<http://example.org/jd> <http://www.w3.org/2006/vcard/ns#fn> "John Doe" .
diff --git a/tests/rdfa/0174.xml b/tests/rdfa/0174.xml
new file mode 100644
index 0000000..240fcc5
--- /dev/null
+++ b/tests/rdfa/0174.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="http://www.w3.org/2006/vcard/ns#">
+<head>
+ <title>Test 0174</title>
+</head>
+<body>
+ <p>
+ This test ensures that single-character prefixes are allowed.
+ My name is:
+ <span about="http://example.org/jd" property="v:fn">John Doe</span>
+ </p>
+</body>
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0181.out b/tests/rdfa/0181.out
new file mode 100644
index 0000000..aa88a78
--- /dev/null
+++ b/tests/rdfa/0181.out
@@ -0,0 +1 @@
+<http://www.example.org/software> <http://www.w3.org/1999/xhtml/vocab#license> <http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231> .
diff --git a/tests/rdfa/0181.xml b/tests/rdfa/0181.xml
new file mode 100644
index 0000000..900fa90
--- /dev/null
+++ b/tests/rdfa/0181.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0181</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/software">
+ <p rel=":license" resource="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">Ivan Herman</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0197.out b/tests/rdfa/0197.out
new file mode 100644
index 0000000..c083c58
--- /dev/null
+++ b/tests/rdfa/0197.out
@@ -0,0 +1 @@
+<http://www.example.org/me> <http://purl.org/dc/terms/language> "Ruby" .
diff --git a/tests/rdfa/0197.xml b/tests/rdfa/0197.xml
new file mode 100644
index 0000000..0d16e53
--- /dev/null
+++ b/tests/rdfa/0197.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/terms/">
+<head>
+ <title>Test 0197</title>
+ <base href="http://www.example.org/me" />
+</head>
+<body>
+ <p about="" typeof="class/Person" property="pred/name">Gregg Kellogg</p>
+ <p property="dc:language" datatype="pred/lang">Ruby</p>
+ <p rel="pred/rel" resource="http://kellogg-assoc.com/">Kellogg Associates</p>
+ <p rev="pred/rev" resource="http://github.org/gkellogg/rdf_context">Ruby Gem</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0201.out b/tests/rdfa/0201.out
new file mode 100644
index 0000000..327cf03
--- /dev/null
+++ b/tests/rdfa/0201.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0201.xml> <http://purl.org/dc/terms/description> "A yellow rectangle with sharp corners." .
diff --git a/tests/rdfa/0201.xml b/tests/rdfa/0201.xml
new file mode 100644
index 0000000..2abbc9e
--- /dev/null
+++ b/tests/rdfa/0201.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="12cm" height="4cm" viewBox="0 0 1200 400"
+xmlns:dc="http://purl.org/dc/terms/"
+xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny">
+ <desc property="dc:description">A yellow rectangle with sharp corners.</desc>
+ <!-- Show outline of canvas using 'rect' element -->
+ <rect x="1" y="1" width="1198" height="398"
+ fill="none" stroke="blue" stroke-width="2"/>
+ <rect x="400" y="100" width="400" height="200"
+ fill="yellow" stroke="navy" stroke-width="10" />
+
+</svg> \ No newline at end of file
diff --git a/tests/rdfa/0202.out b/tests/rdfa/0202.out
new file mode 100644
index 0000000..bf0d427
--- /dev/null
+++ b/tests/rdfa/0202.out
@@ -0,0 +1 @@
+<http://example.com/> <http://purl.org/dc/terms/description> "A yellow rectangle with sharp corners." .
diff --git a/tests/rdfa/0202.xml b/tests/rdfa/0202.xml
new file mode 100644
index 0000000..ab01a8b
--- /dev/null
+++ b/tests/rdfa/0202.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="12cm" height="4cm" viewBox="0 0 1200 400"
+xml:base="http://example.com/"
+xmlns:dc="http://purl.org/dc/terms/"
+xmlns="http://www.w3.org/2000/svg">
+ version="1.2"
+ baseProfile="tiny"
+ <desc property="dc:description">A yellow rectangle with sharp corners.</desc>
+ <!-- Show outline of canvas using 'rect' element -->
+ <rect x="1" y="1" width="1198" height="398"
+ fill="none" stroke="blue" stroke-width="2"/>
+ <rect x="400" y="100" width="400" height="200"
+ fill="yellow" stroke="navy" stroke-width="10" />
+</svg> \ No newline at end of file
diff --git a/tests/rdfa/0203.out b/tests/rdfa/0203.out
new file mode 100644
index 0000000..bf0d427
--- /dev/null
+++ b/tests/rdfa/0203.out
@@ -0,0 +1 @@
+<http://example.com/> <http://purl.org/dc/terms/description> "A yellow rectangle with sharp corners." .
diff --git a/tests/rdfa/0203.xml b/tests/rdfa/0203.xml
new file mode 100644
index 0000000..a9ee9aa
--- /dev/null
+++ b/tests/rdfa/0203.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="12cm" height="4cm" viewBox="0 0 1200 400"
+xml:base="http://example.com/not-this-one/"
+xmlns:dc="http://purl.org/dc/terms/"
+xmlns="http://www.w3.org/2000/svg">
+ version="1.2"
+ baseProfile="tiny"
+ <desc about="" xml:base="http://example.com/" property="dc:description">A yellow rectangle with sharp corners.</desc>
+ <!-- Show outline of canvas using 'rect' element -->
+ <rect x="1" y="1" width="1198" height="398"
+ fill="none" stroke="blue" stroke-width="2"/>
+ <rect x="400" y="100" width="400" height="200"
+ fill="yellow" stroke="navy" stroke-width="10" />
+</svg> \ No newline at end of file
diff --git a/tests/rdfa/0207.out b/tests/rdfa/0207.out
new file mode 100644
index 0000000..c78413b
--- /dev/null
+++ b/tests/rdfa/0207.out
@@ -0,0 +1,6 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0207.xml#event1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/12/cal/icaltzd#Vevent> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0207.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#summary> "Weekend off in Iona" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0207.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#dtstart> "2006-10-21"^^<http://www.w3.org/2001/XMLSchema#date> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0207.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#dtend> "2006-10-23"^^<http://www.w3.org/2001/XMLSchema#date> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0207.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#url> <http://freetime.example.org/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0207.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#location> "Iona, UK" .
diff --git a/tests/rdfa/0207.xml b/tests/rdfa/0207.xml
new file mode 100644
index 0000000..d6c3ffd
--- /dev/null
+++ b/tests/rdfa/0207.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cal="http://www.w3.org/2002/12/cal/icaltzd#"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
+<head>
+ <title>Test 0207</title>
+</head>
+ <body>
+ <p about="#event1" typeof="cal:Vevent">
+ <b property="cal:summary">Weekend off in Iona</b>:
+ <span property="cal:dtstart" content="2006-10-21" datatype="xsd:date">Oct 21st</span>
+ to <span property="cal:dtend" content="2006-10-23" datatype="xsd:date">Oct 23rd</span>.
+ See <a rel="cal:url" href="http://freetime.example.org/">FreeTime.Example.org</a> for
+ info on <span property="cal:location">Iona, UK</span>.
+ </p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0209.out b/tests/rdfa/0209.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfa/0209.out
diff --git a/tests/rdfa/0209.xml b/tests/rdfa/0209.xml
new file mode 100644
index 0000000..ba327ce
--- /dev/null
+++ b/tests/rdfa/0209.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0209</title>
+ <base href="http://example.org/"/>
+ </head>
+ <body>
+ <!-- @prefix should be ignored in the RDFa 1.0 case -->
+ <div about ="#me" prefix="foaf: http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">Ivan Herman</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0210.out b/tests/rdfa/0210.out
new file mode 100644
index 0000000..6e1576e
--- /dev/null
+++ b/tests/rdfa/0210.out
@@ -0,0 +1 @@
+<http://example.org/#me> <http://www.example.com/wrong/foaf/uri/name> "Ivan Herman" .
diff --git a/tests/rdfa/0210.xml b/tests/rdfa/0210.xml
new file mode 100644
index 0000000..d601560
--- /dev/null
+++ b/tests/rdfa/0210.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0210</title>
+ <base href="http://example.org/"/>
+ </head>
+ <body>
+ <!-- prefix has a higher priority than xmlns, but should be ignored because version is explicitly set to 1.0 -->
+ <div about ="#me" xmlns:foaf="http://www.example.com/wrong/foaf/uri/" prefix="foaf: http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">Ivan Herman</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0211.out b/tests/rdfa/0211.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfa/0211.out
diff --git a/tests/rdfa/0211.xml b/tests/rdfa/0211.xml
new file mode 100644
index 0000000..5bbd005
--- /dev/null
+++ b/tests/rdfa/0211.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0211</title>
+ <base href="http://example.org/"/>
+</head>
+<body>
+ <!-- The version statement should be ignored with version set to 1.0 -->
+ <div about ="#me" vocab="http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">Ivan Herman</p>
+ </div>
+</body>
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0212.out b/tests/rdfa/0212.out
new file mode 100644
index 0000000..9534304
--- /dev/null
+++ b/tests/rdfa/0212.out
@@ -0,0 +1 @@
+<http://www.example.org/> <http://purl.org/dc/elements/1.1/title> "E = mc<sup xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">2</sup>: The Most Urgent Problem of Our Time"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
diff --git a/tests/rdfa/0212.xml b/tests/rdfa/0212.xml
new file mode 100644
index 0000000..0d60cf0
--- /dev/null
+++ b/tests/rdfa/0212.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0212</title>
+ </head>
+ <body>
+ <!-- In RDFa 1.0, if a literal contains XML elements, and no explicit datatype is set, the result is XMLLiteral -->
+ <div about="http://www.example.org/">
+ <h2 property="dc:title">E = mc<sup>2</sup>: The Most Urgent Problem of Our Time</h2>
+ </div>
+ </body>
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0215.out b/tests/rdfa/0215.out
new file mode 100644
index 0000000..6d5b231
--- /dev/null
+++ b/tests/rdfa/0215.out
@@ -0,0 +1 @@
+<http://www.ivan-herman.net/foaf#me> <http://xmlns.com/foaf/0.1/name> "Iv\u00E1n" .
diff --git a/tests/rdfa/0215.xml b/tests/rdfa/0215.xml
new file mode 100644
index 0000000..a9b8f8d
--- /dev/null
+++ b/tests/rdfa/0215.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:air="http://www.daml.org/2001/10/html/airport-ont#"
+xmlns:bio="http://vocab.org/bio/0.1/"
+xmlns:contact="http://www.w3.org/2000/10/swap/pim/contact#"
+xmlns:dc="http://purl.org/dc/terms/"
+xmlns:foaf="http://xmlns.com/foaf/0.1/"
+xmlns:ical="http://www.w3.org/2002/12/cal/icaltzd#"
+xmlns:owl="http://www.w3.org/2002/07/owl#"
+xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+xmlns:rel="http://vocab.org/relationship/"
+xmlns:openid="http://xmlns.openid.net/auth#"
+xmlns:rss="http://web.resource.org/rss/1.0/"
+xmlns:sioc="http://rdfs.org/sioc/ns#"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
+xmlns:google="http://rdf.data-vocabulary.org/#"
+xmlns:rsa="http://www.w3.org/ns/auth/rsa#"
+xmlns:cert="http://www.w3.org/ns/auth/cert#"
+xmlns:wot="http://xmlns.com/wot/0.1/">
+<head>
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
+</head>
+<body>
+ <!-- Tests whether the Unicode (UTF-8 encoded) characters are properly handled even with a large set of properties
+ in the html element, ie, when the content sniffing to find out the character encoding may not work -->
+ <p about="http://www.ivan-herman.net/foaf#me" property="foaf:name">Iván</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0258.out b/tests/rdfa/0258.out
new file mode 100644
index 0000000..2637cb7
--- /dev/null
+++ b/tests/rdfa/0258.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0258.xml> <http://www.w3.org/ns/earl#testcase> _:test .
diff --git a/tests/rdfa/0258.xml b/tests/rdfa/0258.xml
new file mode 100644
index 0000000..ffce955
--- /dev/null
+++ b/tests/rdfa/0258.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Undescore Prefix is Ignored Test</title>
+</head>
+<body>
+<p>Ensure that the "_" prefix is ignored.</p>
+<p xmlns:_="http://example.org/"
+ prefix="_: http://example.org/"
+ xmlns:earl="http://www.w3.org/ns/earl#"
+ rel="earl:testcase" resource="_:test">Test</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0262.out b/tests/rdfa/0262.out
new file mode 100644
index 0000000..05e2309
--- /dev/null
+++ b/tests/rdfa/0262.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa/0262.xml b/tests/rdfa/0262.xml
new file mode 100644
index 0000000..fc52664
--- /dev/null
+++ b/tests/rdfa/0262.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<head>
+ <title>Test 0262</title>
+</head>
+<body>
+ <p>This photo was taken by <span class="author" about="photo1.jpg" property=" dc:creator
+">Mark Birbeck</span>.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0291.out b/tests/rdfa/0291.out
new file mode 100644
index 0000000..678f4b7
--- /dev/null
+++ b/tests/rdfa/0291.out
@@ -0,0 +1 @@
+<http://example.net/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "value" .
diff --git a/tests/rdfa/0291.xml b/tests/rdfa/0291.xml
new file mode 100644
index 0000000..2686ab9
--- /dev/null
+++ b/tests/rdfa/0291.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<head>
+ <title>Test 0291</title>
+</head>
+<body>
+ <h1>@href as subject overridden by @about</h1>
+ <a about="http://example.net/" href="http://example.org/" property="rdf:value" content="value">ignored</a>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0294.out b/tests/rdfa/0294.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfa/0294.out
diff --git a/tests/rdfa/0294.xml b/tests/rdfa/0294.xml
new file mode 100644
index 0000000..a0cd6e4
--- /dev/null
+++ b/tests/rdfa/0294.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0294</title>
+</head>
+<body>
+ <p>None of these triples should be generated in RDFa 1.0.</p>
+ <div>
+ Vocabulary Prefixes
+ <span property="grddl:">GRDDL</span>
+ <span property="ma:">MA</span>
+ <span property="owl:">OWL</span>
+ <span property="rdf:">RDF</span>
+ <span property="rdfa:">RDFa</span>
+ <span property="rdfs:">RDFS</span>
+ <span property="rif:">RIF</span>
+ <span property="skos:">SKOS</span>
+ <span property="skosxl:">SKOS-XL</span>
+ <span property="wdr:">WDR</span>
+ <span property="void:">VOID</span>
+ <span property="wdrs:">WDRS</span>
+ <span property="xhv:">XHV</span>
+ <span property="xml:">XML</span>
+ <span property="xsd:">XSD</span>
+ </div>
+ <div>
+ Widely Used prefixes
+ <span property="cc:">CC</span>
+ <span property="ctag:">CTAG</span>
+ <span property="dc:">DC</span>
+ <span property="dcterms:">DCTERMS</span>
+ <span property="foaf:">FOAF</span>
+ <span property="gr:">GR</span>
+ <span property="ical:">ICAL</span>
+ <span property="og:">OG</span>
+ <span property="rev:">REV</span>
+ <span property="sioc:">SIOC</span>
+ <span property="v:">V</span>
+ <span property="vcard:">VCARD</span>
+ <span property="schema:">Schema</span>
+ </div>
+ <div>
+ Vocabulary Terms
+ <span property="describedby">DescribedBy</span>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa/0304.out b/tests/rdfa/0304.out
new file mode 100644
index 0000000..5c5e210
--- /dev/null
+++ b/tests/rdfa/0304.out
@@ -0,0 +1,2 @@
+<http://example.net/> <http://purl.org/dc/terms/title> "Test 0304" .
+<http://example.net/> <http://purl.org/dc/terms/description> "A yellow rectangle with sharp corners." .
diff --git a/tests/rdfa/0304.xml b/tests/rdfa/0304.xml
new file mode 100644
index 0000000..8d3c251
--- /dev/null
+++ b/tests/rdfa/0304.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="12cm" height="4cm" viewBox="0 0 1200 400"
+ xmlns:dc="http://purl.org/dc/terms/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xml:base="http://example.net/"
+ xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny">
+ <desc property="dc:description">A yellow rectangle with sharp corners.</desc>
+ <metadata>
+ <rdf:RDF>
+ <rdf:Description rdf:about="">
+ <dc:title>Test 0304</dc:title>
+ </rdf:Description>
+ </rdf:RDF>
+ </metadata>
+ <!-- Show outline of canvas using 'rect' element -->
+ <rect x="1" y="1" width="1198" height="398"
+ fill="none" stroke="blue" stroke-width="2"/>
+ <rect x="400" y="100" width="400" height="200"
+ fill="yellow" stroke="navy" stroke-width="10" />
+</svg>
diff --git a/tests/rdfa/Makefile.am b/tests/rdfa/Makefile.am
new file mode 100644
index 0000000..5aff39c
--- /dev/null
+++ b/tests/rdfa/Makefile.am
@@ -0,0 +1,156 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor RDFa 1.0 tests
+#
+# Copyright (C) 2008-2012, David Beckett http://purl.org/net/dajobe/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+BASE_URI=http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/
+#
+# Manifest:
+# https://raw.github.com/rdfa/rdfa-website/master/manifest.ttl
+# defines whether sparql ASK should return true or false for success
+#
+# Query to return all RDFA 1.0 test URIs:
+#
+# roqet -r csv -D https://raw.github.com/rdfa/rdfa-website/master/manifest.ttl -e 'select ?t where {?t <http://rdfa.info/vocabs/rdfa-test#rdfaVersion> "rdfa1.0"}'
+#
+# Query to return RDFa 1.0 tests that must return False:
+# roqet -r csv -D https://raw.github.com/rdfa/rdfa-website/master/manifest.ttl -e 'select * where {?s <http://www.w3.org/2006/03/test-description#expectedResults> false; <http://rdfa.info/vocabs/rdfa-test#rdfaVersion> "rdfa1.0"}'
+#
+# http://rdfa.info/test-suite/test-cases/0042
+# http://rdfa.info/test-suite/test-cases/0107
+# http://rdfa.info/test-suite/test-cases/0122
+# http://rdfa.info/test-suite/test-cases/0140
+# http://rdfa.info/test-suite/test-cases/0209
+# http://rdfa.info/test-suite/test-cases/0211
+# http://rdfa.info/test-suite/test-cases/0258
+# http://rdfa.info/test-suite/test-cases/0294
+#
+# These all expect 0 ntriples - failure is >0 triples or ERROR
+
+CLEANFILES= \
+*-res.nt
+
+TEST_FILES= \
+0001.xml 0006.xml 0007.xml 0008.xml 0009.xml 0010.xml 0012.xml \
+0013.xml 0014.xml 0015.xml 0017.xml 0018.xml 0019.xml 0020.xml \
+0021.xml 0023.xml 0025.xml 0026.xml 0027.xml 0029.xml 0030.xml \
+0031.xml 0032.xml 0033.xml 0034.xml 0035.xml 0036.xml 0037.xml \
+0038.xml 0039.xml 0040.xml 0041.xml 0042.xml 0046.xml 0047.xml \
+0048.xml 0049.xml 0050.xml 0051.xml 0052.xml 0053.xml 0054.xml \
+0055.xml 0056.xml 0057.xml 0058.xml 0059.xml 0060.xml 0061.xml \
+0062.xml 0063.xml 0064.xml 0065.xml 0066.xml 0067.xml 0068.xml \
+0069.xml 0070.xml 0071.xml 0072.xml 0073.xml 0074.xml 0075.xml \
+0076.xml 0077.xml 0078.xml 0079.xml 0080.xml 0081.xml 0082.xml \
+0083.xml 0084.xml 0085.xml 0087.xml 0088.xml 0089.xml 0090.xml \
+0091.xml 0093.xml 0099.xml 0104.xml 0106.xml 0107.xml 0108.xml \
+0109.xml 0110.xml 0111.xml 0112.xml 0113.xml 0114.xml 0115.xml \
+0117.xml 0118.xml 0119.xml 0120.xml 0121.xml 0122.xml 0126.xml \
+0131.xml 0134.xml 0140.xml 0147.xml 0172.xml 0173.xml 0174.xml \
+0181.xml 0197.xml 0201.xml 0202.xml 0203.xml 0207.xml 0209.xml \
+0210.xml 0211.xml 0212.xml 0215.xml 0258.xml 0262.xml 0291.xml \
+0294.xml 0304.xml
+
+TEST_OUT_FILES = \
+0001.out 0006.out 0007.out 0008.out 0009.out 0010.out 0012.out \
+0013.out 0014.out 0015.out 0017.out 0018.out 0019.out 0020.out \
+0021.out 0023.out 0025.out 0026.out 0027.out 0029.out 0030.out \
+0031.out 0032.out 0033.out 0034.out 0035.out 0036.out 0037.out \
+0038.out 0039.out 0040.out 0041.out 0042.out 0046.out 0047.out \
+0048.out 0049.out 0050.out 0051.out 0052.out 0053.out 0054.out \
+0055.out 0056.out 0057.out 0058.out 0059.out 0060.out 0061.out \
+0062.out 0063.out 0064.out 0065.out 0066.out 0067.out 0068.out \
+0069.out 0070.out 0071.out 0072.out 0073.out 0074.out 0075.out \
+0076.out 0077.out 0078.out 0079.out 0080.out 0081.out 0082.out \
+0083.out 0084.out 0085.out 0087.out 0088.out 0089.out 0090.out \
+0091.out 0093.out 0099.out 0104.out 0106.out 0107.out 0108.out \
+0109.out 0110.out 0111.out 0112.out 0113.out 0114.out 0115.out \
+0117.out 0118.out 0119.out 0120.out 0121.out 0122.out 0126.out \
+0131.out 0134.out 0140.out 0147.out 0172.out 0173.out 0174.out \
+0181.out 0197.out 0201.out 0202.out 0203.out 0207.out 0209.out \
+0210.out 0211.out 0212.out 0215.out 0258.out 0262.out 0291.out \
+0294.out 0304.out
+
+ALL_TEST_FILES= \
+ $(TEST_FILES) \
+ $(TEST_OUT_FILES)
+
+# Expected test failures:
+# 0202.xml - @xml:base support in SVG
+# 0203.xml - @xml:base in non-root in SVG
+# 0304.xml - embedded rdf/xml in SVG
+# (Add a space to the start of this string)
+EXPECTED_FAILURES=" 0202.xml 0203.xml"
+
+EXTRA_DIST = $(ALL_TEST_FILES)
+
+RAPPER = $(top_builddir)/utils/rapper
+RDFDIFF = $(top_builddir)/utils/rdfdiff
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+build-rdfdiff:
+ @(cd $(top_builddir)/utils ; $(MAKE) rdfdiff$(EXEEXT))
+
+if RAPTOR_PARSER_RDFA
+check-local: check-rdfa
+else
+check-local:
+endif
+
+if MAINTAINER_MODE
+check_rdfa_deps = $(TEST_FILES)
+endif
+
+check-rdfa: build-rdfdiff build-rapper $(check_rdfa_deps)
+ @set +e; result=0; failures=; failure_count=0; \
+ $(RECHO) "Testing RDFa 1.0"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .xml` ; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RAPPER) -f noNet -q -i rdfa10 -I $$baseuri -o ntriples $(srcdir)/$$test > $$name-res.nt 2> $$name.err; \
+ status1=$$?; \
+ if test $$status1 = 2; then \
+ status1=0; \
+ fi; \
+ $(RDFDIFF) -f ntriples -u $$baseuri -t ntriples $(srcdir)/$$name.out $$name-res.nt > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ if test $$status1 = 0 -a $$status2 = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ $(RECHO) "Triple counts: expected: `wc -l < $(srcdir)/$$name.out` got: `wc -l < $$name-res.nt` "; \
+ $(RECHO) $(RAPPER) -f noNet -q -i rdfa10 -I $$baseuri -o ntriples $(srcdir)/$$test '>' $$name-res.nt; \
+ $(RECHO) $(RDFDIFF) -f ntriples -u $$baseuri -t ntriples $(srcdir)/$$name.out $$name-res.nt '>' $$name.res; \
+ cat $$name.err $$name.res; \
+ failures="$$failures $$test"; \
+ failure_count=`expr $$failure_count + 1`; \
+ fi; \
+ rm -f $$name-res.nt $$name.res $$name.err; \
+ done; \
+ if test "X$$failures" != X; then \
+ echo "$$failure_count tests FAILED: $$failures"; \
+ if test "$$failures" = $(EXPECTED_FAILURES); then \
+ echo "Ignoring expected failures"; \
+ result=0; \
+ fi; \
+ fi; \
+ set -e; exit $$result
diff --git a/tests/rdfa/Makefile.in b/tests/rdfa/Makefile.in
new file mode 100644
index 0000000..d96c55a
--- /dev/null
+++ b/tests/rdfa/Makefile.in
@@ -0,0 +1,572 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor RDFa 1.0 tests
+#
+# Copyright (C) 2008-2012, David Beckett http://purl.org/net/dajobe/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/rdfa
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+BASE_URI = http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/
+#
+# Manifest:
+# https://raw.github.com/rdfa/rdfa-website/master/manifest.ttl
+# defines whether sparql ASK should return true or false for success
+#
+# Query to return all RDFA 1.0 test URIs:
+#
+# roqet -r csv -D https://raw.github.com/rdfa/rdfa-website/master/manifest.ttl -e 'select ?t where {?t <http://rdfa.info/vocabs/rdfa-test#rdfaVersion> "rdfa1.0"}'
+#
+# Query to return RDFa 1.0 tests that must return False:
+# roqet -r csv -D https://raw.github.com/rdfa/rdfa-website/master/manifest.ttl -e 'select * where {?s <http://www.w3.org/2006/03/test-description#expectedResults> false; <http://rdfa.info/vocabs/rdfa-test#rdfaVersion> "rdfa1.0"}'
+#
+# http://rdfa.info/test-suite/test-cases/0042
+# http://rdfa.info/test-suite/test-cases/0107
+# http://rdfa.info/test-suite/test-cases/0122
+# http://rdfa.info/test-suite/test-cases/0140
+# http://rdfa.info/test-suite/test-cases/0209
+# http://rdfa.info/test-suite/test-cases/0211
+# http://rdfa.info/test-suite/test-cases/0258
+# http://rdfa.info/test-suite/test-cases/0294
+#
+# These all expect 0 ntriples - failure is >0 triples or ERROR
+CLEANFILES = \
+*-res.nt
+
+TEST_FILES = \
+0001.xml 0006.xml 0007.xml 0008.xml 0009.xml 0010.xml 0012.xml \
+0013.xml 0014.xml 0015.xml 0017.xml 0018.xml 0019.xml 0020.xml \
+0021.xml 0023.xml 0025.xml 0026.xml 0027.xml 0029.xml 0030.xml \
+0031.xml 0032.xml 0033.xml 0034.xml 0035.xml 0036.xml 0037.xml \
+0038.xml 0039.xml 0040.xml 0041.xml 0042.xml 0046.xml 0047.xml \
+0048.xml 0049.xml 0050.xml 0051.xml 0052.xml 0053.xml 0054.xml \
+0055.xml 0056.xml 0057.xml 0058.xml 0059.xml 0060.xml 0061.xml \
+0062.xml 0063.xml 0064.xml 0065.xml 0066.xml 0067.xml 0068.xml \
+0069.xml 0070.xml 0071.xml 0072.xml 0073.xml 0074.xml 0075.xml \
+0076.xml 0077.xml 0078.xml 0079.xml 0080.xml 0081.xml 0082.xml \
+0083.xml 0084.xml 0085.xml 0087.xml 0088.xml 0089.xml 0090.xml \
+0091.xml 0093.xml 0099.xml 0104.xml 0106.xml 0107.xml 0108.xml \
+0109.xml 0110.xml 0111.xml 0112.xml 0113.xml 0114.xml 0115.xml \
+0117.xml 0118.xml 0119.xml 0120.xml 0121.xml 0122.xml 0126.xml \
+0131.xml 0134.xml 0140.xml 0147.xml 0172.xml 0173.xml 0174.xml \
+0181.xml 0197.xml 0201.xml 0202.xml 0203.xml 0207.xml 0209.xml \
+0210.xml 0211.xml 0212.xml 0215.xml 0258.xml 0262.xml 0291.xml \
+0294.xml 0304.xml
+
+TEST_OUT_FILES = \
+0001.out 0006.out 0007.out 0008.out 0009.out 0010.out 0012.out \
+0013.out 0014.out 0015.out 0017.out 0018.out 0019.out 0020.out \
+0021.out 0023.out 0025.out 0026.out 0027.out 0029.out 0030.out \
+0031.out 0032.out 0033.out 0034.out 0035.out 0036.out 0037.out \
+0038.out 0039.out 0040.out 0041.out 0042.out 0046.out 0047.out \
+0048.out 0049.out 0050.out 0051.out 0052.out 0053.out 0054.out \
+0055.out 0056.out 0057.out 0058.out 0059.out 0060.out 0061.out \
+0062.out 0063.out 0064.out 0065.out 0066.out 0067.out 0068.out \
+0069.out 0070.out 0071.out 0072.out 0073.out 0074.out 0075.out \
+0076.out 0077.out 0078.out 0079.out 0080.out 0081.out 0082.out \
+0083.out 0084.out 0085.out 0087.out 0088.out 0089.out 0090.out \
+0091.out 0093.out 0099.out 0104.out 0106.out 0107.out 0108.out \
+0109.out 0110.out 0111.out 0112.out 0113.out 0114.out 0115.out \
+0117.out 0118.out 0119.out 0120.out 0121.out 0122.out 0126.out \
+0131.out 0134.out 0140.out 0147.out 0172.out 0173.out 0174.out \
+0181.out 0197.out 0201.out 0202.out 0203.out 0207.out 0209.out \
+0210.out 0211.out 0212.out 0215.out 0258.out 0262.out 0291.out \
+0294.out 0304.out
+
+ALL_TEST_FILES = \
+ $(TEST_FILES) \
+ $(TEST_OUT_FILES)
+
+
+# Expected test failures:
+# 0202.xml - @xml:base support in SVG
+# 0203.xml - @xml:base in non-root in SVG
+# 0304.xml - embedded rdf/xml in SVG
+# (Add a space to the start of this string)
+EXPECTED_FAILURES = " 0202.xml 0203.xml"
+EXTRA_DIST = $(ALL_TEST_FILES)
+RAPPER = $(top_builddir)/utils/rapper
+RDFDIFF = $(top_builddir)/utils/rdfdiff
+@MAINTAINER_MODE_TRUE@check_rdfa_deps = $(TEST_FILES)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/rdfa/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/rdfa/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-am check-local clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+build-rdfdiff:
+ @(cd $(top_builddir)/utils ; $(MAKE) rdfdiff$(EXEEXT))
+
+@RAPTOR_PARSER_RDFA_TRUE@check-local: check-rdfa
+@RAPTOR_PARSER_RDFA_FALSE@check-local:
+
+check-rdfa: build-rdfdiff build-rapper $(check_rdfa_deps)
+ @set +e; result=0; failures=; failure_count=0; \
+ $(RECHO) "Testing RDFa 1.0"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .xml` ; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RAPPER) -f noNet -q -i rdfa10 -I $$baseuri -o ntriples $(srcdir)/$$test > $$name-res.nt 2> $$name.err; \
+ status1=$$?; \
+ if test $$status1 = 2; then \
+ status1=0; \
+ fi; \
+ $(RDFDIFF) -f ntriples -u $$baseuri -t ntriples $(srcdir)/$$name.out $$name-res.nt > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ if test $$status1 = 0 -a $$status2 = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ $(RECHO) "Triple counts: expected: `wc -l < $(srcdir)/$$name.out` got: `wc -l < $$name-res.nt` "; \
+ $(RECHO) $(RAPPER) -f noNet -q -i rdfa10 -I $$baseuri -o ntriples $(srcdir)/$$test '>' $$name-res.nt; \
+ $(RECHO) $(RDFDIFF) -f ntriples -u $$baseuri -t ntriples $(srcdir)/$$name.out $$name-res.nt '>' $$name.res; \
+ cat $$name.err $$name.res; \
+ failures="$$failures $$test"; \
+ failure_count=`expr $$failure_count + 1`; \
+ fi; \
+ rm -f $$name-res.nt $$name.res $$name.err; \
+ done; \
+ if test "X$$failures" != X; then \
+ echo "$$failure_count tests FAILED: $$failures"; \
+ if test "$$failures" = $(EXPECTED_FAILURES); then \
+ echo "Ignoring expected failures"; \
+ result=0; \
+ fi; \
+ fi; \
+ set -e; exit $$result
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/rdfa11/0001.out b/tests/rdfa11/0001.out
new file mode 100644
index 0000000..05e2309
--- /dev/null
+++ b/tests/rdfa11/0001.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa11/0001.xml b/tests/rdfa11/0001.xml
new file mode 100644
index 0000000..cffb7a4
--- /dev/null
+++ b/tests/rdfa11/0001.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<head>
+ <title>Test 0001</title>
+</head>
+<body>
+ <p>This photo was taken by <span class="author" about="photo1.jpg" property="dc:creator">Mark Birbeck</span>.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0006.out b/tests/rdfa11/0006.out
new file mode 100644
index 0000000..ceb222c
--- /dev/null
+++ b/tests/rdfa11/0006.out
@@ -0,0 +1,2 @@
+<http://www.blogger.com/profile/1109404> <http://xmlns.com/foaf/0.1/img> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/creator> <http://www.blogger.com/profile/1109404> .
diff --git a/tests/rdfa11/0006.xml b/tests/rdfa11/0006.xml
new file mode 100644
index 0000000..44b48a3
--- /dev/null
+++ b/tests/rdfa11/0006.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0006</title>
+ </head>
+ <body>
+ <p>
+ This photo was taken by
+ <a about="photo1.jpg" rel="dc:creator" rev="foaf:img"
+ href="http://www.blogger.com/profile/1109404">Mark Birbeck</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0007.out b/tests/rdfa11/0007.out
new file mode 100644
index 0000000..721bb2f
--- /dev/null
+++ b/tests/rdfa11/0007.out
@@ -0,0 +1,3 @@
+<http://www.blogger.com/profile/1109404> <http://xmlns.com/foaf/0.1/img> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/title> "Portrait of Mark" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/creator> <http://www.blogger.com/profile/1109404> .
diff --git a/tests/rdfa11/0007.xml b/tests/rdfa11/0007.xml
new file mode 100644
index 0000000..fd7a1aa
--- /dev/null
+++ b/tests/rdfa11/0007.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0007</title>
+ </head>
+ <body>
+ <p>This photo was taken by
+ <a about="photo1.jpg" property="dc:title"
+ content="Portrait of Mark" rel="dc:creator"
+ rev="foaf:img" href="http://www.blogger.com/profile/1109404">Mark Birbeck</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0008.out b/tests/rdfa11/0008.out
new file mode 100644
index 0000000..79512e5
--- /dev/null
+++ b/tests/rdfa11/0008.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0008.xml> <http://creativecommons.org/ns#license> <http://creativecommons.org/licenses/by-nc-nd/2.5/> .
diff --git a/tests/rdfa11/0008.xml b/tests/rdfa11/0008.xml
new file mode 100644
index 0000000..955ba1d
--- /dev/null
+++ b/tests/rdfa11/0008.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cc="http://creativecommons.org/ns#">
+ <head>
+ <title>Test 0008</title>
+ </head>
+ <body>
+ <p>This document is licensed under a
+ <a about="" rel="cc:license"
+ href="http://creativecommons.org/licenses/by-nc-nd/2.5/">
+ Creative Commons
+ </a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0009.out b/tests/rdfa11/0009.out
new file mode 100644
index 0000000..595fa69
--- /dev/null
+++ b/tests/rdfa11/0009.out
@@ -0,0 +1 @@
+<http://example.org/people#Person2> <http://xmlns.com/foaf/0.1/knows> <http://example.org/people#Person1> .
diff --git a/tests/rdfa11/0009.xml b/tests/rdfa11/0009.xml
new file mode 100644
index 0000000..89a33ac
--- /dev/null
+++ b/tests/rdfa11/0009.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0009</title>
+ <link about="http://example.org/people#Person1"
+ rev="foaf:knows" href="http://example.org/people#Person2" />
+
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0010.out b/tests/rdfa11/0010.out
new file mode 100644
index 0000000..f194d4b
--- /dev/null
+++ b/tests/rdfa11/0010.out
@@ -0,0 +1,2 @@
+<http://example.org/people#Person1> <http://xmlns.com/foaf/0.1/knows> <http://example.org/people#Person2> .
+<http://example.org/people#Person2> <http://xmlns.com/foaf/0.1/knows> <http://example.org/people#Person1> .
diff --git a/tests/rdfa11/0010.xml b/tests/rdfa11/0010.xml
new file mode 100644
index 0000000..c693827
--- /dev/null
+++ b/tests/rdfa11/0010.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0010</title>
+ <link about="http://example.org/people#Person1"
+ rel="foaf:knows" rev="foaf:knows" href="http://example.org/people#Person2" />
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0012.out b/tests/rdfa11/0012.out
new file mode 100644
index 0000000..28e5e42
--- /dev/null
+++ b/tests/rdfa11/0012.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/property> "chat"@fr .
diff --git a/tests/rdfa11/0012.xml b/tests/rdfa11/0012.xml
new file mode 100644
index 0000000..2f727b5
--- /dev/null
+++ b/tests/rdfa11/0012.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/">
+ <head about="">
+ <title>Test 0012</title>
+ <meta about="http://example.org/node" property="ex:property" xml:lang="fr" content="chat" />
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0013.out b/tests/rdfa11/0013.out
new file mode 100644
index 0000000..28e5e42
--- /dev/null
+++ b/tests/rdfa11/0013.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/property> "chat"@fr .
diff --git a/tests/rdfa11/0013.xml b/tests/rdfa11/0013.xml
new file mode 100644
index 0000000..e3a201c
--- /dev/null
+++ b/tests/rdfa11/0013.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/">
+ <head about="" xml:lang="fr">
+ <title xml:lang="en">Test 0013</title>
+ <meta about="http://example.org/node" property="ex:property" content="chat" />
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0014.out b/tests/rdfa11/0014.out
new file mode 100644
index 0000000..4f7b7f3
--- /dev/null
+++ b/tests/rdfa11/0014.out
@@ -0,0 +1 @@
+<http://example.org/foo> <http://example.org/bar> "10"^^<http://www.w3.org/2001/XMLSchema#integer> .
diff --git a/tests/rdfa11/0014.xml b/tests/rdfa11/0014.xml
new file mode 100644
index 0000000..56b0134
--- /dev/null
+++ b/tests/rdfa11/0014.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
+ <head>
+ <title>Test 0014</title>
+ </head>
+ <body>
+ <p>
+ <span about="http://example.org/foo"
+ property="ex:bar" content="10" datatype="xsd:integer">ten</span>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0015.out b/tests/rdfa11/0015.out
new file mode 100644
index 0000000..c055122
--- /dev/null
+++ b/tests/rdfa11/0015.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0015.xml> <http://purl.org/dc/elements/1.1/creator> "Fyodor Dostoevsky" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0015.xml> <http://purl.org/dc/elements/1.1/source> <urn:isbn:0140449132> .
diff --git a/tests/rdfa11/0015.xml b/tests/rdfa11/0015.xml
new file mode 100644
index 0000000..5991810
--- /dev/null
+++ b/tests/rdfa11/0015.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0015</title>
+ <link rel="dc:source" href="urn:isbn:0140449132" />
+ <meta property="dc:creator" content="Fyodor Dostoevsky" />
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0017.out b/tests/rdfa11/0017.out
new file mode 100644
index 0000000..eeaa6fb
--- /dev/null
+++ b/tests/rdfa11/0017.out
@@ -0,0 +1,3 @@
+_:x <http://xmlns.com/foaf/0.1/name> "Manu Sporny" .
+_:x <http://xmlns.com/foaf/0.1/knows> _:y .
+_:y <http://xmlns.com/foaf/0.1/name> "Ralph Swick" .
diff --git a/tests/rdfa11/0017.xml b/tests/rdfa11/0017.xml
new file mode 100644
index 0000000..36328d6
--- /dev/null
+++ b/tests/rdfa11/0017.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0017</title>
+ </head>
+ <body>
+ <p>
+ <span about="[_:a]" property="foaf:name">Manu Sporny</span>
+ <span about="[_:a]" rel="foaf:knows"
+resource="[_:b]">knows</span>
+ <span about="[_:b]" property="foaf:name">Ralph Swick</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0018.out b/tests/rdfa11/0018.out
new file mode 100644
index 0000000..0cb9e31
--- /dev/null
+++ b/tests/rdfa11/0018.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/creator> <http://www.blogger.com/profile/1109404> .
diff --git a/tests/rdfa11/0018.xml b/tests/rdfa11/0018.xml
new file mode 100644
index 0000000..014b92f
--- /dev/null
+++ b/tests/rdfa11/0018.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0018</title>
+ </head>
+ <body>
+ <p>
+ This photo was taken by
+ <a about="photo1.jpg" rel="dc:creator"
+ href="http://www.blogger.com/profile/1109404">Mark Birbeck</a>.
+ </p>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0019.out b/tests/rdfa11/0019.out
new file mode 100644
index 0000000..de2bb18
--- /dev/null
+++ b/tests/rdfa11/0019.out
@@ -0,0 +1 @@
+<mailto:manu.sporny@digitalbazaar.com> <http://xmlns.com/foaf/0.1/knows> <mailto:michael.hausenblas@joanneum.at> .
diff --git a/tests/rdfa11/0019.xml b/tests/rdfa11/0019.xml
new file mode 100644
index 0000000..d7782f6
--- /dev/null
+++ b/tests/rdfa11/0019.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0019</title>
+ </head>
+ <body>
+ <div about="mailto:manu.sporny@digitalbazaar.com"
+ rel="foaf:knows" href="mailto:michael.hausenblas@joanneum.at"></div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0020.out b/tests/rdfa11/0020.out
new file mode 100644
index 0000000..05e2309
--- /dev/null
+++ b/tests/rdfa11/0020.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa11/0020.xml b/tests/rdfa11/0020.xml
new file mode 100644
index 0000000..509e20b
--- /dev/null
+++ b/tests/rdfa11/0020.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0020</title>
+ </head>
+ <body>
+ <div about="photo1.jpg">
+ <span class="attribution-line">this photo was taken by
+ <span property="dc:creator">Mark Birbeck</span>
+ </span>
+ </div>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0021.out b/tests/rdfa11/0021.out
new file mode 100644
index 0000000..bc8b5bc
--- /dev/null
+++ b/tests/rdfa11/0021.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0021.xml> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa11/0021.xml b/tests/rdfa11/0021.xml
new file mode 100644
index 0000000..1728de4
--- /dev/null
+++ b/tests/rdfa11/0021.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<head>
+ <title>Test 0021</title>
+</head>
+<body>
+ <div>
+ <span class="attribution-line">this photo was taken by
+ <span property="dc:creator">Mark Birbeck</span>
+ </span>
+ </div>
+</body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0023.out b/tests/rdfa11/0023.out
new file mode 100644
index 0000000..6f1b48f
--- /dev/null
+++ b/tests/rdfa11/0023.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0023.xml> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa11/0023.xml b/tests/rdfa11/0023.xml
new file mode 100644
index 0000000..8a153c7
--- /dev/null
+++ b/tests/rdfa11/0023.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0023</title>
+ </head>
+ <body>
+ <div id="photo1">
+ This photo was taken by
+ <span property="dc:creator">Mark Birbeck</span>
+ </div>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0025.out b/tests/rdfa11/0025.out
new file mode 100644
index 0000000..ac8bf24
--- /dev/null
+++ b/tests/rdfa11/0025.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0025.xml> <http://purl.org/dc/elements/1.1/creator> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0025.xml#me> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0025.xml#me> <http://xmlns.com/foaf/0.1/name> "Ben Adida" .
diff --git a/tests/rdfa11/0025.xml b/tests/rdfa11/0025.xml
new file mode 100644
index 0000000..00270df
--- /dev/null
+++ b/tests/rdfa11/0025.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0025</title>
+ </head>
+ <body>
+ <p>
+ This paper was written by
+ <span rel="dc:creator" resource="#me">
+ <span property="foaf:name">Ben Adida</span>.
+ </span>
+ </p>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0026.out b/tests/rdfa11/0026.out
new file mode 100644
index 0000000..e867cfd
--- /dev/null
+++ b/tests/rdfa11/0026.out
@@ -0,0 +1 @@
+<http://internet-apps.blogspot.com/> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa11/0026.xml b/tests/rdfa11/0026.xml
new file mode 100644
index 0000000..73a37a1
--- /dev/null
+++ b/tests/rdfa11/0026.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0026</title>
+ </head>
+ <body>
+ <p>
+ <span about="http://internet-apps.blogspot.com/"
+ property="dc:creator" content="Mark Birbeck" />
+ </p>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0027.out b/tests/rdfa11/0027.out
new file mode 100644
index 0000000..e867cfd
--- /dev/null
+++ b/tests/rdfa11/0027.out
@@ -0,0 +1 @@
+<http://internet-apps.blogspot.com/> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa11/0027.xml b/tests/rdfa11/0027.xml
new file mode 100644
index 0000000..56c237a
--- /dev/null
+++ b/tests/rdfa11/0027.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0027</title>
+ </head>
+ <body>
+ <p>
+ <span about="http://internet-apps.blogspot.com/"
+ property="dc:creator" content="Mark Birbeck">Mark B.
+ </span>
+ </p>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0029.out b/tests/rdfa11/0029.out
new file mode 100644
index 0000000..00221fd
--- /dev/null
+++ b/tests/rdfa11/0029.out
@@ -0,0 +1 @@
+<http://example.org/foo> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck"^^<http://www.w3.org/2001/XMLSchema#string> .
diff --git a/tests/rdfa11/0029.xml b/tests/rdfa11/0029.xml
new file mode 100644
index 0000000..1a46b29
--- /dev/null
+++ b/tests/rdfa11/0029.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
+ <head>
+ <title>Test 0029</title>
+ </head>
+ <body>
+ <p>
+ <span about="http://example.org/foo"
+ property="dc:creator" datatype="xsd:string"><b>M</b>ark <b>B</b>irbeck</span>.
+ </p>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0030.out b/tests/rdfa11/0030.out
new file mode 100644
index 0000000..2a294b1
--- /dev/null
+++ b/tests/rdfa11/0030.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0030.xml> <http://creativecommons.org/ns#license> <http://creativecommons.org/licenses/by-nc-nd/2.5/> .
diff --git a/tests/rdfa11/0030.xml b/tests/rdfa11/0030.xml
new file mode 100644
index 0000000..a901b35
--- /dev/null
+++ b/tests/rdfa11/0030.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cc="http://creativecommons.org/ns#">
+ <head>
+ <title>Test 0030</title>
+ </head>
+ <body>
+ <p>This document is licensed under a
+ <a rel="cc:license"
+ href="http://creativecommons.org/licenses/by-nc-nd/2.5/">
+ Creative Commons License
+ </a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0031.out b/tests/rdfa11/0031.out
new file mode 100644
index 0000000..7d653ab
--- /dev/null
+++ b/tests/rdfa11/0031.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0031.xml#wtw> <http://purl.org/dc/elements/1.1/identifier> <urn:ISBN:0752820907> .
diff --git a/tests/rdfa11/0031.xml b/tests/rdfa11/0031.xml
new file mode 100644
index 0000000..102d506
--- /dev/null
+++ b/tests/rdfa11/0031.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0031</title>
+ </head>
+ <body>
+ <p about="#wtw">
+ The book <b>Weaving the Web</b> (hardcover) has the ISBN
+ <span rel="dc:identifier" resource="urn:ISBN:0752820907">0752820907</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0032.out b/tests/rdfa11/0032.out
new file mode 100644
index 0000000..80fb928
--- /dev/null
+++ b/tests/rdfa11/0032.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0032.xml#wtw> <http://purl.org/dc/elements/1.1/identifier> <urn:ISBN:0752820907> .
diff --git a/tests/rdfa11/0032.xml b/tests/rdfa11/0032.xml
new file mode 100644
index 0000000..b1155f4
--- /dev/null
+++ b/tests/rdfa11/0032.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0032</title>
+ </head>
+ <body>
+ <p about="#wtw">
+ The book <b>Weaving the Web</b> (hardcover) has the ISBN
+ <a rel="dc:identifier" resource="urn:ISBN:0752820907"
+ href="http://www.amazon.com/Weaving-Web-Tim-Berners-Lee/dp/0752820907">0752820907</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0033.out b/tests/rdfa11/0033.out
new file mode 100644
index 0000000..567b20c
--- /dev/null
+++ b/tests/rdfa11/0033.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0033.xml> <http://purl.org/dc/elements/1.1/creator> _:a .
+_:a <http://xmlns.com/foaf/0.1/name> "Ben Adida" .
diff --git a/tests/rdfa11/0033.xml b/tests/rdfa11/0033.xml
new file mode 100644
index 0000000..6ee7917
--- /dev/null
+++ b/tests/rdfa11/0033.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0033</title>
+ </head>
+ <body>
+ <p>
+ This paper was written by
+ <span rel="dc:creator">
+ <span property="foaf:name">Ben Adida</span>.
+ </span>
+ </p>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0034.out b/tests/rdfa11/0034.out
new file mode 100644
index 0000000..ec5eb38
--- /dev/null
+++ b/tests/rdfa11/0034.out
@@ -0,0 +1 @@
+<http://sw-app.org/mic.xhtml#i> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/img/mic_2007_01.jpg> .
diff --git a/tests/rdfa11/0034.xml b/tests/rdfa11/0034.xml
new file mode 100644
index 0000000..c54a11e
--- /dev/null
+++ b/tests/rdfa11/0034.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0034</title>
+ </head>
+ <body>
+ <div about="http://sw-app.org/mic.xhtml#i" rel="foaf:img">
+ <img src="http://sw-app.org/img/mic_2007_01.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0035.out b/tests/rdfa11/0035.out
new file mode 100644
index 0000000..47d806c
--- /dev/null
+++ b/tests/rdfa11/0035.out
@@ -0,0 +1 @@
+<http://sw-app.org/mic.xhtml#i> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/img/mic_2006_03.jpg> .
diff --git a/tests/rdfa11/0035.xml b/tests/rdfa11/0035.xml
new file mode 100644
index 0000000..4772d63
--- /dev/null
+++ b/tests/rdfa11/0035.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0035</title>
+ </head>
+ <body>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ href="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0036.out b/tests/rdfa11/0036.out
new file mode 100644
index 0000000..47d806c
--- /dev/null
+++ b/tests/rdfa11/0036.out
@@ -0,0 +1 @@
+<http://sw-app.org/mic.xhtml#i> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/img/mic_2006_03.jpg> .
diff --git a/tests/rdfa11/0036.xml b/tests/rdfa11/0036.xml
new file mode 100644
index 0000000..fc7f000
--- /dev/null
+++ b/tests/rdfa11/0036.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0036</title>
+ </head>
+ <body>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ resource="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0037.out b/tests/rdfa11/0037.out
new file mode 100644
index 0000000..942e7c7
--- /dev/null
+++ b/tests/rdfa11/0037.out
@@ -0,0 +1 @@
+<http://sw-app.org/mic.xhtml#i> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/mic.xhtml#photo> .
diff --git a/tests/rdfa11/0037.xml b/tests/rdfa11/0037.xml
new file mode 100644
index 0000000..7304ed7
--- /dev/null
+++ b/tests/rdfa11/0037.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0037</title>
+ </head>
+ <body>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ href="http://sw-app.org/img/mic_2006_03.jpg"
+ resource="http://sw-app.org/mic.xhtml#photo"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0038.out b/tests/rdfa11/0038.out
new file mode 100644
index 0000000..4285a7c
--- /dev/null
+++ b/tests/rdfa11/0038.out
@@ -0,0 +1 @@
+<http://sw-app.org/img/mic_2007_01.jpg> <http://xmlns.com/foaf/0.1/depicts> <http://sw-app.org/mic.xhtml#i> .
diff --git a/tests/rdfa11/0038.xml b/tests/rdfa11/0038.xml
new file mode 100644
index 0000000..697f6ac
--- /dev/null
+++ b/tests/rdfa11/0038.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0038</title>
+ </head>
+ <body>
+ <div about="http://sw-app.org/mic.xhtml#i" rev="foaf:depicts">
+ <img src="http://sw-app.org/img/mic_2007_01.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0039.out b/tests/rdfa11/0039.out
new file mode 100644
index 0000000..51f9b05
--- /dev/null
+++ b/tests/rdfa11/0039.out
@@ -0,0 +1 @@
+<http://sw-app.org/img/mic_2006_03.jpg> <http://xmlns.com/foaf/0.1/depicts> <http://sw-app.org/mic.xhtml#i> .
diff --git a/tests/rdfa11/0039.xml b/tests/rdfa11/0039.xml
new file mode 100644
index 0000000..02835f0
--- /dev/null
+++ b/tests/rdfa11/0039.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0039</title>
+ </head>
+ <body>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rev="foaf:depicts"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ href="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0041.out b/tests/rdfa11/0041.out
new file mode 100644
index 0000000..7679b31
--- /dev/null
+++ b/tests/rdfa11/0041.out
@@ -0,0 +1 @@
+<http://sw-app.org/mic.xhtml#photo> <http://xmlns.com/foaf/0.1/depicts> <http://sw-app.org/mic.xhtml#i> .
diff --git a/tests/rdfa11/0041.xml b/tests/rdfa11/0041.xml
new file mode 100644
index 0000000..08ffb9c
--- /dev/null
+++ b/tests/rdfa11/0041.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0041</title>
+ </head>
+ <body>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rev="foaf:depicts"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ href="http://sw-app.org/img/mic_2006_03.jpg"
+ resource="http://sw-app.org/mic.xhtml#photo"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0048.out b/tests/rdfa11/0048.out
new file mode 100644
index 0000000..4f260fc
--- /dev/null
+++ b/tests/rdfa11/0048.out
@@ -0,0 +1,3 @@
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/knows> _:a .
+_:a <http://xmlns.com/foaf/0.1/name> "John Doe" .
diff --git a/tests/rdfa11/0048.xml b/tests/rdfa11/0048.xml
new file mode 100644
index 0000000..7cc80b6
--- /dev/null
+++ b/tests/rdfa11/0048.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0048</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#me" rel="foaf:knows" typeof="foaf:Person">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0049.out b/tests/rdfa11/0049.out
new file mode 100644
index 0000000..8a369ce
--- /dev/null
+++ b/tests/rdfa11/0049.out
@@ -0,0 +1,2 @@
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/name> "John Doe" .
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
diff --git a/tests/rdfa11/0049.xml b/tests/rdfa11/0049.xml
new file mode 100644
index 0000000..5f3fbe3
--- /dev/null
+++ b/tests/rdfa11/0049.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0049</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#me" typeof="foaf:Person">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0050.out b/tests/rdfa11/0050.out
new file mode 100644
index 0000000..0dcfd58
--- /dev/null
+++ b/tests/rdfa11/0050.out
@@ -0,0 +1,2 @@
+_:a <http://xmlns.com/foaf/0.1/name> "John Doe" .
+_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
diff --git a/tests/rdfa11/0050.xml b/tests/rdfa11/0050.xml
new file mode 100644
index 0000000..d330c49
--- /dev/null
+++ b/tests/rdfa11/0050.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0050</title>
+ </head>
+ <body>
+ <div typeof="foaf:Person">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0051.out b/tests/rdfa11/0051.out
new file mode 100644
index 0000000..67fb26e
--- /dev/null
+++ b/tests/rdfa11/0051.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0051.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0051.xml> <http://xmlns.com/foaf/0.1/topic> "John Doe" .
diff --git a/tests/rdfa11/0051.xml b/tests/rdfa11/0051.xml
new file mode 100644
index 0000000..ad7c2ae
--- /dev/null
+++ b/tests/rdfa11/0051.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0051</title>
+ </head>
+ <body>
+ <p about="" typeof="foaf:Document" property="foaf:topic">John Doe</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0052.out b/tests/rdfa11/0052.out
new file mode 100644
index 0000000..a8b78a7
--- /dev/null
+++ b/tests/rdfa11/0052.out
@@ -0,0 +1 @@
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
diff --git a/tests/rdfa11/0052.xml b/tests/rdfa11/0052.xml
new file mode 100644
index 0000000..1c51412
--- /dev/null
+++ b/tests/rdfa11/0052.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0052</title>
+ </head>
+ <body>
+ <p typeof="foaf:Person" resource="http://www.example.org/#me">
+ John Doe
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0053.out b/tests/rdfa11/0053.out
new file mode 100644
index 0000000..ff12bfd
--- /dev/null
+++ b/tests/rdfa11/0053.out
@@ -0,0 +1,2 @@
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/name> "John Doe" .
diff --git a/tests/rdfa11/0053.xml b/tests/rdfa11/0053.xml
new file mode 100644
index 0000000..dbffdd4
--- /dev/null
+++ b/tests/rdfa11/0053.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0053</title>
+ </head>
+ <body>
+ <p typeof="foaf:Person" resource="http://www.example.org/#me">
+ <span property="foaf:name">John Doe</span>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0054.out b/tests/rdfa11/0054.out
new file mode 100644
index 0000000..92f24b0
--- /dev/null
+++ b/tests/rdfa11/0054.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0054.xml> <http://purl.org/dc/elements/1.1/creator> "Fabien Gandon" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0054.xml> <http://purl.org/dc/elements/1.1/publisher> "Fabien Gandon" .
diff --git a/tests/rdfa11/0054.xml b/tests/rdfa11/0054.xml
new file mode 100644
index 0000000..470462a
--- /dev/null
+++ b/tests/rdfa11/0054.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0054</title>
+ </head>
+ <body>
+ <p>
+ This document was authored and published by
+ <span about="" property="dc:creator dc:publisher">Fabien Gandon</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0055.out b/tests/rdfa11/0055.out
new file mode 100644
index 0000000..5250259
--- /dev/null
+++ b/tests/rdfa11/0055.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0055.xml> <http://purl.org/dc/elements/1.1/creator> <http://www-sop.inria.fr/acacia/fabien/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0055.xml> <http://purl.org/dc/elements/1.1/publisher> <http://www-sop.inria.fr/acacia/fabien/> .
diff --git a/tests/rdfa11/0055.xml b/tests/rdfa11/0055.xml
new file mode 100644
index 0000000..7e8cef6
--- /dev/null
+++ b/tests/rdfa11/0055.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0055</title>
+ </head>
+ <body>
+ <p>
+ This document was authored and published by
+ <a about="" rel="dc:creator dc:publisher" href="http://www-sop.inria.fr/acacia/fabien/">Fabien Gandon</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0056.out b/tests/rdfa11/0056.out
new file mode 100644
index 0000000..219c49d
--- /dev/null
+++ b/tests/rdfa11/0056.out
@@ -0,0 +1,3 @@
+<http://www.example.org/#ben> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#mark> .
+<http://www.example.org/#mark> <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
diff --git a/tests/rdfa11/0056.xml b/tests/rdfa11/0056.xml
new file mode 100644
index 0000000..8e79cab
--- /dev/null
+++ b/tests/rdfa11/0056.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0056</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#ben" typeof="foaf:Person" rel="foaf:knows">
+ <p about="http://www.example.org/#mark" property="foaf:name">Mark Birbeck</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0057.out b/tests/rdfa11/0057.out
new file mode 100644
index 0000000..6711b2d
--- /dev/null
+++ b/tests/rdfa11/0057.out
@@ -0,0 +1,4 @@
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#mark> .
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#ivan> .
+<http://www.example.org/#mark> <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
+<http://www.example.org/#ivan> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
diff --git a/tests/rdfa11/0057.xml b/tests/rdfa11/0057.xml
new file mode 100644
index 0000000..03e6236
--- /dev/null
+++ b/tests/rdfa11/0057.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0057</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#ben" rel="foaf:knows">
+ <p about="http://www.example.org/#mark" property="foaf:name">Mark Birbeck</p>
+ <p about="http://www.example.org/#ivan" property="foaf:name">Ivan Herman</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0059.out b/tests/rdfa11/0059.out
new file mode 100644
index 0000000..1e75747
--- /dev/null
+++ b/tests/rdfa11/0059.out
@@ -0,0 +1,6 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0059.xml> <http://purl.org/dc/elements/1.1/creator> <http://www.example.org/#manu> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0059.xml> <http://purl.org/dc/elements/1.1/publisher> <http://www.example.org/#manu> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0059.xml> <http://purl.org/dc/elements/1.1/creator> <http://www.example.org/#fabien> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0059.xml> <http://purl.org/dc/elements/1.1/publisher> <http://www.example.org/#fabien> .
+<http://www.example.org/#manu> <http://xmlns.com/foaf/0.1/name> "Manu Sporny" .
+<http://www.example.org/#fabien> <http://xmlns.com/foaf/0.1/name> "Fabien Gandon" .
diff --git a/tests/rdfa11/0059.xml b/tests/rdfa11/0059.xml
new file mode 100644
index 0000000..3c4aee6
--- /dev/null
+++ b/tests/rdfa11/0059.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0059</title>
+ </head>
+ <body>
+ <p>This document was authored and published by:</p>
+ <ul rel="dc:creator dc:publisher">
+ <li about="http://www.example.org/#manu" property="foaf:name">Manu Sporny</li>
+ <li about="http://www.example.org/#fabien" property="foaf:name">Fabien Gandon</li>
+ </ul>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0060.out b/tests/rdfa11/0060.out
new file mode 100644
index 0000000..5ec9d10
--- /dev/null
+++ b/tests/rdfa11/0060.out
@@ -0,0 +1,2 @@
+<http://www.example.org/#matsumoto-kimiko> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#matsumoto-kimiko> <http://xmlns.com/foaf/0.1/name> "\u677E\u672C \u540E\u5B50" .
diff --git a/tests/rdfa11/0060.xml b/tests/rdfa11/0060.xml
new file mode 100644
index 0000000..427b3b2
--- /dev/null
+++ b/tests/rdfa11/0060.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0060</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#matsumoto-kimiko"
+ typeof="foaf:Person">
+ <p property="foaf:name">æ¾æœ¬ åŽå­</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0061.out b/tests/rdfa11/0061.out
new file mode 100644
index 0000000..8562bb2
--- /dev/null
+++ b/tests/rdfa11/0061.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0061.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0062.xml> .
diff --git a/tests/rdfa11/0061.xml b/tests/rdfa11/0061.xml
new file mode 100644
index 0000000..380eb35
--- /dev/null
+++ b/tests/rdfa11/0061.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is an XHTML1 test only -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1">
+ <head>
+ <title>Test 0061</title>
+ <link rel="next" href="http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0062.xml" />
+ </head>
+ <body>
+ <p>This is the first chapter in a series of chapters.</p>
+ </body>
+</html>
diff --git a/tests/rdfa11/0062.out b/tests/rdfa11/0062.out
new file mode 100644
index 0000000..f4a6365
--- /dev/null
+++ b/tests/rdfa11/0062.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0063.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0062.xml> .
diff --git a/tests/rdfa11/0062.xml b/tests/rdfa11/0062.xml
new file mode 100644
index 0000000..d29dd31
--- /dev/null
+++ b/tests/rdfa11/0062.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is an XHTML1 test only -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1">
+ <head>
+ <title>Test 0062</title>
+ <link rev="prev" href="http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0063.xml" />
+ </head>
+ <body>
+ <p>This is unit test #62. The next unit test is #63.</p>
+ </body>
+</html>
diff --git a/tests/rdfa11/0063.out b/tests/rdfa11/0063.out
new file mode 100644
index 0000000..3239933
--- /dev/null
+++ b/tests/rdfa11/0063.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0063.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0064.xml> .
diff --git a/tests/rdfa11/0063.xml b/tests/rdfa11/0063.xml
new file mode 100644
index 0000000..aab4ade
--- /dev/null
+++ b/tests/rdfa11/0063.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0063</title>
+ <link rel=":next" href="http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0064.xml" />
+ </head>
+ <body>
+ <p>This is the 63<sup>rd</sup> test. The next test is #64.</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0064.out b/tests/rdfa11/0064.out
new file mode 100644
index 0000000..dbee7e5
--- /dev/null
+++ b/tests/rdfa11/0064.out
@@ -0,0 +1 @@
+_:a <http://xmlns.com/foaf/0.1/knows> <http://digitalbazaar.com/people/manu> .
diff --git a/tests/rdfa11/0064.xml b/tests/rdfa11/0064.xml
new file mode 100644
index 0000000..d7955f0
--- /dev/null
+++ b/tests/rdfa11/0064.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0064</title>
+ </head>
+ <body>
+ <p about="[_:michael]">Michael knows
+ <a rel="foaf:knows" href="http://digitalbazaar.com/people/manu">Manu</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0065.out b/tests/rdfa11/0065.out
new file mode 100644
index 0000000..b1ae56e
--- /dev/null
+++ b/tests/rdfa11/0065.out
@@ -0,0 +1,3 @@
+_:a <http://xmlns.com/foaf/0.1/mbox> <mailto:manu.sporny@digitalbazaar.com> .
+_:b <http://xmlns.com/foaf/0.1/mbox> <mailto:michael.hausenblas@joanneum.at> .
+_:a <http://xmlns.com/foaf/0.1/knows> _:b .
diff --git a/tests/rdfa11/0065.xml b/tests/rdfa11/0065.xml
new file mode 100644
index 0000000..a21a778
--- /dev/null
+++ b/tests/rdfa11/0065.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0065</title>
+ </head>
+ <body>
+ <div about="[_:manu]">
+ Manu Sporny can be reached via
+ <a rel="foaf:mbox" href="mailto:manu.sporny@digitalbazaar.com">email</a>.
+ <span rel="foaf:knows" resource="[_:michael]">He knows Michael.</span>
+ </div>
+
+ <div about="[_:michael]">
+ Michael can be reached via
+ <a rel="foaf:mbox" href="mailto:michael.hausenblas@joanneum.at">email</a>.
+ </div>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0066.out b/tests/rdfa11/0066.out
new file mode 100644
index 0000000..3ba0a4a
--- /dev/null
+++ b/tests/rdfa11/0066.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0066.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
diff --git a/tests/rdfa11/0066.xml b/tests/rdfa11/0066.xml
new file mode 100644
index 0000000..0b59195
--- /dev/null
+++ b/tests/rdfa11/0066.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head typeof="foaf:Document">
+ <title>Test 0066</title>
+ </head>
+ <body>
+ <p>This is test #66.</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0067.out b/tests/rdfa11/0067.out
new file mode 100644
index 0000000..bedebdf
--- /dev/null
+++ b/tests/rdfa11/0067.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0067.xml> <http://xmlns.com/foaf/0.1/topic> "Test 0067" .
diff --git a/tests/rdfa11/0067.xml b/tests/rdfa11/0067.xml
new file mode 100644
index 0000000..a3c9e69
--- /dev/null
+++ b/tests/rdfa11/0067.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title property="foaf:topic">Test 0067</title>
+ </head>
+ <body>
+ <p>This is test #67.</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0068.out b/tests/rdfa11/0068.out
new file mode 100644
index 0000000..ade3acc
--- /dev/null
+++ b/tests/rdfa11/0068.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0067.xml> <http://purl.org/dc/elements/1.1/title> "Test 0067" .
diff --git a/tests/rdfa11/0068.xml b/tests/rdfa11/0068.xml
new file mode 100644
index 0000000..a4219c0
--- /dev/null
+++ b/tests/rdfa11/0068.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0068</title>
+ </head>
+ <body>
+ <p about="0067.xml">
+ The previous test was
+ <span property="dc:title">Test 0067</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0069.out b/tests/rdfa11/0069.out
new file mode 100644
index 0000000..5e2cd80
--- /dev/null
+++ b/tests/rdfa11/0069.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0069.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0070.xml> .
diff --git a/tests/rdfa11/0069.xml b/tests/rdfa11/0069.xml
new file mode 100644
index 0000000..098c593
--- /dev/null
+++ b/tests/rdfa11/0069.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#">
+ <head>
+ <title>Test 0069</title>
+ </head>
+ <body>
+ <p>The next test will be
+ <a about="" rel="xhv:next" href="0070.xml">Test 0070</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0070.out b/tests/rdfa11/0070.out
new file mode 100644
index 0000000..3981691
--- /dev/null
+++ b/tests/rdfa11/0070.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0070.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0069.xml> .
diff --git a/tests/rdfa11/0070.xml b/tests/rdfa11/0070.xml
new file mode 100644
index 0000000..1a8c28c
--- /dev/null
+++ b/tests/rdfa11/0070.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#">
+ <head>
+ <title>Test 0070</title>
+ </head>
+ <body>
+ <p>The previous test was
+ <span about="" rel="xhv:prev" resource="0069.xml">Test 0069</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0071.out b/tests/rdfa11/0071.out
new file mode 100644
index 0000000..9a4d463
--- /dev/null
+++ b/tests/rdfa11/0071.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0071.xml> <http://creativecommons.org/ns#license> <http://creativecommons.org/licenses/by-nd/3.0/> .
diff --git a/tests/rdfa11/0071.xml b/tests/rdfa11/0071.xml
new file mode 100644
index 0000000..4749bba
--- /dev/null
+++ b/tests/rdfa11/0071.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cc="http://creativecommons.org/ns#">
+ <head>
+ <title>Test 0071</title>
+ </head>
+ <body>
+ <p>This page is under a Creative Commons
+ <a rel="cc:license"
+ href="http://creativecommons.org/licenses/by-nd/3.0/">
+ Attribution-No Derivatives 3.0 license</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0072.out b/tests/rdfa11/0072.out
new file mode 100644
index 0000000..3756af9
--- /dev/null
+++ b/tests/rdfa11/0072.out
@@ -0,0 +1 @@
+<http://www.example.org/faq> <http://purl.org/dc/elements/1.1/title> "Example FAQ" .
diff --git a/tests/rdfa11/0072.xml b/tests/rdfa11/0072.xml
new file mode 100644
index 0000000..35accf5
--- /dev/null
+++ b/tests/rdfa11/0072.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <base href="http://www.example.org/"></base>
+ <title>Test 0072</title>
+ </head>
+ <body>
+ <p about="faq">
+ Learn more by reading the example.org
+ <span property="dc:title">Example FAQ</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0073.out b/tests/rdfa11/0073.out
new file mode 100644
index 0000000..1ee3798
--- /dev/null
+++ b/tests/rdfa11/0073.out
@@ -0,0 +1 @@
+<http://www.example.org/> <http://purl.org/dc/elements/1.1/creator> <http://www.example.org/jane> .
diff --git a/tests/rdfa11/0073.xml b/tests/rdfa11/0073.xml
new file mode 100644
index 0000000..cac4c31
--- /dev/null
+++ b/tests/rdfa11/0073.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <base href="http://www.example.org/"></base>
+ <title>Test 0073</title>
+ </head>
+ <body>
+ <p>
+ This article was written by
+ <span rel="dc:creator" resource="jane">Jane</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0074.out b/tests/rdfa11/0074.out
new file mode 100644
index 0000000..1ee3798
--- /dev/null
+++ b/tests/rdfa11/0074.out
@@ -0,0 +1 @@
+<http://www.example.org/> <http://purl.org/dc/elements/1.1/creator> <http://www.example.org/jane> .
diff --git a/tests/rdfa11/0074.xml b/tests/rdfa11/0074.xml
new file mode 100644
index 0000000..00335e5
--- /dev/null
+++ b/tests/rdfa11/0074.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <base href="http://www.example.org/"></base>
+ <title>Test 0074</title>
+ </head>
+ <body>
+ <p>
+ This article was written by
+ <a rel="dc:creator" href="jane">Jane</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0075.out b/tests/rdfa11/0075.out
new file mode 100644
index 0000000..037c1f3
--- /dev/null
+++ b/tests/rdfa11/0075.out
@@ -0,0 +1 @@
+<http://www.example.org/> <http://www.w3.org/1999/xhtml/vocab#license> <http://creativecommons.org/licenses/by-nd/3.0/> .
diff --git a/tests/rdfa11/0075.xml b/tests/rdfa11/0075.xml
new file mode 100644
index 0000000..413ae48
--- /dev/null
+++ b/tests/rdfa11/0075.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <base href="http://www.example.org/"></base>
+ <title>Test 0075</title>
+ </head>
+ <body>
+ <p>
+ This page is under a Creative Commons
+ <a rel="license" href="http://creativecommons.org/licenses/by-nd/3.0/">Attribution-No Derivatives 3.0 license</a>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0076.out b/tests/rdfa11/0076.out
new file mode 100644
index 0000000..67617de
--- /dev/null
+++ b/tests/rdfa11/0076.out
@@ -0,0 +1,23 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#alternate> <http://example.org/alternate> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#appendix> <http://example.org/appendix> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#bookmark> <http://example.org/bookmark> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#cite> <http://example.org/cite> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#chapter> <http://example.org/chapter> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#contents> <http://example.org/contents> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#copyright> <http://example.org/copyright> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#glossary> <http://example.org/glossary> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#help> <http://example.org/help> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#icon> <http://example.org/icon> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#index> <http://example.org/index> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#meta> <http://example.org/meta> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/next> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#p3pv1> <http://example.org/p3pv1> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/prev> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#role> <http://example.org/role> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#section> <http://example.org/section> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#subsection> <http://example.org/subsection> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#start> <http://example.org/start> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/license> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#up> <http://example.org/up> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#last> <http://example.org/last> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0076.xml> <http://www.w3.org/1999/xhtml/vocab#stylesheet> <http://example.org/stylesheet> .
diff --git a/tests/rdfa11/0076.xml b/tests/rdfa11/0076.xml
new file mode 100644
index 0000000..978602e
--- /dev/null
+++ b/tests/rdfa11/0076.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is an XHTML1 test only -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1">
+ <head>
+ <title>Test 0076</title>
+ </head>
+ <body>
+ <p>
+ <a rel="alternate" href="http://example.org/alternate">alternate</a>
+ <a rel="appendix" href="http://example.org/appendix">appendix</a>
+ <a rel="bookmark" href="http://example.org/bookmark">bookmark</a>
+ <a rel="cite" href="http://example.org/cite">cite</a>
+ <a rel="chapter" href="http://example.org/chapter">chapter</a>
+ <a rel="contents" href="http://example.org/contents">contents</a>
+ <a rel="copyright" href="http://example.org/copyright">copyright</a>
+ <a rel="glossary" href="http://example.org/glossary">glossary</a>
+ <a rel="help" href="http://example.org/help">help</a>
+ <a rel="icon" href="http://example.org/icon">icon</a>
+ <a rel="index" href="http://example.org/index">index</a>
+ <a rel="last" href="http://example.org/last">last</a>
+ <a rel="license" href="http://example.org/license">license</a>
+ <a rel="meta" href="http://example.org/meta">meta</a>
+ <a rel="next" href="http://example.org/next">next</a>
+ <a rel="p3pv1" href="http://example.org/p3pv1">p3pv1</a>
+ <a rel="prev" href="http://example.org/prev">prev</a>
+ <a rel="role" href="http://example.org/role">role</a>
+ <a rel="section" href="http://example.org/section">section</a>
+ <a rel="subsection" href="http://example.org/subsection">subsection</a>
+ <a rel="start" href="http://example.org/start">start</a>
+ <a rel="stylesheet" href="http://example.org/stylesheet">stylesheet</a>
+ <a rel="up" href="http://example.org/up">up</a>
+ </p>
+ </body>
+</html>
diff --git a/tests/rdfa11/0077.out b/tests/rdfa11/0077.out
new file mode 100644
index 0000000..78547d1
--- /dev/null
+++ b/tests/rdfa11/0077.out
@@ -0,0 +1,24 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#alternate> <http://example.org/alternate> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#appendix> <http://example.org/appendix> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#bookmark> <http://example.org/bookmark> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#cite> <http://example.org/cite> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#chapter> <http://example.org/chapter> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#contents> <http://example.org/contents> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#copyright> <http://example.org/copyright> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#glossary> <http://example.org/glossary> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#help> <http://example.org/help> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#icon> <http://example.org/icon> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#index> <http://example.org/index> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#meta> <http://example.org/meta> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/next> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#p3pv1> <http://example.org/p3pv1> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/prev> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#role> <http://example.org/role> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#section> <http://example.org/section> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#subsection> <http://example.org/subsection> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#start> <http://example.org/start> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/license> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#up> <http://example.org/up> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#first> <http://example.org/first> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#last> <http://example.org/last> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#stylesheet> <http://example.org/stylesheet> .
diff --git a/tests/rdfa11/0077.xml b/tests/rdfa11/0077.xml
new file mode 100644
index 0000000..f1e0c0d
--- /dev/null
+++ b/tests/rdfa11/0077.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is an XHTML1 test only -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1">
+ <head>
+ <title>Test 0077</title>
+ </head>
+ <body>
+ <p>
+ <span about="http://example.org/alternate" rev="alternate"
+ href="0077.xml">alternate</span>
+ <span about="http://example.org/appendix" rev="appendix"
+ href="0077.xml">appendix</span>
+ <span about="http://example.org/bookmark" rev="bookmark"
+ href="0077.xml">bookmark</span>
+ <span about="http://example.org/cite" rev="cite"
+ href="0077.xml">cite</span>
+ <span about="http://example.org/chapter" rev="chapter"
+ href="0077.xml">chapter</span>
+ <span about="http://example.org/contents" rev="contents"
+ href="0077.xml">contents</span>
+ <span about="http://example.org/copyright" rev="copyright"
+ href="0077.xml">copyright</span>
+ <span about="http://example.org/glossary" rev="glossary"
+ href="0077.xml">glossary</span>
+ <span about="http://example.org/help" rev="help"
+ href="0077.xml">help</span>
+ <span about="http://example.org/icon" rev="icon"
+ href="0077.xml">icon</span>
+ <span about="http://example.org/index" rev="index"
+ href="0077.xml">index</span>
+ <span about="http://example.org/first" rev="first"
+ href="0077.xml">first</span>
+ <span about="http://example.org/last" rev="last"
+ href="0077.xml">last</span>
+ <span about="http://example.org/license" rev="license"
+ href="0077.xml">license</span>
+ <span about="http://example.org/meta" rev="meta"
+ href="0077.xml">meta</span>
+ <span about="http://example.org/next" rev="next"
+ href="0077.xml">next</span>
+ <span about="http://example.org/p3pv1" rev="p3pv1"
+ href="0077.xml">p3pv1</span>
+ <span about="http://example.org/prev" rev="prev"
+ href="0077.xml">prev</span>
+ <span about="http://example.org/role" rev="role"
+ href="0077.xml">role</span>
+ <span about="http://example.org/section" rev="section"
+ href="0077.xml">section</span>
+ <span about="http://example.org/subsection" rev="subsection"
+ href="0077.xml">subsection</span>
+ <span about="http://example.org/start" rev="start"
+ href="0077.xml">start</span>
+ <span about="http://example.org/stylesheet" rev="stylesheet"
+ href="0077.xml">stylesheet</span>
+ <span about="http://example.org/up" rev="up"
+ href="0077.xml">up</span>
+ </p>
+ </body>
+</html>
diff --git a/tests/rdfa11/0079.out b/tests/rdfa11/0079.out
new file mode 100644
index 0000000..b600268
--- /dev/null
+++ b/tests/rdfa11/0079.out
@@ -0,0 +1,3 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://www.ivan-herman.org/Ivan_Herman> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://www.w3.org/People/Berners-Lee/card#i> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
diff --git a/tests/rdfa11/0079.xml b/tests/rdfa11/0079.xml
new file mode 100644
index 0000000..d5d9a54
--- /dev/null
+++ b/tests/rdfa11/0079.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0079</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <p resource="http://www.ivan-herman.org/Ivan_Herman">Ivan Herman</p>
+ <p href="http://www.w3.org/People/Berners-Lee/card#i">Tim Berners Lee</p>
+ <p resource="http://danbri.org/foaf.rdf#danbri" href="http://www.leobard.net/rdf/foaf.xml#me">Dan Brickley</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0080.out b/tests/rdfa11/0080.out
new file mode 100644
index 0000000..66e5baa
--- /dev/null
+++ b/tests/rdfa11/0080.out
@@ -0,0 +1 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
diff --git a/tests/rdfa11/0080.xml b/tests/rdfa11/0080.xml
new file mode 100644
index 0000000..973e618
--- /dev/null
+++ b/tests/rdfa11/0080.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0080</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <p about="http://danbri.org/foaf.rdf#danbri" resource="http://www.leobard.net/rdf/foaf.xml#me">Dan Brickley</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0083.out b/tests/rdfa11/0083.out
new file mode 100644
index 0000000..854ae53
--- /dev/null
+++ b/tests/rdfa11/0083.out
@@ -0,0 +1,6 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:a .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
+_:a <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+_:a <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+<http://danbri.org/foaf.rdf#danbri> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://danbri.org/foaf.rdf#danbri> <http://xmlns.com/foaf/0.1/name> "Dan Brickley" .
diff --git a/tests/rdfa11/0083.xml b/tests/rdfa11/0083.xml
new file mode 100644
index 0000000..4ced120
--- /dev/null
+++ b/tests/rdfa11/0083.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0083</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#somebody" rel="foaf:knows">
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p about="http://danbri.org/foaf.rdf#danbri" typeof="foaf:Person" property="foaf:name">Dan Brickley</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0084.out b/tests/rdfa11/0084.out
new file mode 100644
index 0000000..df51d3d
--- /dev/null
+++ b/tests/rdfa11/0084.out
@@ -0,0 +1,8 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:a .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
+_:a <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:a <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+_:a <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://danbri.org/foaf.rdf#danbri> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://danbri.org/foaf.rdf#danbri> <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+<http://danbri.org/foaf.rdf#danbri> <http://xmlns.com/foaf/0.1/name> "Dan Brickley" .
diff --git a/tests/rdfa11/0084.xml b/tests/rdfa11/0084.xml
new file mode 100644
index 0000000..4189fa9
--- /dev/null
+++ b/tests/rdfa11/0084.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0084</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rev="foaf:knows" rel="foaf:knows">
+ <div>
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p about="http://danbri.org/foaf.rdf#danbri" typeof="foaf:Person" property="foaf:name">Dan Brickley</p>
+
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0085.out b/tests/rdfa11/0085.out
new file mode 100644
index 0000000..6432ea0
--- /dev/null
+++ b/tests/rdfa11/0085.out
@@ -0,0 +1,4 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:a .
+_:a <http://xmlns.com/foaf/0.1/knows> <http://www.ivan-herman.org/Ivan_Herman> .
+_:a <http://xmlns.com/foaf/0.1/knows> <http://www.w3.org/People/Berners-Lee/card#i> .
+_:a <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
diff --git a/tests/rdfa11/0085.xml b/tests/rdfa11/0085.xml
new file mode 100644
index 0000000..5cb51ab
--- /dev/null
+++ b/tests/rdfa11/0085.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0085</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <div rel="foaf:knows">
+ <p resource="http://www.ivan-herman.org/Ivan_Herman">Ivan Herman</p>
+ <p href="http://www.w3.org/People/Berners-Lee/card#i">Tim Berners Lee</p>
+ <p resource="http://danbri.org/foaf.rdf#danbri" href="http://www.leobard.net/rdf/foaf.xml#me">Dan Brickley</p>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0087.out b/tests/rdfa11/0087.out
new file mode 100644
index 0000000..3b4a443
--- /dev/null
+++ b/tests/rdfa11/0087.out
@@ -0,0 +1,24 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#alternate> <http://example.org/alternate> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#appendix> <http://example.org/appendix> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#bookmark> <http://example.org/bookmark> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#cite> <http://example.org/cite> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#chapter> <http://example.org/chapter> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#contents> <http://example.org/contents> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#copyright> <http://example.org/copyright> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#glossary> <http://example.org/glossary> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#help> <http://example.org/help> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#icon> <http://example.org/icon> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#index> <http://example.org/index> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#meta> <http://example.org/meta> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/next> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#p3pv1> <http://example.org/p3pv1> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/prev> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#role> <http://example.org/role> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#section> <http://example.org/section> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#subsection> <http://example.org/subsection> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#start> <http://example.org/start> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/license> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#up> <http://example.org/up> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#first> <http://example.org/first> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#last> <http://example.org/last> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0087.xml> <http://www.w3.org/1999/xhtml/vocab#stylesheet> <http://example.org/stylesheet> .
diff --git a/tests/rdfa11/0087.xml b/tests/rdfa11/0087.xml
new file mode 100644
index 0000000..ad589ba
--- /dev/null
+++ b/tests/rdfa11/0087.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0087</title>
+ </head>
+ <body>
+ <p>
+ <a rel=":alternate" href="http://example.org/alternate">alternate</a>
+ <a rel=":appendix" href="http://example.org/appendix">appendix</a>
+ <a rel=":bookmark" href="http://example.org/bookmark">bookmark</a>
+ <a rel=":cite" href="http://example.org/cite">cite</a>
+ <a rel=":chapter" href="http://example.org/chapter">chapter</a>
+ <a rel=":contents" href="http://example.org/contents">contents</a>
+ <a rel=":copyright" href="http://example.org/copyright">copyright</a>
+ <a rel=":glossary" href="http://example.org/glossary">glossary</a>
+ <a rel=":help" href="http://example.org/help">help</a>
+ <a rel=":icon" href="http://example.org/icon">icon</a>
+ <a rel=":index" href="http://example.org/index">index</a>
+ <a rel=":first" href="http://example.org/first">first</a>
+ <a rel=":last" href="http://example.org/last">last</a>
+ <a rel=":license" href="http://example.org/license">license</a>
+ <a rel=":meta" href="http://example.org/meta">meta</a>
+ <a rel=":next" href="http://example.org/next">next</a>
+ <a rel=":p3pv1" href="http://example.org/p3pv1">p3pv1</a>
+ <a rel=":prev" href="http://example.org/prev">prev</a>
+ <a rel=":role" href="http://example.org/role">role</a>
+ <a rel=":section" href="http://example.org/section">section</a>
+ <a rel=":subsection" href="http://example.org/subsection">subsection</a>
+ <a rel=":start" href="http://example.org/start">start</a>
+ <a rel=":stylesheet" href="http://example.org/stylesheet">stylesheet</a>
+ <a rel=":up" href="http://example.org/up">up</a>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0088.out b/tests/rdfa11/0088.out
new file mode 100644
index 0000000..d37e9dd
--- /dev/null
+++ b/tests/rdfa11/0088.out
@@ -0,0 +1,3 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:a .
+_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:a <http://xmlns.com/foaf/0.1/name> "Dan Brickley" .
diff --git a/tests/rdfa11/0088.xml b/tests/rdfa11/0088.xml
new file mode 100644
index 0000000..870c2fc
--- /dev/null
+++ b/tests/rdfa11/0088.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0088</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <p about="[_:]" property="foaf:name">Dan Brickley</p>
+ <p about="[_:]" typeof="foaf:Person">Dan Brickley again:-)</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0089.out b/tests/rdfa11/0089.out
new file mode 100644
index 0000000..3630849
--- /dev/null
+++ b/tests/rdfa11/0089.out
@@ -0,0 +1 @@
+<http://example.org/example.png> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Image> .
diff --git a/tests/rdfa11/0089.xml b/tests/rdfa11/0089.xml
new file mode 100644
index 0000000..7283f2d
--- /dev/null
+++ b/tests/rdfa11/0089.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head profile="http://www.w3.org/1999/xhtml/vocab">
+ <title>Test 0089</title>
+ </head>
+ <body>
+ <div>
+ <img src="http://example.org/example.png" typeof="foaf:Image" alt="example image" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0091.out b/tests/rdfa11/0091.out
new file mode 100644
index 0000000..f57f53e
--- /dev/null
+++ b/tests/rdfa11/0091.out
@@ -0,0 +1,3 @@
+_:a <http://www.w3.org/1999/xhtml/vocab#definition> "a bi-pedal primate" .
+_:a <http://www.w3.org/1999/xhtml/vocab#note> "confused animal" .
+_:a <http://www.w3.org/1999/xhtml/vocab#foo> "Milky Way" .
diff --git a/tests/rdfa11/0091.xml b/tests/rdfa11/0091.xml
new file mode 100644
index 0000000..79f208b
--- /dev/null
+++ b/tests/rdfa11/0091.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head profile="http://www.w3.org/1999/xhtml/vocab">
+ <title>Test 0091</title>
+ </head>
+ <body>
+ <p about="[_:human]">
+ A human is
+ <span property=":definition">a bi-pedal primate</span>.
+ They are quite possibly one of the most
+ <span property=":note">confused animal</span>s residing in the
+ <span property=":foo">Milky Way</span>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0093.out b/tests/rdfa11/0093.out
new file mode 100644
index 0000000..6c96dd4
--- /dev/null
+++ b/tests/rdfa11/0093.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0093.xml> <http://purl.org/dc/elements/1.1/creator> "Albert Einstein" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0093.xml> <http://purl.org/dc/elements/1.1/title> "E = mc2: The Most Urgent Problem of Our Time"^^<http://www.example.org/XMLLiteral> .
diff --git a/tests/rdfa11/0093.xml b/tests/rdfa11/0093.xml
new file mode 100644
index 0000000..e076480
--- /dev/null
+++ b/tests/rdfa11/0093.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:ex="http://www.example.org/">
+ <head profile="http://www.w3.org/1999/xhtml/vocab">
+ <title>Test 0093</title>
+ </head>
+ <body>
+ <div about="">
+ Author: <span property="dc:creator">Albert Einstein</span>
+ <h2 property="dc:title" datatype="ex:XMLLiteral">E = mc<sup>2</sup>: The Most Urgent Problem of Our Time</h2>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0099.out b/tests/rdfa11/0099.out
new file mode 100644
index 0000000..a1389b0
--- /dev/null
+++ b/tests/rdfa11/0099.out
@@ -0,0 +1 @@
+<http://www.cwi.nl/~steven/> <http://www.example.org/likes> "\n We put thirty spokes together and call it a wheel;\n But it is on the space where there is nothing that the usefulness of the wheel depends.\n We turn clay to make a vessel;\n But it is on the space where there is nothing that the usefulness of the vessel depends.\n We pierce doors and windows to make a house;\n And it is on these spaces where there is nothing that the usefulness of the house depends.\n Therefore just as we take advantage of what is, we should recognize the usefulness of what is not.\n\n Lao Tzu: Tao Te Ching" .
diff --git a/tests/rdfa11/0099.xml b/tests/rdfa11/0099.xml
new file mode 100644
index 0000000..822ce68
--- /dev/null
+++ b/tests/rdfa11/0099.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:example="http://www.example.org/">
+ <head profile="http://www.w3.org/1999/xhtml/vocab">
+ <title>Test 0099</title>
+ </head>
+ <body>
+ <p about="http://www.cwi.nl/~steven/" property="example:likes">
+ We put thirty spokes together and call it a wheel;
+ But it is on the space where there is nothing that the usefulness of the wheel depends.
+ We turn clay to make a vessel;
+ But it is on the space where there is nothing that the usefulness of the vessel depends.
+ We pierce doors and windows to make a house;
+ And it is on these spaces where there is nothing that the usefulness of the house depends.
+ Therefore just as we take advantage of what is, we should recognize the usefulness of what is not.
+
+ Lao Tzu: Tao Te Ching</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0104.out b/tests/rdfa11/0104.out
new file mode 100644
index 0000000..50073cd
--- /dev/null
+++ b/tests/rdfa11/0104.out
@@ -0,0 +1,3 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0104.xml#interfenestration> <http://www.example.org/size> _:a .
+_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "17" .
+_:a <http://www.example.org/unit> "character" .
diff --git a/tests/rdfa11/0104.xml b/tests/rdfa11/0104.xml
new file mode 100644
index 0000000..2d990fa
--- /dev/null
+++ b/tests/rdfa11/0104.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+xmlns:example="http://www.example.org/">
+ <head profile="http://www.w3.org/1999/xhtml/vocab">
+ <title>Test 0104</title>
+ </head>
+ <body>
+ <p>
+ The word "interfenestration" has
+ <span about="#interfenestration" rel="example:size">
+ <span property="rdf:value">17</span>
+ <span property="example:unit">character</span>s.
+ </span>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0106.out b/tests/rdfa11/0106.out
new file mode 100644
index 0000000..3db1836
--- /dev/null
+++ b/tests/rdfa11/0106.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0106.xml> <http://purl.org/dc/elements/1.1/creator> _:a .
diff --git a/tests/rdfa11/0106.xml b/tests/rdfa11/0106.xml
new file mode 100644
index 0000000..c7138c9
--- /dev/null
+++ b/tests/rdfa11/0106.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0106</title>
+ </head>
+ <body>
+ <div about="" rel="dc:creator">
+ <a rel="" href="manu.html">Manu</a> created this page.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0107.out b/tests/rdfa11/0107.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfa11/0107.out
diff --git a/tests/rdfa11/0107.xml b/tests/rdfa11/0107.xml
new file mode 100644
index 0000000..2217ce7
--- /dev/null
+++ b/tests/rdfa11/0107.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/">
+ <head>
+ <title>Test 0107</title>
+ </head>
+ <body>
+ <div rel="next"></div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0108.out b/tests/rdfa11/0108.out
new file mode 100644
index 0000000..1a5c32d
--- /dev/null
+++ b/tests/rdfa11/0108.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/property> "\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03CC\n\u03AC\u03C3\u03C0\u03C1\u03BF \u03B4\u03B9\u03AC\u03C3\u03C4\u03B7\u03BC\u03B1\n"@el .
diff --git a/tests/rdfa11/0108.xml b/tests/rdfa11/0108.xml
new file mode 100644
index 0000000..eaf2cb9
--- /dev/null
+++ b/tests/rdfa11/0108.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/">
+ <head>
+ <title>Test 0108</title>
+ </head>
+ <body>
+ <p about="http://example.org/node" property="ex:property"
+ datatype="" xml:lang="el">ελληνικό
+άσπÏο διάστημα
+</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0109.out b/tests/rdfa11/0109.out
new file mode 100644
index 0000000..2cdc0f0
--- /dev/null
+++ b/tests/rdfa11/0109.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0109.xml> <http://purl.org/dc/elements/1.1/title> "Test 0109" .
diff --git a/tests/rdfa11/0109.xml b/tests/rdfa11/0109.xml
new file mode 100644
index 0000000..68a2e67
--- /dev/null
+++ b/tests/rdfa11/0109.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xml:base="http://example.org/invalid/">
+ <head>
+ <title>Test 0109</title>
+ </head>
+ <body>
+ <!-- This a NOT a valid XHTML document (due to @xml:base) -->
+ <div xml:base="http://example.org/invalid/">
+ <p about="">This is <span property="dc:title">Test 0109</span>.</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0110.out b/tests/rdfa11/0110.out
new file mode 100644
index 0000000..dbe0b56
--- /dev/null
+++ b/tests/rdfa11/0110.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0110.xml> <http://www.w3.org/1999/xhtml/vocab#next> _:a .
diff --git a/tests/rdfa11/0110.xml b/tests/rdfa11/0110.xml
new file mode 100644
index 0000000..586b875
--- /dev/null
+++ b/tests/rdfa11/0110.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#">
+ <head>
+ <title>Test 0110</title>
+ </head>
+ <body>
+ <div rel="xhv:next">
+ <div rel="xhv:next" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0111.out b/tests/rdfa11/0111.out
new file mode 100644
index 0000000..f788f8e
--- /dev/null
+++ b/tests/rdfa11/0111.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0111.xml> <http://www.w3.org/1999/xhtml/vocab#next> _:a .
+_:a <http://www.w3.org/1999/xhtml/vocab#next> _:b .
diff --git a/tests/rdfa11/0111.xml b/tests/rdfa11/0111.xml
new file mode 100644
index 0000000..50bd9c2
--- /dev/null
+++ b/tests/rdfa11/0111.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#">
+ <head>
+ <title>Test 0111</title>
+ </head>
+ <body>
+ <div rel="xhv:next">
+ <div rel="xhv:next">
+ <div rel="xhv:next" />
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0112.out b/tests/rdfa11/0112.out
new file mode 100644
index 0000000..0359dad
--- /dev/null
+++ b/tests/rdfa11/0112.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/property> "not an XML Literal,\nwhitespace preserved\n" .
diff --git a/tests/rdfa11/0112.xml b/tests/rdfa11/0112.xml
new file mode 100644
index 0000000..f17a428
--- /dev/null
+++ b/tests/rdfa11/0112.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/">
+ <head>
+ <title>Test 0112</title>
+ </head>
+ <body>
+ <p>
+ <span about="http://example.org/node" property="ex:property"
+ datatype="">not an XML Literal,
+whitespace preserved
+</span>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0113.out b/tests/rdfa11/0113.out
new file mode 100644
index 0000000..5363635
--- /dev/null
+++ b/tests/rdfa11/0113.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0113.xml#a> <http://purl.org/dc/elements/1.1/title> "" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0113.xml#b> <http://purl.org/dc/elements/1.1/title> "" .
diff --git a/tests/rdfa11/0113.xml b/tests/rdfa11/0113.xml
new file mode 100644
index 0000000..4dbe2fe
--- /dev/null
+++ b/tests/rdfa11/0113.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0113</title>
+ </head>
+ <body>
+ <span about="#a" property="dc:title"></span>
+ <span about="#b" property="dc:title" />
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0114.out b/tests/rdfa11/0114.out
new file mode 100644
index 0000000..ce68623
--- /dev/null
+++ b/tests/rdfa11/0114.out
@@ -0,0 +1,8 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://www.w3.org/1999/xhtml/vocab#index> <http://rdfa.info/test-suite/#> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0115.xml> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://www.w3.org/1999/xhtml/vocab#up> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://creativecommons.org/ns#attributionURL> <http://rdfa.info/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase1> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase3> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/...> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase4> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml?foo=bar../baz> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0114.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase5> <http://rdfa.info/test-suite/test-cases/.../.htaccess> .
diff --git a/tests/rdfa11/0114.xml b/tests/rdfa11/0114.xml
new file mode 100644
index 0000000..76caa12
--- /dev/null
+++ b/tests/rdfa11/0114.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cc="http://creativecommons.org/ns#"
+xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#"
+xmlns:rdfatest="http://rdfa.info/vocabs/rdfa-test#">
+ <head>
+ <title>Test 0114</title>
+ </head>
+ <body>
+ <div>
+ <a rel="xhv:index" href="../../.././#">Test Suite</a>
+ <a rel="xhv:next" href="0115.xml">Test Case 0115</a>
+ <a rel="xhv:up" href="./">Test Case 0114</a>
+ <a rel="cc:attributionURL" href="../../../../">RDFa Website</a>
+ <a rel="rdfatest:cornerCase1" href=".">Corner Case #1</a>
+ <a rel="rdfatest:cornerCase3" href="...">Corner Case #3</a>
+ <a rel="rdfatest:cornerCase4" href="?foo=bar../baz">Corner Case #4</a>
+ <a rel="rdfatest:cornerCase5" href="../..../../../.../.htaccess">Corner Case #5</a>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0115.out b/tests/rdfa11/0115.out
new file mode 100644
index 0000000..7fd325b
--- /dev/null
+++ b/tests/rdfa11/0115.out
@@ -0,0 +1,4 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0115.xml> <http://www.example.com/entity1> ">" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0115.xml> <http://www.example.com/entity2> "Ben & Co." .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0115.xml> <http://www.example.com/entity3> "@" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0115.xml> <http://www.example.com/entity4> "@" .
diff --git a/tests/rdfa11/0115.xml b/tests/rdfa11/0115.xml
new file mode 100644
index 0000000..81e0288
--- /dev/null
+++ b/tests/rdfa11/0115.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://www.example.com/">
+ <head>
+ <title>Test 0115</title>
+ </head>
+ <body>
+ <p>Description: XML entities in the RDFa content</p>
+ <p>
+ <span property="ex:entity1">&gt;</span>
+ <span property="ex:entity2">Ben &amp; Co.</span>
+ <span property="ex:entity3">&#x40;</span>
+ <span property="ex:entity4">&#64;</span>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0117.out b/tests/rdfa11/0117.out
new file mode 100644
index 0000000..024ca4f
--- /dev/null
+++ b/tests/rdfa11/0117.out
@@ -0,0 +1,2 @@
+<http://www.example.org/tc117.xhtml> <http://purl.org/dc/elements/1.1/title> "Test 0117" .
+<http://www.example.org/tc117.xhtml> <http://purl.org/dc/elements/1.1/contributor> "Mark Birbeck" .
diff --git a/tests/rdfa11/0117.xml b/tests/rdfa11/0117.xml
new file mode 100644
index 0000000..4ee4b32
--- /dev/null
+++ b/tests/rdfa11/0117.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <base href="http://www.example.org/tc117.xhtml#fragment"></base>
+ <title property="dc:title">Test 0117</title>
+ </head>
+ <body>
+ <p>
+ <span property="dc:contributor">Mark Birbeck</span>
+ added this triple test.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0118.out b/tests/rdfa11/0118.out
new file mode 100644
index 0000000..9bad5c3
--- /dev/null
+++ b/tests/rdfa11/0118.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0118.xml> <http://purl.org/dc/elements/1.1/creator> "Ben" .
diff --git a/tests/rdfa11/0118.xml b/tests/rdfa11/0118.xml
new file mode 100644
index 0000000..38631af
--- /dev/null
+++ b/tests/rdfa11/0118.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0118</title>
+ </head>
+ <body>
+ <p>
+ Check to see if parsers get confused when "" is
+ interpreted as NULL in some chaining cases.
+ <a href="http://example.org/ben.html"><span
+ about="" property="dc:creator">Ben</span></a>
+ </p>
+ </body>
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0119.out b/tests/rdfa11/0119.out
new file mode 100644
index 0000000..72b1b09
--- /dev/null
+++ b/tests/rdfa11/0119.out
@@ -0,0 +1 @@
+<http://example.org/> <http://purl.org/dc/elements/1.1/title> "Example Website" .
diff --git a/tests/rdfa11/0119.xml b/tests/rdfa11/0119.xml
new file mode 100644
index 0000000..3f872d6
--- /dev/null
+++ b/tests/rdfa11/0119.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:example="http://example.org/">
+ <head>
+ <title>Test 0119</title>
+ </head>
+ <body>
+ <div>
+ <p about="[example:]">
+ The
+ <span property="dc:title">Example Website</span>
+ is used in many W3C tutorials.
+ </p>
+ </div>
+ </body>
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0120.out b/tests/rdfa11/0120.out
new file mode 100644
index 0000000..01a237d
--- /dev/null
+++ b/tests/rdfa11/0120.out
@@ -0,0 +1 @@
+<http://www.w3.org/1999/xhtml/vocab#> <http://purl.org/dc/elements/1.1/title> "The XHTML Vocabulary Document" .
diff --git a/tests/rdfa11/0120.xml b/tests/rdfa11/0120.xml
new file mode 100644
index 0000000..8735eb1
--- /dev/null
+++ b/tests/rdfa11/0120.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"
+xmlns:example="http://example.org/">
+ <head>
+ <title>Test 0120</title>
+ </head>
+ <body>
+ <p about="[:]">
+ The
+ <span property="dc:title">The XHTML Vocabulary Document</span>
+ is the default prefix for XHTML+RDFa 1.0.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0121.out b/tests/rdfa11/0121.out
new file mode 100644
index 0000000..515f701
--- /dev/null
+++ b/tests/rdfa11/0121.out
@@ -0,0 +1,2 @@
+<http://example.org/> <http://purl.org/dc/elements/1.1/title> "Test Case 0121" .
+<http://example.org/> <http://purl.org/dc/elements/1.1/contributor> "Shane McCarron" .
diff --git a/tests/rdfa11/0121.xml b/tests/rdfa11/0121.xml
new file mode 100644
index 0000000..b0d573a
--- /dev/null
+++ b/tests/rdfa11/0121.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0121</title>
+ </head>
+ <body>
+ <div>
+ <p about="http://example.org/">
+ <span about="[]" property="dc:title">Test Case 0121</span>
+ checks to make sure RDFa processors resolve the empty CURIE correctly.
+ <p resource="[]">
+ <span property="dc:contributor">Shane McCarron</span>
+ contributed to this test.
+ </p>
+ </p>
+ </div>
+ </body>
+
+
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0122.out b/tests/rdfa11/0122.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfa11/0122.out
diff --git a/tests/rdfa11/0122.xml b/tests/rdfa11/0122.xml
new file mode 100644
index 0000000..6cbe23b
--- /dev/null
+++ b/tests/rdfa11/0122.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0122</title>
+ </head>
+ <body>
+ <p about="http://example.org/section1.html">
+ This section is contained below <span rel="up" resource="[]">the main site</span>.
+ </p>
+ </body>
+
+
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0126.out b/tests/rdfa11/0126.out
new file mode 100644
index 0000000..9bf0b7a
--- /dev/null
+++ b/tests/rdfa11/0126.out
@@ -0,0 +1,3 @@
+<http://www.example.org/#article> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
+<http://www.example.org/#article> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://rdfs.org/sioc/ns#Post> .
+<http://www.example.org/#article> <http://purl.org/dc/terms/title> "My article" .
diff --git a/tests/rdfa11/0126.xml b/tests/rdfa11/0126.xml
new file mode 100644
index 0000000..3dbb78a
--- /dev/null
+++ b/tests/rdfa11/0126.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dct="http://purl.org/dc/terms/"
+xmlns:sioc="http://rdfs.org/sioc/ns#"
+xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0126</title>
+ </head>
+ <body>
+ <div about="http://www.example.org/#article" typeof="foaf:Document sioc:Post">
+ <h1 property="dct:title">My article</h1>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0131.out b/tests/rdfa11/0131.out
new file mode 100644
index 0000000..b3e2547
--- /dev/null
+++ b/tests/rdfa11/0131.out
@@ -0,0 +1,5 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0131.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0131.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/test.css> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0131.xml> <http://www.w3.org/1999/xhtml/vocab#first> <http://example.org/test.css> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0131.xml> <http://www.w3.org/1999/xhtml/vocab#last> <http://example.org/test.css> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0131.xml> <http://www.w3.org/1999/xhtml/vocab#subsection> <http://example.org/test.css> .
diff --git a/tests/rdfa11/0131.xml b/tests/rdfa11/0131.xml
new file mode 100644
index 0000000..f24b722
--- /dev/null
+++ b/tests/rdfa11/0131.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#">
+<head>
+ <title>Test</title>
+ <link rel="xhv:next&#x20;xhv:prev&#x09;xhv:first&#x0a;xhv:last&#x0d;xhv:subsection" href="http://example.org/test.css" />
+</head>
+<body>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0134.out b/tests/rdfa11/0134.out
new file mode 100644
index 0000000..4989b6c
--- /dev/null
+++ b/tests/rdfa11/0134.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0134.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/test.css> .
diff --git a/tests/rdfa11/0134.xml b/tests/rdfa11/0134.xml
new file mode 100644
index 0000000..d352c4b
--- /dev/null
+++ b/tests/rdfa11/0134.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test</title>
+ <link rel="LICENSE" href="http://example.org/test.css" />
+</head>
+<body>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0140.out b/tests/rdfa11/0140.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfa11/0140.out
diff --git a/tests/rdfa11/0140.xml b/tests/rdfa11/0140.xml
new file mode 100644
index 0000000..2876574
--- /dev/null
+++ b/tests/rdfa11/0140.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Blank-node as Predicate Test</title>
+</head>
+<body>
+<p>Blank Nodes are not allowed to be predicate identifiers in RDF:</p>
+<p property="_:invalid">Test</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0147.out b/tests/rdfa11/0147.out
new file mode 100644
index 0000000..8dbe80f
--- /dev/null
+++ b/tests/rdfa11/0147.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0147.xml> <http://example.org/test> "Test" .
diff --git a/tests/rdfa11/0147.xml b/tests/rdfa11/0147.xml
new file mode 100644
index 0000000..1d6b062
--- /dev/null
+++ b/tests/rdfa11/0147.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test</title>
+</head>
+<body>
+<p xmlns:xmlzzz="http://example.org/" property="xmlzzz:test">Test</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0172.out b/tests/rdfa11/0172.out
new file mode 100644
index 0000000..989f53a
--- /dev/null
+++ b/tests/rdfa11/0172.out
@@ -0,0 +1 @@
+<http://example.org/> <http://example.org/terms#prop> "A plain literal with a lang tag."@en .
diff --git a/tests/rdfa11/0172.xml b/tests/rdfa11/0172.xml
new file mode 100644
index 0000000..cae8618
--- /dev/null
+++ b/tests/rdfa11/0172.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is an XHTML1 test only -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1"
+ xmlns:ex="http://example.org/terms#">
+<head>
+ <title>Test 0172</title>
+ <base href="http://example.org/"/>
+</head>
+<body xml:lang="en">
+ <p property="ex:prop" datatype="">A <strong>plain literal</strong> with a lang tag.</p>
+</body>
+</html>
diff --git a/tests/rdfa11/0173.out b/tests/rdfa11/0173.out
new file mode 100644
index 0000000..fcecb33
--- /dev/null
+++ b/tests/rdfa11/0173.out
@@ -0,0 +1 @@
+<http://example.org/> <http://example.org/terms#prop> "Just a plain literal." .
diff --git a/tests/rdfa11/0173.xml b/tests/rdfa11/0173.xml
new file mode 100644
index 0000000..35a6a4b
--- /dev/null
+++ b/tests/rdfa11/0173.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is an XHTML1 test only -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1"
+ xmlns:ex="http://example.org/terms#">
+<head>
+ <title>Test 0173</title>
+ <base href="http://example.org/"/>
+</head>
+<body xml:lang="en">
+ <p property="ex:prop" xml:lang="">Just a plain literal.</p>
+</body>
+</html>
diff --git a/tests/rdfa11/0174.out b/tests/rdfa11/0174.out
new file mode 100644
index 0000000..5f559e7
--- /dev/null
+++ b/tests/rdfa11/0174.out
@@ -0,0 +1 @@
+<http://example.org/jd> <http://www.w3.org/2006/vcard/ns#fn> "John Doe" .
diff --git a/tests/rdfa11/0174.xml b/tests/rdfa11/0174.xml
new file mode 100644
index 0000000..240fcc5
--- /dev/null
+++ b/tests/rdfa11/0174.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="http://www.w3.org/2006/vcard/ns#">
+<head>
+ <title>Test 0174</title>
+</head>
+<body>
+ <p>
+ This test ensures that single-character prefixes are allowed.
+ My name is:
+ <span about="http://example.org/jd" property="v:fn">John Doe</span>
+ </p>
+</body>
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0175.out b/tests/rdfa11/0175.out
new file mode 100644
index 0000000..f3fe37c
--- /dev/null
+++ b/tests/rdfa11/0175.out
@@ -0,0 +1 @@
+_:a <http://xmlns.com/foaf/0.1/name> "Gregg Kellogg" .
diff --git a/tests/rdfa11/0175.xml b/tests/rdfa11/0175.xml
new file mode 100644
index 0000000..8702a1c
--- /dev/null
+++ b/tests/rdfa11/0175.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0175</title>
+ </head>
+ <body>
+ <p about="_:gregg">My name is
+ <em property="http://xmlns.com/foaf/0.1/name">Gregg Kellogg</em>.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0176.out b/tests/rdfa11/0176.out
new file mode 100644
index 0000000..5d40365
--- /dev/null
+++ b/tests/rdfa11/0176.out
@@ -0,0 +1,4 @@
+_:manu <http://xmlns.com/foaf/0.1/mbox> <mailto:manu.sporny@digitalbazaar.com> .
+_:manu <http://xmlns.com/foaf/0.1/knows> _:gregg .
+_:gregg <http://xmlns.com/foaf/0.1/knows> _:manu .
+_:gregg <http://xmlns.com/foaf/0.1/mbox> <mailto:gregg@kellogg-assoc.com> .
diff --git a/tests/rdfa11/0176.xml b/tests/rdfa11/0176.xml
new file mode 100644
index 0000000..763d107
--- /dev/null
+++ b/tests/rdfa11/0176.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0176</title>
+ </head>
+ <body>
+ <div about="_:manu">
+ Manu can be reached via
+ <a rel="http://xmlns.com/foaf/0.1/mbox" href="mailto:manu.sporny@digitalbazaar.com">email</a>.
+ <span rel="http://xmlns.com/foaf/0.1/knows" resource="_:gregg">He knows Gregg.</span>
+ <span rev="http://xmlns.com/foaf/0.1/knows" resource="_:gregg">Who knows Manu.</span>
+ </div>
+
+ <div about="_:gregg">
+ Gregg can be reached via
+ <a rel="http://xmlns.com/foaf/0.1/mbox" href="mailto:gregg@kellogg-assoc.com">email</a>.
+ </div>
+ </body>
+
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0177.out b/tests/rdfa11/0177.out
new file mode 100644
index 0000000..18dce01
--- /dev/null
+++ b/tests/rdfa11/0177.out
@@ -0,0 +1 @@
+<http://example.org/#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
diff --git a/tests/rdfa11/0177.xml b/tests/rdfa11/0177.xml
new file mode 100644
index 0000000..d575a44
--- /dev/null
+++ b/tests/rdfa11/0177.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0177</title>
+ <base href="http://example.org/"/>
+ </head>
+ <body>
+ <div about ="#me" prefix="foaf: http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">Ivan Herman</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0178.out b/tests/rdfa11/0178.out
new file mode 100644
index 0000000..476c929
--- /dev/null
+++ b/tests/rdfa11/0178.out
@@ -0,0 +1,2 @@
+<http://example.org/#this> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/Agent> .
+<http://example.org/#this> <http://xmlns.com/foaf/0.1/name> "A particular agent" .
diff --git a/tests/rdfa11/0178.xml b/tests/rdfa11/0178.xml
new file mode 100644
index 0000000..0b3a3fb
--- /dev/null
+++ b/tests/rdfa11/0178.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0178</title>
+ <base href="http://example.org/"/>
+ </head>
+ <body>
+ <div about ="#this" prefix="foaf: http://xmlns.com/foaf/0.1/ dc: http://purl.org/dc/terms/" typeof="dc:Agent">
+ <p property="foaf:name">A particular agent</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0179.out b/tests/rdfa11/0179.out
new file mode 100644
index 0000000..18dce01
--- /dev/null
+++ b/tests/rdfa11/0179.out
@@ -0,0 +1 @@
+<http://example.org/#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
diff --git a/tests/rdfa11/0179.xml b/tests/rdfa11/0179.xml
new file mode 100644
index 0000000..2e30a7c
--- /dev/null
+++ b/tests/rdfa11/0179.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0179</title>
+ <base href="http://example.org/"/>
+ </head>
+ <body>
+ <!-- prefix has a higher priority than xmlns -->
+ <div about ="#me" xmlns:foaf="http://www.example.com/wrong/foaf/uri" prefix="foaf: http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">Ivan Herman</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0180.out b/tests/rdfa11/0180.out
new file mode 100644
index 0000000..5fc9cba
--- /dev/null
+++ b/tests/rdfa11/0180.out
@@ -0,0 +1 @@
+<http://example.org/#me> <http://www.w3.org/1999/xhtml/vocab#name> "Ivan Herman" .
diff --git a/tests/rdfa11/0180.xml b/tests/rdfa11/0180.xml
new file mode 100644
index 0000000..0c05943
--- /dev/null
+++ b/tests/rdfa11/0180.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0180</title>
+ <base href="http://example.org/"/>
+ </head>
+ <body>
+ <div about ="#me" prefix=": http://xmlns.com/foaf/0.1/" >
+ <p property=":name">Ivan Herman</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0181.out b/tests/rdfa11/0181.out
new file mode 100644
index 0000000..aa88a78
--- /dev/null
+++ b/tests/rdfa11/0181.out
@@ -0,0 +1 @@
+<http://www.example.org/software> <http://www.w3.org/1999/xhtml/vocab#license> <http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231> .
diff --git a/tests/rdfa11/0181.xml b/tests/rdfa11/0181.xml
new file mode 100644
index 0000000..900fa90
--- /dev/null
+++ b/tests/rdfa11/0181.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0181</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/software">
+ <p rel=":license" resource="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">Ivan Herman</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0182.out b/tests/rdfa11/0182.out
new file mode 100644
index 0000000..476c929
--- /dev/null
+++ b/tests/rdfa11/0182.out
@@ -0,0 +1,2 @@
+<http://example.org/#this> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/Agent> .
+<http://example.org/#this> <http://xmlns.com/foaf/0.1/name> "A particular agent" .
diff --git a/tests/rdfa11/0182.xml b/tests/rdfa11/0182.xml
new file mode 100644
index 0000000..c525423
--- /dev/null
+++ b/tests/rdfa11/0182.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0182</title>
+ <base href="http://example.org/"/>
+ </head>
+ <body>
+ <div prefix="foaf: http://example.org/wrong/foaf/uri/ dc: http://purl.org/dc/terms/" >
+ <div about ="#this" typeof="dc:Agent" prefix="foaf: http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">A particular agent</p>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0183.out b/tests/rdfa11/0183.out
new file mode 100644
index 0000000..476c929
--- /dev/null
+++ b/tests/rdfa11/0183.out
@@ -0,0 +1,2 @@
+<http://example.org/#this> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/Agent> .
+<http://example.org/#this> <http://xmlns.com/foaf/0.1/name> "A particular agent" .
diff --git a/tests/rdfa11/0183.xml b/tests/rdfa11/0183.xml
new file mode 100644
index 0000000..408b29d
--- /dev/null
+++ b/tests/rdfa11/0183.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0183</title>
+ <base href="http://example.org/"/>
+</head>
+<body>
+ <div prefix="foaf: http://example.org/wrong/foaf/uri/ dc: http://purl.org/dc/terms/" >
+ <div about ="#this" typeof="dc:Agent" xmlns:foaf="http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">A particular agent</p>
+ </div>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0186.out b/tests/rdfa11/0186.out
new file mode 100644
index 0000000..3a164f2
--- /dev/null
+++ b/tests/rdfa11/0186.out
@@ -0,0 +1,2 @@
+<http://example.org/> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://xmlns.com/foaf/0.1/> .
+<http://example.org/#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
diff --git a/tests/rdfa11/0186.xml b/tests/rdfa11/0186.xml
new file mode 100644
index 0000000..ae9116d
--- /dev/null
+++ b/tests/rdfa11/0186.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0186</title>
+ <base href="http://example.org/"/>
+</head>
+<body>
+ <div about ="#me" vocab="http://xmlns.com/foaf/0.1/" >
+ <p property="name">Ivan Herman</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0187.out b/tests/rdfa11/0187.out
new file mode 100644
index 0000000..146542c
--- /dev/null
+++ b/tests/rdfa11/0187.out
@@ -0,0 +1,3 @@
+<http://example.org/> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://example.org/wrong/foaf/uri/> .
+<http://example.org/> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://xmlns.com/foaf/0.1/> .
+<http://example.org/#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
diff --git a/tests/rdfa11/0187.xml b/tests/rdfa11/0187.xml
new file mode 100644
index 0000000..da916fc
--- /dev/null
+++ b/tests/rdfa11/0187.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0187</title>
+ <base href="http://example.org/"/>
+ </head>
+ <body>
+ <div vocab="http://example.org/wrong/foaf/uri/">
+ <div about ="#me" vocab="http://xmlns.com/foaf/0.1/" >
+ <p property="name">Ivan Herman</p>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0188.out b/tests/rdfa11/0188.out
new file mode 100644
index 0000000..3a164f2
--- /dev/null
+++ b/tests/rdfa11/0188.out
@@ -0,0 +1,2 @@
+<http://example.org/> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://xmlns.com/foaf/0.1/> .
+<http://example.org/#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
diff --git a/tests/rdfa11/0188.xml b/tests/rdfa11/0188.xml
new file mode 100644
index 0000000..b3f656f
--- /dev/null
+++ b/tests/rdfa11/0188.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0188</title>
+ <base href="http://example.org/"/>
+ </head>
+ <body>
+ <div vocab="http://xmlns.com/foaf/0.1/">
+ <div about ="#me">
+ <p property="name">Ivan Herman</p>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0189.out b/tests/rdfa11/0189.out
new file mode 100644
index 0000000..a1c91b3
--- /dev/null
+++ b/tests/rdfa11/0189.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0189.xml> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://www.example.org/vocab#> .
+<http://www.example.org/software> <http://www.example.org/vocab#license> <http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231> .
diff --git a/tests/rdfa11/0189.xml b/tests/rdfa11/0189.xml
new file mode 100644
index 0000000..ea43b0c
--- /dev/null
+++ b/tests/rdfa11/0189.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0189</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/software" vocab="http://www.example.org/vocab#">
+ <p rel="license" resource="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">Ivan Herman</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0190.out b/tests/rdfa11/0190.out
new file mode 100644
index 0000000..aa88a78
--- /dev/null
+++ b/tests/rdfa11/0190.out
@@ -0,0 +1 @@
+<http://www.example.org/software> <http://www.w3.org/1999/xhtml/vocab#license> <http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231> .
diff --git a/tests/rdfa11/0190.xml b/tests/rdfa11/0190.xml
new file mode 100644
index 0000000..9f0770a
--- /dev/null
+++ b/tests/rdfa11/0190.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0190</title>
+ </head>
+ <body>
+ <div about ="http://www.example.org/software">
+ <p rel="liCeNse" resource="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">Ivan Herman</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0196.out b/tests/rdfa11/0196.out
new file mode 100644
index 0000000..3ff8d24
--- /dev/null
+++ b/tests/rdfa11/0196.out
@@ -0,0 +1,2 @@
+<http://www.example.org> <http://example.org/rdf/xmllit> "This is an XMLLiteral"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://www.example.org> <http://example.org/rdf/plainlit> "This is a plain literal" .
diff --git a/tests/rdfa11/0196.xml b/tests/rdfa11/0196.xml
new file mode 100644
index 0000000..90124e9
--- /dev/null
+++ b/tests/rdfa11/0196.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/rdf/"
+xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<head>
+ <title>Test 0196</title>
+</head>
+<body>
+ <div about="http://www.example.org">
+ <p property="ex:xmllit" datatype="rdf:XMLLiteral">This is an XMLLiteral</p>
+ <p property="ex:plainlit">This is a <em>plain</em> literal</p>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0197.out b/tests/rdfa11/0197.out
new file mode 100644
index 0000000..8ec2be0
--- /dev/null
+++ b/tests/rdfa11/0197.out
@@ -0,0 +1,4 @@
+<http://www.example.org/me> <http://www.example.org/pred/name> "Gregg Kellogg" .
+<http://www.example.org/me> <http://purl.org/dc/terms/language> "Ruby" .
+<http://www.example.org/me> <http://www.example.org/pred/rel> <http://kellogg-assoc.com/> .
+<http://github.org/gkellogg/rdf_context> <http://www.example.org/pred/rev> <http://www.example.org/me> .
diff --git a/tests/rdfa11/0197.xml b/tests/rdfa11/0197.xml
new file mode 100644
index 0000000..0d16e53
--- /dev/null
+++ b/tests/rdfa11/0197.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/terms/">
+<head>
+ <title>Test 0197</title>
+ <base href="http://www.example.org/me" />
+</head>
+<body>
+ <p about="" typeof="class/Person" property="pred/name">Gregg Kellogg</p>
+ <p property="dc:language" datatype="pred/lang">Ruby</p>
+ <p rel="pred/rel" resource="http://kellogg-assoc.com/">Kellogg Associates</p>
+ <p rev="pred/rev" resource="http://github.org/gkellogg/rdf_context">Ruby Gem</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0198.out b/tests/rdfa11/0198.out
new file mode 100644
index 0000000..51690df
--- /dev/null
+++ b/tests/rdfa11/0198.out
@@ -0,0 +1,4 @@
+<http://www.example.org/me#mark> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/me#mark> <http://xmlns.com/foaf/0.1/name> "<span property=\"foaf:firstName\" xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">Mark</span> <span property=\"foaf:surname\" xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">Birbeck</span>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://www.example.org/me#mark> <http://xmlns.com/foaf/0.1/firstName> "Mark" .
+<http://www.example.org/me#mark> <http://xmlns.com/foaf/0.1/surname> "Birbeck" .
diff --git a/tests/rdfa11/0198.xml b/tests/rdfa11/0198.xml
new file mode 100644
index 0000000..6567671
--- /dev/null
+++ b/tests/rdfa11/0198.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/"
+xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<head>
+ <title>Test 0198</title>
+ <base href="http://www.example.org/me" />
+</head>
+<body>
+ <div id="mark" about="#mark" typeof="foaf:Person">
+ <h2 property="foaf:name" datatype="rdf:XMLLiteral"><span
+property="foaf:firstName">Mark</span> <span
+property="foaf:surname">Birbeck</span></h2>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0201.out b/tests/rdfa11/0201.out
new file mode 100644
index 0000000..327cf03
--- /dev/null
+++ b/tests/rdfa11/0201.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0201.xml> <http://purl.org/dc/terms/description> "A yellow rectangle with sharp corners." .
diff --git a/tests/rdfa11/0201.xml b/tests/rdfa11/0201.xml
new file mode 100644
index 0000000..fa9f4e9
--- /dev/null
+++ b/tests/rdfa11/0201.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="12cm" height="4cm" viewBox="0 0 1200 400"
+xmlns:dc="http://purl.org/dc/terms/"
+xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny">
+ <desc property="dc:description">A yellow rectangle with sharp corners.</desc>
+ <!-- Show outline of canvas using 'rect' element -->
+ <rect x="1" y="1" width="1198" height="398"
+ fill="none" stroke="blue" stroke-width="2"/>
+ <rect x="400" y="100" width="400" height="200"
+ fill="yellow" stroke="navy" stroke-width="10" />
+
+</svg>
diff --git a/tests/rdfa11/0202.out b/tests/rdfa11/0202.out
new file mode 100644
index 0000000..bf0d427
--- /dev/null
+++ b/tests/rdfa11/0202.out
@@ -0,0 +1 @@
+<http://example.com/> <http://purl.org/dc/terms/description> "A yellow rectangle with sharp corners." .
diff --git a/tests/rdfa11/0202.xml b/tests/rdfa11/0202.xml
new file mode 100644
index 0000000..23452e8
--- /dev/null
+++ b/tests/rdfa11/0202.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="12cm" height="4cm" viewBox="0 0 1200 400"
+xml:base="http://example.com/"
+xmlns:dc="http://purl.org/dc/terms/"
+xmlns="http://www.w3.org/2000/svg">
+ version="1.2"
+ baseProfile="tiny"
+ <desc property="dc:description">A yellow rectangle with sharp corners.</desc>
+ <!-- Show outline of canvas using 'rect' element -->
+ <rect x="1" y="1" width="1198" height="398"
+ fill="none" stroke="blue" stroke-width="2"/>
+ <rect x="400" y="100" width="400" height="200"
+ fill="yellow" stroke="navy" stroke-width="10" />
+</svg>
diff --git a/tests/rdfa11/0203.out b/tests/rdfa11/0203.out
new file mode 100644
index 0000000..bf0d427
--- /dev/null
+++ b/tests/rdfa11/0203.out
@@ -0,0 +1 @@
+<http://example.com/> <http://purl.org/dc/terms/description> "A yellow rectangle with sharp corners." .
diff --git a/tests/rdfa11/0203.xml b/tests/rdfa11/0203.xml
new file mode 100644
index 0000000..a5cdfc6
--- /dev/null
+++ b/tests/rdfa11/0203.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="12cm" height="4cm" viewBox="0 0 1200 400"
+xml:base="http://example.com/not-this-one/"
+xmlns:dc="http://purl.org/dc/terms/"
+xmlns="http://www.w3.org/2000/svg">
+ version="1.2"
+ baseProfile="tiny"
+ <desc about="" xml:base="http://example.com/" property="dc:description">A yellow rectangle with sharp corners.</desc>
+ <!-- Show outline of canvas using 'rect' element -->
+ <rect x="1" y="1" width="1198" height="398"
+ fill="none" stroke="blue" stroke-width="2"/>
+ <rect x="400" y="100" width="400" height="200"
+ fill="yellow" stroke="navy" stroke-width="10" />
+</svg
diff --git a/tests/rdfa11/0206.out b/tests/rdfa11/0206.out
new file mode 100644
index 0000000..55ea9e5
--- /dev/null
+++ b/tests/rdfa11/0206.out
@@ -0,0 +1 @@
+<http://www.w3.org/2001/XMLSchema#maxExclusive> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
diff --git a/tests/rdfa11/0206.xml b/tests/rdfa11/0206.xml
new file mode 100644
index 0000000..1f01f37
--- /dev/null
+++ b/tests/rdfa11/0206.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Default context test 0206</title>
+</head>
+<body>
+ <p about ="xsd:maxExclusive" rel="rdf:type" resource="owl:DatatypeProperty">
+ An OWL Axiom: "xsd:maxExclusive" is a Datatype Property in OWL.
+ </p>
+</body>
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0207.out b/tests/rdfa11/0207.out
new file mode 100644
index 0000000..c78413b
--- /dev/null
+++ b/tests/rdfa11/0207.out
@@ -0,0 +1,6 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0207.xml#event1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/12/cal/icaltzd#Vevent> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0207.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#summary> "Weekend off in Iona" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0207.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#dtstart> "2006-10-21"^^<http://www.w3.org/2001/XMLSchema#date> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0207.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#dtend> "2006-10-23"^^<http://www.w3.org/2001/XMLSchema#date> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0207.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#url> <http://freetime.example.org/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0207.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#location> "Iona, UK" .
diff --git a/tests/rdfa11/0207.xml b/tests/rdfa11/0207.xml
new file mode 100644
index 0000000..d6c3ffd
--- /dev/null
+++ b/tests/rdfa11/0207.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cal="http://www.w3.org/2002/12/cal/icaltzd#"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
+<head>
+ <title>Test 0207</title>
+</head>
+ <body>
+ <p about="#event1" typeof="cal:Vevent">
+ <b property="cal:summary">Weekend off in Iona</b>:
+ <span property="cal:dtstart" content="2006-10-21" datatype="xsd:date">Oct 21st</span>
+ to <span property="cal:dtend" content="2006-10-23" datatype="xsd:date">Oct 23rd</span>.
+ See <a rel="cal:url" href="http://freetime.example.org/">FreeTime.Example.org</a> for
+ info on <span property="cal:location">Iona, UK</span>.
+ </p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0213.out b/tests/rdfa11/0213.out
new file mode 100644
index 0000000..bc9c2e6
--- /dev/null
+++ b/tests/rdfa11/0213.out
@@ -0,0 +1 @@
+<http://www.example.org/> <http://purl.org/dc/elements/1.1/title> "E = mc2: The Most Urgent Problem of Our Time" .
diff --git a/tests/rdfa11/0213.xml b/tests/rdfa11/0213.xml
new file mode 100644
index 0000000..090a74f
--- /dev/null
+++ b/tests/rdfa11/0213.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" prefix="dc: http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0213</title>
+ </head>
+ <body>
+ <!-- In RDFa 1.1, by default a plain literal is generated even if it contains XML elements -->
+ <div about="http://www.example.org/">
+ <h2 property="dc:title">E = mc<sup>2</sup>: The Most Urgent Problem of Our Time</h2>
+ </div>
+ </body>
+
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0214.out b/tests/rdfa11/0214.out
new file mode 100644
index 0000000..ce149ac
--- /dev/null
+++ b/tests/rdfa11/0214.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0214.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0214.xml> <http://purl.org/dc/terms/title> "Test 0214" .
diff --git a/tests/rdfa11/0214.xml b/tests/rdfa11/0214.xml
new file mode 100644
index 0000000..73a7014
--- /dev/null
+++ b/tests/rdfa11/0214.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" typeof="foaf:Document">
+<head>
+ <title property="dc:title">Test 0214</title>
+</head>
+<body>
+ <p>This document has a title.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0216.out b/tests/rdfa11/0216.out
new file mode 100644
index 0000000..6d5b231
--- /dev/null
+++ b/tests/rdfa11/0216.out
@@ -0,0 +1 @@
+<http://www.ivan-herman.net/foaf#me> <http://xmlns.com/foaf/0.1/name> "Iv\u00E1n" .
diff --git a/tests/rdfa11/0216.xml b/tests/rdfa11/0216.xml
new file mode 100644
index 0000000..eed700c
--- /dev/null
+++ b/tests/rdfa11/0216.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" prefix = "
+air: http://www.daml.org/2001/10/html/airport-ont#
+bio: http://vocab.org/bio/0.1/
+contact: http://www.w3.org/2000/10/swap/pim/contact#
+dc: http://purl.org/dc/terms/
+foaf: http://xmlns.com/foaf/0.1/
+ical: http://www.w3.org/2002/12/cal/icaltzd#
+owl: http://www.w3.org/2002/07/owl#
+rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
+rdfs: http://www.w3.org/2000/01/rdf-schema#
+rel: http://vocab.org/relationship/
+openid: http://xmlns.openid.net/auth#
+rss: http://web.resource.org/rss/1.0/
+sioc: http://rdfs.org/sioc/ns#
+xsd: http://www.w3.org/2001/XMLSchema#
+google: http://rdf.data-vocabulary.org/#
+rsa: http://www.w3.org/ns/auth/rsa#
+cert: http://www.w3.org/ns/auth/cert#
+wot: http://xmlns.com/wot/0.1/
+">
+<head>
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
+</head>
+<body>
+ <!-- Tests whether the Unicode (UTF-8 encoded) characters are properly handled even with a large set of properties
+ in the html element, ie, when the content sniffing to find out the character encoding may not work -->
+ <p about="http://www.ivan-herman.net/foaf#me" property="foaf:name">Iván</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0217.out b/tests/rdfa11/0217.out
new file mode 100644
index 0000000..2b4db16
--- /dev/null
+++ b/tests/rdfa11/0217.out
@@ -0,0 +1,2 @@
+<http://example.org/#me> <http://xmlns.com/foaf/0.1/name> "Gregg Kellogg" .
+<http://example.org/> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://xmlns.com/foaf/0.1/> .
diff --git a/tests/rdfa11/0217.xml b/tests/rdfa11/0217.xml
new file mode 100644
index 0000000..0dfbeae
--- /dev/null
+++ b/tests/rdfa11/0217.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0217</title>
+ <base href="http://example.org/"/>
+</head>
+<body>
+ <div about="#me" vocab="http://xmlns.com/foaf/0.1/" >
+ <p property="name">Gregg Kellogg</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0218.out b/tests/rdfa11/0218.out
new file mode 100644
index 0000000..a2ede83
--- /dev/null
+++ b/tests/rdfa11/0218.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0218.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/tests/rdfa11/0218.xml b/tests/rdfa11/0218.xml
new file mode 100644
index 0000000..830f6b1
--- /dev/null
+++ b/tests/rdfa11/0218.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0218</title>
+</head>
+<body>
+ <div about ="">
+ <p rel="rdf:value" inlist=""/>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0219.out b/tests/rdfa11/0219.out
new file mode 100644
index 0000000..57bf1f2
--- /dev/null
+++ b/tests/rdfa11/0219.out
@@ -0,0 +1,3 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0219.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnodeid1 .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/tests/rdfa11/0219.xml b/tests/rdfa11/0219.xml
new file mode 100644
index 0000000..1f72945
--- /dev/null
+++ b/tests/rdfa11/0219.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0219</title>
+</head>
+<body>
+ <div about="">
+ <p property="rdf:value" inlist="">Foo</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0220.out b/tests/rdfa11/0220.out
new file mode 100644
index 0000000..3a9d3fe
--- /dev/null
+++ b/tests/rdfa11/0220.out
@@ -0,0 +1,4 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0220.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> .
+_:bnode0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> .
+_:bnode0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0220.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode0 .
diff --git a/tests/rdfa11/0220.xml b/tests/rdfa11/0220.xml
new file mode 100644
index 0000000..6767896
--- /dev/null
+++ b/tests/rdfa11/0220.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0220</title>
+</head>
+<body>
+ <div about="">
+ <a rel="rdf:value" inlist="" href="foo">Foo</a>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0221.out b/tests/rdfa11/0221.out
new file mode 100644
index 0000000..f8898b5
--- /dev/null
+++ b/tests/rdfa11/0221.out
@@ -0,0 +1,6 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0221.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> .
+_:bnode0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnode0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:bnode1 .
+_:bnode1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> .
+_:bnode1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0221.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode0 .
diff --git a/tests/rdfa11/0221.xml b/tests/rdfa11/0221.xml
new file mode 100644
index 0000000..3b0143c
--- /dev/null
+++ b/tests/rdfa11/0221.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0221</title>
+</head>
+<body>
+ <div about="">
+ <p property="rdf:value" inlist="">Foo</p>
+ <a rel="rdf:value" inlist="" href="foo">Foo</a>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0222.out b/tests/rdfa11/0222.out
new file mode 100644
index 0000000..8f55346
--- /dev/null
+++ b/tests/rdfa11/0222.out
@@ -0,0 +1,5 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0222.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnodeid2 .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Bar" .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:bnodeid1 .
diff --git a/tests/rdfa11/0222.xml b/tests/rdfa11/0222.xml
new file mode 100644
index 0000000..6cf18e5
--- /dev/null
+++ b/tests/rdfa11/0222.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0222</title>
+</head>
+<body>
+ <div about="">
+ <p property="rdf:value" inlist="">Foo</p>
+ <strong><p property="rdf:value" inlist="">Bar</p></strong>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0223.out b/tests/rdfa11/0223.out
new file mode 100644
index 0000000..cdc792d
--- /dev/null
+++ b/tests/rdfa11/0223.out
@@ -0,0 +1,6 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0223.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnodeid2 .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Bar" .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:bnodeid1 .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0223.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Baz" .
diff --git a/tests/rdfa11/0223.xml b/tests/rdfa11/0223.xml
new file mode 100644
index 0000000..7282f9e
--- /dev/null
+++ b/tests/rdfa11/0223.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0223</title>
+</head>
+<body>
+ <div about="">
+ <p property="rdf:value" inlist="">Foo</p>
+ <strong><p property="rdf:value" inlist="">Bar</p></strong>
+ <p property="rdf:value">Baz</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0224.out b/tests/rdfa11/0224.out
new file mode 100644
index 0000000..d086d21
--- /dev/null
+++ b/tests/rdfa11/0224.out
@@ -0,0 +1,5 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0224.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnodeid2 .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/bar> .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:bnodeid1 .
diff --git a/tests/rdfa11/0224.xml b/tests/rdfa11/0224.xml
new file mode 100644
index 0000000..bf37b41
--- /dev/null
+++ b/tests/rdfa11/0224.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0224</title>
+</head>
+<body>
+ <div about="">
+ <ol rel="rdf:value" inlist="">
+ <li><a href="foo">Foo</a></li>
+ <li><a href="bar">Bar</a></li>
+ </ol>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0225.out b/tests/rdfa11/0225.out
new file mode 100644
index 0000000..662603a
--- /dev/null
+++ b/tests/rdfa11/0225.out
@@ -0,0 +1,6 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnodeid1 .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnodeid2 .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Bar" .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/tests/rdfa11/0225.xml b/tests/rdfa11/0225.xml
new file mode 100644
index 0000000..9e69694
--- /dev/null
+++ b/tests/rdfa11/0225.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0225</title>
+</head>
+<body>
+ <div about="foo">
+ <p property="rdf:value" inlist="">Foo</p>
+ </div>
+ <div about="foo">
+ <p property="rdf:value" inlist="">Bar</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0226.out b/tests/rdfa11/0226.out
new file mode 100644
index 0000000..c0182f2
--- /dev/null
+++ b/tests/rdfa11/0226.out
@@ -0,0 +1,7 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0226.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnodeid1 .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0226.xml> <http://www.example.org/inlist> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/res> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/res> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnodeid2 .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Bar" .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/tests/rdfa11/0226.xml b/tests/rdfa11/0226.xml
new file mode 100644
index 0000000..75f7cdf
--- /dev/null
+++ b/tests/rdfa11/0226.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0226</title>
+</head>
+<body prefix="ex: http://www.example.org/">
+ <div about="">
+ <p property="rdf:value" inlist="">Foo</p>
+ <span rel="ex:inlist" resource="res">
+ <p property="rdf:value" inlist="">Bar</p>
+ </span>
+ </div>
+</body>
+</html>
diff --git a/tests/rdfa11/0227.out b/tests/rdfa11/0227.out
new file mode 100644
index 0000000..4e2af4e
--- /dev/null
+++ b/tests/rdfa11/0227.out
@@ -0,0 +1,7 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0227.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnodeid1 .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0227.xml> <http://www.example.org/inlist> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/res> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/res> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnodeid2 .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Bar" .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/tests/rdfa11/0227.xml b/tests/rdfa11/0227.xml
new file mode 100644
index 0000000..3a841f6
--- /dev/null
+++ b/tests/rdfa11/0227.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0227</title>
+</head>
+<body prefix="ex: http://www.example.org/">
+ <div about="">
+ <p property="rdf:value" inlist="">Foo</p>
+ <span rel="ex:inlist">
+ <p about="res" property="rdf:value" inlist="">Bar</p>
+ </span>
+ </div>
+</body>
+</html>
diff --git a/tests/rdfa11/0228.out b/tests/rdfa11/0228.out
new file mode 100644
index 0000000..a5dbf2d
--- /dev/null
+++ b/tests/rdfa11/0228.out
@@ -0,0 +1 @@
+<http://sw-app.org/img/mic_2006_03.jpg> <http://www.w3.org/1999/xhtml/vocab#alternate> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0228.xml> .
diff --git a/tests/rdfa11/0228.xml b/tests/rdfa11/0228.xml
new file mode 100644
index 0000000..22c734e
--- /dev/null
+++ b/tests/rdfa11/0228.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0228</title>
+ <!-- Based on 1.1 semantics for 0040 -->
+ </head>
+ <body>
+ <div>
+ <img src="http://sw-app.org/img/mic_2007_01.jpg"
+ rev="xhv:alternate"
+ resource="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0229.out b/tests/rdfa11/0229.out
new file mode 100644
index 0000000..fe7d7f5
--- /dev/null
+++ b/tests/rdfa11/0229.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0229.xml> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/img/mic_2007_01.jpg> .
diff --git a/tests/rdfa11/0229.xml b/tests/rdfa11/0229.xml
new file mode 100644
index 0000000..043ba2d
--- /dev/null
+++ b/tests/rdfa11/0229.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0042</title>
+ </head>
+ <body>
+ <div>
+ <img rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0230.out b/tests/rdfa11/0230.out
new file mode 100644
index 0000000..5d137dd
--- /dev/null
+++ b/tests/rdfa11/0230.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0230.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://creativecommons.org/licenses/by-nc-sa/2.0/> .
diff --git a/tests/rdfa11/0230.xml b/tests/rdfa11/0230.xml
new file mode 100644
index 0000000..eec1c70
--- /dev/null
+++ b/tests/rdfa11/0230.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0230</title>
+</head>
+<body>
+ <div>
+ <img
+ src="http://example.org/example.png"
+ rel="license"
+ href="http://creativecommons.org/licenses/by-nc-sa/2.0/"
+ alt="example image" />
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0231.out b/tests/rdfa11/0231.out
new file mode 100644
index 0000000..d902862
--- /dev/null
+++ b/tests/rdfa11/0231.out
@@ -0,0 +1 @@
+<http://example.org/example.png> <http://www.w3.org/1999/xhtml/vocab#license> <http://creativecommons.org/licenses/by-nc-sa/2.0/> .
diff --git a/tests/rdfa11/0231.xml b/tests/rdfa11/0231.xml
new file mode 100644
index 0000000..16765eb
--- /dev/null
+++ b/tests/rdfa11/0231.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0231</title>
+</head>
+<body>
+ <div about="http://creativecommons.org/licenses/by-nc-sa/2.0/" rev="license">
+ <img src="http://example.org/example.png" alt="example image" />
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0232.out b/tests/rdfa11/0232.out
new file mode 100644
index 0000000..898a7d8
--- /dev/null
+++ b/tests/rdfa11/0232.out
@@ -0,0 +1,3 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0232.xml> <http://xmlns.com/foaf/0.1/maker> _:a .
+_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:a <http://xmlns.com/foaf/0.1/name> "John Doe" .
diff --git a/tests/rdfa11/0232.xml b/tests/rdfa11/0232.xml
new file mode 100644
index 0000000..85b893b
--- /dev/null
+++ b/tests/rdfa11/0232.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0232</title>
+ </head>
+ <body>
+ <div rel="foaf:maker" typeof="foaf:Person">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0233.out b/tests/rdfa11/0233.out
new file mode 100644
index 0000000..9b66f72
--- /dev/null
+++ b/tests/rdfa11/0233.out
@@ -0,0 +1,3 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0233.xml> <http://xmlns.com/foaf/0.1/maker> <http://www.example.org/#me> .
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/name> "John Doe" .
diff --git a/tests/rdfa11/0233.xml b/tests/rdfa11/0233.xml
new file mode 100644
index 0000000..4b351fc
--- /dev/null
+++ b/tests/rdfa11/0233.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <head>
+ <title>Test 0233</title>
+ </head>
+ <body>
+ <div rel="foaf:maker" typeof="foaf:Person" resource="http://www.example.org/#me">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0234.out b/tests/rdfa11/0234.out
new file mode 100644
index 0000000..a81c4bd
--- /dev/null
+++ b/tests/rdfa11/0234.out
@@ -0,0 +1,3 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0234.xml> <http://www.w3.org/2007/05/powder-s#describedby> <http://example.org/describedby> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0234.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/license> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0234.xml> <http://www.w3.org/1999/xhtml/vocab#role> <http://example.org/role> .
diff --git a/tests/rdfa11/0234.xml b/tests/rdfa11/0234.xml
new file mode 100644
index 0000000..3f9879e
--- /dev/null
+++ b/tests/rdfa11/0234.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0234</title>
+ </head>
+ <body>
+ <p>
+ <a rel="describedby" href="http://example.org/describedby">describedby</a>
+ <a rel="license" href="http://example.org/license">license</a>
+ <a rel="role" href="http://example.org/role">role</a>
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0235.out b/tests/rdfa11/0235.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfa11/0235.out
diff --git a/tests/rdfa11/0235.xml b/tests/rdfa11/0235.xml
new file mode 100644
index 0000000..79b450d
--- /dev/null
+++ b/tests/rdfa11/0235.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0235</title>
+ </head>
+ <body>
+ <p>
+ The <span property="dc:title">rdfagraph</span> should not generate triples when
+ looking only at the processor graph.
+ </p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0236.out b/tests/rdfa11/0236.out
new file mode 100644
index 0000000..9143011
--- /dev/null
+++ b/tests/rdfa11/0236.out
@@ -0,0 +1 @@
+_:s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/rdfa#Error> .
diff --git a/tests/rdfa11/0236.xml b/tests/rdfa11/0236.xml
new file mode 100644
index 0000000..93c5a86
--- /dev/null
+++ b/tests/rdfa11/0236.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0236</title>
+ </head>
+ <body which is not closed should generate a processor error</html> \ No newline at end of file
diff --git a/tests/rdfa11/0237.out b/tests/rdfa11/0237.out
new file mode 100644
index 0000000..8f6161a
--- /dev/null
+++ b/tests/rdfa11/0237.out
@@ -0,0 +1 @@
+_:s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/rdfa#Warning> .
diff --git a/tests/rdfa11/0237.xml b/tests/rdfa11/0237.xml
new file mode 100644
index 0000000..c1a1ac7
--- /dev/null
+++ b/tests/rdfa11/0237.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0237</title>
+</head>
+<body prefix="$malformed http://example.com"
+ property="rdf:value"
+ resource="[$malformed:curie]">
+ Malformed Prefix
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0238.out b/tests/rdfa11/0238.out
new file mode 100644
index 0000000..8f6161a
--- /dev/null
+++ b/tests/rdfa11/0238.out
@@ -0,0 +1 @@
+_:s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/rdfa#Warning> .
diff --git a/tests/rdfa11/0238.xml b/tests/rdfa11/0238.xml
new file mode 100644
index 0000000..7dff2f1
--- /dev/null
+++ b/tests/rdfa11/0238.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0238</title>
+</head>
+<body property="undefined_term">
+ Undefined Term
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0239.out b/tests/rdfa11/0239.out
new file mode 100644
index 0000000..8f6161a
--- /dev/null
+++ b/tests/rdfa11/0239.out
@@ -0,0 +1 @@
+_:s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/rdfa#Warning> .
diff --git a/tests/rdfa11/0239.xml b/tests/rdfa11/0239.xml
new file mode 100644
index 0000000..e86506a
--- /dev/null
+++ b/tests/rdfa11/0239.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0239</title>
+</head>
+<body property="rdf:value"
+ resource="[undefined:curie]">
+ Undefined Prefix
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0246.out b/tests/rdfa11/0246.out
new file mode 100644
index 0000000..36a85c6
--- /dev/null
+++ b/tests/rdfa11/0246.out
@@ -0,0 +1,6 @@
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> _:a .
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> _:b .
+_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:a <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
+_:b <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:b <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
diff --git a/tests/rdfa11/0246.xml b/tests/rdfa11/0246.xml
new file mode 100644
index 0000000..5d44f28
--- /dev/null
+++ b/tests/rdfa11/0246.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0246</title>
+ </head>
+ <body prefix="foaf: http://xmlns.com/foaf/0.1/">
+ <div about="http://www.example.org/#ben" rel="foaf:knows">
+ <p typeof="foaf:Person"><span property="foaf:name">Mark Birbeck</span></p>
+ <p typeof="foaf:Person"><span property="foaf:name">Ivan Herman</span></p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0247.out b/tests/rdfa11/0247.out
new file mode 100644
index 0000000..13d24aa
--- /dev/null
+++ b/tests/rdfa11/0247.out
@@ -0,0 +1,6 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnodeid1 .
+_:bnodeid1 <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+_:bnodeid1 <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnodeid2 .
+_:bnodeid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:bnodeid2 <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
diff --git a/tests/rdfa11/0247.xml b/tests/rdfa11/0247.xml
new file mode 100644
index 0000000..069c0cb
--- /dev/null
+++ b/tests/rdfa11/0247.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0247</title>
+ </head>
+ <body prefix="foaf: http://xmlns.com/foaf/0.1/">
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p typeof="foaf:Person"><span property="foaf:name">Mark Birbeck</span></p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0248.out b/tests/rdfa11/0248.out
new file mode 100644
index 0000000..d48f932
--- /dev/null
+++ b/tests/rdfa11/0248.out
@@ -0,0 +1,6 @@
+_:a <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:a <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+_:a <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+_:b <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:b <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:b <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
diff --git a/tests/rdfa11/0248.xml b/tests/rdfa11/0248.xml
new file mode 100644
index 0000000..0b6100f
--- /dev/null
+++ b/tests/rdfa11/0248.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0248</title>
+ </head>
+ <body prefix="foaf: http://xmlns.com/foaf/0.1/">
+ <div about ="http://www.example.org/#somebody" rev="foaf:knows">
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p typeof="foaf:Person"><span property="foaf:name">Mark Birbeck</span></p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0249.out b/tests/rdfa11/0249.out
new file mode 100644
index 0000000..b1baa9f
--- /dev/null
+++ b/tests/rdfa11/0249.out
@@ -0,0 +1,8 @@
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:a .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:b .
+_:a <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:a <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+_:a <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+_:b <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:b <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:b <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
diff --git a/tests/rdfa11/0249.xml b/tests/rdfa11/0249.xml
new file mode 100644
index 0000000..dcae239
--- /dev/null
+++ b/tests/rdfa11/0249.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0249</title>
+ </head>
+ <body prefix="foaf: http://xmlns.com/foaf/0.1/">
+ <div about ="http://www.example.org/#somebody" rev="foaf:knows" rel="foaf:knows">
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p typeof="foaf:Person"><span property="foaf:name">Mark Birbeck</span></p>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0250.out b/tests/rdfa11/0250.out
new file mode 100644
index 0000000..3d4d6bf
--- /dev/null
+++ b/tests/rdfa11/0250.out
@@ -0,0 +1,2 @@
+<http://www.ivan-herman.net/foaf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.ivan-herman.net/foaf#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
diff --git a/tests/rdfa11/0250.xml b/tests/rdfa11/0250.xml
new file mode 100644
index 0000000..87fbaa4
--- /dev/null
+++ b/tests/rdfa11/0250.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Test 0250</title>
+ </head>
+ <body prefix="foaf: http://xmlns.com/foaf/0.1/">
+ <p about ="http://www.ivan-herman.net/foaf#me" typeof="foaf:Person" property="foaf:name">Ivan Herman</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0251.out b/tests/rdfa11/0251.out
new file mode 100644
index 0000000..28e5e42
--- /dev/null
+++ b/tests/rdfa11/0251.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/property> "chat"@fr .
diff --git a/tests/rdfa11/0251.xml b/tests/rdfa11/0251.xml
new file mode 100644
index 0000000..92b40a7
--- /dev/null
+++ b/tests/rdfa11/0251.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" prefix="ex: http://example.org/">
+ <head about="">
+ <title>Test 251</title>
+ <meta about="http://example.org/node" property="ex:property" lang="fr" content="chat" />
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0252.out b/tests/rdfa11/0252.out
new file mode 100644
index 0000000..28e5e42
--- /dev/null
+++ b/tests/rdfa11/0252.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/property> "chat"@fr .
diff --git a/tests/rdfa11/0252.xml b/tests/rdfa11/0252.xml
new file mode 100644
index 0000000..1ba1d97
--- /dev/null
+++ b/tests/rdfa11/0252.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" prefix="ex: http://example.org/">
+ <head about="" lang="fr">
+ <title lang="en">Test 0252</title>
+ <meta about="http://example.org/node" property="ex:property" content="chat" />
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0253.out b/tests/rdfa11/0253.out
new file mode 100644
index 0000000..1a5c32d
--- /dev/null
+++ b/tests/rdfa11/0253.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/property> "\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03CC\n\u03AC\u03C3\u03C0\u03C1\u03BF \u03B4\u03B9\u03AC\u03C3\u03C4\u03B7\u03BC\u03B1\n"@el .
diff --git a/tests/rdfa11/0253.xml b/tests/rdfa11/0253.xml
new file mode 100644
index 0000000..1c1023f
--- /dev/null
+++ b/tests/rdfa11/0253.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" prefix="ex: http://example.org/">
+ <head>
+ <title>Test 0108</title>
+ </head>
+ <body>
+ <p about="http://example.org/node" property="ex:property"
+ datatype="" lang="el">ελληνικό
+άσπÏο διάστημα
+</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0254.out b/tests/rdfa11/0254.out
new file mode 100644
index 0000000..989f53a
--- /dev/null
+++ b/tests/rdfa11/0254.out
@@ -0,0 +1 @@
+<http://example.org/> <http://example.org/terms#prop> "A plain literal with a lang tag."@en .
diff --git a/tests/rdfa11/0254.xml b/tests/rdfa11/0254.xml
new file mode 100644
index 0000000..78be11f
--- /dev/null
+++ b/tests/rdfa11/0254.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" prefix="ex: http://example.org/terms#">
+<head>
+ <title>Test 0254</title>
+ <base href="http://example.org/"/>
+</head>
+<body lang="en">
+ <p property="ex:prop" datatype="">A <strong>plain literal</strong> with a lang tag.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0255.out b/tests/rdfa11/0255.out
new file mode 100644
index 0000000..72ef6a6
--- /dev/null
+++ b/tests/rdfa11/0255.out
@@ -0,0 +1,2 @@
+<http://example.org/> <http://example.org/terms#prop> "Just a plain literal." .
+
diff --git a/tests/rdfa11/0255.xml b/tests/rdfa11/0255.xml
new file mode 100644
index 0000000..e3e6d78
--- /dev/null
+++ b/tests/rdfa11/0255.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" prefix="ex: http://example.org/terms#">
+<head>
+ <title>Test 0255</title>
+ <base href="http://example.org/"/>
+</head>
+<body lang="en">
+ <p property="ex:prop" lang="">Just a plain literal.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0256.out b/tests/rdfa11/0256.out
new file mode 100644
index 0000000..28e5e42
--- /dev/null
+++ b/tests/rdfa11/0256.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/property> "chat"@fr .
diff --git a/tests/rdfa11/0256.xml b/tests/rdfa11/0256.xml
new file mode 100644
index 0000000..157880f
--- /dev/null
+++ b/tests/rdfa11/0256.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" prefix="ex: http://example.org/">
+ <head about="">
+ <title>Test 0256</title>
+ <meta about="http://example.org/node" property="ex:property" xml:lang="fr" lang="hu" content="chat" />
+ </head>
+ <body>
+ <p></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0257.out b/tests/rdfa11/0257.out
new file mode 100644
index 0000000..4926930
--- /dev/null
+++ b/tests/rdfa11/0257.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0257.xml#a> <http://purl.org/dc/elements/1.1/title> "" .
diff --git a/tests/rdfa11/0257.xml b/tests/rdfa11/0257.xml
new file mode 100644
index 0000000..3b5407d
--- /dev/null
+++ b/tests/rdfa11/0257.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" prefix="dc: http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Test 0257</title>
+ </head>
+ <body>
+ <span about="#a" property="dc:title"></span>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0258.out b/tests/rdfa11/0258.out
new file mode 100644
index 0000000..2637cb7
--- /dev/null
+++ b/tests/rdfa11/0258.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0258.xml> <http://www.w3.org/ns/earl#testcase> _:test .
diff --git a/tests/rdfa11/0258.xml b/tests/rdfa11/0258.xml
new file mode 100644
index 0000000..ffce955
--- /dev/null
+++ b/tests/rdfa11/0258.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Undescore Prefix is Ignored Test</title>
+</head>
+<body>
+<p>Ensure that the "_" prefix is ignored.</p>
+<p xmlns:_="http://example.org/"
+ prefix="_: http://example.org/"
+ xmlns:earl="http://www.w3.org/ns/earl#"
+ rel="earl:testcase" resource="_:test">Test</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0259.out b/tests/rdfa11/0259.out
new file mode 100644
index 0000000..4b4eb7b
--- /dev/null
+++ b/tests/rdfa11/0259.out
@@ -0,0 +1,31 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/2003/g/data-view#> "GRDDL" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/ns/ma-ont#> "MA" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/2002/07/owl#> "OWL" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "RDF" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/ns/rdfa#> "RDFa" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/2000/01/rdf-schema#> "RDFS" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/2007/rif#> "RIF" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/2004/02/skos/core#> "SKOS" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/2008/05/skos-xl#> "SKOS-XL" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/2007/05/powder#> "WDR" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://rdfs.org/ns/void#> "VOID" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/2007/05/powder-s#> "WDRS" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/1999/xhtml/vocab#> "XHV" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/XML/1998/namespace> "XML" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/2001/XMLSchema#> "XSD" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://creativecommons.org/ns#> "CC" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://commontag.org/ns#> "CTAG" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://purl.org/dc/terms/> "DC" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://purl.org/dc/terms/> "DCTERMS" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://xmlns.com/foaf/0.1/> "FOAF" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://purl.org/goodrelations/v1#> "GR" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/2002/12/cal/icaltzd#> "ICAL" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://ogp.me/ns#> "OG" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://purl.org/stuff/rev#> "REV" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://rdfs.org/sioc/ns#> "SIOC" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://rdf.data-vocabulary.org/#> "V" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/2006/vcard/ns#> "VCARD" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://schema.org/> "Schema" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/2007/05/powder-s#describedby> "DescribedBy" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/1999/xhtml/vocab#license> "License" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0259.xml> <http://www.w3.org/1999/xhtml/vocab#role> "Role" .
diff --git a/tests/rdfa11/0259.xml b/tests/rdfa11/0259.xml
new file mode 100644
index 0000000..cefb340
--- /dev/null
+++ b/tests/rdfa11/0259.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0259</title>
+</head>
+<body>
+ <div>
+ Vocabulary Prefixes
+ <span property="grddl:">GRDDL</span>
+ <span property="ma:">MA</span>
+ <span property="owl:">OWL</span>
+ <span property="rdf:">RDF</span>
+ <span property="rdfa:">RDFa</span>
+ <span property="rdfs:">RDFS</span>
+ <span property="rif:">RIF</span>
+ <span property="skos:">SKOS</span>
+ <span property="skosxl:">SKOS-XL</span>
+ <span property="wdr:">WDR</span>
+ <span property="void:">VOID</span>
+ <span property="wdrs:">WDRS</span>
+ <span property="xhv:">XHV</span>
+ <span property="xml:">XML</span>
+ <span property="xsd:">XSD</span>
+ </div>
+ <div>
+ Widely Used prefixes
+ <span property="cc:">CC</span>
+ <span property="ctag:">CTAG</span>
+ <span property="dc:">DC</span>
+ <span property="dcterms:">DCTERMS</span>
+ <span property="foaf:">FOAF</span>
+ <span property="gr:">GR</span>
+ <span property="ical:">ICAL</span>
+ <span property="og:">OG</span>
+ <span property="rev:">REV</span>
+ <span property="sioc:">SIOC</span>
+ <span property="v:">V</span>
+ <span property="vcard:">VCARD</span>
+ <span property="schema:">Schema</span>
+ </div>
+ <div>
+ Vocabulary Terms
+ <span property="describedby">DescribedBy</span>
+ <span property="license">License</span>
+ <span property="role">Role</span>
+ </div>
+</body></html> \ No newline at end of file
diff --git a/tests/rdfa11/0260.out b/tests/rdfa11/0260.out
new file mode 100644
index 0000000..95e9a7b
--- /dev/null
+++ b/tests/rdfa11/0260.out
@@ -0,0 +1,25 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#alternate> "alternate" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#appendix> "appendix" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#cite> "cite" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#bookmark> "bookmark" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#contents> "contents" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#chapter> "chapter" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#copyright> "copyright" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#first> "first" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#glossary> "glossary" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#help> "help" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#icon> "icon" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#index> "index" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#last> "last" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#license> "license" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#meta> "meta" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#next> "next" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#prev> "prev" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#previous> "previous" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#section> "section" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#start> "start" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#stylesheet> "stylesheet" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#subsection> "subsection" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#top> "top" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#up> "up" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0260.xml> <http://www.w3.org/1999/xhtml/vocab#p3pv1> "p3pv1" .
diff --git a/tests/rdfa11/0260.xml b/tests/rdfa11/0260.xml
new file mode 100644
index 0000000..9a15684
--- /dev/null
+++ b/tests/rdfa11/0260.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is an XHTML1 test only -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1">
+<head>
+ <title>Test 0259</title>
+</head>
+<body>
+ <div>
+ Vocabulary Terms
+ <span property="alternate">alternate</span>
+ <span property="appendix">appendix</span>
+ <span property="cite">cite</span>
+ <span property="bookmark">bookmark</span>
+ <span property="contents">contents</span>
+ <span property="chapter">chapter</span>
+ <span property="copyright">copyright</span>
+ <span property="first">first</span>
+ <span property="glossary">glossary</span>
+ <span property="help">help</span>
+ <span property="icon">icon</span>
+ <span property="index">index</span>
+ <span property="last">last</span>
+ <span property="license">license</span>
+ <span property="meta">meta</span>
+ <span property="next">next</span>
+ <span property="prev">prev</span>
+ <span property="previous">previous</span>
+ <span property="section">section</span>
+ <span property="start">start</span>
+ <span property="stylesheet">stylesheet</span>
+ <span property="subsection">subsection</span>
+ <span property="top">top</span>
+ <span property="up">up</span>
+ <span property="p3pv1">p3pv1</span>
+ </div>
+</body></html>
diff --git a/tests/rdfa11/0261.out b/tests/rdfa11/0261.out
new file mode 100644
index 0000000..fd1f0cd
--- /dev/null
+++ b/tests/rdfa11/0261.out
@@ -0,0 +1 @@
+<http://www.example.org> <http://example.org/rdf/xmllit> "This is\nan XMLLiteral"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
diff --git a/tests/rdfa11/0261.xml b/tests/rdfa11/0261.xml
new file mode 100644
index 0000000..d03ccbe
--- /dev/null
+++ b/tests/rdfa11/0261.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.org/rdf/"
+xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<head>
+ <title>Test 0261</title>
+</head>
+<body>
+ <div about="http://www.example.org">
+ <p property="ex:xmllit" datatype="rdf:XMLLiteral">This is
+an XMLLiteral</p>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0262.out b/tests/rdfa11/0262.out
new file mode 100644
index 0000000..05e2309
--- /dev/null
+++ b/tests/rdfa11/0262.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/elements/1.1/creator> "Mark Birbeck" .
diff --git a/tests/rdfa11/0262.xml b/tests/rdfa11/0262.xml
new file mode 100644
index 0000000..fc52664
--- /dev/null
+++ b/tests/rdfa11/0262.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<head>
+ <title>Test 0262</title>
+</head>
+<body>
+ <p>This photo was taken by <span class="author" about="photo1.jpg" property=" dc:creator
+">Mark Birbeck</span>.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0263.out b/tests/rdfa11/0263.out
new file mode 100644
index 0000000..685035a
--- /dev/null
+++ b/tests/rdfa11/0263.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0263.xml> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.example.org> .
diff --git a/tests/rdfa11/0263.xml b/tests/rdfa11/0263.xml
new file mode 100644
index 0000000..24bb154
--- /dev/null
+++ b/tests/rdfa11/0263.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" property="rdfs:seeAlso" resource="http://www.example.org">
+<head >
+ <title>Test 0263</title>
+</head>
+<body>
+ <p> </p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0264.out b/tests/rdfa11/0264.out
new file mode 100644
index 0000000..a829d4c
--- /dev/null
+++ b/tests/rdfa11/0264.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0264.xml> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.example.org> .
diff --git a/tests/rdfa11/0264.xml b/tests/rdfa11/0264.xml
new file mode 100644
index 0000000..99cc2a5
--- /dev/null
+++ b/tests/rdfa11/0264.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head property="rdfs:seeAlso" resource="http://www.example.org">
+ <title>Test 0264</title>
+</head>
+<body>
+ <p> </p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0265.out b/tests/rdfa11/0265.out
new file mode 100644
index 0000000..b3b6e75
--- /dev/null
+++ b/tests/rdfa11/0265.out
@@ -0,0 +1 @@
+<http://www.example.com> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.example.org> .
diff --git a/tests/rdfa11/0265.xml b/tests/rdfa11/0265.xml
new file mode 100644
index 0000000..d314d74
--- /dev/null
+++ b/tests/rdfa11/0265.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" about="http://www.example.com">
+<head property="rdfs:seeAlso" resource="http://www.example.org">
+ <title>Test 0265</title>
+</head>
+<body>
+ <p> </p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0266.out b/tests/rdfa11/0266.out
new file mode 100644
index 0000000..20215fb
--- /dev/null
+++ b/tests/rdfa11/0266.out
@@ -0,0 +1,2 @@
+<http://www.w3.org/Person/Ivan#me> <http://www.w3.org/2002/07/owl#sameAs> <http://www.ivan-herman.net/foaf#me> .
+<http://www.ivan-herman.net/foaf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
diff --git a/tests/rdfa11/0266.xml b/tests/rdfa11/0266.xml
new file mode 100644
index 0000000..d6d1220
--- /dev/null
+++ b/tests/rdfa11/0266.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0266</title>
+</head>
+<body>
+ <div about="http://www.w3.org/Person/Ivan#me">
+ <a href="http://www.ivan-herman.net/foaf#me" typeof="foaf:Person" property="owl:sameAs">Ivan Herman</a>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0267.out b/tests/rdfa11/0267.out
new file mode 100644
index 0000000..20215fb
--- /dev/null
+++ b/tests/rdfa11/0267.out
@@ -0,0 +1,2 @@
+<http://www.w3.org/Person/Ivan#me> <http://www.w3.org/2002/07/owl#sameAs> <http://www.ivan-herman.net/foaf#me> .
+<http://www.ivan-herman.net/foaf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
diff --git a/tests/rdfa11/0267.xml b/tests/rdfa11/0267.xml
new file mode 100644
index 0000000..239ff3f
--- /dev/null
+++ b/tests/rdfa11/0267.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0267</title>
+</head>
+<body>
+ <div about="http://www.w3.org/Person/Ivan#me">
+ <p resource="http://www.ivan-herman.net/foaf#me" typeof="foaf:Person" property="owl:sameAs">Ivan Herman</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0268.out b/tests/rdfa11/0268.out
new file mode 100644
index 0000000..400529e
--- /dev/null
+++ b/tests/rdfa11/0268.out
@@ -0,0 +1,2 @@
+<http://www.ivan-herman.net/foaf#me> <http://xmlns.com/foaf/0.1/depiction> <http://www.ivan-herman.net/Images/me2003-small.png> .
+<http://www.ivan-herman.net/Images/me2003-small.png> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Image> .
diff --git a/tests/rdfa11/0268.xml b/tests/rdfa11/0268.xml
new file mode 100644
index 0000000..b742eca
--- /dev/null
+++ b/tests/rdfa11/0268.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0268</title>
+</head>
+<body>
+ <div about="http://www.ivan-herman.net/foaf#me">
+ <img src="http://www.ivan-herman.net/Images/me2003-small.png" typeof="foaf:Image" property="foaf:depiction" />
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0269.out b/tests/rdfa11/0269.out
new file mode 100644
index 0000000..8dc7816
--- /dev/null
+++ b/tests/rdfa11/0269.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0269.xml> <http://www.w3.org/2000/01/rdf-schema#comment> "This is an RDFa test" .
diff --git a/tests/rdfa11/0269.xml b/tests/rdfa11/0269.xml
new file mode 100644
index 0000000..a489b9c
--- /dev/null
+++ b/tests/rdfa11/0269.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" property="rdfs:comment" content="This is an RDFa test">
+<head >
+ <title>Test 0269</title>
+</head>
+<body>
+ <p> </p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0271.out b/tests/rdfa11/0271.out
new file mode 100644
index 0000000..df36453
--- /dev/null
+++ b/tests/rdfa11/0271.out
@@ -0,0 +1 @@
+<http://www.example.org/> <http://www.w3.org/2000/01/rdf-schema#comment> "This is an RDFa test" .
diff --git a/tests/rdfa11/0271.xml b/tests/rdfa11/0271.xml
new file mode 100644
index 0000000..31fb650
--- /dev/null
+++ b/tests/rdfa11/0271.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" about="http://www.example.org/">
+<head property="rdfs:comment" content="This is an RDFa test">
+ <title>Test 0269</title>
+</head>
+<body>
+ <p> </p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0272.out b/tests/rdfa11/0272.out
new file mode 100644
index 0000000..1eb3cc2
--- /dev/null
+++ b/tests/rdfa11/0272.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0272.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "2012-03-18Z"^^<http://www.w3.org/2001/XMLSchema#date> .
diff --git a/tests/rdfa11/0272.xml b/tests/rdfa11/0272.xml
new file mode 100644
index 0000000..168ee57
--- /dev/null
+++ b/tests/rdfa11/0272.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0272</title>
+</head>
+<body>
+ <time property="rdf:value" datetime="2012-03-18Z">18 March 2012</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0273.out b/tests/rdfa11/0273.out
new file mode 100644
index 0000000..35014a6
--- /dev/null
+++ b/tests/rdfa11/0273.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0273.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#time> .
diff --git a/tests/rdfa11/0273.xml b/tests/rdfa11/0273.xml
new file mode 100644
index 0000000..277dfe2
--- /dev/null
+++ b/tests/rdfa11/0273.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0273</title>
+</head>
+<body>
+ <time property="rdf:value" datetime="00:00:00Z">midnight</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0274.out b/tests/rdfa11/0274.out
new file mode 100644
index 0000000..6f6a5ad
--- /dev/null
+++ b/tests/rdfa11/0274.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0274.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "2012-03-18T00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
diff --git a/tests/rdfa11/0274.xml b/tests/rdfa11/0274.xml
new file mode 100644
index 0000000..3099d07
--- /dev/null
+++ b/tests/rdfa11/0274.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0274</title>
+</head>
+<body>
+ <time property="rdf:value" datetime="2012-03-18T00:00:00Z">18 March 2012 at midnight</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0275.out b/tests/rdfa11/0275.out
new file mode 100644
index 0000000..6660553
--- /dev/null
+++ b/tests/rdfa11/0275.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0275.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "2012-03-18Z"^^<http://www.w3.org/2001/XMLSchema#date> .
diff --git a/tests/rdfa11/0275.xml b/tests/rdfa11/0275.xml
new file mode 100644
index 0000000..a92ad76
--- /dev/null
+++ b/tests/rdfa11/0275.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0275</title>
+</head>
+<body>
+ <time property="rdf:value">2012-03-18Z</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0276.out b/tests/rdfa11/0276.out
new file mode 100644
index 0000000..72aa674
--- /dev/null
+++ b/tests/rdfa11/0276.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0276.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#time> .
diff --git a/tests/rdfa11/0276.xml b/tests/rdfa11/0276.xml
new file mode 100644
index 0000000..8063bd9
--- /dev/null
+++ b/tests/rdfa11/0276.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0275</title>
+</head>
+<body>
+ <time property="rdf:value">00:00:00Z</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0277.out b/tests/rdfa11/0277.out
new file mode 100644
index 0000000..4f793d1
--- /dev/null
+++ b/tests/rdfa11/0277.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0277.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "2012-03-18T00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
diff --git a/tests/rdfa11/0277.xml b/tests/rdfa11/0277.xml
new file mode 100644
index 0000000..cade4c0
--- /dev/null
+++ b/tests/rdfa11/0277.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0277</title>
+</head>
+<body>
+ <time property="rdf:value">2012-03-18T00:00:00Z</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0278.out b/tests/rdfa11/0278.out
new file mode 100644
index 0000000..6ea4327
--- /dev/null
+++ b/tests/rdfa11/0278.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0278.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "2012-03-18"^^<http://www.w3.org/2001/XMLSchema#date> .
diff --git a/tests/rdfa11/0278.xml b/tests/rdfa11/0278.xml
new file mode 100644
index 0000000..c91f300
--- /dev/null
+++ b/tests/rdfa11/0278.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0278</title>
+</head>
+<body>
+ <time property="rdf:value" datetime="2012-03-18" content="not this">18 March 2012</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0279.out b/tests/rdfa11/0279.out
new file mode 100644
index 0000000..82f88a3
--- /dev/null
+++ b/tests/rdfa11/0279.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0279.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "2012-03-18T00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#date> .
diff --git a/tests/rdfa11/0279.xml b/tests/rdfa11/0279.xml
new file mode 100644
index 0000000..74f0583
--- /dev/null
+++ b/tests/rdfa11/0279.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0279</title>
+</head>
+<body>
+ <time property="rdf:value" datetime="2012-03-18T00:00:00Z" datatype="xsd:date">18 March 2012 at midnight</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0280.out b/tests/rdfa11/0280.out
new file mode 100644
index 0000000..04a8d02
--- /dev/null
+++ b/tests/rdfa11/0280.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0280.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "P2011Y06M28DT00H00M00S"^^<http://www.w3.org/2001/XMLSchema#duration> .
diff --git a/tests/rdfa11/0280.xml b/tests/rdfa11/0280.xml
new file mode 100644
index 0000000..9ed1333
--- /dev/null
+++ b/tests/rdfa11/0280.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0280</title>
+</head>
+<body>
+ <time property="rdf:value" datetime="P2011Y06M28DT00H00M00S">2011 years 6 months 28 days</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0281.out b/tests/rdfa11/0281.out
new file mode 100644
index 0000000..ebd60c6
--- /dev/null
+++ b/tests/rdfa11/0281.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0281.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "2012"^^<http://www.w3.org/2001/XMLSchema#gYear> .
diff --git a/tests/rdfa11/0281.xml b/tests/rdfa11/0281.xml
new file mode 100644
index 0000000..98cd8d3
--- /dev/null
+++ b/tests/rdfa11/0281.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0281</title>
+</head>
+<body>
+ <time property="rdf:value" datetime="2012">Two Thousand Twelve</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0282.out b/tests/rdfa11/0282.out
new file mode 100644
index 0000000..e47e6c3
--- /dev/null
+++ b/tests/rdfa11/0282.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0282.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "2012-03"^^<http://www.w3.org/2001/XMLSchema#gYearMonth> .
diff --git a/tests/rdfa11/0282.xml b/tests/rdfa11/0282.xml
new file mode 100644
index 0000000..6cde4e4
--- /dev/null
+++ b/tests/rdfa11/0282.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0282</title>
+</head>
+<body>
+ <time property="rdf:value" datetime="2012-03">March, Two Thousand Twelve</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0283.out b/tests/rdfa11/0283.out
new file mode 100644
index 0000000..d527cad
--- /dev/null
+++ b/tests/rdfa11/0283.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0283.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> " 2012-03-18Z" .
diff --git a/tests/rdfa11/0283.xml b/tests/rdfa11/0283.xml
new file mode 100644
index 0000000..52e08ba
--- /dev/null
+++ b/tests/rdfa11/0283.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0283</title>
+</head>
+<body>
+ <time property="rdf:value"> 2012-03-18Z</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0284.out b/tests/rdfa11/0284.out
new file mode 100644
index 0000000..61513b0
--- /dev/null
+++ b/tests/rdfa11/0284.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0284.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> " 2012-03-18Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
diff --git a/tests/rdfa11/0284.xml b/tests/rdfa11/0284.xml
new file mode 100644
index 0000000..c2fc319
--- /dev/null
+++ b/tests/rdfa11/0284.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0284</title>
+</head>
+<body>
+ <time property="rdf:value" datatype="xsd:dateTime"> 2012-03-18Z</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0285.out b/tests/rdfa11/0285.out
new file mode 100644
index 0000000..dee2e36
--- /dev/null
+++ b/tests/rdfa11/0285.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0285.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "D-Day"@en .
diff --git a/tests/rdfa11/0285.xml b/tests/rdfa11/0285.xml
new file mode 100644
index 0000000..6f46e6b
--- /dev/null
+++ b/tests/rdfa11/0285.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0285</title>
+</head>
+<body>
+ <time property="rdf:value" lang="en" datetime="D-Day">
+ Non matching lexical value with language.
+ </time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0286.out b/tests/rdfa11/0286.out
new file mode 100644
index 0000000..4dfb778
--- /dev/null
+++ b/tests/rdfa11/0286.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0286.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "veni, vidi, vici"@lat .
diff --git a/tests/rdfa11/0286.xml b/tests/rdfa11/0286.xml
new file mode 100644
index 0000000..316eda6
--- /dev/null
+++ b/tests/rdfa11/0286.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0286</title>
+</head>
+<body>
+ <data property="rdf:value" lang="lat" value="veni, vidi, vici" content="I came, I saw, I conquered">
+ @value overrides @content in the 'data' element.
+ </data>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0287.out b/tests/rdfa11/0287.out
new file mode 100644
index 0000000..5cfa27e
--- /dev/null
+++ b/tests/rdfa11/0287.out
@@ -0,0 +1 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0287.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "2012-03-18T00:00:00-08:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
diff --git a/tests/rdfa11/0287.xml b/tests/rdfa11/0287.xml
new file mode 100644
index 0000000..3aa1bcb
--- /dev/null
+++ b/tests/rdfa11/0287.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0287</title>
+</head>
+<body>
+ <time property="rdf:value" datetime="2012-03-18T00:00:00-08:00">18 March 2012 at midnight in San Francisco</time>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0289.out b/tests/rdfa11/0289.out
new file mode 100644
index 0000000..62f3f64
--- /dev/null
+++ b/tests/rdfa11/0289.out
@@ -0,0 +1 @@
+<http://example.org/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "value" .
diff --git a/tests/rdfa11/0289.xml b/tests/rdfa11/0289.xml
new file mode 100644
index 0000000..1afbbc2
--- /dev/null
+++ b/tests/rdfa11/0289.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0289</title>
+</head>
+<body>
+ <h1>@href becomes subject when @property and @content are present</h1>
+ <a href="http://example.org/" property="rdf:value" content="value">ignored</a>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0290.out b/tests/rdfa11/0290.out
new file mode 100644
index 0000000..62f3f64
--- /dev/null
+++ b/tests/rdfa11/0290.out
@@ -0,0 +1 @@
+<http://example.org/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "value" .
diff --git a/tests/rdfa11/0290.xml b/tests/rdfa11/0290.xml
new file mode 100644
index 0000000..814f7ab
--- /dev/null
+++ b/tests/rdfa11/0290.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0290</title>
+</head>
+<body>
+ <h1>@href becomes subject when @property and @datatype are present</h1>
+ <a href="http://example.org/" property="rdf:value" datatype="">value</a>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0291.out b/tests/rdfa11/0291.out
new file mode 100644
index 0000000..678f4b7
--- /dev/null
+++ b/tests/rdfa11/0291.out
@@ -0,0 +1 @@
+<http://example.net/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "value" .
diff --git a/tests/rdfa11/0291.xml b/tests/rdfa11/0291.xml
new file mode 100644
index 0000000..2686ab9
--- /dev/null
+++ b/tests/rdfa11/0291.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<head>
+ <title>Test 0291</title>
+</head>
+<body>
+ <h1>@href as subject overridden by @about</h1>
+ <a about="http://example.net/" href="http://example.org/" property="rdf:value" content="value">ignored</a>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0292.out b/tests/rdfa11/0292.out
new file mode 100644
index 0000000..ca3f2fa
--- /dev/null
+++ b/tests/rdfa11/0292.out
@@ -0,0 +1,2 @@
+<http://example.net/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "value one" .
+<http://example.net/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "value two" .
diff --git a/tests/rdfa11/0292.xml b/tests/rdfa11/0292.xml
new file mode 100644
index 0000000..a67a671
--- /dev/null
+++ b/tests/rdfa11/0292.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<head>
+ <title>Test 0292</title>
+</head>
+<body>
+ <h1>@about overriding @href as subject is used as parent resource</h1>
+ <a about="http://example.net/" href="http://example.org/" property="rdf:value" content="value one">
+ <span property="rdf:value">value two</span>
+ </a>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0293.out b/tests/rdfa11/0293.out
new file mode 100644
index 0000000..9cfff38
--- /dev/null
+++ b/tests/rdfa11/0293.out
@@ -0,0 +1 @@
+<http://www.example.org> <http://www.example.org/column:test> "Test" .
diff --git a/tests/rdfa11/0293.xml b/tests/rdfa11/0293.xml
new file mode 100644
index 0000000..ba2622e
--- /dev/null
+++ b/tests/rdfa11/0293.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0293</title>
+</head>
+<body>
+ <h1>Testing the ':' character usage in a CURIE</h1>
+ <div prefix="ex: http://www.example.org/">
+ <p about="http://www.example.org" property="ex:column:test">Test</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0295.out b/tests/rdfa11/0295.out
new file mode 100644
index 0000000..3f09fe4
--- /dev/null
+++ b/tests/rdfa11/0295.out
@@ -0,0 +1,494 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/terms/creator> "Mark Birbeck" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/terms/creator> <http://www.blogger.com/profile/1109404> .
+<http://www.blogger.com/profile/1109404> <http://xmlns.com/foaf/0.1/img> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/terms/creator> <http://www.blogger.com/profile/1109404> .
+<http://www.blogger.com/profile/1109404> <http://xmlns.com/foaf/0.1/img> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/terms/title> "Portrait of Mark" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://creativecommons.org/ns#license> <http://creativecommons.org/licenses/by-nc-nd/2.5/> .
+<http://example.org/foo> <http://example.org/bar> "10"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:a <http://xmlns.com/foaf/0.1/name> "Manu Sporny" .
+_:a <http://xmlns.com/foaf/0.1/knows> _:b .
+_:b <http://xmlns.com/foaf/0.1/name> "Ralph Swick" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/terms/creator> <http://www.blogger.com/profile/1109404> .
+<mailto:manu.sporny@digitalbazaar.com> <http://xmlns.com/foaf/0.1/knows> <mailto:michael.hausenblas@joanneum.at> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/terms/creator> "Mark Birbeck" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> "Mark Birbeck" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> "Mark Birbeck" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#me> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#me> <http://xmlns.com/foaf/0.1/name> "Ben Adida" .
+<http://internet-apps.blogspot.com/> <http://purl.org/dc/terms/creator> "Mark Birbeck" .
+<http://internet-apps.blogspot.com/> <http://purl.org/dc/terms/creator> "Mark Birbeck" .
+<http://example.org/foo> <http://purl.org/dc/terms/creator> "Mark Birbeck"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://creativecommons.org/ns#license> <http://creativecommons.org/licenses/by-nc-nd/2.5/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#wtw> <http://purl.org/dc/terms/identifier> <urn:ISBN:0752820907> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#wtw> <http://purl.org/dc/terms/identifier> <urn:ISBN:0752820907> .
+_:bnode0 <http://xmlns.com/foaf/0.1/name> "Ben Adida" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> _:bnode0 .
+<http://sw-app.org/mic.xhtml#i> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/img/mic_2007_01.jpg> .
+<http://sw-app.org/mic.xhtml#i> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/img/mic_2006_03.jpg> .
+<http://sw-app.org/mic.xhtml#i> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/img/mic_2006_03.jpg> .
+<http://sw-app.org/mic.xhtml#i> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/mic.xhtml#photo> .
+<http://sw-app.org/img/mic_2007_01.jpg> <http://xmlns.com/foaf/0.1/depicts> <http://sw-app.org/mic.xhtml#i> .
+<http://sw-app.org/img/mic_2006_03.jpg> <http://xmlns.com/foaf/0.1/depicts> <http://sw-app.org/mic.xhtml#i> .
+<http://sw-app.org/img/mic_2006_03.jpg> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/alternate> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> .
+<http://sw-app.org/mic.xhtml#photo> <http://xmlns.com/foaf/0.1/depicts> <http://sw-app.org/mic.xhtml#i> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/img/mic_2007_01.jpg> .
+_:bnode3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://xmlns.com/foaf/0.1/maker> _:bnode3 .
+_:bnode3 <http://xmlns.com/foaf/0.1/name> "John Doe" .
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://xmlns.com/foaf/0.1/maker> <http://www.example.org/#me> .
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/name> "John Doe" .
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:bnode4 <http://xmlns.com/foaf/0.1/name> "John Doe" .
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/knows> _:bnode4 .
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/name> "John Doe" .
+_:bnode5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:bnode5 <http://xmlns.com/foaf/0.1/name> "John Doe" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://xmlns.com/foaf/0.1/topic> "John Doe" .
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/name> "John Doe" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> "Fabien Gandon" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/publisher> "Fabien Gandon" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> <http://www-sop.inria.fr/acacia/fabien/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/publisher> <http://www-sop.inria.fr/acacia/fabien/> .
+<http://www.example.org/#ben> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#mark> <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#mark> .
+<http://www.example.org/#mark> <http://xmlns.com/foaf/0.1/name> "Mark Birbeck" .
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#mark> .
+<http://www.example.org/#ivan> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#ivan> .
+_:bnode9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:bnode8 <http://xmlns.com/foaf/0.1/name> _:bnode9 .
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> _:bnode8 .
+_:bnode10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:bnode8 <http://xmlns.com/foaf/0.1/name> _:bnode10 .
+<http://www.example.org/#ben> <http://xmlns.com/foaf/0.1/knows> _:bnode8 .
+<http://www.example.org/#manu> <http://xmlns.com/foaf/0.1/name> "Manu Sporny" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> <http://www.example.org/#manu> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/publisher> <http://www.example.org/#manu> .
+<http://www.example.org/#fabien> <http://xmlns.com/foaf/0.1/name> "Fabien Gandon" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> <http://www.example.org/#fabien> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/publisher> <http://www.example.org/#fabien> .
+<http://www.example.org/#matsumoto-kimiko> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#matsumoto-kimiko> <http://xmlns.com/foaf/0.1/name> "\u677E\u672C \u540E\u5B50" .
+_:michael <http://xmlns.com/foaf/0.1/knows> <http://digitalbazaar.com/people/manu> .
+_:manu <http://xmlns.com/foaf/0.1/mbox> <mailto:manu.sporny@digitalbazaar.com> .
+_:manu <http://xmlns.com/foaf/0.1/knows> _:michael .
+_:michael <http://xmlns.com/foaf/0.1/mbox> <mailto:michael.hausenblas@joanneum.at> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0067.xml> <http://purl.org/dc/terms/title> "Test 0067" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0070.xml> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0069.xml> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://creativecommons.org/ns#license> <http://creativecommons.org/licenses/by-nd/3.0/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/faq> <http://purl.org/dc/terms/title> "Example FAQ" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/jane> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/jane> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://creativecommons.org/licenses/by-nd/3.0/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/alternate> <http://example.org/alternate> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/appendix> <http://example.org/appendix> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/bookmark> <http://example.org/bookmark> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/cite> <http://example.org/cite> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/chapter> <http://example.org/chapter> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/contents> <http://example.org/contents> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/copyright> <http://example.org/copyright> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/glossary> <http://example.org/glossary> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/help> <http://example.org/help> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/icon> <http://example.org/icon> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/index> <http://example.org/index> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/last> <http://example.org/last> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/license> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/meta> <http://example.org/meta> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/next> <http://example.org/next> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/p3pv1> <http://example.org/p3pv1> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/prev> <http://example.org/prev> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#role> <http://example.org/role> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/section> <http://example.org/section> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/subsection> <http://example.org/subsection> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/start> <http://example.org/start> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/stylesheet> <http://example.org/stylesheet> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/up> <http://example.org/up> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/alternate> <http://example.org/alternate> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/appendix> <http://example.org/appendix> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/bookmark> <http://example.org/bookmark> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/cite> <http://example.org/cite> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/chapter> <http://example.org/chapter> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/contents> <http://example.org/contents> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/copyright> <http://example.org/copyright> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/glossary> <http://example.org/glossary> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/help> <http://example.org/help> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/icon> <http://example.org/icon> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/index> <http://example.org/index> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/first> <http://example.org/first> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/last> <http://example.org/last> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/license> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/meta> <http://example.org/meta> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/next> <http://example.org/next> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/p3pv1> <http://example.org/p3pv1> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/prev> <http://example.org/prev> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://www.w3.org/1999/xhtml/vocab#role> <http://example.org/role> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/section> <http://example.org/section> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/subsection> <http://example.org/subsection> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/start> <http://example.org/start> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/stylesheet> <http://example.org/stylesheet> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0077.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/up> <http://example.org/up> .
+_:bnode12 <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode12 .
+_:bnode12 <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode12 .
+_:bnode13 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:bnode12 <http://xmlns.com/foaf/0.1/name> _:bnode13 .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode12 .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://www.ivan-herman.org/Ivan_Herman> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://www.w3.org/People/Berners-Lee/card#i> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
+_:bnode16 <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+_:bnode16 <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:bnode16 <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+_:bnode16 <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:bnode17 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:bnode16 <http://xmlns.com/foaf/0.1/name> _:bnode17 .
+_:bnode16 <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:bnode18 <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode18 .
+_:bnode18 <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:bnode18 <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode18 .
+_:bnode18 <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:bnode19 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:bnode18 <http://xmlns.com/foaf/0.1/name> _:bnode19 .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode18 .
+_:bnode18 <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:bnode20 <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode20 .
+_:bnode20 <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode20 .
+<http://danbri.org/foaf.rdf#danbri> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://danbri.org/foaf.rdf#danbri> <http://xmlns.com/foaf/0.1/name> "Dan Brickley" .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
+_:bnode21 <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode21 .
+_:bnode21 <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:bnode21 <http://xmlns.com/foaf/0.1/mailbox> <mailto:ivan@w3.org> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode21 .
+_:bnode21 <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+<http://danbri.org/foaf.rdf#danbri> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://danbri.org/foaf.rdf#danbri> <http://xmlns.com/foaf/0.1/name> "Dan Brickley" .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
+<http://danbri.org/foaf.rdf#danbri> <http://xmlns.com/foaf/0.1/knows> <http://www.example.org/#somebody> .
+_:bnode22 <http://xmlns.com/foaf/0.1/knows> <http://www.ivan-herman.org/Ivan_Herman> .
+_:bnode22 <http://xmlns.com/foaf/0.1/knows> <http://www.w3.org/People/Berners-Lee/card#i> .
+_:bnode22 <http://xmlns.com/foaf/0.1/knows> <http://danbri.org/foaf.rdf#danbri> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode22 .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#alternate> <http://example.org/alternate> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#appendix> <http://example.org/appendix> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#bookmark> <http://example.org/bookmark> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#cite> <http://example.org/cite> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#chapter> <http://example.org/chapter> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#contents> <http://example.org/contents> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#copyright> <http://example.org/copyright> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#glossary> <http://example.org/glossary> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#help> <http://example.org/help> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#icon> <http://example.org/icon> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#index> <http://example.org/index> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#first> <http://example.org/first> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#last> <http://example.org/last> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/license> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#meta> <http://example.org/meta> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/next> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#p3pv1> <http://example.org/p3pv1> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/prev> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#role> <http://example.org/role> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#section> <http://example.org/section> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#subsection> <http://example.org/subsection> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#start> <http://example.org/start> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#stylesheet> <http://example.org/stylesheet> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#up> <http://example.org/up> .
+_:bnode25 <http://xmlns.com/foaf/0.1/name> "Dan Brickley" .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode25 .
+_:bnode25 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.example.org/#somebody> <http://xmlns.com/foaf/0.1/knows> _:bnode25 .
+<http://example.org/example.png> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Image> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://creativecommons.org/licenses/by-nc-sa/2.0/> .
+_:human <http://www.w3.org/1999/xhtml/vocab#definition> "a bi-pedal primate" .
+_:human <http://www.w3.org/1999/xhtml/vocab#note> "confused animal" .
+_:human <http://www.w3.org/1999/xhtml/vocab#foo> "Milky Way" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> "Albert Einstein" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/title> "E = mc2: The Most Urgent Problem of Our Time"^^<http://example.org/XMLLiteral> .
+<http://www.cwi.nl/~steven/> <http://example.org/likes> "\n We put thirty spokes together and call it a wheel;\n But it is on the space where there is nothing that the usefulness of the wheel depends.\n We turn clay to make a vessel;\n But it is on the space where there is nothing that the usefulness of the vessel depends.\n We pierce doors and windows to make a house;\n And it is on these spaces where there is nothing that the usefulness of the house depends.\n Therefore just as we take advantage of what is, we should recognize the usefulness of what is not.\n\n Lao Tzu: Tao Te Ching" .
+_:bnode26 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "17" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#interfenestration> <http://example.org/size> _:bnode26 .
+_:bnode26 <http://example.org/unit> "character" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#interfenestration> <http://example.org/size> _:bnode26 .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> _:bnode27 .
+<http://example.org/node> <http://example.org/property> "\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03CC\n\u03AC\u03C3\u03C0\u03C1\u03BF \u03B4\u03B9\u03AC\u03C3\u03C4\u03B7\u03BC\u03B1\n"@el .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/title> "Test 0109" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#next> _:bnode29 .
+_:bnode31 <http://www.w3.org/1999/xhtml/vocab#next> _:bnode32 .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#next> _:bnode31 .
+<http://example.org/node> <http://example.org/property> "not an XML Literal,\nwhitespace preserved\n" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#a> <http://purl.org/dc/terms/title> "" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#b> <http://purl.org/dc/terms/title> "" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#index> <http://rdfa.info/test-suite/#> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#next> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0115.xml> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#up> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://creativecommons.org/ns#attributionURL> <http://rdfa.info/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase1> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase2> <http://example.org/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase3> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/...> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase4> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml?foo=bar../baz> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/vocabs/rdfa-test#cornerCase5> <http://rdfa.info/test-suite/test-cases/.../.htaccess> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://example.org/entity1> ">" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://example.org/entity2> "Ben & Co." .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://example.org/entity3> "@" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://example.org/entity4> "@" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/contributor> "Mark Birbeck" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/creator> "Ben" .
+<http://example.org/> <http://purl.org/dc/terms/title> "Example Website" .
+<http://www.w3.org/1999/xhtml/vocab#> <http://purl.org/dc/terms/title> "The XHTML Vocabulary Document" .
+<http://example.org/> <http://purl.org/dc/terms/title> "Test Case 0121" .
+<http://example.org/> <http://purl.org/dc/terms/contributor> "Shane McCarron" .
+<http://www.example.org/#article> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document> .
+<http://www.example.org/#article> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://rdfs.org/sioc/ns#Post> .
+<http://www.example.org/#article> <http://purl.org/dc/terms/title> "My article" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://example.org/test> "Test" .
+<http://example.org/jd> <http://www.w3.org/2006/vcard/ns#fn> "John Doe" .
+_:gregg <http://xmlns.com/foaf/0.1/name> "Gregg Kellogg" .
+_:manu <http://xmlns.com/foaf/0.1/mbox> <mailto:manu.sporny@digitalbazaar.com> .
+_:manu <http://xmlns.com/foaf/0.1/knows> _:gregg .
+_:gregg <http://xmlns.com/foaf/0.1/knows> _:manu .
+_:gregg <http://xmlns.com/foaf/0.1/mbox> <mailto:gregg@kellogg-assoc.com> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#this> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/Agent> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#this> <http://xmlns.com/foaf/0.1/name> "A particular agent" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#me> <http://www.w3.org/1999/xhtml/vocab#name> "Ivan Herman" .
+<http://www.example.org/software> <http://www.w3.org/1999/xhtml/vocab#license> <http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#this> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/Agent> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#this> <http://xmlns.com/foaf/0.1/name> "A particular agent" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#this> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/Agent> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#this> <http://xmlns.com/foaf/0.1/name> "A particular agent" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://xmlns.com/foaf/0.1/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://example.org/wrong/foaf/uri/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://xmlns.com/foaf/0.1/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://xmlns.com/foaf/0.1/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://www.example.org/vocab#> .
+<http://www.example.org/software> <http://www.example.org/vocab#license> <http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231> .
+<http://www.example.org/software> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/liCeNse> <http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231> .
+<http://www.example.org> <http://example.org/xmllit> "This is an XMLLiteral"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://www.example.org> <http://example.org/plainlit> "This is a plain literal" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/pred/name> "Gregg Kellogg" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/language> "Ruby" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/pred/rel> <http://kellogg-assoc.com/> .
+<http://github.org/gkellogg/rdf_context> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/pred/rev> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#mark> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/wrong/foaf/uri/Person> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#mark> <http://example.org/wrong/foaf/uri/firstName> "Mark" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#mark> <http://example.org/wrong/foaf/uri/surname> "Birbeck" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#mark> <http://example.org/wrong/foaf/uri/name> "<span xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:air=\"http://www.daml.org/2001/10/html/airport-ont#\" xmlns:bio=\"http://vocab.org/bio/0.1/\" xmlns:cal=\"http://www.w3.org/2002/12/cal/icaltzd#\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:cert=\"http://www.w3.org/ns/auth/cert#\" xmlns:contact=\"http://www.w3.org/2000/10/swap/pim/contact#\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:earl=\"http://www.w3.org/ns/earl#\" xmlns:ex=\"http://example.org/\" xmlns:example=\"http://example.org/\" xmlns:foaf=\"http://www.example.com/wrong/foaf/uri\" xmlns:google=\"http://rdf.data-vocabulary.org/#\" xmlns:ical=\"http://www.w3.org/2002/12/cal/icaltzd#\" xmlns:openid=\"http://xmlns.openid.net/auth#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:rdfatest=\"http://rdfa.info/vocabs/rdfa-test#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:rel=\"http://vocab.org/relationship/\" xmlns:rsa=\"http://www.w3.org/ns/auth/rsa#\" xmlns:rss=\"http://web.resource.org/rss/1.0/\" xmlns:sioc=\"http://rdfs.org/sioc/ns#\" xmlns:v=\"http://www.w3.org/2006/vcard/ns#\" xmlns:wot=\"http://xmlns.com/wot/0.1/\" xmlns:xhv=\"http://www.w3.org/1999/xhtml/vocab#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\" property=\"foaf:firstName\">Mark</span> <span xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:air=\"http://www.daml.org/2001/10/html/airport-ont#\" xmlns:bio=\"http://vocab.org/bio/0.1/\" xmlns:cal=\"http://www.w3.org/2002/12/cal/icaltzd#\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:cert=\"http://www.w3.org/ns/auth/cert#\" xmlns:contact=\"http://www.w3.org/2000/10/swap/pim/contact#\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:earl=\"http://www.w3.org/ns/earl#\" xmlns:ex=\"http://example.org/\" xmlns:example=\"http://example.org/\" xmlns:foaf=\"http://www.example.com/wrong/foaf/uri\" xmlns:google=\"http://rdf.data-vocabulary.org/#\" xmlns:ical=\"http://www.w3.org/2002/12/cal/icaltzd#\" xmlns:openid=\"http://xmlns.openid.net/auth#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:rdfatest=\"http://rdfa.info/vocabs/rdfa-test#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:rel=\"http://vocab.org/relationship/\" xmlns:rsa=\"http://www.w3.org/ns/auth/rsa#\" xmlns:rss=\"http://web.resource.org/rss/1.0/\" xmlns:sioc=\"http://rdfs.org/sioc/ns#\" xmlns:v=\"http://www.w3.org/2006/vcard/ns#\" xmlns:wot=\"http://xmlns.com/wot/0.1/\" xmlns:xhv=\"http://www.w3.org/1999/xhtml/vocab#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\" property=\"foaf:surname\">Birbeck</span>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://www.w3.org/2001/XMLSchema#maxExclusive> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#event1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/12/cal/icaltzd#Vevent> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#summary> "Weekend off in Iona" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#dtstart> "2006-10-21"^^<http://www.w3.org/2001/XMLSchema#date> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#dtend> "2006-10-23"^^<http://www.w3.org/2001/XMLSchema#date> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#url> <http://freetime.example.org/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#event1> <http://www.w3.org/2002/12/cal/icaltzd#location> "Iona, UK" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://xmlns.com/foaf/0.1/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#me> <http://xmlns.com/foaf/0.1/name> "Ivan Herman" .
+<http://www.example.org/> <http://purl.org/dc/terms/title> "E = mc2: The Most Urgent Problem of Our Time" .
+<http://www.example.org/> <http://purl.org/dc/terms/title> "E = mc2: The Most Urgent Problem of Our Time" .
+<http://www.ivan-herman.net/foaf#me> <http://xmlns.com/foaf/0.1/name> "Iv\u00E1n" .
+<http://www.ivan-herman.net/foaf#me> <http://xmlns.com/foaf/0.1/name> "Iv\u00E1n" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://xmlns.com/foaf/0.1/> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#me> <http://xmlns.com/foaf/0.1/name> "Gregg Kellogg" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:bnode36 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnode36 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode36 .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> .
+_:bnode37 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> .
+_:bnode37 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode37 .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> .
+_:bnode38 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnode38 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:bnode39 .
+_:bnode39 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> .
+_:bnode39 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode38 .
+_:bnode39 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnode39 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:bnode40 .
+_:bnode40 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Bar" .
+_:bnode40 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode39 .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Baz" .
+_:bnode40 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnode40 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:bnode41 .
+_:bnode41 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Bar" .
+_:bnode41 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode40 .
+_:bnode41 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> .
+_:bnode41 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:bnode42 .
+_:bnode42 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/bar> .
+_:bnode42 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode41 .
+_:bnode42 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnode42 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode42 .
+_:bnode43 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Bar" .
+_:bnode43 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode43 .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#inlist> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/res> .
+_:bnode45 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Bar" .
+_:bnode45 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/res> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode45 .
+_:bnode44 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnode44 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode44 .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#inlist> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/res> .
+_:bnode48 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Bar" .
+_:bnode48 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/res> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode48 .
+_:bnode46 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "Foo" .
+_:bnode46 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:bnode46 .
+<http://sw-app.org/img/mic_2006_03.jpg> <http://www.w3.org/1999/xhtml/vocab#alternate> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://xmlns.com/foaf/0.1/img> <http://sw-app.org/img/mic_2007_01.jpg> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://creativecommons.org/licenses/by-nc-sa/2.0/> .
+<http://example.org/example.png> <http://www.w3.org/1999/xhtml/vocab#license> <http://creativecommons.org/licenses/by-nc-sa/2.0/> .
+_:bnode50 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://xmlns.com/foaf/0.1/maker> _:bnode50 .
+_:bnode50 <http://xmlns.com/foaf/0.1/name> "John Doe" .
+<http://www.example.org/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://xmlns.com/foaf/0.1/maker> <http://www.example.org/#me> .
+<http://www.example.org/#me> <http://xmlns.com/foaf/0.1/name> "John Doe" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2007/05/powder-s#describedby> <http://example.org/describedby> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#license> <http://example.org/license> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#role> <http://example.org/role> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/title> "rdfagraph" .
+<http://example.org/node> <http://example.org/property> "\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03CC\n\u03AC\u03C3\u03C0\u03C1\u03BF \u03B4\u03B9\u03AC\u03C3\u03C4\u03B7\u03BC\u03B1\n"@el .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml#a> <http://purl.org/dc/terms/title> "" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/ns/earl#testcase> _:test .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2003/g/data-view#> "GRDDL" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/ns/ma-ont#> "MA" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2002/07/owl#> "OWL" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "RDF" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/ns/rdfa#> "RDFa" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2000/01/rdf-schema#> "RDFS" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2007/rif#> "RIF" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2004/02/skos/core#> "SKOS" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2008/05/skos-xl#> "SKOS-XL" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2007/05/powder#> "WDR" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfs.org/ns/void#> "VOID" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2007/05/powder-s#> "WDRS" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#> "XHV" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/XML/1998/namespace> "XML" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2001/XMLSchema#> "XSD" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://creativecommons.org/ns#> "CC" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://commontag.org/ns#> "CTAG" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/> "DC" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/> "DCTERMS" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://xmlns.com/foaf/0.1/> "FOAF" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/goodrelations/v1#> "GR" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2002/12/cal/icaltzd#> "ICAL" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://ogp.me/ns#> "OG" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/stuff/rev#> "REV" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfs.org/sioc/ns#> "SIOC" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2006/vcard/ns#> "V" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2006/vcard/ns#> "VCARD" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://schema.org/> "Schema" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2007/05/powder-s#describedby> "DescribedBy" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#license> "License" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#role> "Role" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/alternate> "alternate" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/appendix> "appendix" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/cite> "cite" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/bookmark> "bookmark" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/contents> "contents" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/chapter> "chapter" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/copyright> "copyright" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/first> "first" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/glossary> "glossary" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/help> "help" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/icon> "icon" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/index> "index" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/last> "last" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#license> "license" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/meta> "meta" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/next> "next" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/prev> "prev" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/previous> "previous" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/section> "section" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/start> "start" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/stylesheet> "stylesheet" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/subsection> "subsection" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/top> "top" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/up> "up" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/p3pv1> "p3pv1" .
+<http://www.example.org> <http://example.org/xmllit> "This is\nan XMLLiteral"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/photo1.jpg> <http://purl.org/dc/terms/creator> "Mark Birbeck" .
+<http://www.ivan-herman.net/foaf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.w3.org/Person/Ivan#me> <http://www.w3.org/2002/07/owl#sameAs> <http://www.ivan-herman.net/foaf#me> .
+<http://www.ivan-herman.net/foaf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://www.w3.org/Person/Ivan#me> <http://www.w3.org/2002/07/owl#sameAs> <http://www.ivan-herman.net/foaf#me> .
+<http://www.ivan-herman.net/Images/me2003-small.png> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Image> .
+<http://www.ivan-herman.net/foaf#me> <http://xmlns.com/foaf/0.1/depiction> <http://www.ivan-herman.net/Images/me2003-small.png> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "18 March 2012" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "midnight" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "18 March 2012 at midnight" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "2012-03-18Z" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "00:00:00Z" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "2012-03-18T00:00:00Z" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "not this" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "18 March 2012 at midnight"^^<http://www.w3.org/2001/XMLSchema#date> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "2011 years 6 months 28 days" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "Two Thousand Twelve" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "March, Two Thousand Twelve" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> " 2012-03-18Z" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> " 2012-03-18Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "\n Non matching lexical value with language.\n "@en .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "I came, I saw, I conquered"@lat .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "18 March 2012 at midnight in San Francisco" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "" .
+<http://example.org/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "value" .
+<http://example.org/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "value" .
+<http://example.net/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "value" .
+<http://example.net/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "value two" .
+<http://example.net/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "value one" .
+<http://www.example.org> <http://www.example.org/column:test> "Test" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2003/g/data-view#> "GRDDL" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/ns/ma-ont#> "MA" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2002/07/owl#> "OWL" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "RDF" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/ns/rdfa#> "RDFa" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2000/01/rdf-schema#> "RDFS" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2007/rif#> "RIF" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2004/02/skos/core#> "SKOS" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2008/05/skos-xl#> "SKOS-XL" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2007/05/powder#> "WDR" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfs.org/ns/void#> "VOID" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2007/05/powder-s#> "WDRS" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/1999/xhtml/vocab#> "XHV" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/XML/1998/namespace> "XML" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2001/XMLSchema#> "XSD" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://creativecommons.org/ns#> "CC" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://commontag.org/ns#> "CTAG" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/> "DC" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/dc/terms/> "DCTERMS" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://xmlns.com/foaf/0.1/> "FOAF" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/goodrelations/v1#> "GR" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2002/12/cal/icaltzd#> "ICAL" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://ogp.me/ns#> "OG" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://purl.org/stuff/rev#> "REV" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://rdfs.org/sioc/ns#> "SIOC" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2006/vcard/ns#> "V" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2006/vcard/ns#> "VCARD" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://schema.org/> "Schema" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0295.xml> <http://www.w3.org/2007/05/powder-s#describedby> "DescribedBy" .
diff --git a/tests/rdfa11/0295.xml b/tests/rdfa11/0295.xml
new file mode 100644
index 0000000..ab34129
--- /dev/null
+++ b/tests/rdfa11/0295.xml
@@ -0,0 +1,930 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:air="http://www.daml.org/2001/10/html/airport-ont#"
+xmlns:bio="http://vocab.org/bio/0.1/"
+xmlns:cal="http://www.w3.org/2002/12/cal/icaltzd#"
+xmlns:cc="http://creativecommons.org/ns#"
+xmlns:cert="http://www.w3.org/ns/auth/cert#"
+xmlns:contact="http://www.w3.org/2000/10/swap/pim/contact#"
+xmlns:dc="http://purl.org/dc/terms/"
+xmlns:dct="http://purl.org/dc/terms/"
+xmlns:earl="http://www.w3.org/ns/earl#"
+xmlns:example="http://example.org/"
+xmlns:ex="http://example.org/"
+xmlns:foaf="http://xmlns.com/foaf/0.1/"
+xmlns:google="http://rdf.data-vocabulary.org/#"
+xmlns:ical="http://www.w3.org/2002/12/cal/icaltzd#"
+xmlns:openid="http://xmlns.openid.net/auth#"
+xmlns:owl="http://www.w3.org/2002/07/owl#"
+xmlns:rdfatest="http://rdfa.info/vocabs/rdfa-test#"
+xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+xmlns:rel="http://vocab.org/relationship/"
+xmlns:rsa="http://www.w3.org/ns/auth/rsa#"
+xmlns:rss="http://web.resource.org/rss/1.0/"
+xmlns:sioc="http://rdfs.org/sioc/ns#"
+xmlns:v="http://www.w3.org/2006/vcard/ns#"
+xmlns:wot="http://xmlns.com/wot/0.1/"
+xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
+<head>
+ <title>RDFa 1.1 Benchmark File #1</title>
+</head>
+<body>
+ <p>This photo was taken by <span class="author" about="photo1.jpg" property="dc:creator">Mark Birbeck</span>.</p>
+ <p>
+ This photo was taken by
+ <a about="photo1.jpg" rel="dc:creator" rev="foaf:img"
+ href="http://www.blogger.com/profile/1109404">Mark Birbeck</a>.
+ </p>
+ <p>This photo was taken by
+ <a about="photo1.jpg" property="dc:title"
+ content="Portrait of Mark" rel="dc:creator"
+ rev="foaf:img" href="http://www.blogger.com/profile/1109404">Mark Birbeck</a>.
+ </p>
+ <p>This document is licensed under a
+ <a about="" rel="cc:license"
+ href="http://creativecommons.org/licenses/by-nc-nd/2.5/">
+ Creative Commons
+ </a>.
+ </p>
+ <p></p>
+ <p></p>
+ <p></p>
+ <p></p>
+ <p>
+ <span about="http://example.org/foo"
+ property="ex:bar" content="10" datatype="xsd:integer">ten</span>
+ </p>
+ <p></p>
+ <p>
+ <span about="[_:a]" property="foaf:name">Manu Sporny</span>
+ <span about="[_:a]" rel="foaf:knows"
+resource="[_:b]">knows</span>
+ <span about="[_:b]" property="foaf:name">Ralph Swick</span>.
+ </p>
+ <p>
+ This photo was taken by
+ <a about="photo1.jpg" rel="dc:creator"
+ href="http://www.blogger.com/profile/1109404">Mark Birbeck</a>.
+ </p>
+ <div about="mailto:manu.sporny@digitalbazaar.com"
+ rel="foaf:knows" href="mailto:michael.hausenblas@joanneum.at"></div>
+ <div about="photo1.jpg">
+ <span class="attribution-line">this photo was taken by
+ <span property="dc:creator">Mark Birbeck</span>
+ </span>
+ </div>
+ <div>
+ <span class="attribution-line">this photo was taken by
+ <span property="dc:creator">Mark Birbeck</span>
+ </span>
+ </div>
+ <div id="photo1">
+ This photo was taken by
+ <span property="dc:creator">Mark Birbeck</span>
+ </div>
+ <p>
+ This paper was written by
+ <span rel="dc:creator" resource="#me">
+ <span property="foaf:name">Ben Adida</span>.
+ </span>
+ </p>
+ <p>
+ <span about="http://internet-apps.blogspot.com/"
+ property="dc:creator" content="Mark Birbeck" />
+ </p>
+ <p>
+ <span about="http://internet-apps.blogspot.com/"
+ property="dc:creator" content="Mark Birbeck">Mark B.
+ </span>
+ </p>
+ <p>
+ <span about="http://example.org/foo"
+ property="dc:creator" datatype="xsd:string"><b>M</b>ark <b>B</b>irbeck</span>.
+ </p>
+ <p>This document is licensed under a
+ <a rel="cc:license"
+ href="http://creativecommons.org/licenses/by-nc-nd/2.5/">
+ Creative Commons License
+ </a>.
+ </p>
+ <p about="#wtw">
+ The book <b>Weaving the Web</b> (hardcover) has the ISBN
+ <span rel="dc:identifier" resource="urn:ISBN:0752820907">0752820907</span>.
+ </p>
+ <p about="#wtw">
+ The book <b>Weaving the Web</b> (hardcover) has the ISBN
+ <a rel="dc:identifier" resource="urn:ISBN:0752820907"
+ href="http://www.amazon.com/Weaving-Web-Tim-Berners-Lee/dp/0752820907">0752820907</a>.
+ </p>
+ <p>
+ This paper was written by
+ <span rel="dc:creator">
+ <span property="foaf:name">Ben Adida</span>.
+ </span>
+ </p>
+ <div about="http://sw-app.org/mic.xhtml#i" rel="foaf:img">
+ <img src="http://sw-app.org/img/mic_2007_01.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ href="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ resource="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ href="http://sw-app.org/img/mic_2006_03.jpg"
+ resource="http://sw-app.org/mic.xhtml#photo"
+ alt="A photo depicting Michael" />
+ </div>
+ <div about="http://sw-app.org/mic.xhtml#i" rev="foaf:depicts">
+ <img src="http://sw-app.org/img/mic_2007_01.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rev="foaf:depicts"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ href="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ <div>
+ <img src="http://sw-app.org/img/mic_2007_01.jpg"
+ rev="alternate"
+ resource="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ <div>
+ <img about="http://sw-app.org/mic.xhtml#i"
+ rev="foaf:depicts"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ href="http://sw-app.org/img/mic_2006_03.jpg"
+ resource="http://sw-app.org/mic.xhtml#photo"
+ alt="A photo depicting Michael" />
+ </div>
+ <div>
+ <img rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ <div rel="foaf:maker" typeof="foaf:Document">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ <div rel="foaf:maker" typeof="foaf:Document" resource="http://www.example.org/#me">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ <div about="http://www.example.org/#me" rel="foaf:knows" typeof="foaf:Person">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ <div about="http://www.example.org/#me" typeof="foaf:Person">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ <div typeof="foaf:Person">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ <p about="" typeof="foaf:Document" property="foaf:topic">John Doe</p>
+ <p typeof="foaf:Person" resource="http://www.example.org/#me">
+ John Doe
+ </p>
+ <p typeof="foaf:Person" resource="http://www.example.org/#me">
+ <span property="foaf:name">John Doe</span>
+ </p>
+ <p>
+ This document was authored and published by
+ <span about="" property="dc:creator dc:publisher">Fabien Gandon</span>.
+ </p>
+ <p>
+ This document was authored and published by
+ <a about="" rel="dc:creator dc:publisher" href="http://www-sop.inria.fr/acacia/fabien/">Fabien Gandon</a>.
+ </p>
+ <div about="http://www.example.org/#ben" typeof="foaf:Person" rel="foaf:knows">
+ <p about="http://www.example.org/#mark" property="foaf:name">Mark Birbeck</p>
+ </div>
+ <div about="http://www.example.org/#ben" rel="foaf:knows">
+ <p about="http://www.example.org/#mark" property="foaf:name">Mark Birbeck</p>
+ <p about="http://www.example.org/#ivan" property="foaf:name">Ivan Herman</p>
+ </div>
+ <div about="http://www.example.org/#ben" rel="foaf:knows">
+ <p typeof="foaf:Person" property="foaf:name">Mark Birbeck</p>
+ <p typeof="foaf:Person" property="foaf:name">Ivan Herman</p>
+ </div>
+ <p>This document was authored and published by:</p>
+ <ul rel="dc:creator dc:publisher">
+ <li about="http://www.example.org/#manu" property="foaf:name">Manu Sporny</li>
+ <li about="http://www.example.org/#fabien" property="foaf:name">Fabien Gandon</li>
+ </ul>
+ <div about="http://www.example.org/#matsumoto-kimiko"
+ typeof="foaf:Person">
+ <p property="foaf:name">æ¾æœ¬ åŽå­</p>
+ </div>
+ <p>This is the first chapter in a series of chapters.</p>
+ <p>This is unit test #62. The next unit test is #63.</p>
+ <p>This is the 63<sup>rd</sup> test. The next test is #64.</p>
+ <p about="[_:michael]">Michael knows
+ <a rel="foaf:knows" href="http://digitalbazaar.com/people/manu">Manu</a>.
+ </p>
+ <div about="[_:manu]">
+ Manu Sporny can be reached via
+ <a rel="foaf:mbox" href="mailto:manu.sporny@digitalbazaar.com">email</a>.
+ <span rel="foaf:knows" resource="[_:michael]">He knows Michael.</span>
+ </div>
+
+ <div about="[_:michael]">
+ Michael can be reached via
+ <a rel="foaf:mbox" href="mailto:michael.hausenblas@joanneum.at">email</a>.
+ </div>
+ <p>This is test #66.</p>
+ <p>This is test #67.</p>
+ <p about="0067.xml">
+ The previous test was
+ <span property="dc:title">Test 0067</span>.
+ </p>
+ <p>The next test will be
+ <a about="" rel="xhv:next" href="0070.xml">Test 0070</a>.
+ </p>
+ <p>The previous test was
+ <span about="" rel="xhv:prev" resource="0069.xml">Test 0069</span>.
+ </p>
+ <p>This page is under a Creative Commons
+ <a rel="cc:license"
+ href="http://creativecommons.org/licenses/by-nd/3.0/">
+ Attribution-No Derivatives 3.0 license</a>.
+ </p>
+ <p about="faq">
+ Learn more by reading the example.org
+ <span property="dc:title">Example FAQ</span>.
+ </p>
+ <p>
+ This article was written by
+ <span rel="dc:creator" resource="jane">Jane</span>.
+ </p>
+ <p>
+ This article was written by
+ <a rel="dc:creator" href="jane">Jane</a>.
+ </p>
+ <p>
+ This page is under a Creative Commons
+ <a rel="license" href="http://creativecommons.org/licenses/by-nd/3.0/">Attribution-No Derivatives 3.0 license</a>.
+ </p>
+ <p>
+ <a rel="alternate" href="http://example.org/alternate">alternate</a>
+ <a rel="appendix" href="http://example.org/appendix">appendix</a>
+ <a rel="bookmark" href="http://example.org/bookmark">bookmark</a>
+ <a rel="cite" href="http://example.org/cite">cite</a>
+ <a rel="chapter" href="http://example.org/chapter">chapter</a>
+ <a rel="contents" href="http://example.org/contents">contents</a>
+ <a rel="copyright" href="http://example.org/copyright">copyright</a>
+ <a rel="glossary" href="http://example.org/glossary">glossary</a>
+ <a rel="help" href="http://example.org/help">help</a>
+ <a rel="icon" href="http://example.org/icon">icon</a>
+ <a rel="index" href="http://example.org/index">index</a>
+ <a rel="last" href="http://example.org/last">last</a>
+ <a rel="license" href="http://example.org/license">license</a>
+ <a rel="meta" href="http://example.org/meta">meta</a>
+ <a rel="next" href="http://example.org/next">next</a>
+ <a rel="p3pv1" href="http://example.org/p3pv1">p3pv1</a>
+ <a rel="prev" href="http://example.org/prev">prev</a>
+ <a rel="role" href="http://example.org/role">role</a>
+ <a rel="section" href="http://example.org/section">section</a>
+ <a rel="subsection" href="http://example.org/subsection">subsection</a>
+ <a rel="start" href="http://example.org/start">start</a>
+ <a rel="stylesheet" href="http://example.org/stylesheet">stylesheet</a>
+ <a rel="up" href="http://example.org/up">up</a>
+ </p>
+ <p>
+ <span about="http://example.org/alternate" rev="alternate"
+ href="0077.xml">alternate</span>
+ <span about="http://example.org/appendix" rev="appendix"
+ href="0077.xml">appendix</span>
+ <span about="http://example.org/bookmark" rev="bookmark"
+ href="0077.xml">bookmark</span>
+ <span about="http://example.org/cite" rev="cite"
+ href="0077.xml">cite</span>
+ <span about="http://example.org/chapter" rev="chapter"
+ href="0077.xml">chapter</span>
+ <span about="http://example.org/contents" rev="contents"
+ href="0077.xml">contents</span>
+ <span about="http://example.org/copyright" rev="copyright"
+ href="0077.xml">copyright</span>
+ <span about="http://example.org/glossary" rev="glossary"
+ href="0077.xml">glossary</span>
+ <span about="http://example.org/help" rev="help"
+ href="0077.xml">help</span>
+ <span about="http://example.org/icon" rev="icon"
+ href="0077.xml">icon</span>
+ <span about="http://example.org/index" rev="index"
+ href="0077.xml">index</span>
+ <span about="http://example.org/first" rev="first"
+ href="0077.xml">first</span>
+ <span about="http://example.org/last" rev="last"
+ href="0077.xml">last</span>
+ <span about="http://example.org/license" rev="license"
+ href="0077.xml">license</span>
+ <span about="http://example.org/meta" rev="meta"
+ href="0077.xml">meta</span>
+ <span about="http://example.org/next" rev="next"
+ href="0077.xml">next</span>
+ <span about="http://example.org/p3pv1" rev="p3pv1"
+ href="0077.xml">p3pv1</span>
+ <span about="http://example.org/prev" rev="prev"
+ href="0077.xml">prev</span>
+ <span about="http://example.org/role" rev="role"
+ href="0077.xml">role</span>
+ <span about="http://example.org/section" rev="section"
+ href="0077.xml">section</span>
+ <span about="http://example.org/subsection" rev="subsection"
+ href="0077.xml">subsection</span>
+ <span about="http://example.org/start" rev="start"
+ href="0077.xml">start</span>
+ <span about="http://example.org/stylesheet" rev="stylesheet"
+ href="0077.xml">stylesheet</span>
+ <span about="http://example.org/up" rev="up"
+ href="0077.xml">up</span>
+ </p>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p typeof="foaf:Person" property="foaf:name">Mark Birbeck</p>
+ </div>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <p resource="http://www.ivan-herman.org/Ivan_Herman">Ivan Herman</p>
+ <p href="http://www.w3.org/People/Berners-Lee/card#i">Tim Berners Lee</p>
+ <p resource="http://danbri.org/foaf.rdf#danbri" href="http://www.leobard.net/rdf/foaf.xml#me">Dan Brickley</p>
+ </div>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <p about="http://danbri.org/foaf.rdf#danbri" resource="http://www.leobard.net/rdf/foaf.xml#me">Dan Brickley</p>
+ </div>
+ <div about ="http://www.example.org/#somebody" rev="foaf:knows">
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p typeof="foaf:Person" property="foaf:name">Mark Birbeck</p>
+ </div>
+ <div about ="http://www.example.org/#somebody" rev="foaf:knows" rel="foaf:knows">
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p typeof="foaf:Person" property="foaf:name">Mark Birbeck</p>
+ </div>
+ <div about="http://www.example.org/#somebody" rel="foaf:knows">
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p about="http://danbri.org/foaf.rdf#danbri" typeof="foaf:Person" property="foaf:name">Dan Brickley</p>
+ </div>
+ <div about ="http://www.example.org/#somebody" rev="foaf:knows" rel="foaf:knows">
+ <div>
+ <p property="foaf:name">Ivan Herman</p>
+ <p rel="foaf:mailbox" resource="mailto:ivan@w3.org">mailto:ivan@w3.org</p>
+ <p about="http://danbri.org/foaf.rdf#danbri" typeof="foaf:Person" property="foaf:name">Dan Brickley</p>
+
+ </div>
+ </div>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <div rel="foaf:knows">
+ <p resource="http://www.ivan-herman.org/Ivan_Herman">Ivan Herman</p>
+ <p href="http://www.w3.org/People/Berners-Lee/card#i">Tim Berners Lee</p>
+ <p resource="http://danbri.org/foaf.rdf#danbri" href="http://www.leobard.net/rdf/foaf.xml#me">Dan Brickley</p>
+ </div>
+ </div>
+ <p>
+ <a rel=":alternate" href="http://example.org/alternate">alternate</a>
+ <a rel=":appendix" href="http://example.org/appendix">appendix</a>
+ <a rel=":bookmark" href="http://example.org/bookmark">bookmark</a>
+ <a rel=":cite" href="http://example.org/cite">cite</a>
+ <a rel=":chapter" href="http://example.org/chapter">chapter</a>
+ <a rel=":contents" href="http://example.org/contents">contents</a>
+ <a rel=":copyright" href="http://example.org/copyright">copyright</a>
+ <a rel=":glossary" href="http://example.org/glossary">glossary</a>
+ <a rel=":help" href="http://example.org/help">help</a>
+ <a rel=":icon" href="http://example.org/icon">icon</a>
+ <a rel=":index" href="http://example.org/index">index</a>
+ <a rel=":first" href="http://example.org/first">first</a>
+ <a rel=":last" href="http://example.org/last">last</a>
+ <a rel=":license" href="http://example.org/license">license</a>
+ <a rel=":meta" href="http://example.org/meta">meta</a>
+ <a rel=":next" href="http://example.org/next">next</a>
+ <a rel=":p3pv1" href="http://example.org/p3pv1">p3pv1</a>
+ <a rel=":prev" href="http://example.org/prev">prev</a>
+ <a rel=":role" href="http://example.org/role">role</a>
+ <a rel=":section" href="http://example.org/section">section</a>
+ <a rel=":subsection" href="http://example.org/subsection">subsection</a>
+ <a rel=":start" href="http://example.org/start">start</a>
+ <a rel=":stylesheet" href="http://example.org/stylesheet">stylesheet</a>
+ <a rel=":up" href="http://example.org/up">up</a>
+ </p>
+ <div about ="http://www.example.org/#somebody" rel="foaf:knows">
+ <p about="[_:]" property="foaf:name">Dan Brickley</p>
+ <p about="[_:]" typeof="foaf:Person">Dan Brickley again:-)</p>
+ </div>
+ <div>
+ <img src="http://example.org/example.png" typeof="foaf:Image" alt="example image" />
+ </div>
+ <div>
+ <img src="http://example.org/example.png"
+ rel="license"
+ href="http://creativecommons.org/licenses/by-nc-sa/2.0/"
+ alt="example image" />
+ </div>
+ <p about="[_:human]">
+ A human is
+ <span property=":definition">a bi-pedal primate</span>.
+ They are quite possibly one of the most
+ <span property=":note">confused animal</span>s residing in the
+ <span property=":foo">Milky Way</span>.
+ </p>
+ <div about="">
+ Author: <span property="dc:creator">Albert Einstein</span>
+ <h2 property="dc:title" datatype="ex:XMLLiteral">E = mc<sup>2</sup>: The Most Urgent Problem of Our Time</h2>
+ </div>
+ <p about="http://www.cwi.nl/~steven/" property="example:likes">
+ We put thirty spokes together and call it a wheel;
+ But it is on the space where there is nothing that the usefulness of the wheel depends.
+ We turn clay to make a vessel;
+ But it is on the space where there is nothing that the usefulness of the vessel depends.
+ We pierce doors and windows to make a house;
+ And it is on these spaces where there is nothing that the usefulness of the house depends.
+ Therefore just as we take advantage of what is, we should recognize the usefulness of what is not.
+
+ Lao Tzu: Tao Te Ching</p>
+ <p>
+ The word "interfenestration" has
+ <span about="#interfenestration" rel="example:size">
+ <span property="rdf:value">17</span>
+ <span property="example:unit">character</span>s.
+ </span>
+ </p>
+ <div about="" rel="dc:creator">
+ <a rel="" href="manu.html">Manu</a> created this page.
+ </div>
+ <div rel="next"></div>
+ <p about="http://example.org/node" property="ex:property"
+ datatype="" xml:lang="el">ελληνικό
+άσπÏο διάστημα
+</p>
+ <!-- This a NOT a valid XHTML document (due to @xml:base) -->
+ <div xml:base="http://example.org/invalid/">
+ <p about="">This is <span property="dc:title">Test 0109</span>.</p>
+ </div>
+ <div rel="xhv:next">
+ <div rel="xhv:next" />
+ </div>
+ <div rel="xhv:next">
+ <div rel="xhv:next">
+ <div rel="xhv:next" />
+ </div>
+ </div>
+ <p>
+ <span about="http://example.org/node" property="ex:property"
+ datatype="">not an XML Literal,
+whitespace preserved
+</span>
+ </p>
+ <span about="#a" property="dc:title"></span>
+ <span about="#b" property="dc:title" />
+ <div>
+ <a rel="xhv:index" href="../../.././#">Test Suite</a>
+ <a rel="xhv:next" href="0115.xml">Test Case 0115</a>
+ <a rel="xhv:up" href="./">Test Case 0114</a>
+ <a rel="cc:attributionURL" href="../../../../">RDFa Website</a>
+ <a rel="rdfatest:cornerCase1" href=".">Corner Case #1</a>
+ <a rel="rdfatest:cornerCase2" href="http://example.org/foo/..">Corner Case #2</a>
+ <a rel="rdfatest:cornerCase3" href="...">Corner Case #3</a>
+ <a rel="rdfatest:cornerCase4" href="?foo=bar../baz">Corner Case #4</a>
+ <a rel="rdfatest:cornerCase5" href="../..../../../.../.htaccess">Corner Case #5</a>
+ </div>
+ <p>Description: XML entities in the RDFa content</p>
+ <p>
+ <span property="ex:entity1">&gt;</span>
+ <span property="ex:entity2">Ben &amp; Co.</span>
+ <span property="ex:entity3">&#x40;</span>
+ <span property="ex:entity4">&#64;</span>
+ </p>
+ <p>
+ <span property="dc:contributor">Mark Birbeck</span>
+ added this triple test.
+ </p>
+ <p>
+ Check to see if parsers get confused when "" is
+ interpreted as NULL in some chaining cases.
+ <a href="http://example.org/ben.html"><span
+ about="" property="dc:creator">Ben</span></a>
+ </p>
+ <div>
+ <p about="[example:]">
+ The
+ <span property="dc:title">Example Website</span>
+ is used in many W3C tutorials.
+ </p>
+ </div>
+ <p about="[:]">
+ The
+ <span property="dc:title">The XHTML Vocabulary Document</span>
+ is the default prefix for XHTML+RDFa 1.0.
+ </p>
+ <div>
+ <p about="http://example.org/">
+ <span about="[]" property="dc:title">Test Case 0121</span>
+ checks to make sure RDFa processors resolve the empty CURIE correctly.
+ <p resource="[]">
+ <span property="dc:contributor">Shane McCarron</span>
+ contributed to this test.
+ </p>
+ </p>
+ </div>
+ <p about="http://example.org/section1.html">
+ This section is contained below <span rel="up" resource="[]">the main site</span>.
+ </p>
+ <div about="http://www.example.org/#article" typeof="foaf:Document sioc:Post">
+ <h1 property="dct:title">My article</h1>
+ </div>
+<p>Blank Nodes are not allowed to be predicate identifiers in RDF:</p>
+<p property="_:invalid">Test</p>
+<p xmlns:xmlzzz="http://example.org/" property="xmlzzz:test">Test</p>
+ <p>
+ This test ensures that single-character prefixes are allowed.
+ My name is:
+ <span about="http://example.org/jd" property="v:fn">John Doe</span>
+ </p>
+ <p about="_:gregg">My name is
+ <em property="http://xmlns.com/foaf/0.1/name">Gregg Kellogg</em>.
+ </p>
+ <div about="_:manu">
+ Manu can be reached via
+ <a rel="http://xmlns.com/foaf/0.1/mbox" href="mailto:manu.sporny@digitalbazaar.com">email</a>.
+ <span rel="http://xmlns.com/foaf/0.1/knows" resource="_:gregg">He knows Gregg.</span>
+ <span rev="http://xmlns.com/foaf/0.1/knows" resource="_:gregg">Who knows Manu.</span>
+ </div>
+
+ <div about="_:gregg">
+ Gregg can be reached via
+ <a rel="http://xmlns.com/foaf/0.1/mbox" href="mailto:gregg@kellogg-assoc.com">email</a>.
+ </div>
+ <div about ="#me" prefix="foaf: http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">Ivan Herman</p>
+ </div>
+ <div about ="#this" prefix="foaf: http://xmlns.com/foaf/0.1/ dc: http://purl.org/dc/terms/" typeof="dc:Agent">
+ <p property="foaf:name">A particular agent</p>
+ </div>
+ <!-- prefix has a higher priority than xmlns -->
+ <div about ="#me" xmlns:foaf="http://www.example.com/wrong/foaf/uri" prefix="foaf: http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">Ivan Herman</p>
+ </div>
+ <div about ="#me" prefix=": http://xmlns.com/foaf/0.1/" >
+ <p property=":name">Ivan Herman</p>
+ </div>
+ <div about ="http://www.example.org/software">
+ <p rel=":license" resource="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">Ivan Herman</p>
+ </div>
+ <div prefix="foaf: http://example.org/wrong/foaf/uri/ dc: http://purl.org/dc/terms/" >
+ <div about ="#this" typeof="dc:Agent" prefix="foaf: http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">A particular agent</p>
+ </div>
+ </div>
+ <div prefix="foaf: http://example.org/wrong/foaf/uri/ dc: http://purl.org/dc/terms/" >
+ <div about ="#this" typeof="dc:Agent" xmlns:foaf="http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">A particular agent</p>
+ </div>
+ </div>
+ <div about ="#me" vocab="http://xmlns.com/foaf/0.1/" >
+ <p property="name">Ivan Herman</p>
+ </div>
+ <div vocab="http://example.org/wrong/foaf/uri/">
+ <div about ="#me" vocab="http://xmlns.com/foaf/0.1/" >
+ <p property="name">Ivan Herman</p>
+ </div>
+ </div>
+ <div vocab="http://xmlns.com/foaf/0.1/">
+ <div about ="#me">
+ <p property="name">Ivan Herman</p>
+ </div>
+ </div>
+ <div about ="http://www.example.org/software" vocab="http://www.example.org/vocab#">
+ <p rel="license" resource="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">Ivan Herman</p>
+ </div>
+ <div about ="http://www.example.org/software">
+ <p rel="liCeNse" resource="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">Ivan Herman</p>
+ </div>
+ <div about="http://www.example.org">
+ <p property="ex:xmllit" datatype="rdf:XMLLiteral">This is an XMLLiteral</p>
+ <p property="ex:plainlit">This is a <em>plain</em> literal</p>
+</div>
+ <p about="" typeof="class/Person" property="pred/name">Gregg Kellogg</p>
+ <p property="dc:language" datatype="pred/lang">Ruby</p>
+ <p rel="pred/rel" resource="http://kellogg-assoc.com/">Kellogg Associates</p>
+ <p rev="pred/rev" resource="http://github.org/gkellogg/rdf_context">Ruby Gem</p>
+ <div id="mark" about="#mark" typeof="foaf:Person">
+ <h2 property="foaf:name" datatype="rdf:XMLLiteral"><span
+property="foaf:firstName">Mark</span> <span
+property="foaf:surname">Birbeck</span></h2>
+ </div>
+ <p about ="xsd:maxExclusive" rel="rdf:type" resource="owl:DatatypeProperty">
+ An OWL Axiom: "xsd:maxExclusive" is a Datatype Property in OWL.
+ </p>
+ <p about="#event1" typeof="cal:Vevent">
+ <b property="cal:summary">Weekend off in Iona</b>:
+ <span property="cal:dtstart" content="2006-10-21" datatype="xsd:date">Oct 21st</span>
+ to <span property="cal:dtend" content="2006-10-23" datatype="xsd:date">Oct 23rd</span>.
+ See <a rel="cal:url" href="http://freetime.example.org/">FreeTime.Example.org</a> for
+ info on <span property="cal:location">Iona, UK</span>.
+ </p>
+ <!-- @prefix should be ignored in the RDFa 1.0 case -->
+ <div about ="#me" prefix="foaf: http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">Ivan Herman</p>
+ </div>
+ <!-- prefix has a higher priority than xmlns, but should be ignored because version is explicitly set to 1.0 -->
+ <div about ="#me" xmlns:foaf="http://www.example.com/wrong/foaf/uri/" prefix="foaf: http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">Ivan Herman</p>
+ </div>
+ <!-- The version statement should be ignored with version set to 1.0 -->
+ <div about ="#me" vocab="http://xmlns.com/foaf/0.1/" >
+ <p property="foaf:name">Ivan Herman</p>
+ </div>
+ <!-- In RDFa 1.0, if a literal contains XML elements, and no explicit datatype is set, the result is XMLLiteral -->
+ <div about="http://www.example.org/">
+ <h2 property="dc:title">E = mc<sup>2</sup>: The Most Urgent Problem of Our Time</h2>
+ </div>
+ <!-- In RDFa 1.1, by default a plain literal is generated even if it contains XML elements -->
+ <div about="http://www.example.org/">
+ <h2 property="dc:title">E = mc<sup>2</sup>: The Most Urgent Problem of Our Time</h2>
+ </div>
+ <p>This document has a title.</p>
+ <!-- Tests whether the Unicode (UTF-8 encoded) characters are properly handled even with a large set of properties
+ in the html element, ie, when the content sniffing to find out the character encoding may not work -->
+ <p about="http://www.ivan-herman.net/foaf#me" property="foaf:name">Iván</p>
+ <!-- Tests whether the Unicode (UTF-8 encoded) characters are properly handled even with a large set of properties
+ in the html element, ie, when the content sniffing to find out the character encoding may not work -->
+ <p about="http://www.ivan-herman.net/foaf#me" property="foaf:name">Iván</p>
+ <div about="#me" vocab="http://xmlns.com/foaf/0.1/" >
+ <p property="name">Gregg Kellogg</p>
+ </div>
+ <div about ="">
+ <p rel="rdf:value" inlist=""/>
+ </div>
+ <div about="">
+ <p property="rdf:value" inlist="">Foo</p>
+ </div>
+ <div about="">
+ <a rel="rdf:value" inlist="" href="foo">Foo</a>
+ </div>
+ <div about="">
+ <p property="rdf:value" inlist="">Foo</p>
+ <a rel="rdf:value" inlist="" href="foo">Foo</a>
+ </div>
+ <div about="">
+ <p property="rdf:value" inlist="">Foo</p>
+ <strong><p property="rdf:value" inlist="">Bar</p></strong>
+ </div>
+ <div about="">
+ <p property="rdf:value" inlist="">Foo</p>
+ <strong><p property="rdf:value" inlist="">Bar</p></strong>
+ <p property="rdf:value">Baz</p>
+ </div>
+ <div about="">
+ <ol rel="rdf:value" inlist="">
+ <li><a href="foo">Foo</a></li>
+ <li><a href="bar">Bar</a></li>
+ </ol>
+ </div>
+ <div about="foo">
+ <p property="rdf:value" inlist="">Foo</p>
+ </div>
+ <div about="foo">
+ <p property="rdf:value" inlist="">Bar</p>
+ </div>
+ <div about="">
+ <p property="rdf:value" inlist="">Foo</p>
+ <span rel="rdf:inlist" resource="res">
+ <p property="rdf:value" inlist="">Bar</p>
+ </span>
+ </div>
+ <div about="">
+ <p property="rdf:value" inlist="">Foo</p>
+ <span rel="rdf:inlist">
+ <p about="res" property="rdf:value" inlist="">Bar</p>
+ </span>
+ </div>
+ <div>
+ <img src="http://sw-app.org/img/mic_2007_01.jpg"
+ rev="xhv:alternate"
+ resource="http://sw-app.org/img/mic_2006_03.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ <div>
+ <img rel="foaf:img"
+ src="http://sw-app.org/img/mic_2007_01.jpg"
+ alt="A photo depicting Michael" />
+ </div>
+ <div>
+ <img
+ src="http://example.org/example.png"
+ rel="license"
+ href="http://creativecommons.org/licenses/by-nc-sa/2.0/"
+ alt="example image" />
+ </div>
+ <div about="http://creativecommons.org/licenses/by-nc-sa/2.0/" rev="license">
+ <img src="http://example.org/example.png" alt="example image" />
+ </div>
+ <div rel="foaf:maker" typeof="foaf:Person">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ <div rel="foaf:maker" typeof="foaf:Person" resource="http://www.example.org/#me">
+ <p property="foaf:name">John Doe</p>
+ </div>
+ <p>
+ <a rel="describedby" href="http://example.org/describedby">describedby</a>
+ <a rel="license" href="http://example.org/license">license</a>
+ <a rel="role" href="http://example.org/role">role</a>
+ </p>
+ <p>
+ The <span property="dc:title">rdfagraph</span> should not generate triples when
+ looking only at the processor graph.
+ </p>
+ <p></p>
+ <p></p>
+ <p about="http://example.org/node" property="ex:property"
+ datatype="" lang="el">ελληνικό
+άσπÏο διάστημα
+</p>
+ <p></p>
+ <span about="#a" property="dc:title"></span>
+<p>Ensure that the "_" prefix is ignored.</p>
+<p xmlns:_="http://example.org/"
+ prefix="_: http://example.org/"
+ xmlns:earl="http://www.w3.org/ns/earl#"
+ rel="earl:testcase" resource="_:test">Test</p>
+ <div>
+ Vocabulary Prefixes
+ <span property="grddl:">GRDDL</span>
+ <span property="ma:">MA</span>
+ <span property="owl:">OWL</span>
+ <span property="rdf:">RDF</span>
+ <span property="rdfa:">RDFa</span>
+ <span property="rdfs:">RDFS</span>
+ <span property="rif:">RIF</span>
+ <span property="skos:">SKOS</span>
+ <span property="skosxl:">SKOS-XL</span>
+ <span property="wdr:">WDR</span>
+ <span property="void:">VOID</span>
+ <span property="wdrs:">WDRS</span>
+ <span property="xhv:">XHV</span>
+ <span property="xml:">XML</span>
+ <span property="xsd:">XSD</span>
+ </div>
+ <div>
+ Widely Used prefixes
+ <span property="cc:">CC</span>
+ <span property="ctag:">CTAG</span>
+ <span property="dc:">DC</span>
+ <span property="dcterms:">DCTERMS</span>
+ <span property="foaf:">FOAF</span>
+ <span property="gr:">GR</span>
+ <span property="ical:">ICAL</span>
+ <span property="og:">OG</span>
+ <span property="rev:">REV</span>
+ <span property="sioc:">SIOC</span>
+ <span property="v:">V</span>
+ <span property="vcard:">VCARD</span>
+ <span property="schema:">Schema</span>
+ </div>
+ <div>
+ Vocabulary Terms
+ <span property="describedby">DescribedBy</span>
+ <span property="license">License</span>
+ <span property="role">Role</span>
+ </div>
+ <div>
+ Vocabulary Terms
+ <span property="alternate">alternate</span>
+ <span property="appendix">appendix</span>
+ <span property="cite">cite</span>
+ <span property="bookmark">bookmark</span>
+ <span property="contents">contents</span>
+ <span property="chapter">chapter</span>
+ <span property="copyright">copyright</span>
+ <span property="first">first</span>
+ <span property="glossary">glossary</span>
+ <span property="help">help</span>
+ <span property="icon">icon</span>
+ <span property="index">index</span>
+ <span property="last">last</span>
+ <span property="license">license</span>
+ <span property="meta">meta</span>
+ <span property="next">next</span>
+ <span property="prev">prev</span>
+ <span property="previous">previous</span>
+ <span property="section">section</span>
+ <span property="start">start</span>
+ <span property="stylesheet">stylesheet</span>
+ <span property="subsection">subsection</span>
+ <span property="top">top</span>
+ <span property="up">up</span>
+ <span property="p3pv1">p3pv1</span>
+ </div>
+ <div about="http://www.example.org">
+ <p property="ex:xmllit" datatype="rdf:XMLLiteral">This is
+an XMLLiteral</p>
+</div>
+ <p>This photo was taken by <span class="author" about="photo1.jpg" property=" dc:creator
+">Mark Birbeck</span>.</p>
+ <p> </p>
+ <p> </p>
+ <p> </p>
+ <div about="http://www.w3.org/Person/Ivan#me">
+ <a href="http://www.ivan-herman.net/foaf#me" typeof="foaf:Person" property="owl:sameAs">Ivan Herman</a>
+ </div>
+ <div about="http://www.w3.org/Person/Ivan#me">
+ <p resource="http://www.ivan-herman.net/foaf#me" typeof="foaf:Person" property="owl:sameAs">Ivan Herman</p>
+ </div>
+ <div about="http://www.ivan-herman.net/foaf#me">
+ <img src="http://www.ivan-herman.net/Images/me2003-small.png" typeof="foaf:Image" property="foaf:depiction" />
+ </div>
+ <p> </p>
+ <p> </p>
+ <p> </p>
+ <time property="rdf:value" datetime="2012-03-18Z">18 March 2012</time>
+ <time property="rdf:value" datetime="00:00:00Z">midnight</time>
+ <time property="rdf:value" datetime="2012-03-18T00:00:00Z">18 March 2012 at midnight</time>
+ <time property="rdf:value">2012-03-18Z</time>
+ <time property="rdf:value">00:00:00Z</time>
+ <time property="rdf:value">2012-03-18T00:00:00Z</time>
+ <time property="rdf:value" datetime="2012-03-18" content="not this">18 March 2012</time>
+ <time property="rdf:value" datetime="2012-03-18T00:00:00Z" datatype="xsd:date">18 March 2012 at midnight</time>
+ <time property="rdf:value" datetime="P2011Y06M28DT00H00M00S">2011 years 6 months 28 days</time>
+ <time property="rdf:value" datetime="2012">Two Thousand Twelve</time>
+ <time property="rdf:value" datetime="2012-03">March, Two Thousand Twelve</time>
+ <time property="rdf:value"> 2012-03-18Z</time>
+ <time property="rdf:value" datatype="xsd:dateTime"> 2012-03-18Z</time>
+ <time property="rdf:value" lang="en" datetime="D-Day">
+ Non matching lexical value with language.
+ </time>
+ <data property="rdf:value" lang="lat" value="veni, vidi, vici" content="I came, I saw, I conquered">
+ @value overrides @content in the 'data' element.
+ </data>
+ <time property="rdf:value" datetime="2012-03-18T00:00:00-08:00">18 March 2012 at midnight in San Francisco</time>
+ <object property="rdf:value" data="http://example.com/"></object>
+ <h1>@href becomes subject when @property and @content are present</h1>
+ <a href="http://example.org/" property="rdf:value" content="value">ignored</a>
+ <h1>@href becomes subject when @property and @datatype are present</h1>
+ <a href="http://example.org/" property="rdf:value" datatype="">value</a>
+ <h1>@href as subject overridden by @about</h1>
+ <a about="http://example.net/" href="http://example.org/" property="rdf:value" content="value">ignored</a>
+ <h1>@about overriding @href as subject is used as parent resource</h1>
+ <a about="http://example.net/" href="http://example.org/" property="rdf:value" content="value one">
+ <span property="rdf:value">value two</span>
+ </a>
+ <h1>Testing the ':' character usage in a CURIE</h1>
+ <div prefix="ex: http://www.example.org/">
+ <p about="http://www.example.org" property="ex:column:test">Test</p>
+ </div>
+ <p>None of these triples should be generated in RDFa 1.0.</p>
+ <div>
+ Vocabulary Prefixes
+ <span property="grddl:">GRDDL</span>
+ <span property="ma:">MA</span>
+ <span property="owl:">OWL</span>
+ <span property="rdf:">RDF</span>
+ <span property="rdfa:">RDFa</span>
+ <span property="rdfs:">RDFS</span>
+ <span property="rif:">RIF</span>
+ <span property="skos:">SKOS</span>
+ <span property="skosxl:">SKOS-XL</span>
+ <span property="wdr:">WDR</span>
+ <span property="void:">VOID</span>
+ <span property="wdrs:">WDRS</span>
+ <span property="xhv:">XHV</span>
+ <span property="xml:">XML</span>
+ <span property="xsd:">XSD</span>
+ </div>
+ <div>
+ Widely Used prefixes
+ <span property="cc:">CC</span>
+ <span property="ctag:">CTAG</span>
+ <span property="dc:">DC</span>
+ <span property="dcterms:">DCTERMS</span>
+ <span property="foaf:">FOAF</span>
+ <span property="gr:">GR</span>
+ <span property="ical:">ICAL</span>
+ <span property="og:">OG</span>
+ <span property="rev:">REV</span>
+ <span property="sioc:">SIOC</span>
+ <span property="v:">V</span>
+ <span property="vcard:">VCARD</span>
+ <span property="schema:">Schema</span>
+ </div>
+ <div>
+ Vocabulary Terms
+ <span property="describedby">DescribedBy</span>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0296.out b/tests/rdfa11/0296.out
new file mode 100644
index 0000000..5a7d822
--- /dev/null
+++ b/tests/rdfa11/0296.out
@@ -0,0 +1,20 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0296.xml> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://xmlns.com/foaf/0.1/> .
+<http://example.com/gregg/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://example.com/gregg/#me> <http://xmlns.com/foaf/0.1/name> "Gregg" .
+<http://example.com/gregg/#me> <http://xmlns.com/foaf/0.1/homepage> <http://example.com/gregg/> .
+<http://example.com/niklas/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://example.com/niklas/#me> <http://xmlns.com/foaf/0.1/name> "Niklas" .
+<http://example.com/niklas/#me> <http://xmlns.com/foaf/0.1/homepage> <http://example.com/niklas/> .
+<http://example.com/gregg/#me> <http://xmlns.com/foaf/0.1/knows> <http://example.com/niklas/#me> .
+<http://example.com/st\u00E9phane/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://example.com/st\u00E9phane/#me> <http://xmlns.com/foaf/0.1/name> "St\u00E9phane" .
+<http://example.com/st\u00E9phane/#me> <http://xmlns.com/foaf/0.1/homepage> <http://example.com/st\u00E9phane/> .
+<http://example.com/gregg/#me> <http://xmlns.com/foaf/0.1/knows> <http://example.com/st\u00E9phane/#me> .
+<http://example.com/ivan/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://example.com/ivan/#me> <http://xmlns.com/foaf/0.1/name> "Ivan" .
+<http://example.com/ivan/#me> <http://xmlns.com/foaf/0.1/homepage> <http://example.com/ivan/> .
+<http://example.com/gregg/#me> <http://xmlns.com/foaf/0.1/knows> <http://example.com/ivan/#me> .
+<http://example.com/manu/#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://example.com/manu/#me> <http://xmlns.com/foaf/0.1/name> "Manu" .
+<http://example.com/manu/#me> <http://xmlns.com/foaf/0.1/homepage> <http://example.com/manu/> .
+<http://example.com/gregg/#me> <http://xmlns.com/foaf/0.1/knows> <http://example.com/manu/#me> .
diff --git a/tests/rdfa11/0296.xml b/tests/rdfa11/0296.xml
new file mode 100644
index 0000000..ad19de2
--- /dev/null
+++ b/tests/rdfa11/0296.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0296</title>
+</head>
+<body>
+ <div vocab="http://xmlns.com/foaf/0.1/" resource="http://example.com/gregg/#me" typeof="Person">
+ <a property="homepage" href="http://example.com/gregg/"><span property="name">Gregg</span></a>
+ Knows
+ <ul>
+ <li property="knows" resource="http://example.com/niklas/#me" typeof="Person">
+ <a property="homepage" href="http://example.com/niklas/"><span property="name">Niklas</span></a>
+ </li>
+ <li property="knows" resource="http://example.com/stéphane/#me" typeof="Person">
+ <a property="homepage" href="http://example.com/stéphane/"><span property="name">Stéphane</span></a>
+ </li>
+ <li property="knows" resource="http://example.com/ivan/#me" typeof="Person">
+ <a property="homepage" href="http://example.com/ivan/"><span property="name">Ivan</span></a>
+ </li>
+ <li property="knows" resource="http://example.com/manu/#me" typeof="Person">
+ <a property="homepage" href="http://example.com/manu/"><span property="name">Manu</span></a>
+ </li>
+ </ul>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0297.out b/tests/rdfa11/0297.out
new file mode 100644
index 0000000..f31125c
--- /dev/null
+++ b/tests/rdfa11/0297.out
@@ -0,0 +1,2 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0297.xml> <http://xmlns.com/foaf/0.1/name> "Alex Milowski" .
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
diff --git a/tests/rdfa11/0297.xml b/tests/rdfa11/0297.xml
new file mode 100644
index 0000000..1232b16
--- /dev/null
+++ b/tests/rdfa11/0297.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0297: Testing @typeof and @about=[]</title>
+</head>
+<body>
+ <div about="[]" typeof="foaf:Person" property="foaf:name">Alex Milowski</div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0298.out b/tests/rdfa11/0298.out
new file mode 100644
index 0000000..28d7fd2
--- /dev/null
+++ b/tests/rdfa11/0298.out
@@ -0,0 +1,2 @@
+_:bnodeid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+_:bnodeid1 <http://xmlns.com/foaf/0.1/name> "Alex Milowski" .
diff --git a/tests/rdfa11/0298.xml b/tests/rdfa11/0298.xml
new file mode 100644
index 0000000..eb4d759
--- /dev/null
+++ b/tests/rdfa11/0298.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0298: Testing @typeof and @about=[]</title>
+</head>
+<body>
+ <div about="[]" typeof="foaf:Person">
+ <span property="foaf:name">Alex Milowski</span>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0299.out b/tests/rdfa11/0299.out
new file mode 100644
index 0000000..5582265
--- /dev/null
+++ b/tests/rdfa11/0299.out
@@ -0,0 +1 @@
+<http://www.example.org/> <http://www.w3.org/1999/xhtml/vocab#license> <http://www.example.org/license.xhtml> .
diff --git a/tests/rdfa11/0299.xml b/tests/rdfa11/0299.xml
new file mode 100644
index 0000000..0a476c9
--- /dev/null
+++ b/tests/rdfa11/0299.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0299: Testing @resource=[]</title>
+</head>
+<body about="http://www.example.org/">
+ <a href="http://www.example.org/license.xhtml" rel="xhv:license" resource="[]">The Foo Document</a>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0300.out b/tests/rdfa11/0300.out
new file mode 100644
index 0000000..5582265
--- /dev/null
+++ b/tests/rdfa11/0300.out
@@ -0,0 +1 @@
+<http://www.example.org/> <http://www.w3.org/1999/xhtml/vocab#license> <http://www.example.org/license.xhtml> .
diff --git a/tests/rdfa11/0300.xml b/tests/rdfa11/0300.xml
new file mode 100644
index 0000000..532fed6
--- /dev/null
+++ b/tests/rdfa11/0300.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0300: Testing @resource=[]</title>
+</head>
+<body about="http://www.example.org/">
+ <a href="http://www.example.org/license.xhtml" property="xhv:license" resource="[]">The Foo Document</a>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0301.out b/tests/rdfa11/0301.out
new file mode 100644
index 0000000..6a360af
--- /dev/null
+++ b/tests/rdfa11/0301.out
@@ -0,0 +1,4 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0301.xml> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://www.milowski.com/V/> .
+_:bnode0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.milowski.com/V/thing> .
+_:bnode0 <http://www.milowski.com/V/name> "Fizzbit" .
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0301.xml> <http://www.milowski.com/V/bit> _:bnode0 .
diff --git a/tests/rdfa11/0301.xml b/tests/rdfa11/0301.xml
new file mode 100644
index 0000000..69a214d
--- /dev/null
+++ b/tests/rdfa11/0301.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0301: Typed Property</title>
+</head>
+<body>
+ <p vocab="http://www.milowski.com/V/" property="bit" typeof="thing">
+ <span property="name">Fizzbit</span>
+ </p>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0302.out b/tests/rdfa11/0302.out
new file mode 100644
index 0000000..5d430e1
--- /dev/null
+++ b/tests/rdfa11/0302.out
@@ -0,0 +1,6 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0302.xml> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://schema.org/> .
+<http://openspring.net/scor#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person> .
+<http://openspring.net/scor#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://openspring.net/scor#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/Agent> .
+<http://openspring.net/scor#me> <http://schema.org/name> "St\u00E9phane Corlosquet" .
+<http://openspring.net/scor#me> <http://schema.org/homepage> <http://openspring.net/> .
diff --git a/tests/rdfa11/0302.xml b/tests/rdfa11/0302.xml
new file mode 100644
index 0000000..cec557c
--- /dev/null
+++ b/tests/rdfa11/0302.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0302: various types of tokens in @typeof</title>
+</head>
+<body>
+ <div vocab="http://schema.org/" resource="http://openspring.net/scor#me" typeof="Person foaf:Person http://purl.org/dc/terms/Agent">
+ <a property="homepage" href="http://openspring.net/"><span property="name">Stéphane Corlosquet</span></a>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0303.out b/tests/rdfa11/0303.out
new file mode 100644
index 0000000..504bf80
--- /dev/null
+++ b/tests/rdfa11/0303.out
@@ -0,0 +1,4 @@
+<http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/0303.xml> <http://www.w3.org/ns/rdfa#usesVocabulary> <http://schema.org/> .
+<http://example.org/base> <http://schema.org/name> "Gregg Kellogg" .
+<http://example.org/base> <http://schema.org/uri> <http://example.orb/val1> .
+<http://example.org/base> <http://xmlns.com/foaf/0.1/homepage> <http://greggkellogg.net/> .
diff --git a/tests/rdfa11/0303.xml b/tests/rdfa11/0303.xml
new file mode 100644
index 0000000..8aa216f
--- /dev/null
+++ b/tests/rdfa11/0303.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Test 0303: @rel/@rev terms removed if @property exists</title>
+</head>
+<body>
+ <div vocab="http://schema.org/" resource="http://example.org/base">
+ <a property="uri" rel="license" href="http://example.orb/val1">Not This</a>
+ <a property="name" rel="homepage foaf:homepage" href="http://greggkellogg.net/">Gregg Kellogg</a>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/rdfa11/0304.out b/tests/rdfa11/0304.out
new file mode 100644
index 0000000..5c5e210
--- /dev/null
+++ b/tests/rdfa11/0304.out
@@ -0,0 +1,2 @@
+<http://example.net/> <http://purl.org/dc/terms/title> "Test 0304" .
+<http://example.net/> <http://purl.org/dc/terms/description> "A yellow rectangle with sharp corners." .
diff --git a/tests/rdfa11/0304.xml b/tests/rdfa11/0304.xml
new file mode 100644
index 0000000..435df1e
--- /dev/null
+++ b/tests/rdfa11/0304.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="12cm" height="4cm" viewBox="0 0 1200 400"
+xmlns:dc="http://purl.org/dc/terms/"
+xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+xml:base="http://example.net/"
+xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny">
+ <desc property="dc:description">A yellow rectangle with sharp corners.</desc>
+ <metadata>
+ <rdf:RDF>
+ <rdf:Description rdf:about="">
+ <dc:title>Test 0304</dc:title>
+ </rdf:Description>
+ </rdf:RDF>
+ </metadata>
+ <!-- Show outline of canvas using 'rect' element -->
+ <rect x="1" y="1" width="1198" height="398"
+ fill="none" stroke="blue" stroke-width="2"/>
+ <rect x="400" y="100" width="400" height="200"
+ fill="yellow" stroke="navy" stroke-width="10" />
+</svg>
diff --git a/tests/rdfa11/Makefile.am b/tests/rdfa11/Makefile.am
new file mode 100644
index 0000000..90d2293
--- /dev/null
+++ b/tests/rdfa11/Makefile.am
@@ -0,0 +1,201 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor RDFa 1.1 tests
+#
+# Copyright (C) 2012, David Beckett http://purl.org/net/dajobe/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+BASE_URI=http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/
+#
+# Manifest:
+# https://raw.github.com/rdfa/rdfa-website/master/manifest.ttl
+# defines whether sparql ASK should return true or false for success
+#
+# Query to return all RDFA 1.1 test URIs:
+#
+# roqet -r csv -D https://raw.github.com/rdfa/rdfa-website/master/manifest.ttl -e 'select ?t where {?t <http://rdfa.info/vocabs/rdfa-test#rdfaVersion> "rdfa1.1"}'
+#
+# Query to return RDFa 1.1 tests that must return False:
+# roqet -r csv -D https://raw.github.com/rdfa/rdfa-website/master/manifest.ttl -e 'select * where {?s <http://www.w3.org/2006/03/test-description#expectedResults> false; <http://rdfa.info/vocabs/rdfa-test#rdfaVersion> "rdfa1.1"}'
+#
+# http://rdfa.info/test-suite/test-cases/0107
+# http://rdfa.info/test-suite/test-cases/0122
+# http://rdfa.info/test-suite/test-cases/0140
+# http://rdfa.info/test-suite/test-cases/0235
+# http://rdfa.info/test-suite/test-cases/0258
+#
+# http://rdfa.info/test-suite/test-cases/0180 MUST not return given triple; expected to return 1 triple
+#
+# These all expect 0 ntriples - failure is >0 triples or ERROR
+
+CLEANFILES= \
+*-res.nt
+
+TEST_FILES= \
+0001.xml 0006.xml 0007.xml 0008.xml 0009.xml 0010.xml 0012.xml \
+0013.xml 0014.xml 0015.xml 0017.xml 0018.xml 0019.xml 0020.xml \
+0021.xml 0023.xml 0025.xml 0026.xml 0027.xml 0029.xml 0030.xml \
+0031.xml 0032.xml 0033.xml 0034.xml 0035.xml 0036.xml 0037.xml \
+0038.xml 0039.xml 0041.xml 0048.xml 0049.xml 0050.xml 0051.xml \
+0052.xml 0053.xml 0054.xml 0055.xml 0056.xml 0057.xml 0059.xml \
+0060.xml 0061.xml 0062.xml 0063.xml 0064.xml 0065.xml 0066.xml \
+0067.xml 0068.xml 0069.xml 0070.xml 0071.xml 0072.xml 0073.xml \
+0074.xml 0075.xml 0076.xml 0077.xml 0079.xml 0080.xml 0083.xml \
+0084.xml 0085.xml 0087.xml 0088.xml 0089.xml 0091.xml 0093.xml \
+0099.xml 0104.xml 0106.xml 0107.xml 0108.xml 0109.xml 0110.xml \
+0111.xml 0112.xml 0113.xml 0114.xml 0115.xml 0117.xml 0118.xml \
+0119.xml 0120.xml 0121.xml 0122.xml 0126.xml 0131.xml 0134.xml \
+0140.xml 0147.xml 0172.xml 0173.xml 0174.xml 0175.xml 0176.xml \
+0177.xml 0178.xml 0179.xml 0180.xml 0181.xml 0182.xml 0183.xml \
+0186.xml 0187.xml 0188.xml 0189.xml 0190.xml 0196.xml 0197.xml \
+0198.xml 0201.xml 0202.xml 0203.xml 0206.xml 0207.xml 0213.xml \
+0214.xml 0216.xml 0217.xml 0218.xml 0219.xml 0220.xml 0221.xml \
+0222.xml 0223.xml 0224.xml 0225.xml 0226.xml 0227.xml 0228.xml \
+0229.xml 0230.xml 0231.xml 0232.xml 0233.xml 0234.xml 0235.xml \
+0236.xml 0237.xml 0238.xml 0239.xml 0246.xml 0247.xml 0248.xml \
+0249.xml 0250.xml 0251.xml 0252.xml 0253.xml 0254.xml 0255.xml \
+0256.xml 0257.xml 0258.xml 0259.xml 0260.xml 0261.xml 0262.xml \
+0263.xml 0264.xml 0265.xml 0266.xml 0267.xml 0268.xml 0269.xml \
+0269.xml 0271.xml 0272.xml 0273.xml 0274.xml 0275.xml 0276.xml \
+0277.xml 0278.xml 0279.xml 0280.xml 0281.xml 0282.xml 0283.xml \
+0284.xml 0285.xml 0286.xml 0287.xml 0289.xml 0290.xml 0291.xml \
+0292.xml 0293.xml 0295.xml 0296.xml 0297.xml 0298.xml 0299.xml \
+0300.xml 0301.xml 0302.xml 0303.xml 0304.xml
+
+TEST_OUT_FILES = \
+0001.out 0006.out 0007.out 0008.out 0009.out 0010.out 0012.out \
+0013.out 0014.out 0015.out 0017.out 0018.out 0019.out 0020.out \
+0021.out 0023.out 0025.out 0026.out 0027.out 0029.out 0030.out \
+0031.out 0032.out 0033.out 0034.out 0035.out 0036.out 0037.out \
+0038.out 0039.out 0041.out 0048.out 0049.out 0050.out 0051.out \
+0052.out 0053.out 0054.out 0055.out 0056.out 0057.out 0059.out \
+0060.out 0061.out 0062.out 0063.out 0064.out 0065.out 0066.out \
+0067.out 0068.out 0069.out 0070.out 0071.out 0072.out 0073.out \
+0074.out 0075.out 0076.out 0077.out 0079.out 0080.out 0083.out \
+0084.out 0085.out 0087.out 0088.out 0089.out 0091.out 0093.out \
+0099.out 0104.out 0106.out 0107.out 0108.out 0109.out 0110.out \
+0111.out 0112.out 0113.out 0114.out 0115.out 0117.out 0118.out \
+0119.out 0120.out 0121.out 0122.out 0126.out 0131.out 0134.out \
+0140.out 0147.out 0172.out 0173.out 0174.out 0175.out 0176.out \
+0177.out 0178.out 0179.out 0180.out 0181.out 0182.out 0183.out \
+0186.out 0187.out 0188.out 0189.out 0190.out 0196.out 0197.out \
+0198.out 0201.out 0202.out 0203.out 0206.out 0207.out 0213.out \
+0214.out 0216.out 0217.out 0218.out 0219.out 0220.out 0221.out \
+0222.out 0223.out 0224.out 0225.out 0226.out 0227.out 0228.out \
+0229.out 0230.out 0231.out 0232.out 0233.out 0234.out 0235.out \
+0236.out 0237.out 0238.out 0239.out 0246.out 0247.out 0248.out \
+0249.out 0250.out 0251.out 0252.out 0253.out 0254.out 0255.out \
+0256.out 0257.out 0258.out 0259.out 0260.out 0261.out 0262.out \
+0263.out 0264.out 0265.out 0266.out 0267.out 0268.out 0269.out \
+0269.out 0271.out 0272.out 0273.out 0274.out 0275.out 0276.out \
+0277.out 0278.out 0279.out 0280.out 0281.out 0282.out 0283.out \
+0284.out 0285.out 0286.out 0287.out 0289.out 0290.out 0291.out \
+0292.out 0293.out 0295.out 0296.out 0297.out 0298.out 0299.out \
+0300.out 0301.out 0302.out 0303.out 0304.out
+
+ALL_TEST_FILES= \
+ $(TEST_FILES) \
+ $(TEST_OUT_FILES)
+
+# Expected test failures (29):
+# Test Problem Description
+# ----------------------------
+# 0134 librdfa fails mixed-case reserved words generate triples.
+# 0190 librdfa fails term case insensitivity
+# 0198 raptor XML (HTML) markup differences but same meaning
+# 0202 librdfa ensure @xml:base in SVG and XHTML5
+# 0203 librdfa ensure @, XML+RDFa in non-root elements in SVG and XHTML5
+# 0235 0236 0237 0238 0239
+# librdfa failures about "rdfagraph='processor'"
+# 0256 librdfa wrong language code "hu" instead of "fr"
+# 0272 0273 0274 0275 0276 0277 0278 0279 0280 0281 0282
+# librdfa datatype support
+# 0285 librdfa time element with @datetime an invalid datatype ...
+# 0286 librdfa fails to let @value override @content in data
+# 0287 librdfa datatype (@datetime etc.) attribute value
+# 0297 librdfa does not handle @about=[] or assign the lit value
+# 0302 librdfa does not generate [] a dc:Agent triple
+# 0303 librdfa does not remove @rel/@rev terms if @property exists
+# 0304 ??? requires running RDF/XML parse for SVG metadata
+#
+# NOTE: Some tests such as 0295 blow up rdfdiff with stack overflow
+# which is why the 'cmp' is done first.
+#
+# (Add a space to the start of this string)
+EXPECTED_FAILURES=" 0134.xml 0190.xml 0198.xml 0202.xml 0203.xml 0235.xml 0236.xml 0237.xml 0238.xml 0239.xml 0256.xml 0272.xml 0273.xml 0274.xml 0275.xml 0276.xml 0277.xml 0278.xml 0279.xml 0280.xml 0281.xml 0282.xml 0285.xml 0286.xml 0287.xml 0297.xml 0302.xml 0303.xml 0304.xml"
+
+EXTRA_DIST = $(ALL_TEST_FILES)
+
+RAPPER = $(top_builddir)/utils/rapper
+RDFDIFF = $(top_builddir)/utils/rdfdiff
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+build-rdfdiff:
+ @(cd $(top_builddir)/utils ; $(MAKE) rdfdiff$(EXEEXT))
+
+if RAPTOR_PARSER_RDFA
+check-local: check-rdfa
+else
+check-local:
+endif
+
+if MAINTAINER_MODE
+check_rdfa_deps = $(TEST_FILES)
+endif
+
+check-rdfa: build-rdfdiff build-rapper $(check_rdfa_deps)
+ @set +e; result=0; failures=; failure_count=0; \
+ $(RECHO) "Testing RDFa 1.1"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .xml` ; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RAPPER) -f noNet -q -i rdfa11 -I $$baseuri -o ntriples $(srcdir)/$$test > $$name-res.nt 2> $$name.err; \
+ status1=$$?; \
+ if test $$status1 = 2; then \
+ status1=0; \
+ fi; \
+ if cmp $(srcdir)/$$name.out $$name-res.nt >/dev/null 2>&1; then \
+ status2=0; \
+ else \
+ $(RDFDIFF) -f ntriples -u $$baseuri -t ntriples $(srcdir)/$$name.out $$name-res.nt > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ fi; \
+ if test $$status1 = 0 -a $$status2 = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ $(RECHO) "Triple counts: expected: `wc -l < $(srcdir)/$$name.out` got: `wc -l < $$name-res.nt` "; \
+ $(RECHO) $(RAPPER) -f noNet -q -i rdfa11 -I $$baseuri -o ntriples $(srcdir)/$$test '>' $$name-res.nt; \
+ $(RECHO) $(RDFDIFF) -f ntriples -u $$baseuri -t ntriples $(srcdir)/$$name.out $$name-res.nt '>' $$name.res; \
+ cat $$name.err $$name.res; \
+ failures="$$failures $$test"; \
+ failure_count=`expr $$failure_count + 1`; \
+ fi; \
+ rm -f $$name-res.nt $$name.res $$name.err; \
+ done; \
+ if test "X$$failures" != X; then \
+ echo "$$failure_count tests FAILED: $$failures"; \
+ if test "$$failures" = $(EXPECTED_FAILURES); then \
+ echo "Ignoring expected failures"; \
+ result=0; \
+ fi; \
+ fi; \
+ set -e; exit $$result
diff --git a/tests/rdfa11/Makefile.in b/tests/rdfa11/Makefile.in
new file mode 100644
index 0000000..cebec56
--- /dev/null
+++ b/tests/rdfa11/Makefile.in
@@ -0,0 +1,617 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor RDFa 1.1 tests
+#
+# Copyright (C) 2012, David Beckett http://purl.org/net/dajobe/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/rdfa11
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+BASE_URI = http://rdfa.info/test-suite/test-cases/xhtml1/rdfa1.0/
+#
+# Manifest:
+# https://raw.github.com/rdfa/rdfa-website/master/manifest.ttl
+# defines whether sparql ASK should return true or false for success
+#
+# Query to return all RDFA 1.1 test URIs:
+#
+# roqet -r csv -D https://raw.github.com/rdfa/rdfa-website/master/manifest.ttl -e 'select ?t where {?t <http://rdfa.info/vocabs/rdfa-test#rdfaVersion> "rdfa1.1"}'
+#
+# Query to return RDFa 1.1 tests that must return False:
+# roqet -r csv -D https://raw.github.com/rdfa/rdfa-website/master/manifest.ttl -e 'select * where {?s <http://www.w3.org/2006/03/test-description#expectedResults> false; <http://rdfa.info/vocabs/rdfa-test#rdfaVersion> "rdfa1.1"}'
+#
+# http://rdfa.info/test-suite/test-cases/0107
+# http://rdfa.info/test-suite/test-cases/0122
+# http://rdfa.info/test-suite/test-cases/0140
+# http://rdfa.info/test-suite/test-cases/0235
+# http://rdfa.info/test-suite/test-cases/0258
+#
+# http://rdfa.info/test-suite/test-cases/0180 MUST not return given triple; expected to return 1 triple
+#
+# These all expect 0 ntriples - failure is >0 triples or ERROR
+CLEANFILES = \
+*-res.nt
+
+TEST_FILES = \
+0001.xml 0006.xml 0007.xml 0008.xml 0009.xml 0010.xml 0012.xml \
+0013.xml 0014.xml 0015.xml 0017.xml 0018.xml 0019.xml 0020.xml \
+0021.xml 0023.xml 0025.xml 0026.xml 0027.xml 0029.xml 0030.xml \
+0031.xml 0032.xml 0033.xml 0034.xml 0035.xml 0036.xml 0037.xml \
+0038.xml 0039.xml 0041.xml 0048.xml 0049.xml 0050.xml 0051.xml \
+0052.xml 0053.xml 0054.xml 0055.xml 0056.xml 0057.xml 0059.xml \
+0060.xml 0061.xml 0062.xml 0063.xml 0064.xml 0065.xml 0066.xml \
+0067.xml 0068.xml 0069.xml 0070.xml 0071.xml 0072.xml 0073.xml \
+0074.xml 0075.xml 0076.xml 0077.xml 0079.xml 0080.xml 0083.xml \
+0084.xml 0085.xml 0087.xml 0088.xml 0089.xml 0091.xml 0093.xml \
+0099.xml 0104.xml 0106.xml 0107.xml 0108.xml 0109.xml 0110.xml \
+0111.xml 0112.xml 0113.xml 0114.xml 0115.xml 0117.xml 0118.xml \
+0119.xml 0120.xml 0121.xml 0122.xml 0126.xml 0131.xml 0134.xml \
+0140.xml 0147.xml 0172.xml 0173.xml 0174.xml 0175.xml 0176.xml \
+0177.xml 0178.xml 0179.xml 0180.xml 0181.xml 0182.xml 0183.xml \
+0186.xml 0187.xml 0188.xml 0189.xml 0190.xml 0196.xml 0197.xml \
+0198.xml 0201.xml 0202.xml 0203.xml 0206.xml 0207.xml 0213.xml \
+0214.xml 0216.xml 0217.xml 0218.xml 0219.xml 0220.xml 0221.xml \
+0222.xml 0223.xml 0224.xml 0225.xml 0226.xml 0227.xml 0228.xml \
+0229.xml 0230.xml 0231.xml 0232.xml 0233.xml 0234.xml 0235.xml \
+0236.xml 0237.xml 0238.xml 0239.xml 0246.xml 0247.xml 0248.xml \
+0249.xml 0250.xml 0251.xml 0252.xml 0253.xml 0254.xml 0255.xml \
+0256.xml 0257.xml 0258.xml 0259.xml 0260.xml 0261.xml 0262.xml \
+0263.xml 0264.xml 0265.xml 0266.xml 0267.xml 0268.xml 0269.xml \
+0269.xml 0271.xml 0272.xml 0273.xml 0274.xml 0275.xml 0276.xml \
+0277.xml 0278.xml 0279.xml 0280.xml 0281.xml 0282.xml 0283.xml \
+0284.xml 0285.xml 0286.xml 0287.xml 0289.xml 0290.xml 0291.xml \
+0292.xml 0293.xml 0295.xml 0296.xml 0297.xml 0298.xml 0299.xml \
+0300.xml 0301.xml 0302.xml 0303.xml 0304.xml
+
+TEST_OUT_FILES = \
+0001.out 0006.out 0007.out 0008.out 0009.out 0010.out 0012.out \
+0013.out 0014.out 0015.out 0017.out 0018.out 0019.out 0020.out \
+0021.out 0023.out 0025.out 0026.out 0027.out 0029.out 0030.out \
+0031.out 0032.out 0033.out 0034.out 0035.out 0036.out 0037.out \
+0038.out 0039.out 0041.out 0048.out 0049.out 0050.out 0051.out \
+0052.out 0053.out 0054.out 0055.out 0056.out 0057.out 0059.out \
+0060.out 0061.out 0062.out 0063.out 0064.out 0065.out 0066.out \
+0067.out 0068.out 0069.out 0070.out 0071.out 0072.out 0073.out \
+0074.out 0075.out 0076.out 0077.out 0079.out 0080.out 0083.out \
+0084.out 0085.out 0087.out 0088.out 0089.out 0091.out 0093.out \
+0099.out 0104.out 0106.out 0107.out 0108.out 0109.out 0110.out \
+0111.out 0112.out 0113.out 0114.out 0115.out 0117.out 0118.out \
+0119.out 0120.out 0121.out 0122.out 0126.out 0131.out 0134.out \
+0140.out 0147.out 0172.out 0173.out 0174.out 0175.out 0176.out \
+0177.out 0178.out 0179.out 0180.out 0181.out 0182.out 0183.out \
+0186.out 0187.out 0188.out 0189.out 0190.out 0196.out 0197.out \
+0198.out 0201.out 0202.out 0203.out 0206.out 0207.out 0213.out \
+0214.out 0216.out 0217.out 0218.out 0219.out 0220.out 0221.out \
+0222.out 0223.out 0224.out 0225.out 0226.out 0227.out 0228.out \
+0229.out 0230.out 0231.out 0232.out 0233.out 0234.out 0235.out \
+0236.out 0237.out 0238.out 0239.out 0246.out 0247.out 0248.out \
+0249.out 0250.out 0251.out 0252.out 0253.out 0254.out 0255.out \
+0256.out 0257.out 0258.out 0259.out 0260.out 0261.out 0262.out \
+0263.out 0264.out 0265.out 0266.out 0267.out 0268.out 0269.out \
+0269.out 0271.out 0272.out 0273.out 0274.out 0275.out 0276.out \
+0277.out 0278.out 0279.out 0280.out 0281.out 0282.out 0283.out \
+0284.out 0285.out 0286.out 0287.out 0289.out 0290.out 0291.out \
+0292.out 0293.out 0295.out 0296.out 0297.out 0298.out 0299.out \
+0300.out 0301.out 0302.out 0303.out 0304.out
+
+ALL_TEST_FILES = \
+ $(TEST_FILES) \
+ $(TEST_OUT_FILES)
+
+
+# Expected test failures (29):
+# Test Problem Description
+# ----------------------------
+# 0134 librdfa fails mixed-case reserved words generate triples.
+# 0190 librdfa fails term case insensitivity
+# 0198 raptor XML (HTML) markup differences but same meaning
+# 0202 librdfa ensure @xml:base in SVG and XHTML5
+# 0203 librdfa ensure @, XML+RDFa in non-root elements in SVG and XHTML5
+# 0235 0236 0237 0238 0239
+# librdfa failures about "rdfagraph='processor'"
+# 0256 librdfa wrong language code "hu" instead of "fr"
+# 0272 0273 0274 0275 0276 0277 0278 0279 0280 0281 0282
+# librdfa datatype support
+# 0285 librdfa time element with @datetime an invalid datatype ...
+# 0286 librdfa fails to let @value override @content in data
+# 0287 librdfa datatype (@datetime etc.) attribute value
+# 0297 librdfa does not handle @about=[] or assign the lit value
+# 0302 librdfa does not generate [] a dc:Agent triple
+# 0303 librdfa does not remove @rel/@rev terms if @property exists
+# 0304 ??? requires running RDF/XML parse for SVG metadata
+#
+# NOTE: Some tests such as 0295 blow up rdfdiff with stack overflow
+# which is why the 'cmp' is done first.
+#
+# (Add a space to the start of this string)
+EXPECTED_FAILURES = " 0134.xml 0190.xml 0198.xml 0202.xml 0203.xml 0235.xml 0236.xml 0237.xml 0238.xml 0239.xml 0256.xml 0272.xml 0273.xml 0274.xml 0275.xml 0276.xml 0277.xml 0278.xml 0279.xml 0280.xml 0281.xml 0282.xml 0285.xml 0286.xml 0287.xml 0297.xml 0302.xml 0303.xml 0304.xml"
+EXTRA_DIST = $(ALL_TEST_FILES)
+RAPPER = $(top_builddir)/utils/rapper
+RDFDIFF = $(top_builddir)/utils/rdfdiff
+@MAINTAINER_MODE_TRUE@check_rdfa_deps = $(TEST_FILES)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/rdfa11/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/rdfa11/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-am check-local clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+build-rdfdiff:
+ @(cd $(top_builddir)/utils ; $(MAKE) rdfdiff$(EXEEXT))
+
+@RAPTOR_PARSER_RDFA_TRUE@check-local: check-rdfa
+@RAPTOR_PARSER_RDFA_FALSE@check-local:
+
+check-rdfa: build-rdfdiff build-rapper $(check_rdfa_deps)
+ @set +e; result=0; failures=; failure_count=0; \
+ $(RECHO) "Testing RDFa 1.1"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .xml` ; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RAPPER) -f noNet -q -i rdfa11 -I $$baseuri -o ntriples $(srcdir)/$$test > $$name-res.nt 2> $$name.err; \
+ status1=$$?; \
+ if test $$status1 = 2; then \
+ status1=0; \
+ fi; \
+ if cmp $(srcdir)/$$name.out $$name-res.nt >/dev/null 2>&1; then \
+ status2=0; \
+ else \
+ $(RDFDIFF) -f ntriples -u $$baseuri -t ntriples $(srcdir)/$$name.out $$name-res.nt > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ fi; \
+ if test $$status1 = 0 -a $$status2 = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ $(RECHO) "Triple counts: expected: `wc -l < $(srcdir)/$$name.out` got: `wc -l < $$name-res.nt` "; \
+ $(RECHO) $(RAPPER) -f noNet -q -i rdfa11 -I $$baseuri -o ntriples $(srcdir)/$$test '>' $$name-res.nt; \
+ $(RECHO) $(RDFDIFF) -f ntriples -u $$baseuri -t ntriples $(srcdir)/$$name.out $$name-res.nt '>' $$name.res; \
+ cat $$name.err $$name.res; \
+ failures="$$failures $$test"; \
+ failure_count=`expr $$failure_count + 1`; \
+ fi; \
+ rm -f $$name-res.nt $$name.res $$name.err; \
+ done; \
+ if test "X$$failures" != X; then \
+ echo "$$failure_count tests FAILED: $$failures"; \
+ if test "$$failures" = $(EXPECTED_FAILURES); then \
+ echo "Ignoring expected failures"; \
+ result=0; \
+ fi; \
+ fi; \
+ set -e; exit $$result
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/rdfxml/22-rdf-syntax-ns.out b/tests/rdfxml/22-rdf-syntax-ns.out
new file mode 100644
index 0000000..740be0c
--- /dev/null
+++ b/tests/rdfxml/22-rdf-syntax-ns.out
@@ -0,0 +1,23 @@
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#comment> "A triple consisting of a predicate, a subject, and an object." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#comment> "A name of a property, defining specific meaning for the property" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#comment> "An unordered collection" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#comment> "An ordered collection" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#comment> "A collection of alternatives" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#comment> "Identifies the property used in a statement when representing the statement in reified form" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#comment> "Identifies the resource that a statement is describing when representing the statement in reified form" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#comment> "Identifies the object of a statement when representing the statement in reified form" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#comment> "Identifies the Class of a resource" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#comment> "Identifies the principal value (usually a string) of a property when the property value is a structured resource" .
diff --git a/tests/rdfxml/22-rdf-syntax-ns.rdf b/tests/rdfxml/22-rdf-syntax-ns.rdf
new file mode 100644
index 0000000..41d2dfe
--- /dev/null
+++ b/tests/rdfxml/22-rdf-syntax-ns.rdf
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+
+<RDF
+ xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:s="http://www.w3.org/2000/01/rdf-schema#">
+
+<!--
+ This is the RDF Schema for the RDF data model as described in the
+ Resource Description Framework (RDF) Model and Syntax Specification
+ http://www.w3.org/TR/REC-rdf-syntax -->
+
+<s:Class rdf:ID="Statement"
+ s:comment="A triple consisting of a predicate, a subject, and an object." />
+
+<s:Class rdf:ID="Property"
+ s:comment="A name of a property, defining specific meaning for the property" />
+
+<s:Class rdf:ID="Bag"
+ s:comment="An unordered collection" />
+
+<s:Class rdf:ID="Seq"
+ s:comment="An ordered collection" />
+
+<s:Class rdf:ID="Alt"
+ s:comment="A collection of alternatives" />
+
+<Property ID="predicate"
+ s:comment="Identifies the property used in a statement when representing the statement in reified form">
+ <s:domain rdf:resource="#Statement" />
+ <s:range rdf:resource="#Property" />
+</Property>
+
+<Property ID="subject"
+ s:comment="Identifies the resource that a statement is describing when representing the statement in reified form">
+ <s:domain rdf:resource="#Statement" />
+</Property>
+
+<Property ID="object"
+ s:comment="Identifies the object of a statement when representing the statement in reified form" />
+
+<Property ID="type"
+ s:comment="Identifies the Class of a resource" />
+
+<Property ID="value"
+ s:comment="Identifies the principal value (usually a string) of a property when the property value is a structured resource" />
+
+</RDF>
diff --git a/tests/rdfxml/Makefile.am b/tests/rdfxml/Makefile.am
new file mode 100644
index 0000000..792f47b
--- /dev/null
+++ b/tests/rdfxml/Makefile.am
@@ -0,0 +1,415 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor RDF/XML tests
+#
+# Copyright (C) 2000-2008, David Beckett http://purl.org/net/dajobe/
+# Copyright (C) 2000-2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+# These are errors in strict mode, warnings in lax - for now
+RDF_BAGID_TEST_FILES=ex-03.rdf ex-42.rdf ex-43.rdf ex-44.rdf ex-45.rdf
+
+RDF_TEST_FILES=ex-00.rdf ex-01.rdf ex-02.rdf ex-04.rdf ex-05.rdf \
+ex-06.rdf ex-07.rdf ex-08.rdf ex-09.rdf ex-10.rdf ex-11.rdf ex-12.rdf \
+ex-13.rdf ex-14.rdf ex-15.rdf ex-16.rdf ex-17.rdf ex-18.rdf \
+ex-20.rdf ex-21.rdf ex-22.rdf ex-23.rdf ex-24.rdf ex-25.rdf ex-26.rdf \
+ex-27.rdf ex-28.rdf ex-29.rdf ex-30.rdf ex-31.rdf ex-32.rdf ex-33.rdf \
+ex-34.rdf ex-35.rdf ex-36.rdf ex-37.rdf ex-38.rdf ex-39.rdf ex-40.rdf \
+ex-41.rdf ex-46.rdf ex-47.rdf ex-48.rdf ex-49.rdf ex-51.rdf \
+ex-53.rdf ex-54.rdf ex-56.rdf ex-57.rdf ex-58.rdf ex-61.rdf \
+22-rdf-syntax-ns.rdf rdfs-namespace.rdf rdf-schema.rdf \
+owl-schema.rdf daml-oil.rdf wine.rdf
+
+# ex-55 fails with libxml2
+# libxml2 bug report: http://bugs.gnome.org/show_bug.cgi?id=159219
+RDF_MAYFAIL_XML_TEST_FILES=ex-55.rdf
+
+RDF_BAD_TEST_FILES=bad-00.rdf bad-01.rdf bad-02.rdf bad-03.rdf \
+bad-04.rdf bad-05.rdf bad-06.rdf bad-07.rdf bad-08.rdf bad-09.rdf \
+bad-10.rdf bad-11.rdf bad-12.rdf bad-13.rdf bad-14.rdf bad-18.rdf \
+bad-19.rdf bad-20.rdf bad-21.rdf bad-22.rdf bad-23.rdf
+
+RDF_BAD_NFC_TEST_FILES=bad-15.rdf bad-16.rdf bad-17.rdf
+
+RDF_WARN_TEST_FILES=warn-00.rdf warn-02.rdf warn-04.rdf \
+warn-05.rdf warn-06.rdf warn-07.rdf \
+$(RDF_BAGID_TEST_FILES)
+
+RDF_ASSUME_TEST_FILES=ex-19.rdf
+
+RDF_SCAN_TEST_FILES=ex-52.svg
+
+RDF_OUT_FILES=ex-00.out ex-01.out ex-02.out ex-03.out ex-04.out ex-05.out \
+ex-06.out ex-07.out ex-08.out ex-09.out ex-10.out ex-11.out ex-12.out \
+ex-13.out ex-14.out ex-15.out ex-16.out ex-17.out ex-18.out \
+ex-20.out ex-21.out ex-22.out ex-23.out ex-24.out ex-25.out ex-26.out \
+ex-27.out ex-28.out ex-29.out ex-30.out ex-31.out ex-32.out ex-33.out \
+ex-34.out ex-35.out ex-36.out ex-37.out ex-38.out ex-39.out ex-40.out \
+ex-41.out ex-42.out ex-43.out ex-44.out ex-45.out ex-46.out ex-47.out \
+ex-48.out ex-49.out ex-51.out ex-53.out ex-54.out ex-55.out ex-56.out \
+ex-57.out ex-58.out ex-61.out \
+22-rdf-syntax-ns.out rdfs-namespace.out rdf-schema.out \
+owl-schema.out daml-oil.out wine.out
+
+RDF_HACK_OUT_FILES=ex-38-rdfxmla.out
+
+RDF_MAYFAIL_XML_OUT_FILES=ex-55.rdf
+
+RDF_WARN_OUT_FILES=warn-00.out warn-02.out warn-04.out \
+warn-05.out warn-06.out warn-07.out
+
+RDF_ASSUME_OUT_FILES=ex-19.out
+
+RDF_SCAN_OUT_FILES=ex-52.out
+
+RDF_SERIALIZE_TEST_FILES=ex-59.nt ex-60.nt
+RDF_SERIALIZE_OUT_FILES=ex-59.rdf ex-60.rdf
+
+
+# Used to make N-triples output consistent
+BASE_URI=http://librdf.org/raptor/tests/
+# for 22-rdf-syntax-ns.rdf
+RDF_NS_URI=http://www.w3.org/1999/02/22-rdf-syntax-ns
+# for rdfs-namespace.rdf (2002-04-30) and rdf-schema.rdf (2000-03-27)
+RDFS_NS_URI=http://www.w3.org/2000/01/rdf-schema
+
+OWL_DOC_URI="http://www.w3.org/2002/07/owl"
+
+DAML_OIL_DOC_URI="http://www.daml.org/2001/03/daml+oil"
+
+OWL_WINE_URI="http://www.w3.org/TR/owl-guide/wine.rdf"
+
+EXTRA_DIST = \
+ $(RDF_TEST_FILES) \
+ $(RDF_MAYFAIL_XML_TEST_FILES) \
+ $(RDF_ASSUME_TEST_FILES) \
+ $(RDF_SCAN_TEST_FILES) \
+ $(RDF_BAD_TEST_FILES) \
+ $(RDF_BAD_NFC_TEST_FILES) \
+ $(RDF_WARN_TEST_FILES) \
+ $(RDF_OUT_FILES) \
+ $(RDF_MAYFAIL_XML_OUT_FILES) \
+ $(RDF_ASSUME_OUT_FILES) \
+ $(RDF_SCAN_OUT_FILES) \
+ $(RDF_WARN_OUT_FILES) \
+ $(RDF_SERIALIZE_TEST_FILES) \
+ $(RDF_SERIALIZE_OUT_FILES) \
+ $(RDF_HACK_OUT_FILES)
+
+RAPPER = $(top_builddir)/utils/rapper
+RDFDIFF = $(top_builddir)/utils/rdfdiff
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+build-rdfdiff:
+ @(cd $(top_builddir)/utils ; $(MAKE) rdfdiff$(EXEEXT))
+
+check-local: build-rapper \
+check-rdf check-mayfail-xml-rdf check-assume-rdf check-scan-rdf \
+check-bad-rdf check-bad-nfc-rdf check-warn-rdf \
+check-rdfdiff check-rdfxml check-rdfxmla
+
+## Some non-GNU Make programs modify variables that appear in a target's
+## dependencies by prepending VPATH to filenames. We don't want this, so
+## we only specify the dependencies in maintainer mode, when GNU Make is
+## likely being used.
+##
+if MAINTAINER_MODE
+check_rdf_deps = $(RDF_TEST_FILES)
+endif
+
+check-rdf: build-rapper $(check_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing legal rdf/xml"; \
+ for test in $(RDF_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ if test $$name = 22-rdf-syntax-ns; then \
+ baseuri=$(RDF_NS_URI); \
+ elif test $$name = rdfs-namespace -o $$name = rdf-schema; then \
+ baseuri=$(RDFS_NS_URI); \
+ elif test $$name = owl-schema; then \
+ baseuri=$(OWL_DOC_URI); \
+ elif test $$name = daml-oil; then \
+ baseuri=$(DAML_OIL_DOC_URI); \
+ elif test $$name = wine; then \
+ baseuri=$(OWL_WINE_URI); \
+ else \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ fi; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o ntriples $(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status != 0 -a $$status != 2 ; then \
+ $(RECHO) FAILED returned status $$status; result=1; \
+ elif cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ if test $$status = 2 ; then \
+ $(RECHO) "ok with warnings"; grep Warning $$name.err; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_assume_rdf_deps = $(RDF_ASSUME_TEST_FILES)
+endif
+
+check-assume-rdf: build-rapper $(check_assume_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing rdf/xml known by context"; \
+ for test in $(RDF_ASSUME_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2>/dev/null; \
+ if cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res ; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_scan_rdf_deps = $(RDF_SCAN_TEST_FILES)
+endif
+
+check-scan-rdf: build-rapper $(check_scan_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing rdf/xml inside other XML"; \
+ for test in $(RDF_SCAN_TEST_FILES); do \
+ name=`echo $$test | sed -e 's/\..*//'` ; \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -f scanForRDF -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2>/dev/null; \
+ if cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res ; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_mayfail_xml_rdf_deps = $(RDF_MAYFAIL_XML_TEST_FILES)
+endif
+
+check-mayfail-xml-rdf: build-rapper $(check_mayfail_xml_rdf_deps)
+ @set +e; \
+ $(RECHO) "Testing rdf/xml (may fail due to XML parser bugs)"; \
+ for test in $(RDF_MAYFAIL_XML_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o ntriples $(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status != 0 -a $$status != 2 ; then \
+ $(RECHO) FAILED returned status $$status; \
+ elif cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ if test $$status = 2 ; then \
+ $(RECHO) "ok with warnings"; grep Warning $$name.err; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ set -e; exit 0
+
+if MAINTAINER_MODE
+check_bad_rdf_deps = $(RDF_BAD_TEST_FILES)
+endif
+
+check-bad-rdf: build-rapper $(check_bad_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing that bad rdf/xml fails"; \
+ for test in $(RDF_BAD_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "ok"; \
+ elif test $$status -eq 2 ; then \
+ $(RECHO) "FAILED - parsing succeeded with a warning"; \
+ cat $$name.res; grep Warning $$name.err; result=1; \
+ elif test $$status -eq 0 ; then \
+ $(RECHO) "FAILED - parsing succeeded but should have failed"; \
+ cat $$name.res; result=1; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; \
+ cat $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_bad_nfc_rdf_deps = $(RDF_BAD_NFC_TEST_FILES)
+endif
+
+check-bad-nfc-rdf: build-rapper $(check_bad_nfc_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing that rdf/xml with bad Unicode NFC fails"; \
+ for test in $(RDF_BAD_NFC_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -m strict -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "ok"; \
+ elif test $$status -eq 2 ; then \
+ $(RECHO) "FAILED - parsing succeeded with a warning"; \
+ cat $$name.res; grep Warning $$name.err; result=1; \
+ elif test $$status -eq 0 ; then \
+ $(RECHO) "FAILED - parsing succeeded but should have failed (NFC test)"; \
+ cat $$name.res; result=0; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; \
+ cat $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_warn_rdf_deps = $(RDF_WARN_TEST_FILES)
+endif
+
+check-warn-rdf: build-rapper $(check_warn_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing rdf/xml with warnings"; \
+ for test in $(RDF_WARN_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "FAILED - parsing failed when should have warned"; \
+ cat $$name.res; grep Error $$name.err; result=1; \
+ elif test $$status -eq 2 ; then \
+ if cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; \
+ cat $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_rdfdiff_deps = $(RDF_TEST_FILES)
+endif
+
+check-rdfdiff: build-rdfdiff $(check_rdfdiff_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing rdfdiff with legal rdf/xml"; \
+ for test in $(RDF_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RDFDIFF) $(srcdir)/$$test $(srcdir)/$$test > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ cat $$name.err; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_rdfxml_deps = $(RDF_SERIALIZE_TEST_FILES)
+endif
+
+check-rdfxml: build-rapper $(check_rdfxml_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing rdfxml serialization with legal rdf/xml"; \
+ for test in $(RDF_SERIALIZE_TEST_FILES); do \
+ name=`basename $$test .nt` ; \
+ baseuri=-; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i ntriples -o rdfxml $(srcdir)/$$test $$baseuri > $$name-rdfxml.rdf 2> $$name.err; \
+ if cmp $(srcdir)/$$name.rdf $$name-rdfxml.rdf >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.rdf $$name-rdfxml.rdf; result=1; \
+ fi; \
+ rm -f $$name-rdfxml.rdf $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_rdfxmla_deps = $(RDF_TEST_FILES)
+endif
+
+check-rdfxmla: build-rdfdiff build-rapper $(check_rdfxmla_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing rdfxml-abbrev serialization with legal rdf/xml"; \
+ for test in $(RDF_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=-; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o rdfxml-abbrev $(srcdir)/$$test $$baseuri > $$name-rdfxmla.rdf 2> $$name.err; \
+ status1=$$?; \
+ if test $$test = ex-38.rdf; then \
+ diff $(srcdir)/ex-38-rdfxmla.out $$name-rdfxmla.rdf > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ else \
+ $(RDFDIFF) $(srcdir)/$$test $$name-rdfxmla.rdf > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ fi; \
+ if test $$status1 = 0 -a $$status2 = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ echo $(RAPPER) -q -o rdfxml-abbrev $(srcdir)/$$test $$baseuri '>' $$name-rdfxmla.rdf; \
+ status1=$$?; \
+ echo $(RDFDIFF) $(srcdir)/$$test $$name-rdfxmla.rdf '>' $$name.res; \
+ echo "rapper + rdfdiff output:"; cat $$name.err; result=1; \
+ fi; \
+ rm -f $$name-rdfxmla.rdf $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+print-rdf-test-files:
+ @echo $(RDF_TEST_FILES) | tr ' ' '\012'
+
diff --git a/tests/rdfxml/Makefile.in b/tests/rdfxml/Makefile.in
new file mode 100644
index 0000000..9b7211b
--- /dev/null
+++ b/tests/rdfxml/Makefile.in
@@ -0,0 +1,790 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor RDF/XML tests
+#
+# Copyright (C) 2000-2008, David Beckett http://purl.org/net/dajobe/
+# Copyright (C) 2000-2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/rdfxml
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# These are errors in strict mode, warnings in lax - for now
+RDF_BAGID_TEST_FILES = ex-03.rdf ex-42.rdf ex-43.rdf ex-44.rdf ex-45.rdf
+RDF_TEST_FILES = ex-00.rdf ex-01.rdf ex-02.rdf ex-04.rdf ex-05.rdf \
+ex-06.rdf ex-07.rdf ex-08.rdf ex-09.rdf ex-10.rdf ex-11.rdf ex-12.rdf \
+ex-13.rdf ex-14.rdf ex-15.rdf ex-16.rdf ex-17.rdf ex-18.rdf \
+ex-20.rdf ex-21.rdf ex-22.rdf ex-23.rdf ex-24.rdf ex-25.rdf ex-26.rdf \
+ex-27.rdf ex-28.rdf ex-29.rdf ex-30.rdf ex-31.rdf ex-32.rdf ex-33.rdf \
+ex-34.rdf ex-35.rdf ex-36.rdf ex-37.rdf ex-38.rdf ex-39.rdf ex-40.rdf \
+ex-41.rdf ex-46.rdf ex-47.rdf ex-48.rdf ex-49.rdf ex-51.rdf \
+ex-53.rdf ex-54.rdf ex-56.rdf ex-57.rdf ex-58.rdf ex-61.rdf \
+22-rdf-syntax-ns.rdf rdfs-namespace.rdf rdf-schema.rdf \
+owl-schema.rdf daml-oil.rdf wine.rdf
+
+
+# ex-55 fails with libxml2
+# libxml2 bug report: http://bugs.gnome.org/show_bug.cgi?id=159219
+RDF_MAYFAIL_XML_TEST_FILES = ex-55.rdf
+RDF_BAD_TEST_FILES = bad-00.rdf bad-01.rdf bad-02.rdf bad-03.rdf \
+bad-04.rdf bad-05.rdf bad-06.rdf bad-07.rdf bad-08.rdf bad-09.rdf \
+bad-10.rdf bad-11.rdf bad-12.rdf bad-13.rdf bad-14.rdf bad-18.rdf \
+bad-19.rdf bad-20.rdf bad-21.rdf bad-22.rdf bad-23.rdf
+
+RDF_BAD_NFC_TEST_FILES = bad-15.rdf bad-16.rdf bad-17.rdf
+RDF_WARN_TEST_FILES = warn-00.rdf warn-02.rdf warn-04.rdf \
+warn-05.rdf warn-06.rdf warn-07.rdf \
+$(RDF_BAGID_TEST_FILES)
+
+RDF_ASSUME_TEST_FILES = ex-19.rdf
+RDF_SCAN_TEST_FILES = ex-52.svg
+RDF_OUT_FILES = ex-00.out ex-01.out ex-02.out ex-03.out ex-04.out ex-05.out \
+ex-06.out ex-07.out ex-08.out ex-09.out ex-10.out ex-11.out ex-12.out \
+ex-13.out ex-14.out ex-15.out ex-16.out ex-17.out ex-18.out \
+ex-20.out ex-21.out ex-22.out ex-23.out ex-24.out ex-25.out ex-26.out \
+ex-27.out ex-28.out ex-29.out ex-30.out ex-31.out ex-32.out ex-33.out \
+ex-34.out ex-35.out ex-36.out ex-37.out ex-38.out ex-39.out ex-40.out \
+ex-41.out ex-42.out ex-43.out ex-44.out ex-45.out ex-46.out ex-47.out \
+ex-48.out ex-49.out ex-51.out ex-53.out ex-54.out ex-55.out ex-56.out \
+ex-57.out ex-58.out ex-61.out \
+22-rdf-syntax-ns.out rdfs-namespace.out rdf-schema.out \
+owl-schema.out daml-oil.out wine.out
+
+RDF_HACK_OUT_FILES = ex-38-rdfxmla.out
+RDF_MAYFAIL_XML_OUT_FILES = ex-55.rdf
+RDF_WARN_OUT_FILES = warn-00.out warn-02.out warn-04.out \
+warn-05.out warn-06.out warn-07.out
+
+RDF_ASSUME_OUT_FILES = ex-19.out
+RDF_SCAN_OUT_FILES = ex-52.out
+RDF_SERIALIZE_TEST_FILES = ex-59.nt ex-60.nt
+RDF_SERIALIZE_OUT_FILES = ex-59.rdf ex-60.rdf
+
+# Used to make N-triples output consistent
+BASE_URI = http://librdf.org/raptor/tests/
+# for 22-rdf-syntax-ns.rdf
+RDF_NS_URI = http://www.w3.org/1999/02/22-rdf-syntax-ns
+# for rdfs-namespace.rdf (2002-04-30) and rdf-schema.rdf (2000-03-27)
+RDFS_NS_URI = http://www.w3.org/2000/01/rdf-schema
+OWL_DOC_URI = "http://www.w3.org/2002/07/owl"
+DAML_OIL_DOC_URI = "http://www.daml.org/2001/03/daml+oil"
+OWL_WINE_URI = "http://www.w3.org/TR/owl-guide/wine.rdf"
+EXTRA_DIST = \
+ $(RDF_TEST_FILES) \
+ $(RDF_MAYFAIL_XML_TEST_FILES) \
+ $(RDF_ASSUME_TEST_FILES) \
+ $(RDF_SCAN_TEST_FILES) \
+ $(RDF_BAD_TEST_FILES) \
+ $(RDF_BAD_NFC_TEST_FILES) \
+ $(RDF_WARN_TEST_FILES) \
+ $(RDF_OUT_FILES) \
+ $(RDF_MAYFAIL_XML_OUT_FILES) \
+ $(RDF_ASSUME_OUT_FILES) \
+ $(RDF_SCAN_OUT_FILES) \
+ $(RDF_WARN_OUT_FILES) \
+ $(RDF_SERIALIZE_TEST_FILES) \
+ $(RDF_SERIALIZE_OUT_FILES) \
+ $(RDF_HACK_OUT_FILES)
+
+RAPPER = $(top_builddir)/utils/rapper
+RDFDIFF = $(top_builddir)/utils/rdfdiff
+@MAINTAINER_MODE_TRUE@check_rdf_deps = $(RDF_TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_assume_rdf_deps = $(RDF_ASSUME_TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_scan_rdf_deps = $(RDF_SCAN_TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_mayfail_xml_rdf_deps = $(RDF_MAYFAIL_XML_TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_bad_rdf_deps = $(RDF_BAD_TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_bad_nfc_rdf_deps = $(RDF_BAD_NFC_TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_warn_rdf_deps = $(RDF_WARN_TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_rdfdiff_deps = $(RDF_TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_rdfxml_deps = $(RDF_SERIALIZE_TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_rdfxmla_deps = $(RDF_TEST_FILES)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/rdfxml/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/rdfxml/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-am check-local clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+build-rdfdiff:
+ @(cd $(top_builddir)/utils ; $(MAKE) rdfdiff$(EXEEXT))
+
+check-local: build-rapper \
+check-rdf check-mayfail-xml-rdf check-assume-rdf check-scan-rdf \
+check-bad-rdf check-bad-nfc-rdf check-warn-rdf \
+check-rdfdiff check-rdfxml check-rdfxmla
+
+check-rdf: build-rapper $(check_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing legal rdf/xml"; \
+ for test in $(RDF_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ if test $$name = 22-rdf-syntax-ns; then \
+ baseuri=$(RDF_NS_URI); \
+ elif test $$name = rdfs-namespace -o $$name = rdf-schema; then \
+ baseuri=$(RDFS_NS_URI); \
+ elif test $$name = owl-schema; then \
+ baseuri=$(OWL_DOC_URI); \
+ elif test $$name = daml-oil; then \
+ baseuri=$(DAML_OIL_DOC_URI); \
+ elif test $$name = wine; then \
+ baseuri=$(OWL_WINE_URI); \
+ else \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ fi; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o ntriples $(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status != 0 -a $$status != 2 ; then \
+ $(RECHO) FAILED returned status $$status; result=1; \
+ elif cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ if test $$status = 2 ; then \
+ $(RECHO) "ok with warnings"; grep Warning $$name.err; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+check-assume-rdf: build-rapper $(check_assume_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing rdf/xml known by context"; \
+ for test in $(RDF_ASSUME_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2>/dev/null; \
+ if cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res ; \
+ done; \
+ set -e; exit $$result
+
+check-scan-rdf: build-rapper $(check_scan_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing rdf/xml inside other XML"; \
+ for test in $(RDF_SCAN_TEST_FILES); do \
+ name=`echo $$test | sed -e 's/\..*//'` ; \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -f scanForRDF -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2>/dev/null; \
+ if cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res ; \
+ done; \
+ set -e; exit $$result
+
+check-mayfail-xml-rdf: build-rapper $(check_mayfail_xml_rdf_deps)
+ @set +e; \
+ $(RECHO) "Testing rdf/xml (may fail due to XML parser bugs)"; \
+ for test in $(RDF_MAYFAIL_XML_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o ntriples $(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status != 0 -a $$status != 2 ; then \
+ $(RECHO) FAILED returned status $$status; \
+ elif cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ if test $$status = 2 ; then \
+ $(RECHO) "ok with warnings"; grep Warning $$name.err; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ set -e; exit 0
+
+check-bad-rdf: build-rapper $(check_bad_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing that bad rdf/xml fails"; \
+ for test in $(RDF_BAD_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "ok"; \
+ elif test $$status -eq 2 ; then \
+ $(RECHO) "FAILED - parsing succeeded with a warning"; \
+ cat $$name.res; grep Warning $$name.err; result=1; \
+ elif test $$status -eq 0 ; then \
+ $(RECHO) "FAILED - parsing succeeded but should have failed"; \
+ cat $$name.res; result=1; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; \
+ cat $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+check-bad-nfc-rdf: build-rapper $(check_bad_nfc_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing that rdf/xml with bad Unicode NFC fails"; \
+ for test in $(RDF_BAD_NFC_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -m strict -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "ok"; \
+ elif test $$status -eq 2 ; then \
+ $(RECHO) "FAILED - parsing succeeded with a warning"; \
+ cat $$name.res; grep Warning $$name.err; result=1; \
+ elif test $$status -eq 0 ; then \
+ $(RECHO) "FAILED - parsing succeeded but should have failed (NFC test)"; \
+ cat $$name.res; result=0; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; \
+ cat $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+check-warn-rdf: build-rapper $(check_warn_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing rdf/xml with warnings"; \
+ for test in $(RDF_WARN_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=$(BASE_URI)$$name.rdf; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "FAILED - parsing failed when should have warned"; \
+ cat $$name.res; grep Error $$name.err; result=1; \
+ elif test $$status -eq 2 ; then \
+ if cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; \
+ cat $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+check-rdfdiff: build-rdfdiff $(check_rdfdiff_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing rdfdiff with legal rdf/xml"; \
+ for test in $(RDF_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RDFDIFF) $(srcdir)/$$test $(srcdir)/$$test > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ cat $$name.err; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+check-rdfxml: build-rapper $(check_rdfxml_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing rdfxml serialization with legal rdf/xml"; \
+ for test in $(RDF_SERIALIZE_TEST_FILES); do \
+ name=`basename $$test .nt` ; \
+ baseuri=-; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i ntriples -o rdfxml $(srcdir)/$$test $$baseuri > $$name-rdfxml.rdf 2> $$name.err; \
+ if cmp $(srcdir)/$$name.rdf $$name-rdfxml.rdf >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.rdf $$name-rdfxml.rdf; result=1; \
+ fi; \
+ rm -f $$name-rdfxml.rdf $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+check-rdfxmla: build-rdfdiff build-rapper $(check_rdfxmla_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing rdfxml-abbrev serialization with legal rdf/xml"; \
+ for test in $(RDF_TEST_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=-; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o rdfxml-abbrev $(srcdir)/$$test $$baseuri > $$name-rdfxmla.rdf 2> $$name.err; \
+ status1=$$?; \
+ if test $$test = ex-38.rdf; then \
+ diff $(srcdir)/ex-38-rdfxmla.out $$name-rdfxmla.rdf > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ else \
+ $(RDFDIFF) $(srcdir)/$$test $$name-rdfxmla.rdf > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ fi; \
+ if test $$status1 = 0 -a $$status2 = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; \
+ echo $(RAPPER) -q -o rdfxml-abbrev $(srcdir)/$$test $$baseuri '>' $$name-rdfxmla.rdf; \
+ status1=$$?; \
+ echo $(RDFDIFF) $(srcdir)/$$test $$name-rdfxmla.rdf '>' $$name.res; \
+ echo "rapper + rdfdiff output:"; cat $$name.err; result=1; \
+ fi; \
+ rm -f $$name-rdfxmla.rdf $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+print-rdf-test-files:
+ @echo $(RDF_TEST_FILES) | tr ' ' '\012'
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/rdfxml/bad-00.rdf b/tests/rdfxml/bad-00.rdf
new file mode 100644
index 0000000..bc09cd1
--- /dev/null
+++ b/tests/rdfxml/bad-00.rdf
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- A property must have only one resource value -->
+
+ <rdf:Description rdf:about="http://example.org/node1">
+ <ex:prop1>
+ <rdf:Description rdf:about="http://example.org/node2"/>
+ <rdf:Description rdf:about="http://example.org/node3"/>
+ </ex:prop1>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-01.rdf b/tests/rdfxml/bad-01.rdf
new file mode 100644
index 0000000..4366c8f
--- /dev/null
+++ b/tests/rdfxml/bad-01.rdf
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns/">
+
+ <!-- A property must have only one node value -->
+
+ <rdf:Description rdf:about="http://example.org/node0">
+ <ex:mainprop>
+
+ <rdf:Description>
+ <ex:prop1>val1</ex:prop1>
+ </rdf:Description>
+
+ <rdf:Description>
+ <ex:prop2>val2</ex:prop2>
+ </rdf:Description>
+
+ </ex:mainprop>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-02.rdf b/tests/rdfxml/bad-02.rdf
new file mode 100644
index 0000000..8da30c3
--- /dev/null
+++ b/tests/rdfxml/bad-02.rdf
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns/">
+
+ <!-- Multiple rdf:ID values -->
+
+ <rdf:Description rdf:ID="foo">
+ <ex:prop>bar1</ex:prop>
+ </rdf:Description>
+
+ <rdf:Description rdf:ID="foo">
+ <ex:prop>bar2</ex:prop>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-03.rdf b/tests/rdfxml/bad-03.rdf
new file mode 100644
index 0000000..b4a6897
--- /dev/null
+++ b/tests/rdfxml/bad-03.rdf
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns/">
+
+ <!-- Multiple rdf:bagID values -->
+
+ <rdf:Description rdf:bagID="foo">
+ <ex:prop>bar1</ex:prop>
+ </rdf:Description>
+
+ <rdf:Description rdf:bagID="foo">
+ <ex:prop>bar2</ex:prop>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-04.rdf b/tests/rdfxml/bad-04.rdf
new file mode 100644
index 0000000..871c065
--- /dev/null
+++ b/tests/rdfxml/bad-04.rdf
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns/">
+
+ <!-- Check rdf:ID rdf:bagID shared names fail -->
+
+ <rdf:Description rdf:ID="foo" rdf:bagID="foo">
+ <ex:prop>bar2</ex:prop>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-05.rdf b/tests/rdfxml/bad-05.rdf
new file mode 100644
index 0000000..d132302
--- /dev/null
+++ b/tests/rdfxml/bad-05.rdf
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xml:base="http://example.org/triples">
+
+ <!-- rdf:bagID is forbidden but generally ignored on
+ resource property element -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <ex:prop1 rdf:bagID="bag1" rdf:resource="http://example.org/node2" />
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-06.rdf b/tests/rdfxml/bad-06.rdf
new file mode 100644
index 0000000..b5ec6c6
--- /dev/null
+++ b/tests/rdfxml/bad-06.rdf
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xml:base="http://example.org/triples">
+
+ <!-- rdf:bagID forbidden but generally ignored on literal property element -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <ex:prop1 rdf:bagID="bag1">val</ex:prop1>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-07.rdf b/tests/rdfxml/bad-07.rdf
new file mode 100644
index 0000000..469f832
--- /dev/null
+++ b/tests/rdfxml/bad-07.rdf
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xml:base="http://example.org/triples">
+
+ <!-- rdf:bagID is forbidden but generally ignored on
+ parseTypeLiteral property element -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <ex:prop1 rdf:parseType="Literal" rdf:bagID="bag1">val</ex:prop1>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-08.rdf b/tests/rdfxml/bad-08.rdf
new file mode 100644
index 0000000..6a06742
--- /dev/null
+++ b/tests/rdfxml/bad-08.rdf
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xml:base="http://example.org/triples">
+
+ <!-- rdf:bagID is forbidden but generally ignored on
+ parseTypeLiteral property element -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <ex:prop1 rdf:parseType="Resource" rdf:bagID="bag1">
+ <ex:prop2>val2</ex:prop2>
+ </ex:prop1>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-09.rdf b/tests/rdfxml/bad-09.rdf
new file mode 100644
index 0000000..7c615ba
--- /dev/null
+++ b/tests/rdfxml/bad-09.rdf
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xml:base="http://example.org/triples">
+
+ <!-- rdf:bagID is forbidden but generally ignored on
+ parseTypeCollection property element -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <ex:prop1 rdf:parseType="Collection" rdf:bagID="bag1">
+ <rdf:Description rdf:about="http://example.org/node2/" />
+ </ex:prop1>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-10.rdf b/tests/rdfxml/bad-10.rdf
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfxml/bad-10.rdf
diff --git a/tests/rdfxml/bad-11.rdf b/tests/rdfxml/bad-11.rdf
new file mode 100644
index 0000000..83fa042
--- /dev/null
+++ b/tests/rdfxml/bad-11.rdf
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex=""
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- Illegal xmlns:ex above - no namespace name (URI) given -->
+
+ <!-- No triples should be generated here -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <ex:prop1 rdf:resource="http://example.org/node2" />
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-12.rdf b/tests/rdfxml/bad-12.rdf
new file mode 100644
index 0000000..94931a2
--- /dev/null
+++ b/tests/rdfxml/bad-12.rdf
@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:bad="http://www.w3.org/1999/02/22-rdf-syntax-ns#x">
+
+ <!-- Should give an error about above 'bad' namespace declaration -->
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-13.rdf b/tests/rdfxml/bad-13.rdf
new file mode 100644
index 0000000..1ddbd8b
--- /dev/null
+++ b/tests/rdfxml/bad-13.rdf
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns/">
+
+ <!-- A property element cannot take rdf:about -->
+
+ <rdf:Description rdf:about="http://example.org/node0">
+ <ex:prop rdf:about="http://example.org/blah" />
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-14.rdf b/tests/rdfxml/bad-14.rdf
new file mode 100644
index 0000000..c77c7e5
--- /dev/null
+++ b/tests/rdfxml/bad-14.rdf
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns/">
+
+ <!-- rdf:Description is not a legal property attribute -->
+
+ <rdf:Description rdf:about="http://example.org/node0"
+ rdf:Description="blah">
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-15.rdf b/tests/rdfxml/bad-15.rdf
new file mode 100644
index 0000000..73f9830
--- /dev/null
+++ b/tests/rdfxml/bad-15.rdf
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns/">
+
+ <!-- property attribute with illegal NFC -->
+
+ <!-- The ü below is two characters a u followed by
+ #x308 (encoded as two UTF-8 octets #xCC #x88).
+ It should be displayed identically to ü (character #xFC encoded
+ as two UTF-8 octets #xC3 #xBC). -->
+
+ <rdf:Description rdf:about="http://example.org/node0"
+ ex:blah="ü">
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-16.rdf b/tests/rdfxml/bad-16.rdf
new file mode 100644
index 0000000..222d159
--- /dev/null
+++ b/tests/rdfxml/bad-16.rdf
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns/">
+
+ <!-- property element with illegal NFC -->
+
+ <!-- The ü below is two characters a u followed by
+ #x308 (encoded as two UTF-8 octets #xCC #x88).
+ It should be displayed identically to ü (character #xFC encoded
+ as two UTF-8 octets #xC3 #xBC). -->
+
+ <rdf:Description rdf:about="http://example.org/node0">
+ <ex:blah>ü</ex:blah>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-17.rdf b/tests/rdfxml/bad-17.rdf
new file mode 100644
index 0000000..8f43742
--- /dev/null
+++ b/tests/rdfxml/bad-17.rdf
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns/">
+
+ <!-- property element parseType="Literal" with illegal NFC -->
+
+ <!-- The ü below is two characters a u followed by
+ #x308 (encoded as two UTF-8 octets #xCC #x88).
+ It should be displayed identically to ü (character #xFC encoded
+ as two UTF-8 octets #xC3 #xBC). -->
+
+ <rdf:Description rdf:about="http://example.org/node0">
+ <ex:blah rdf:parseType="Literal">ü</ex:blah>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-18.rdf b/tests/rdfxml/bad-18.rdf
new file mode 100644
index 0000000..0b56d3d
--- /dev/null
+++ b/tests/rdfxml/bad-18.rdf
@@ -0,0 +1,7 @@
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- check a node element without a namespace fails -->
+
+ <foo rdf:about="http://example.org/node0" rdf:value="text" />
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-19.rdf b/tests/rdfxml/bad-19.rdf
new file mode 100644
index 0000000..5e35247
--- /dev/null
+++ b/tests/rdfxml/bad-19.rdf
@@ -0,0 +1,10 @@
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://www.example.org/ns#">
+
+ <!-- check a property element without a namespace fails -->
+
+ <rdf:Description rdf:about="http://example.org/node0">
+ <prop>content</prop>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-20.rdf b/tests/rdfxml/bad-20.rdf
new file mode 100644
index 0000000..cbd4630
--- /dev/null
+++ b/tests/rdfxml/bad-20.rdf
@@ -0,0 +1,6 @@
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- check non-namespaced element does not crash parser -->
+
+ <t xmlns="" rdf:about="http://example.org/" />
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-21.rdf b/tests/rdfxml/bad-21.rdf
new file mode 100644
index 0000000..dba0c57
--- /dev/null
+++ b/tests/rdfxml/bad-21.rdf
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/">
+
+ <!-- Check non-namespaced attributes on a property are reported -->
+
+ <rdf:Description rdf:about="http://example.org/res">
+ <rdf:value cie="2" foo="3" bar="4">foo</rdf:value>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-22.rdf b/tests/rdfxml/bad-22.rdf
new file mode 100644
index 0000000..d57649b
--- /dev/null
+++ b/tests/rdfxml/bad-22.rdf
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns/">
+
+ <!-- rdf:li is not a legal property attribute -->
+
+ <rdf:Description rdf:about="http://example.org/node0"
+ rdf:li="blah">
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/bad-23.rdf b/tests/rdfxml/bad-23.rdf
new file mode 100644
index 0000000..d4beb8f
--- /dev/null
+++ b/tests/rdfxml/bad-23.rdf
@@ -0,0 +1,10 @@
+<rdf:RDF
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns/">
+
+ <!-- cannot have both a nodeElement content and property attributes -->
+
+ <rdf:Description>
+ <ex:pred rdf:value="bar"><rdf:Description/></ex:pred>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/daml-oil.out b/tests/rdfxml/daml-oil.out
new file mode 100644
index 0000000..81a91b3
--- /dev/null
+++ b/tests/rdfxml/daml-oil.out
@@ -0,0 +1,214 @@
+<http://www.daml.org/2001/03/daml+oil> <http://www.daml.org/2001/03/daml+oil#versionInfo> "$Id: daml+oil.daml,v 1.7 2001/06/06 01:38:21 mdean Exp $" .
+<http://www.daml.org/2001/03/daml+oil> <http://www.daml.org/2001/03/daml+oil#imports> <http://www.w3.org/2000/01/rdf-schema> .
+<http://www.daml.org/2001/03/daml+oil#Class> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#Class> <http://www.w3.org/2000/01/rdf-schema#label> "Class" .
+<http://www.daml.org/2001/03/daml+oil#Class> <http://www.w3.org/2000/01/rdf-schema#comment> "\n The class of all \"object\" classes\n " .
+<http://www.daml.org/2001/03/daml+oil#Class> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#Datatype> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#Datatype> <http://www.w3.org/2000/01/rdf-schema#label> "Datatype" .
+<http://www.daml.org/2001/03/daml+oil#Datatype> <http://www.w3.org/2000/01/rdf-schema#comment> "\n The class of all datatype classes\n " .
+<http://www.daml.org/2001/03/daml+oil#Datatype> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#Thing> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#Thing> <http://www.w3.org/2000/01/rdf-schema#label> "Thing" .
+<http://www.daml.org/2001/03/daml+oil#Thing> <http://www.w3.org/2000/01/rdf-schema#comment> "\n The most general (object) class in DAML.\n This is equal to the union of any class and its complement.\n " .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#List> .
+_:genid1 <http://www.daml.org/2001/03/daml+oil#first> <http://www.daml.org/2001/03/daml+oil#Nothing> .
+<http://www.daml.org/2001/03/daml+oil#Nothing> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+_:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#List> .
+_:genid3 <http://www.daml.org/2001/03/daml+oil#first> _:genid2 .
+_:genid1 <http://www.daml.org/2001/03/daml+oil#rest> _:genid3 .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+_:genid2 <http://www.daml.org/2001/03/daml+oil#complementOf> <http://www.daml.org/2001/03/daml+oil#Nothing> .
+_:genid3 <http://www.daml.org/2001/03/daml+oil#rest> <http://www.daml.org/2001/03/daml+oil#nil> .
+<http://www.daml.org/2001/03/daml+oil#Thing> <http://www.daml.org/2001/03/daml+oil#unionOf> _:genid1 .
+<http://www.daml.org/2001/03/daml+oil#Nothing> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#Nothing> <http://www.w3.org/2000/01/rdf-schema#label> "Nothing" .
+<http://www.daml.org/2001/03/daml+oil#Nothing> <http://www.w3.org/2000/01/rdf-schema#comment> "the class with no things in it." .
+<http://www.daml.org/2001/03/daml+oil#Nothing> <http://www.daml.org/2001/03/daml+oil#complementOf> <http://www.daml.org/2001/03/daml+oil#Thing> .
+<http://www.daml.org/2001/03/daml+oil#equivalentTo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#Property> .
+<http://www.daml.org/2001/03/daml+oil#equivalentTo> <http://www.w3.org/2000/01/rdf-schema#label> "equivalentTo" .
+<http://www.daml.org/2001/03/daml+oil#equivalentTo> <http://www.daml.org/2001/03/daml+oil#comment> "\n for equivalentTo(X, Y), read X is an equivalent term to Y.\n " .
+<http://www.daml.org/2001/03/daml+oil#sameClassAs> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#Property> .
+<http://www.daml.org/2001/03/daml+oil#sameClassAs> <http://www.w3.org/2000/01/rdf-schema#label> "sameClassAs" .
+<http://www.daml.org/2001/03/daml+oil#sameClassAs> <http://www.daml.org/2001/03/daml+oil#comment> "\n for sameClassAs(X, Y), read X is an equivalent class to Y.\n cf OIL Equivalent\n " .
+<http://www.daml.org/2001/03/daml+oil#sameClassAs> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.daml.org/2001/03/daml+oil#equivalentTo> .
+<http://www.daml.org/2001/03/daml+oil#sameClassAs> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#subClassOf> .
+<http://www.daml.org/2001/03/daml+oil#sameClassAs> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#sameClassAs> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#Property> .
+<http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/2000/01/rdf-schema#label> "samePropertyAs" .
+<http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for samePropertyAs(P, R), read P is an equivalent property to R.\n " .
+<http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.daml.org/2001/03/daml+oil#equivalentTo> .
+<http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> .
+<http://www.daml.org/2001/03/daml+oil#sameIndividualAs> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#Property> .
+<http://www.daml.org/2001/03/daml+oil#sameIndividualAs> <http://www.w3.org/2000/01/rdf-schema#label> "sameIndividualAs" .
+<http://www.daml.org/2001/03/daml+oil#sameIndividualAs> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for sameIndividualAs(a, b), read a is the same individual as b.\n " .
+<http://www.daml.org/2001/03/daml+oil#sameIndividualAs> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.daml.org/2001/03/daml+oil#equivalentTo> .
+<http://www.daml.org/2001/03/daml+oil#sameIndividualAs> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Thing> .
+<http://www.daml.org/2001/03/daml+oil#sameIndividualAs> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.daml.org/2001/03/daml+oil#Thing> .
+<http://www.daml.org/2001/03/daml+oil#disjointWith> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#disjointWith> <http://www.w3.org/2000/01/rdf-schema#label> "disjointWith" .
+<http://www.daml.org/2001/03/daml+oil#disjointWith> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for disjointWith(X, Y) read: X and Y have no members in common.\n cf OIL Disjoint\n " .
+<http://www.daml.org/2001/03/daml+oil#disjointWith> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#disjointWith> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#differentIndividualFrom> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#Property> .
+<http://www.daml.org/2001/03/daml+oil#differentIndividualFrom> <http://www.w3.org/2000/01/rdf-schema#label> "differentIndividualFrom" .
+<http://www.daml.org/2001/03/daml+oil#differentIndividualFrom> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for differentIndividualFrom(a, b), read a is not the same individual as b.\n " .
+<http://www.daml.org/2001/03/daml+oil#differentIndividualFrom> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Thing> .
+<http://www.daml.org/2001/03/daml+oil#differentIndividualFrom> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.daml.org/2001/03/daml+oil#Thing> .
+<http://www.daml.org/2001/03/daml+oil#unionOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#unionOf> <http://www.w3.org/2000/01/rdf-schema#label> "unionOf" .
+<http://www.daml.org/2001/03/daml+oil#unionOf> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for unionOf(X, Y) read: X is the union of the classes in the list Y;\n i.e. if something is in any of the classes in Y, it's in X, and vice versa.\n cf OIL OR\n " .
+<http://www.daml.org/2001/03/daml+oil#unionOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#unionOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.daml.org/2001/03/daml+oil#List> .
+<http://www.daml.org/2001/03/daml+oil#disjointUnionOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#disjointUnionOf> <http://www.w3.org/2000/01/rdf-schema#label> "disjointUnionOf" .
+<http://www.daml.org/2001/03/daml+oil#disjointUnionOf> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for disjointUnionOf(X, Y) read: X is the disjoint union of the classes in\n the list Y: (a) for any c1 and c2 in Y, disjointWith(c1, c2),\n and (b) unionOf(X, Y). i.e. if something is in any of the classes in Y, it's\n in X, and vice versa.\n cf OIL disjoint-covered\n " .
+<http://www.daml.org/2001/03/daml+oil#disjointUnionOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#disjointUnionOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.daml.org/2001/03/daml+oil#List> .
+<http://www.daml.org/2001/03/daml+oil#intersectionOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#intersectionOf> <http://www.w3.org/2000/01/rdf-schema#label> "intersectionOf" .
+<http://www.daml.org/2001/03/daml+oil#intersectionOf> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for intersectionOf(X, Y) read: X is the intersection of the classes in the list Y;\n i.e. if something is in all the classes in Y, then it's in X, and vice versa.\n cf OIL AND\n " .
+<http://www.daml.org/2001/03/daml+oil#intersectionOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#intersectionOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.daml.org/2001/03/daml+oil#List> .
+<http://www.daml.org/2001/03/daml+oil#complementOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#complementOf> <http://www.w3.org/2000/01/rdf-schema#label> "complementOf" .
+<http://www.daml.org/2001/03/daml+oil#complementOf> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for complementOf(X, Y) read: X is the complement of Y; if something is in Y,\n then it's not in X, and vice versa.\n cf OIL NOT\n " .
+<http://www.daml.org/2001/03/daml+oil#complementOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#complementOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#oneOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#oneOf> <http://www.w3.org/2000/01/rdf-schema#label> "oneOf" .
+<http://www.daml.org/2001/03/daml+oil#oneOf> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for oneOf(C, L) read everything in C is one of the\n things in L;\n This lets us define classes by enumerating the members.\n cf OIL OneOf\n " .
+<http://www.daml.org/2001/03/daml+oil#oneOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#oneOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.daml.org/2001/03/daml+oil#List> .
+<http://www.daml.org/2001/03/daml+oil#Restriction> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#Restriction> <http://www.w3.org/2000/01/rdf-schema#label> "Restriction" .
+<http://www.daml.org/2001/03/daml+oil#Restriction> <http://www.w3.org/2000/01/rdf-schema#comment> "\n something is in the class R if it satisfies the attached restrictions, \n and vice versa.\n " .
+<http://www.daml.org/2001/03/daml+oil#Restriction> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.daml.org/2001/03/daml+oil#Class> .
+<http://www.daml.org/2001/03/daml+oil#onProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#onProperty> <http://www.w3.org/2000/01/rdf-schema#label> "onProperty" .
+<http://www.daml.org/2001/03/daml+oil#onProperty> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for onProperty(R, P), read:\n R is a restricted with respect to property P.\n " .
+<http://www.daml.org/2001/03/daml+oil#onProperty> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Restriction> .
+<http://www.daml.org/2001/03/daml+oil#onProperty> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#toClass> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#toClass> <http://www.w3.org/2000/01/rdf-schema#label> "toClass" .
+<http://www.daml.org/2001/03/daml+oil#toClass> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for onProperty(R, P) and toClass(R, X), read:\n i is in class R if and only if for all j, P(i, j) implies type(j, X).\n cf OIL ValueType\n " .
+<http://www.daml.org/2001/03/daml+oil#toClass> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Restriction> .
+<http://www.daml.org/2001/03/daml+oil#toClass> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#hasValue> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#hasValue> <http://www.w3.org/2000/01/rdf-schema#label> "hasValue" .
+<http://www.daml.org/2001/03/daml+oil#hasValue> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for onProperty(R, P) and hasValue(R, V), read:\n i is in class R if and only if P(i, V).\n cf OIL HasFiller\n " .
+<http://www.daml.org/2001/03/daml+oil#hasValue> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Restriction> .
+<http://www.daml.org/2001/03/daml+oil#hasClass> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#hasClass> <http://www.w3.org/2000/01/rdf-schema#label> "hasClass" .
+<http://www.daml.org/2001/03/daml+oil#hasClass> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for onProperty(R, P) and hasClass(R, X), read:\n i is in class R if and only if for some j, P(i, j) and type(j, X).\n cf OIL HasValue\n " .
+<http://www.daml.org/2001/03/daml+oil#hasClass> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Restriction> .
+<http://www.daml.org/2001/03/daml+oil#hasClass> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#minCardinality> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#minCardinality> <http://www.w3.org/2000/01/rdf-schema#label> "minCardinality" .
+<http://www.daml.org/2001/03/daml+oil#minCardinality> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for onProperty(R, P) and minCardinality(R, n), read:\n i is in class R if and only if there are at least n distinct j with P(i, j).\n cf OIL MinCardinality\n " .
+<http://www.daml.org/2001/03/daml+oil#minCardinality> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Restriction> .
+<http://www.daml.org/2001/03/daml+oil#minCardinality> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger> .
+<http://www.daml.org/2001/03/daml+oil#maxCardinality> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#maxCardinality> <http://www.w3.org/2000/01/rdf-schema#label> "maxCardinality" .
+<http://www.daml.org/2001/03/daml+oil#maxCardinality> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for onProperty(R, P) and maxCardinality(R, n), read:\n i is in class R if and only if there are at most n distinct j with P(i, j).\n cf OIL MaxCardinality\n " .
+<http://www.daml.org/2001/03/daml+oil#maxCardinality> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Restriction> .
+<http://www.daml.org/2001/03/daml+oil#maxCardinality> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger> .
+<http://www.daml.org/2001/03/daml+oil#cardinality> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#cardinality> <http://www.w3.org/2000/01/rdf-schema#label> "cardinality" .
+<http://www.daml.org/2001/03/daml+oil#cardinality> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for onProperty(R, P) and cardinality(R, n), read:\n i is in class R if and only if there are exactly n distinct j with P(i, j).\n cf OIL Cardinality\n " .
+<http://www.daml.org/2001/03/daml+oil#cardinality> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Restriction> .
+<http://www.daml.org/2001/03/daml+oil#cardinality> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger> .
+<http://www.daml.org/2001/03/daml+oil#hasClassQ> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#hasClassQ> <http://www.w3.org/2000/01/rdf-schema#label> "hasClassQ" .
+<http://www.daml.org/2001/03/daml+oil#hasClassQ> <http://www.w3.org/2000/01/rdf-schema#comment> "\n property for specifying class restriction with cardinalityQ constraints\n " .
+<http://www.daml.org/2001/03/daml+oil#hasClassQ> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Restriction> .
+<http://www.daml.org/2001/03/daml+oil#hasClassQ> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#minCardinalityQ> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#minCardinalityQ> <http://www.w3.org/2000/01/rdf-schema#label> "minCardinality" .
+<http://www.daml.org/2001/03/daml+oil#minCardinalityQ> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for onProperty(R, P), minCardinalityQ(R, n) and hasClassQ(R, X), read:\n i is in class R if and only if there are at least n distinct j with P(i, j) \n and type(j, X).\n cf OIL MinCardinality\n " .
+<http://www.daml.org/2001/03/daml+oil#minCardinalityQ> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Restriction> .
+<http://www.daml.org/2001/03/daml+oil#minCardinalityQ> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger> .
+<http://www.daml.org/2001/03/daml+oil#maxCardinalityQ> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#maxCardinalityQ> <http://www.w3.org/2000/01/rdf-schema#label> "maxCardinality" .
+<http://www.daml.org/2001/03/daml+oil#maxCardinalityQ> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for onProperty(R, P), maxCardinalityQ(R, n) and hasClassQ(R, X), read:\n i is in class R if and only if there are at most n distinct j with P(i, j)\n and type(j, X).\n cf OIL MaxCardinality\n " .
+<http://www.daml.org/2001/03/daml+oil#maxCardinalityQ> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Restriction> .
+<http://www.daml.org/2001/03/daml+oil#maxCardinalityQ> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger> .
+<http://www.daml.org/2001/03/daml+oil#cardinalityQ> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#cardinalityQ> <http://www.w3.org/2000/01/rdf-schema#label> "cardinality" .
+<http://www.daml.org/2001/03/daml+oil#cardinalityQ> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for onProperty(R, P), cardinalityQ(R, n) and hasClassQ(R, X), read:\n i is in class R if and only if there are exactly n distinct j with P(i, j)\n and type(j, X).\n cf OIL Cardinality\n " .
+<http://www.daml.org/2001/03/daml+oil#cardinalityQ> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#Restriction> .
+<http://www.daml.org/2001/03/daml+oil#cardinalityQ> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger> .
+<http://www.daml.org/2001/03/daml+oil#ObjectProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#ObjectProperty> <http://www.w3.org/2000/01/rdf-schema#label> "ObjectProperty" .
+<http://www.daml.org/2001/03/daml+oil#ObjectProperty> <http://www.w3.org/2000/01/rdf-schema#comment> "\n if P is an ObjectProperty, and P(x, y), then y is an object.\n " .
+<http://www.daml.org/2001/03/daml+oil#ObjectProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#DatatypeProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#DatatypeProperty> <http://www.w3.org/2000/01/rdf-schema#label> "DatatypeProperty" .
+<http://www.daml.org/2001/03/daml+oil#DatatypeProperty> <http://www.w3.org/2000/01/rdf-schema#comment> "\n if P is a DatatypeProperty, and P(x, y), then y is a data value.\n " .
+<http://www.daml.org/2001/03/daml+oil#DatatypeProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#inverseOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#inverseOf> <http://www.w3.org/2000/01/rdf-schema#label> "inverseOf" .
+<http://www.daml.org/2001/03/daml+oil#inverseOf> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for inverseOf(R, S) read: R is the inverse of S; i.e.\n if R(x, y) then S(y, x) and vice versa.\n cf OIL inverseRelationOf\n " .
+<http://www.daml.org/2001/03/daml+oil#inverseOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#ObjectProperty> .
+<http://www.daml.org/2001/03/daml+oil#inverseOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.daml.org/2001/03/daml+oil#ObjectProperty> .
+<http://www.daml.org/2001/03/daml+oil#TransitiveProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#TransitiveProperty> <http://www.w3.org/2000/01/rdf-schema#label> "TransitiveProperty" .
+<http://www.daml.org/2001/03/daml+oil#TransitiveProperty> <http://www.w3.org/2000/01/rdf-schema#comment> "\n if P is a TransitiveProperty, then if P(x, y) and P(y, z) then P(x, z).\n cf OIL TransitiveProperty.\n " .
+<http://www.daml.org/2001/03/daml+oil#TransitiveProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.daml.org/2001/03/daml+oil#ObjectProperty> .
+<http://www.daml.org/2001/03/daml+oil#UniqueProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#UniqueProperty> <http://www.w3.org/2000/01/rdf-schema#label> "UniqueProperty" .
+<http://www.daml.org/2001/03/daml+oil#UniqueProperty> <http://www.w3.org/2000/01/rdf-schema#comment> "\n compare with maxCardinality=1; e.g. integer successor:\n if P is a UniqueProperty, then if P(x, y) and P(x, z) then y=z.\n cf OIL FunctionalProperty.\n " .
+<http://www.daml.org/2001/03/daml+oil#UniqueProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#UnambiguousProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#UnambiguousProperty> <http://www.w3.org/2000/01/rdf-schema#label> "UnambiguousProperty" .
+<http://www.daml.org/2001/03/daml+oil#UnambiguousProperty> <http://www.w3.org/2000/01/rdf-schema#comment> "\n if P is an UnambiguousProperty, then if P(x, y) and P(z, y) then x=z.\n aka injective. e.g. if firstBorne(m, Susan)\n and firstBorne(n, Susan) then m and n are the same.\n " .
+<http://www.daml.org/2001/03/daml+oil#UnambiguousProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.daml.org/2001/03/daml+oil#ObjectProperty> .
+<http://www.daml.org/2001/03/daml+oil#List> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#List> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> .
+<http://www.daml.org/2001/03/daml+oil#nil> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#List> .
+<http://www.daml.org/2001/03/daml+oil#nil> <http://www.w3.org/2000/01/rdf-schema#comment> "\n the empty list; this used to be called Empty.\n " .
+<http://www.daml.org/2001/03/daml+oil#first> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#first> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#List> .
+<http://www.daml.org/2001/03/daml+oil#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#rest> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#List> .
+<http://www.daml.org/2001/03/daml+oil#rest> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.daml.org/2001/03/daml+oil#List> .
+<http://www.daml.org/2001/03/daml+oil#item> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#item> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for item(L, I) read: I is an item in L; either first(L, I)\n or item(R, I) where rest(L, R).\n " .
+<http://www.daml.org/2001/03/daml+oil#item> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.daml.org/2001/03/daml+oil#List> .
+<http://www.daml.org/2001/03/daml+oil#Ontology> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#Ontology> <http://www.w3.org/2000/01/rdf-schema#label> "Ontology" .
+<http://www.daml.org/2001/03/daml+oil#Ontology> <http://www.w3.org/2000/01/rdf-schema#comment> "\n An Ontology is a document that describes\n a vocabulary of terms for communication between\n (human and) automated agents.\n " .
+<http://www.daml.org/2001/03/daml+oil#versionInfo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#versionInfo> <http://www.w3.org/2000/01/rdf-schema#label> "versionInfo" .
+<http://www.daml.org/2001/03/daml+oil#versionInfo> <http://www.w3.org/2000/01/rdf-schema#comment> "\n generally, a string giving information about this\n version; e.g. RCS/CVS keywords\n " .
+<http://www.daml.org/2001/03/daml+oil#imports> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#imports> <http://www.w3.org/2000/01/rdf-schema#label> "imports" .
+<http://www.daml.org/2001/03/daml+oil#imports> <http://www.w3.org/2000/01/rdf-schema#comment> "\n for imports(X, Y) read: X imports Y;\n i.e. X asserts the* contents of Y by reference;\n i.e. if imports(X, Y) and you believe X and Y says something,\n then you should believe it.\n Note: \"the contents\" is, in the general case,\n an il-formed definite description. Different\n interactions with a resource may expose contents\n that vary with time, data format, preferred language,\n requestor credentials, etc. So for \"the contents\",\n read \"any contents\".\n " .
+<http://www.daml.org/2001/03/daml+oil> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#Ontology> .
+<http://www.daml.org/2001/03/daml+oil> <http://www.daml.org/2001/03/daml+oil#imports> <http://www.w3.org/2000/01/rdf-schema> .
+<http://www.daml.org/2001/03/daml+oil#subPropertyOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#subPropertyOf> <http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> .
+<http://www.daml.org/2001/03/daml+oil#Literal> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#Literal> <http://www.daml.org/2001/03/daml+oil#sameClassAs> <http://www.w3.org/2000/01/rdf-schema#Literal> .
+<http://www.daml.org/2001/03/daml+oil#Property> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.daml.org/2001/03/daml+oil#Property> <http://www.daml.org/2001/03/daml+oil#sameClassAs> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#type> <http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> .
+<http://www.daml.org/2001/03/daml+oil#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#value> <http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> .
+<http://www.daml.org/2001/03/daml+oil#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#subClassOf> <http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/2000/01/rdf-schema#subClassOf> .
+<http://www.daml.org/2001/03/daml+oil#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#domain> <http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/2000/01/rdf-schema#domain> .
+<http://www.daml.org/2001/03/daml+oil#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#range> <http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/2000/01/rdf-schema#range> .
+<http://www.daml.org/2001/03/daml+oil#label> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#label> <http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/2000/01/rdf-schema#label> .
+<http://www.daml.org/2001/03/daml+oil#comment> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#comment> <http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/2000/01/rdf-schema#comment> .
+<http://www.daml.org/2001/03/daml+oil#seeAlso> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#seeAlso> <http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/2000/01/rdf-schema#seeAlso> .
+<http://www.daml.org/2001/03/daml+oil#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.daml.org/2001/03/daml+oil#isDefinedBy> <http://www.daml.org/2001/03/daml+oil#samePropertyAs> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> .
+<http://www.daml.org/2001/03/daml+oil#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.daml.org/2001/03/daml+oil#seeAlso> .
diff --git a/tests/rdfxml/daml-oil.rdf b/tests/rdfxml/daml-oil.rdf
new file mode 100644
index 0000000..ea2975e
--- /dev/null
+++ b/tests/rdfxml/daml-oil.rdf
@@ -0,0 +1,492 @@
+<!-- $Revision: 1.7 $ of $Date: 2001/06/06 01:38:21 $. -->
+
+<rdf:RDF
+ xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:daml="http://www.daml.org/2001/03/daml+oil#"
+ xmlns ="http://www.daml.org/2001/03/daml+oil#"
+>
+
+<rdf:Description rdf:about="">
+ <versionInfo>$Id: daml+oil.daml,v 1.7 2001/06/06 01:38:21 mdean Exp $</versionInfo>
+ <imports rdf:resource="http://www.w3.org/2000/01/rdf-schema"/>
+</rdf:Description>
+
+<!-- (meta) classes of "object" and datatype classes -->
+
+<rdfs:Class rdf:ID="Class">
+ <rdfs:label>Class</rdfs:label>
+ <rdfs:comment>
+ The class of all "object" classes
+ </rdfs:comment>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="Datatype">
+ <rdfs:label>Datatype</rdfs:label>
+ <rdfs:comment>
+ The class of all datatype classes
+ </rdfs:comment>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
+</rdfs:Class>
+
+<!-- Pre-defined top/bottom thing/nothing most/least-general (object) classes. -->
+
+<Class rdf:ID="Thing">
+ <rdfs:label>Thing</rdfs:label>
+ <rdfs:comment>
+ The most general (object) class in DAML.
+ This is equal to the union of any class and its complement.
+ </rdfs:comment>
+ <unionOf rdf:parseType="daml:collection">
+ <rdfs:Class rdf:about="#Nothing"/>
+ <rdfs:Class>
+ <complementOf rdf:resource="#Nothing"/>
+ </rdfs:Class>
+ </unionOf>
+</Class>
+
+<Class rdf:ID="Nothing">
+ <rdfs:label>Nothing</rdfs:label>
+ <rdfs:comment>the class with no things in it.</rdfs:comment>
+ <complementOf rdf:resource="#Thing"/>
+</Class>
+
+<!-- Terms for building classes from other classes. -->
+
+<Property rdf:ID="equivalentTo"> <!-- equals? equiv? renames? -->
+ <rdfs:label>equivalentTo</rdfs:label>
+ <comment>
+ for equivalentTo(X, Y), read X is an equivalent term to Y.
+ </comment>
+</Property>
+
+<Property rdf:ID="sameClassAs">
+ <rdfs:label>sameClassAs</rdfs:label>
+ <comment>
+ for sameClassAs(X, Y), read X is an equivalent class to Y.
+ cf OIL Equivalent
+ </comment>
+ <rdfs:subPropertyOf rdf:resource="#equivalentTo"/>
+ <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#subClassOf"/>
+ <rdfs:domain rdf:resource="#Class"/>
+ <rdfs:range rdf:resource="#Class"/>
+</Property>
+
+<Property rdf:ID="samePropertyAs">
+ <rdfs:label>samePropertyAs</rdfs:label>
+ <rdfs:comment>
+ for samePropertyAs(P, R), read P is an equivalent property to R.
+ </rdfs:comment>
+ <rdfs:subPropertyOf rdf:resource="#equivalentTo"/>
+ <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#subPropertyOf"/>
+</Property>
+
+<Property rdf:ID="sameIndividualAs">
+ <rdfs:label>sameIndividualAs</rdfs:label>
+ <rdfs:comment>
+ for sameIndividualAs(a, b), read a is the same individual as b.
+ </rdfs:comment>
+ <rdfs:subPropertyOf rdf:resource="#equivalentTo"/>
+ <rdfs:domain rdf:resource="#Thing"/>
+ <rdfs:range rdf:resource="#Thing"/>
+</Property>
+
+<rdf:Property rdf:ID="disjointWith">
+ <rdfs:label>disjointWith</rdfs:label>
+ <rdfs:comment>
+ for disjointWith(X, Y) read: X and Y have no members in common.
+ cf OIL Disjoint
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Class"/>
+ <rdfs:range rdf:resource="#Class"/>
+</rdf:Property>
+
+<Property rdf:ID="differentIndividualFrom">
+ <rdfs:label>differentIndividualFrom</rdfs:label>
+ <rdfs:comment>
+ for differentIndividualFrom(a, b), read a is not the same individual as b.
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Thing"/>
+ <rdfs:range rdf:resource="#Thing"/>
+</Property>
+
+
+<!-- NOTE: the Disjoint class has been deleted: use disjointWith -->
+<!-- or disjointUnionOf instead. -->
+
+<rdf:Property rdf:ID="unionOf">
+ <rdfs:label>unionOf</rdfs:label>
+ <rdfs:comment>
+ for unionOf(X, Y) read: X is the union of the classes in the list Y;
+ i.e. if something is in any of the classes in Y, it's in X, and vice versa.
+ cf OIL OR
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Class"/>
+ <rdfs:range rdf:resource="#List"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="disjointUnionOf">
+ <rdfs:label>disjointUnionOf</rdfs:label>
+ <rdfs:comment>
+ for disjointUnionOf(X, Y) read: X is the disjoint union of the classes in
+ the list Y: (a) for any c1 and c2 in Y, disjointWith(c1, c2),
+ and (b) unionOf(X, Y). i.e. if something is in any of the classes in Y, it's
+ in X, and vice versa.
+ cf OIL disjoint-covered
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Class"/>
+ <rdfs:range rdf:resource="#List"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="intersectionOf">
+ <rdfs:label>intersectionOf</rdfs:label>
+ <rdfs:comment>
+ for intersectionOf(X, Y) read: X is the intersection of the classes in the list Y;
+ i.e. if something is in all the classes in Y, then it's in X, and vice versa.
+ cf OIL AND
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Class"/>
+ <rdfs:range rdf:resource="#List"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="complementOf">
+ <rdfs:label>complementOf</rdfs:label>
+ <rdfs:comment>
+ for complementOf(X, Y) read: X is the complement of Y; if something is in Y,
+ then it's not in X, and vice versa.
+ cf OIL NOT
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Class"/>
+ <rdfs:range rdf:resource="#Class"/>
+</rdf:Property>
+
+<!-- Term for building classes by enumerating their elements -->
+
+<rdf:Property rdf:ID="oneOf">
+ <rdfs:label>oneOf</rdfs:label>
+ <rdfs:comment>
+ for oneOf(C, L) read everything in C is one of the
+ things in L;
+ This lets us define classes by enumerating the members.
+ cf OIL OneOf
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Class"/>
+ <rdfs:range rdf:resource="#List"/>
+</rdf:Property>
+
+<!-- Terms for building classes by restricting their properties. -->
+
+<rdfs:Class rdf:ID="Restriction">
+ <rdfs:label>Restriction</rdfs:label>
+ <rdfs:comment>
+ something is in the class R if it satisfies the attached restrictions,
+ and vice versa.
+ </rdfs:comment>
+ <rdfs:subClassOf rdf:resource="#Class"/>
+</rdfs:Class>
+
+<rdf:Property rdf:ID="onProperty">
+ <rdfs:label>onProperty</rdfs:label>
+ <rdfs:comment>
+ for onProperty(R, P), read:
+ R is a restricted with respect to property P.
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="toClass">
+ <rdfs:label>toClass</rdfs:label>
+ <rdfs:comment>
+ for onProperty(R, P) and toClass(R, X), read:
+ i is in class R if and only if for all j, P(i, j) implies type(j, X).
+ cf OIL ValueType
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="hasValue">
+ <rdfs:label>hasValue</rdfs:label>
+ <rdfs:comment>
+ for onProperty(R, P) and hasValue(R, V), read:
+ i is in class R if and only if P(i, V).
+ cf OIL HasFiller
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Restriction"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="hasClass">
+ <rdfs:label>hasClass</rdfs:label>
+ <rdfs:comment>
+ for onProperty(R, P) and hasClass(R, X), read:
+ i is in class R if and only if for some j, P(i, j) and type(j, X).
+ cf OIL HasValue
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
+</rdf:Property>
+
+<!-- Note that cardinality restrictions on transitive properties, or -->
+<!-- properties with transitive sub-properties, compromise decidability. -->
+
+<rdf:Property rdf:ID="minCardinality">
+ <rdfs:label>minCardinality</rdfs:label>
+ <rdfs:comment>
+ for onProperty(R, P) and minCardinality(R, n), read:
+ i is in class R if and only if there are at least n distinct j with P(i, j).
+ cf OIL MinCardinality
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="maxCardinality">
+ <rdfs:label>maxCardinality</rdfs:label>
+ <rdfs:comment>
+ for onProperty(R, P) and maxCardinality(R, n), read:
+ i is in class R if and only if there are at most n distinct j with P(i, j).
+ cf OIL MaxCardinality
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="cardinality">
+ <rdfs:label>cardinality</rdfs:label>
+ <rdfs:comment>
+ for onProperty(R, P) and cardinality(R, n), read:
+ i is in class R if and only if there are exactly n distinct j with P(i, j).
+ cf OIL Cardinality
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="hasClassQ">
+ <rdfs:label>hasClassQ</rdfs:label>
+ <rdfs:comment>
+ property for specifying class restriction with cardinalityQ constraints
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="minCardinalityQ">
+ <rdfs:label>minCardinality</rdfs:label>
+ <rdfs:comment>
+ for onProperty(R, P), minCardinalityQ(R, n) and hasClassQ(R, X), read:
+ i is in class R if and only if there are at least n distinct j with P(i, j)
+ and type(j, X).
+ cf OIL MinCardinality
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="maxCardinalityQ">
+ <rdfs:label>maxCardinality</rdfs:label>
+ <rdfs:comment>
+ for onProperty(R, P), maxCardinalityQ(R, n) and hasClassQ(R, X), read:
+ i is in class R if and only if there are at most n distinct j with P(i, j)
+ and type(j, X).
+ cf OIL MaxCardinality
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="cardinalityQ">
+ <rdfs:label>cardinality</rdfs:label>
+ <rdfs:comment>
+ for onProperty(R, P), cardinalityQ(R, n) and hasClassQ(R, X), read:
+ i is in class R if and only if there are exactly n distinct j with P(i, j)
+ and type(j, X).
+ cf OIL Cardinality
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger"/>
+</rdf:Property>
+
+<!-- Classes and Properties for different kinds of Property -->
+
+<rdfs:Class rdf:ID="ObjectProperty">
+ <rdfs:label>ObjectProperty</rdfs:label>
+ <rdfs:comment>
+ if P is an ObjectProperty, and P(x, y), then y is an object.
+ </rdfs:comment>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="DatatypeProperty">
+ <rdfs:label>DatatypeProperty</rdfs:label>
+ <rdfs:comment>
+ if P is a DatatypeProperty, and P(x, y), then y is a data value.
+ </rdfs:comment>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdfs:Class>
+
+<rdf:Property rdf:ID="inverseOf">
+ <rdfs:label>inverseOf</rdfs:label>
+ <rdfs:comment>
+ for inverseOf(R, S) read: R is the inverse of S; i.e.
+ if R(x, y) then S(y, x) and vice versa.
+ cf OIL inverseRelationOf
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#ObjectProperty"/>
+ <rdfs:range rdf:resource="#ObjectProperty"/>
+</rdf:Property>
+
+<rdfs:Class rdf:ID="TransitiveProperty">
+ <rdfs:label>TransitiveProperty</rdfs:label>
+ <rdfs:comment>
+ if P is a TransitiveProperty, then if P(x, y) and P(y, z) then P(x, z).
+ cf OIL TransitiveProperty.
+ </rdfs:comment>
+ <rdfs:subClassOf rdf:resource="#ObjectProperty"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="UniqueProperty">
+ <rdfs:label>UniqueProperty</rdfs:label>
+ <rdfs:comment>
+ compare with maxCardinality=1; e.g. integer successor:
+ if P is a UniqueProperty, then if P(x, y) and P(x, z) then y=z.
+ cf OIL FunctionalProperty.
+ </rdfs:comment>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="UnambiguousProperty">
+ <rdfs:label>UnambiguousProperty</rdfs:label>
+ <rdfs:comment>
+ if P is an UnambiguousProperty, then if P(x, y) and P(z, y) then x=z.
+ aka injective. e.g. if firstBorne(m, Susan)
+ and firstBorne(n, Susan) then m and n are the same.
+ </rdfs:comment>
+ <rdfs:subClassOf rdf:resource="#ObjectProperty"/>
+</rdfs:Class>
+
+<!-- List terminology. -->
+
+<rdfs:Class rdf:ID="List">
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq"/>
+</rdfs:Class>
+
+<List rdf:ID="nil">
+ <rdfs:comment>
+ the empty list; this used to be called Empty.
+ </rdfs:comment>
+</List>
+
+<rdf:Property rdf:ID="first">
+ <rdfs:domain rdf:resource="#List"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="rest">
+ <rdfs:domain rdf:resource="#List"/>
+ <rdfs:range rdf:resource="#List"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="item">
+ <rdfs:comment>
+ for item(L, I) read: I is an item in L; either first(L, I)
+ or item(R, I) where rest(L, R).
+ </rdfs:comment>
+ <rdfs:domain rdf:resource="#List"/>
+</rdf:Property>
+
+<!-- A class for ontologies themselves... -->
+
+<rdfs:Class rdf:ID="Ontology">
+ <rdfs:label>Ontology</rdfs:label>
+ <rdfs:comment>
+ An Ontology is a document that describes
+ a vocabulary of terms for communication between
+ (human and) automated agents.
+ </rdfs:comment>
+</rdfs:Class>
+
+<rdf:Property rdf:ID="versionInfo">
+ <rdfs:label>versionInfo</rdfs:label>
+ <rdfs:comment>
+ generally, a string giving information about this
+ version; e.g. RCS/CVS keywords
+ </rdfs:comment>
+</rdf:Property>
+
+<!-- Importing, i.e. assertion by reference -->
+
+<rdf:Property rdf:ID="imports">
+ <rdfs:label>imports</rdfs:label>
+ <rdfs:comment>
+ for imports(X, Y) read: X imports Y;
+ i.e. X asserts the* contents of Y by reference;
+ i.e. if imports(X, Y) and you believe X and Y says something,
+ then you should believe it.
+ Note: "the contents" is, in the general case,
+ an il-formed definite description. Different
+ interactions with a resource may expose contents
+ that vary with time, data format, preferred language,
+ requestor credentials, etc. So for "the contents",
+ read "any contents".
+ </rdfs:comment>
+</rdf:Property>
+
+<!-- Importing terms from RDF/RDFS -->
+
+<!-- first, assert the contents of the RDF schema by reference -->
+<Ontology rdf:about="">
+ <imports rdf:resource="http://www.w3.org/2000/01/rdf-schema"/>
+</Ontology>
+
+<rdf:Property rdf:ID="subPropertyOf">
+ <samePropertyAs rdf:resource="http://www.w3.org/2000/01/rdf-schema#subPropertyOf"/>
+</rdf:Property>
+
+<rdfs:Class rdf:ID="Literal">
+ <sameClassAs rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="Property">
+ <sameClassAs rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdfs:Class>
+
+<rdf:Property rdf:ID="type">
+ <samePropertyAs rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#type"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="value">
+ <samePropertyAs rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#value"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="subClassOf">
+ <samePropertyAs rdf:resource="http://www.w3.org/2000/01/rdf-schema#subClassOf"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="domain">
+ <samePropertyAs rdf:resource="http://www.w3.org/2000/01/rdf-schema#domain"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="range">
+ <samePropertyAs rdf:resource="http://www.w3.org/2000/01/rdf-schema#range"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="label">
+ <samePropertyAs rdf:resource="http://www.w3.org/2000/01/rdf-schema#label"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="comment">
+ <samePropertyAs rdf:resource="http://www.w3.org/2000/01/rdf-schema#comment"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="seeAlso">
+ <samePropertyAs rdf:resource="http://www.w3.org/2000/01/rdf-schema#seeAlso"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="isDefinedBy">
+ <samePropertyAs rdf:resource="http://www.w3.org/2000/01/rdf-schema#isDefinedBy"/>
+ <rdfs:subPropertyOf rdf:resource="#seeAlso"/>
+</rdf:Property>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-00.out b/tests/rdfxml/ex-00.out
new file mode 100644
index 0000000..fb7e191
--- /dev/null
+++ b/tests/rdfxml/ex-00.out
@@ -0,0 +1 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/a> .
diff --git a/tests/rdfxml/ex-00.rdf b/tests/rdfxml/ex-00.rdf
new file mode 100644
index 0000000..e4d09e7
--- /dev/null
+++ b/tests/rdfxml/ex-00.rdf
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <!-- This may be distinguishable from <a></a> in XML parsers -->
+ <a xmlns="http://example.org/"/>
+</rdf:RDF>
+
diff --git a/tests/rdfxml/ex-01.out b/tests/rdfxml/ex-01.out
new file mode 100644
index 0000000..81b68a9
--- /dev/null
+++ b/tests/rdfxml/ex-01.out
@@ -0,0 +1,2 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/a> .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/a> .
diff --git a/tests/rdfxml/ex-01.rdf b/tests/rdfxml/ex-01.rdf
new file mode 100644
index 0000000..b97a61f
--- /dev/null
+++ b/tests/rdfxml/ex-01.rdf
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <a xmlns="http://example.org/"></a>
+ <!-- This is indistinguishable from: -->
+ <a xmlns="http://example.org/"/>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-02.out b/tests/rdfxml/ex-02.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfxml/ex-02.out
diff --git a/tests/rdfxml/ex-02.rdf b/tests/rdfxml/ex-02.rdf
new file mode 100644
index 0000000..c07fffe
--- /dev/null
+++ b/tests/rdfxml/ex-02.rdf
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <!-- test that empty descriptions work with variants of the
+ about attribute -->
+ <rdf:Description rdf:about="http://example.org/resource/"/>
+
+ <!-- Below is deprecated -->
+ <rdf:Description about="http://example.org/resource/"/>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-03.out b/tests/rdfxml/ex-03.out
new file mode 100644
index 0000000..0cb6496
--- /dev/null
+++ b/tests/rdfxml/ex-03.out
@@ -0,0 +1 @@
+<http://example.org/bags#b> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> .
diff --git a/tests/rdfxml/ex-03.rdf b/tests/rdfxml/ex-03.rdf
new file mode 100644
index 0000000..ca4fe74
--- /dev/null
+++ b/tests/rdfxml/ex-03.rdf
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <!-- Test rdf:Description and all combinations of syntax-related
+ rdf: attributes that can be used on it
+ -->
+ <rdf:Description rdf:about="http://example.org/resource/"/>
+ <rdf:Description rdf:about="http://example.org/resource/" rdf:bagID="b"
+ xml:base="http://example.org/bags"/>
+
+ <rdf:Description about="http://example.org/resource/"/>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-04.out b/tests/rdfxml/ex-04.out
new file mode 100644
index 0000000..aa89fee
--- /dev/null
+++ b/tests/rdfxml/ex-04.out
@@ -0,0 +1,3 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> "a" .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#_2> "b" .
diff --git a/tests/rdfxml/ex-04.rdf b/tests/rdfxml/ex-04.rdf
new file mode 100644
index 0000000..a91a3e9
--- /dev/null
+++ b/tests/rdfxml/ex-04.rdf
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <!-- Test rdf:Seq with rdf:_ ordinal properties -->
+ <rdf:Seq rdf:_1="a" rdf:_2="b"/>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-05.out b/tests/rdfxml/ex-05.out
new file mode 100644
index 0000000..3c96542
--- /dev/null
+++ b/tests/rdfxml/ex-05.out
@@ -0,0 +1,4 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> "a" .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#_2> "b" .
+_:genid1 <http://example.com/properties/something> "foo" .
diff --git a/tests/rdfxml/ex-05.rdf b/tests/rdfxml/ex-05.rdf
new file mode 100644
index 0000000..541546a
--- /dev/null
+++ b/tests/rdfxml/ex-05.rdf
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:a="http://example.com/properties/" >
+ <!-- Test rdf:Seq with rdf:_ ordinal properties and extra stuff -->
+ <rdf:Seq rdf:_1="a" rdf:_2="b" a:something="foo"/>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-06.out b/tests/rdfxml/ex-06.out
new file mode 100644
index 0000000..e2a78bd
--- /dev/null
+++ b/tests/rdfxml/ex-06.out
@@ -0,0 +1,5 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> <http://example.com/resource/a> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#_2> <http://example.com/resource/b> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#_3> <http://example.com/resource/c> .
+<http://example.com/somewhere/> <http://example.com/properties/foo> _:genid1 .
diff --git a/tests/rdfxml/ex-06.rdf b/tests/rdfxml/ex-06.rdf
new file mode 100644
index 0000000..65d449b
--- /dev/null
+++ b/tests/rdfxml/ex-06.rdf
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <!-- Test rdf:Seq with rdf:li to a resource -->
+ <rdf:Description rdf:about="http://example.com/somewhere/">
+ <a:foo xmlns:a="http://example.com/properties/">
+ <rdf:Seq>
+ <rdf:li rdf:resource="http://example.com/resource/a"/>
+ <rdf:li rdf:resource="http://example.com/resource/b"/>
+ <rdf:li rdf:resource="http://example.com/resource/c"/>
+ </rdf:Seq>
+ </a:foo>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-07.out b/tests/rdfxml/ex-07.out
new file mode 100644
index 0000000..ca7d498
--- /dev/null
+++ b/tests/rdfxml/ex-07.out
@@ -0,0 +1,3 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> "some literal text"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.com/somewhere/> <http://example.com/properties/foo> _:genid1 .
diff --git a/tests/rdfxml/ex-07.rdf b/tests/rdfxml/ex-07.rdf
new file mode 100644
index 0000000..a242967
--- /dev/null
+++ b/tests/rdfxml/ex-07.rdf
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <!-- Test rdf:Seq with rdf:li and literal XML content -->
+ <rdf:Description rdf:about="http://example.com/somewhere/">
+ <a:foo xmlns:a="http://example.com/properties/">
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Literal">some literal text</rdf:li>
+ </rdf:Seq>
+ </a:foo>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-08.out b/tests/rdfxml/ex-08.out
new file mode 100644
index 0000000..1e79906
--- /dev/null
+++ b/tests/rdfxml/ex-08.out
@@ -0,0 +1,6 @@
+<http://example.com/resource1/> <http://example.com/properties/foo> "err" .
+<http://example.com/resource1/> <http://example.com/properties/bar> "hmm" .
+<http://example.com/resource1/> <http://example.com/properties/baz> "umm" .
+<http://example.com/resource2/> <http://example.com/somewhere/foo> "apple" .
+<http://example.com/resource2/> <http://example.com/somewhere/bar> "banana" .
+<http://example.com/resource2/> <http://example.com/somewhere/baz> "pear" .
diff --git a/tests/rdfxml/ex-08.rdf b/tests/rdfxml/ex-08.rdf
new file mode 100644
index 0000000..8e34873
--- /dev/null
+++ b/tests/rdfxml/ex-08.rdf
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:a="http://example.com/properties/">
+ <!-- Test rdf:Description with properties -->
+ <rdf:Description rdf:about="http://example.com/resource1/" a:foo="err" a:bar="hmm" a:baz="umm" />
+ <rdf:Description rdf:about="http://example.com/resource2/" xmlns:c="http://example.com/somewhere/" c:foo="apple" c:bar="banana" c:baz="pear" />
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-09.out b/tests/rdfxml/ex-09.out
new file mode 100644
index 0000000..5ce3198
--- /dev/null
+++ b/tests/rdfxml/ex-09.out
@@ -0,0 +1,3 @@
+<http://example.com/somewhere/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.com/properties/foo> .
+<http://example.com/somewhere/> <http://example.com/properties/bar> "content" .
+<http://example.com/somewhere/> <http://example.com/properties/baz> "blah" .
diff --git a/tests/rdfxml/ex-09.rdf b/tests/rdfxml/ex-09.rdf
new file mode 100644
index 0000000..5761f5c
--- /dev/null
+++ b/tests/rdfxml/ex-09.rdf
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <!-- Test typedNode with rdf:about -->
+ <foo xmlns="http://example.com/properties/" rdf:about="http://example.com/somewhere/">
+ <bar>content</bar>
+ <baz>blah</baz>
+ </foo>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-10.out b/tests/rdfxml/ex-10.out
new file mode 100644
index 0000000..b273117
--- /dev/null
+++ b/tests/rdfxml/ex-10.out
@@ -0,0 +1,6 @@
+<http://example.org/channel/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/rss/1.0/channel> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> <http://example.org/01> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#_2> <http://example.org/02> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#_3> <http://example.org/03> .
+<http://example.org/channel/> <http://purl.org/rss/1.0/items> _:genid1 .
diff --git a/tests/rdfxml/ex-10.rdf b/tests/rdfxml/ex-10.rdf
new file mode 100644
index 0000000..2eca6a2
--- /dev/null
+++ b/tests/rdfxml/ex-10.rdf
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://purl.org/rss/1.0/">
+ <!-- Check about rdf:li and rdf:resource -->
+ <channel rdf:about="http://example.org/channel/">
+ <items>
+ <rdf:Seq>
+ <rdf:li rdf:resource="http://example.org/01"/>
+ <rdf:li rdf:resource="http://example.org/02"/>
+ <rdf:li rdf:resource="http://example.org/03"/>
+ </rdf:Seq>
+ </items>
+ </channel>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-11.out b/tests/rdfxml/ex-11.out
new file mode 100644
index 0000000..59f9f29
--- /dev/null
+++ b/tests/rdfxml/ex-11.out
@@ -0,0 +1 @@
+<http://example.org/resource> <http://example.org/property> "\n <em xmlns=\"http://www.w3.org/1999/xhtml\">some markup</em>\n <a xmlns=\"http://www.w3.org/1999/xhtml\" href=\"http://example.org/somewhere/else\">blah</a>\n "^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
diff --git a/tests/rdfxml/ex-11.rdf b/tests/rdfxml/ex-11.rdf
new file mode 100644
index 0000000..db728aa
--- /dev/null
+++ b/tests/rdfxml/ex-11.rdf
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/"
+ xmlns="http://www.w3.org/1999/xhtml">
+ <!-- Check parseType literal with XML markup -->
+ <rdf:Description rdf:about="http://example.org/resource">
+ <ex:property rdf:parseType="Literal">
+ <em>some markup</em>
+ <a href="http://example.org/somewhere/else">blah</a>
+ </ex:property>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-12.out b/tests/rdfxml/ex-12.out
new file mode 100644
index 0000000..2b672da
--- /dev/null
+++ b/tests/rdfxml/ex-12.out
@@ -0,0 +1,10 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#List> .
+_:genid1 <http://www.daml.org/2001/03/daml+oil#first> <http://example.org/resource1> .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#List> .
+_:genid2 <http://www.daml.org/2001/03/daml+oil#first> <http://example.org/resource2> .
+_:genid1 <http://www.daml.org/2001/03/daml+oil#rest> _:genid2 .
+_:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#List> .
+_:genid3 <http://www.daml.org/2001/03/daml+oil#first> <http://example.org/resource3> .
+_:genid2 <http://www.daml.org/2001/03/daml+oil#rest> _:genid3 .
+_:genid3 <http://www.daml.org/2001/03/daml+oil#rest> <http://www.daml.org/2001/03/daml+oil#nil> .
+<http://example.org/resource> <http://example.org/property> _:genid1 .
diff --git a/tests/rdfxml/ex-12.rdf b/tests/rdfxml/ex-12.rdf
new file mode 100644
index 0000000..97328cc
--- /dev/null
+++ b/tests/rdfxml/ex-12.rdf
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/">
+ <!-- Check parseType daml:Collection -->
+ <rdf:Description rdf:about="http://example.org/resource">
+ <ex:property rdf:parseType="daml:collection">
+ <rdf:Description rdf:about="http://example.org/resource1"/>
+ <rdf:Description rdf:about="http://example.org/resource2"/>
+ <rdf:Description rdf:about="http://example.org/resource3"/>
+ </ex:property>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-13.out b/tests/rdfxml/ex-13.out
new file mode 100644
index 0000000..7b6b5da
--- /dev/null
+++ b/tests/rdfxml/ex-13.out
@@ -0,0 +1,3 @@
+_:genid2 <http://somewhere.example.com/base64> "jd8734djr08347jyd4" .
+_:genid1 <http://somewhere.example.com/hash-sha-1> _:genid2 .
+<http://www.w3.org/> <http://somewhere.example.com/xml-cannonicalized> _:genid1 .
diff --git a/tests/rdfxml/ex-13.rdf b/tests/rdfxml/ex-13.rdf
new file mode 100644
index 0000000..0791762
--- /dev/null
+++ b/tests/rdfxml/ex-13.rdf
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:play="http://somewhere.example.com/"
+ xmlns:enc="http://somewhere.example.com/">
+ <!-- Check this doesn't crash anymore - parseType="Resource" -->
+
+ <!-- Should generate 3 statements as described in ex-13.out -->
+
+<rdf:Description rdf:about="http://www.w3.org/">
+ <play:xml-cannonicalized rdf:parseType="Resource">
+ <enc:hash-sha-1 rdf:parseType="Resource">
+ <enc:base64>jd8734djr08347jyd4</enc:base64>
+ </enc:hash-sha-1>
+ </play:xml-cannonicalized>
+</rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-14.out b/tests/rdfxml/ex-14.out
new file mode 100644
index 0000000..5b19c55
--- /dev/null
+++ b/tests/rdfxml/ex-14.out
@@ -0,0 +1,4 @@
+<http://example.org/person1/> <http://www.mygenealogy.com/Parent> <http://librdf.org/raptor/tests/ex-14.rdf#Person_B> .
+<http://librdf.org/raptor/tests/ex-14.rdf#Person_B> <http://www.gedcom.com/Name> "John Doe" .
+<http://librdf.org/raptor/tests/ex-14.rdf#Person_B> <http://www.gedcom.com/Birthplace> "New York" .
+<http://librdf.org/raptor/tests/ex-14.rdf#Person_B> <http://www.gedcom.com/DOB> "19010101" .
diff --git a/tests/rdfxml/ex-14.rdf b/tests/rdfxml/ex-14.rdf
new file mode 100644
index 0000000..378c4cd
--- /dev/null
+++ b/tests/rdfxml/ex-14.rdf
@@ -0,0 +1,18 @@
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:gen="http://www.mygenealogy.com/"
+ xmlns:gdc="http://www.gedcom.com/">
+
+ <!-- Check this doesn't crash / leak memory handling propElm rdf:resource -->
+
+ <!-- Can't remember where this example came from, I've anonymised it -->
+
+ <rdf:Description rdf:about="http://example.org/person1/">
+ <gen:Parent rdf:resource="#Person_B"/>
+ </rdf:Description>
+
+ <rdf:Description rdf:ID="Person_B">
+ <gdc:Name>John Doe</gdc:Name>
+ <gdc:Birthplace>New York</gdc:Birthplace>
+ <gdc:DOB>19010101</gdc:DOB>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-15.out b/tests/rdfxml/ex-15.out
new file mode 100644
index 0000000..e7bb594
--- /dev/null
+++ b/tests/rdfxml/ex-15.out
@@ -0,0 +1 @@
+<http://example.com/resource1/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.com/Class/foo> .
diff --git a/tests/rdfxml/ex-15.rdf b/tests/rdfxml/ex-15.rdf
new file mode 100644
index 0000000..0923427
--- /dev/null
+++ b/tests/rdfxml/ex-15.rdf
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:a="http://example.com/properties/">
+ <!-- Test rdf:Description with rdf type attribute-->
+ <rdf:Description rdf:about="http://example.com/resource1/" rdf:type="http://example.com/Class/foo" />
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-16.out b/tests/rdfxml/ex-16.out
new file mode 100644
index 0000000..0b42c8a
--- /dev/null
+++ b/tests/rdfxml/ex-16.out
@@ -0,0 +1 @@
+<http://example.com/resource1/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "the content" .
diff --git a/tests/rdfxml/ex-16.rdf b/tests/rdfxml/ex-16.rdf
new file mode 100644
index 0000000..4300fdb
--- /dev/null
+++ b/tests/rdfxml/ex-16.rdf
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:a="http://example.com/properties/">
+ <!-- Test rdf:Description with rdf value attribute-->
+ <rdf:Description rdf:about="http://example.com/resource1/" rdf:value="the content" />
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-17.out b/tests/rdfxml/ex-17.out
new file mode 100644
index 0000000..b3d961f
--- /dev/null
+++ b/tests/rdfxml/ex-17.out
@@ -0,0 +1 @@
+<http://example.com/> <http://example.com/properties/property> "" .
diff --git a/tests/rdfxml/ex-17.rdf b/tests/rdfxml/ex-17.rdf
new file mode 100644
index 0000000..6c43ca7
--- /dev/null
+++ b/tests/rdfxml/ex-17.rdf
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:a="http://example.com/properties/">
+ <!-- Test empty propertyElt -->
+ <rdf:Description about="http://example.com/">
+ <a:property />
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-18.out b/tests/rdfxml/ex-18.out
new file mode 100644
index 0000000..8249861
--- /dev/null
+++ b/tests/rdfxml/ex-18.out
@@ -0,0 +1 @@
+<http://example.org/> <http://example.com/properties/prop> "Example" .
diff --git a/tests/rdfxml/ex-18.rdf b/tests/rdfxml/ex-18.rdf
new file mode 100644
index 0000000..1723d38
--- /dev/null
+++ b/tests/rdfxml/ex-18.rdf
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:a="http://example.com/properties/"
+ rdf:about="http://example.org/">
+ <!-- Test missing <rdf:RDF> outer container -->
+ <a:prop>Example</a:prop>
+</rdf:Description>
diff --git a/tests/rdfxml/ex-19.out b/tests/rdfxml/ex-19.out
new file mode 100644
index 0000000..81da8a0
--- /dev/null
+++ b/tests/rdfxml/ex-19.out
@@ -0,0 +1 @@
+<http://example.org/resource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/foo> .
diff --git a/tests/rdfxml/ex-19.rdf b/tests/rdfxml/ex-19.rdf
new file mode 100644
index 0000000..83efc23
--- /dev/null
+++ b/tests/rdfxml/ex-19.rdf
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<a:foo xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:a="http://example.org/"
+ rdf:about="http://example.org/resource"/>
diff --git a/tests/rdfxml/ex-20.out b/tests/rdfxml/ex-20.out
new file mode 100644
index 0000000..c19cb9a
--- /dev/null
+++ b/tests/rdfxml/ex-20.out
@@ -0,0 +1 @@
+<http://librdf.org/raptor/tests/ex-20.rdf#foo> <http://example.com/properties/property> <http://example.org/object> .
diff --git a/tests/rdfxml/ex-20.rdf b/tests/rdfxml/ex-20.rdf
new file mode 100644
index 0000000..15ad7ff
--- /dev/null
+++ b/tests/rdfxml/ex-20.rdf
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:a="http://example.com/properties/">
+ <!-- test that rdf:ID generates the right URI -->
+ <rdf:Description rdf:ID="foo">
+ <a:property rdf:resource="http://example.org/object"/>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-21.out b/tests/rdfxml/ex-21.out
new file mode 100644
index 0000000..01ecf19
--- /dev/null
+++ b/tests/rdfxml/ex-21.out
@@ -0,0 +1,7 @@
+<http://example.org/thing1> <http://example.org/foo#type> "val1" .
+<http://example.org/thing1> <http://example.org/bar#type> "val2" .
+<http://example.org/thing2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/foo#Description> .
+<http://example.org/thing2> <http://example.org/bar#prop1> "val1" .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/bar#Description> .
+_:genid1 <http://example.org/bar#about> "http://example.org/thing3" .
+_:genid1 <http://example.org/bar#prop1> "val1" .
diff --git a/tests/rdfxml/ex-21.rdf b/tests/rdfxml/ex-21.rdf
new file mode 100644
index 0000000..f6b95b9
--- /dev/null
+++ b/tests/rdfxml/ex-21.rdf
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rd="http://example.org/foo#"
+ xmlns:r="http://example.org/bar#">
+ <!-- Tests that the rdf prefix is recognised correctly -->
+ <rdf:Description rdf:about="http://example.org/thing1" rd:type="val1" r:type="val2" />
+ <rd:Description rdf:about="http://example.org/thing2" r:prop1="val1" />
+ <r:Description r:about="http://example.org/thing3" r:prop1="val1" />
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-22.out b/tests/rdfxml/ex-22.out
new file mode 100644
index 0000000..46b4e2e
--- /dev/null
+++ b/tests/rdfxml/ex-22.out
@@ -0,0 +1,4 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> .
+<http://librdf.org/raptor/tests/ex-22.rdf#myid> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example/org/foo/thing> .
+<http://librdf.org/raptor/tests/ex-22.rdf#myid> <http://example/org/foo/prop> "value" .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> <http://librdf.org/raptor/tests/ex-22.rdf#myid> .
diff --git a/tests/rdfxml/ex-22.rdf b/tests/rdfxml/ex-22.rdf
new file mode 100644
index 0000000..038d8e7
--- /dev/null
+++ b/tests/rdfxml/ex-22.rdf
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example/org/foo/">
+ <!-- Test rdf:ID is handled on a typedNode -->
+ <rdf:Seq>
+ <rdf:li><ex:thing rdf:ID="myid">
+ <ex:prop>value</ex:prop>
+ </ex:thing></rdf:li>
+ </rdf:Seq>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-23.out b/tests/rdfxml/ex-23.out
new file mode 100644
index 0000000..009032f
--- /dev/null
+++ b/tests/rdfxml/ex-23.out
@@ -0,0 +1,8 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.org/ns1#foo> .
+_:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.org/ns1#Type1> .
+_:genid2 <http://www.example.org/ns1#prop1> _:genid3 .
+_:genid4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.org/ns1#Type2> .
+_:genid2 <http://www.example.org/ns1#prop2> _:genid4 .
+_:genid5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.org/ns1#Type3> .
+_:genid2 <http://www.example.org/ns1#prop3> _:genid5 .
+_:genid1 <http://www.example.org/ns1#bar> _:genid2 .
diff --git a/tests/rdfxml/ex-23.rdf b/tests/rdfxml/ex-23.rdf
new file mode 100644
index 0000000..72a5dc2
--- /dev/null
+++ b/tests/rdfxml/ex-23.rdf
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://www.example.org/ns1#" >
+
+ <!-- Test embedded parseType resources works ok -->
+
+ <foo> <!-- node subject genid 1 -->
+
+ <bar rdf:parseType="Resource"> <!-- object of 'bar' is genid 2 -->
+
+ <prop1 rdf:parseType="Resource"> <!-- object of 'prop1' is genid 3 -->
+ <rdf:type rdf:resource="http://www.example.org/ns1#Type1"/>
+ </prop1>
+
+ <prop2 rdf:parseType="Resource"> <!-- object of 'prop2' is genid 4 -->
+ <rdf:type rdf:resource="http://www.example.org/ns1#Type2"/>
+ </prop2>
+
+ <prop3 rdf:parseType="Resource"> <!-- object of 'prop3' is genid 5 -->
+ <rdf:type rdf:resource="http://www.example.org/ns1#Type3"/>
+ </prop3>
+
+ </bar>
+
+ </foo>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-24.out b/tests/rdfxml/ex-24.out
new file mode 100644
index 0000000..e328430
--- /dev/null
+++ b/tests/rdfxml/ex-24.out
@@ -0,0 +1,6 @@
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#List> .
+_:genid2 <http://www.daml.org/2001/03/daml+oil#first> _:genid1 .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/foo#node2> .
+_:genid1 <http://example.org/foo#prop2> <http://example.org/node3> .
+_:genid2 <http://www.daml.org/2001/03/daml+oil#rest> <http://www.daml.org/2001/03/daml+oil#nil> .
+<http://example.org/node1> <http://example.org/foo#prop1> _:genid2 .
diff --git a/tests/rdfxml/ex-24.rdf b/tests/rdfxml/ex-24.rdf
new file mode 100644
index 0000000..c22b0be
--- /dev/null
+++ b/tests/rdfxml/ex-24.rdf
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/foo#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- Check parseType daml:Collection with a typed node inside -->
+
+ <rdf:Description rdf:about="http://example.org/node1">
+ <ex:prop1 rdf:parseType="daml:collection">
+ <ex:node2>
+ <ex:prop2 rdf:resource="http://example.org/node3" />
+ </ex:node2>
+ </ex:prop1>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-25.out b/tests/rdfxml/ex-25.out
new file mode 100644
index 0000000..35f572b
--- /dev/null
+++ b/tests/rdfxml/ex-25.out
@@ -0,0 +1,4 @@
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> "1" .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> "_1" .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_2> "2" .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_3> "_3" .
diff --git a/tests/rdfxml/ex-25.rdf b/tests/rdfxml/ex-25.rdf
new file mode 100644
index 0000000..d6b2ae5
--- /dev/null
+++ b/tests/rdfxml/ex-25.rdf
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/foo#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- Check mixing rdf:li and rdf:_n works -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <rdf:li>1</rdf:li>
+ <rdf:_1>_1</rdf:_1>
+ <rdf:li>2</rdf:li>
+ <rdf:_3>_3</rdf:_3>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-26.out b/tests/rdfxml/ex-26.out
new file mode 100644
index 0000000..feb6a7f
--- /dev/null
+++ b/tests/rdfxml/ex-26.out
@@ -0,0 +1,2 @@
+<http://example.org/#blah> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/#foo> .
+<http://example.org/#blah> <http://example.org/#prop> "content" .
diff --git a/tests/rdfxml/ex-26.rdf b/tests/rdfxml/ex-26.rdf
new file mode 100644
index 0000000..46ab6da
--- /dev/null
+++ b/tests/rdfxml/ex-26.rdf
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE rdf:RDF [
+ <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
+ <!ENTITY a 'http://example.org/#'>
+]>
+<!-- check entities get expanded in attributes -->
+<rdf:RDF xmlns:rdf="&rdf;"
+ xmlns:a="&a;">
+ <a:foo rdf:about="&a;blah">
+ <a:prop>content</a:prop>
+ </a:foo>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-27.out b/tests/rdfxml/ex-27.out
new file mode 100644
index 0000000..6da8a15
--- /dev/null
+++ b/tests/rdfxml/ex-27.out
@@ -0,0 +1,6 @@
+_:genid1 <http://example.org/ns#name> "prop1name" .
+<http://example.org/node> <http://example.org/ns#prop1> _:genid1 .
+_:genid2 <http://example.org/ns#name> "prop2name" .
+<http://example.org/node> <http://example.org/ns#prop2> _:genid2 .
+_:genid3 <http://example.org/ns#name> "prop3name" .
+<http://example.org/node> <http://example.org/ns#prop3> _:genid3 .
diff --git a/tests/rdfxml/ex-27.rdf b/tests/rdfxml/ex-27.rdf
new file mode 100644
index 0000000..fadc284
--- /dev/null
+++ b/tests/rdfxml/ex-27.rdf
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://example.org/ns#">
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <prop1 rdf:parseType="Resource">
+ <name>prop1name</name>
+ </prop1>
+
+ <prop2 rdf:parseType="Resource">
+ <name>prop2name</name>
+ </prop2>
+
+ <prop3 rdf:parseType="Resource">
+ <name>prop3name</name>
+ </prop3>
+
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-28.out b/tests/rdfxml/ex-28.out
new file mode 100644
index 0000000..f0b7a60
--- /dev/null
+++ b/tests/rdfxml/ex-28.out
@@ -0,0 +1,3 @@
+_:genid1 <http://example.org/ns#innerprop> "foo" .
+<http://example.org/node> <http://example.org/ns#prop1> _:genid1 .
+<http://example.org/node> <http://example.org/ns#prop2> "literal" .
diff --git a/tests/rdfxml/ex-28.rdf b/tests/rdfxml/ex-28.rdf
new file mode 100644
index 0000000..cafe0bd
--- /dev/null
+++ b/tests/rdfxml/ex-28.rdf
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://example.org/ns#">
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <prop1 rdf:parseType="Resource">
+ <innerprop>foo</innerprop>
+ </prop1>
+
+ <prop2>literal</prop2>
+
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-29.out b/tests/rdfxml/ex-29.out
new file mode 100644
index 0000000..0fac532
--- /dev/null
+++ b/tests/rdfxml/ex-29.out
@@ -0,0 +1,3 @@
+<http://example.org/node> <http://example.org/ns#prop1> "chat"@en .
+<http://example.org/node> <http://example.org/ns#prop2> "chat"@fr .
+<http://example.org/node> <http://example.org/ns#prop3> "chat" .
diff --git a/tests/rdfxml/ex-29.rdf b/tests/rdfxml/ex-29.rdf
new file mode 100644
index 0000000..1f94787
--- /dev/null
+++ b/tests/rdfxml/ex-29.rdf
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://example.org/ns#">
+
+ <!-- Test xml:lang info gets passed to output -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <prop1 xml:lang="en">chat</prop1>
+ <prop2 xml:lang="fr">chat</prop2>
+ <prop3>chat</prop3>
+
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-30.out b/tests/rdfxml/ex-30.out
new file mode 100644
index 0000000..7d6af55
--- /dev/null
+++ b/tests/rdfxml/ex-30.out
@@ -0,0 +1 @@
+<http://example.org/node/> <http://example.org/ns2#prop1> "blah" .
diff --git a/tests/rdfxml/ex-30.rdf b/tests/rdfxml/ex-30.rdf
new file mode 100644
index 0000000..4f4ef77
--- /dev/null
+++ b/tests/rdfxml/ex-30.rdf
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<web:RDF xmlns:web="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://example.org/ns1#"
+ xmlns:ex="http://example.org/ns2#" >
+ <!-- test that (legacy) bare about works when a default
+ namespace is defined
+ -->
+ <web:Description about="http://example.org/node/">
+ <ex:prop1>blah</ex:prop1>
+ </web:Description>
+</web:RDF>
diff --git a/tests/rdfxml/ex-31.out b/tests/rdfxml/ex-31.out
new file mode 100644
index 0000000..bc9f58e
--- /dev/null
+++ b/tests/rdfxml/ex-31.out
@@ -0,0 +1,5 @@
+_:genid1 <http://example.org/ns#prop1> "foo" .
+_:genid1 <http://example.org/ns#prop2> "blah" .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> _:genid1 .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_2> "2" .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_3> "_3" .
diff --git a/tests/rdfxml/ex-31.rdf b/tests/rdfxml/ex-31.rdf
new file mode 100644
index 0000000..45833dd
--- /dev/null
+++ b/tests/rdfxml/ex-31.rdf
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- Check rdf:li works on an parseType="Resource" property -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <rdf:li rdf:parseType="Resource">
+ <ex:prop1>foo</ex:prop1>
+ <ex:prop2>blah</ex:prop2>
+ </rdf:li>
+ <rdf:li>2</rdf:li>
+ <rdf:_3>_3</rdf:_3>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-32.out b/tests/rdfxml/ex-32.out
new file mode 100644
index 0000000..c95d607
--- /dev/null
+++ b/tests/rdfxml/ex-32.out
@@ -0,0 +1,2 @@
+<http://example.org/node2> <http://example.org/ns/prop2> "literal" .
+<http://example.org/node1> <http://example.org/ns/prop1> <http://example.org/node2> .
diff --git a/tests/rdfxml/ex-32.rdf b/tests/rdfxml/ex-32.rdf
new file mode 100644
index 0000000..34ebef3
--- /dev/null
+++ b/tests/rdfxml/ex-32.rdf
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns/">
+
+ <!-- Test property attribute with rdf:resource -->
+
+ <rdf:Description rdf:about="http://example.org/node1">
+ <ex:prop1 rdf:resource="http://example.org/node2" ex:prop2="literal" />
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-33.out b/tests/rdfxml/ex-33.out
new file mode 100644
index 0000000..0165ec8
--- /dev/null
+++ b/tests/rdfxml/ex-33.out
@@ -0,0 +1,3 @@
+_:genid1 <http://example.org/ns#prop2> "literal2" .
+_:genid1 <http://example.org/ns#prop3> "literal3" .
+<http://example.org/node> <http://example.org/ns#prop1> _:genid1 .
diff --git a/tests/rdfxml/ex-33.rdf b/tests/rdfxml/ex-33.rdf
new file mode 100644
index 0000000..76b04bc
--- /dev/null
+++ b/tests/rdfxml/ex-33.rdf
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns#">
+
+ <!-- check that an empty property element gives properties of
+ the generated node
+ -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <ex:prop1 ex:prop2="literal2" ex:prop3="literal3" />
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-34.out b/tests/rdfxml/ex-34.out
new file mode 100644
index 0000000..fbb9ccf
--- /dev/null
+++ b/tests/rdfxml/ex-34.out
@@ -0,0 +1,9 @@
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#List> .
+_:genid2 <http://www.daml.org/2001/03/daml+oil#first> _:genid1 .
+_:genid1 <http://www.example.org/ns#prop2> <http://example.org/node2> .
+_:genid4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#List> .
+_:genid4 <http://www.daml.org/2001/03/daml+oil#first> _:genid3 .
+_:genid2 <http://www.daml.org/2001/03/daml+oil#rest> _:genid4 .
+_:genid3 <http://www.example.org/ns#prop3> <http://example.org/node3> .
+_:genid4 <http://www.daml.org/2001/03/daml+oil#rest> <http://www.daml.org/2001/03/daml+oil#nil> .
+<http://example.org/node1> <http://www.example.org/ns#prop1> _:genid2 .
diff --git a/tests/rdfxml/ex-34.rdf b/tests/rdfxml/ex-34.rdf
new file mode 100644
index 0000000..25c132f
--- /dev/null
+++ b/tests/rdfxml/ex-34.rdf
@@ -0,0 +1,19 @@
+<rdf:RDF xmlns:ex="http://www.example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- check daml:collection generates the right structure with
+ blank nodes inside -->
+
+ <rdf:Description rdf:about="http://example.org/node1">
+ <ex:prop1 rdf:parseType="daml:collection">
+ <rdf:Description>
+ <ex:prop2 rdf:resource="http://example.org/node2" />
+ </rdf:Description>
+ <rdf:Description>
+ <ex:prop3 rdf:resource="http://example.org/node3" />
+ </rdf:Description>
+ </ex:prop1>
+ </rdf:Description>
+</rdf:RDF>
+
+
diff --git a/tests/rdfxml/ex-35.out b/tests/rdfxml/ex-35.out
new file mode 100644
index 0000000..5541d00
--- /dev/null
+++ b/tests/rdfxml/ex-35.out
@@ -0,0 +1 @@
+<http://example.org/resource> <http://example.org/property> <http://www.daml.org/2001/03/daml+oil#nil> .
diff --git a/tests/rdfxml/ex-35.rdf b/tests/rdfxml/ex-35.rdf
new file mode 100644
index 0000000..9cea016
--- /dev/null
+++ b/tests/rdfxml/ex-35.rdf
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/">
+ <!-- Check empty parseType daml:Collection -->
+ <rdf:Description rdf:about="http://example.org/resource">
+ <ex:property rdf:parseType="daml:collection">
+ </ex:property>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-36.out b/tests/rdfxml/ex-36.out
new file mode 100644
index 0000000..1137dba
--- /dev/null
+++ b/tests/rdfxml/ex-36.out
@@ -0,0 +1,4 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#List> .
+_:genid1 <http://www.daml.org/2001/03/daml+oil#first> <http://example.org/resource1> .
+_:genid1 <http://www.daml.org/2001/03/daml+oil#rest> <http://www.daml.org/2001/03/daml+oil#nil> .
+<http://example.org/resource> <http://example.org/property> _:genid1 .
diff --git a/tests/rdfxml/ex-36.rdf b/tests/rdfxml/ex-36.rdf
new file mode 100644
index 0000000..e4dcbdf
--- /dev/null
+++ b/tests/rdfxml/ex-36.rdf
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/">
+ <!-- Check parseType daml:Collection -->
+ <rdf:Description rdf:about="http://example.org/resource">
+ <ex:property rdf:parseType="daml:collection">
+ <rdf:Description rdf:about="http://example.org/resource1"/>
+ </ex:property>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-37.out b/tests/rdfxml/ex-37.out
new file mode 100644
index 0000000..ab1dd96
--- /dev/null
+++ b/tests/rdfxml/ex-37.out
@@ -0,0 +1,2 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/ns#Thing> .
+<http://example.org/node> <http://example.org/ns#prop> _:genid1 .
diff --git a/tests/rdfxml/ex-37.rdf b/tests/rdfxml/ex-37.rdf
new file mode 100644
index 0000000..f43864c
--- /dev/null
+++ b/tests/rdfxml/ex-37.rdf
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns#">
+
+ <!-- Test rdf:type with a (URI) value gets propogated to the
+ generated blank node
+ -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <ex:prop rdf:type="http://example.org/ns#Thing"></ex:prop>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-38-rdfxmla.out b/tests/rdfxml/ex-38-rdfxmla.out
new file mode 100644
index 0000000..88427bb
--- /dev/null
+++ b/tests/rdfxml/ex-38-rdfxmla.out
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF
+ xmlns:ex="http://example.org/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Statement rdf:about="http://example.org/ns#foo">
+ <rdf:object rdf:nodeID="genid1"/>
+ <rdf:predicate rdf:resource="http://example.org/property"/>
+ <rdf:subject rdf:resource="http://example.org/resource"/>
+ </rdf:Statement>
+ <rdf:Description rdf:about="http://example.org/resource">
+ <ex:property rdf:nodeID="genid1"/>
+ </rdf:Description>
+ <ns1:List xmlns:ns1="http://www.daml.org/2001/03/daml+oil#" rdf:nodeID="genid1">
+ <ns1:first rdf:resource="http://example.org/resource1"/>
+ <ns1:rest rdf:resource="http://www.daml.org/2001/03/daml+oil#nil"/>
+ </ns1:List>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-38.out b/tests/rdfxml/ex-38.out
new file mode 100644
index 0000000..0f77c60
--- /dev/null
+++ b/tests/rdfxml/ex-38.out
@@ -0,0 +1,8 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.daml.org/2001/03/daml+oil#List> .
+_:genid1 <http://www.daml.org/2001/03/daml+oil#first> <http://example.org/resource1> .
+_:genid1 <http://www.daml.org/2001/03/daml+oil#rest> <http://www.daml.org/2001/03/daml+oil#nil> .
+<http://example.org/resource> <http://example.org/property> _:genid1 .
+<http://example.org/ns#foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://example.org/ns#foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://example.org/resource> .
+<http://example.org/ns#foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://example.org/property> .
+<http://example.org/ns#foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> _:genid1 .
diff --git a/tests/rdfxml/ex-38.rdf b/tests/rdfxml/ex-38.rdf
new file mode 100644
index 0000000..a4f89ca
--- /dev/null
+++ b/tests/rdfxml/ex-38.rdf
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/"
+ xml:base="http://example.org/ns">
+ <!-- Check parseType daml:Collection and rdf:ID -->
+ <rdf:Description rdf:about="http://example.org/resource">
+ <ex:property rdf:ID="foo" rdf:parseType="daml:collection">
+ <rdf:Description rdf:about="http://example.org/resource1"/>
+ </ex:property>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-39.out b/tests/rdfxml/ex-39.out
new file mode 100644
index 0000000..b7277e6
--- /dev/null
+++ b/tests/rdfxml/ex-39.out
@@ -0,0 +1,7 @@
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid1 .
+_:genid1 <http://www.example.org/ns#prop2> <http://example.org/node2> .
+_:genid4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid3 .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid4 .
+_:genid3 <http://www.example.org/ns#prop3> <http://example.org/node3> .
+_:genid4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://example.org/node1> <http://www.example.org/ns#prop1> _:genid2 .
diff --git a/tests/rdfxml/ex-39.rdf b/tests/rdfxml/ex-39.rdf
new file mode 100644
index 0000000..ebf858d
--- /dev/null
+++ b/tests/rdfxml/ex-39.rdf
@@ -0,0 +1,16 @@
+<rdf:RDF xmlns:ex="http://www.example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- check rdf:parseType="Collection" -->
+
+ <rdf:Description rdf:about="http://example.org/node1">
+ <ex:prop1 rdf:parseType="Collection">
+ <rdf:Description>
+ <ex:prop2 rdf:resource="http://example.org/node2" />
+ </rdf:Description>
+ <rdf:Description>
+ <ex:prop3 rdf:resource="http://example.org/node3" />
+ </rdf:Description>
+ </ex:prop1>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-40.out b/tests/rdfxml/ex-40.out
new file mode 100644
index 0000000..3d11de9
--- /dev/null
+++ b/tests/rdfxml/ex-40.out
@@ -0,0 +1 @@
+<http://example.org/node0> <http://www.example.org/ns#prop> "value" .
diff --git a/tests/rdfxml/ex-40.rdf b/tests/rdfxml/ex-40.rdf
new file mode 100644
index 0000000..1fb8f41
--- /dev/null
+++ b/tests/rdfxml/ex-40.rdf
@@ -0,0 +1,9 @@
+<rdf:RDF xmlns:ex="http://www.example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- check XML CDATA sections work -->
+
+ <rdf:Description rdf:about="http://example.org/node0">
+ <ex:prop><![CDATA[value]]></ex:prop>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-41.out b/tests/rdfxml/ex-41.out
new file mode 100644
index 0000000..6d07f59
--- /dev/null
+++ b/tests/rdfxml/ex-41.out
@@ -0,0 +1,3 @@
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> "val1"^^<http://example.org/datatype1> .
+<http://example.org/node> <http://example.org/ns#prop2> "val2"^^<http://example.org/datatype2> .
+<http://example.org/node> <http://example.org/ns#prop3> "val3"^^<http://example.org/datatype3> .
diff --git a/tests/rdfxml/ex-41.rdf b/tests/rdfxml/ex-41.rdf
new file mode 100644
index 0000000..0e430ca
--- /dev/null
+++ b/tests/rdfxml/ex-41.rdf
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- Check rdf:datatype attribute on property elements -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <rdf:li rdf:datatype="http://example.org/datatype1">val1</rdf:li>
+ <ex:prop2 rdf:datatype="http://example.org/datatype2">val2</ex:prop2>
+ <ex:prop3 rdf:datatype="http://example.org/datatype3" xml:lang="de">val3</ex:prop3>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-42.out b/tests/rdfxml/ex-42.out
new file mode 100644
index 0000000..6719743
--- /dev/null
+++ b/tests/rdfxml/ex-42.out
@@ -0,0 +1,19 @@
+<http://example.org/triples#bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> .
+<http://example.org/node> <http://example.org/ns#prop1> "val1" .
+<http://example.org/triples#bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> <http://example.org/triples#triple1> .
+<http://example.org/triples#triple1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://example.org/triples#triple1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://example.org/node> .
+<http://example.org/triples#triple1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://example.org/ns#prop1> .
+<http://example.org/triples#triple1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> "val1" .
+<http://example.org/node> <http://example.org/ns#prop2> "val2" .
+<http://example.org/triples#bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_2> <http://example.org/triples#triple2> .
+<http://example.org/triples#triple2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://example.org/triples#triple2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://example.org/node> .
+<http://example.org/triples#triple2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://example.org/ns#prop2> .
+<http://example.org/triples#triple2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> "val2" .
+<http://example.org/node> <http://example.org/ns#prop3> "val3"@en .
+<http://example.org/triples#bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_3> <http://example.org/triples#triple3> .
+<http://example.org/triples#triple3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://example.org/triples#triple3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://example.org/node> .
+<http://example.org/triples#triple3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://example.org/ns#prop3> .
+<http://example.org/triples#triple3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> "val3"@en .
diff --git a/tests/rdfxml/ex-42.rdf b/tests/rdfxml/ex-42.rdf
new file mode 100644
index 0000000..593fb18
--- /dev/null
+++ b/tests/rdfxml/ex-42.rdf
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xml:base="http://example.org/triples">
+
+ <!-- rdf:bagID when all the triples are given explicit rdf:IDs -->
+
+ <rdf:Description rdf:about="http://example.org/node" rdf:bagID="bag">
+ <ex:prop1 rdf:ID="triple1">val1</ex:prop1>
+ <ex:prop2 rdf:ID="triple2">val2</ex:prop2>
+ <ex:prop3 rdf:ID="triple3" xml:lang="en">val3</ex:prop3>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-43.out b/tests/rdfxml/ex-43.out
new file mode 100644
index 0000000..c66b497
--- /dev/null
+++ b/tests/rdfxml/ex-43.out
@@ -0,0 +1,7 @@
+<http://example.org/triples#bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> .
+<http://example.org/node> <http://example.org/ns#prop1> "val1" .
+<http://example.org/triples#bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> _:genid1 .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://example.org/node> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://example.org/ns#prop1> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> "val1" .
diff --git a/tests/rdfxml/ex-43.rdf b/tests/rdfxml/ex-43.rdf
new file mode 100644
index 0000000..49682ae
--- /dev/null
+++ b/tests/rdfxml/ex-43.rdf
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xml:base="http://example.org/triples">
+
+ <!-- rdf:bagID where a generated ID is needed -->
+
+ <rdf:Description rdf:about="http://example.org/node" rdf:bagID="bag">
+ <ex:prop1>val1</ex:prop1>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-44.out b/tests/rdfxml/ex-44.out
new file mode 100644
index 0000000..5fc4608
--- /dev/null
+++ b/tests/rdfxml/ex-44.out
@@ -0,0 +1,8 @@
+<http://example.org/triples#bag1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> .
+_:genid1 <http://example.org/ns#prop2> "val2" .
+<http://example.org/triples#bag1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> _:genid2 .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> _:genid1 .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://example.org/ns#prop2> .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> "val2" .
+<http://example.org/node> <http://example.org/ns#prop1> _:genid1 .
diff --git a/tests/rdfxml/ex-44.rdf b/tests/rdfxml/ex-44.rdf
new file mode 100644
index 0000000..7715a4f
--- /dev/null
+++ b/tests/rdfxml/ex-44.rdf
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xml:base="http://example.org/triples">
+
+ <!-- rdf:bagID on an empty property element (only type allowed) -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <ex:prop1 rdf:bagID="bag1" ex:prop2="val2" />
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-45.out b/tests/rdfxml/ex-45.out
new file mode 100644
index 0000000..87a6570
--- /dev/null
+++ b/tests/rdfxml/ex-45.out
@@ -0,0 +1,2 @@
+<http://example.org/triples#bag1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> .
+<http://example.org/node> <http://example.org/ns#prop1> "" .
diff --git a/tests/rdfxml/ex-45.rdf b/tests/rdfxml/ex-45.rdf
new file mode 100644
index 0000000..b9ec8e9
--- /dev/null
+++ b/tests/rdfxml/ex-45.rdf
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xml:base="http://example.org/triples">
+
+ <!-- rdf:bagID on an empty property element -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <ex:prop1 rdf:bagID="bag1" />
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-46.out b/tests/rdfxml/ex-46.out
new file mode 100644
index 0000000..d0938ce
--- /dev/null
+++ b/tests/rdfxml/ex-46.out
@@ -0,0 +1,53 @@
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#List> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#List> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> <http://example.org/node1> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_2> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#List> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/node1> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> "abc" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:node2 .
+_:node1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "apples" .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "pears"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "oranges"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/node1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "10"^^<http://www.w3.org/2000/10/XMLSchema#decimal> .
diff --git a/tests/rdfxml/ex-46.rdf b/tests/rdfxml/ex-46.rdf
new file mode 100644
index 0000000..2ee62ab
--- /dev/null
+++ b/tests/rdfxml/ex-46.rdf
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<!DOCTYPE rdf:RDF [
+ <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
+ <!ENTITY xsd 'http://www.w3.org/2000/10/XMLSchema#'>
+]>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:xsd="http://www.w3.org/2000/10/XMLSchema#">
+
+
+ <!-- Exercise all RDF vocabulary -->
+
+ <!-- Node elements (typed node elements)
+ http://www.w3.org/TR/rdf-syntax-grammar/#nodeElementURIs
+ -->
+ <rdf:Description rdf:about="http://example.org/node"/>
+ <rdf:Seq rdf:about="http://example.org/node"/>
+ <rdf:Bag rdf:about="http://example.org/node"/>
+ <rdf:Alt rdf:about="http://example.org/node"/>
+ <rdf:Statement rdf:about="http://example.org/node"/>
+ <rdf:Property rdf:about="http://example.org/node"/>
+ <rdf:XMLLiteral rdf:about="http://example.org/node"/>
+ <rdf:List rdf:about="http://example.org/node"/>
+ <rdf:subject rdf:about="http://example.org/node"/>
+ <rdf:predicate rdf:about="http://example.org/node"/>
+ <rdf:object rdf:about="http://example.org/node"/>
+ <rdf:type rdf:about="http://example.org/node"/>
+ <rdf:value rdf:about="http://example.org/node"/>
+ <rdf:first rdf:about="http://example.org/node"/>
+ <rdf:rest rdf:about="http://example.org/node"/>
+ <rdf:_1 rdf:about="http://example.org/node"/>
+ <rdf:nil rdf:about="http://example.org/node"/>
+
+ <!-- Property elements
+ http://www.w3.org/TR/rdf-syntax-grammar/#propertyElementURIs
+ -->
+ <rdf:Description rdf:about="http://example.org/node1">
+ <rdf:Seq rdf:resource="http://example.org/node2"/>
+ <rdf:Bag rdf:resource="http://example.org/node2"/>
+ <rdf:Alt rdf:resource="http://example.org/node2"/>
+ <rdf:Statement rdf:resource="http://example.org/node2"/>
+ <rdf:Property rdf:resource="http://example.org/node2"/>
+ <rdf:XMLLiteral rdf:resource="http://example.org/node2"/>
+ <rdf:List rdf:resource="http://example.org/node2"/>
+ <rdf:subject rdf:resource="http://example.org/node2"/>
+ <rdf:predicate rdf:resource="http://example.org/node2"/>
+ <rdf:object rdf:resource="http://example.org/node2"/>
+ <rdf:type rdf:resource="http://example.org/node2"/>
+ <rdf:value rdf:resource="http://example.org/node2"/>
+ <rdf:first rdf:resource="http://example.org/node2"/>
+ <rdf:rest rdf:resource="http://example.org/node2"/>
+ <rdf:li rdf:resource="http://example.org/node1"/>
+ <rdf:_2 rdf:resource="http://example.org/node2"/>
+ </rdf:Description>
+
+ <!-- Property attributes
+ http://www.w3.org/TR/rdf-syntax-grammar/#propertyAttributeURIs
+ -->
+ <rdf:Description rdf:about="http://example.org/node1" rdf:Seq="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:Bag="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:Alt="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:Statement="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:Property="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:XMLLiteral="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:List="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:subject="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:predicate="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:object="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:type="http://example.org/node1" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:value="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:first="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:rest="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdf:_1="abc" />
+
+ <!-- nodeID for triples with blank node object and subjects -->
+ <rdf:Description rdf:about="http://example.org/node1">
+ <rdf:value rdf:nodeID="node2"/>
+ </rdf:Description>
+ <rdf:Description rdf:nodeID="node1">
+ <rdf:value rdf:resource="http://example.org/node2"/>
+ </rdf:Description>
+
+ <!-- property elements with literal values including datatyped -->
+
+ <rdf:Description rdf:about="http://example.org/node1">
+ <rdf:value>apples</rdf:value>
+ <rdf:value rdf:parseType="Literal">pears</rdf:value>
+ <rdf:value rdf:datatype="&rdf;XMLLiteral">oranges</rdf:value>
+ <rdf:value rdf:datatype="&xsd;decimal">10</rdf:value>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-47.out b/tests/rdfxml/ex-47.out
new file mode 100644
index 0000000..b668a3c
--- /dev/null
+++ b/tests/rdfxml/ex-47.out
@@ -0,0 +1,24 @@
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Literal> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Datatype> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://example.org/node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#domain> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#range> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#label> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#comment> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#member> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://example.org/node2> .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#subClassOf> "abc" .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> "abc" .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#domain> "abc" .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#range> "abc" .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#label> "abc" .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#comment> "abc" .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#member> "abc" .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#seeAlso> "abc" .
+<http://example.org/node1> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> "abc" .
diff --git a/tests/rdfxml/ex-47.rdf b/tests/rdfxml/ex-47.rdf
new file mode 100644
index 0000000..d40eae4
--- /dev/null
+++ b/tests/rdfxml/ex-47.rdf
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<!DOCTYPE rdf:RDF [
+ <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
+ <!ENTITY xsd 'http://www.w3.org/2000/10/XMLSchema#'>
+]>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
+
+
+ <!-- Exercise all RDFS vocabulary -->
+
+ <!-- Node elements (typed node elements)
+ http://www.w3.org/TR/rdf-syntax-grammar/#nodeElementURIs
+ -->
+ <rdfs:Resource rdf:about="http://example.org/node"/>
+ <rdfs:Literal rdf:about="http://example.org/node"/>
+ <rdfs:Class rdf:about="http://example.org/node"/>
+ <rdfs:Datatype rdf:about="http://example.org/node"/>
+ <rdfs:Container rdf:about="http://example.org/node"/>
+ <rdfs:ContainerMembershipProperty rdf:about="http://example.org/node"/>
+
+ <!-- Property elements
+ http://www.w3.org/TR/rdf-syntax-grammar/#propertyElementURIs
+ -->
+ <rdf:Description rdf:about="http://example.org/node1">
+ <rdfs:subClassOf rdf:resource="http://example.org/node2"/>
+ <rdfs:subPropertyOf rdf:resource="http://example.org/node2"/>
+ <rdfs:domain rdf:resource="http://example.org/node2"/>
+ <rdfs:range rdf:resource="http://example.org/node2"/>
+ <rdfs:label rdf:resource="http://example.org/node2"/>
+ <rdfs:comment rdf:resource="http://example.org/node2"/>
+ <rdfs:member rdf:resource="http://example.org/node2"/>
+ <rdfs:seeAlso rdf:resource="http://example.org/node2"/>
+ <rdfs:isDefinedBy rdf:resource="http://example.org/node2"/>
+ </rdf:Description>
+
+
+ <!-- Property attributes
+ http://www.w3.org/TR/rdf-syntax-grammar/#propertyAttributeURIs
+ -->
+ <rdf:Description rdf:about="http://example.org/node1" rdfs:subClassOf="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdfs:subPropertyOf="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdfs:domain="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdfs:range="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdfs:label="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdfs:comment="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdfs:member="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdfs:seeAlso="abc" />
+ <rdf:Description rdf:about="http://example.org/node1" rdfs:isDefinedBy="abc" />
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-48.out b/tests/rdfxml/ex-48.out
new file mode 100644
index 0000000..607eea9
--- /dev/null
+++ b/tests/rdfxml/ex-48.out
@@ -0,0 +1,5 @@
+<http://example.org/node0> <http://example.com/properties/prop1> " &amp; "^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/node0> <http://example.com/properties/prop2> " &lt; "^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/node0> <http://example.com/properties/prop3> " &gt; "^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/node0> <http://example.com/properties/prop4> "&gt;&amp;&lt;"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/node0> <http://example.com/properties/prop5> "&lt;ex:notaprop&gt;"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
diff --git a/tests/rdfxml/ex-48.rdf b/tests/rdfxml/ex-48.rdf
new file mode 100644
index 0000000..88f469b
--- /dev/null
+++ b/tests/rdfxml/ex-48.rdf
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.com/properties/">
+
+ <!-- Check that the core SGML/XML entities are properly encoded when
+ building the XML string -->
+
+ <rdf:Description rdf:about="http://example.org/node0">
+ <ex:prop1 rdf:parseType="Literal"> &amp; </ex:prop1>
+ <ex:prop2 rdf:parseType="Literal"> &lt; </ex:prop2>
+ <ex:prop3 rdf:parseType="Literal"> &gt; </ex:prop3>
+ <ex:prop4 rdf:parseType="Literal">&gt;&amp;&lt;</ex:prop4>
+ <ex:prop5 rdf:parseType="Literal">&lt;ex:notaprop&gt;</ex:prop5>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-49.out b/tests/rdfxml/ex-49.out
new file mode 100644
index 0000000..b2cab49
--- /dev/null
+++ b/tests/rdfxml/ex-49.out
@@ -0,0 +1,4 @@
+<http://example.org/node0> <http://example.com/properties/prop1> " <foo href=\"http://example.org?foo=1&amp;bar=2\">hmm</foo> "^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/node0> <http://example.com/properties/prop2> " <bar a=\"'\"></bar> "^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/node0> <http://example.com/properties/prop3> " <baz b=\"&quot;\"></baz> "^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/node0> <http://example.com/properties/prop4> " <baz b=\"&lt;>\"></baz> "^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
diff --git a/tests/rdfxml/ex-49.rdf b/tests/rdfxml/ex-49.rdf
new file mode 100644
index 0000000..0e00ea1
--- /dev/null
+++ b/tests/rdfxml/ex-49.rdf
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.com/properties/">
+
+ <!-- Check attributes are properly encoded when building the XML string -->
+
+ <rdf:Description rdf:about="http://example.org/node0">
+ <ex:prop1 rdf:parseType="Literal"> <foo href="http://example.org?foo=1&amp;bar=2">hmm</foo> </ex:prop1>
+ <ex:prop2 rdf:parseType="Literal"> <bar a="&apos;"/> </ex:prop2>
+ <ex:prop3 rdf:parseType="Literal"> <baz b="&quot;"/> </ex:prop3>
+ <ex:prop4 rdf:parseType="Literal"> <baz b="&lt;&gt;"/> </ex:prop4>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-51.out b/tests/rdfxml/ex-51.out
new file mode 100644
index 0000000..b956d32
--- /dev/null
+++ b/tests/rdfxml/ex-51.out
@@ -0,0 +1 @@
+<http://example.org/node/> <http://example.org/ns#prop1> ""^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
diff --git a/tests/rdfxml/ex-51.rdf b/tests/rdfxml/ex-51.rdf
new file mode 100644
index 0000000..d2c01e3
--- /dev/null
+++ b/tests/rdfxml/ex-51.rdf
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ns#" >
+
+ <!-- test that empty XML literal works -->
+ <rdf:Description about="http://example.org/node/">
+ <ex:prop1 rdf:parseType="Literal"></ex:prop1>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-52.out b/tests/rdfxml/ex-52.out
new file mode 100644
index 0000000..655acea
--- /dev/null
+++ b/tests/rdfxml/ex-52.out
@@ -0,0 +1,2 @@
+<http://librdf.org/raptor/tests/ex-52.rdf> <http://purl.org/dc/elements/1.1/title> "Simple Example" .
+<http://librdf.org/raptor/tests/ex-52.rdf> <http://purl.org/dc/elements/1.1/date> "2002-10-05" .
diff --git a/tests/rdfxml/ex-52.svg b/tests/rdfxml/ex-52.svg
new file mode 100644
index 0000000..d814889
--- /dev/null
+++ b/tests/rdfxml/ex-52.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg
+ height="100"
+ width="100"
+ id="blah"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <!-- Test for searching for rdf:RDF inside some other XML -->
+
+ <!-- Note: this is legal svg - since the SVG specification allows
+ metadata such as rdf to appear inside the metadata tag
+ -->
+
+ <metadata>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <rdf:Description rdf:about="">
+ <dc:title>Simple Example</dc:title>
+ <dc:date>2002-10-05</dc:date>
+ </rdf:Description>
+ </rdf:RDF>
+ </metadata>
+
+</svg>
diff --git a/tests/rdfxml/ex-53.out b/tests/rdfxml/ex-53.out
new file mode 100644
index 0000000..7cb4b91
--- /dev/null
+++ b/tests/rdfxml/ex-53.out
@@ -0,0 +1 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/terms#a> .
diff --git a/tests/rdfxml/ex-53.rdf b/tests/rdfxml/ex-53.rdf
new file mode 100644
index 0000000..ff02ef8
--- /dev/null
+++ b/tests/rdfxml/ex-53.rdf
@@ -0,0 +1 @@
+<a xmlns="http://example.org/terms#"/>
diff --git a/tests/rdfxml/ex-54.out b/tests/rdfxml/ex-54.out
new file mode 100644
index 0000000..36a1d29
--- /dev/null
+++ b/tests/rdfxml/ex-54.out
@@ -0,0 +1 @@
+<http://example.org/res/> <http://example.org/foo> "They\u2019re artistic\u2026uhm, bugs, at the very least."^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
diff --git a/tests/rdfxml/ex-54.rdf b/tests/rdfxml/ex-54.rdf
new file mode 100644
index 0000000..462e8f6
--- /dev/null
+++ b/tests/rdfxml/ex-54.rdf
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:ex="http://example.org/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description rdf:about="http://example.org/res/">
+ <ex:foo rdf:parseType="Literal">They’re artistic…uhm, bugs, at the very least.</ex:foo>
+</rdf:Description>
+</rdf:RDF> \ No newline at end of file
diff --git a/tests/rdfxml/ex-55.out b/tests/rdfxml/ex-55.out
new file mode 100644
index 0000000..942cadf
--- /dev/null
+++ b/tests/rdfxml/ex-55.out
@@ -0,0 +1,2 @@
+<http://example.org/resource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "abc" .
+<http://example.org/resource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "def" .
diff --git a/tests/rdfxml/ex-55.rdf b/tests/rdfxml/ex-55.rdf
new file mode 100644
index 0000000..ac05844
--- /dev/null
+++ b/tests/rdfxml/ex-55.rdf
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE rdf:RDF [
+ <!ENTITY foo 'abc'>
+ <!ENTITY bar 'def'>
+]>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about="http://example.org/resource"
+ rdf:value="&foo;">
+ <rdf:value>&bar;</rdf:value>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-56.out b/tests/rdfxml/ex-56.out
new file mode 100644
index 0000000..72da489
--- /dev/null
+++ b/tests/rdfxml/ex-56.out
@@ -0,0 +1 @@
+<http://example.org/mybase/subj> <http://example.org/ex/prop> "val"^^<http://example.org/mybase/type> .
diff --git a/tests/rdfxml/ex-56.rdf b/tests/rdfxml/ex-56.rdf
new file mode 100644
index 0000000..f50683b
--- /dev/null
+++ b/tests/rdfxml/ex-56.rdf
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/ex/"
+ xml:base="http://example.org/mybase/">
+ <rdf:Description rdf:about="subj">
+ <ex:prop rdf:datatype="type">val</ex:prop>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-57.out b/tests/rdfxml/ex-57.out
new file mode 100644
index 0000000..e09ddbe
--- /dev/null
+++ b/tests/rdfxml/ex-57.out
@@ -0,0 +1 @@
+<http://example.org/res> <http://example.org/bar#prop> ""^^<http://www.w3.org/2001/XMLSchema#string> .
diff --git a/tests/rdfxml/ex-57.rdf b/tests/rdfxml/ex-57.rdf
new file mode 100644
index 0000000..460dc0f
--- /dev/null
+++ b/tests/rdfxml/ex-57.rdf
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:ex="http://example.org/bar#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!--
+Test for RDF/XML spec bug based on the comment in
+ http://lists.w3.org/Archives/Public/www-rdf-comments/2005AprJun/0000.html
+and the final answer in
+ http://lists.w3.org/Archives/Public/www-rdf-comments/2005AprJun/0003.html
+losing all the 'foo' and 'bar's
+ -->
+
+ <rdf:Description rdf:about="http://example.org/res">
+ <ex:prop rdf:datatype="http://www.w3.org/2001/XMLSchema#string"></ex:prop>
+ </rdf:Description>
+</rdf:RDF>
+
diff --git a/tests/rdfxml/ex-58.out b/tests/rdfxml/ex-58.out
new file mode 100644
index 0000000..2822163
--- /dev/null
+++ b/tests/rdfxml/ex-58.out
@@ -0,0 +1,3 @@
+<http://www.w3.org/> <http://purl.org/dc/elements/1.1/title> "World Wide Web Consortium" .
+<http://www.w3.org/> <http://purl.org/dc/elements/1.1/source> <http://example.org/test1/test2/> .
+<http://www.w3.org/> <http://purl.org/dc/elements/1.1/relation> <http://example.org/test1/> .
diff --git a/tests/rdfxml/ex-58.rdf b/tests/rdfxml/ex-58.rdf
new file mode 100644
index 0000000..081f8df
--- /dev/null
+++ b/tests/rdfxml/ex-58.rdf
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<rdf:RDF xml:base="http://example.org/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+
+ <!-- test of xml:base relative URI to an outer xml:base
+ see http://lists.w3.org/Archives/Public/www-archive/2005Jul/0017.html
+ for discussion
+ -->
+ <rdf:Description rdf:about="http://www.w3.org/" xml:base="test1/">
+ <dc:title>World Wide Web Consortium</dc:title>
+ <dc:source rdf:resource="test2/"/>
+ <dc:relation rdf:resource=""/>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-59.nt b/tests/rdfxml/ex-59.nt
new file mode 100644
index 0000000..1c3a115
--- /dev/null
+++ b/tests/rdfxml/ex-59.nt
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/prop\"foo> "value" .
diff --git a/tests/rdfxml/ex-59.rdf b/tests/rdfxml/ex-59.rdf
new file mode 100644
index 0000000..f63624d
--- /dev/null
+++ b/tests/rdfxml/ex-59.rdf
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about="http://example.org/node">
+ <ns0:foo xmlns:ns0="http://example.org/prop&quot;">value</ns0:foo>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-60.nt b/tests/rdfxml/ex-60.nt
new file mode 100644
index 0000000..007af03
--- /dev/null
+++ b/tests/rdfxml/ex-60.nt
@@ -0,0 +1 @@
+<http://example.org/foo> <http://example.org/pred> <http://example.org/foo/#bar\n%20%20%20%20%20%20%20%20> .
diff --git a/tests/rdfxml/ex-60.rdf b/tests/rdfxml/ex-60.rdf
new file mode 100644
index 0000000..0cf045f
--- /dev/null
+++ b/tests/rdfxml/ex-60.rdf
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about="http://example.org/foo">
+ <ns0:pred xmlns:ns0="http://example.org/" rdf:resource="http://example.org/foo/#bar&#xA;%20%20%20%20%20%20%20%20"/>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/ex-61.out b/tests/rdfxml/ex-61.out
new file mode 100644
index 0000000..785d442
--- /dev/null
+++ b/tests/rdfxml/ex-61.out
@@ -0,0 +1 @@
+<http://www.example.org/foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "one" .
diff --git a/tests/rdfxml/ex-61.rdf b/tests/rdfxml/ex-61.rdf
new file mode 100644
index 0000000..fdc1cbb
--- /dev/null
+++ b/tests/rdfxml/ex-61.rdf
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about="http://www.example.org/foo" rdf:value="one" xml:lang=""/>
+</rdf:RDF>
diff --git a/tests/rdfxml/owl-schema.out b/tests/rdfxml/owl-schema.out
new file mode 100644
index 0000000..0b5ddf6
--- /dev/null
+++ b/tests/rdfxml/owl-schema.out
@@ -0,0 +1,160 @@
+<http://www.w3.org/2002/07/owl> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://www.w3.org/2002/07/owl> <http://www.w3.org/2002/07/owl#imports> <http://www.w3.org/2000/01/rdf-schema> .
+<http://www.w3.org/2002/07/owl> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2001/sw/WebOnt/> .
+<http://www.w3.org/2002/07/owl> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/TR/owl-features/> .
+<http://www.w3.org/2002/07/owl> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/TR/2003/CR-owl-test-20030818/> .
+<http://www.w3.org/2002/07/owl> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/TR/2003/CR-owl-semantics-20030818/> .
+<http://www.w3.org/2002/07/owl> <http://www.w3.org/2000/01/rdf-schema#comment> "This file specifies in RDF Schema format the\n built-in classes and properties that together form the basis of\n the RDF/XML syntax of OWL Full, OWL DL and OWL Lite.\n We do not expect people to import this file\n explicitly into their ontology. People that do import this file\n should expect their ontology to be an OWL Full ontology. \n " .
+<http://www.w3.org/2002/07/owl> <http://www.w3.org/2000/01/rdf-schema#comment> "$Id: owl.rdf,v 1.5 2003/08/19 15:07:19 connolly Exp $" .
+<http://www.w3.org/2002/07/owl> <http://www.w3.org/2002/07/owl#versionInfo> "$Id: owl.rdf,v 1.5 2003/08/19 15:07:19 connolly Exp $" .
+<http://www.w3.org/2002/07/owl#Class> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#Class> <http://www.w3.org/2000/01/rdf-schema#label> "Class" .
+<http://www.w3.org/2002/07/owl#Class> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#Thing> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/2002/07/owl#Thing> <http://www.w3.org/2000/01/rdf-schema#label> "Thing" .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/2002/07/owl#Nothing> .
+<http://www.w3.org/2002/07/owl#Nothing> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid2 .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid3 .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid2 <http://www.w3.org/2002/07/owl#complementOf> <http://www.w3.org/2002/07/owl#Nothing> .
+_:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/2002/07/owl#Thing> <http://www.w3.org/2002/07/owl#unionOf> _:genid1 .
+<http://www.w3.org/2002/07/owl#Nothing> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/2002/07/owl#Nothing> <http://www.w3.org/2000/01/rdf-schema#label> "Nothing" .
+<http://www.w3.org/2002/07/owl#Nothing> <http://www.w3.org/2002/07/owl#complementOf> <http://www.w3.org/2002/07/owl#Thing> .
+<http://www.w3.org/2002/07/owl#equivalentClass> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#equivalentClass> <http://www.w3.org/2000/01/rdf-schema#label> "equivalentClass" .
+<http://www.w3.org/2002/07/owl#equivalentClass> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#subClassOf> .
+<http://www.w3.org/2002/07/owl#equivalentClass> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/2002/07/owl#equivalentClass> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/2002/07/owl#disjointWith> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#disjointWith> <http://www.w3.org/2000/01/rdf-schema#label> "disjointWith" .
+<http://www.w3.org/2002/07/owl#disjointWith> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/2002/07/owl#disjointWith> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/2002/07/owl#equivalentProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#equivalentProperty> <http://www.w3.org/2000/01/rdf-schema#label> "equivalentProperty" .
+<http://www.w3.org/2002/07/owl#equivalentProperty> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> .
+<http://www.w3.org/2002/07/owl#sameAs> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#sameAs> <http://www.w3.org/2000/01/rdf-schema#label> "sameAs" .
+<http://www.w3.org/2002/07/owl#sameAs> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Thing> .
+<http://www.w3.org/2002/07/owl#sameAs> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2002/07/owl#Thing> .
+<http://www.w3.org/2002/07/owl#differentFrom> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#differentFrom> <http://www.w3.org/2000/01/rdf-schema#label> "differentFrom" .
+<http://www.w3.org/2002/07/owl#differentFrom> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Thing> .
+<http://www.w3.org/2002/07/owl#differentFrom> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2002/07/owl#Thing> .
+<http://www.w3.org/2002/07/owl#AllDifferent> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#AllDifferent> <http://www.w3.org/2000/01/rdf-schema#label> "AllDifferent" .
+<http://www.w3.org/2002/07/owl#distinctMembers> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#distinctMembers> <http://www.w3.org/2000/01/rdf-schema#label> "distinctMembers" .
+<http://www.w3.org/2002/07/owl#distinctMembers> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#AllDifferent> .
+<http://www.w3.org/2002/07/owl#distinctMembers> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#List> .
+<http://www.w3.org/2002/07/owl#unionOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#unionOf> <http://www.w3.org/2000/01/rdf-schema#label> "unionOf" .
+<http://www.w3.org/2002/07/owl#unionOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/2002/07/owl#unionOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#List> .
+<http://www.w3.org/2002/07/owl#intersectionOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#intersectionOf> <http://www.w3.org/2000/01/rdf-schema#label> "intersectionOf" .
+<http://www.w3.org/2002/07/owl#intersectionOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/2002/07/owl#intersectionOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#List> .
+<http://www.w3.org/2002/07/owl#complementOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#complementOf> <http://www.w3.org/2000/01/rdf-schema#label> "complementOf" .
+<http://www.w3.org/2002/07/owl#complementOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/2002/07/owl#complementOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/2002/07/owl#oneOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#oneOf> <http://www.w3.org/2000/01/rdf-schema#label> "oneOf" .
+<http://www.w3.org/2002/07/owl#oneOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#oneOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#List> .
+<http://www.w3.org/2002/07/owl#Restriction> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#Restriction> <http://www.w3.org/2000/01/rdf-schema#label> "Restriction" .
+<http://www.w3.org/2002/07/owl#Restriction> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/2000/01/rdf-schema#label> "onProperty" .
+<http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2000/01/rdf-schema#label> "allValuesFrom" .
+<http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/2000/01/rdf-schema#label> "hasValue" .
+<http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://www.w3.org/2002/07/owl#someValuesFrom> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#someValuesFrom> <http://www.w3.org/2000/01/rdf-schema#label> "someValuesFrom" .
+<http://www.w3.org/2002/07/owl#someValuesFrom> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://www.w3.org/2002/07/owl#someValuesFrom> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#minCardinality> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#minCardinality> <http://www.w3.org/2000/01/rdf-schema#label> "minCardinality" .
+<http://www.w3.org/2002/07/owl#minCardinality> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://www.w3.org/2002/07/owl#minCardinality> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/2002/07/owl#maxCardinality> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#maxCardinality> <http://www.w3.org/2000/01/rdf-schema#label> "maxCardinality" .
+<http://www.w3.org/2002/07/owl#maxCardinality> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://www.w3.org/2002/07/owl#maxCardinality> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/2002/07/owl#cardinality> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#cardinality> <http://www.w3.org/2000/01/rdf-schema#label> "cardinality" .
+<http://www.w3.org/2002/07/owl#cardinality> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://www.w3.org/2002/07/owl#cardinality> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/2002/07/owl#ObjectProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#ObjectProperty> <http://www.w3.org/2000/01/rdf-schema#label> "ObjectProperty" .
+<http://www.w3.org/2002/07/owl#ObjectProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#DatatypeProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#DatatypeProperty> <http://www.w3.org/2000/01/rdf-schema#label> "DatatypeProperty" .
+<http://www.w3.org/2002/07/owl#DatatypeProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#inverseOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#inverseOf> <http://www.w3.org/2000/01/rdf-schema#label> "inverseOf" .
+<http://www.w3.org/2002/07/owl#inverseOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/2002/07/owl#inverseOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/2002/07/owl#TransitiveProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#TransitiveProperty> <http://www.w3.org/2000/01/rdf-schema#label> "TransitiveProperty" .
+<http://www.w3.org/2002/07/owl#TransitiveProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/2002/07/owl#SymmetricProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#SymmetricProperty> <http://www.w3.org/2000/01/rdf-schema#label> "SymmetricProperty" .
+<http://www.w3.org/2002/07/owl#SymmetricProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/2002/07/owl#FunctionalProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#FunctionalProperty> <http://www.w3.org/2000/01/rdf-schema#label> "FunctionalProperty" .
+<http://www.w3.org/2002/07/owl#FunctionalProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#InverseFunctionalProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#InverseFunctionalProperty> <http://www.w3.org/2000/01/rdf-schema#label> "InverseFunctionalProperty" .
+<http://www.w3.org/2002/07/owl#InverseFunctionalProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/2002/07/owl#AnnotationProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#AnnotationProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://www.w3.org/2002/07/owl#Ontology> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#Ontology> <http://www.w3.org/2000/01/rdf-schema#label> "Ontology" .
+<http://www.w3.org/2002/07/owl#OntologyProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#OntologyProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#imports> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#imports> <http://www.w3.org/2000/01/rdf-schema#label> "imports" .
+<http://www.w3.org/2002/07/owl#imports> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#OntologyProperty> .
+<http://www.w3.org/2002/07/owl#imports> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://www.w3.org/2002/07/owl#imports> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://www.w3.org/2002/07/owl#versionInfo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#versionInfo> <http://www.w3.org/2000/01/rdf-schema#label> "versionInfo" .
+<http://www.w3.org/2002/07/owl#versionInfo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://www.w3.org/2002/07/owl#priorVersion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#priorVersion> <http://www.w3.org/2000/01/rdf-schema#label> "priorVersion" .
+<http://www.w3.org/2002/07/owl#priorVersion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#OntologyProperty> .
+<http://www.w3.org/2002/07/owl#priorVersion> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://www.w3.org/2002/07/owl#priorVersion> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://www.w3.org/2002/07/owl#backwardCompatibleWith> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#backwardCompatibleWith> <http://www.w3.org/2000/01/rdf-schema#label> "backwardCompatibleWitesh" .
+<http://www.w3.org/2002/07/owl#backwardCompatibleWith> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#OntologyProperty> .
+<http://www.w3.org/2002/07/owl#backwardCompatibleWith> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://www.w3.org/2002/07/owl#backwardCompatibleWith> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://www.w3.org/2002/07/owl#incompatibleWith> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#incompatibleWith> <http://www.w3.org/2000/01/rdf-schema#label> "incompatibleWith" .
+<http://www.w3.org/2002/07/owl#incompatibleWith> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#OntologyProperty> .
+<http://www.w3.org/2002/07/owl#incompatibleWith> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://www.w3.org/2002/07/owl#incompatibleWith> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://www.w3.org/2002/07/owl#DeprecatedClass> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#DeprecatedClass> <http://www.w3.org/2000/01/rdf-schema#label> "DeprecatedClass" .
+<http://www.w3.org/2002/07/owl#DeprecatedClass> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#DeprecatedProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#DeprecatedProperty> <http://www.w3.org/2000/01/rdf-schema#label> "DeprecatedProperty" .
+<http://www.w3.org/2002/07/owl#DeprecatedProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2002/07/owl#DataRange> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2002/07/owl#DataRange> <http://www.w3.org/2000/01/rdf-schema#label> "DataRange" .
diff --git a/tests/rdfxml/owl-schema.rdf b/tests/rdfxml/owl-schema.rdf
new file mode 100644
index 0000000..eb19db5
--- /dev/null
+++ b/tests/rdfxml/owl-schema.rdf
@@ -0,0 +1,279 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="http://www.w3.org/2002/06/rdfs2html.xsl" type="application/xml"?>
+<!DOCTYPE rdf:RDF [
+ <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
+ <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
+ <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
+ <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
+ ]>
+
+<rdf:RDF
+ xmlns ="&owl;"
+ xmlns:owl ="&owl;"
+ xml:base ="http://www.w3.org/2002/07/owl"
+ xmlns:rdf ="&rdf;"
+ xmlns:rdfs="&rdfs;"
+ xmlns:dc ="http://purl.org/dc/elements/1.1/"
+>
+
+<Ontology rdf:about="">
+ <imports rdf:resource="http://www.w3.org/2000/01/rdf-schema"/>
+ <rdfs:seeAlso rdf:resource="http://www.w3.org/2001/sw/WebOnt/" />
+ <rdfs:seeAlso rdf:resource="http://www.w3.org/TR/owl-features/" />
+ <rdfs:seeAlso rdf:resource="http://www.w3.org/TR/2003/CR-owl-test-20030818/" />
+ <rdfs:seeAlso rdf:resource="http://www.w3.org/TR/2003/CR-owl-semantics-20030818/" />
+ <rdfs:comment>This file specifies in RDF Schema format the
+ built-in classes and properties that together form the basis of
+ the RDF/XML syntax of OWL Full, OWL DL and OWL Lite.
+ We do not expect people to import this file
+ explicitly into their ontology. People that do import this file
+ should expect their ontology to be an OWL Full ontology.
+ </rdfs:comment>
+ <rdfs:comment>$Id: owl.rdf,v 1.5 2003/08/19 15:07:19 connolly Exp $</rdfs:comment>
+ <versionInfo>$Id: owl.rdf,v 1.5 2003/08/19 15:07:19 connolly Exp $</versionInfo>
+</Ontology>
+
+<rdfs:Class rdf:ID="Class">
+ <rdfs:label>Class</rdfs:label>
+ <rdfs:subClassOf rdf:resource="&rdfs;Class"/>
+</rdfs:Class>
+
+<Class rdf:ID="Thing">
+ <rdfs:label>Thing</rdfs:label>
+ <unionOf rdf:parseType="Collection">
+ <Class rdf:about="#Nothing"/>
+ <Class>
+ <complementOf rdf:resource="#Nothing"/>
+ </Class>
+ </unionOf>
+</Class>
+
+<Class rdf:ID="Nothing">
+ <rdfs:label>Nothing</rdfs:label>
+ <complementOf rdf:resource="#Thing"/>
+</Class>
+
+<rdf:Property rdf:ID="equivalentClass">
+ <rdfs:label>equivalentClass</rdfs:label>
+ <rdfs:subPropertyOf rdf:resource="&rdfs;subClassOf"/>
+ <rdfs:domain rdf:resource="#Class"/>
+ <rdfs:range rdf:resource="#Class"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="disjointWith">
+ <rdfs:label>disjointWith</rdfs:label>
+ <rdfs:domain rdf:resource="#Class"/>
+ <rdfs:range rdf:resource="#Class"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="equivalentProperty">
+ <rdfs:label>equivalentProperty</rdfs:label>
+ <rdfs:subPropertyOf rdf:resource="&rdfs;subPropertyOf"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="sameAs">
+ <rdfs:label>sameAs</rdfs:label>
+ <rdfs:domain rdf:resource="#Thing"/>
+ <rdfs:range rdf:resource="#Thing"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="differentFrom">
+ <rdfs:label>differentFrom</rdfs:label>
+ <rdfs:domain rdf:resource="#Thing"/>
+ <rdfs:range rdf:resource="#Thing"/>
+</rdf:Property>
+
+<rdfs:Class rdf:ID="AllDifferent">
+ <rdfs:label>AllDifferent</rdfs:label>
+</rdfs:Class>
+
+<rdf:Property rdf:ID="distinctMembers">
+ <rdfs:label>distinctMembers</rdfs:label>
+ <rdfs:domain rdf:resource="#AllDifferent"/>
+ <rdfs:range rdf:resource="&rdf;List"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="unionOf">
+ <rdfs:label>unionOf</rdfs:label>
+ <rdfs:domain rdf:resource="#Class"/>
+ <rdfs:range rdf:resource="&rdf;List"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="intersectionOf">
+ <rdfs:label>intersectionOf</rdfs:label>
+ <rdfs:domain rdf:resource="#Class"/>
+ <rdfs:range rdf:resource="&rdf;List"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="complementOf">
+ <rdfs:label>complementOf</rdfs:label>
+ <rdfs:domain rdf:resource="#Class"/>
+ <rdfs:range rdf:resource="#Class"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="oneOf">
+ <rdfs:label>oneOf</rdfs:label>
+ <rdfs:domain rdf:resource="&rdfs;Class"/>
+ <rdfs:range rdf:resource="&rdf;List"/>
+</rdf:Property>
+
+<rdfs:Class rdf:ID="Restriction">
+ <rdfs:label>Restriction</rdfs:label>
+ <rdfs:subClassOf rdf:resource="#Class"/>
+</rdfs:Class>
+
+<rdf:Property rdf:ID="onProperty">
+ <rdfs:label>onProperty</rdfs:label>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="&rdf;Property"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="allValuesFrom">
+ <rdfs:label>allValuesFrom</rdfs:label>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="&rdfs;Class"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="hasValue">
+ <rdfs:label>hasValue</rdfs:label>
+ <rdfs:domain rdf:resource="#Restriction"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="someValuesFrom">
+ <rdfs:label>someValuesFrom</rdfs:label>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="&rdfs;Class"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="minCardinality">
+ <rdfs:label>minCardinality</rdfs:label>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="&xsd;nonNegativeInteger"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="maxCardinality">
+ <rdfs:label>maxCardinality</rdfs:label>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="&xsd;nonNegativeInteger"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="cardinality">
+ <rdfs:label>cardinality</rdfs:label>
+ <rdfs:domain rdf:resource="#Restriction"/>
+ <rdfs:range rdf:resource="&xsd;nonNegativeInteger"/>
+</rdf:Property>
+
+<rdfs:Class rdf:ID="ObjectProperty">
+ <rdfs:label>ObjectProperty</rdfs:label>
+ <rdfs:subClassOf rdf:resource="&rdf;Property"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="DatatypeProperty">
+ <rdfs:label>DatatypeProperty</rdfs:label>
+ <rdfs:subClassOf rdf:resource="&rdf;Property"/>
+</rdfs:Class>
+
+<rdf:Property rdf:ID="inverseOf">
+ <rdfs:label>inverseOf</rdfs:label>
+ <rdfs:domain rdf:resource="#ObjectProperty"/>
+ <rdfs:range rdf:resource="#ObjectProperty"/>
+</rdf:Property>
+
+<rdfs:Class rdf:ID="TransitiveProperty">
+ <rdfs:label>TransitiveProperty</rdfs:label>
+ <rdfs:subClassOf rdf:resource="#ObjectProperty"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="SymmetricProperty">
+ <rdfs:label>SymmetricProperty</rdfs:label>
+ <rdfs:subClassOf rdf:resource="#ObjectProperty"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="FunctionalProperty">
+ <rdfs:label>FunctionalProperty</rdfs:label>
+ <rdfs:subClassOf rdf:resource="&rdf;Property"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="InverseFunctionalProperty">
+ <rdfs:label>InverseFunctionalProperty</rdfs:label>
+ <rdfs:subClassOf rdf:resource="&owl;ObjectProperty"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="AnnotationProperty">
+ <rdfs:subClassOf rdf:resource="&rdf;Property"/>
+</rdfs:Class>
+
+<rdf:Description rdf:about="&rdfs;label">
+ <rdf:type rdf:resource="#AnnotationProperty"/>
+</rdf:Description>
+
+<rdf:Description rdf:about="&rdfs;comment">
+ <rdf:type rdf:resource="#AnnotationProperty"/>
+</rdf:Description>
+
+<rdf:Description rdf:about="&rdfs;seeAlso">
+ <rdf:type rdf:resource="#AnnotationProperty"/>
+</rdf:Description>
+
+<rdf:Description rdf:about="&rdfs;isDefinedBy">
+ <rdf:type rdf:resource="#AnnotationProperty"/>
+</rdf:Description>
+
+<rdfs:Class rdf:ID="Ontology">
+ <rdfs:label>Ontology</rdfs:label>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="OntologyProperty">
+ <rdfs:subClassOf rdf:resource="&rdf;Property"/>
+</rdfs:Class>
+
+<rdf:Property rdf:ID="imports">
+ <rdfs:label>imports</rdfs:label>
+ <rdf:type rdf:resource="#OntologyProperty"/>
+ <rdfs:domain rdf:resource="#Ontology"/>
+ <rdfs:range rdf:resource="#Ontology"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="versionInfo">
+ <rdfs:label>versionInfo</rdfs:label>
+ <rdf:type rdf:resource="#AnnotationProperty"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="priorVersion">
+ <rdfs:label>priorVersion</rdfs:label>
+ <rdf:type rdf:resource="#OntologyProperty"/>
+ <rdfs:domain rdf:resource="#Ontology"/>
+ <rdfs:range rdf:resource="#Ontology"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="backwardCompatibleWith">
+ <rdfs:label>backwardCompatibleWitesh</rdfs:label>
+ <rdf:type rdf:resource="#OntologyProperty"/>
+ <rdfs:domain rdf:resource="#Ontology"/>
+ <rdfs:range rdf:resource="#Ontology"/>
+</rdf:Property>
+
+<rdf:Property rdf:ID="incompatibleWith">
+ <rdfs:label>incompatibleWith</rdfs:label>
+ <rdf:type rdf:resource="#OntologyProperty"/>
+ <rdfs:domain rdf:resource="#Ontology"/>
+ <rdfs:range rdf:resource="#Ontology"/>
+</rdf:Property>
+
+<rdfs:Class rdf:ID="DeprecatedClass">
+ <rdfs:label>DeprecatedClass</rdfs:label>
+ <rdfs:subClassOf rdf:resource="&rdfs;Class"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="DeprecatedProperty">
+ <rdfs:label>DeprecatedProperty</rdfs:label>
+ <rdfs:subClassOf rdf:resource="&rdf;Property"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="DataRange">
+ <rdfs:label>DataRange</rdfs:label>
+</rdfs:Class>
+
+
+</rdf:RDF>
+
diff --git a/tests/rdfxml/rdf-schema.out b/tests/rdfxml/rdf-schema.out
new file mode 100644
index 0000000..d144ceb
--- /dev/null
+++ b/tests/rdfxml/rdf-schema.out
@@ -0,0 +1,129 @@
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#label> "Resource"@en .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#label> "Ressource"@fr .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#comment> "The most general class" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#label> "type"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#label> "type"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates membership of a class" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#label> "comment"@en .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#label> "commentaire"@fr .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#comment> "Use this for descriptions" .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Literal> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#label> "label"@en .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#label> "label"@fr .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#comment> "Provides a human-readable version of a resource name." .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Literal> .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#label> "Class"@en .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#label> "Classe"@fr .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#comment> "The concept of Class" .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#label> "subClassOf"@en .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#label> "sousClasseDe"@fr .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates membership of a class" .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#label> "subPropertyOf"@en .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#label> "sousPropri\u00E9t\u00E9De"@fr .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates specialization of properties" .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#label> "seeAlso"@en .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#label> "voirAussi"@fr .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates a resource that provides information about the subject resource." .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#seeAlso> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#label> "isDefinedBy"@en .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#label> "esD\u00E9finiPar"@fr .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates a resource containing and defining the subject resource." .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/2000/01/rdf-schema#label> "ConstraintResource"@en .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/2000/01/rdf-schema#label> "RessourceContrainte"@fr .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/2000/01/rdf-schema#comment> "Resources used to express RDF Schema constraints." .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#label> "ConstraintProperty"@en .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#label> "Propri\u00E9t\u00E9Contrainte"@fr .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#ConstraintResource> .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#comment> "Properties used to express RDF Schema constraints." .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#label> "domain"@en .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#label> "domaine"@fr .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#comment> "This is how we associate a class with properties that its instances can have" .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#label> "range"@en .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#label> "\u00E9tendue"@fr .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#comment> "Properties that can be used in a schema to provide constraints" .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#label> "Property"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#label> "Propri\u00E9t\u00E9"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#comment> "The concept of a property." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#label> "Literal"@en .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#label> "Litt\u00E9ral"@fr .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set of atomic values, eg. textual strings." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#label> "Statement"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#label> "D\u00E9claration"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set of reified statements." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#label> "subject"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#label> "sujet"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#label> "predicate"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#label> "pr\u00E9dicat"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#label> "object"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#label> "objet"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#label> "Container"@en .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#label> "Enveloppe"@fr .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set Containers." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#label> "Bag"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#label> "Ensemble"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#label> "Sequence"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#label> "S\u00E9quence"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#label> "Alt"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#label> "Choix"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#label> "ContainerMembershipProperty"@en .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#label> "object"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#label> "value"@fr .
+<http://www.w3.org/2000/01/rdf-schema#> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema-more> .
diff --git a/tests/rdfxml/rdf-schema.rdf b/tests/rdfxml/rdf-schema.rdf
new file mode 100644
index 0000000..f83f7f6
--- /dev/null
+++ b/tests/rdfxml/rdf-schema.rdf
@@ -0,0 +1,187 @@
+<rdf:RDF
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
+
+<rdfs:Class rdf:ID="Resource">
+ <rdfs:label xml:lang="en">Resource</rdfs:label>
+ <rdfs:label xml:lang="fr">Ressource</rdfs:label>
+ <rdfs:comment>The most general class</rdfs:comment>
+</rdfs:Class>
+
+<rdf:Property about="http://www.w3.org/1999/02/22-rdf-syntax-ns#type">
+ <rdfs:label xml:lang="en">type</rdfs:label>
+ <rdfs:label xml:lang="fr">type</rdfs:label>
+ <rdfs:comment>Indicates membership of a class</rdfs:comment>
+ <rdfs:range rdf:resource="#Class"/>
+</rdf:Property>
+
+<rdf:Property ID="comment">
+ <rdfs:label xml:lang="en">comment</rdfs:label>
+ <rdfs:label xml:lang="fr">commentaire</rdfs:label>
+ <rdfs:domain rdf:resource="#Resource"/>
+ <rdfs:comment>Use this for descriptions</rdfs:comment>
+ <rdfs:range rdf:resource="#Literal"/>
+</rdf:Property>
+
+<rdf:Property ID="label">
+ <rdf:type resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+ <rdfs:label xml:lang="en">label</rdfs:label>
+ <rdfs:label xml:lang="fr">label</rdfs:label>
+ <rdfs:domain rdf:resource="#Resource"/>
+ <rdfs:comment>Provides a human-readable version of a resource name.</rdfs:comment>
+ <rdfs:range rdf:resource="#Literal"/>
+</rdf:Property>
+
+<rdfs:Class rdf:ID="Class">
+ <rdfs:label xml:lang="en">Class</rdfs:label>
+ <rdfs:label xml:lang="fr">Classe</rdfs:label>
+ <rdfs:comment>The concept of Class</rdfs:comment>
+ <rdfs:subClassOf rdf:resource="#Resource"/>
+</rdfs:Class>
+
+<rdf:Property ID="subClassOf">
+ <rdfs:label xml:lang="en">subClassOf</rdfs:label>
+ <rdfs:label xml:lang="fr">sousClasseDe</rdfs:label>
+ <rdfs:comment>Indicates membership of a class</rdfs:comment>
+ <rdfs:range rdf:resource="#Class"/>
+ <rdfs:domain rdf:resource="#Class"/>
+</rdf:Property>
+
+<rdf:Property ID="subPropertyOf">
+ <rdfs:label xml:lang="en">subPropertyOf</rdfs:label>
+ <rdfs:label xml:lang="fr">sousPropri&#233;t&#233;De</rdfs:label>
+ <rdfs:comment>Indicates specialization of properties</rdfs:comment>
+ <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+ <rdfs:domain rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdf:Property>
+
+<rdf:Property ID="seeAlso">
+ <rdfs:label xml:lang="en">seeAlso</rdfs:label>
+ <rdfs:label xml:lang="fr">voirAussi</rdfs:label>
+ <rdfs:comment>Indicates a resource that provides information about the subject resource.</rdfs:comment>
+ <rdfs:range rdf:resource="#Resource"/>
+ <rdfs:domain rdf:resource="#Resource"/>
+</rdf:Property>
+
+<rdf:Property ID="isDefinedBy">
+ <rdf:type resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+ <rdfs:subPropertyOf rdf:resource="#seeAlso"/>
+ <rdfs:label xml:lang="en">isDefinedBy</rdfs:label>
+ <rdfs:label xml:lang="fr">esD&#233;finiPar</rdfs:label>
+ <rdfs:comment>Indicates a resource containing and defining the subject resource.</rdfs:comment>
+ <rdfs:range rdf:resource="#Resource"/>
+ <rdfs:domain rdf:resource="#Resource"/>
+</rdf:Property>
+
+<rdfs:Class rdf:ID="ConstraintResource">
+ <rdfs:label xml:lang="en">ConstraintResource</rdfs:label>
+ <rdfs:label xml:lang="fr">RessourceContrainte</rdfs:label>
+ <rdf:type resource="#Class"/>
+ <rdfs:subClassOf rdf:resource="#Resource"/>
+ <rdfs:comment>Resources used to express RDF Schema constraints.</rdfs:comment>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="ConstraintProperty">
+ <rdfs:label xml:lang="en">ConstraintProperty</rdfs:label>
+ <rdfs:label xml:lang="fr">Propri&#233;t&#233;Contrainte</rdfs:label>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+ <rdfs:subClassOf rdf:resource="#ConstraintResource"/>
+ <rdfs:comment>Properties used to express RDF Schema constraints.</rdfs:comment>
+</rdfs:Class>
+
+<rdfs:ConstraintProperty rdf:ID="domain">
+ <rdfs:label xml:lang="en">domain</rdfs:label>
+ <rdfs:label xml:lang="fr">domaine</rdfs:label>
+ <rdfs:comment>This is how we associate a class with properties that its instances can have</rdfs:comment>
+</rdfs:ConstraintProperty>
+
+<rdfs:ConstraintProperty rdf:ID="range">
+ <rdfs:label xml:lang="en">range</rdfs:label>
+ <rdfs:label xml:lang="fr">&#233;tendue</rdfs:label>
+ <rdfs:comment>Properties that can be used in a schema to provide constraints</rdfs:comment>
+ <rdfs:range rdf:resource="#Class"/>
+ <rdfs:domain rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdfs:ConstraintProperty>
+
+<rdfs:Class rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property">
+ <rdfs:label xml:lang="en">Property</rdfs:label>
+ <rdfs:label xml:lang="fr">Propri&#233;t&#233;</rdfs:label>
+ <rdfs:comment>The concept of a property.</rdfs:comment>
+ <rdfs:subClassOf rdf:resource="#Resource"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="Literal">
+ <rdfs:label xml:lang="en">Literal</rdfs:label>
+ <rdfs:label xml:lang="fr">Litt&#233;ral</rdfs:label>
+ <rdf:type resource="#Class"/>
+ <rdfs:comment>This represents the set of atomic values, eg. textual strings.</rdfs:comment>
+</rdfs:Class>
+
+<rdfs:Class rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement">
+ <rdfs:label xml:lang="en">Statement</rdfs:label>
+ <rdfs:label xml:lang="fr">D&#233;claration</rdfs:label>
+ <rdfs:subClassOf rdf:resource="#Resource"/>
+ <rdfs:comment>This represents the set of reified statements.</rdfs:comment>
+</rdfs:Class>
+
+<rdf:Property about="http://www.w3.org/1999/02/22-rdf-syntax-ns#subject">
+ <rdfs:label xml:lang="en">subject</rdfs:label>
+ <rdfs:label xml:lang="fr">sujet</rdfs:label>
+ <rdfs:domain rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"/>
+ <rdfs:range rdf:resource="#Resource"/>
+</rdf:Property>
+
+<rdf:Property about="http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate">
+ <rdfs:label xml:lang="en">predicate</rdfs:label>
+ <rdfs:label xml:lang="fr">pr&#233;dicat</rdfs:label>
+ <rdf:type resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+ <rdfs:domain rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"/>
+ <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdf:Property>
+
+<rdf:Property about="http://www.w3.org/1999/02/22-rdf-syntax-ns#object">
+ <rdfs:label xml:lang="en">object</rdfs:label>
+ <rdfs:label xml:lang="fr">objet</rdfs:label>
+ <rdfs:domain rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"/>
+</rdf:Property>
+
+<rdfs:Class rdf:ID="Container">
+ <rdfs:label xml:lang="en">Container</rdfs:label>
+ <rdfs:label xml:lang="fr">Enveloppe</rdfs:label>
+ <rdfs:subClassOf rdf:resource="#Resource"/>
+ <rdfs:comment>This represents the set Containers.</rdfs:comment>
+</rdfs:Class>
+
+<rdfs:Class rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag">
+ <rdfs:label xml:lang="en">Bag</rdfs:label>
+ <rdfs:label xml:lang="fr">Ensemble</rdfs:label>
+ <rdfs:subClassOf rdf:resource="#Container"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq">
+ <rdfs:label xml:lang="en">Sequence</rdfs:label>
+ <rdfs:label xml:lang="fr">S&#233;quence</rdfs:label>
+ <rdfs:subClassOf rdf:resource="#Container"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt">
+ <rdfs:label xml:lang="en">Alt</rdfs:label>
+ <rdfs:label xml:lang="fr">Choix</rdfs:label>
+ <rdfs:subClassOf rdf:resource="#Container"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:ID="ContainerMembershipProperty">
+ <rdfs:label xml:lang="en">ContainerMembershipProperty</rdfs:label>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdfs:Class>
+
+<rdf:Property rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#value">
+ <rdfs:label xml:lang="en">object</rdfs:label>
+ <rdfs:label xml:lang="fr">value</rdfs:label>
+</rdf:Property>
+
+<rdf:Description about="http://www.w3.org/2000/01/rdf-schema#">
+ <rdfs:seeAlso resource="http://www.w3.org/2000/01/rdf-schema-more"/>
+</rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/rdfs-namespace.out b/tests/rdfxml/rdfs-namespace.out
new file mode 100644
index 0000000..2097537
--- /dev/null
+++ b/tests/rdfxml/rdfs-namespace.out
@@ -0,0 +1,132 @@
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#label> "Resource"@en .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#comment> "The class resource, everything." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#label> "type"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates membership of a class" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#label> "Class"@en .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#comment> "The concept of Class" .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#label> "subClassOf"@en .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates membership of a class" .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#label> "subPropertyOf"@en .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates specialization of properties" .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#label> "Property"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#comment> "The concept of a property." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#label> "comment"@en .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#comment> "Use this for descriptions" .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Literal> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#label> "label"@en .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#comment> "Provides a human-readable version of a resource name." .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Literal> .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#label> "domain"@en .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#comment> "A domain class for a property type" .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#label> "range"@en .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#comment> "A range class for a property type" .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#label> "seeAlso"@en .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#comment> "A resource that provides information about the subject resource" .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#seeAlso> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#label> "isDefinedBy"@en .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates the namespace of a resource" .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#label> "Literal"@en .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set of atomic values, eg. textual strings." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#label> "Statement"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#comment> "The class of RDF statements." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#label> "subject"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#comment> "The subject of an RDF statement." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#label> "predicate"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#comment> "the predicate of an RDF statement." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#label> "object"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#comment> "The object of an RDF statement." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#label> "Container"@en .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set Containers." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#label> "Bag"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#comment> "An unordered collection."@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#label> "Seq"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#comment> "An ordered collection."@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#label> "Alt"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#comment> "A collection of alternatives."@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#label> "ContainerMembershipProperty"@en .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#comment> "The container membership properties, rdf:1, rdf:2, ..., all of which are sub-properties of 'member'." .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#member> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#member> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#member> <http://www.w3.org/2000/01/rdf-schema#label> "member"@en .
+<http://www.w3.org/2000/01/rdf-schema#member> <http://www.w3.org/2000/01/rdf-schema#comment> "a member of a container" .
+<http://www.w3.org/2000/01/rdf-schema#member> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#label> "value"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#comment> "Identifies the principal value (usually a string) of a property when the property value is a structured resource" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema-more> .
diff --git a/tests/rdfxml/rdfs-namespace.rdf b/tests/rdfxml/rdfs-namespace.rdf
new file mode 100644
index 0000000..999fc0e
--- /dev/null
+++ b/tests/rdfxml/rdfs-namespace.rdf
@@ -0,0 +1,188 @@
+<rdf:RDF
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
+
+<rdfs:Class rdf:about="http://www.w3.org/2000/01/rdf-schema#Resource">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">Resource</rdfs:label>
+ <rdfs:comment>The class resource, everything.</rdfs:comment>
+</rdfs:Class>
+
+<rdf:Property rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#type">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
+ <rdfs:label xml:lang="en">type</rdfs:label>
+ <rdfs:comment>Indicates membership of a class</rdfs:comment>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
+ <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+</rdf:Property>
+
+<rdfs:Class rdf:about="http://www.w3.org/2000/01/rdf-schema#Class">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">Class</rdfs:label>
+ <rdfs:comment>The concept of Class</rdfs:comment>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+</rdfs:Class>
+
+<rdf:Property rdf:about="http://www.w3.org/2000/01/rdf-schema#subClassOf">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">subClassOf</rdfs:label>
+ <rdfs:comment>Indicates membership of a class</rdfs:comment>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
+ <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
+</rdf:Property>
+
+<rdf:Property rdf:about="http://www.w3.org/2000/01/rdf-schema#subPropertyOf">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">subPropertyOf</rdfs:label>
+ <rdfs:comment>Indicates specialization of properties</rdfs:comment>
+ <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+ <rdfs:domain rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdf:Property>
+
+<rdfs:Class rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
+ <rdfs:label xml:lang="en">Property</rdfs:label>
+ <rdfs:comment>The concept of a property.</rdfs:comment>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+</rdfs:Class>
+
+<rdf:Property rdf:about="http://www.w3.org/2000/01/rdf-schema#comment">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">comment</rdfs:label>
+ <rdfs:comment>Use this for descriptions</rdfs:comment>
+ <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/>
+</rdf:Property>
+
+<rdf:Property rdf:about="http://www.w3.org/2000/01/rdf-schema#label">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">label</rdfs:label>
+ <rdfs:comment>Provides a human-readable version of a resource name.</rdfs:comment>
+ <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/>
+</rdf:Property>
+
+<rdf:Property rdf:about="http://www.w3.org/2000/01/rdf-schema#domain">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">domain</rdfs:label>
+ <rdfs:comment>A domain class for a property type</rdfs:comment>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
+ <rdfs:domain rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdf:Property>
+
+<rdf:Property rdf:about="http://www.w3.org/2000/01/rdf-schema#range">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">range</rdfs:label>
+ <rdfs:comment>A range class for a property type</rdfs:comment>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
+ <rdfs:domain rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdf:Property>
+
+<rdf:Property rdf:about="http://www.w3.org/2000/01/rdf-schema#seeAlso">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">seeAlso</rdfs:label>
+ <rdfs:comment>A resource that provides information about the subject resource</rdfs:comment>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+ <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+</rdf:Property>
+
+<rdf:Property rdf:about="http://www.w3.org/2000/01/rdf-schema#isDefinedBy">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdf:type resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+ <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#seeAlso"/>
+ <rdfs:label xml:lang="en">isDefinedBy</rdfs:label>
+ <rdfs:comment>Indicates the namespace of a resource</rdfs:comment>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+ <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+</rdf:Property>
+
+<rdfs:Class rdf:about="http://www.w3.org/2000/01/rdf-schema#Literal">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">Literal</rdfs:label>
+ <rdfs:comment>This represents the set of atomic values, eg. textual strings.</rdfs:comment>
+</rdfs:Class>
+
+<rdfs:Class rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
+ <rdfs:label xml:lang="en">Statement</rdfs:label>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+ <rdfs:comment>The class of RDF statements.</rdfs:comment>
+</rdfs:Class>
+
+<rdf:Property about="http://www.w3.org/1999/02/22-rdf-syntax-ns#subject">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
+ <rdfs:label xml:lang="en">subject</rdfs:label>
+ <rdfs:comment>The subject of an RDF statement.</rdfs:comment>
+ <rdfs:domain rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"/>
+ <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+</rdf:Property>
+
+<rdf:Property about="http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
+ <rdfs:label xml:lang="en">predicate</rdfs:label>
+ <rdfs:comment>the predicate of an RDF statement.</rdfs:comment>
+ <rdfs:domain rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"/>
+ <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdf:Property>
+
+<rdf:Property about="http://www.w3.org/1999/02/22-rdf-syntax-ns#object">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
+ <rdfs:label xml:lang="en">object</rdfs:label>
+ <rdfs:comment>The object of an RDF statement.</rdfs:comment>
+ <rdfs:domain rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"/>
+</rdf:Property>
+
+<rdfs:Class rdf:about="http://www.w3.org/2000/01/rdf-schema#Container">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">Container</rdfs:label>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+ <rdfs:comment>This represents the set Containers.</rdfs:comment>
+</rdfs:Class>
+
+<rdfs:Class rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
+ <rdfs:label xml:lang="en">Bag</rdfs:label>
+ <rdfs:comment xml:lang="en">An unordered collection.</rdfs:comment>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Container"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
+ <rdfs:label xml:lang="en">Seq</rdfs:label>
+ <rdfs:comment xml:lang="en">An ordered collection.</rdfs:comment>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Container"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
+ <rdfs:label xml:lang="en">Alt</rdfs:label>
+ <rdfs:comment xml:lang="en">A collection of alternatives.</rdfs:comment>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Container"/>
+</rdfs:Class>
+
+<rdfs:Class rdf:about="http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">ContainerMembershipProperty</rdfs:label>
+ <rdfs:comment>The container membership properties, rdf:1, rdf:2, ..., all of which are sub-properties of 'member'.</rdfs:comment>
+ <rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
+</rdfs:Class>
+
+<rdf:Property rdf:about="http://www.w3.org/2000/01/rdf-schema#member">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/2000/01/rdf-schema#"/>
+ <rdfs:label xml:lang="en">member</rdfs:label>
+ <rdfs:comment>a member of a container</rdfs:comment>
+ <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Container"/>
+</rdf:Property>
+
+<rdf:Property rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#value">
+ <rdfs:isDefinedBy rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
+ <rdfs:label xml:lang="en">value</rdfs:label>
+ <rdfs:comment>Identifies the principal value (usually a string) of a property when the property value is a structured resource</rdfs:comment>
+ <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
+</rdf:Property>
+
+<rdf:Description rdf:about="http://www.w3.org/2000/01/rdf-schema#">
+ <rdfs:seeAlso rdf:resource="http://www.w3.org/2000/01/rdf-schema-more"/>
+</rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/warn-00.out b/tests/rdfxml/warn-00.out
new file mode 100644
index 0000000..2424eaf
--- /dev/null
+++ b/tests/rdfxml/warn-00.out
@@ -0,0 +1,7 @@
+<http://example.org/triples#bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> .
+<http://example.org/> <http://www.example.org/ns#prop> "text" .
+<http://example.org/triples#bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> _:genid1 .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://example.org/> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.example.org/ns#prop> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> "text" .
diff --git a/tests/rdfxml/warn-00.rdf b/tests/rdfxml/warn-00.rdf
new file mode 100644
index 0000000..fc1b6a4
--- /dev/null
+++ b/tests/rdfxml/warn-00.rdf
@@ -0,0 +1,12 @@
+<?xml version="1.0" standalone="no"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://www.example.org/ns#"
+ xml:base="http://example.org/triples">
+
+ <!-- Should give a warning about rdf:bagID attribute -->
+
+ <rdf:Description about="http://example.org/" rdf:bagID="bag">
+ <ex:prop>text</ex:prop>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/warn-02.out b/tests/rdfxml/warn-02.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rdfxml/warn-02.out
diff --git a/tests/rdfxml/warn-02.rdf b/tests/rdfxml/warn-02.rdf
new file mode 100644
index 0000000..6cea5cf
--- /dev/null
+++ b/tests/rdfxml/warn-02.rdf
@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:notrdf="http://www.w3.org/1999/02/22-rdf-syntax-ns">
+
+ <!-- Should give a warning above about notrdf namespace declaration -->
+
+</rdf:RDF>
diff --git a/tests/rdfxml/warn-04.out b/tests/rdfxml/warn-04.out
new file mode 100644
index 0000000..462a8d9
--- /dev/null
+++ b/tests/rdfxml/warn-04.out
@@ -0,0 +1,2 @@
+<http://example.org/res> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#description> .
+<http://example.org/res> <http://example.org/foo> "bar" .
diff --git a/tests/rdfxml/warn-04.rdf b/tests/rdfxml/warn-04.rdf
new file mode 100644
index 0000000..f62c8f2
--- /dev/null
+++ b/tests/rdfxml/warn-04.rdf
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/">
+
+ <!-- check unknown rdf node element is picked up -->
+
+ <rdf:description rdf:about="http://example.org/res">
+ <ex:foo>bar</ex:foo>
+ </rdf:description>
+</rdf:RDF>
diff --git a/tests/rdfxml/warn-05.out b/tests/rdfxml/warn-05.out
new file mode 100644
index 0000000..69624b0
--- /dev/null
+++ b/tests/rdfxml/warn-05.out
@@ -0,0 +1 @@
+<http://example.org/res> <http://www.w3.org/1999/02/22-rdf-syntax-ns#foo> "bar" .
diff --git a/tests/rdfxml/warn-05.rdf b/tests/rdfxml/warn-05.rdf
new file mode 100644
index 0000000..530d44b
--- /dev/null
+++ b/tests/rdfxml/warn-05.rdf
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- check unknown rdf property element is picked up -->
+
+ <rdf:Description rdf:about="http://example.org/res">
+ <rdf:foo>bar</rdf:foo>
+ </rdf:Description>
+</rdf:RDF>
diff --git a/tests/rdfxml/warn-06.out b/tests/rdfxml/warn-06.out
new file mode 100644
index 0000000..676d52e
--- /dev/null
+++ b/tests/rdfxml/warn-06.out
@@ -0,0 +1 @@
+<http://example.org/res> <http://www.w3.org/1999/02/22-rdf-syntax-ns#foo> "blah" .
diff --git a/tests/rdfxml/warn-06.rdf b/tests/rdfxml/warn-06.rdf
new file mode 100644
index 0000000..5bed246
--- /dev/null
+++ b/tests/rdfxml/warn-06.rdf
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <!-- check unknown rdf property attribute is picked up -->
+
+ <rdf:Description rdf:about="http://example.org/res"
+ rdf:foo="blah"
+ />
+</rdf:RDF>
diff --git a/tests/rdfxml/warn-07.out b/tests/rdfxml/warn-07.out
new file mode 100644
index 0000000..3823555
--- /dev/null
+++ b/tests/rdfxml/warn-07.out
@@ -0,0 +1,2 @@
+<http://example.org/node> <http://example.org/ns#prop1> "\n <name xmlns=\"http://example.org/ns#\">prop1name</name>\n "^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<http://example.org/node> <http://example.org/ns#prop2> "\n <rdf:Description xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" rdf:about=\"http://example.org/first\"></rdf:Description>\n <rdf:Description xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" rdf:about=\"http://example.org/second\"></rdf:Description>\n <rdf:Description xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" rdf:about=\"http://example.org/third\"></rdf:Description>\n "^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
diff --git a/tests/rdfxml/warn-07.rdf b/tests/rdfxml/warn-07.rdf
new file mode 100644
index 0000000..c187dd1
--- /dev/null
+++ b/tests/rdfxml/warn-07.rdf
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://example.org/ns#">
+
+ <!-- test warning for unknown rdf:parseType values (taken as Literal) -->
+
+ <rdf:Description rdf:about="http://example.org/node">
+ <prop1 rdf:parseType="Fake">
+ <name>prop1name</name>
+ </prop1>
+
+ <!-- this is not a Collection but a bunch of XML -->
+ <prop2 rdf:parseType="collection">
+ <rdf:Description rdf:about="http://example.org/first" />
+ <rdf:Description rdf:about="http://example.org/second" />
+ <rdf:Description rdf:about="http://example.org/third" />
+ </prop2>
+ </rdf:Description>
+
+</rdf:RDF>
diff --git a/tests/rdfxml/wine.out b/tests/rdfxml/wine.out
new file mode 100644
index 0000000..5f007db
--- /dev/null
+++ b/tests/rdfxml/wine.out
@@ -0,0 +1,2012 @@
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine> <http://www.w3.org/2000/01/rdf-schema#comment> "An example OWL ontology" .
+<http://www.w3.org/TR/2003/WD-owl-guide-20030331/wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine> <http://www.w3.org/2002/07/owl#priorVersion> <http://www.w3.org/TR/2003/WD-owl-guide-20030331/wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine> <http://www.w3.org/2002/07/owl#imports> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/food> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine> <http://www.w3.org/2000/01/rdf-schema#comment> "Derived from the DAML Wine ontology at \n http://ontolingua.stanford.edu/doc/chimaera/ontologies/wines.daml\n Substantially changed, in particular the Region based relations.\n " .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine> <http://www.w3.org/2000/01/rdf-schema#label> "Wine Ontology" .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#PotableLiquid> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid1 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> .
+_:genid1 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid1 .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid2 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> .
+_:genid2 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid2 .
+_:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid3 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid3 <http://www.w3.org/2002/07/owl#minCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid3 .
+_:genid4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid4 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid4 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid4 .
+_:genid5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid5 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid5 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid5 .
+_:genid6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid6 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid6 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid6 .
+_:genid7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid7 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid7 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid7 .
+_:genid8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid8 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid8 <http://www.w3.org/2002/07/owl#someValuesFrom> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid8 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/2000/01/rdf-schema#label> "wine"@en .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/2000/01/rdf-schema#label> "vin"@fr .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Vintage> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid9 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasVintageYear> .
+_:genid9 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Vintage> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid9 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#Grape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid12 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid11 .
+_:genid10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid12 .
+_:genid11 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid11 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid11 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+_:genid12 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid10 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteTableWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid13 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TableWine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TableWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid15 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid14 .
+_:genid13 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid15 .
+_:genid14 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid14 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid14 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+_:genid15 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteTableWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid13 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteNonSweetWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid16 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid18 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid17 .
+_:genid16 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid18 .
+_:genid17 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid17 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid19 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid20 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid21 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> .
+_:genid20 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid21 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid21 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid19 <http://www.w3.org/2002/07/owl#oneOf> _:genid20 .
+_:genid17 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid19 .
+_:genid18 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteNonSweetWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid16 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteLoire> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid22 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Loire> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Loire> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid23 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> .
+_:genid22 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid23 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid23 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteLoire> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid22 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteLoire> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid24 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid24 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid25 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid26 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlancGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlancGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid27 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotBlancGrape> .
+_:genid26 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid27 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotBlancGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid28 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlancGrape> .
+_:genid27 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid28 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlancGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid28 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid25 <http://www.w3.org/2002/07/owl#oneOf> _:genid26 .
+_:genid24 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid25 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteLoire> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid24 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBurgundy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid29 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Burgundy> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Burgundy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid30 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> .
+_:genid29 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid30 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid30 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBurgundy> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid29 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBurgundy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid31 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid31 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid31 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChardonnayGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBurgundy> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid31 .
+_:genid32 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid32 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid32 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBurgundy> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid32 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBordeaux> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid33 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bordeaux> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bordeaux> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid34 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> .
+_:genid33 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid34 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid34 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBordeaux> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid33 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBordeaux> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid35 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid35 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid36 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid37 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid38 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlancGrape> .
+_:genid37 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid38 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlancGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid38 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid36 <http://www.w3.org/2002/07/owl#oneOf> _:genid37 .
+_:genid35 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid36 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBordeaux> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid35 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#TransitiveProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2002/07/owl#Thing> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#adjacentRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#adjacentRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#SymmetricProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#adjacentRegion> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#adjacentRegion> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#VintageYear> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#yearValue> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#yearValue> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#VintageYear> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#yearValue> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#positiveInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Year1998> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#VintageYear> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Year1998> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#yearValue> "1998"^^<http://www.w3.org/2001/XMLSchema#positiveInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasVintageYear> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasVintageYear> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasVintageYear> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Vintage> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasVintageYear> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#VintageYear> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#madeFromFruit> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeIntoWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeIntoWine> <http://www.w3.org/2002/07/owl#inverseOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasWineDescriptor> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasWineDescriptor> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasWineDescriptor> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineDescriptor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasWineDescriptor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineSugar> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasWineDescriptor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineBody> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasWineDescriptor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineFlavor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasWineDescriptor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineColor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#producesWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#producesWine> <http://www.w3.org/2002/07/owl#inverseOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Zinfandel> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid39 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid41 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid40 .
+_:genid39 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid41 .
+_:genid40 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid40 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid40 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ZinfandelGrape> .
+_:genid43 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid42 .
+_:genid41 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid43 .
+_:genid42 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid42 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid42 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid43 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Zinfandel> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid39 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Zinfandel> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid44 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid44 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid44 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Zinfandel> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid44 .
+_:genid45 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid45 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid45 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Zinfandel> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid45 .
+_:genid46 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid46 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid47 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid48 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid49 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+_:genid48 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid49 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid49 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid47 <http://www.w3.org/2002/07/owl#oneOf> _:genid48 .
+_:genid46 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid47 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Zinfandel> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid46 .
+_:genid50 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid50 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid51 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid52 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid53 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+_:genid52 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid53 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid53 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid51 <http://www.w3.org/2002/07/owl#oneOf> _:genid52 .
+_:genid50 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid51 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Zinfandel> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid50 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineDescriptor> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineDescriptor> <http://www.w3.org/2000/01/rdf-schema#comment> "Made WineDescriptor unionType of tastes and color" .
+_:genid54 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineTaste> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineTaste> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid55 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineColor> .
+_:genid54 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid55 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineColor> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid55 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineDescriptor> <http://www.w3.org/2002/07/owl#unionOf> _:genid54 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineTaste> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineTaste> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineDescriptor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineColor> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineColor> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineDescriptor> .
+_:genid56 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid57 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Rose> .
+_:genid56 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid57 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Rose> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid58 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+_:genid57 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid58 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid58 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineColor> <http://www.w3.org/2002/07/owl#oneOf> _:genid56 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineSugar> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineSugar> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineTaste> .
+_:genid59 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid60 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> .
+_:genid59 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid60 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid61 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+_:genid60 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid61 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid61 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineSugar> <http://www.w3.org/2002/07/owl#oneOf> _:genid59 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineFlavor> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineFlavor> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineTaste> .
+_:genid62 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid63 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+_:genid62 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid63 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid64 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+_:genid63 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid64 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid64 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineFlavor> <http://www.w3.org/2002/07/owl#oneOf> _:genid62 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineBody> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineBody> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineTaste> .
+_:genid65 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid66 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+_:genid65 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid66 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid67 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+_:genid66 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid67 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid67 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineBody> <http://www.w3.org/2002/07/owl#oneOf> _:genid65 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#USRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Tours> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid68 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Loire> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Loire> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid70 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid69 .
+_:genid68 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid70 .
+_:genid69 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid69 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid69 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ToursRegion> .
+_:genid70 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Tours> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid68 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Tours> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid71 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid71 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid71 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlancGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Tours> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid71 .
+_:genid72 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid72 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid72 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Tours> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid72 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TableWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid73 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid75 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid74 .
+_:genid73 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid75 .
+_:genid74 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid74 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid74 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+_:genid75 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TableWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid73 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SweetWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid76 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid78 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid77 .
+_:genid76 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid78 .
+_:genid77 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid77 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid77 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> .
+_:genid78 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SweetWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid76 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SweetRiesling> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SweetRiesling> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DessertWine> .
+_:genid79 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid79 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid79 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SweetRiesling> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid79 .
+_:genid80 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid80 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid81 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid82 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid83 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+_:genid82 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid83 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid83 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid81 <http://www.w3.org/2002/07/owl#oneOf> _:genid82 .
+_:genid80 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid81 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SweetRiesling> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid80 .
+_:genid84 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Riesling> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Riesling> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid86 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid85 .
+_:genid84 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid86 .
+_:genid85 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid85 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid85 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> .
+_:genid86 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SweetRiesling> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid84 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StEmilion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid87 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid87 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid87 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StEmilion> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid87 .
+_:genid88 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid88 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid88 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StEmilion> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid88 .
+_:genid89 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid89 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid89 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignonGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StEmilion> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid89 .
+_:genid90 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid90 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid90 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StEmilion> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid90 .
+_:genid91 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bordeaux> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bordeaux> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid93 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid92 .
+_:genid91 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid93 .
+_:genid92 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid92 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid92 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StEmilionRegion> .
+_:genid93 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StEmilion> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid91 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonOrSauvignonBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid94 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid94 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid94 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonOrSauvignonBlanc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid94 .
+_:genid95 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid95 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid96 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid97 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid98 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+_:genid97 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid98 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid98 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid96 <http://www.w3.org/2002/07/owl#oneOf> _:genid97 .
+_:genid95 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid96 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonOrSauvignonBlanc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid95 .
+_:genid99 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid101 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid100 .
+_:genid99 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid101 .
+_:genid100 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid100 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid102 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid103 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid104 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlancGrape> .
+_:genid103 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid104 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlancGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid104 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid102 <http://www.w3.org/2002/07/owl#oneOf> _:genid103 .
+_:genid100 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid102 .
+_:genid101 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonOrSauvignonBlanc> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid99 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Semillon> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid105 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonOrSauvignonBlanc> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonOrSauvignonBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid107 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid106 .
+_:genid105 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid107 .
+_:genid106 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid106 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid106 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonGrape> .
+_:genid109 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid108 .
+_:genid107 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid109 .
+_:genid108 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid108 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid108 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid109 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Semillon> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid105 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid110 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonOrSauvignonBlanc> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonOrSauvignonBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid112 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid111 .
+_:genid110 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid112 .
+_:genid111 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid111 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid111 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlancGrape> .
+_:genid114 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid113 .
+_:genid112 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid114 .
+_:genid113 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid113 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid113 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid114 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlanc> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid110 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sauterne> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sauterne> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LateHarvest> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sauterne> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bordeaux> .
+_:genid115 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid115 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid115 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauterneRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sauterne> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid115 .
+_:genid116 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid116 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid116 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sauterne> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid116 .
+_:genid117 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid117 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid117 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sauterne> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid117 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sancerre> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid118 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid118 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid118 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sancerre> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid118 .
+_:genid119 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid119 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid119 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sancerre> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid119 .
+_:genid120 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid120 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid120 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sancerre> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid120 .
+_:genid121 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid121 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid121 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlancGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sancerre> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid121 .
+_:genid122 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid122 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid122 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sancerre> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid122 .
+_:genid123 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Loire> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Loire> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid125 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid124 .
+_:genid123 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid125 .
+_:genid124 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid124 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid124 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SancerreRegion> .
+_:genid125 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sancerre> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid123 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RoseWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid126 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid128 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid127 .
+_:genid126 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid128 .
+_:genid127 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid127 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid127 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Rose> .
+_:genid128 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RoseWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid126 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Riesling> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid129 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid129 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid129 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Riesling> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid129 .
+_:genid130 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid132 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid131 .
+_:genid130 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid132 .
+_:genid131 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid131 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid131 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RieslingGrape> .
+_:genid134 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid133 .
+_:genid132 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid134 .
+_:genid133 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid133 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid133 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid134 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Riesling> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid130 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid135 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid137 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid136 .
+_:genid135 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid137 .
+_:genid136 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid136 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid136 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+_:genid137 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid135 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedTableWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid138 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TableWine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TableWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid140 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid139 .
+_:genid138 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid140 .
+_:genid139 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid139 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid139 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+_:genid140 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedTableWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid138 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedBurgundy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid141 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid141 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid141 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotNoirGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedBurgundy> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid141 .
+_:genid142 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid142 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid142 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedBurgundy> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid142 .
+_:genid143 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Burgundy> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Burgundy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid144 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedWine> .
+_:genid143 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid144 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid144 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedBurgundy> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid143 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedBordeaux> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid145 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid145 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid146 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid147 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignonGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignonGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid148 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MerlotGrape> .
+_:genid147 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid148 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MerlotGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid148 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid146 <http://www.w3.org/2002/07/owl#oneOf> _:genid147 .
+_:genid145 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid146 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedBordeaux> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid145 .
+_:genid149 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bordeaux> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bordeaux> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid150 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedWine> .
+_:genid149 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid150 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid150 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedBordeaux> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid149 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Port> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Port> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedWine> .
+_:genid151 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid151 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid151 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PortugalRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Port> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid151 .
+_:genid152 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid152 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid152 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Port> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid152 .
+_:genid153 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid153 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid153 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Port> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid153 .
+_:genid154 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid154 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid154 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Port> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid154 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotNoir> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid155 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid155 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid155 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotNoir> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid155 .
+_:genid156 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid158 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid157 .
+_:genid156 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid158 .
+_:genid157 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid157 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid157 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotNoirGrape> .
+_:genid160 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid159 .
+_:genid158 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid160 .
+_:genid159 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid159 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid159 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid160 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotNoir> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid156 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid161 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid161 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid161 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotBlanc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid161 .
+_:genid162 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid164 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid163 .
+_:genid162 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid164 .
+_:genid163 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid163 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid163 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotBlancGrape> .
+_:genid166 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid165 .
+_:genid164 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid166 .
+_:genid165 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid165 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid165 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid166 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotBlanc> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid162 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteSyrah> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid167 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid167 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid167 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteSyrah> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid167 .
+_:genid168 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid168 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid168 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteSyrah> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid168 .
+_:genid169 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid169 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid170 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid171 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid172 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+_:genid171 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid172 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid172 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid170 <http://www.w3.org/2002/07/owl#oneOf> _:genid171 .
+_:genid169 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid170 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteSyrah> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid169 .
+_:genid173 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid173 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid174 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid175 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid176 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+_:genid175 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid176 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid176 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid174 <http://www.w3.org/2002/07/owl#oneOf> _:genid175 .
+_:genid173 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid174 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteSyrah> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid173 .
+_:genid177 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid179 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid178 .
+_:genid177 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid179 .
+_:genid178 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid178 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid178 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteSyrahGrape> .
+_:genid181 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid180 .
+_:genid179 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid181 .
+_:genid180 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid180 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid180 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid181 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteSyrah> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid177 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Pauillac> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid182 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid182 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid182 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Pauillac> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid182 .
+_:genid183 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid183 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid183 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Pauillac> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid183 .
+_:genid184 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid184 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid184 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignonGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Pauillac> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid184 .
+_:genid185 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid185 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid185 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Pauillac> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid185 .
+_:genid186 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medoc> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medoc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid188 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid187 .
+_:genid186 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid188 .
+_:genid187 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid187 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid187 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PauillacRegion> .
+_:genid188 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Pauillac> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid186 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Muscadet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid189 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid189 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid189 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Muscadet> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid189 .
+_:genid190 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid190 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid190 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Muscadet> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid190 .
+_:genid191 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid191 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid191 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Muscadet> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid191 .
+_:genid192 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid192 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid192 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotBlancGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Muscadet> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid192 .
+_:genid193 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid193 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid193 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Muscadet> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid193 .
+_:genid194 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Loire> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Loire> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid196 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid195 .
+_:genid194 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid196 .
+_:genid195 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid195 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid195 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MuscadetRegion> .
+_:genid196 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Muscadet> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid194 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Meursault> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid197 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid197 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid197 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Meursault> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid197 .
+_:genid198 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBurgundy> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBurgundy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid200 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid199 .
+_:genid198 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid200 .
+_:genid199 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid199 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid199 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MeursaultRegion> .
+_:genid200 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Meursault> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid198 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Merlot> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid201 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid201 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid201 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Merlot> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid201 .
+_:genid202 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid202 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid202 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Merlot> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid202 .
+_:genid203 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid203 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid204 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid205 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid206 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+_:genid205 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid206 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid206 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid204 <http://www.w3.org/2002/07/owl#oneOf> _:genid205 .
+_:genid203 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid204 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Merlot> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid203 .
+_:genid207 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid207 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid208 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid209 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid210 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+_:genid209 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid210 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid210 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid208 <http://www.w3.org/2002/07/owl#oneOf> _:genid209 .
+_:genid207 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid208 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Merlot> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid207 .
+_:genid211 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid213 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid212 .
+_:genid211 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid213 .
+_:genid212 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid212 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid212 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MerlotGrape> .
+_:genid215 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid214 .
+_:genid213 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid215 .
+_:genid214 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid214 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid214 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid215 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Merlot> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid211 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Meritage> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid216 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid216 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid216 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Meritage> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid216 .
+_:genid217 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid219 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid218 .
+_:genid217 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid219 .
+_:genid218 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid218 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid220 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid221 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignonGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignonGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid222 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetFrancGrape> .
+_:genid221 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid222 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetFrancGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid223 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MalbecGrape> .
+_:genid222 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid223 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MalbecGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid224 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteVerdotGrape> .
+_:genid223 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid224 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteVerdotGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid225 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MerlotGrape> .
+_:genid224 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid225 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MerlotGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid225 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid220 <http://www.w3.org/2002/07/owl#oneOf> _:genid221 .
+_:genid218 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid220 .
+_:genid227 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid226 .
+_:genid219 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid227 .
+_:genid226 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid226 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid226 <http://www.w3.org/2002/07/owl#minCardinality> "2"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid227 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Meritage> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid217 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MedocRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MedocRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BordeauxRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medoc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid228 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid228 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid228 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medoc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid228 .
+_:genid229 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid229 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid229 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medoc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid229 .
+_:genid230 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bordeaux> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bordeaux> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid232 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid231 .
+_:genid230 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid232 .
+_:genid231 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid231 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid231 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MedocRegion> .
+_:genid232 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medoc> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid230 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Margaux> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid233 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid233 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid233 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Margaux> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid233 .
+_:genid234 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid234 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid234 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MerlotGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Margaux> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid234 .
+_:genid235 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid235 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid235 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Margaux> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid235 .
+_:genid236 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medoc> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medoc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid238 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid237 .
+_:genid236 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid238 .
+_:genid237 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid237 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid237 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MargauxRegion> .
+_:genid238 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Margaux> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid236 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LoireRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LoireRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FrenchRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Loire> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid239 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid241 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid240 .
+_:genid239 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid241 .
+_:genid240 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid240 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid240 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LoireRegion> .
+_:genid241 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Loire> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid239 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LateHarvest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LateHarvest> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LateHarvest> <http://www.w3.org/2002/07/owl#disjointWith> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#EarlyHarvest> .
+_:genid242 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid242 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid242 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LateHarvest> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid242 .
+_:genid243 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid243 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid244 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid245 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid246 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+_:genid245 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid246 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid246 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid244 <http://www.w3.org/2002/07/owl#oneOf> _:genid245 .
+_:genid243 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid244 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LateHarvest> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid243 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ItalianWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid247 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid249 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid248 .
+_:genid247 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid249 .
+_:genid248 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid248 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid248 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ItalianRegion> .
+_:genid249 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ItalianWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid247 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ItalianRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#IceWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid250 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid250 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid251 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid252 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid253 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+_:genid252 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid253 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid253 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid251 <http://www.w3.org/2002/07/owl#oneOf> _:genid252 .
+_:genid250 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid251 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#IceWine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid250 .
+_:genid254 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid254 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid255 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid256 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid257 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+_:genid256 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid257 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid257 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid255 <http://www.w3.org/2002/07/owl#oneOf> _:genid256 .
+_:genid254 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid255 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#IceWine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid254 .
+_:genid258 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LateHarvest> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LateHarvest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid259 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DessertWine> .
+_:genid258 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid259 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DessertWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid261 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid260 .
+_:genid259 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid261 .
+_:genid260 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid260 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid260 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+_:genid261 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#IceWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid258 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GermanWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid262 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid264 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid263 .
+_:genid262 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid264 .
+_:genid263 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid263 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid263 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GermanyRegion> .
+_:genid264 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GermanWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid262 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Gamay> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid265 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid267 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid266 .
+_:genid265 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid267 .
+_:genid266 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid266 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid266 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GamayGrape> .
+_:genid269 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid268 .
+_:genid267 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid269 .
+_:genid268 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid268 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid268 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid269 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Gamay> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid265 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FullBodiedWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid270 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid272 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid271 .
+_:genid270 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid272 .
+_:genid271 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid271 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid271 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+_:genid272 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FullBodiedWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid270 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FrenchRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FrenchWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid273 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid275 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid274 .
+_:genid273 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid275 .
+_:genid274 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid274 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid274 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FrenchRegion> .
+_:genid275 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FrenchWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid273 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#EarlyHarvest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#EarlyHarvest> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+_:genid276 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid276 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid277 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid278 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid279 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> .
+_:genid278 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid279 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid279 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid277 <http://www.w3.org/2002/07/owl#oneOf> _:genid278 .
+_:genid276 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid277 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#EarlyHarvest> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid276 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid280 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid282 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid281 .
+_:genid280 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid282 .
+_:genid281 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid281 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid281 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+_:genid282 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid280 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryWhiteWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid283 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryWine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid284 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> .
+_:genid283 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid284 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid284 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryWhiteWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid283 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryRiesling> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid285 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid285 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid285 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryRiesling> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid285 .
+_:genid286 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid286 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid286 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryRiesling> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid286 .
+_:genid287 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid287 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid288 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid289 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid290 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+_:genid289 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid290 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid290 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid288 <http://www.w3.org/2002/07/owl#oneOf> _:genid289 .
+_:genid287 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid288 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryRiesling> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid287 .
+_:genid291 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Riesling> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Riesling> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid293 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid292 .
+_:genid291 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid293 .
+_:genid292 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid292 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid292 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+_:genid293 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryRiesling> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid291 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryRedWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid294 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryWine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid295 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedWine> .
+_:genid294 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid295 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid295 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryRedWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid294 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DessertWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DessertWine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+_:genid296 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid296 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid297 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid298 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid299 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> .
+_:genid298 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid299 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid299 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid297 <http://www.w3.org/2002/07/owl#oneOf> _:genid298 .
+_:genid296 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid297 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DessertWine> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid296 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotesDOr> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid300 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid300 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid300 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotesDOr> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid300 .
+_:genid301 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedBurgundy> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedBurgundy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid303 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid302 .
+_:genid301 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid303 .
+_:genid302 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid302 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid302 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotesDOrRegion> .
+_:genid303 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotesDOr> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid301 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chianti> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chianti> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ItalianWine> .
+_:genid304 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid304 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid304 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChiantiRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chianti> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid304 .
+_:genid305 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid305 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid305 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chianti> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid305 .
+_:genid306 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid306 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid306 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SangioveseGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chianti> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid306 .
+_:genid307 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid307 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid307 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chianti> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid307 .
+_:genid308 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid308 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid308 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chianti> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid308 .
+_:genid309 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid309 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid310 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid311 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid312 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+_:genid311 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid312 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid312 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid310 <http://www.w3.org/2002/07/owl#oneOf> _:genid311 .
+_:genid309 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid310 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chianti> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid309 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid313 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid313 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid313 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlanc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid313 .
+_:genid314 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid314 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid314 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlanc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid314 .
+_:genid315 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid315 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid316 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid317 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid318 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+_:genid317 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid318 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid318 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid316 <http://www.w3.org/2002/07/owl#oneOf> _:genid317 .
+_:genid315 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid316 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlanc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid315 .
+_:genid319 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid319 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid320 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid321 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid322 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> .
+_:genid321 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid322 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid322 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid320 <http://www.w3.org/2002/07/owl#oneOf> _:genid321 .
+_:genid319 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid320 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlanc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid319 .
+_:genid323 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid325 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid324 .
+_:genid323 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid325 .
+_:genid324 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid324 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid324 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlancGrape> .
+_:genid327 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid326 .
+_:genid325 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid327 .
+_:genid326 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid326 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid326 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid327 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlanc> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid323 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chardonnay> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid328 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid328 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid328 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chardonnay> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid328 .
+_:genid329 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid329 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid330 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid331 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid332 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+_:genid331 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid332 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid332 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid330 <http://www.w3.org/2002/07/owl#oneOf> _:genid331 .
+_:genid329 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid330 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chardonnay> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid329 .
+_:genid333 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid333 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid334 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid335 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid336 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+_:genid335 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid336 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid336 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid334 <http://www.w3.org/2002/07/owl#oneOf> _:genid335 .
+_:genid333 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid334 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chardonnay> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid333 .
+_:genid337 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid339 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid338 .
+_:genid337 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid339 .
+_:genid338 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid338 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid338 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChardonnayGrape> .
+_:genid341 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid340 .
+_:genid339 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid341 .
+_:genid340 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid340 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid340 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid341 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chardonnay> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid337 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#USRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TexasRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TexasRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#USRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid342 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid344 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid343 .
+_:genid342 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid344 .
+_:genid343 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid343 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid343 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaRegion> .
+_:genid344 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid342 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TexasWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid345 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid347 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid346 .
+_:genid345 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid347 .
+_:genid346 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid346 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid346 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TexasRegion> .
+_:genid347 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TexasWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid345 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignon> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid348 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid348 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid348 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignon> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid348 .
+_:genid349 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid349 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid349 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignon> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid349 .
+_:genid350 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid350 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid351 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid352 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid353 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+_:genid352 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid353 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid353 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid351 <http://www.w3.org/2002/07/owl#oneOf> _:genid352 .
+_:genid350 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid351 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignon> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid350 .
+_:genid354 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid354 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid355 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid356 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid357 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+_:genid356 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid357 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Thing> .
+_:genid357 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid355 <http://www.w3.org/2002/07/owl#oneOf> _:genid356 .
+_:genid354 <http://www.w3.org/2002/07/owl#allValuesFrom> _:genid355 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignon> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid354 .
+_:genid358 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid360 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid359 .
+_:genid358 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid360 .
+_:genid359 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid359 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid359 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignonGrape> .
+_:genid362 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid361 .
+_:genid360 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid362 .
+_:genid361 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid361 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid361 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid362 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignon> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid358 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetFranc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid363 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid363 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid363 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetFranc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid363 .
+_:genid364 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid364 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid364 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetFranc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid364 .
+_:genid365 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid365 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid365 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetFranc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid365 .
+_:genid366 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid366 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid366 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetFranc> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid366 .
+_:genid367 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid369 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid368 .
+_:genid367 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid369 .
+_:genid368 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid368 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid368 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetFrancGrape> .
+_:genid371 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid370 .
+_:genid369 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid371 .
+_:genid370 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid370 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid370 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+_:genid371 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetFranc> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid367 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Burgundy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid372 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid374 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid373 .
+_:genid372 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid374 .
+_:genid373 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid373 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid373 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BourgogneRegion> .
+_:genid374 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Burgundy> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid372 .
+_:genid375 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid375 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid375 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Burgundy> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid375 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BourgogneRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BourgogneRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FrenchRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BordeauxRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BordeauxRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FrenchRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bordeaux> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid376 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid378 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid377 .
+_:genid376 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid378 .
+_:genid377 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid377 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid377 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BordeauxRegion> .
+_:genid378 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bordeaux> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid376 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Beaujolais> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid379 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid379 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid379 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Beaujolais> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid379 .
+_:genid380 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid380 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid380 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Beaujolais> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid380 .
+_:genid381 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid381 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid381 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Beaujolais> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid381 .
+_:genid382 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid382 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid382 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Beaujolais> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid382 .
+_:genid383 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid383 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid383 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GamayGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Beaujolais> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid383 .
+_:genid384 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid384 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> .
+_:genid384 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Beaujolais> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid384 .
+_:genid385 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid387 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid386 .
+_:genid385 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid387 .
+_:genid386 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid386 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid386 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BeaujolaisRegion> .
+_:genid387 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Beaujolais> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid385 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#AustralianRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Anjou> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid388 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid388 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> .
+_:genid388 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Rose> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Anjou> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid388 .
+_:genid389 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid389 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> .
+_:genid389 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Anjou> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid389 .
+_:genid390 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid390 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> .
+_:genid390 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Anjou> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid390 .
+_:genid391 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid391 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> .
+_:genid391 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Anjou> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:genid391 .
+_:genid392 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Loire> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Loire> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid394 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid393 .
+_:genid392 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid394 .
+_:genid393 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid393 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid393 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#AnjouRegion> .
+_:genid394 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Anjou> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid392 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#AmericanWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid395 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid397 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid396 .
+_:genid395 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid397 .
+_:genid396 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid396 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid396 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#USRegion> .
+_:genid397 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#AmericanWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid395 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#AlsatianWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid398 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Wine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:genid400 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:genid399 .
+_:genid398 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid400 .
+_:genid399 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid399 <http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> .
+_:genid399 <http://www.w3.org/2002/07/owl#hasValue> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#AlsaceRegion> .
+_:genid400 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#AlsatianWine> <http://www.w3.org/2002/07/owl#intersectionOf> _:genid398 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineBody> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineBody> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineBody> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineColor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Rose> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineColor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineColor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineFlavor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineFlavor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineFlavor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineSugar> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineSugar> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> <http://www.w3.org/2002/07/owl#differentFrom> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> <http://www.w3.org/2002/07/owl#differentFrom> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineSugar> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> <http://www.w3.org/2002/07/owl#differentFrom> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+_:genid401 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AllDifferent> .
+_:genid402 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Red> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineColor> .
+_:genid403 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+_:genid402 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid403 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineColor> .
+_:genid404 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Rose> .
+_:genid403 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid404 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Rose> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineColor> .
+_:genid404 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid401 <http://www.w3.org/2002/07/owl#distinctMembers> _:genid402 .
+_:genid405 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AllDifferent> .
+_:genid406 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineBody> .
+_:genid407 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+_:genid406 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid407 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineBody> .
+_:genid408 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+_:genid407 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid408 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineBody> .
+_:genid408 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid405 <http://www.w3.org/2002/07/owl#distinctMembers> _:genid406 .
+_:genid409 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AllDifferent> .
+_:genid410 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineFlavor> .
+_:genid411 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+_:genid410 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid411 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineFlavor> .
+_:genid412 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+_:genid411 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid412 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineFlavor> .
+_:genid412 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid409 <http://www.w3.org/2002/07/owl#distinctMembers> _:genid410 .
+_:genid413 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AllDifferent> .
+_:genid414 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineSugar> .
+_:genid415 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> .
+_:genid414 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid415 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineSugar> .
+_:genid416 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+_:genid415 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid416 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineSugar> .
+_:genid416 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid413 <http://www.w3.org/2002/07/owl#distinctMembers> _:genid414 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#AlsaceRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#AlsaceRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FrenchRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#AnjouRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#AnjouRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LoireRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ArroyoGrandeRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ArroyoGrandeRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Beringer> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bancroft> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BancroftChardonnay> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chardonnay> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BancroftChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NapaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BancroftChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bancroft> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BancroftChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BancroftChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BancroftChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BeaujolaisRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BeaujolaisRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FrenchRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetFrancGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignonGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CentralCoastRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CentralCoastRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChardonnayGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauChevalBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauChevalBlancStEmilion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StEmilion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauChevalBlancStEmilion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauChevalBlanc> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDYchem> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDYchemSauterne> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sauterne> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDYchemSauterne> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlancGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDYchemSauterne> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#madeFromGrape> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDYchemSauterne> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDYchemSauterne> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDYchem> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDeMeursault> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDeMeursaultMeursault> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Meursault> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDeMeursaultMeursault> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDeMeursaultMeursault> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDeMeursault> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauLafiteRothschild> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauLafiteRothschildPauillac> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Pauillac> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauLafiteRothschildPauillac> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauLafiteRothschild> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauMargaux> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Margaux> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauMargaux> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauMargauxWinery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauMargauxWinery> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauMorgon> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauMorgonBeaujolais> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Beaujolais> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauMorgonBeaujolais> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauMorgon> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlancGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ZinfandelGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChiantiClassico> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chianti> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChiantiClassico> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChiantiClassico> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#McGuinnesso> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChiantiRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChiantiRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ItalianRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ClosDeLaPoussie> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ClosDeLaPoussieSancerre> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sancerre> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ClosDeLaPoussieSancerre> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ClosDeLaPoussie> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ClosDeVougeot> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ClosDeVougeotCotesDOr> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotesDOr> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ClosDeVougeotCotesDOr> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ClosDeVougeot> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CongressSprings> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CongressSpringsSemillon> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Semillon> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CongressSpringsSemillon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CongressSprings> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CongressSpringsSemillon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CongressSpringsSemillon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CongressSpringsSemillon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Corbans> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansDryWhiteRiesling> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Riesling> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansDryWhiteRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NewZealandRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansDryWhiteRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Corbans> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansDryWhiteRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansDryWhiteRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansDryWhiteRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansPrivateBinSauvignonBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlanc> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansPrivateBinSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NewZealandRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansPrivateBinSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Corbans> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansPrivateBinSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansPrivateBinSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansPrivateBinSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansSauvignonBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlanc> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NewZealandRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Corbans> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CorbansSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CortonMontrachet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CortonMontrachetWhiteBurgundy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBurgundy> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CortonMontrachetWhiteBurgundy> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CortonMontrachet> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CortonMontrachetWhiteBurgundy> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CortonMontrachetWhiteBurgundy> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CortonMontrachetWhiteBurgundy> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotesDOrRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotesDOrRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BourgogneRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Cotturi> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotturiZinfandel> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Zinfandel> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotturiZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SonomaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotturiZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Cotturi> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotturiZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotturiZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CotturiZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DAnjou> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#EdnaValleyRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#EdnaValleyRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Elyse> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ElyseZinfandel> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Zinfandel> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ElyseZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NapaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ElyseZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Elyse> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ElyseZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ElyseZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ElyseZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Forman> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FormanCabernetSauvignon> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignon> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FormanCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NapaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FormanCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Forman> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FormanCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FormanCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FormanCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FormanChardonnay> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chardonnay> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FormanChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NapaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FormanChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Forman> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FormanChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FormanChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FormanChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Foxen> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FoxenCheninBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlanc> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FoxenCheninBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaBarbaraRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FoxenCheninBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Foxen> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FoxenCheninBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FoxenCheninBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#FoxenCheninBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GamayGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GaryFarrell> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GaryFarrellMerlot> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Merlot> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GaryFarrellMerlot> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SonomaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GaryFarrellMerlot> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GaryFarrell> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GaryFarrellMerlot> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GaryFarrellMerlot> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GaryFarrellMerlot> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GermanyRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Handley> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KalinCellars> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KalinCellarsSemillon> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Semillon> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KalinCellarsSemillon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KalinCellars> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KalinCellarsSemillon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KalinCellarsSemillon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KalinCellarsSemillon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KathrynKennedy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KathrynKennedyLateral> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Meritage> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KathrynKennedyLateral> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KathrynKennedy> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KathrynKennedyLateral> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KathrynKennedyLateral> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KathrynKennedyLateral> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LaneTanner> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LaneTannerPinotNoir> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotNoir> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LaneTannerPinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaBarbaraRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LaneTannerPinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LaneTanner> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LaneTannerPinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LaneTannerPinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LaneTannerPinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Longridge> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LongridgeMerlot> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Merlot> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LongridgeMerlot> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NewZealandRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LongridgeMerlot> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Longridge> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LongridgeMerlot> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LongridgeMerlot> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LongridgeMerlot> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MalbecGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MargauxRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MargauxRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MedocRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Marietta> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaCabernetSauvignon> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignon> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SonomaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Marietta> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaOldVinesRed> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RedTableWine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaOldVinesRed> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SonomaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaOldVinesRed> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Marietta> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaOldVinesRed> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaOldVinesRed> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaOldVinesRed> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaPetiteSyrah> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteSyrah> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaPetiteSyrah> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SonomaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaPetiteSyrah> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Marietta> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaPetiteSyrah> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaPetiteSyrah> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaPetiteSyrah> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaZinfandel> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Zinfandel> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SonomaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Marietta> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MariettaZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#McGuinnesso> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MendocinoRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MendocinoRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MendocinoRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#adjacentRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SonomaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MerlotGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MeursaultRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MeursaultRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BourgogneRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyard> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyardEdnaValleyChardonnay> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chardonnay> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyardEdnaValleyChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#EdnaValleyRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyardEdnaValleyChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyard> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyardEdnaValleyChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyardEdnaValleyChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyardEdnaValleyChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyardEstatePinotNoir> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotNoir> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyardEstatePinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#EdnaValleyRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyardEstatePinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyard> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyardEstatePinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyardEstatePinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyardEstatePinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Mountadam> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamChardonnay> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chardonnay> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SouthAustraliaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Mountadam> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamPinotNoir> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotNoir> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamPinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SouthAustraliaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamPinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Mountadam> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamPinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamPinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamPinotNoir> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamRiesling> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DryRiesling> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SouthAustraliaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Mountadam> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountadamRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MuscadetRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MuscadetRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LoireRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NapaRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NapaRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NewZealandRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PageMillWinery> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PageMillWineryCabernetSauvignon> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignon> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PageMillWineryCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NapaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PageMillWineryCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PageMillWinery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PageMillWineryCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PageMillWineryCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PageMillWineryCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PauillacRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PauillacRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MedocRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PeterMccoy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PeterMccoyChardonnay> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Chardonnay> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PeterMccoyChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SonomaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PeterMccoyChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PeterMccoy> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PeterMccoyChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PeterMccoyChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PeterMccoyChardonnay> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteSyrahGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteVerdotGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotBlancGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PinotNoirGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PortugalRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PulignyMontrachet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PulignyMontrachetWhiteBurgundy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteBurgundy> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PulignyMontrachetWhiteBurgundy> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PulignyMontrachet> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PulignyMontrachetWhiteBurgundy> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PulignyMontrachetWhiteBurgundy> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PulignyMontrachetWhiteBurgundy> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RieslingGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RoseDAnjou> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Anjou> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#RoseDAnjou> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DAnjou> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SancerreRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SancerreRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LoireRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SangioveseGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaBarbaraRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaBarbaraRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainVineyard> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainVineyardCabernetSauvignon> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetSauvignon> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainVineyardCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainsRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainVineyardCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainVineyard> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainVineyardCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainVineyardCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainVineyardCabernetSauvignon> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CentralTexasRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CentralTexasRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TexasRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StGenevieve> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StGenevieveTexasWhite> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhiteWine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StGenevieveTexasWhite> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CentralTexasRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StGenevieveTexasWhite> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StGenevieve> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StGenevieveTexasWhite> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StGenevieveTexasWhite> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainsRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainsRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyon> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Zinfandel> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ArroyoGrandeRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyon> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel1998> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Zinfandel> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel1998> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ArroyoGrandeRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel1998> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasVintageYear> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Year1998> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel1998> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyon> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel1998> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel1998> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyonZinfandel1998> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauterneRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauterneRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BordeauxRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlancGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossRothermel> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossRothermelTrochenbierenausleseRiesling> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SweetRiesling> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossRothermelTrochenbierenausleseRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GermanyRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossRothermelTrochenbierenausleseRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossRothermel> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossRothermelTrochenbierenausleseRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossRothermelTrochenbierenausleseRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossRothermelTrochenbierenausleseRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossVolrad> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossVolradTrochenbierenausleseRiesling> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SweetRiesling> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossVolradTrochenbierenausleseRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GermanyRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossVolradTrochenbierenausleseRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossVolrad> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossVolradTrochenbierenausleseRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossVolradTrochenbierenausleseRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossVolradTrochenbierenausleseRiesling> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SeanThackrey> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SeanThackreySiriusPetiteSyrah> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PetiteSyrah> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SeanThackreySiriusPetiteSyrah> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NapaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SeanThackreySiriusPetiteSyrah> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SeanThackrey> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SeanThackreySiriusPetiteSyrah> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SeanThackreySiriusPetiteSyrah> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Strong> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SeanThackreySiriusPetiteSyrah> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Full> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Selaks> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SelaksIceWine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#IceWine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SelaksIceWine> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NewZealandRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SelaksIceWine> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Selaks> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SelaksIceWine> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SelaksIceWine> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SelaksIceWine> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasColor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#White> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SelaksSauvignonBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlanc> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SelaksSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NewZealandRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SelaksSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Selaks> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SelaksSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SelaksSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SelaksSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SemillonGrape> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WineGrape> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SevreEtMaine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SevreEtMaineMuscadet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Muscadet> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SevreEtMaineMuscadet> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SevreEtMaine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SonomaRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SonomaRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CaliforniaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SouthAustraliaRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SouthAustraliaRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#AustralianRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StEmilionRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StEmilionRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#BordeauxRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Stonleigh> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StonleighSauvignonBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SauvignonBlanc> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StonleighSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NewZealandRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StonleighSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Stonleigh> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StonleighSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StonleighSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StonleighSauvignonBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Taylor> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TaylorPort> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Port> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#TaylorPort> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Taylor> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ToursRegion> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Region> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ToursRegion> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LoireRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Ventana> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#VentanaCheninBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CheninBlanc> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#VentanaCheninBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CentralCoastRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#VentanaCheninBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Ventana> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#VentanaCheninBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#OffDry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#VentanaCheninBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#VentanaCheninBlanc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLane> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLaneCabernetFranc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CabernetFranc> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLaneCabernetFranc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NapaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLaneCabernetFranc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasMaker> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLane> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLaneCabernetFranc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Dry> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLaneCabernetFranc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Moderate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLaneCabernetFranc> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Medium> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLanePrimavera> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DessertWine> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLanePrimavera> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#locatedIn> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#NapaRegion> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLanePrimavera> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasSugar> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Sweet> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLanePrimavera> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasFlavor> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Delicate> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLanePrimavera> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#hasBody> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Light> .
+_:genid417 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AllDifferent> .
+_:genid418 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bancroft> .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Bancroft> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid419 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauChevalBlanc> .
+_:genid418 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid419 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauChevalBlanc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid420 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDYchem> .
+_:genid419 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid420 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDYchem> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid421 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDeMeursault> .
+_:genid420 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid421 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauDeMeursault> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid422 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauLafiteRothschild> .
+_:genid421 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid422 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauLafiteRothschild> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid423 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauMargauxWinery> .
+_:genid422 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid423 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauMargauxWinery> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid424 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauMorgon> .
+_:genid423 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid424 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ChateauMorgon> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid425 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ClosDeLaPoussie> .
+_:genid424 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid425 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ClosDeLaPoussie> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid426 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ClosDeVougeot> .
+_:genid425 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid426 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#ClosDeVougeot> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid427 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CongressSprings> .
+_:genid426 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid427 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CongressSprings> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid428 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Corbans> .
+_:genid427 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid428 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Corbans> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid429 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CortonMontrachet> .
+_:genid428 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid429 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#CortonMontrachet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid430 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Cotturi> .
+_:genid429 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid430 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Cotturi> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid431 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DAnjou> .
+_:genid430 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid431 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#DAnjou> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid432 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Elyse> .
+_:genid431 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid432 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Elyse> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid433 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Forman> .
+_:genid432 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid433 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Forman> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid434 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Foxen> .
+_:genid433 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid434 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Foxen> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid435 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GaryFarrell> .
+_:genid434 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid435 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#GaryFarrell> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid436 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KalinCellars> .
+_:genid435 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid436 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KalinCellars> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid437 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KathrynKennedy> .
+_:genid436 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid437 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#KathrynKennedy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid438 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LaneTanner> .
+_:genid437 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid438 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#LaneTanner> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid439 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Longridge> .
+_:genid438 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid439 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Longridge> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid440 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Marietta> .
+_:genid439 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid440 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Marietta> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid441 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#McGuinnesso> .
+_:genid440 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid441 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#McGuinnesso> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid442 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyard> .
+_:genid441 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid442 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#MountEdenVineyard> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid443 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Mountadam> .
+_:genid442 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid443 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Mountadam> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid444 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PageMillWinery> .
+_:genid443 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid444 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PageMillWinery> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid445 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PeterMccoy> .
+_:genid444 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid445 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PeterMccoy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid446 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PulignyMontrachet> .
+_:genid445 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid446 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#PulignyMontrachet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid447 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainVineyard> .
+_:genid446 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid447 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SantaCruzMountainVineyard> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid448 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyon> .
+_:genid447 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid448 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SaucelitoCanyon> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid449 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossRothermel> .
+_:genid448 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid449 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossRothermel> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid450 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossVolrad> .
+_:genid449 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid450 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SchlossVolrad> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid451 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SeanThackrey> .
+_:genid450 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid451 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SeanThackrey> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid452 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Selaks> .
+_:genid451 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid452 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Selaks> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid453 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SevreEtMaine> .
+_:genid452 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid453 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#SevreEtMaine> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid454 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StGenevieve> .
+_:genid453 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid454 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#StGenevieve> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid455 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Stonleigh> .
+_:genid454 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid455 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Stonleigh> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid456 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Taylor> .
+_:genid455 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid456 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Taylor> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid457 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Ventana> .
+_:genid456 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid457 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Ventana> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid458 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLane> .
+_:genid457 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid458 .
+<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#WhitehallLane> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#Winery> .
+_:genid458 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid417 <http://www.w3.org/2002/07/owl#distinctMembers> _:genid418 .
diff --git a/tests/rdfxml/wine.rdf b/tests/rdfxml/wine.rdf
new file mode 100644
index 0000000..91c0f5d
--- /dev/null
+++ b/tests/rdfxml/wine.rdf
@@ -0,0 +1,2402 @@
+<?xml version="1.0"?>
+<!DOCTYPE rdf:RDF [
+ <!ENTITY vin "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#" >
+ <!ENTITY food "http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#" >
+ <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
+ <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
+ ]>
+
+<rdf:RDF
+ xmlns = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#"
+ xmlns:vin = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#"
+ xml:base = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#"
+ xmlns:food= "http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#"
+ xmlns:owl = "http://www.w3.org/2002/07/owl#"
+ xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:xsd = "http://www.w3.org/2001/XMLSchema#">
+
+ <owl:Ontology rdf:about="">
+ <rdfs:comment>An example OWL ontology</rdfs:comment>
+ <owl:priorVersion>
+ <owl:Ontology rdf:about="http://www.w3.org/TR/2003/WD-owl-guide-20030331/wine"/>
+ </owl:priorVersion>
+ <owl:imports rdf:resource="http://www.w3.org/TR/2003/CR-owl-guide-20030818/food"/>
+ <rdfs:comment>Derived from the DAML Wine ontology at
+ http://ontolingua.stanford.edu/doc/chimaera/ontologies/wines.daml
+ Substantially changed, in particular the Region based relations.
+ </rdfs:comment>
+ <rdfs:label>Wine Ontology</rdfs:label>
+ </owl:Ontology>
+
+ <owl:Class rdf:ID="Wine">
+ <rdfs:subClassOf rdf:resource="&food;PotableLiquid" />
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasMaker" />
+ <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasMaker" />
+ <owl:allValuesFrom rdf:resource="#Winery" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn"/>
+ <owl:someValuesFrom rdf:resource="&vin;Region"/>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:label xml:lang="en">wine</rdfs:label>
+ <rdfs:label xml:lang="fr">vin</rdfs:label>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Vintage">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasVintageYear"/>
+ <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="WineGrape">
+ <rdfs:subClassOf rdf:resource="&food;Grape" />
+ </owl:Class>
+
+ <owl:Class rdf:ID="WhiteWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#White" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="WhiteTableWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#TableWine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#White" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="WhiteNonSweetWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#WhiteWine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Dry" />
+ <owl:Thing rdf:about="#OffDry" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="WhiteLoire">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Loire" />
+ <owl:Class rdf:about="#WhiteWine" />
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:about="#WhiteLoire">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#CheninBlancGrape" />
+ <owl:Thing rdf:about="#PinotBlancGrape" />
+ <owl:Thing rdf:about="#SauvignonBlancGrape" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="WhiteBurgundy">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Burgundy" />
+ <owl:Class rdf:about="#WhiteWine" />
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:about="#WhiteBurgundy">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#ChardonnayGrape" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="WhiteBordeaux">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Bordeaux" />
+ <owl:Class rdf:about="#WhiteWine" />
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:about="#WhiteBordeaux">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#SemillonGrape" />
+ <owl:Thing rdf:about="#SauvignonBlancGrape" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Region" />
+
+ <owl:ObjectProperty rdf:ID="locatedIn">
+ <rdf:type rdf:resource="&owl;TransitiveProperty" />
+ <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing" />
+ <rdfs:range rdf:resource="#Region" />
+ </owl:ObjectProperty>
+
+ <owl:ObjectProperty rdf:ID="adjacentRegion">
+ <rdf:type rdf:resource="&owl;SymmetricProperty" />
+ <rdfs:domain rdf:resource="#Region" />
+ <rdfs:range rdf:resource="#Region" />
+ </owl:ObjectProperty>
+
+ <owl:Class rdf:ID="VintageYear" />
+
+ <owl:DatatypeProperty rdf:ID="yearValue">
+ <rdfs:domain rdf:resource="#VintageYear" />
+ <rdfs:range rdf:resource="&xsd;positiveInteger" />
+ </owl:DatatypeProperty>
+
+ <VintageYear rdf:ID="Year1998">
+ <yearValue rdf:datatype="&xsd;positiveInteger">1998</yearValue>
+ </VintageYear>
+
+ <owl:ObjectProperty rdf:ID="hasVintageYear">
+ <rdf:type rdf:resource="&owl;FunctionalProperty" />
+ <rdfs:domain rdf:resource="#Vintage" />
+ <rdfs:range rdf:resource="#VintageYear" />
+ </owl:ObjectProperty>
+
+ <owl:ObjectProperty rdf:ID="madeFromGrape">
+ <rdfs:subPropertyOf rdf:resource="&food;madeFromFruit" />
+ <rdfs:domain rdf:resource="#Wine" />
+ <rdfs:range rdf:resource="#WineGrape" />
+ </owl:ObjectProperty>
+
+ <owl:ObjectProperty rdf:ID="madeIntoWine">
+ <owl:inverseOf rdf:resource="#madeFromGrape" />
+ </owl:ObjectProperty>
+
+ <owl:ObjectProperty rdf:ID="hasWineDescriptor">
+ <rdfs:domain rdf:resource="#Wine" />
+ <rdfs:range rdf:resource="#WineDescriptor" />
+ </owl:ObjectProperty>
+
+ <owl:ObjectProperty rdf:ID="hasSugar">
+ <rdf:type rdf:resource="&owl;FunctionalProperty" />
+ <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor" />
+ <rdfs:range rdf:resource="#WineSugar" />
+ </owl:ObjectProperty>
+
+ <owl:ObjectProperty rdf:ID="hasBody">
+ <rdf:type rdf:resource="&owl;FunctionalProperty" />
+ <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor" />
+ <rdfs:range rdf:resource="#WineBody" />
+ </owl:ObjectProperty>
+
+ <owl:ObjectProperty rdf:ID="hasFlavor">
+ <rdf:type rdf:resource="&owl;FunctionalProperty" />
+ <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor" />
+ <rdfs:range rdf:resource="#WineFlavor" />
+ </owl:ObjectProperty>
+
+ <owl:ObjectProperty rdf:ID="hasColor">
+ <rdf:type rdf:resource="&owl;FunctionalProperty" />
+ <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor" />
+ <rdfs:domain rdf:resource="#Wine" />
+ <rdfs:range rdf:resource="#WineColor" />
+ </owl:ObjectProperty>
+
+ <owl:ObjectProperty rdf:ID="hasMaker">
+ <rdf:type rdf:resource="&owl;FunctionalProperty" />
+ </owl:ObjectProperty>
+
+ <owl:ObjectProperty rdf:ID="producesWine">
+ <owl:inverseOf rdf:resource="#hasMaker" />
+ </owl:ObjectProperty>
+
+ <owl:Class rdf:ID="Zinfandel">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#ZinfandelGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:about="#Zinfandel">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Full" />
+ <owl:Thing rdf:about="#Medium" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Moderate" />
+ <owl:Thing rdf:about="#Strong" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Winery" />
+
+ <owl:Class rdf:ID="WineDescriptor">
+ <rdfs:comment>Made WineDescriptor unionType of tastes and color</rdfs:comment>
+ <owl:unionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#WineTaste" />
+ <owl:Class rdf:about="#WineColor" />
+ </owl:unionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="WineTaste">
+ <rdfs:subClassOf rdf:resource="#WineDescriptor" />
+ </owl:Class>
+
+ <owl:Class rdf:ID="WineColor">
+ <rdfs:subClassOf rdf:resource="#WineDescriptor" />
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#White" />
+ <owl:Thing rdf:about="#Rose" />
+ <owl:Thing rdf:about="#Red" />
+ </owl:oneOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="WineSugar">
+ <rdfs:subClassOf rdf:resource="#WineTaste" />
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Sweet" />
+ <owl:Thing rdf:about="#OffDry" />
+ <owl:Thing rdf:about="#Dry" />
+ </owl:oneOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="WineFlavor">
+ <rdfs:subClassOf rdf:resource="#WineTaste" />
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Delicate" />
+ <owl:Thing rdf:about="#Moderate" />
+ <owl:Thing rdf:about="#Strong" />
+ </owl:oneOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="WineBody">
+ <rdfs:subClassOf rdf:resource="#WineTaste" />
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Light" />
+ <owl:Thing rdf:about="#Medium" />
+ <owl:Thing rdf:about="#Full" />
+ </owl:oneOf>
+ </owl:Class>
+
+ <Region rdf:ID="USRegion" />
+
+ <owl:Class rdf:ID="Tours">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Loire" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#ToursRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:about="#Tours">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#CheninBlancGrape" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="TableWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="SweetWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Sweet" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="SweetRiesling">
+ <rdfs:subClassOf rdf:resource="#DessertWine" />
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:hasValue rdf:resource="#Full" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Moderate" />
+ <owl:Thing rdf:about="#Strong" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Riesling" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Sweet" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="StEmilion">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Strong" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#CabernetSauvignonGrape" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Bordeaux" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#StEmilionRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="SemillonOrSauvignonBlanc">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#White" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Medium" />
+ <owl:Thing rdf:about="#Full" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#SemillonGrape" />
+ <owl:Thing rdf:about="#SauvignonBlancGrape" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Semillon">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#SemillonOrSauvignonBlanc" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#SemillonGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="SauvignonBlanc">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#SemillonOrSauvignonBlanc" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#SauvignonBlancGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Sauterne">
+ <rdfs:subClassOf rdf:resource="#LateHarvest" />
+ <rdfs:subClassOf rdf:resource="#Bordeaux" />
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#SauterneRegion" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:hasValue rdf:resource="#Medium" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#White" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Sancerre">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:hasValue rdf:resource="#Medium" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#OffDry" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Delicate" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#SauvignonBlancGrape" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Loire" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#SancerreRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="RoseWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Rose" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Riesling">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#White" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#RieslingGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="RedWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="RedTableWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#TableWine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="RedBurgundy">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#PinotNoirGrape" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Burgundy" />
+ <owl:Class rdf:about="#RedWine" />
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="RedBordeaux">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#CabernetSauvignonGrape" />
+ <owl:Thing rdf:about="#MerlotGrape" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Bordeaux" />
+ <owl:Class rdf:about="#RedWine" />
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Port">
+ <rdfs:subClassOf rdf:resource="#RedWine" />
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#PortugalRegion" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:hasValue rdf:resource="#Full" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Strong" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Sweet" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="PinotNoir">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#PinotNoirGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="PinotBlanc">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#White" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#PinotBlancGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="PetiteSyrah">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Moderate" />
+ <owl:Thing rdf:about="#Strong" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Medium" />
+ <owl:Thing rdf:about="#Full" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#PetiteSyrahGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Pauillac">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:hasValue rdf:resource="#Full" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Strong" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#CabernetSauvignonGrape" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Medoc" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#PauillacRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Muscadet">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:hasValue rdf:resource="#Light" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Delicate" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#PinotBlancGrape" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Loire" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#MuscadetRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Meursault">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:hasValue rdf:resource="#Full" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#WhiteBurgundy" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#MeursaultRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Merlot">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Moderate" />
+ <owl:Thing rdf:about="#Delicate" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Light" />
+ <owl:Thing rdf:about="#Medium" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#MerlotGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Meritage">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#CabernetSauvignonGrape" />
+ <owl:Thing rdf:about="#CabernetFrancGrape" />
+ <owl:Thing rdf:about="#MalbecGrape" />
+ <owl:Thing rdf:about="#PetiteVerdotGrape" />
+ <owl:Thing rdf:about="#MerlotGrape" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:minCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <Region rdf:ID="MedocRegion">
+ <locatedIn rdf:resource="#BordeauxRegion" />
+ </Region>
+
+ <owl:Class rdf:ID="Medoc">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Bordeaux" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#MedocRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Margaux">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Delicate" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#MerlotGrape" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Medoc" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#MargauxRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <Region rdf:ID="LoireRegion">
+ <locatedIn rdf:resource="#FrenchRegion" />
+ </Region>
+
+ <owl:Class rdf:ID="Loire">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#LoireRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="LateHarvest">
+ <rdfs:subClassOf rdf:resource="#Wine" />
+ <owl:disjointWith rdf:resource="#EarlyHarvest" />
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Sweet" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Moderate" />
+ <owl:Thing rdf:about="#Strong" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="ItalianWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#ItalianRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <Region rdf:ID="ItalianRegion" />
+
+ <owl:Class rdf:ID="IceWine">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Medium" />
+ <owl:Thing rdf:about="#Full" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Moderate" />
+ <owl:Thing rdf:about="#Strong" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#LateHarvest" />
+ <owl:Class rdf:about="#DessertWine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#White" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="GermanWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#GermanyRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Gamay">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#GamayGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="FullBodiedWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:hasValue rdf:resource="#Full" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <Region rdf:ID="FrenchRegion" />
+
+ <owl:Class rdf:ID="FrenchWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#FrenchRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="EarlyHarvest">
+ <rdfs:subClassOf rdf:resource="#Wine" />
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Dry" />
+ <owl:Thing rdf:about="#OffDry" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="DryWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="DryWhiteWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#DryWine" />
+ <owl:Class rdf:about="#WhiteWine" />
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="DryRiesling">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#White" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Delicate" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Light" />
+ <owl:Thing rdf:about="#Medium" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Riesling" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="DryRedWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#DryWine" />
+ <owl:Class rdf:about="#RedWine" />
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="DessertWine">
+ <rdfs:subClassOf rdf:resource="#Wine" />
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#OffDry" />
+ <owl:Thing rdf:about="#Sweet" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="CotesDOr">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Moderate" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#RedBurgundy" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#CotesDOrRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Chianti">
+ <rdfs:subClassOf rdf:resource="#ItalianWine" />
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#ChiantiRegion" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#SangioveseGrape" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Moderate" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Light" />
+ <owl:Thing rdf:about="#Medium" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="CheninBlanc">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#White" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Moderate" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Full" />
+ <owl:Thing rdf:about="#Medium" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Dry" />
+ <owl:Thing rdf:about="#OffDry" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#CheninBlancGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Chardonnay">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#White" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Full" />
+ <owl:Thing rdf:about="#Medium" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Strong" />
+ <owl:Thing rdf:about="#Moderate" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#ChardonnayGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <Region rdf:ID="CaliforniaRegion">
+ <locatedIn rdf:resource="#USRegion" />
+ </Region>
+
+ <Region rdf:ID="TexasRegion">
+ <locatedIn rdf:resource="#USRegion" />
+ </Region>
+
+ <owl:Class rdf:ID="CaliforniaWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#CaliforniaRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="TexasWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#TexasRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="CabernetSauvignon">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Moderate" />
+ <owl:Thing rdf:about="#Strong" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:allValuesFrom>
+ <owl:Class>
+ <owl:oneOf rdf:parseType="Collection">
+ <owl:Thing rdf:about="#Medium" />
+ <owl:Thing rdf:about="#Full" />
+ </owl:oneOf>
+ </owl:Class>
+ </owl:allValuesFrom>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#CabernetSauvignonGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="CabernetFranc">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Moderate" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:hasValue rdf:resource="#Medium" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#CabernetFrancGrape" />
+ </owl:Restriction>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Burgundy">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#BourgogneRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ </owl:Class>
+
+ <Region rdf:ID="BourgogneRegion">
+ <locatedIn rdf:resource="#FrenchRegion" />
+ </Region>
+
+ <Region rdf:ID="BordeauxRegion">
+ <locatedIn rdf:resource="#FrenchRegion" />
+ </Region>
+
+ <owl:Class rdf:ID="Bordeaux">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#BordeauxRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="Beaujolais">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Red" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:hasValue rdf:resource="#Light" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#Dry" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Delicate" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:hasValue rdf:resource="#GamayGrape" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#madeFromGrape" />
+ <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#BeaujolaisRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <Region rdf:ID="AustralianRegion" />
+
+ <owl:Class rdf:ID="Anjou">
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasColor" />
+ <owl:hasValue rdf:resource="#Rose" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasBody" />
+ <owl:hasValue rdf:resource="#Light" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasFlavor" />
+ <owl:hasValue rdf:resource="#Delicate" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <rdfs:subClassOf>
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#hasSugar" />
+ <owl:hasValue rdf:resource="#OffDry" />
+ </owl:Restriction>
+ </rdfs:subClassOf>
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Loire" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#AnjouRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="AmericanWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#USRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <owl:Class rdf:ID="AlsatianWine">
+ <owl:intersectionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#Wine" />
+ <owl:Restriction>
+ <owl:onProperty rdf:resource="#locatedIn" />
+ <owl:hasValue rdf:resource="#AlsaceRegion" />
+ </owl:Restriction>
+ </owl:intersectionOf>
+ </owl:Class>
+
+ <WineBody rdf:ID="Full" />
+
+ <WineBody rdf:ID="Medium" />
+
+ <WineBody rdf:ID="Light" />
+
+ <WineColor rdf:ID="Red" />
+
+ <WineColor rdf:ID="Rose" />
+
+ <WineColor rdf:ID="White" />
+
+ <WineFlavor rdf:ID="Strong" />
+
+ <WineFlavor rdf:ID="Moderate" />
+
+ <WineFlavor rdf:ID="Delicate" />
+
+ <WineSugar rdf:ID="Dry" />
+
+ <WineSugar rdf:ID="OffDry">
+ <owl:differentFrom rdf:resource="#Dry"/>
+ <owl:differentFrom rdf:resource="#Sweet"/>
+ </WineSugar>
+
+ <WineSugar rdf:ID="Sweet">
+ <owl:differentFrom rdf:resource="#Dry"/>
+ </WineSugar>
+
+ <owl:AllDifferent>
+ <owl:distinctMembers rdf:parseType="Collection">
+ <vin:WineColor rdf:about="#Red" />
+ <vin:WineColor rdf:about="#White" />
+ <vin:WineColor rdf:about="#Rose" />
+ </owl:distinctMembers>
+ </owl:AllDifferent>
+
+ <owl:AllDifferent>
+ <owl:distinctMembers rdf:parseType="Collection">
+ <vin:WineBody rdf:about="#Light" />
+ <vin:WineBody rdf:about="#Medium" />
+ <vin:WineBody rdf:about="#Full" />
+ </owl:distinctMembers>
+ </owl:AllDifferent>
+
+ <owl:AllDifferent>
+ <owl:distinctMembers rdf:parseType="Collection">
+ <vin:WineFlavor rdf:about="#Delicate" />
+ <vin:WineFlavor rdf:about="#Moderate" />
+ <vin:WineFlavor rdf:about="#Strong" />
+ </owl:distinctMembers>
+ </owl:AllDifferent>
+
+ <owl:AllDifferent>
+ <owl:distinctMembers rdf:parseType="Collection">
+ <vin:WineSugar rdf:about="#Sweet" />
+ <vin:WineSugar rdf:about="#OffDry" />
+ <vin:WineSugar rdf:about="#Dry" />
+ </owl:distinctMembers>
+ </owl:AllDifferent>
+
+ <Region rdf:ID="AlsaceRegion">
+ <locatedIn rdf:resource="#FrenchRegion" />
+ </Region>
+
+ <Region rdf:ID="AnjouRegion">
+ <locatedIn rdf:resource="#LoireRegion" />
+ </Region>
+
+ <Region rdf:ID="ArroyoGrandeRegion">
+ <locatedIn rdf:resource="#CaliforniaRegion" />
+ </Region>
+
+ <Winery rdf:ID="Beringer" />
+
+ <Winery rdf:ID="Bancroft" />
+
+ <Chardonnay rdf:ID="BancroftChardonnay">
+ <locatedIn rdf:resource="#NapaRegion" />
+ <hasMaker rdf:resource="#Bancroft" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </Chardonnay>
+
+ <Region rdf:ID="BeaujolaisRegion">
+ <locatedIn rdf:resource="#FrenchRegion" />
+ </Region>
+
+ <WineGrape rdf:ID="CabernetFrancGrape" />
+
+ <WineGrape rdf:ID="CabernetSauvignonGrape" />
+
+ <Region rdf:ID="CentralCoastRegion">
+ <locatedIn rdf:resource="#CaliforniaRegion" />
+ </Region>
+
+ <WineGrape rdf:ID="ChardonnayGrape" />
+
+ <Winery rdf:ID="ChateauChevalBlanc" />
+
+ <StEmilion rdf:ID="ChateauChevalBlancStEmilion">
+ <hasMaker rdf:resource="#ChateauChevalBlanc" />
+ </StEmilion>
+
+ <Winery rdf:ID="ChateauDYchem" />
+
+ <Sauterne rdf:ID="ChateauDYchemSauterne">
+ <madeFromGrape rdf:resource="#SauvignonBlancGrape" />
+ <madeFromGrape rdf:resource="#SemillonGrape" />
+ <hasFlavor rdf:resource="#Strong" />
+ <hasMaker rdf:resource="#ChateauDYchem" />
+ </Sauterne>
+
+ <Winery rdf:ID="ChateauDeMeursault" />
+
+ <Meursault rdf:ID="ChateauDeMeursaultMeursault">
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasMaker rdf:resource="#ChateauDeMeursault" />
+ </Meursault>
+
+ <Winery rdf:ID="ChateauLafiteRothschild" />
+
+ <Pauillac rdf:ID="ChateauLafiteRothschildPauillac">
+ <hasMaker rdf:resource="#ChateauLafiteRothschild" />
+ </Pauillac>
+
+ <Margaux rdf:ID="ChateauMargaux">
+ <hasMaker rdf:resource="#ChateauMargauxWinery" />
+ </Margaux>
+
+ <Winery rdf:ID="ChateauMargauxWinery" />
+
+ <Winery rdf:ID="ChateauMorgon" />
+
+ <Beaujolais rdf:ID="ChateauMorgonBeaujolais">
+ <hasMaker rdf:resource="#ChateauMorgon" />
+ </Beaujolais>
+
+ <WineGrape rdf:ID="CheninBlancGrape" />
+
+ <WineGrape rdf:ID="ZinfandelGrape" />
+
+ <Chianti rdf:ID="ChiantiClassico">
+ <hasBody rdf:resource="#Medium" />
+ <hasMaker rdf:resource="#McGuinnesso" />
+ </Chianti>
+
+ <Region rdf:ID="ChiantiRegion">
+ <locatedIn rdf:resource="#ItalianRegion" />
+ </Region>
+
+ <Winery rdf:ID="ClosDeLaPoussie" />
+
+ <Sancerre rdf:ID="ClosDeLaPoussieSancerre">
+ <hasMaker rdf:resource="#ClosDeLaPoussie" />
+ </Sancerre>
+
+ <Winery rdf:ID="ClosDeVougeot" />
+
+ <CotesDOr rdf:ID="ClosDeVougeotCotesDOr">
+ <hasMaker rdf:resource="#ClosDeVougeot" />
+ </CotesDOr>
+
+ <Winery rdf:ID="CongressSprings" />
+
+ <Semillon rdf:ID="CongressSpringsSemillon">
+ <hasMaker rdf:resource="#CongressSprings" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </Semillon>
+
+ <Winery rdf:ID="Corbans" />
+
+ <Riesling rdf:ID="CorbansDryWhiteRiesling">
+ <locatedIn rdf:resource="#NewZealandRegion" />
+ <hasMaker rdf:resource="#Corbans" />
+ <hasSugar rdf:resource="#OffDry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </Riesling>
+
+ <SauvignonBlanc rdf:ID="CorbansPrivateBinSauvignonBlanc">
+ <locatedIn rdf:resource="#NewZealandRegion" />
+ <hasMaker rdf:resource="#Corbans" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Strong" />
+ <hasBody rdf:resource="#Full" />
+ </SauvignonBlanc>
+
+ <SauvignonBlanc rdf:ID="CorbansSauvignonBlanc">
+ <locatedIn rdf:resource="#NewZealandRegion" />
+ <hasMaker rdf:resource="#Corbans" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Strong" />
+ <hasBody rdf:resource="#Medium" />
+ </SauvignonBlanc>
+
+ <Winery rdf:ID="CortonMontrachet" />
+
+ <WhiteBurgundy rdf:ID="CortonMontrachetWhiteBurgundy">
+ <hasMaker rdf:resource="#CortonMontrachet" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Strong" />
+ <hasBody rdf:resource="#Full" />
+ </WhiteBurgundy>
+
+ <Region rdf:ID="CotesDOrRegion">
+ <locatedIn rdf:resource="#BourgogneRegion" />
+ </Region>
+
+ <Winery rdf:ID="Cotturi" />
+
+ <Zinfandel rdf:ID="CotturiZinfandel">
+ <locatedIn rdf:resource="#SonomaRegion" />
+ <hasMaker rdf:resource="#Cotturi" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Strong" />
+ <hasBody rdf:resource="#Full" />
+ </Zinfandel>
+
+ <Winery rdf:ID="DAnjou" />
+
+ <Region rdf:ID="EdnaValleyRegion">
+ <locatedIn rdf:resource="#CaliforniaRegion" />
+ </Region>
+
+ <Winery rdf:ID="Elyse" />
+
+ <Zinfandel rdf:ID="ElyseZinfandel">
+ <locatedIn rdf:resource="#NapaRegion" />
+ <hasMaker rdf:resource="#Elyse" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Full" />
+ </Zinfandel>
+
+ <Winery rdf:ID="Forman" />
+
+ <CabernetSauvignon rdf:ID="FormanCabernetSauvignon">
+ <locatedIn rdf:resource="#NapaRegion" />
+ <hasMaker rdf:resource="#Forman" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Strong" />
+ <hasBody rdf:resource="#Medium" />
+ </CabernetSauvignon>
+
+ <Chardonnay rdf:ID="FormanChardonnay">
+ <locatedIn rdf:resource="#NapaRegion" />
+ <hasMaker rdf:resource="#Forman" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Full" />
+ </Chardonnay>
+
+ <Winery rdf:ID="Foxen" />
+
+ <CheninBlanc rdf:ID="FoxenCheninBlanc">
+ <locatedIn rdf:resource="#SantaBarbaraRegion" />
+ <hasMaker rdf:resource="#Foxen" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Full" />
+ </CheninBlanc>
+
+ <WineGrape rdf:ID="GamayGrape" />
+
+ <Winery rdf:ID="GaryFarrell" />
+
+ <Merlot rdf:ID="GaryFarrellMerlot">
+ <locatedIn rdf:resource="#SonomaRegion" />
+ <hasMaker rdf:resource="#GaryFarrell" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </Merlot>
+
+ <Region rdf:ID="GermanyRegion" />
+
+ <Winery rdf:ID="Handley" />
+
+ <Winery rdf:ID="KalinCellars" />
+
+ <Semillon rdf:ID="KalinCellarsSemillon">
+ <hasMaker rdf:resource="#KalinCellars" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Strong" />
+ <hasBody rdf:resource="#Full" />
+ </Semillon>
+
+ <Winery rdf:ID="KathrynKennedy" />
+
+ <Meritage rdf:ID="KathrynKennedyLateral">
+ <hasMaker rdf:resource="#KathrynKennedy" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Delicate" />
+ <hasBody rdf:resource="#Medium" />
+ </Meritage>
+
+ <Winery rdf:ID="LaneTanner" />
+
+ <PinotNoir rdf:ID="LaneTannerPinotNoir">
+ <locatedIn rdf:resource="#SantaBarbaraRegion" />
+ <hasMaker rdf:resource="#LaneTanner" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Delicate" />
+ <hasBody rdf:resource="#Light" />
+ </PinotNoir>
+
+ <Winery rdf:ID="Longridge" />
+
+ <Merlot rdf:ID="LongridgeMerlot">
+ <locatedIn rdf:resource="#NewZealandRegion" />
+ <hasMaker rdf:resource="#Longridge" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Light" />
+ </Merlot>
+
+ <WineGrape rdf:ID="MalbecGrape" />
+
+ <Region rdf:ID="MargauxRegion">
+ <locatedIn rdf:resource="#MedocRegion" />
+ </Region>
+
+ <Winery rdf:ID="Marietta" />
+
+ <CabernetSauvignon rdf:ID="MariettaCabernetSauvignon">
+ <locatedIn rdf:resource="#SonomaRegion" />
+ <hasMaker rdf:resource="#Marietta" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </CabernetSauvignon>
+
+ <RedTableWine rdf:ID="MariettaOldVinesRed">
+ <locatedIn rdf:resource="#SonomaRegion" />
+ <hasMaker rdf:resource="#Marietta" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </RedTableWine>
+
+ <PetiteSyrah rdf:ID="MariettaPetiteSyrah">
+ <locatedIn rdf:resource="#SonomaRegion" />
+ <hasMaker rdf:resource="#Marietta" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </PetiteSyrah>
+
+ <Zinfandel rdf:ID="MariettaZinfandel">
+ <locatedIn rdf:resource="#SonomaRegion" />
+ <hasMaker rdf:resource="#Marietta" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </Zinfandel>
+
+ <Winery rdf:ID="McGuinnesso" />
+
+ <Region rdf:ID="MendocinoRegion">
+ <locatedIn rdf:resource="#CaliforniaRegion" />
+ <adjacentRegion rdf:resource="#SonomaRegion" />
+ </Region>
+
+ <WineGrape rdf:ID="MerlotGrape" />
+
+ <Region rdf:ID="MeursaultRegion">
+ <locatedIn rdf:resource="#BourgogneRegion" />
+ </Region>
+
+ <Winery rdf:ID="MountEdenVineyard" />
+
+ <Chardonnay rdf:ID="MountEdenVineyardEdnaValleyChardonnay">
+ <locatedIn rdf:resource="#EdnaValleyRegion" />
+ <hasMaker rdf:resource="#MountEdenVineyard" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </Chardonnay>
+
+ <PinotNoir rdf:ID="MountEdenVineyardEstatePinotNoir">
+ <locatedIn rdf:resource="#EdnaValleyRegion" />
+ <hasMaker rdf:resource="#MountEdenVineyard" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Strong" />
+ <hasBody rdf:resource="#Full" />
+ </PinotNoir>
+
+ <Winery rdf:ID="Mountadam" />
+
+ <Chardonnay rdf:ID="MountadamChardonnay">
+ <locatedIn rdf:resource="#SouthAustraliaRegion" />
+ <hasMaker rdf:resource="#Mountadam" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Strong" />
+ <hasBody rdf:resource="#Full" />
+ </Chardonnay>
+
+ <PinotNoir rdf:ID="MountadamPinotNoir">
+ <locatedIn rdf:resource="#SouthAustraliaRegion" />
+ <hasMaker rdf:resource="#Mountadam" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </PinotNoir>
+
+ <DryRiesling rdf:ID="MountadamRiesling">
+ <locatedIn rdf:resource="#SouthAustraliaRegion" />
+ <hasMaker rdf:resource="#Mountadam" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Delicate" />
+ <hasBody rdf:resource="#Medium" />
+ </DryRiesling>
+
+ <Region rdf:ID="MuscadetRegion">
+ <locatedIn rdf:resource="#LoireRegion" />
+ </Region>
+
+ <Region rdf:ID="NapaRegion">
+ <locatedIn rdf:resource="#CaliforniaRegion" />
+ </Region>
+
+ <Region rdf:ID="NewZealandRegion" />
+
+ <Winery rdf:ID="PageMillWinery" />
+
+ <CabernetSauvignon rdf:ID="PageMillWineryCabernetSauvignon">
+ <locatedIn rdf:resource="#NapaRegion" />
+ <hasMaker rdf:resource="#PageMillWinery" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </CabernetSauvignon>
+
+ <Region rdf:ID="PauillacRegion">
+ <locatedIn rdf:resource="#MedocRegion" />
+ </Region>
+
+ <Winery rdf:ID="PeterMccoy" />
+
+ <Chardonnay rdf:ID="PeterMccoyChardonnay">
+ <locatedIn rdf:resource="#SonomaRegion" />
+ <hasMaker rdf:resource="#PeterMccoy" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </Chardonnay>
+
+ <WineGrape rdf:ID="PetiteSyrahGrape" />
+
+ <WineGrape rdf:ID="PetiteVerdotGrape" />
+
+ <WineGrape rdf:ID="PinotBlancGrape" />
+
+ <WineGrape rdf:ID="PinotNoirGrape" />
+
+ <Region rdf:ID="PortugalRegion" />
+
+ <Winery rdf:ID="PulignyMontrachet" />
+
+ <WhiteBurgundy rdf:ID="PulignyMontrachetWhiteBurgundy">
+ <hasMaker rdf:resource="#PulignyMontrachet" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </WhiteBurgundy>
+
+ <WineGrape rdf:ID="RieslingGrape" />
+
+ <Anjou rdf:ID="RoseDAnjou">
+ <hasMaker rdf:resource="#DAnjou" />
+ </Anjou>
+
+ <Region rdf:ID="SancerreRegion">
+ <locatedIn rdf:resource="#LoireRegion" />
+ </Region>
+
+ <WineGrape rdf:ID="SangioveseGrape" />
+
+ <Region rdf:ID="SantaBarbaraRegion">
+ <locatedIn rdf:resource="#CaliforniaRegion" />
+ </Region>
+
+ <Winery rdf:ID="SantaCruzMountainVineyard" />
+
+ <CabernetSauvignon rdf:ID="SantaCruzMountainVineyardCabernetSauvignon">
+ <locatedIn rdf:resource="#SantaCruzMountainsRegion" />
+ <hasMaker rdf:resource="#SantaCruzMountainVineyard" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Strong" />
+ <hasBody rdf:resource="#Full" />
+ </CabernetSauvignon>
+
+ <Region rdf:ID="CentralTexasRegion">
+ <locatedIn rdf:resource="#TexasRegion" />
+ </Region>
+
+ <Winery rdf:ID="StGenevieve" />
+
+ <WhiteWine rdf:ID="StGenevieveTexasWhite">
+ <locatedIn rdf:resource="#CentralTexasRegion" />
+ <hasMaker rdf:resource="#StGenevieve" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ </WhiteWine>
+
+ <Region rdf:ID="SantaCruzMountainsRegion">
+ <locatedIn rdf:resource="#CaliforniaRegion" />
+ </Region>
+
+ <Winery rdf:ID="SaucelitoCanyon" />
+
+ <Zinfandel rdf:ID="SaucelitoCanyonZinfandel">
+ <locatedIn rdf:resource="#ArroyoGrandeRegion" />
+ <hasMaker rdf:resource="#SaucelitoCanyon" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </Zinfandel>
+
+ <Zinfandel rdf:ID="SaucelitoCanyonZinfandel1998">
+ <locatedIn rdf:resource="#ArroyoGrandeRegion" />
+ <hasVintageYear rdf:resource="#Year1998" />
+ <hasMaker rdf:resource="#SaucelitoCanyon" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </Zinfandel>
+
+ <Region rdf:ID="SauterneRegion">
+ <locatedIn rdf:resource="#BordeauxRegion" />
+ </Region>
+
+ <WineGrape rdf:ID="SauvignonBlancGrape" />
+
+ <Winery rdf:ID="SchlossRothermel" />
+
+ <SweetRiesling rdf:ID="SchlossRothermelTrochenbierenausleseRiesling">
+ <locatedIn rdf:resource="#GermanyRegion" />
+ <hasMaker rdf:resource="#SchlossRothermel" />
+ <hasSugar rdf:resource="#Sweet" />
+ <hasFlavor rdf:resource="#Strong" />
+ <hasBody rdf:resource="#Full" />
+ </SweetRiesling>
+
+ <Winery rdf:ID="SchlossVolrad" />
+
+ <SweetRiesling rdf:ID="SchlossVolradTrochenbierenausleseRiesling">
+ <locatedIn rdf:resource ="#GermanyRegion" />
+ <hasMaker rdf:resource="#SchlossVolrad" />
+ <hasSugar rdf:resource="#Sweet" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Full" />
+ </SweetRiesling>
+
+ <Winery rdf:ID="SeanThackrey" />
+
+ <PetiteSyrah rdf:ID="SeanThackreySiriusPetiteSyrah">
+ <locatedIn rdf:resource="#NapaRegion" />
+ <hasMaker rdf:resource="#SeanThackrey" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Strong" />
+ <hasBody rdf:resource="#Full" />
+ </PetiteSyrah>
+
+ <Winery rdf:ID="Selaks" />
+
+ <IceWine rdf:ID="SelaksIceWine">
+ <locatedIn rdf:resource="#NewZealandRegion" />
+ <hasMaker rdf:resource="#Selaks" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ <hasColor rdf:resource="#White" />
+ </IceWine>
+
+ <SauvignonBlanc rdf:ID="SelaksSauvignonBlanc">
+ <locatedIn rdf:resource="#NewZealandRegion" />
+ <hasMaker rdf:resource="#Selaks" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </SauvignonBlanc>
+
+ <WineGrape rdf:ID="SemillonGrape" />
+
+ <Winery rdf:ID="SevreEtMaine" />
+
+ <Muscadet rdf:ID="SevreEtMaineMuscadet">
+ <hasMaker rdf:resource="#SevreEtMaine" />
+ </Muscadet>
+
+ <Region rdf:ID="SonomaRegion">
+ <locatedIn rdf:resource="#CaliforniaRegion" />
+ </Region>
+
+ <Region rdf:ID="SouthAustraliaRegion">
+ <locatedIn rdf:resource="#AustralianRegion" />
+ </Region>
+
+ <Region rdf:ID="StEmilionRegion">
+ <locatedIn rdf:resource="#BordeauxRegion" />
+ </Region>
+
+ <Winery rdf:ID="Stonleigh" />
+
+ <SauvignonBlanc rdf:ID="StonleighSauvignonBlanc">
+ <locatedIn rdf:resource="#NewZealandRegion" />
+ <hasMaker rdf:resource="#Stonleigh" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Delicate" />
+ <hasBody rdf:resource="#Medium" />
+ </SauvignonBlanc>
+
+ <Winery rdf:ID="Taylor" />
+
+ <Port rdf:ID="TaylorPort">
+ <hasMaker rdf:resource="#Taylor" />
+ </Port>
+
+ <Region rdf:ID="ToursRegion">
+ <locatedIn rdf:resource="#LoireRegion" />
+ </Region>
+
+ <Winery rdf:ID="Ventana" />
+
+ <CheninBlanc rdf:ID="VentanaCheninBlanc">
+ <locatedIn rdf:resource="#CentralCoastRegion" />
+ <hasMaker rdf:resource="#Ventana" />
+ <hasSugar rdf:resource="#OffDry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </CheninBlanc>
+
+ <Winery rdf:ID="WhitehallLane" />
+
+ <CabernetFranc rdf:ID="WhitehallLaneCabernetFranc">
+ <locatedIn rdf:resource="#NapaRegion" />
+ <hasMaker rdf:resource="#WhitehallLane" />
+ <hasSugar rdf:resource="#Dry" />
+ <hasFlavor rdf:resource="#Moderate" />
+ <hasBody rdf:resource="#Medium" />
+ </CabernetFranc>
+
+ <DessertWine rdf:ID="WhitehallLanePrimavera">
+ <locatedIn rdf:resource="#NapaRegion" />
+ <hasSugar rdf:resource="#Sweet" />
+ <hasFlavor rdf:resource="#Delicate" />
+ <hasBody rdf:resource="#Light" />
+ </DessertWine>
+
+ <owl:AllDifferent>
+ <owl:distinctMembers rdf:parseType="Collection">
+ <vin:Winery rdf:about="#Bancroft" />
+ <vin:Winery rdf:about="#ChateauChevalBlanc" />
+ <vin:Winery rdf:about="#ChateauDYchem" />
+ <vin:Winery rdf:about="#ChateauDeMeursault" />
+ <vin:Winery rdf:about="#ChateauLafiteRothschild" />
+ <vin:Winery rdf:about="#ChateauMargauxWinery" />
+ <vin:Winery rdf:about="#ChateauMorgon" />
+ <vin:Winery rdf:about="#ClosDeLaPoussie" />
+ <vin:Winery rdf:about="#ClosDeVougeot" />
+ <vin:Winery rdf:about="#CongressSprings" />
+ <vin:Winery rdf:about="#Corbans" />
+ <vin:Winery rdf:about="#CortonMontrachet" />
+ <vin:Winery rdf:about="#Cotturi" />
+ <vin:Winery rdf:about="#DAnjou" />
+ <vin:Winery rdf:about="#Elyse" />
+ <vin:Winery rdf:about="#Forman" />
+ <vin:Winery rdf:about="#Foxen" />
+ <vin:Winery rdf:about="#GaryFarrell" />
+ <vin:Winery rdf:about="#KalinCellars" />
+ <vin:Winery rdf:about="#KathrynKennedy" />
+ <vin:Winery rdf:about="#LaneTanner" />
+ <vin:Winery rdf:about="#Longridge" />
+ <vin:Winery rdf:about="#Marietta" />
+ <vin:Winery rdf:about="#McGuinnesso" />
+ <vin:Winery rdf:about="#MountEdenVineyard" />
+ <vin:Winery rdf:about="#Mountadam" />
+ <vin:Winery rdf:about="#PageMillWinery" />
+ <vin:Winery rdf:about="#PeterMccoy" />
+ <vin:Winery rdf:about="#PulignyMontrachet" />
+ <vin:Winery rdf:about="#SantaCruzMountainVineyard" />
+ <vin:Winery rdf:about="#SaucelitoCanyon" />
+ <vin:Winery rdf:about="#SchlossRothermel" />
+ <vin:Winery rdf:about="#SchlossVolrad" />
+ <vin:Winery rdf:about="#SeanThackrey" />
+ <vin:Winery rdf:about="#Selaks" />
+ <vin:Winery rdf:about="#SevreEtMaine" />
+ <vin:Winery rdf:about="#StGenevieve" />
+ <vin:Winery rdf:about="#Stonleigh" />
+ <vin:Winery rdf:about="#Taylor" />
+ <vin:Winery rdf:about="#Ventana" />
+ <vin:Winery rdf:about="#WhitehallLane" />
+ </owl:distinctMembers>
+ </owl:AllDifferent>
+
+</rdf:RDF>
diff --git a/tests/trig/Makefile.am b/tests/trig/Makefile.am
new file mode 100644
index 0000000..6e52b08
--- /dev/null
+++ b/tests/trig/Makefile.am
@@ -0,0 +1,70 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor TRiG tests
+#
+# Copyright (C) 2007, David Beckett http://purl.org/net/dajobe/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+TEST_FILES=\
+example1.trig example2.trig example3.trig bug370.trig bug451.trig
+
+TEST_OUT_FILES=\
+example1.out example2.out example3.out bug370.out bug451.out
+
+# Used to make N-triples output consistent
+BASE_URI=http://example.librdf.org/
+
+EXTRA_DIST = \
+ $(TEST_FILES) \
+ $(TEST_OUT_FILES)
+
+RAPPER = $(top_builddir)/utils/rapper
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+check-local: check-trig
+
+if MAINTAINER_MODE
+check_trig_deps = $(TEST_FILES)
+endif
+
+check-trig: build-rapper $(check_trig_deps)
+ @result=0; \
+ $(RECHO) "Testing legal TRiG"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .trig` ; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i trig -o nquads $(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status != 0 -a $$status != 2 ; then \
+ $(RECHO) FAILED returned status $$status; result=1; \
+ elif cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ if test $$status = 2 ; then \
+ $(RECHO) "ok with warnings"; grep Warning $$name.err; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ exit $$result
diff --git a/tests/trig/Makefile.in b/tests/trig/Makefile.in
new file mode 100644
index 0000000..a5da7ed
--- /dev/null
+++ b/tests/trig/Makefile.in
@@ -0,0 +1,490 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor TRiG tests
+#
+# Copyright (C) 2007, David Beckett http://purl.org/net/dajobe/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/trig
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TEST_FILES = \
+example1.trig example2.trig example3.trig bug370.trig bug451.trig
+
+TEST_OUT_FILES = \
+example1.out example2.out example3.out bug370.out bug451.out
+
+
+# Used to make N-triples output consistent
+BASE_URI = http://example.librdf.org/
+EXTRA_DIST = \
+ $(TEST_FILES) \
+ $(TEST_OUT_FILES)
+
+RAPPER = $(top_builddir)/utils/rapper
+@MAINTAINER_MODE_TRUE@check_trig_deps = $(TEST_FILES)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/trig/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/trig/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-am check-local clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+check-local: check-trig
+
+check-trig: build-rapper $(check_trig_deps)
+ @result=0; \
+ $(RECHO) "Testing legal TRiG"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .trig` ; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i trig -o nquads $(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status != 0 -a $$status != 2 ; then \
+ $(RECHO) FAILED returned status $$status; result=1; \
+ elif cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ if test $$status = 2 ; then \
+ $(RECHO) "ok with warnings"; grep Warning $$name.err; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ else \
+ $(RECHO) "FAILED"; \
+ diff $(srcdir)/$$name.out $$name.res; result=1; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ exit $$result
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/trig/bug370.out b/tests/trig/bug370.out
new file mode 100644
index 0000000..71009b5
--- /dev/null
+++ b/tests/trig/bug370.out
@@ -0,0 +1,8 @@
+<http://example.com/lame/romeo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://example.com/lame/romeo> <http://xmlns.com/foaf/0.1/name> "Romeo Montague" .
+<http://example.com/lame/juliet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
+<http://example.com/lame/juliet> <http://xmlns.com/foaf/0.1/name> "Juliet Capulet" .
+<http://example.com/lame/juliet> <http://xmlns.com/foaf/0.1/gender> "female" .
+<http://example.com/lame/romeo> <http://example.com/foo/loves> <http://example.com/lame/juliet> <http://example.com/lame/reality> .
+<http://example.com/lame/romeo> <http://example.com/foo/hates> <http://example.com/lame/juliet> <http://example.com/lame/alternative> .
+<http://example.com/lame/romeo> <http://xmlns.com/foaf/0.1/gender> "male" .
diff --git a/tests/trig/bug370.trig b/tests/trig/bug370.trig
new file mode 100644
index 0000000..2cf4c90
--- /dev/null
+++ b/tests/trig/bug370.trig
@@ -0,0 +1,27 @@
+# Issue #0000370 http://bugs.librdf.org/mantis/bug_change_status_page.php
+#
+# rapper -i trig --show-graphs bug370.trig http://mmt.me.uk/examples/rdf/trig1.tt
+#
+
+@base <http://mmt.me.uk/examples/rdf/trig1.ttl> .
+
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix foo: <http://example.com/foo/> .
+@prefix : <http://example.com/lame/> .
+
+:romeo a foaf:Person ;
+ foaf:name "Romeo Montague".
+
+:juliet a foaf:Person ;
+ foaf:name "Juliet Capulet" .
+
+:juliet foaf:gender "female" .
+
+:reality {
+ :romeo foo:loves :juliet . }
+
+:alternative {
+ :romeo foo:hates :juliet . }
+
+:romeo foaf:gender "male" .
diff --git a/tests/trig/bug451.out b/tests/trig/bug451.out
new file mode 100644
index 0000000..2dd98b0
--- /dev/null
+++ b/tests/trig/bug451.out
@@ -0,0 +1,9 @@
+<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#characterSet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> .
+<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#characterSet> <http://www.w3.org/2000/01/rdf-schema#comment> "Characterset in which the content of the InformationElement was created." <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> .
+<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#characterSet> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#InformationElement> <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> .
+<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#characterSet> <http://www.w3.org/2000/01/rdf-schema#label> "characterSet" <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> .
+<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#characterSet> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> .
+<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#characterSet> <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#maxCardinality> "1" <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> .
+<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#Ontology> <http://www.semanticdesktop.org/ontologies/2007/01/19/nie_metadata#> .
+<http://www.semanticdesktop.org/ontologies/2007/01/19/nie_metadata#> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#GraphMetadata> <http://www.semanticdesktop.org/ontologies/2007/01/19/nie_metadata#> .
+<http://www.semanticdesktop.org/ontologies/2007/01/19/nie_metadata#> <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#coreGraphMetadataFor> <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> <http://www.semanticdesktop.org/ontologies/2007/01/19/nie_metadata#> .
diff --git a/tests/trig/bug451.trig b/tests/trig/bug451.trig
new file mode 100644
index 0000000..f8c89c6
--- /dev/null
+++ b/tests/trig/bug451.trig
@@ -0,0 +1,26 @@
+@prefix nie: <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> .
+@prefix dcterms: <http://purl.org/dc/terms/> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix nrl: <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+# HERE "nie:" is used as graph name
+nie: {nie:characterSet
+ a rdf:Property ;
+ rdfs:comment "Characterset in which the content of the InformationElement was created." ;
+ rdfs:domain nie:InformationElement ;
+ rdfs:label "characterSet" ;
+ rdfs:range xsd:string ;
+ nrl:maxCardinality "1" .
+}
+
+<http://www.semanticdesktop.org/ontologies/2007/01/19/nie_metadata#> {
+ nie: a nrl:Ontology ;
+ .
+
+ <http://www.semanticdesktop.org/ontologies/2007/01/19/nie_metadata#>
+ a nrl:GraphMetadata ;
+ nrl:coreGraphMetadataFor
+ nie: .
+}
diff --git a/tests/trig/example1.out b/tests/trig/example1.out
new file mode 100644
index 0000000..0a39d75
--- /dev/null
+++ b/tests/trig/example1.out
@@ -0,0 +1,15 @@
+<http://www.example.org/exampleDocument#Monica> <http://www.example.org/vocabulary#name> "Monica Murphy" <http://www.example.org/exampleDocument#G1> .
+<http://www.example.org/exampleDocument#Monica> <http://www.example.org/vocabulary#homepage> <http://www.monicamurphy.org> <http://www.example.org/exampleDocument#G1> .
+<http://www.example.org/exampleDocument#Monica> <http://www.example.org/vocabulary#email> <mailto:monica@monicamurphy.org> <http://www.example.org/exampleDocument#G1> .
+<http://www.example.org/exampleDocument#Monica> <http://www.example.org/vocabulary#hasSkill> <http://www.example.org/vocabulary#Management> <http://www.example.org/exampleDocument#G1> .
+<http://www.example.org/exampleDocument#Monica> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.org/vocabulary#Person> <http://www.example.org/exampleDocument#G2> .
+<http://www.example.org/exampleDocument#Monica> <http://www.example.org/vocabulary#hasSkill> <http://www.example.org/vocabulary#Programming> <http://www.example.org/exampleDocument#G2> .
+<http://www.example.org/exampleDocument#G1> <http://www.w3.org/2004/03/trix/swp-1/assertedBy> _:w1 <http://www.example.org/exampleDocument#G3> .
+_:w1 <http://www.w3.org/2004/03/trix/swp-1/authority> <http://www.example.org/exampleDocument#Chris> <http://www.example.org/exampleDocument#G3> .
+_:w1 <http://purl.org/dc/elements/1.1/date> "2003-10-02"^^<http://www.w3.org/2001/XMLSchema#date> <http://www.example.org/exampleDocument#G3> .
+<http://www.example.org/exampleDocument#G2> <http://www.w3.org/2004/03/trix/swp-1/quotedBy> _:w2 <http://www.example.org/exampleDocument#G3> .
+<http://www.example.org/exampleDocument#G3> <http://www.w3.org/2004/03/trix/swp-1/assertedBy> _:w2 <http://www.example.org/exampleDocument#G3> .
+_:w2 <http://purl.org/dc/elements/1.1/date> "2003-09-03"^^<http://www.w3.org/2001/XMLSchema#date> <http://www.example.org/exampleDocument#G3> .
+_:w2 <http://www.w3.org/2004/03/trix/swp-1/authority> <http://www.example.org/exampleDocument#Chris> <http://www.example.org/exampleDocument#G3> .
+<http://www.example.org/exampleDocument#Chris> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.org/vocabulary#Person> <http://www.example.org/exampleDocument#G3> .
+<http://www.example.org/exampleDocument#Chris> <http://www.example.org/vocabulary#email> <mailto:chris@bizer.de> <http://www.example.org/exampleDocument#G3> .
diff --git a/tests/trig/example1.trig b/tests/trig/example1.trig
new file mode 100644
index 0000000..b189e63
--- /dev/null
+++ b/tests/trig/example1.trig
@@ -0,0 +1,29 @@
+
+
+# TriG Example Document 1
+# This document encodes three graphs.
+
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix swp: <http://www.w3.org/2004/03/trix/swp-1/> .
+@prefix dc: <http://purl.org/dc/elements/1.1/> .
+@prefix ex: <http://www.example.org/vocabulary#> .
+@prefix : <http://www.example.org/exampleDocument#> .
+
+:G1 { :Monica ex:name "Monica Murphy" .
+ :Monica ex:homepage <http://www.monicamurphy.org> .
+ :Monica ex:email <mailto:monica@monicamurphy.org> .
+ :Monica ex:hasSkill ex:Management }
+
+:G2 { :Monica rdf:type ex:Person .
+ :Monica ex:hasSkill ex:Programming }
+
+:G3 { :G1 swp:assertedBy _:w1 .
+ _:w1 swp:authority :Chris .
+ _:w1 dc:date "2003-10-02"^^xsd:date .
+ :G2 swp:quotedBy _:w2 .
+ :G3 swp:assertedBy _:w2 .
+ _:w2 dc:date "2003-09-03"^^xsd:date .
+ _:w2 swp:authority :Chris .
+ :Chris rdf:type ex:Person .
+ :Chris ex:email <mailto:chris@bizer.de> }
diff --git a/tests/trig/example2.out b/tests/trig/example2.out
new file mode 100644
index 0000000..e39a611
--- /dev/null
+++ b/tests/trig/example2.out
@@ -0,0 +1,6 @@
+<http://www.example.org/exampleDocument#Monica> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.org/vocabulary#Person> <http://www.example.org/exampleDocument#G1> .
+<http://www.example.org/exampleDocument#Monica> <http://www.example.org/vocabulary#name> "Monica Murphy" <http://www.example.org/exampleDocument#G1> .
+<http://www.example.org/exampleDocument#Monica> <http://www.example.org/vocabulary#homepage> <http://www.monicamurphy.org> <http://www.example.org/exampleDocument#G1> .
+<http://www.example.org/exampleDocument#Monica> <http://www.example.org/vocabulary#email> <mailto:monica@monicamurphy.org> <http://www.example.org/exampleDocument#G1> .
+<http://www.example.org/exampleDocument#Monica> <http://www.example.org/vocabulary#hasSkill> <http://www.example.org/vocabulary#Management> <http://www.example.org/exampleDocument#G1> .
+<http://www.example.org/exampleDocument#Monica> <http://www.example.org/vocabulary#hasSkill> <http://www.example.org/vocabulary#Programming> <http://www.example.org/exampleDocument#G1> .
diff --git a/tests/trig/example2.trig b/tests/trig/example2.trig
new file mode 100644
index 0000000..7c5cd06
--- /dev/null
+++ b/tests/trig/example2.trig
@@ -0,0 +1,11 @@
+# TriG Example Document 2
+
+@prefix ex: <http://www.example.org/vocabulary#> .
+@prefix : <http://www.example.org/exampleDocument#> .
+
+:G1 = { :Monica a ex:Person ;
+ ex:name "Monica Murphy" ;
+ ex:homepage <http://www.monicamurphy.org> ;
+ ex:email <mailto:monica@monicamurphy.org> ;
+ ex:hasSkill ex:Management ,
+ ex:Programming . }
diff --git a/tests/trig/example3.out b/tests/trig/example3.out
new file mode 100644
index 0000000..2289753
--- /dev/null
+++ b/tests/trig/example3.out
@@ -0,0 +1,6 @@
+<http://example.org/bob> <http://purl.org/dc/elements/1.1/publisher> "Bob" .
+<http://example.org/alice> <http://purl.org/dc/elements/1.1/publisher> "Alice" .
+_:a <http://xmlns.com/foaf/0.1/name> "Bob" <http://example.org/bob> .
+_:a <http://xmlns.com/foaf/0.1/mbox> <mailto:bob@oldcorp.example.org> <http://example.org/bob> .
+_:a <http://xmlns.com/foaf/0.1/name> "Alice" <http://example.org/alice> .
+_:a <http://xmlns.com/foaf/0.1/mbox> <mailto:alice@work.example.org> <http://example.org/alice> .
diff --git a/tests/trig/example3.trig b/tests/trig/example3.trig
new file mode 100644
index 0000000..0ef71d3
--- /dev/null
+++ b/tests/trig/example3.trig
@@ -0,0 +1,26 @@
+
+
+# TriG Example Document 3
+# This document contains a default graph and two named graphs.
+
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix dc: <http://purl.org/dc/elements/1.1/> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+# default graph
+ {
+ <http://example.org/bob> dc:publisher "Bob" .
+ <http://example.org/alice> dc:publisher "Alice" .
+ }
+
+<http://example.org/bob>
+ {
+ _:a foaf:name "Bob" .
+ _:a foaf:mbox <mailto:bob@oldcorp.example.org> .
+ }
+
+<http://example.org/alice>
+ {
+ _:a foaf:name "Alice" .
+ _:a foaf:mbox <mailto:alice@work.example.org> .
+ }
diff --git a/tests/turtle/Makefile.am b/tests/turtle/Makefile.am
new file mode 100644
index 0000000..6d0aaa6
--- /dev/null
+++ b/tests/turtle/Makefile.am
@@ -0,0 +1,331 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor Turtle tests
+#
+# Copyright (C) 2003-2009, David Beckett http://www.dajobe.org/
+# Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+RDFXML_DIR = ../rdfxml
+NTRIPLES_DIR = ../ntriples
+
+TEST_FILES=test-00.ttl test-01.ttl test-02.ttl test-03.ttl \
+test-04.ttl test-05.ttl test-06.ttl test-07.ttl test-08.ttl \
+test-09.ttl test-10.ttl test-11.ttl test-12.ttl test-13.ttl \
+test-14.ttl test-15.ttl test-16.ttl test-17.ttl test-18.ttl \
+test-19.ttl test-20.ttl test-21.ttl test-22.ttl test-23.ttl \
+test-24.ttl test-25.ttl test-26.ttl test-27.ttl \
+test-29.ttl test-30.ttl test-33.ttl test-36.ttl test-37.ttl \
+test-38.ttl \
+rdf-schema.ttl \
+rdfs-namespace.ttl \
+rdfq-results.ttl
+
+TEST_BAD_FILES=bad-00.ttl bad-01.ttl bad-02.ttl bad-03.ttl \
+bad-04.ttl bad-05.ttl bad-06.ttl bad-07.ttl bad-08.ttl bad-09.ttl \
+bad-10.ttl bad-11.ttl bad-12.ttl bad-13.ttl bad-14.ttl bad-15.ttl bad-16.ttl \
+bad-17.ttl bad-18.ttl bad-19.ttl bad-20.ttl bad-21.ttl bad-22.ttl \
+bad-23.ttl
+
+TEST_WARN_FILES=test-35.ttl
+
+TEST_OUT_FILES=test-00.out test-01.out test-02.out test-03.out \
+test-04.out test-05.out test-06.out test-07.out test-08.out \
+test-09.out test-10.out test-11.out test-12.out test-13.out \
+test-14.out test-15.out test-16.out test-17.out test-18.out \
+test-19.out test-20.out test-21.out test-22.out test-23.out \
+test-24.out test-25.out test-26.out test-27.out test-28.out \
+test-29.out test-30.out test-33.out test-36.out test-37.out \
+test-38.out \
+rdf-schema.out \
+rdfs-namespace.out \
+rdfq-results.out
+
+TEST_SERIALIZE_FILES= \
+test-28.ttl test-31.ttl test-32.ttl test-34.ttl
+
+TEST_SERIALIZE_OUT_FILES= \
+test-28-out.ttl test-31-out.ttl test-32-out.ttl test-34-out.ttl
+
+TURTLE_HACK_OUT_FILES= \
+ex-38-turtle.out
+
+TURTLE_SERIALIZE_RDF_FILES=ex-62.rdf
+
+
+TEST_WARN_OUT_FILES= test-35.out
+
+TEST_MANIFEST_FILES=manifest.ttl manifest-bad.ttl
+
+# Used to make N-triples output consistent
+BASE_URI=http://www.w3.org/2001/sw/DataAccess/df1/tests/
+# for rdf-schema.ttl
+RDF_NS_URI=http://www.w3.org/1999/02/22-rdf-syntax-ns
+# for rdfs-namespace.ttl
+RDFS_NS_URI=http://www.w3.org/2000/01/rdf-schema
+
+ALL_TEST_FILES= README.txt \
+ $(TEST_FILES) \
+ $(TEST_BAD_FILES) \
+ $(TEST_WARN_FILES) \
+ $(TEST_OUT_FILES) \
+ $(TEST_WARN_OUT_FILES) \
+ $(TEST_MANIFEST_FILES) \
+ $(TEST_SERIALIZE_FILES) \
+ $(TEST_SERIALIZE_OUT_FILES) \
+ $(TURTLE_SERIALIZE_RDF_TEST_FILES) \
+ $(TURTLE_SERIALIZE_RDF_FILES) \
+ $(TURTLE_HACK_OUT_FILES)
+
+EXTRA_DIST = $(ALL_TEST_FILES)
+
+RAPPER = $(top_builddir)/utils/rapper
+RDFDIFF = $(top_builddir)/utils/rdfdiff
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+build-rdfdiff:
+ @(cd $(top_builddir)/utils ; $(MAKE) rdfdiff$(EXEEXT))
+
+check-local: check-rdf check-bad-rdf check-turtle-serialize \
+check-turtle-serialize-syntax check-turtle-parse-ntriples \
+check-turtle-serialize-rdf check-warn-rdf
+
+if MAINTAINER_MODE
+check_rdf_deps = $(TEST_FILES)
+endif
+
+check-rdf: build-rapper $(check_rdf_deps)
+ @result=0; \
+ $(RECHO) "Testing legal Turtle"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .ttl` ; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i turtle -o ntriples $(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status != 0 -a $$status != 2 ; then \
+ $(RECHO) "FAILED returned status $$status"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples $(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.err; \
+ elif cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ if test $$status = 2 ; then \
+ $(RECHO) "ok with warnings"; grep Warning $$name.err; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ else \
+ $(RECHO) "FAILED"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples $(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.err; \
+ diff $(srcdir)/$$name.out $$name.res; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ exit $$result
+
+if MAINTAINER_MODE
+check_bad_rdf_deps = $(TEST_BAD_FILES)
+endif
+
+check-bad-rdf: build-rapper $(check_bad_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing bad Turtle fails"; \
+ for test in $(TEST_BAD_FILES); do \
+ name=`basename $$test .ttl` ; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "ok"; \
+ elif test $$status -eq 2 ; then \
+ $(RECHO) "FAILED - parsing succeeded with a warning"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.res; grep Warning $$name.err; \
+ elif test $$status -eq 0 ; then \
+ $(RECHO) "FAILED - parsing succeeded but should have failed"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.res; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.err; \
+ cat $$name.res; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_warn_rdf_deps = $(TEST_WARN_FILES)
+endif
+
+check-warn-rdf: build-rapper $(check_warn_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing Turtle with warnings"; \
+ for test in $(TEST_WARN_FILES); do \
+ name=`basename $$test .ttl` ; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "FAILED - parsing failed when should have warned"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.res; grep Error $$name.err; \
+ elif test $$status -eq 2 ; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.err; \
+ cat $$name.res; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_turtle_serialize_deps = $(TEST_FILES)
+endif
+
+check-turtle-serialize: build-rdfdiff build-rapper $(check_turtle_serialize_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing turtle serialization with legal turtle"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .ttl` ; \
+ if test $$name = rdf-schema; then \
+ baseuri=$(RDF_NS_URI); \
+ elif test $$name = rdfs-namespace; then \
+ baseuri=$(RDFS_NS_URI); \
+ else \
+ baseuri=$(BASE_URI)$$test; \
+ fi; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i turtle -o turtle $(srcdir)/$$test $$baseuri > $$name-turtle.ttl 2> $$name.err; \
+ status1=$$?; \
+ $(RDFDIFF) -f turtle -u $$baseuri -t turtle $(srcdir)/$$test $$name-turtle.ttl > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ if test $$status1 = 0 -a $$status2 = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o turtle $(srcdir)/$$test $$baseuri '>' $$name-turtle.ttl; \
+ $(RECHO) $(RDFDIFF) -f turtle -u $$baseuri -t turtle $(srcdir)/$$test $$name-turtle.ttl '>' $$name.res; \
+ cat $$name-turtle.ttl; cat $$name.err; \
+ fi; \
+ rm -f $$name-turtle.ttl $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+if MAINTAINER_MODE
+check_turtle_serialize_syntax_deps = $(TEST_SERIALIZE_FILES)
+endif
+
+check-turtle-serialize-syntax: build-rapper $(check_turtle_serialize_syntax_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing turtle exact serialization output"; \
+ for test in $(TEST_SERIALIZE_FILES); do \
+ name=`basename $$test .ttl` ; \
+ if test $$name = rdf-schema; then \
+ baseuri=$(RDF_NS_URI); \
+ elif test $$name = rdfs-namespace; then \
+ baseuri=$(RDFS_NS_URI); \
+ elif test $$name = test-31 -o $$name = test-32; then \
+ baseuri=-; \
+ else \
+ baseuri=$(BASE_URI)$$test; \
+ fi; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i turtle -o turtle $(srcdir)/$$test $$baseuri > $$name-turtle.ttl 2> $$name.err; \
+ cmp -s $(srcdir)/$$name-out.ttl $$name-turtle.ttl; \
+ status=$$?; \
+ if test $$status = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o turtle $(srcdir)/$$test $$baseuri '>' $$name-turtle.ttl; \
+ cat $$name.err; \
+ diff -a -u $(srcdir)/$$name-out.ttl $$name-turtle.ttl; \
+ fi; \
+ rm -f $$name-turtle.ttl $$name.err; \
+ done; \
+ set -e; exit $$result
+
+check-turtle-parse-ntriples: build-rapper
+ @set +e; result=0; \
+ $(RECHO) "Testing Turtle parsing with N-Triples tests"; \
+ NT_TEST_FILES=`unset MAKELEVEL MAKEFLAGS; cd $(NTRIPLES_DIR) && $(MAKE) print-nt-test-files | sed -e 's,^, ,' -e 's, ,$(NTRIPLES_DIR)/,g'`; \
+ for test in $$NT_TEST_FILES; do \
+ name=`basename $$test .nt` ; \
+ baseuri=-; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ test_expected=$(srcdir)/$(NTRIPLES_DIR)/$$name.out; \
+ if cmp $$test_expected $$name.res >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.err; \
+ diff $$test_expected $$name.res; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+check-turtle-serialize-rdf: build-rdfdiff build-rapper
+ @set +e; result=0; \
+ RDF_TEST_FILES=`unset MAKELEVEL MAKEFLAGS; cd $(RDFXML_DIR) && $(MAKE) print-rdf-test-files | sed -e 's,^, ,' -e 's, ,$(RDFXML_DIR)/,g'`; \
+ $(RECHO) "Testing turtle serialization with legal rdf/xml"; \
+ for test in $$RDF_TEST_FILES $(TURTLE_SERIALIZE_RDF_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=-; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o turtle $(srcdir)/$$test $$baseuri > $$name-turtle.ttl 2> $$name.err; \
+ status1=$$?; \
+ if test $$test = "$(RDFXML_DIR)/ex-38.rdf"; then \
+ diff $(srcdir)/ex-38-turtle.out $$name-turtle.ttl > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ else \
+ $(RDFDIFF) -t turtle $(srcdir)/$$test $$name-turtle.ttl > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ fi; \
+ if test $$status1 = 0 -a $$status2 = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; result=1; \
+ $(RECHO) $(RAPPER) -q -o turtle $(srcdir)/$$test $$baseuri '>' $$name-turtle.ttl; \
+ $(RECHO) $(RDFDIFF) -t turtle $(srcdir)/$$test $$name-turtle.ttl '>' $$name.res; \
+ cat $$name.err; \
+ fi; \
+ rm -f $$name-turtle.ttl $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+
+if MAINTAINER_MODE
+zip: tests.zip
+
+tests.zip: $(ALL_TEST_FILES)
+ rm -f $@
+ zip $@ $(ALL_TEST_FILES)
+
+endif
diff --git a/tests/turtle/Makefile.in b/tests/turtle/Makefile.in
new file mode 100644
index 0000000..372ca39
--- /dev/null
+++ b/tests/turtle/Makefile.in
@@ -0,0 +1,728 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor Turtle tests
+#
+# Copyright (C) 2003-2009, David Beckett http://www.dajobe.org/
+# Copyright (C) 2003-2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/turtle
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+RDFXML_DIR = ../rdfxml
+NTRIPLES_DIR = ../ntriples
+TEST_FILES = test-00.ttl test-01.ttl test-02.ttl test-03.ttl \
+test-04.ttl test-05.ttl test-06.ttl test-07.ttl test-08.ttl \
+test-09.ttl test-10.ttl test-11.ttl test-12.ttl test-13.ttl \
+test-14.ttl test-15.ttl test-16.ttl test-17.ttl test-18.ttl \
+test-19.ttl test-20.ttl test-21.ttl test-22.ttl test-23.ttl \
+test-24.ttl test-25.ttl test-26.ttl test-27.ttl \
+test-29.ttl test-30.ttl test-33.ttl test-36.ttl test-37.ttl \
+test-38.ttl \
+rdf-schema.ttl \
+rdfs-namespace.ttl \
+rdfq-results.ttl
+
+TEST_BAD_FILES = bad-00.ttl bad-01.ttl bad-02.ttl bad-03.ttl \
+bad-04.ttl bad-05.ttl bad-06.ttl bad-07.ttl bad-08.ttl bad-09.ttl \
+bad-10.ttl bad-11.ttl bad-12.ttl bad-13.ttl bad-14.ttl bad-15.ttl bad-16.ttl \
+bad-17.ttl bad-18.ttl bad-19.ttl bad-20.ttl bad-21.ttl bad-22.ttl \
+bad-23.ttl
+
+TEST_WARN_FILES = test-35.ttl
+TEST_OUT_FILES = test-00.out test-01.out test-02.out test-03.out \
+test-04.out test-05.out test-06.out test-07.out test-08.out \
+test-09.out test-10.out test-11.out test-12.out test-13.out \
+test-14.out test-15.out test-16.out test-17.out test-18.out \
+test-19.out test-20.out test-21.out test-22.out test-23.out \
+test-24.out test-25.out test-26.out test-27.out test-28.out \
+test-29.out test-30.out test-33.out test-36.out test-37.out \
+test-38.out \
+rdf-schema.out \
+rdfs-namespace.out \
+rdfq-results.out
+
+TEST_SERIALIZE_FILES = \
+test-28.ttl test-31.ttl test-32.ttl test-34.ttl
+
+TEST_SERIALIZE_OUT_FILES = \
+test-28-out.ttl test-31-out.ttl test-32-out.ttl test-34-out.ttl
+
+TURTLE_HACK_OUT_FILES = \
+ex-38-turtle.out
+
+TURTLE_SERIALIZE_RDF_FILES = ex-62.rdf
+TEST_WARN_OUT_FILES = test-35.out
+TEST_MANIFEST_FILES = manifest.ttl manifest-bad.ttl
+
+# Used to make N-triples output consistent
+BASE_URI = http://www.w3.org/2001/sw/DataAccess/df1/tests/
+# for rdf-schema.ttl
+RDF_NS_URI = http://www.w3.org/1999/02/22-rdf-syntax-ns
+# for rdfs-namespace.ttl
+RDFS_NS_URI = http://www.w3.org/2000/01/rdf-schema
+ALL_TEST_FILES = README.txt \
+ $(TEST_FILES) \
+ $(TEST_BAD_FILES) \
+ $(TEST_WARN_FILES) \
+ $(TEST_OUT_FILES) \
+ $(TEST_WARN_OUT_FILES) \
+ $(TEST_MANIFEST_FILES) \
+ $(TEST_SERIALIZE_FILES) \
+ $(TEST_SERIALIZE_OUT_FILES) \
+ $(TURTLE_SERIALIZE_RDF_TEST_FILES) \
+ $(TURTLE_SERIALIZE_RDF_FILES) \
+ $(TURTLE_HACK_OUT_FILES)
+
+EXTRA_DIST = $(ALL_TEST_FILES)
+RAPPER = $(top_builddir)/utils/rapper
+RDFDIFF = $(top_builddir)/utils/rdfdiff
+@MAINTAINER_MODE_TRUE@check_rdf_deps = $(TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_bad_rdf_deps = $(TEST_BAD_FILES)
+@MAINTAINER_MODE_TRUE@check_warn_rdf_deps = $(TEST_WARN_FILES)
+@MAINTAINER_MODE_TRUE@check_turtle_serialize_deps = $(TEST_FILES)
+@MAINTAINER_MODE_TRUE@check_turtle_serialize_syntax_deps = $(TEST_SERIALIZE_FILES)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/turtle/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/turtle/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-am check-local clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+build-rapper:
+ @(cd $(top_builddir)/utils ; $(MAKE) rapper$(EXEEXT))
+
+build-rdfdiff:
+ @(cd $(top_builddir)/utils ; $(MAKE) rdfdiff$(EXEEXT))
+
+check-local: check-rdf check-bad-rdf check-turtle-serialize \
+check-turtle-serialize-syntax check-turtle-parse-ntriples \
+check-turtle-serialize-rdf check-warn-rdf
+
+check-rdf: build-rapper $(check_rdf_deps)
+ @result=0; \
+ $(RECHO) "Testing legal Turtle"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .ttl` ; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i turtle -o ntriples $(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status != 0 -a $$status != 2 ; then \
+ $(RECHO) "FAILED returned status $$status"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples $(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.err; \
+ elif cmp $(srcdir)/$$name.out $$name.res >/dev/null 2>&1; then \
+ if test $$status = 2 ; then \
+ $(RECHO) "ok with warnings"; grep Warning $$name.err; \
+ else \
+ $(RECHO) "ok"; \
+ fi; \
+ else \
+ $(RECHO) "FAILED"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples $(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.err; \
+ diff $(srcdir)/$$name.out $$name.res; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ exit $$result
+
+check-bad-rdf: build-rapper $(check_bad_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing bad Turtle fails"; \
+ for test in $(TEST_BAD_FILES); do \
+ name=`basename $$test .ttl` ; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "ok"; \
+ elif test $$status -eq 2 ; then \
+ $(RECHO) "FAILED - parsing succeeded with a warning"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.res; grep Warning $$name.err; \
+ elif test $$status -eq 0 ; then \
+ $(RECHO) "FAILED - parsing succeeded but should have failed"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.res; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.err; \
+ cat $$name.res; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+check-warn-rdf: build-rapper $(check_warn_rdf_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing Turtle with warnings"; \
+ for test in $(TEST_WARN_FILES); do \
+ name=`basename $$test .ttl` ; \
+ baseuri=$(BASE_URI)$$test; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ status=$$?; \
+ if test $$status -eq 1 ; then \
+ $(RECHO) "FAILED - parsing failed when should have warned"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.res; grep Error $$name.err; \
+ elif test $$status -eq 2 ; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED - parsing failed with unknown status $$status"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.err; \
+ cat $$name.res; \
+ fi; \
+ rm -f $$name.res $$name.err ; \
+ done; \
+ set -e; exit $$result
+
+check-turtle-serialize: build-rdfdiff build-rapper $(check_turtle_serialize_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing turtle serialization with legal turtle"; \
+ for test in $(TEST_FILES); do \
+ name=`basename $$test .ttl` ; \
+ if test $$name = rdf-schema; then \
+ baseuri=$(RDF_NS_URI); \
+ elif test $$name = rdfs-namespace; then \
+ baseuri=$(RDFS_NS_URI); \
+ else \
+ baseuri=$(BASE_URI)$$test; \
+ fi; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i turtle -o turtle $(srcdir)/$$test $$baseuri > $$name-turtle.ttl 2> $$name.err; \
+ status1=$$?; \
+ $(RDFDIFF) -f turtle -u $$baseuri -t turtle $(srcdir)/$$test $$name-turtle.ttl > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ if test $$status1 = 0 -a $$status2 = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o turtle $(srcdir)/$$test $$baseuri '>' $$name-turtle.ttl; \
+ $(RECHO) $(RDFDIFF) -f turtle -u $$baseuri -t turtle $(srcdir)/$$test $$name-turtle.ttl '>' $$name.res; \
+ cat $$name-turtle.ttl; cat $$name.err; \
+ fi; \
+ rm -f $$name-turtle.ttl $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+check-turtle-serialize-syntax: build-rapper $(check_turtle_serialize_syntax_deps)
+ @set +e; result=0; \
+ $(RECHO) "Testing turtle exact serialization output"; \
+ for test in $(TEST_SERIALIZE_FILES); do \
+ name=`basename $$test .ttl` ; \
+ if test $$name = rdf-schema; then \
+ baseuri=$(RDF_NS_URI); \
+ elif test $$name = rdfs-namespace; then \
+ baseuri=$(RDFS_NS_URI); \
+ elif test $$name = test-31 -o $$name = test-32; then \
+ baseuri=-; \
+ else \
+ baseuri=$(BASE_URI)$$test; \
+ fi; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i turtle -o turtle $(srcdir)/$$test $$baseuri > $$name-turtle.ttl 2> $$name.err; \
+ cmp -s $(srcdir)/$$name-out.ttl $$name-turtle.ttl; \
+ status=$$?; \
+ if test $$status = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o turtle $(srcdir)/$$test $$baseuri '>' $$name-turtle.ttl; \
+ cat $$name.err; \
+ diff -a -u $(srcdir)/$$name-out.ttl $$name-turtle.ttl; \
+ fi; \
+ rm -f $$name-turtle.ttl $$name.err; \
+ done; \
+ set -e; exit $$result
+
+check-turtle-parse-ntriples: build-rapper
+ @set +e; result=0; \
+ $(RECHO) "Testing Turtle parsing with N-Triples tests"; \
+ NT_TEST_FILES=`unset MAKELEVEL MAKEFLAGS; cd $(NTRIPLES_DIR) && $(MAKE) print-nt-test-files | sed -e 's,^, ,' -e 's, ,$(NTRIPLES_DIR)/,g'`; \
+ for test in $$NT_TEST_FILES; do \
+ name=`basename $$test .nt` ; \
+ baseuri=-; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri > $$name.res 2> $$name.err; \
+ test_expected=$(srcdir)/$(NTRIPLES_DIR)/$$name.out; \
+ if cmp $$test_expected $$name.res >/dev/null 2>&1; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; result=1; \
+ $(RECHO) $(RAPPER) -q -i turtle -o ntriples file:$(srcdir)/$$test $$baseuri '>' $$name.res; \
+ cat $$name.err; \
+ diff $$test_expected $$name.res; \
+ fi; \
+ rm -f $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+check-turtle-serialize-rdf: build-rdfdiff build-rapper
+ @set +e; result=0; \
+ RDF_TEST_FILES=`unset MAKELEVEL MAKEFLAGS; cd $(RDFXML_DIR) && $(MAKE) print-rdf-test-files | sed -e 's,^, ,' -e 's, ,$(RDFXML_DIR)/,g'`; \
+ $(RECHO) "Testing turtle serialization with legal rdf/xml"; \
+ for test in $$RDF_TEST_FILES $(TURTLE_SERIALIZE_RDF_FILES); do \
+ name=`basename $$test .rdf` ; \
+ baseuri=-; \
+ $(RECHO) $(RECHO_N) "Checking $$test $(RECHO_C)"; \
+ $(RAPPER) -q -o turtle $(srcdir)/$$test $$baseuri > $$name-turtle.ttl 2> $$name.err; \
+ status1=$$?; \
+ if test $$test = "$(RDFXML_DIR)/ex-38.rdf"; then \
+ diff $(srcdir)/ex-38-turtle.out $$name-turtle.ttl > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ else \
+ $(RDFDIFF) -t turtle $(srcdir)/$$test $$name-turtle.ttl > $$name.res 2> $$name.err; \
+ status2=$$?; \
+ fi; \
+ if test $$status1 = 0 -a $$status2 = 0; then \
+ $(RECHO) "ok"; \
+ else \
+ $(RECHO) "FAILED"; result=1; \
+ $(RECHO) $(RAPPER) -q -o turtle $(srcdir)/$$test $$baseuri '>' $$name-turtle.ttl; \
+ $(RECHO) $(RDFDIFF) -t turtle $(srcdir)/$$test $$name-turtle.ttl '>' $$name.res; \
+ cat $$name.err; \
+ fi; \
+ rm -f $$name-turtle.ttl $$name.res $$name.err; \
+ done; \
+ set -e; exit $$result
+
+@MAINTAINER_MODE_TRUE@zip: tests.zip
+
+@MAINTAINER_MODE_TRUE@tests.zip: $(ALL_TEST_FILES)
+@MAINTAINER_MODE_TRUE@ rm -f $@
+@MAINTAINER_MODE_TRUE@ zip $@ $(ALL_TEST_FILES)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/turtle/README.txt b/tests/turtle/README.txt
new file mode 100644
index 0000000..37460e6
--- /dev/null
+++ b/tests/turtle/README.txt
@@ -0,0 +1,20 @@
+These are the tests for the Turtle Terse RDF Triple Language
+that must be passed by conformant systems. See
+ http://www.dajobe.org/2004/01/turtle/
+for the full conformance information.
+
+The format is a set of good tests and bad tests.
+
+Good tests are a pair of files:
+ abc.ttl abc.out
+which are the input Turtle file and the expected output RDF triples,
+written in N-Triples.
+
+bad tests are of the form
+ bad-XX.ttl
+which must fail.
+
+The tests should be performed with an assumed base URI
+of http://www.w3.org/2001/sw/DataAccess/df1/tests/
+
+Dave
diff --git a/tests/turtle/bad-00.ttl b/tests/turtle/bad-00.ttl
new file mode 100644
index 0000000..b1a1b36
--- /dev/null
+++ b/tests/turtle/bad-00.ttl
@@ -0,0 +1,2 @@
+# prefix name must end in a :
+@prefix a <#> .
diff --git a/tests/turtle/bad-01.ttl b/tests/turtle/bad-01.ttl
new file mode 100644
index 0000000..533bc21
--- /dev/null
+++ b/tests/turtle/bad-01.ttl
@@ -0,0 +1,3 @@
+# Forbidden by RDF - predicate cannot be blank
+@prefix : <http://example.org/base#> .
+:a [ :b :c ] :d .
diff --git a/tests/turtle/bad-02.ttl b/tests/turtle/bad-02.ttl
new file mode 100644
index 0000000..fd2014d
--- /dev/null
+++ b/tests/turtle/bad-02.ttl
@@ -0,0 +1,3 @@
+# Forbidden by RDF - predicate cannot be blank
+@prefix : <http://example.org/base#> .
+:a [] :b .
diff --git a/tests/turtle/bad-03.ttl b/tests/turtle/bad-03.ttl
new file mode 100644
index 0000000..07a372f
--- /dev/null
+++ b/tests/turtle/bad-03.ttl
@@ -0,0 +1,3 @@
+# 'a' only allowed as a predicate
+@prefix : <http://example.org/base#> .
+a :a :b .
diff --git a/tests/turtle/bad-04.ttl b/tests/turtle/bad-04.ttl
new file mode 100644
index 0000000..ee7246c
--- /dev/null
+++ b/tests/turtle/bad-04.ttl
@@ -0,0 +1,3 @@
+# No comma is allowed in collections
+@prefix : <http://example.org/stuff/1.0/> .
+:a :b ( "apple", "banana" ) .
diff --git a/tests/turtle/bad-05.ttl b/tests/turtle/bad-05.ttl
new file mode 100644
index 0000000..387015f
--- /dev/null
+++ b/tests/turtle/bad-05.ttl
@@ -0,0 +1,4 @@
+# N3 {}s are not in Turtle
+@prefix : <http://example.org/stuff/1.0/> .
+{ :a :b :c . } :d :e .
+
diff --git a/tests/turtle/bad-06.ttl b/tests/turtle/bad-06.ttl
new file mode 100644
index 0000000..a8f1a0f
--- /dev/null
+++ b/tests/turtle/bad-06.ttl
@@ -0,0 +1,3 @@
+# is and of are not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+:a is :b of :c .
diff --git a/tests/turtle/bad-07.ttl b/tests/turtle/bad-07.ttl
new file mode 100644
index 0000000..18ea4fa
--- /dev/null
+++ b/tests/turtle/bad-07.ttl
@@ -0,0 +1,4 @@
+# paths are not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+:a.:b.:c .
+:a^:b^:c .
diff --git a/tests/turtle/bad-08.ttl b/tests/turtle/bad-08.ttl
new file mode 100644
index 0000000..07918f9
--- /dev/null
+++ b/tests/turtle/bad-08.ttl
@@ -0,0 +1,2 @@
+@keywords something.
+# @keywords is not in turtle
diff --git a/tests/turtle/bad-09.ttl b/tests/turtle/bad-09.ttl
new file mode 100644
index 0000000..d2d76c1
--- /dev/null
+++ b/tests/turtle/bad-09.ttl
@@ -0,0 +1,3 @@
+# implies is not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+:a => :b .
diff --git a/tests/turtle/bad-10.ttl b/tests/turtle/bad-10.ttl
new file mode 100644
index 0000000..b5ef1f5
--- /dev/null
+++ b/tests/turtle/bad-10.ttl
@@ -0,0 +1,3 @@
+# equivalence is not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+:a = :b .
diff --git a/tests/turtle/bad-11.ttl b/tests/turtle/bad-11.ttl
new file mode 100644
index 0000000..09e7b6a
--- /dev/null
+++ b/tests/turtle/bad-11.ttl
@@ -0,0 +1,3 @@
+# @forAll is not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+@forAll :x .
diff --git a/tests/turtle/bad-12.ttl b/tests/turtle/bad-12.ttl
new file mode 100644
index 0000000..cef48ff
--- /dev/null
+++ b/tests/turtle/bad-12.ttl
@@ -0,0 +1,3 @@
+# @forSome is not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+@forSome :x .
diff --git a/tests/turtle/bad-13.ttl b/tests/turtle/bad-13.ttl
new file mode 100644
index 0000000..91accf2
--- /dev/null
+++ b/tests/turtle/bad-13.ttl
@@ -0,0 +1,3 @@
+# <= is not in turtle
+@prefix : <http://example.org/stuff/1.0/> .
+:a <= :b .
diff --git a/tests/turtle/bad-14.ttl b/tests/turtle/bad-14.ttl
new file mode 100644
index 0000000..f4a7acf
--- /dev/null
+++ b/tests/turtle/bad-14.ttl
@@ -0,0 +1,6 @@
+# Test long literals with missing end
+@prefix : <http://example.org/ex#> .
+:a :b """a long
+ literal
+with
+newlines
diff --git a/tests/turtle/bad-15.ttl b/tests/turtle/bad-15.ttl
new file mode 100644
index 0000000..7c86fc7
--- /dev/null
+++ b/tests/turtle/bad-15.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://example.org/ns#> .
+[ :a :b ] .
diff --git a/tests/turtle/bad-16.ttl b/tests/turtle/bad-16.ttl
new file mode 100644
index 0000000..da438e4
--- /dev/null
+++ b/tests/turtle/bad-16.ttl
@@ -0,0 +1 @@
+( 1 2 3 ) .
diff --git a/tests/turtle/bad-17.ttl b/tests/turtle/bad-17.ttl
new file mode 100644
index 0000000..cdfcf54
--- /dev/null
+++ b/tests/turtle/bad-17.ttl
@@ -0,0 +1,3 @@
+# Bad '-quoted long literal
+@prefix : <http://example.org/ex#> .
+:a :b 'John said: "Hello World!"' .
diff --git a/tests/turtle/bad-18.ttl b/tests/turtle/bad-18.ttl
new file mode 100644
index 0000000..451fff9
--- /dev/null
+++ b/tests/turtle/bad-18.ttl
@@ -0,0 +1,3 @@
+# Bad '''-quoted long literal
+@prefix : <http://example.org/ex#> .
+:a :b '''John said: "Hello World!"''' .
diff --git a/tests/turtle/bad-19.ttl b/tests/turtle/bad-19.ttl
new file mode 100644
index 0000000..66e729b
--- /dev/null
+++ b/tests/turtle/bad-19.ttl
@@ -0,0 +1,3 @@
+# Bad () in predicate position
+@prefix : <http://example.org/ex#> .
+:a () :b .
diff --git a/tests/turtle/bad-20.ttl b/tests/turtle/bad-20.ttl
new file mode 100644
index 0000000..c5cfc79
--- /dev/null
+++ b/tests/turtle/bad-20.ttl
@@ -0,0 +1,3 @@
+# Escape end-of-file
+@prefix : <http://example.org/ex#> .
+:a :b """\ \ No newline at end of file
diff --git a/tests/turtle/bad-21.ttl b/tests/turtle/bad-21.ttl
new file mode 100644
index 0000000..5430fbf
--- /dev/null
+++ b/tests/turtle/bad-21.ttl
@@ -0,0 +1,2 @@
+# Turtle spec does not allow . in namespace prefix (token prefixName)
+@prefix foo.bar: <http://example.org/ex#> .
diff --git a/tests/turtle/bad-22.ttl b/tests/turtle/bad-22.ttl
new file mode 100644
index 0000000..1a23923
--- /dev/null
+++ b/tests/turtle/bad-22.ttl
@@ -0,0 +1,3 @@
+# Turtle spec does not allow . in namespace name (token name)
+@prefix ex: <http://example.org/ex#> .
+ex:not.allowed ex:not.allowed ex:not.allowed .
diff --git a/tests/turtle/bad-23.ttl b/tests/turtle/bad-23.ttl
new file mode 100644
index 0000000..864b4ff
--- /dev/null
+++ b/tests/turtle/bad-23.ttl
@@ -0,0 +1,7 @@
+# from Redland Issue #0000369
+# http://bugs.librdf.org/mantis/view.php?id=369
+# The terminating """ is three leftmost-parsed double-quotes
+
+<http://example.org>
+ <http://example.org/prop1>
+ """This literal ends with an unescaped quote"""" .
diff --git a/tests/turtle/ex-38-turtle.out b/tests/turtle/ex-38-turtle.out
new file mode 100644
index 0000000..35056c1
--- /dev/null
+++ b/tests/turtle/ex-38-turtle.out
@@ -0,0 +1,17 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix ex: <http://example.org/> .
+
+<http://example.org/ns#foo>
+ rdf:object _:genid1 ;
+ rdf:predicate ex:property ;
+ rdf:subject ex:resource ;
+ a rdf:Statement .
+
+ex:resource
+ ex:property _:genid1 .
+
+_:genid1
+ <http://www.daml.org/2001/03/daml+oil#first> ex:resource1 ;
+ <http://www.daml.org/2001/03/daml+oil#rest> <http://www.daml.org/2001/03/daml+oil#nil> ;
+ a <http://www.daml.org/2001/03/daml+oil#List> .
+
diff --git a/tests/turtle/ex-62.rdf b/tests/turtle/ex-62.rdf
new file mode 100644
index 0000000..98a26c3
--- /dev/null
+++ b/tests/turtle/ex-62.rdf
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<rdf:RDF
+ xmlns="http://example.org/dummy#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:owl="http://www.w3.org/2002/07/owl#"
+ xml:base="http://example.org/dummy">
+ <owl:Ontology rdf:about="">
+ </owl:Ontology>
+ <owl:Class rdf:ID="CLS1">
+ <owl:equivalentClass>
+ <owl:Class>
+ <owl:unionOf rdf:parseType="Collection">
+ <owl:Class rdf:about="#CLS2"/>
+ <owl:Class rdf:about="#CLS3"/>
+ </owl:unionOf>
+ </owl:Class>
+ </owl:equivalentClass>
+ </owl:Class>
+</rdf:RDF>
diff --git a/tests/turtle/manifest-bad.ttl b/tests/turtle/manifest-bad.ttl
new file mode 100644
index 0000000..387ffab
--- /dev/null
+++ b/tests/turtle/manifest-bad.ttl
@@ -0,0 +1,98 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix mf: <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#> .
+@prefix qt: <http://www.w3.org/2001/sw/DataAccess/tests/test-query#> .
+
+<> rdf:type mf:Manifest ;
+ rdfs:comment "Turtle bad syntax test cases (must fail)" ;
+ mf:entries
+ (
+
+ [ mf:name "bad-00" ;
+ rdfs:comment "prefix name must end in a :" ;
+ mf:action [ qt:data <bad-00.ttl> ] ;
+ ]
+
+ [ mf:name "bad-01" ;
+ rdfs:comment "blank predicate forbidden" ;
+ mf:action [ qt:data <bad-01.ttl> ] ;
+ ]
+
+ [ mf:name "bad-02" ;
+ rdfs:comment "blank predicate forbidden" ;
+ mf:action [ qt:data <bad-02.ttl> ] ;
+ ]
+
+ [ mf:name "bad-03" ;
+ rdfs:comment "a forbidden as subject" ;
+ mf:action [ qt:data <bad-03.ttl> ] ;
+ ]
+
+ [ mf:name "bad-04" ;
+ rdfs:comment ", not allowed in collections" ;
+ mf:action [ qt:data <bad-04.ttl> ] ;
+ ]
+
+ [ mf:name "bad-05" ;
+ rdfs:comment "{} not allowed in Turtle" ;
+ mf:action [ qt:data <bad-05.ttl> ] ;
+ ]
+
+ [ mf:name "bad-06" ;
+ rdfs:comment "is and of not allowed in Turtle" ;
+ mf:action [ qt:data <bad-06.ttl> ] ;
+ ]
+
+ [ mf:name "bad-07" ;
+ rdfs:comment "paths not allowed in Turtle" ;
+ mf:action [ qt:data <bad-07.ttl> ] ;
+ ]
+
+ [ mf:name "bad-08" ;
+ rdfs:comment "@keywords not allowed in Turtle" ;
+ mf:action [ qt:data <bad-08.ttl> ] ;
+ ]
+
+ [ mf:name "bad-09" ;
+ rdfs:comment "=> not allowed in Turtle" ;
+ mf:action [ qt:data <bad-09.ttl> ] ;
+ ]
+
+ [ mf:name "bad-10" ;
+ rdfs:comment "= not allowed in Turtle" ;
+ mf:action [ qt:data <bad-10.ttl> ] ;
+ ]
+
+ [ mf:name "bad-11" ;
+ rdfs:comment "@forAll not allowed in Turtle" ;
+ mf:action [ qt:data <bad-11.ttl> ] ;
+ ]
+
+ [ mf:name "bad-12" ;
+ rdfs:comment "@forSome not allowed in Turtle" ;
+ mf:action [ qt:data <bad-12.ttl> ] ;
+ ]
+
+ [ mf:name "bad-13" ;
+ rdfs:comment "<= not allowed in Turtle" ;
+ mf:action [ qt:data <bad-13.ttl> ] ;
+ ]
+
+ [ mf:name "bad-14" ;
+ rdfs:comment "long literal with missing end" ;
+ mf:action [ qt:data <bad-14.ttl> ] ;
+ ]
+
+ [ mf:name "bad-17" ;
+ rdfs:comment "literal with ''s" ;
+ mf:action [ qt:data <bad-17.ttl> ] ;
+ ]
+
+ [ mf:name "bad-18" ;
+ rdfs:comment "long literal with '''s" ;
+ mf:action [ qt:data <bad-18.ttl> ] ;
+ ]
+
+
+ # End of tests
+ ).
diff --git a/tests/turtle/manifest.ttl b/tests/turtle/manifest.ttl
new file mode 100644
index 0000000..6a2cae2
--- /dev/null
+++ b/tests/turtle/manifest.ttl
@@ -0,0 +1,215 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix mf: <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#> .
+@prefix qt: <http://www.w3.org/2001/sw/DataAccess/tests/test-query#> .
+
+<> rdf:type mf:Manifest ;
+ rdfs:comment "Turtle good syntax test cases (must pass)" ;
+ mf:entries
+ (
+ [ mf:name "test-00" ;
+ rdfs:comment "Blank subject" ;
+ mf:action [ qt:data <test-00.ttl> ] ;
+ mf:result <test-00.out>
+ ]
+
+ [ mf:name "test-01" ;
+ rdfs:comment "@prefix and qnames" ;
+ mf:action [ qt:data <test-01.ttl> ] ;
+ mf:result <test-01.out>
+ ]
+
+ [ mf:name "test-02" ;
+ rdfs:comment ", operator" ;
+ mf:action [ qt:data <test-02.ttl> ] ;
+ mf:result <test-02.out>
+ ]
+
+ [ mf:name "test-03" ;
+ rdfs:comment "; operator" ;
+ mf:action [ qt:data <test-03.ttl> ] ;
+ mf:result <test-03.out>
+ ]
+
+ [ mf:name "test-04" ;
+ rdfs:comment "empty [] as subject and object" ;
+ mf:action [ qt:data <test-04.ttl> ] ;
+ mf:result <test-04.out>
+ ]
+
+ [ mf:name "test-05" ;
+ rdfs:comment "non-empty [] as subject and object" ;
+ mf:action [ qt:data <test-05.ttl> ] ;
+ mf:result <test-05.out>
+ ]
+
+ [ mf:name "test-06" ;
+ rdfs:comment "'a' as predicate" ;
+ mf:action [ qt:data <test-06.ttl> ] ;
+ mf:result <test-06.out>
+ ]
+
+ [ mf:name "test-07" ;
+ rdfs:comment "simple collection" ;
+ mf:action [ qt:data <test-07.ttl> ] ;
+ mf:result <test-07.out>
+ ]
+
+ [ mf:name "test-08" ;
+ rdfs:comment "empty collection" ;
+ mf:action [ qt:data <test-08.ttl> ] ;
+ mf:result <test-08.out>
+ ]
+
+ [ mf:name "test-09" ;
+ rdfs:comment "integer datatyped literal" ;
+ mf:action [ qt:data <test-09.ttl> ] ;
+ mf:result <test-09.out>
+ ]
+
+ [ mf:name "test-10" ;
+ rdfs:comment "decimal integer canonicalization" ;
+ mf:action [ qt:data <test-10.ttl> ] ;
+ mf:result <test-10.out>
+ ]
+
+ [ mf:name "test-11" ;
+ rdfs:comment "- and _ in names and qnames" ;
+ mf:action [ qt:data <test-11.ttl> ] ;
+ mf:result <test-11.out>
+ ]
+
+ [ mf:name "test-12" ;
+ rdfs:comment "tests for rdf:_<numbers> and other qnames starting with _" ;
+ mf:action [ qt:data <test-12.ttl> ] ;
+ mf:result <test-12.out>
+ ]
+
+ [ mf:name "test-13" ;
+ rdfs:comment "bare : allowed" ;
+ mf:action [ qt:data <test-13.ttl> ] ;
+ mf:result <test-13.out>
+ ]
+
+ [ mf:name "test-14" ;
+ rdfs:comment "10000 triples, more than the default Bison stack size" ;
+ mf:action [ qt:data <test-14.ttl> ] ;
+ mf:result <test-14.out>
+ ]
+
+ [ mf:name "test-15" ;
+ rdfs:comment "10000 triple objects (10000 triples)" ;
+ mf:action [ qt:data <test-15.ttl> ] ;
+ mf:result <test-15.out>
+ ]
+
+ [ mf:name "test-16" ;
+ rdfs:comment "10000 items (10000 triples)" ;
+ mf:action [ qt:data <test-16.ttl> ] ;
+ mf:result <test-16.out>
+ ]
+
+ [ mf:name "test-17" ;
+ rdfs:comment "simple long literal" ;
+ mf:action [ qt:data <test-17.ttl> ] ;
+ mf:result <test-17.out>
+ ]
+
+ [ mf:name "test-18" ;
+ rdfs:comment "long literals with escapes" ;
+ mf:action [ qt:data <test-18.ttl> ] ;
+ mf:result <test-18.out>
+ ]
+
+ [ mf:name "test-19" ;
+ rdfs:comment "floating point number" ;
+ mf:action [ qt:data <test-19.ttl> ] ;
+ mf:result <test-19.out>
+ ]
+
+ [ mf:name "test-20" ;
+ rdfs:comment "empty literals, normal and long variant" ;
+ mf:action [ qt:data <test-20.ttl> ] ;
+ mf:result <test-20.out>
+ ]
+
+ [ mf:name "test-21" ;
+ rdfs:comment "positive integer, decimal and doubles" ;
+ mf:action [ qt:data <test-21.ttl> ] ;
+ mf:result <test-21.out>
+ ]
+
+ [ mf:name "test-22" ;
+ rdfs:comment "negative integer, decimal and doubles" ;
+ mf:action [ qt:data <test-22.ttl> ] ;
+ mf:result <test-22.out>
+ ]
+
+ [ mf:name "test-23" ;
+ rdfs:comment "long literal ending in double quote" ;
+ mf:action [ qt:data <test-23.ttl> ] ;
+ mf:result <test-23.out>
+ ]
+
+ [ mf:name "test-24" ;
+ rdfs:comment "boolean literals" ;
+ mf:action [ qt:data <test-24.ttl> ] ;
+ mf:result <test-24.out>
+ ]
+
+ [ mf:name "test-25" ;
+ rdfs:comment "comments" ;
+ mf:action [ qt:data <test-25.ttl> ] ;
+ mf:result <test-25.out>
+ ]
+
+ [ mf:name "test-26" ;
+ rdfs:comment "no final mewline" ;
+ mf:action [ qt:data <test-26.ttl> ] ;
+ mf:result <test-26.out>
+ ]
+
+ [ mf:name "test-27" ;
+ rdfs:comment "duplicate prefix" ;
+ mf:action [ qt:data <test-27.ttl> ] ;
+ mf:result <test-27.out>
+ ]
+
+ [ mf:name "test-28" ;
+ rdfs:comment "decimal data types (serializing test)" ;
+ mf:action [ qt:data <test-28.ttl> ] ;
+ mf:result <test-28.out>
+ ]
+
+ [ mf:name "test-29" ;
+ rdfs:comment "Escaping U+0001 to U+007F in a URI" ;
+ mf:action [ qt:data <test-29.ttl> ] ;
+ mf:result <test-29.out>
+ ]
+
+ [ mf:name "test-30" ;
+ rdfs:comment "@base" ;
+ mf:action [ qt:data <test-30.ttl> ] ;
+ mf:result <test-30.out>
+ ]
+
+ [ mf:name "rdf-schema" ;
+ rdfs:comment "RDF Namespace document converted into Turtle" ;
+ mf:action [ qt:data <rdf-schema.ttl> ] ;
+ mf:result <rdf-schema.out>
+ ]
+
+ [ mf:name "rdfs-namespace" ;
+ rdfs:comment "RDFS Namespace document converted into Turtle" ;
+ mf:action [ qt:data <rdfs-namespace.ttl> ] ;
+ mf:result <rdfs-namespace.out>
+ ]
+
+ [ mf:name "rdfq-results" ;
+ rdfs:comment "Example query result from http://www.w3.org/2003/03/rdfqr-tests/recording-query-results.html" ;
+ mf:action [ qt:data <rdfq-results.ttl> ] ;
+ mf:result <rdfq-results.out>
+ ]
+
+ # End of tests
+ ).
diff --git a/tests/turtle/rdf-schema.out b/tests/turtle/rdf-schema.out
new file mode 100644
index 0000000..ea0e6cb
--- /dev/null
+++ b/tests/turtle/rdf-schema.out
@@ -0,0 +1,124 @@
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates membership of a class" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#label> "type"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#label> "type"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#comment> "The concept of Class" .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#label> "Class"@en .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#label> "Classe"@fr .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#comment> "Properties used to express RDF Schema constraints." .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#label> "ConstraintProperty"@en .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#label> "Propri\u00E9t\u00E9Contrainte"@fr .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#ConstraintResource> .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/2000/01/rdf-schema#comment> "Resources used to express RDF Schema constraints." .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/2000/01/rdf-schema#label> "ConstraintResource"@en .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/2000/01/rdf-schema#label> "RessourceContrainte"@fr .
+<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set Containers." .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#label> "Container"@en .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#label> "Enveloppe"@fr .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#label> "ContainerMembershipProperty"@en .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set of atomic values, eg. textual strings." .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#label> "Literal"@en .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#label> "Litt\u00E9ral"@fr .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#comment> "The most general class" .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#label> "Resource"@en .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#label> "Ressource"@fr .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#comment> "Use this for descriptions" .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#label> "comment"@en .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#label> "commentaire"@fr .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Literal> .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#comment> "This is how we associate a class with properties that its instances can have" .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#label> "domain"@en .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#label> "domaine"@fr .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates a resource containing and defining the subject resource." .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#label> "esD\u00E9finiPar"@fr .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#label> "isDefinedBy"@en .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#seeAlso> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#comment> "Provides a human-readable version of a resource name." .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#label> "label"@en .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#label> "label"@fr .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Literal> .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#comment> "Properties that can be used in a schema to provide constraints" .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#label> "range"@en .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#label> "\u00E9tendue"@fr .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates a resource that provides information about the subject resource." .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#label> "seeAlso"@en .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#label> "voirAussi"@fr .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates membership of a class" .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#label> "sousClasseDe"@fr .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#label> "subClassOf"@en .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates specialization of properties" .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#label> "sousPropri\u00E9t\u00E9De"@fr .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#label> "subPropertyOf"@en .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#label> "Alt"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#label> "Choix"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#label> "Bag"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#label> "Ensemble"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#comment> "The concept of a property." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#label> "Property"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#label> "Propri\u00E9t\u00E9"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#label> "Sequence"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#label> "S\u00E9quence"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set of reified statements." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#label> "D\u00E9claration"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#label> "Statement"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#label> "object"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#label> "objet"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#label> "predicate"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#label> "pr\u00E9dicat"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#label> "subject"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#label> "sujet"@fr .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#label> "object"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#label> "value"@fr .
+<http://www.w3.org/2000/01/rdf-schema#> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema-more> .
diff --git a/tests/turtle/rdf-schema.ttl b/tests/turtle/rdf-schema.ttl
new file mode 100644
index 0000000..0f1fd89
--- /dev/null
+++ b/tests/turtle/rdf-schema.ttl
@@ -0,0 +1,154 @@
+# RDF Namespace document converted into Turtle
+
+@prefix : <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+
+rdf:type a rdf:Property;
+ :comment "Indicates membership of a class";
+ :label "type"@en,
+ "type"@fr;
+ :range :Class .
+
+:Class a :Class;
+ :comment "The concept of Class";
+ :label "Class"@en,
+ "Classe"@fr;
+ :subClassOf :Resource .
+
+:ConstraintProperty a :Class;
+ :comment "Properties used to express RDF Schema constraints.";
+ :label "ConstraintProperty"@en,
+ "Propri\u00E9t\u00E9Contrainte"@fr;
+ :subClassOf :ConstraintResource,
+ rdf:Property .
+
+:ConstraintResource a :Class;
+ :comment "Resources used to express RDF Schema constraints.";
+ :label "ConstraintResource"@en,
+ "RessourceContrainte"@fr;
+ :subClassOf :Resource .
+
+:Container a :Class;
+ :comment "This represents the set Containers.";
+ :label "Container"@en,
+ "Enveloppe"@fr;
+ :subClassOf :Resource .
+
+:ContainerMembershipProperty a :Class;
+ :label "ContainerMembershipProperty"@en;
+ :subClassOf rdf:Property .
+
+:Literal a :Class;
+ :comment "This represents the set of atomic values, eg. textual strings.";
+ :label "Literal"@en,
+ "Litt\u00E9ral"@fr .
+
+:Resource a :Class;
+ :comment "The most general class";
+ :label "Resource"@en,
+ "Ressource"@fr .
+
+:comment a rdf:Property;
+ :comment "Use this for descriptions";
+ :domain :Resource;
+ :label "comment"@en,
+ "commentaire"@fr;
+ :range :Literal .
+
+:domain a :ConstraintProperty;
+ :comment "This is how we associate a class with properties that its instances can have";
+ :label "domain"@en,
+ "domaine"@fr .
+
+:isDefinedBy a rdf:Property;
+ :comment "Indicates a resource containing and defining the subject resource.";
+ :domain :Resource;
+ :label "esD\u00E9finiPar"@fr,
+ "isDefinedBy"@en;
+ :range :Resource;
+ :subPropertyOf :seeAlso .
+
+:label a rdf:Property;
+ :comment "Provides a human-readable version of a resource name.";
+ :domain :Resource;
+ :label "label"@en,
+ "label"@fr;
+ :range :Literal .
+
+:range a :ConstraintProperty;
+ :comment "Properties that can be used in a schema to provide constraints";
+ :domain rdf:Property;
+ :label "range"@en,
+ "\u00E9tendue"@fr;
+ :range :Class .
+
+:seeAlso a rdf:Property;
+ :comment "Indicates a resource that provides information about the subject resource.";
+ :domain :Resource;
+ :label "seeAlso"@en,
+ "voirAussi"@fr;
+ :range :Resource .
+
+:subClassOf a rdf:Property;
+ :comment "Indicates membership of a class";
+ :domain :Class;
+ :label "sousClasseDe"@fr,
+ "subClassOf"@en;
+ :range :Class .
+
+:subPropertyOf a rdf:Property;
+ :comment "Indicates specialization of properties";
+ :domain rdf:Property;
+ :label "sousPropri\u00E9t\u00E9De"@fr,
+ "subPropertyOf"@en;
+ :range rdf:Property .
+
+rdf:Alt a :Class;
+ :label "Alt"@en,
+ "Choix"@fr;
+ :subClassOf :Container .
+
+rdf:Bag a :Class;
+ :label "Bag"@en,
+ "Ensemble"@fr;
+ :subClassOf :Container .
+
+rdf:Property a :Class;
+ :comment "The concept of a property.";
+ :label "Property"@en,
+ "Propri\u00E9t\u00E9"@fr;
+ :subClassOf :Resource .
+
+rdf:Seq a :Class;
+ :label "Sequence"@en,
+ "S\u00E9quence"@fr;
+ :subClassOf :Container .
+
+rdf:Statement a :Class;
+ :comment "This represents the set of reified statements.";
+ :label "D\u00E9claration"@fr,
+ "Statement"@en;
+ :subClassOf :Resource .
+
+rdf:object a rdf:Property;
+ :domain rdf:Statement;
+ :label "object"@en,
+ "objet"@fr .
+
+rdf:predicate a rdf:Property;
+ :domain rdf:Statement;
+ :label "predicate"@en,
+ "pr\u00E9dicat"@fr;
+ :range rdf:Property .
+
+rdf:subject a rdf:Property;
+ :domain rdf:Statement;
+ :label "subject"@en,
+ "sujet"@fr;
+ :range :Resource .
+
+rdf:value a rdf:Property;
+ :label "object"@en,
+ "value"@fr .
+
+: :seeAlso <http://www.w3.org/2000/01/rdf-schema-more> .
diff --git a/tests/turtle/rdfq-results.out b/tests/turtle/rdfq-results.out
new file mode 100644
index 0000000..fb25429
--- /dev/null
+++ b/tests/turtle/rdfq-results.out
@@ -0,0 +1,36 @@
+_:genid1 <http://jena.hpl.hp.com/2003/03/result-set#variable> "x" .
+_:genid1 <http://jena.hpl.hp.com/2003/03/result-set#value> "123"^^<http://www.w3.org/2001/XMLSchema#integer> .
+_:genid2 <http://jena.hpl.hp.com/2003/03/result-set#variable> "y" .
+_:genid2 <http://jena.hpl.hp.com/2003/03/result-set#value> <http://example.com/resource1> .
+_:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://jena.hpl.hp.com/2003/03/result-set#ResultSolution> .
+_:genid3 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid1 .
+_:genid3 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid2 .
+_:genid4 <http://jena.hpl.hp.com/2003/03/result-set#variable> "x" .
+_:genid4 <http://jena.hpl.hp.com/2003/03/result-set#value> "2003-01-21" .
+_:genid5 <http://jena.hpl.hp.com/2003/03/result-set#variable> "y" .
+_:genid5 <http://jena.hpl.hp.com/2003/03/result-set#value> <http://example.com/resource2> .
+_:genid6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://jena.hpl.hp.com/2003/03/result-set#ResultSolution> .
+_:genid6 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid4 .
+_:genid6 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid5 .
+_:genid7 <http://jena.hpl.hp.com/2003/03/result-set#variable> "x" .
+_:genid7 <http://jena.hpl.hp.com/2003/03/result-set#value> "anon1" .
+_:genid8 <http://jena.hpl.hp.com/2003/03/result-set#variable> "y" .
+_:genid8 <http://jena.hpl.hp.com/2003/03/result-set#value> _:a .
+_:genid9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://jena.hpl.hp.com/2003/03/result-set#ResultSolution> .
+_:genid9 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid7 .
+_:genid9 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid8 .
+_:genid10 <http://jena.hpl.hp.com/2003/03/result-set#variable> "x" .
+_:genid10 <http://jena.hpl.hp.com/2003/03/result-set#value> "anon2" .
+_:genid11 <http://jena.hpl.hp.com/2003/03/result-set#variable> "y" .
+_:genid11 <http://jena.hpl.hp.com/2003/03/result-set#value> _:a .
+_:genid12 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://jena.hpl.hp.com/2003/03/result-set#ResultSolution> .
+_:genid12 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid10 .
+_:genid12 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid11 .
+<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://jena.hpl.hp.com/2003/03/result-set#ResultSet> .
+<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#size> "4"^^<http://www.w3.org/2001/XMLSchema#integer> .
+<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#resultVariable> "x" .
+<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#resultVariable> "y" .
+<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#solution> _:genid3 .
+<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#solution> _:genid6 .
+<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#solution> _:genid9 .
+<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#solution> _:genid12 .
diff --git a/tests/turtle/rdfq-results.ttl b/tests/turtle/rdfq-results.ttl
new file mode 100644
index 0000000..c6e72aa
--- /dev/null
+++ b/tests/turtle/rdfq-results.ttl
@@ -0,0 +1,39 @@
+# from http://www.w3.org/2003/03/rdfqr-tests/recording-query-results.html
+
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rs: <http://jena.hpl.hp.com/2003/03/result-set#> .
+
+
+<> rdf:type rs:ResultSet ;
+ rs:size 4 ;
+ rs:resultVariable "x" ; rs:resultVariable "y" ;
+ rs:solution
+ [ rdf:type rs:ResultSolution ;
+ rs:binding [ rs:variable "x" ; rs:value 123 ] ;
+ rs:binding [ rs:variable "y" ; rs:value <http://example.com/resource1> ]
+ ] ;
+
+ rs:solution
+ [ rdf:type rs:ResultSolution ;
+ rs:binding [ rs:variable "x" ;
+ rs:value "2003-01-21" ] ;
+ rs:binding [ rs:variable "y" ;
+ rs:value <http://example.com/resource2> ]
+ ] ;
+
+ rs:solution
+ [ rdf:type rs:ResultSolution ;
+ rs:binding [ rs:variable "x" ;
+ rs:value "anon1" ] ;
+ rs:binding [ rs:variable "y" ;
+ rs:value _:a ]
+ ] ;
+
+ rs:solution
+ [ rdf:type rs:ResultSolution ;
+ rs:binding [ rs:variable "x" ;
+ rs:value "anon2" ] ;
+ rs:binding [ rs:variable "y" ;
+ rs:value _:a ]
+ ] ;
+ .
diff --git a/tests/turtle/rdfs-namespace.out b/tests/turtle/rdfs-namespace.out
new file mode 100644
index 0000000..4696f8c
--- /dev/null
+++ b/tests/turtle/rdfs-namespace.out
@@ -0,0 +1,131 @@
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates membership of a class" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#label> "type"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#comment> "A collection of alternatives."@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#label> "Alt"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#comment> "An unordered collection."@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#label> "Bag"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#comment> "The concept of a property." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#label> "Property"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#comment> "An ordered collection."@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#label> "Seq"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#comment> "The class of RDF statements." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#label> "Statement"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#comment> "The object of an RDF statement." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#label> "object"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#comment> "the predicate of an RDF statement." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#label> "predicate"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#comment> "The subject of an RDF statement." .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#label> "subject"@en .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#comment> "Identifies the principal value (usually a string) of a property when the property value is a structured resource" .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#label> "value"@en .
+<http://www.w3.org/2000/01/rdf-schema#> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema-more> .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#comment> "The concept of Class" .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#label> "Class"@en .
+<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set Containers." .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#label> "Container"@en .
+<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#comment> "The container membership properties, rdf:1, rdf:2, ..., all of which are sub-properties of 'member'." .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#label> "ContainerMembershipProperty"@en .
+<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set of atomic values, eg. textual strings." .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#label> "Literal"@en .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#comment> "The class resource, everything." .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#label> "Resource"@en .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#comment> "Use this for descriptions" .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#label> "comment"@en .
+<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Literal> .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#comment> "A domain class for a property type" .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#label> "domain"@en .
+<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates the namespace of a resource" .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#label> "isDefinedBy"@en .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#seeAlso> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#comment> "Provides a human-readable version of a resource name." .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#label> "label"@en .
+<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Literal> .
+<http://www.w3.org/2000/01/rdf-schema#member> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#member> <http://www.w3.org/2000/01/rdf-schema#comment> "a member of a container" .
+<http://www.w3.org/2000/01/rdf-schema#member> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Container> .
+<http://www.w3.org/2000/01/rdf-schema#member> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#member> <http://www.w3.org/2000/01/rdf-schema#label> "member"@en .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#comment> "A range class for a property type" .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#label> "range"@en .
+<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#comment> "A resource that provides information about the subject resource" .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#label> "seeAlso"@en .
+<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates membership of a class" .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#label> "subClassOf"@en .
+<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates specialization of properties" .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#> .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#label> "subPropertyOf"@en .
+<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
diff --git a/tests/turtle/rdfs-namespace.ttl b/tests/turtle/rdfs-namespace.ttl
new file mode 100644
index 0000000..0d73e6b
--- /dev/null
+++ b/tests/turtle/rdfs-namespace.ttl
@@ -0,0 +1,160 @@
+# RDFS Namespace document converted into Turtle
+
+@prefix : <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+
+rdf:type a rdf:Property;
+ :comment "Indicates membership of a class";
+ :domain :Resource;
+ :isDefinedBy rdf:;
+ :label "type"@en;
+ :range :Class .
+
+rdf:Alt a :Class;
+ :comment "A collection of alternatives."@en;
+ :isDefinedBy rdf:;
+ :label "Alt"@en;
+ :subClassOf :Container .
+
+rdf:Bag a :Class;
+ :comment "An unordered collection."@en;
+ :isDefinedBy rdf:;
+ :label "Bag"@en;
+ :subClassOf :Container .
+
+rdf:Property a :Class;
+ :comment "The concept of a property.";
+ :isDefinedBy rdf:;
+ :label "Property"@en;
+ :subClassOf :Resource .
+
+rdf:Seq a :Class;
+ :comment "An ordered collection."@en;
+ :isDefinedBy rdf:;
+ :label "Seq"@en;
+ :subClassOf :Container .
+
+rdf:Statement a :Class;
+ :comment "The class of RDF statements.";
+ :isDefinedBy rdf:;
+ :label "Statement"@en;
+ :subClassOf :Resource .
+
+rdf:object a rdf:Property;
+ :comment "The object of an RDF statement.";
+ :domain rdf:Statement;
+ :isDefinedBy rdf:;
+ :label "object"@en .
+
+rdf:predicate a rdf:Property;
+ :comment "the predicate of an RDF statement.";
+ :domain rdf:Statement;
+ :isDefinedBy rdf:;
+ :label "predicate"@en;
+ :range rdf:Property .
+
+rdf:subject a rdf:Property;
+ :comment "The subject of an RDF statement.";
+ :domain rdf:Statement;
+ :isDefinedBy rdf:;
+ :label "subject"@en;
+ :range :Resource .
+
+rdf:value a rdf:Property;
+ :comment "Identifies the principal value (usually a string) of a property when the property value is a structured resource";
+ :domain :Resource;
+ :isDefinedBy rdf:;
+ :label "value"@en .
+
+: :seeAlso <http://www.w3.org/2000/01/rdf-schema-more> .
+
+:Class a :Class;
+ :comment "The concept of Class";
+ :isDefinedBy :;
+ :label "Class"@en;
+ :subClassOf :Resource .
+
+:Container a :Class;
+ :comment "This represents the set Containers.";
+ :isDefinedBy :;
+ :label "Container"@en;
+ :subClassOf :Resource .
+
+:ContainerMembershipProperty a :Class;
+ :comment "The container membership properties, rdf:1, rdf:2, ..., all of which are sub-properties of 'member'.";
+ :isDefinedBy :;
+ :label "ContainerMembershipProperty"@en;
+ :subClassOf rdf:Property .
+
+:Literal a :Class;
+ :comment "This represents the set of atomic values, eg. textual strings.";
+ :isDefinedBy :;
+ :label "Literal"@en .
+
+:Resource a :Class;
+ :comment "The class resource, everything.";
+ :isDefinedBy :;
+ :label "Resource"@en .
+
+:comment a rdf:Property;
+ :comment "Use this for descriptions";
+ :domain :Resource;
+ :isDefinedBy :;
+ :label "comment"@en;
+ :range :Literal .
+
+:domain a rdf:Property;
+ :comment "A domain class for a property type";
+ :domain rdf:Property;
+ :isDefinedBy :;
+ :label "domain"@en;
+ :range :Class .
+
+:isDefinedBy a rdf:Property;
+ :comment "Indicates the namespace of a resource";
+ :domain :Resource;
+ :isDefinedBy :;
+ :label "isDefinedBy"@en;
+ :range :Resource;
+ :subPropertyOf :seeAlso .
+
+:label a rdf:Property;
+ :comment "Provides a human-readable version of a resource name.";
+ :domain :Resource;
+ :isDefinedBy :;
+ :label "label"@en;
+ :range :Literal .
+
+:member a rdf:Property;
+ :comment "a member of a container";
+ :domain :Container;
+ :isDefinedBy :;
+ :label "member"@en .
+
+:range a rdf:Property;
+ :comment "A range class for a property type";
+ :domain rdf:Property;
+ :isDefinedBy :;
+ :label "range"@en;
+ :range :Class .
+
+:seeAlso a rdf:Property;
+ :comment "A resource that provides information about the subject resource";
+ :domain :Resource;
+ :isDefinedBy :;
+ :label "seeAlso"@en;
+ :range :Resource .
+
+:subClassOf a rdf:Property;
+ :comment "Indicates membership of a class";
+ :domain :Class;
+ :isDefinedBy :;
+ :label "subClassOf"@en;
+ :range :Class .
+
+:subPropertyOf a rdf:Property;
+ :comment "Indicates specialization of properties";
+ :domain rdf:Property;
+ :isDefinedBy :;
+ :label "subPropertyOf"@en;
+ :range rdf:Property .
diff --git a/tests/turtle/test-00.out b/tests/turtle/test-00.out
new file mode 100644
index 0000000..7f8b717
--- /dev/null
+++ b/tests/turtle/test-00.out
@@ -0,0 +1 @@
+_:genid1 <http://www.w3.org/2001/sw/DataAccess/df1/tests/test-00.ttl#x> <http://www.w3.org/2001/sw/DataAccess/df1/tests/test-00.ttl#y> .
diff --git a/tests/turtle/test-00.ttl b/tests/turtle/test-00.ttl
new file mode 100644
index 0000000..78da35e
--- /dev/null
+++ b/tests/turtle/test-00.ttl
@@ -0,0 +1,2 @@
+@prefix : <#> .
+[] :x :y .
diff --git a/tests/turtle/test-01.out b/tests/turtle/test-01.out
new file mode 100644
index 0000000..5ccb5bd
--- /dev/null
+++ b/tests/turtle/test-01.out
@@ -0,0 +1,3 @@
+<http://example.org/base1#a> <http://example.org/base1#b> <http://example.org/base1#c> .
+<http://example.org/base2#a> <http://example.org/base2#b> <http://example.org/base2#c> .
+<http://example.org/base1#a> <http://example.org/base2#a> <http://example.org/base3#a> .
diff --git a/tests/turtle/test-01.ttl b/tests/turtle/test-01.ttl
new file mode 100644
index 0000000..9070d2c
--- /dev/null
+++ b/tests/turtle/test-01.ttl
@@ -0,0 +1,7 @@
+# Test @prefix and qnames
+@prefix : <http://example.org/base1#> .
+@prefix a: <http://example.org/base2#> .
+@prefix b: <http://example.org/base3#> .
+:a :b :c .
+a:a a:b a:c .
+:a a:a b:a .
diff --git a/tests/turtle/test-02.out b/tests/turtle/test-02.out
new file mode 100644
index 0000000..99732ab
--- /dev/null
+++ b/tests/turtle/test-02.out
@@ -0,0 +1,3 @@
+<http://example.org/base#a> <http://example.org/base#b> <http://example.org/base#c> .
+<http://example.org/base#a> <http://example.org/base#b> <http://example.org/base#d> .
+<http://example.org/base#a> <http://example.org/base#b> <http://example.org/base#e> .
diff --git a/tests/turtle/test-02.ttl b/tests/turtle/test-02.ttl
new file mode 100644
index 0000000..a623f3c
--- /dev/null
+++ b/tests/turtle/test-02.ttl
@@ -0,0 +1,5 @@
+# Test , operator
+@prefix : <http://example.org/base#> .
+:a :b :c,
+ :d,
+ :e .
diff --git a/tests/turtle/test-03.out b/tests/turtle/test-03.out
new file mode 100644
index 0000000..d6ce9e8
--- /dev/null
+++ b/tests/turtle/test-03.out
@@ -0,0 +1,3 @@
+<http://example.org/base#a> <http://example.org/base#b> <http://example.org/base#c> .
+<http://example.org/base#a> <http://example.org/base#d> <http://example.org/base#e> .
+<http://example.org/base#a> <http://example.org/base#f> <http://example.org/base#g> .
diff --git a/tests/turtle/test-03.ttl b/tests/turtle/test-03.ttl
new file mode 100644
index 0000000..9179fa5
--- /dev/null
+++ b/tests/turtle/test-03.ttl
@@ -0,0 +1,5 @@
+# Test ; operator
+@prefix : <http://example.org/base#> .
+:a :b :c ;
+ :d :e ;
+ :f :g .
diff --git a/tests/turtle/test-04.out b/tests/turtle/test-04.out
new file mode 100644
index 0000000..414e4b8
--- /dev/null
+++ b/tests/turtle/test-04.out
@@ -0,0 +1,2 @@
+_:genid1 <http://example.org/base#a> <http://example.org/base#b> .
+<http://example.org/base#c> <http://example.org/base#d> _:genid2 .
diff --git a/tests/turtle/test-04.ttl b/tests/turtle/test-04.ttl
new file mode 100644
index 0000000..c518147
--- /dev/null
+++ b/tests/turtle/test-04.ttl
@@ -0,0 +1,4 @@
+# Test empty [] operator; not allowed as predicate
+@prefix : <http://example.org/base#> .
+[] :a :b .
+:c :d [] .
diff --git a/tests/turtle/test-05.out b/tests/turtle/test-05.out
new file mode 100644
index 0000000..6925d40
--- /dev/null
+++ b/tests/turtle/test-05.out
@@ -0,0 +1,4 @@
+_:genid1 <http://example.org/base#a> <http://example.org/base#b> .
+_:genid1 <http://example.org/base#c> <http://example.org/base#d> .
+_:genid2 <http://example.org/base#g> <http://example.org/base#h> .
+<http://example.org/base#e> <http://example.org/base#f> _:genid2 .
diff --git a/tests/turtle/test-05.ttl b/tests/turtle/test-05.ttl
new file mode 100644
index 0000000..adcbcab
--- /dev/null
+++ b/tests/turtle/test-05.ttl
@@ -0,0 +1,4 @@
+# Test non empty [] operator; not allowed as predicate
+@prefix : <http://example.org/base#> .
+[ :a :b ] :c :d .
+:e :f [ :g :h ] .
diff --git a/tests/turtle/test-06.out b/tests/turtle/test-06.out
new file mode 100644
index 0000000..49961ea
--- /dev/null
+++ b/tests/turtle/test-06.out
@@ -0,0 +1 @@
+<http://example.org/base#a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/base#b> .
diff --git a/tests/turtle/test-06.ttl b/tests/turtle/test-06.ttl
new file mode 100644
index 0000000..9c1005c
--- /dev/null
+++ b/tests/turtle/test-06.ttl
@@ -0,0 +1,3 @@
+# 'a' only allowed as a predicate
+@prefix : <http://example.org/base#> .
+:a a :b .
diff --git a/tests/turtle/test-07.out b/tests/turtle/test-07.out
new file mode 100644
index 0000000..7ab6806
--- /dev/null
+++ b/tests/turtle/test-07.out
@@ -0,0 +1,5 @@
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "banana" .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "apple" .
+_:genid2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:genid1 .
+<http://example.org/stuff/1.0/a> <http://example.org/stuff/1.0/b> _:genid2 .
diff --git a/tests/turtle/test-07.ttl b/tests/turtle/test-07.ttl
new file mode 100644
index 0000000..8455940
--- /dev/null
+++ b/tests/turtle/test-07.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://example.org/stuff/1.0/> .
+:a :b ( "apple" "banana" ) .
+
diff --git a/tests/turtle/test-08.out b/tests/turtle/test-08.out
new file mode 100644
index 0000000..a77939c
--- /dev/null
+++ b/tests/turtle/test-08.out
@@ -0,0 +1 @@
+<http://example.org/stuff/1.0/a> <http://example.org/stuff/1.0/b> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
diff --git a/tests/turtle/test-08.ttl b/tests/turtle/test-08.ttl
new file mode 100644
index 0000000..adce0a2
--- /dev/null
+++ b/tests/turtle/test-08.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://example.org/stuff/1.0/> .
+:a :b ( ) .
+
diff --git a/tests/turtle/test-09.out b/tests/turtle/test-09.out
new file mode 100644
index 0000000..5fdb909
--- /dev/null
+++ b/tests/turtle/test-09.out
@@ -0,0 +1,4 @@
+_:hasParent <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:genid1 <http://www.w3.org/2002/07/owl#onProperty> _:hasParent .
+_:genid1 <http://www.w3.org/2002/07/owl#maxCardinality> "2"^^<http://www.w3.org/2001/XMLSchema#integer> .
diff --git a/tests/turtle/test-09.ttl b/tests/turtle/test-09.ttl
new file mode 100644
index 0000000..0afe1b0
--- /dev/null
+++ b/tests/turtle/test-09.ttl
@@ -0,0 +1,10 @@
+# Test integer datatyped literals using an OWL cardinality constraint
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+
+# based on examples in the OWL Reference
+
+_:hasParent a owl:ObjectProperty .
+
+[] a owl:Restriction ;
+ owl:onProperty _:hasParent ;
+ owl:maxCardinality 2 .
diff --git a/tests/turtle/test-10.out b/tests/turtle/test-10.out
new file mode 100644
index 0000000..ff88aa6
--- /dev/null
+++ b/tests/turtle/test-10.out
@@ -0,0 +1,5 @@
+<http://example.org/res1> <http://example.org/prop1> "000000"^^<http://www.w3.org/2001/XMLSchema#integer> .
+<http://example.org/res2> <http://example.org/prop2> "0"^^<http://www.w3.org/2001/XMLSchema#integer> .
+<http://example.org/res3> <http://example.org/prop3> "000001"^^<http://www.w3.org/2001/XMLSchema#integer> .
+<http://example.org/res4> <http://example.org/prop4> "2"^^<http://www.w3.org/2001/XMLSchema#integer> .
+<http://example.org/res5> <http://example.org/prop5> "4"^^<http://www.w3.org/2001/XMLSchema#integer> .
diff --git a/tests/turtle/test-10.ttl b/tests/turtle/test-10.ttl
new file mode 100644
index 0000000..5d36360
--- /dev/null
+++ b/tests/turtle/test-10.ttl
@@ -0,0 +1,5 @@
+<http://example.org/res1> <http://example.org/prop1> 000000 .
+<http://example.org/res2> <http://example.org/prop2> 0 .
+<http://example.org/res3> <http://example.org/prop3> 000001 .
+<http://example.org/res4> <http://example.org/prop4> 2 .
+<http://example.org/res5> <http://example.org/prop5> 4 .
diff --git a/tests/turtle/test-11.out b/tests/turtle/test-11.out
new file mode 100644
index 0000000..f936a5b
--- /dev/null
+++ b/tests/turtle/test-11.out
@@ -0,0 +1,4 @@
+<http://example.org/ex1#foo-bar> <http://example.org/ex1#foo_bar> "a" .
+<http://example.org/ex2#foo-bar> <http://example.org/ex2#foo_bar> "b" .
+<http://example.org/ex3#foo-bar> <http://example.org/ex3#foo_bar> "c" .
+<http://example.org/ex4#foo-bar> <http://example.org/ex4#foo_bar> "d" .
diff --git a/tests/turtle/test-11.ttl b/tests/turtle/test-11.ttl
new file mode 100644
index 0000000..3de1a43
--- /dev/null
+++ b/tests/turtle/test-11.ttl
@@ -0,0 +1,10 @@
+# Tests for - and _ in names, qnames
+@prefix ex1: <http://example.org/ex1#> .
+@prefix ex-2: <http://example.org/ex2#> .
+@prefix ex3_: <http://example.org/ex3#> .
+@prefix ex4-: <http://example.org/ex4#> .
+
+ex1:foo-bar ex1:foo_bar "a" .
+ex-2:foo-bar ex-2:foo_bar "b" .
+ex3_:foo-bar ex3_:foo_bar "c" .
+ex4-:foo-bar ex4-:foo_bar "d" .
diff --git a/tests/turtle/test-12.out b/tests/turtle/test-12.out
new file mode 100644
index 0000000..67404a5
--- /dev/null
+++ b/tests/turtle/test-12.out
@@ -0,0 +1,4 @@
+<http://example.org/ex#foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> "1" .
+<http://example.org/ex#foo> <http://www.w3.org/1999/02/22-rdf-syntax-ns#_2> "2" .
+<http://example.org/ex#foo> <http://example.org/myprop#_abc> "def" .
+<http://example.org/ex#foo> <http://example.org/myprop#_345> "678" .
diff --git a/tests/turtle/test-12.ttl b/tests/turtle/test-12.ttl
new file mode 100644
index 0000000..1fed9f5
--- /dev/null
+++ b/tests/turtle/test-12.ttl
@@ -0,0 +1,9 @@
+# Tests for rdf:_<numbers> and other qnames starting with _
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix ex: <http://example.org/ex#> .
+@prefix : <http://example.org/myprop#> .
+
+ex:foo rdf:_1 "1" .
+ex:foo rdf:_2 "2" .
+ex:foo :_abc "def" .
+ex:foo :_345 "678" .
diff --git a/tests/turtle/test-13.out b/tests/turtle/test-13.out
new file mode 100644
index 0000000..9feb5ad
--- /dev/null
+++ b/tests/turtle/test-13.out
@@ -0,0 +1,2 @@
+_:genid1 <http://example.org/ron> _:genid2 .
+<http://example.org/ron> <http://example.org/ron> <http://example.org/ron> .
diff --git a/tests/turtle/test-13.ttl b/tests/turtle/test-13.ttl
new file mode 100644
index 0000000..a8be95b
--- /dev/null
+++ b/tests/turtle/test-13.ttl
@@ -0,0 +1,7 @@
+# Test for : allowed
+@prefix : <http://example.org/ron> .
+
+[] : [] .
+
+: : : .
+
diff --git a/tests/turtle/test-14.out b/tests/turtle/test-14.out
new file mode 100644
index 0000000..791b3a7
--- /dev/null
+++ b/tests/turtle/test-14.out
@@ -0,0 +1,10000 @@
+<http://example.org/ns#a1> <http://example.org/ns#a1> <http://example.org/ns#a1> .
+<http://example.org/ns#a2> <http://example.org/ns#a2> <http://example.org/ns#a2> .
+<http://example.org/ns#a3> <http://example.org/ns#a3> <http://example.org/ns#a3> .
+<http://example.org/ns#a4> <http://example.org/ns#a4> <http://example.org/ns#a4> .
+<http://example.org/ns#a5> <http://example.org/ns#a5> <http://example.org/ns#a5> .
+<http://example.org/ns#a6> <http://example.org/ns#a6> <http://example.org/ns#a6> .
+<http://example.org/ns#a7> <http://example.org/ns#a7> <http://example.org/ns#a7> .
+<http://example.org/ns#a8> <http://example.org/ns#a8> <http://example.org/ns#a8> .
+<http://example.org/ns#a9> <http://example.org/ns#a9> <http://example.org/ns#a9> .
+<http://example.org/ns#a10> <http://example.org/ns#a10> <http://example.org/ns#a10> .
+<http://example.org/ns#a11> <http://example.org/ns#a11> <http://example.org/ns#a11> .
+<http://example.org/ns#a12> <http://example.org/ns#a12> <http://example.org/ns#a12> .
+<http://example.org/ns#a13> <http://example.org/ns#a13> <http://example.org/ns#a13> .
+<http://example.org/ns#a14> <http://example.org/ns#a14> <http://example.org/ns#a14> .
+<http://example.org/ns#a15> <http://example.org/ns#a15> <http://example.org/ns#a15> .
+<http://example.org/ns#a16> <http://example.org/ns#a16> <http://example.org/ns#a16> .
+<http://example.org/ns#a17> <http://example.org/ns#a17> <http://example.org/ns#a17> .
+<http://example.org/ns#a18> <http://example.org/ns#a18> <http://example.org/ns#a18> .
+<http://example.org/ns#a19> <http://example.org/ns#a19> <http://example.org/ns#a19> .
+<http://example.org/ns#a20> <http://example.org/ns#a20> <http://example.org/ns#a20> .
+<http://example.org/ns#a21> <http://example.org/ns#a21> <http://example.org/ns#a21> .
+<http://example.org/ns#a22> <http://example.org/ns#a22> <http://example.org/ns#a22> .
+<http://example.org/ns#a23> <http://example.org/ns#a23> <http://example.org/ns#a23> .
+<http://example.org/ns#a24> <http://example.org/ns#a24> <http://example.org/ns#a24> .
+<http://example.org/ns#a25> <http://example.org/ns#a25> <http://example.org/ns#a25> .
+<http://example.org/ns#a26> <http://example.org/ns#a26> <http://example.org/ns#a26> .
+<http://example.org/ns#a27> <http://example.org/ns#a27> <http://example.org/ns#a27> .
+<http://example.org/ns#a28> <http://example.org/ns#a28> <http://example.org/ns#a28> .
+<http://example.org/ns#a29> <http://example.org/ns#a29> <http://example.org/ns#a29> .
+<http://example.org/ns#a30> <http://example.org/ns#a30> <http://example.org/ns#a30> .
+<http://example.org/ns#a31> <http://example.org/ns#a31> <http://example.org/ns#a31> .
+<http://example.org/ns#a32> <http://example.org/ns#a32> <http://example.org/ns#a32> .
+<http://example.org/ns#a33> <http://example.org/ns#a33> <http://example.org/ns#a33> .
+<http://example.org/ns#a34> <http://example.org/ns#a34> <http://example.org/ns#a34> .
+<http://example.org/ns#a35> <http://example.org/ns#a35> <http://example.org/ns#a35> .
+<http://example.org/ns#a36> <http://example.org/ns#a36> <http://example.org/ns#a36> .
+<http://example.org/ns#a37> <http://example.org/ns#a37> <http://example.org/ns#a37> .
+<http://example.org/ns#a38> <http://example.org/ns#a38> <http://example.org/ns#a38> .
+<http://example.org/ns#a39> <http://example.org/ns#a39> <http://example.org/ns#a39> .
+<http://example.org/ns#a40> <http://example.org/ns#a40> <http://example.org/ns#a40> .
+<http://example.org/ns#a41> <http://example.org/ns#a41> <http://example.org/ns#a41> .
+<http://example.org/ns#a42> <http://example.org/ns#a42> <http://example.org/ns#a42> .
+<http://example.org/ns#a43> <http://example.org/ns#a43> <http://example.org/ns#a43> .
+<http://example.org/ns#a44> <http://example.org/ns#a44> <http://example.org/ns#a44> .
+<http://example.org/ns#a45> <http://example.org/ns#a45> <http://example.org/ns#a45> .
+<http://example.org/ns#a46> <http://example.org/ns#a46> <http://example.org/ns#a46> .
+<http://example.org/ns#a47> <http://example.org/ns#a47> <http://example.org/ns#a47> .
+<http://example.org/ns#a48> <http://example.org/ns#a48> <http://example.org/ns#a48> .
+<http://example.org/ns#a49> <http://example.org/ns#a49> <http://example.org/ns#a49> .
+<http://example.org/ns#a50> <http://example.org/ns#a50> <http://example.org/ns#a50> .
+<http://example.org/ns#a51> <http://example.org/ns#a51> <http://example.org/ns#a51> .
+<http://example.org/ns#a52> <http://example.org/ns#a52> <http://example.org/ns#a52> .
+<http://example.org/ns#a53> <http://example.org/ns#a53> <http://example.org/ns#a53> .
+<http://example.org/ns#a54> <http://example.org/ns#a54> <http://example.org/ns#a54> .
+<http://example.org/ns#a55> <http://example.org/ns#a55> <http://example.org/ns#a55> .
+<http://example.org/ns#a56> <http://example.org/ns#a56> <http://example.org/ns#a56> .
+<http://example.org/ns#a57> <http://example.org/ns#a57> <http://example.org/ns#a57> .
+<http://example.org/ns#a58> <http://example.org/ns#a58> <http://example.org/ns#a58> .
+<http://example.org/ns#a59> <http://example.org/ns#a59> <http://example.org/ns#a59> .
+<http://example.org/ns#a60> <http://example.org/ns#a60> <http://example.org/ns#a60> .
+<http://example.org/ns#a61> <http://example.org/ns#a61> <http://example.org/ns#a61> .
+<http://example.org/ns#a62> <http://example.org/ns#a62> <http://example.org/ns#a62> .
+<http://example.org/ns#a63> <http://example.org/ns#a63> <http://example.org/ns#a63> .
+<http://example.org/ns#a64> <http://example.org/ns#a64> <http://example.org/ns#a64> .
+<http://example.org/ns#a65> <http://example.org/ns#a65> <http://example.org/ns#a65> .
+<http://example.org/ns#a66> <http://example.org/ns#a66> <http://example.org/ns#a66> .
+<http://example.org/ns#a67> <http://example.org/ns#a67> <http://example.org/ns#a67> .
+<http://example.org/ns#a68> <http://example.org/ns#a68> <http://example.org/ns#a68> .
+<http://example.org/ns#a69> <http://example.org/ns#a69> <http://example.org/ns#a69> .
+<http://example.org/ns#a70> <http://example.org/ns#a70> <http://example.org/ns#a70> .
+<http://example.org/ns#a71> <http://example.org/ns#a71> <http://example.org/ns#a71> .
+<http://example.org/ns#a72> <http://example.org/ns#a72> <http://example.org/ns#a72> .
+<http://example.org/ns#a73> <http://example.org/ns#a73> <http://example.org/ns#a73> .
+<http://example.org/ns#a74> <http://example.org/ns#a74> <http://example.org/ns#a74> .
+<http://example.org/ns#a75> <http://example.org/ns#a75> <http://example.org/ns#a75> .
+<http://example.org/ns#a76> <http://example.org/ns#a76> <http://example.org/ns#a76> .
+<http://example.org/ns#a77> <http://example.org/ns#a77> <http://example.org/ns#a77> .
+<http://example.org/ns#a78> <http://example.org/ns#a78> <http://example.org/ns#a78> .
+<http://example.org/ns#a79> <http://example.org/ns#a79> <http://example.org/ns#a79> .
+<http://example.org/ns#a80> <http://example.org/ns#a80> <http://example.org/ns#a80> .
+<http://example.org/ns#a81> <http://example.org/ns#a81> <http://example.org/ns#a81> .
+<http://example.org/ns#a82> <http://example.org/ns#a82> <http://example.org/ns#a82> .
+<http://example.org/ns#a83> <http://example.org/ns#a83> <http://example.org/ns#a83> .
+<http://example.org/ns#a84> <http://example.org/ns#a84> <http://example.org/ns#a84> .
+<http://example.org/ns#a85> <http://example.org/ns#a85> <http://example.org/ns#a85> .
+<http://example.org/ns#a86> <http://example.org/ns#a86> <http://example.org/ns#a86> .
+<http://example.org/ns#a87> <http://example.org/ns#a87> <http://example.org/ns#a87> .
+<http://example.org/ns#a88> <http://example.org/ns#a88> <http://example.org/ns#a88> .
+<http://example.org/ns#a89> <http://example.org/ns#a89> <http://example.org/ns#a89> .
+<http://example.org/ns#a90> <http://example.org/ns#a90> <http://example.org/ns#a90> .
+<http://example.org/ns#a91> <http://example.org/ns#a91> <http://example.org/ns#a91> .
+<http://example.org/ns#a92> <http://example.org/ns#a92> <http://example.org/ns#a92> .
+<http://example.org/ns#a93> <http://example.org/ns#a93> <http://example.org/ns#a93> .
+<http://example.org/ns#a94> <http://example.org/ns#a94> <http://example.org/ns#a94> .
+<http://example.org/ns#a95> <http://example.org/ns#a95> <http://example.org/ns#a95> .
+<http://example.org/ns#a96> <http://example.org/ns#a96> <http://example.org/ns#a96> .
+<http://example.org/ns#a97> <http://example.org/ns#a97> <http://example.org/ns#a97> .
+<http://example.org/ns#a98> <http://example.org/ns#a98> <http://example.org/ns#a98> .
+<http://example.org/ns#a99> <http://example.org/ns#a99> <http://example.org/ns#a99> .
+<http://example.org/ns#a100> <http://example.org/ns#a100> <http://example.org/ns#a100> .
+<http://example.org/ns#a101> <http://example.org/ns#a101> <http://example.org/ns#a101> .
+<http://example.org/ns#a102> <http://example.org/ns#a102> <http://example.org/ns#a102> .
+<http://example.org/ns#a103> <http://example.org/ns#a103> <http://example.org/ns#a103> .
+<http://example.org/ns#a104> <http://example.org/ns#a104> <http://example.org/ns#a104> .
+<http://example.org/ns#a105> <http://example.org/ns#a105> <http://example.org/ns#a105> .
+<http://example.org/ns#a106> <http://example.org/ns#a106> <http://example.org/ns#a106> .
+<http://example.org/ns#a107> <http://example.org/ns#a107> <http://example.org/ns#a107> .
+<http://example.org/ns#a108> <http://example.org/ns#a108> <http://example.org/ns#a108> .
+<http://example.org/ns#a109> <http://example.org/ns#a109> <http://example.org/ns#a109> .
+<http://example.org/ns#a110> <http://example.org/ns#a110> <http://example.org/ns#a110> .
+<http://example.org/ns#a111> <http://example.org/ns#a111> <http://example.org/ns#a111> .
+<http://example.org/ns#a112> <http://example.org/ns#a112> <http://example.org/ns#a112> .
+<http://example.org/ns#a113> <http://example.org/ns#a113> <http://example.org/ns#a113> .
+<http://example.org/ns#a114> <http://example.org/ns#a114> <http://example.org/ns#a114> .
+<http://example.org/ns#a115> <http://example.org/ns#a115> <http://example.org/ns#a115> .
+<http://example.org/ns#a116> <http://example.org/ns#a116> <http://example.org/ns#a116> .
+<http://example.org/ns#a117> <http://example.org/ns#a117> <http://example.org/ns#a117> .
+<http://example.org/ns#a118> <http://example.org/ns#a118> <http://example.org/ns#a118> .
+<http://example.org/ns#a119> <http://example.org/ns#a119> <http://example.org/ns#a119> .
+<http://example.org/ns#a120> <http://example.org/ns#a120> <http://example.org/ns#a120> .
+<http://example.org/ns#a121> <http://example.org/ns#a121> <http://example.org/ns#a121> .
+<http://example.org/ns#a122> <http://example.org/ns#a122> <http://example.org/ns#a122> .
+<http://example.org/ns#a123> <http://example.org/ns#a123> <http://example.org/ns#a123> .
+<http://example.org/ns#a124> <http://example.org/ns#a124> <http://example.org/ns#a124> .
+<http://example.org/ns#a125> <http://example.org/ns#a125> <http://example.org/ns#a125> .
+<http://example.org/ns#a126> <http://example.org/ns#a126> <http://example.org/ns#a126> .
+<http://example.org/ns#a127> <http://example.org/ns#a127> <http://example.org/ns#a127> .
+<http://example.org/ns#a128> <http://example.org/ns#a128> <http://example.org/ns#a128> .
+<http://example.org/ns#a129> <http://example.org/ns#a129> <http://example.org/ns#a129> .
+<http://example.org/ns#a130> <http://example.org/ns#a130> <http://example.org/ns#a130> .
+<http://example.org/ns#a131> <http://example.org/ns#a131> <http://example.org/ns#a131> .
+<http://example.org/ns#a132> <http://example.org/ns#a132> <http://example.org/ns#a132> .
+<http://example.org/ns#a133> <http://example.org/ns#a133> <http://example.org/ns#a133> .
+<http://example.org/ns#a134> <http://example.org/ns#a134> <http://example.org/ns#a134> .
+<http://example.org/ns#a135> <http://example.org/ns#a135> <http://example.org/ns#a135> .
+<http://example.org/ns#a136> <http://example.org/ns#a136> <http://example.org/ns#a136> .
+<http://example.org/ns#a137> <http://example.org/ns#a137> <http://example.org/ns#a137> .
+<http://example.org/ns#a138> <http://example.org/ns#a138> <http://example.org/ns#a138> .
+<http://example.org/ns#a139> <http://example.org/ns#a139> <http://example.org/ns#a139> .
+<http://example.org/ns#a140> <http://example.org/ns#a140> <http://example.org/ns#a140> .
+<http://example.org/ns#a141> <http://example.org/ns#a141> <http://example.org/ns#a141> .
+<http://example.org/ns#a142> <http://example.org/ns#a142> <http://example.org/ns#a142> .
+<http://example.org/ns#a143> <http://example.org/ns#a143> <http://example.org/ns#a143> .
+<http://example.org/ns#a144> <http://example.org/ns#a144> <http://example.org/ns#a144> .
+<http://example.org/ns#a145> <http://example.org/ns#a145> <http://example.org/ns#a145> .
+<http://example.org/ns#a146> <http://example.org/ns#a146> <http://example.org/ns#a146> .
+<http://example.org/ns#a147> <http://example.org/ns#a147> <http://example.org/ns#a147> .
+<http://example.org/ns#a148> <http://example.org/ns#a148> <http://example.org/ns#a148> .
+<http://example.org/ns#a149> <http://example.org/ns#a149> <http://example.org/ns#a149> .
+<http://example.org/ns#a150> <http://example.org/ns#a150> <http://example.org/ns#a150> .
+<http://example.org/ns#a151> <http://example.org/ns#a151> <http://example.org/ns#a151> .
+<http://example.org/ns#a152> <http://example.org/ns#a152> <http://example.org/ns#a152> .
+<http://example.org/ns#a153> <http://example.org/ns#a153> <http://example.org/ns#a153> .
+<http://example.org/ns#a154> <http://example.org/ns#a154> <http://example.org/ns#a154> .
+<http://example.org/ns#a155> <http://example.org/ns#a155> <http://example.org/ns#a155> .
+<http://example.org/ns#a156> <http://example.org/ns#a156> <http://example.org/ns#a156> .
+<http://example.org/ns#a157> <http://example.org/ns#a157> <http://example.org/ns#a157> .
+<http://example.org/ns#a158> <http://example.org/ns#a158> <http://example.org/ns#a158> .
+<http://example.org/ns#a159> <http://example.org/ns#a159> <http://example.org/ns#a159> .
+<http://example.org/ns#a160> <http://example.org/ns#a160> <http://example.org/ns#a160> .
+<http://example.org/ns#a161> <http://example.org/ns#a161> <http://example.org/ns#a161> .
+<http://example.org/ns#a162> <http://example.org/ns#a162> <http://example.org/ns#a162> .
+<http://example.org/ns#a163> <http://example.org/ns#a163> <http://example.org/ns#a163> .
+<http://example.org/ns#a164> <http://example.org/ns#a164> <http://example.org/ns#a164> .
+<http://example.org/ns#a165> <http://example.org/ns#a165> <http://example.org/ns#a165> .
+<http://example.org/ns#a166> <http://example.org/ns#a166> <http://example.org/ns#a166> .
+<http://example.org/ns#a167> <http://example.org/ns#a167> <http://example.org/ns#a167> .
+<http://example.org/ns#a168> <http://example.org/ns#a168> <http://example.org/ns#a168> .
+<http://example.org/ns#a169> <http://example.org/ns#a169> <http://example.org/ns#a169> .
+<http://example.org/ns#a170> <http://example.org/ns#a170> <http://example.org/ns#a170> .
+<http://example.org/ns#a171> <http://example.org/ns#a171> <http://example.org/ns#a171> .
+<http://example.org/ns#a172> <http://example.org/ns#a172> <http://example.org/ns#a172> .
+<http://example.org/ns#a173> <http://example.org/ns#a173> <http://example.org/ns#a173> .
+<http://example.org/ns#a174> <http://example.org/ns#a174> <http://example.org/ns#a174> .
+<http://example.org/ns#a175> <http://example.org/ns#a175> <http://example.org/ns#a175> .
+<http://example.org/ns#a176> <http://example.org/ns#a176> <http://example.org/ns#a176> .
+<http://example.org/ns#a177> <http://example.org/ns#a177> <http://example.org/ns#a177> .
+<http://example.org/ns#a178> <http://example.org/ns#a178> <http://example.org/ns#a178> .
+<http://example.org/ns#a179> <http://example.org/ns#a179> <http://example.org/ns#a179> .
+<http://example.org/ns#a180> <http://example.org/ns#a180> <http://example.org/ns#a180> .
+<http://example.org/ns#a181> <http://example.org/ns#a181> <http://example.org/ns#a181> .
+<http://example.org/ns#a182> <http://example.org/ns#a182> <http://example.org/ns#a182> .
+<http://example.org/ns#a183> <http://example.org/ns#a183> <http://example.org/ns#a183> .
+<http://example.org/ns#a184> <http://example.org/ns#a184> <http://example.org/ns#a184> .
+<http://example.org/ns#a185> <http://example.org/ns#a185> <http://example.org/ns#a185> .
+<http://example.org/ns#a186> <http://example.org/ns#a186> <http://example.org/ns#a186> .
+<http://example.org/ns#a187> <http://example.org/ns#a187> <http://example.org/ns#a187> .
+<http://example.org/ns#a188> <http://example.org/ns#a188> <http://example.org/ns#a188> .
+<http://example.org/ns#a189> <http://example.org/ns#a189> <http://example.org/ns#a189> .
+<http://example.org/ns#a190> <http://example.org/ns#a190> <http://example.org/ns#a190> .
+<http://example.org/ns#a191> <http://example.org/ns#a191> <http://example.org/ns#a191> .
+<http://example.org/ns#a192> <http://example.org/ns#a192> <http://example.org/ns#a192> .
+<http://example.org/ns#a193> <http://example.org/ns#a193> <http://example.org/ns#a193> .
+<http://example.org/ns#a194> <http://example.org/ns#a194> <http://example.org/ns#a194> .
+<http://example.org/ns#a195> <http://example.org/ns#a195> <http://example.org/ns#a195> .
+<http://example.org/ns#a196> <http://example.org/ns#a196> <http://example.org/ns#a196> .
+<http://example.org/ns#a197> <http://example.org/ns#a197> <http://example.org/ns#a197> .
+<http://example.org/ns#a198> <http://example.org/ns#a198> <http://example.org/ns#a198> .
+<http://example.org/ns#a199> <http://example.org/ns#a199> <http://example.org/ns#a199> .
+<http://example.org/ns#a200> <http://example.org/ns#a200> <http://example.org/ns#a200> .
+<http://example.org/ns#a201> <http://example.org/ns#a201> <http://example.org/ns#a201> .
+<http://example.org/ns#a202> <http://example.org/ns#a202> <http://example.org/ns#a202> .
+<http://example.org/ns#a203> <http://example.org/ns#a203> <http://example.org/ns#a203> .
+<http://example.org/ns#a204> <http://example.org/ns#a204> <http://example.org/ns#a204> .
+<http://example.org/ns#a205> <http://example.org/ns#a205> <http://example.org/ns#a205> .
+<http://example.org/ns#a206> <http://example.org/ns#a206> <http://example.org/ns#a206> .
+<http://example.org/ns#a207> <http://example.org/ns#a207> <http://example.org/ns#a207> .
+<http://example.org/ns#a208> <http://example.org/ns#a208> <http://example.org/ns#a208> .
+<http://example.org/ns#a209> <http://example.org/ns#a209> <http://example.org/ns#a209> .
+<http://example.org/ns#a210> <http://example.org/ns#a210> <http://example.org/ns#a210> .
+<http://example.org/ns#a211> <http://example.org/ns#a211> <http://example.org/ns#a211> .
+<http://example.org/ns#a212> <http://example.org/ns#a212> <http://example.org/ns#a212> .
+<http://example.org/ns#a213> <http://example.org/ns#a213> <http://example.org/ns#a213> .
+<http://example.org/ns#a214> <http://example.org/ns#a214> <http://example.org/ns#a214> .
+<http://example.org/ns#a215> <http://example.org/ns#a215> <http://example.org/ns#a215> .
+<http://example.org/ns#a216> <http://example.org/ns#a216> <http://example.org/ns#a216> .
+<http://example.org/ns#a217> <http://example.org/ns#a217> <http://example.org/ns#a217> .
+<http://example.org/ns#a218> <http://example.org/ns#a218> <http://example.org/ns#a218> .
+<http://example.org/ns#a219> <http://example.org/ns#a219> <http://example.org/ns#a219> .
+<http://example.org/ns#a220> <http://example.org/ns#a220> <http://example.org/ns#a220> .
+<http://example.org/ns#a221> <http://example.org/ns#a221> <http://example.org/ns#a221> .
+<http://example.org/ns#a222> <http://example.org/ns#a222> <http://example.org/ns#a222> .
+<http://example.org/ns#a223> <http://example.org/ns#a223> <http://example.org/ns#a223> .
+<http://example.org/ns#a224> <http://example.org/ns#a224> <http://example.org/ns#a224> .
+<http://example.org/ns#a225> <http://example.org/ns#a225> <http://example.org/ns#a225> .
+<http://example.org/ns#a226> <http://example.org/ns#a226> <http://example.org/ns#a226> .
+<http://example.org/ns#a227> <http://example.org/ns#a227> <http://example.org/ns#a227> .
+<http://example.org/ns#a228> <http://example.org/ns#a228> <http://example.org/ns#a228> .
+<http://example.org/ns#a229> <http://example.org/ns#a229> <http://example.org/ns#a229> .
+<http://example.org/ns#a230> <http://example.org/ns#a230> <http://example.org/ns#a230> .
+<http://example.org/ns#a231> <http://example.org/ns#a231> <http://example.org/ns#a231> .
+<http://example.org/ns#a232> <http://example.org/ns#a232> <http://example.org/ns#a232> .
+<http://example.org/ns#a233> <http://example.org/ns#a233> <http://example.org/ns#a233> .
+<http://example.org/ns#a234> <http://example.org/ns#a234> <http://example.org/ns#a234> .
+<http://example.org/ns#a235> <http://example.org/ns#a235> <http://example.org/ns#a235> .
+<http://example.org/ns#a236> <http://example.org/ns#a236> <http://example.org/ns#a236> .
+<http://example.org/ns#a237> <http://example.org/ns#a237> <http://example.org/ns#a237> .
+<http://example.org/ns#a238> <http://example.org/ns#a238> <http://example.org/ns#a238> .
+<http://example.org/ns#a239> <http://example.org/ns#a239> <http://example.org/ns#a239> .
+<http://example.org/ns#a240> <http://example.org/ns#a240> <http://example.org/ns#a240> .
+<http://example.org/ns#a241> <http://example.org/ns#a241> <http://example.org/ns#a241> .
+<http://example.org/ns#a242> <http://example.org/ns#a242> <http://example.org/ns#a242> .
+<http://example.org/ns#a243> <http://example.org/ns#a243> <http://example.org/ns#a243> .
+<http://example.org/ns#a244> <http://example.org/ns#a244> <http://example.org/ns#a244> .
+<http://example.org/ns#a245> <http://example.org/ns#a245> <http://example.org/ns#a245> .
+<http://example.org/ns#a246> <http://example.org/ns#a246> <http://example.org/ns#a246> .
+<http://example.org/ns#a247> <http://example.org/ns#a247> <http://example.org/ns#a247> .
+<http://example.org/ns#a248> <http://example.org/ns#a248> <http://example.org/ns#a248> .
+<http://example.org/ns#a249> <http://example.org/ns#a249> <http://example.org/ns#a249> .
+<http://example.org/ns#a250> <http://example.org/ns#a250> <http://example.org/ns#a250> .
+<http://example.org/ns#a251> <http://example.org/ns#a251> <http://example.org/ns#a251> .
+<http://example.org/ns#a252> <http://example.org/ns#a252> <http://example.org/ns#a252> .
+<http://example.org/ns#a253> <http://example.org/ns#a253> <http://example.org/ns#a253> .
+<http://example.org/ns#a254> <http://example.org/ns#a254> <http://example.org/ns#a254> .
+<http://example.org/ns#a255> <http://example.org/ns#a255> <http://example.org/ns#a255> .
+<http://example.org/ns#a256> <http://example.org/ns#a256> <http://example.org/ns#a256> .
+<http://example.org/ns#a257> <http://example.org/ns#a257> <http://example.org/ns#a257> .
+<http://example.org/ns#a258> <http://example.org/ns#a258> <http://example.org/ns#a258> .
+<http://example.org/ns#a259> <http://example.org/ns#a259> <http://example.org/ns#a259> .
+<http://example.org/ns#a260> <http://example.org/ns#a260> <http://example.org/ns#a260> .
+<http://example.org/ns#a261> <http://example.org/ns#a261> <http://example.org/ns#a261> .
+<http://example.org/ns#a262> <http://example.org/ns#a262> <http://example.org/ns#a262> .
+<http://example.org/ns#a263> <http://example.org/ns#a263> <http://example.org/ns#a263> .
+<http://example.org/ns#a264> <http://example.org/ns#a264> <http://example.org/ns#a264> .
+<http://example.org/ns#a265> <http://example.org/ns#a265> <http://example.org/ns#a265> .
+<http://example.org/ns#a266> <http://example.org/ns#a266> <http://example.org/ns#a266> .
+<http://example.org/ns#a267> <http://example.org/ns#a267> <http://example.org/ns#a267> .
+<http://example.org/ns#a268> <http://example.org/ns#a268> <http://example.org/ns#a268> .
+<http://example.org/ns#a269> <http://example.org/ns#a269> <http://example.org/ns#a269> .
+<http://example.org/ns#a270> <http://example.org/ns#a270> <http://example.org/ns#a270> .
+<http://example.org/ns#a271> <http://example.org/ns#a271> <http://example.org/ns#a271> .
+<http://example.org/ns#a272> <http://example.org/ns#a272> <http://example.org/ns#a272> .
+<http://example.org/ns#a273> <http://example.org/ns#a273> <http://example.org/ns#a273> .
+<http://example.org/ns#a274> <http://example.org/ns#a274> <http://example.org/ns#a274> .
+<http://example.org/ns#a275> <http://example.org/ns#a275> <http://example.org/ns#a275> .
+<http://example.org/ns#a276> <http://example.org/ns#a276> <http://example.org/ns#a276> .
+<http://example.org/ns#a277> <http://example.org/ns#a277> <http://example.org/ns#a277> .
+<http://example.org/ns#a278> <http://example.org/ns#a278> <http://example.org/ns#a278> .
+<http://example.org/ns#a279> <http://example.org/ns#a279> <http://example.org/ns#a279> .
+<http://example.org/ns#a280> <http://example.org/ns#a280> <http://example.org/ns#a280> .
+<http://example.org/ns#a281> <http://example.org/ns#a281> <http://example.org/ns#a281> .
+<http://example.org/ns#a282> <http://example.org/ns#a282> <http://example.org/ns#a282> .
+<http://example.org/ns#a283> <http://example.org/ns#a283> <http://example.org/ns#a283> .
+<http://example.org/ns#a284> <http://example.org/ns#a284> <http://example.org/ns#a284> .
+<http://example.org/ns#a285> <http://example.org/ns#a285> <http://example.org/ns#a285> .
+<http://example.org/ns#a286> <http://example.org/ns#a286> <http://example.org/ns#a286> .
+<http://example.org/ns#a287> <http://example.org/ns#a287> <http://example.org/ns#a287> .
+<http://example.org/ns#a288> <http://example.org/ns#a288> <http://example.org/ns#a288> .
+<http://example.org/ns#a289> <http://example.org/ns#a289> <http://example.org/ns#a289> .
+<http://example.org/ns#a290> <http://example.org/ns#a290> <http://example.org/ns#a290> .
+<http://example.org/ns#a291> <http://example.org/ns#a291> <http://example.org/ns#a291> .
+<http://example.org/ns#a292> <http://example.org/ns#a292> <http://example.org/ns#a292> .
+<http://example.org/ns#a293> <http://example.org/ns#a293> <http://example.org/ns#a293> .
+<http://example.org/ns#a294> <http://example.org/ns#a294> <http://example.org/ns#a294> .
+<http://example.org/ns#a295> <http://example.org/ns#a295> <http://example.org/ns#a295> .
+<http://example.org/ns#a296> <http://example.org/ns#a296> <http://example.org/ns#a296> .
+<http://example.org/ns#a297> <http://example.org/ns#a297> <http://example.org/ns#a297> .
+<http://example.org/ns#a298> <http://example.org/ns#a298> <http://example.org/ns#a298> .
+<http://example.org/ns#a299> <http://example.org/ns#a299> <http://example.org/ns#a299> .
+<http://example.org/ns#a300> <http://example.org/ns#a300> <http://example.org/ns#a300> .
+<http://example.org/ns#a301> <http://example.org/ns#a301> <http://example.org/ns#a301> .
+<http://example.org/ns#a302> <http://example.org/ns#a302> <http://example.org/ns#a302> .
+<http://example.org/ns#a303> <http://example.org/ns#a303> <http://example.org/ns#a303> .
+<http://example.org/ns#a304> <http://example.org/ns#a304> <http://example.org/ns#a304> .
+<http://example.org/ns#a305> <http://example.org/ns#a305> <http://example.org/ns#a305> .
+<http://example.org/ns#a306> <http://example.org/ns#a306> <http://example.org/ns#a306> .
+<http://example.org/ns#a307> <http://example.org/ns#a307> <http://example.org/ns#a307> .
+<http://example.org/ns#a308> <http://example.org/ns#a308> <http://example.org/ns#a308> .
+<http://example.org/ns#a309> <http://example.org/ns#a309> <http://example.org/ns#a309> .
+<http://example.org/ns#a310> <http://example.org/ns#a310> <http://example.org/ns#a310> .
+<http://example.org/ns#a311> <http://example.org/ns#a311> <http://example.org/ns#a311> .
+<http://example.org/ns#a312> <http://example.org/ns#a312> <http://example.org/ns#a312> .
+<http://example.org/ns#a313> <http://example.org/ns#a313> <http://example.org/ns#a313> .
+<http://example.org/ns#a314> <http://example.org/ns#a314> <http://example.org/ns#a314> .
+<http://example.org/ns#a315> <http://example.org/ns#a315> <http://example.org/ns#a315> .
+<http://example.org/ns#a316> <http://example.org/ns#a316> <http://example.org/ns#a316> .
+<http://example.org/ns#a317> <http://example.org/ns#a317> <http://example.org/ns#a317> .
+<http://example.org/ns#a318> <http://example.org/ns#a318> <http://example.org/ns#a318> .
+<http://example.org/ns#a319> <http://example.org/ns#a319> <http://example.org/ns#a319> .
+<http://example.org/ns#a320> <http://example.org/ns#a320> <http://example.org/ns#a320> .
+<http://example.org/ns#a321> <http://example.org/ns#a321> <http://example.org/ns#a321> .
+<http://example.org/ns#a322> <http://example.org/ns#a322> <http://example.org/ns#a322> .
+<http://example.org/ns#a323> <http://example.org/ns#a323> <http://example.org/ns#a323> .
+<http://example.org/ns#a324> <http://example.org/ns#a324> <http://example.org/ns#a324> .
+<http://example.org/ns#a325> <http://example.org/ns#a325> <http://example.org/ns#a325> .
+<http://example.org/ns#a326> <http://example.org/ns#a326> <http://example.org/ns#a326> .
+<http://example.org/ns#a327> <http://example.org/ns#a327> <http://example.org/ns#a327> .
+<http://example.org/ns#a328> <http://example.org/ns#a328> <http://example.org/ns#a328> .
+<http://example.org/ns#a329> <http://example.org/ns#a329> <http://example.org/ns#a329> .
+<http://example.org/ns#a330> <http://example.org/ns#a330> <http://example.org/ns#a330> .
+<http://example.org/ns#a331> <http://example.org/ns#a331> <http://example.org/ns#a331> .
+<http://example.org/ns#a332> <http://example.org/ns#a332> <http://example.org/ns#a332> .
+<http://example.org/ns#a333> <http://example.org/ns#a333> <http://example.org/ns#a333> .
+<http://example.org/ns#a334> <http://example.org/ns#a334> <http://example.org/ns#a334> .
+<http://example.org/ns#a335> <http://example.org/ns#a335> <http://example.org/ns#a335> .
+<http://example.org/ns#a336> <http://example.org/ns#a336> <http://example.org/ns#a336> .
+<http://example.org/ns#a337> <http://example.org/ns#a337> <http://example.org/ns#a337> .
+<http://example.org/ns#a338> <http://example.org/ns#a338> <http://example.org/ns#a338> .
+<http://example.org/ns#a339> <http://example.org/ns#a339> <http://example.org/ns#a339> .
+<http://example.org/ns#a340> <http://example.org/ns#a340> <http://example.org/ns#a340> .
+<http://example.org/ns#a341> <http://example.org/ns#a341> <http://example.org/ns#a341> .
+<http://example.org/ns#a342> <http://example.org/ns#a342> <http://example.org/ns#a342> .
+<http://example.org/ns#a343> <http://example.org/ns#a343> <http://example.org/ns#a343> .
+<http://example.org/ns#a344> <http://example.org/ns#a344> <http://example.org/ns#a344> .
+<http://example.org/ns#a345> <http://example.org/ns#a345> <http://example.org/ns#a345> .
+<http://example.org/ns#a346> <http://example.org/ns#a346> <http://example.org/ns#a346> .
+<http://example.org/ns#a347> <http://example.org/ns#a347> <http://example.org/ns#a347> .
+<http://example.org/ns#a348> <http://example.org/ns#a348> <http://example.org/ns#a348> .
+<http://example.org/ns#a349> <http://example.org/ns#a349> <http://example.org/ns#a349> .
+<http://example.org/ns#a350> <http://example.org/ns#a350> <http://example.org/ns#a350> .
+<http://example.org/ns#a351> <http://example.org/ns#a351> <http://example.org/ns#a351> .
+<http://example.org/ns#a352> <http://example.org/ns#a352> <http://example.org/ns#a352> .
+<http://example.org/ns#a353> <http://example.org/ns#a353> <http://example.org/ns#a353> .
+<http://example.org/ns#a354> <http://example.org/ns#a354> <http://example.org/ns#a354> .
+<http://example.org/ns#a355> <http://example.org/ns#a355> <http://example.org/ns#a355> .
+<http://example.org/ns#a356> <http://example.org/ns#a356> <http://example.org/ns#a356> .
+<http://example.org/ns#a357> <http://example.org/ns#a357> <http://example.org/ns#a357> .
+<http://example.org/ns#a358> <http://example.org/ns#a358> <http://example.org/ns#a358> .
+<http://example.org/ns#a359> <http://example.org/ns#a359> <http://example.org/ns#a359> .
+<http://example.org/ns#a360> <http://example.org/ns#a360> <http://example.org/ns#a360> .
+<http://example.org/ns#a361> <http://example.org/ns#a361> <http://example.org/ns#a361> .
+<http://example.org/ns#a362> <http://example.org/ns#a362> <http://example.org/ns#a362> .
+<http://example.org/ns#a363> <http://example.org/ns#a363> <http://example.org/ns#a363> .
+<http://example.org/ns#a364> <http://example.org/ns#a364> <http://example.org/ns#a364> .
+<http://example.org/ns#a365> <http://example.org/ns#a365> <http://example.org/ns#a365> .
+<http://example.org/ns#a366> <http://example.org/ns#a366> <http://example.org/ns#a366> .
+<http://example.org/ns#a367> <http://example.org/ns#a367> <http://example.org/ns#a367> .
+<http://example.org/ns#a368> <http://example.org/ns#a368> <http://example.org/ns#a368> .
+<http://example.org/ns#a369> <http://example.org/ns#a369> <http://example.org/ns#a369> .
+<http://example.org/ns#a370> <http://example.org/ns#a370> <http://example.org/ns#a370> .
+<http://example.org/ns#a371> <http://example.org/ns#a371> <http://example.org/ns#a371> .
+<http://example.org/ns#a372> <http://example.org/ns#a372> <http://example.org/ns#a372> .
+<http://example.org/ns#a373> <http://example.org/ns#a373> <http://example.org/ns#a373> .
+<http://example.org/ns#a374> <http://example.org/ns#a374> <http://example.org/ns#a374> .
+<http://example.org/ns#a375> <http://example.org/ns#a375> <http://example.org/ns#a375> .
+<http://example.org/ns#a376> <http://example.org/ns#a376> <http://example.org/ns#a376> .
+<http://example.org/ns#a377> <http://example.org/ns#a377> <http://example.org/ns#a377> .
+<http://example.org/ns#a378> <http://example.org/ns#a378> <http://example.org/ns#a378> .
+<http://example.org/ns#a379> <http://example.org/ns#a379> <http://example.org/ns#a379> .
+<http://example.org/ns#a380> <http://example.org/ns#a380> <http://example.org/ns#a380> .
+<http://example.org/ns#a381> <http://example.org/ns#a381> <http://example.org/ns#a381> .
+<http://example.org/ns#a382> <http://example.org/ns#a382> <http://example.org/ns#a382> .
+<http://example.org/ns#a383> <http://example.org/ns#a383> <http://example.org/ns#a383> .
+<http://example.org/ns#a384> <http://example.org/ns#a384> <http://example.org/ns#a384> .
+<http://example.org/ns#a385> <http://example.org/ns#a385> <http://example.org/ns#a385> .
+<http://example.org/ns#a386> <http://example.org/ns#a386> <http://example.org/ns#a386> .
+<http://example.org/ns#a387> <http://example.org/ns#a387> <http://example.org/ns#a387> .
+<http://example.org/ns#a388> <http://example.org/ns#a388> <http://example.org/ns#a388> .
+<http://example.org/ns#a389> <http://example.org/ns#a389> <http://example.org/ns#a389> .
+<http://example.org/ns#a390> <http://example.org/ns#a390> <http://example.org/ns#a390> .
+<http://example.org/ns#a391> <http://example.org/ns#a391> <http://example.org/ns#a391> .
+<http://example.org/ns#a392> <http://example.org/ns#a392> <http://example.org/ns#a392> .
+<http://example.org/ns#a393> <http://example.org/ns#a393> <http://example.org/ns#a393> .
+<http://example.org/ns#a394> <http://example.org/ns#a394> <http://example.org/ns#a394> .
+<http://example.org/ns#a395> <http://example.org/ns#a395> <http://example.org/ns#a395> .
+<http://example.org/ns#a396> <http://example.org/ns#a396> <http://example.org/ns#a396> .
+<http://example.org/ns#a397> <http://example.org/ns#a397> <http://example.org/ns#a397> .
+<http://example.org/ns#a398> <http://example.org/ns#a398> <http://example.org/ns#a398> .
+<http://example.org/ns#a399> <http://example.org/ns#a399> <http://example.org/ns#a399> .
+<http://example.org/ns#a400> <http://example.org/ns#a400> <http://example.org/ns#a400> .
+<http://example.org/ns#a401> <http://example.org/ns#a401> <http://example.org/ns#a401> .
+<http://example.org/ns#a402> <http://example.org/ns#a402> <http://example.org/ns#a402> .
+<http://example.org/ns#a403> <http://example.org/ns#a403> <http://example.org/ns#a403> .
+<http://example.org/ns#a404> <http://example.org/ns#a404> <http://example.org/ns#a404> .
+<http://example.org/ns#a405> <http://example.org/ns#a405> <http://example.org/ns#a405> .
+<http://example.org/ns#a406> <http://example.org/ns#a406> <http://example.org/ns#a406> .
+<http://example.org/ns#a407> <http://example.org/ns#a407> <http://example.org/ns#a407> .
+<http://example.org/ns#a408> <http://example.org/ns#a408> <http://example.org/ns#a408> .
+<http://example.org/ns#a409> <http://example.org/ns#a409> <http://example.org/ns#a409> .
+<http://example.org/ns#a410> <http://example.org/ns#a410> <http://example.org/ns#a410> .
+<http://example.org/ns#a411> <http://example.org/ns#a411> <http://example.org/ns#a411> .
+<http://example.org/ns#a412> <http://example.org/ns#a412> <http://example.org/ns#a412> .
+<http://example.org/ns#a413> <http://example.org/ns#a413> <http://example.org/ns#a413> .
+<http://example.org/ns#a414> <http://example.org/ns#a414> <http://example.org/ns#a414> .
+<http://example.org/ns#a415> <http://example.org/ns#a415> <http://example.org/ns#a415> .
+<http://example.org/ns#a416> <http://example.org/ns#a416> <http://example.org/ns#a416> .
+<http://example.org/ns#a417> <http://example.org/ns#a417> <http://example.org/ns#a417> .
+<http://example.org/ns#a418> <http://example.org/ns#a418> <http://example.org/ns#a418> .
+<http://example.org/ns#a419> <http://example.org/ns#a419> <http://example.org/ns#a419> .
+<http://example.org/ns#a420> <http://example.org/ns#a420> <http://example.org/ns#a420> .
+<http://example.org/ns#a421> <http://example.org/ns#a421> <http://example.org/ns#a421> .
+<http://example.org/ns#a422> <http://example.org/ns#a422> <http://example.org/ns#a422> .
+<http://example.org/ns#a423> <http://example.org/ns#a423> <http://example.org/ns#a423> .
+<http://example.org/ns#a424> <http://example.org/ns#a424> <http://example.org/ns#a424> .
+<http://example.org/ns#a425> <http://example.org/ns#a425> <http://example.org/ns#a425> .
+<http://example.org/ns#a426> <http://example.org/ns#a426> <http://example.org/ns#a426> .
+<http://example.org/ns#a427> <http://example.org/ns#a427> <http://example.org/ns#a427> .
+<http://example.org/ns#a428> <http://example.org/ns#a428> <http://example.org/ns#a428> .
+<http://example.org/ns#a429> <http://example.org/ns#a429> <http://example.org/ns#a429> .
+<http://example.org/ns#a430> <http://example.org/ns#a430> <http://example.org/ns#a430> .
+<http://example.org/ns#a431> <http://example.org/ns#a431> <http://example.org/ns#a431> .
+<http://example.org/ns#a432> <http://example.org/ns#a432> <http://example.org/ns#a432> .
+<http://example.org/ns#a433> <http://example.org/ns#a433> <http://example.org/ns#a433> .
+<http://example.org/ns#a434> <http://example.org/ns#a434> <http://example.org/ns#a434> .
+<http://example.org/ns#a435> <http://example.org/ns#a435> <http://example.org/ns#a435> .
+<http://example.org/ns#a436> <http://example.org/ns#a436> <http://example.org/ns#a436> .
+<http://example.org/ns#a437> <http://example.org/ns#a437> <http://example.org/ns#a437> .
+<http://example.org/ns#a438> <http://example.org/ns#a438> <http://example.org/ns#a438> .
+<http://example.org/ns#a439> <http://example.org/ns#a439> <http://example.org/ns#a439> .
+<http://example.org/ns#a440> <http://example.org/ns#a440> <http://example.org/ns#a440> .
+<http://example.org/ns#a441> <http://example.org/ns#a441> <http://example.org/ns#a441> .
+<http://example.org/ns#a442> <http://example.org/ns#a442> <http://example.org/ns#a442> .
+<http://example.org/ns#a443> <http://example.org/ns#a443> <http://example.org/ns#a443> .
+<http://example.org/ns#a444> <http://example.org/ns#a444> <http://example.org/ns#a444> .
+<http://example.org/ns#a445> <http://example.org/ns#a445> <http://example.org/ns#a445> .
+<http://example.org/ns#a446> <http://example.org/ns#a446> <http://example.org/ns#a446> .
+<http://example.org/ns#a447> <http://example.org/ns#a447> <http://example.org/ns#a447> .
+<http://example.org/ns#a448> <http://example.org/ns#a448> <http://example.org/ns#a448> .
+<http://example.org/ns#a449> <http://example.org/ns#a449> <http://example.org/ns#a449> .
+<http://example.org/ns#a450> <http://example.org/ns#a450> <http://example.org/ns#a450> .
+<http://example.org/ns#a451> <http://example.org/ns#a451> <http://example.org/ns#a451> .
+<http://example.org/ns#a452> <http://example.org/ns#a452> <http://example.org/ns#a452> .
+<http://example.org/ns#a453> <http://example.org/ns#a453> <http://example.org/ns#a453> .
+<http://example.org/ns#a454> <http://example.org/ns#a454> <http://example.org/ns#a454> .
+<http://example.org/ns#a455> <http://example.org/ns#a455> <http://example.org/ns#a455> .
+<http://example.org/ns#a456> <http://example.org/ns#a456> <http://example.org/ns#a456> .
+<http://example.org/ns#a457> <http://example.org/ns#a457> <http://example.org/ns#a457> .
+<http://example.org/ns#a458> <http://example.org/ns#a458> <http://example.org/ns#a458> .
+<http://example.org/ns#a459> <http://example.org/ns#a459> <http://example.org/ns#a459> .
+<http://example.org/ns#a460> <http://example.org/ns#a460> <http://example.org/ns#a460> .
+<http://example.org/ns#a461> <http://example.org/ns#a461> <http://example.org/ns#a461> .
+<http://example.org/ns#a462> <http://example.org/ns#a462> <http://example.org/ns#a462> .
+<http://example.org/ns#a463> <http://example.org/ns#a463> <http://example.org/ns#a463> .
+<http://example.org/ns#a464> <http://example.org/ns#a464> <http://example.org/ns#a464> .
+<http://example.org/ns#a465> <http://example.org/ns#a465> <http://example.org/ns#a465> .
+<http://example.org/ns#a466> <http://example.org/ns#a466> <http://example.org/ns#a466> .
+<http://example.org/ns#a467> <http://example.org/ns#a467> <http://example.org/ns#a467> .
+<http://example.org/ns#a468> <http://example.org/ns#a468> <http://example.org/ns#a468> .
+<http://example.org/ns#a469> <http://example.org/ns#a469> <http://example.org/ns#a469> .
+<http://example.org/ns#a470> <http://example.org/ns#a470> <http://example.org/ns#a470> .
+<http://example.org/ns#a471> <http://example.org/ns#a471> <http://example.org/ns#a471> .
+<http://example.org/ns#a472> <http://example.org/ns#a472> <http://example.org/ns#a472> .
+<http://example.org/ns#a473> <http://example.org/ns#a473> <http://example.org/ns#a473> .
+<http://example.org/ns#a474> <http://example.org/ns#a474> <http://example.org/ns#a474> .
+<http://example.org/ns#a475> <http://example.org/ns#a475> <http://example.org/ns#a475> .
+<http://example.org/ns#a476> <http://example.org/ns#a476> <http://example.org/ns#a476> .
+<http://example.org/ns#a477> <http://example.org/ns#a477> <http://example.org/ns#a477> .
+<http://example.org/ns#a478> <http://example.org/ns#a478> <http://example.org/ns#a478> .
+<http://example.org/ns#a479> <http://example.org/ns#a479> <http://example.org/ns#a479> .
+<http://example.org/ns#a480> <http://example.org/ns#a480> <http://example.org/ns#a480> .
+<http://example.org/ns#a481> <http://example.org/ns#a481> <http://example.org/ns#a481> .
+<http://example.org/ns#a482> <http://example.org/ns#a482> <http://example.org/ns#a482> .
+<http://example.org/ns#a483> <http://example.org/ns#a483> <http://example.org/ns#a483> .
+<http://example.org/ns#a484> <http://example.org/ns#a484> <http://example.org/ns#a484> .
+<http://example.org/ns#a485> <http://example.org/ns#a485> <http://example.org/ns#a485> .
+<http://example.org/ns#a486> <http://example.org/ns#a486> <http://example.org/ns#a486> .
+<http://example.org/ns#a487> <http://example.org/ns#a487> <http://example.org/ns#a487> .
+<http://example.org/ns#a488> <http://example.org/ns#a488> <http://example.org/ns#a488> .
+<http://example.org/ns#a489> <http://example.org/ns#a489> <http://example.org/ns#a489> .
+<http://example.org/ns#a490> <http://example.org/ns#a490> <http://example.org/ns#a490> .
+<http://example.org/ns#a491> <http://example.org/ns#a491> <http://example.org/ns#a491> .
+<http://example.org/ns#a492> <http://example.org/ns#a492> <http://example.org/ns#a492> .
+<http://example.org/ns#a493> <http://example.org/ns#a493> <http://example.org/ns#a493> .
+<http://example.org/ns#a494> <http://example.org/ns#a494> <http://example.org/ns#a494> .
+<http://example.org/ns#a495> <http://example.org/ns#a495> <http://example.org/ns#a495> .
+<http://example.org/ns#a496> <http://example.org/ns#a496> <http://example.org/ns#a496> .
+<http://example.org/ns#a497> <http://example.org/ns#a497> <http://example.org/ns#a497> .
+<http://example.org/ns#a498> <http://example.org/ns#a498> <http://example.org/ns#a498> .
+<http://example.org/ns#a499> <http://example.org/ns#a499> <http://example.org/ns#a499> .
+<http://example.org/ns#a500> <http://example.org/ns#a500> <http://example.org/ns#a500> .
+<http://example.org/ns#a501> <http://example.org/ns#a501> <http://example.org/ns#a501> .
+<http://example.org/ns#a502> <http://example.org/ns#a502> <http://example.org/ns#a502> .
+<http://example.org/ns#a503> <http://example.org/ns#a503> <http://example.org/ns#a503> .
+<http://example.org/ns#a504> <http://example.org/ns#a504> <http://example.org/ns#a504> .
+<http://example.org/ns#a505> <http://example.org/ns#a505> <http://example.org/ns#a505> .
+<http://example.org/ns#a506> <http://example.org/ns#a506> <http://example.org/ns#a506> .
+<http://example.org/ns#a507> <http://example.org/ns#a507> <http://example.org/ns#a507> .
+<http://example.org/ns#a508> <http://example.org/ns#a508> <http://example.org/ns#a508> .
+<http://example.org/ns#a509> <http://example.org/ns#a509> <http://example.org/ns#a509> .
+<http://example.org/ns#a510> <http://example.org/ns#a510> <http://example.org/ns#a510> .
+<http://example.org/ns#a511> <http://example.org/ns#a511> <http://example.org/ns#a511> .
+<http://example.org/ns#a512> <http://example.org/ns#a512> <http://example.org/ns#a512> .
+<http://example.org/ns#a513> <http://example.org/ns#a513> <http://example.org/ns#a513> .
+<http://example.org/ns#a514> <http://example.org/ns#a514> <http://example.org/ns#a514> .
+<http://example.org/ns#a515> <http://example.org/ns#a515> <http://example.org/ns#a515> .
+<http://example.org/ns#a516> <http://example.org/ns#a516> <http://example.org/ns#a516> .
+<http://example.org/ns#a517> <http://example.org/ns#a517> <http://example.org/ns#a517> .
+<http://example.org/ns#a518> <http://example.org/ns#a518> <http://example.org/ns#a518> .
+<http://example.org/ns#a519> <http://example.org/ns#a519> <http://example.org/ns#a519> .
+<http://example.org/ns#a520> <http://example.org/ns#a520> <http://example.org/ns#a520> .
+<http://example.org/ns#a521> <http://example.org/ns#a521> <http://example.org/ns#a521> .
+<http://example.org/ns#a522> <http://example.org/ns#a522> <http://example.org/ns#a522> .
+<http://example.org/ns#a523> <http://example.org/ns#a523> <http://example.org/ns#a523> .
+<http://example.org/ns#a524> <http://example.org/ns#a524> <http://example.org/ns#a524> .
+<http://example.org/ns#a525> <http://example.org/ns#a525> <http://example.org/ns#a525> .
+<http://example.org/ns#a526> <http://example.org/ns#a526> <http://example.org/ns#a526> .
+<http://example.org/ns#a527> <http://example.org/ns#a527> <http://example.org/ns#a527> .
+<http://example.org/ns#a528> <http://example.org/ns#a528> <http://example.org/ns#a528> .
+<http://example.org/ns#a529> <http://example.org/ns#a529> <http://example.org/ns#a529> .
+<http://example.org/ns#a530> <http://example.org/ns#a530> <http://example.org/ns#a530> .
+<http://example.org/ns#a531> <http://example.org/ns#a531> <http://example.org/ns#a531> .
+<http://example.org/ns#a532> <http://example.org/ns#a532> <http://example.org/ns#a532> .
+<http://example.org/ns#a533> <http://example.org/ns#a533> <http://example.org/ns#a533> .
+<http://example.org/ns#a534> <http://example.org/ns#a534> <http://example.org/ns#a534> .
+<http://example.org/ns#a535> <http://example.org/ns#a535> <http://example.org/ns#a535> .
+<http://example.org/ns#a536> <http://example.org/ns#a536> <http://example.org/ns#a536> .
+<http://example.org/ns#a537> <http://example.org/ns#a537> <http://example.org/ns#a537> .
+<http://example.org/ns#a538> <http://example.org/ns#a538> <http://example.org/ns#a538> .
+<http://example.org/ns#a539> <http://example.org/ns#a539> <http://example.org/ns#a539> .
+<http://example.org/ns#a540> <http://example.org/ns#a540> <http://example.org/ns#a540> .
+<http://example.org/ns#a541> <http://example.org/ns#a541> <http://example.org/ns#a541> .
+<http://example.org/ns#a542> <http://example.org/ns#a542> <http://example.org/ns#a542> .
+<http://example.org/ns#a543> <http://example.org/ns#a543> <http://example.org/ns#a543> .
+<http://example.org/ns#a544> <http://example.org/ns#a544> <http://example.org/ns#a544> .
+<http://example.org/ns#a545> <http://example.org/ns#a545> <http://example.org/ns#a545> .
+<http://example.org/ns#a546> <http://example.org/ns#a546> <http://example.org/ns#a546> .
+<http://example.org/ns#a547> <http://example.org/ns#a547> <http://example.org/ns#a547> .
+<http://example.org/ns#a548> <http://example.org/ns#a548> <http://example.org/ns#a548> .
+<http://example.org/ns#a549> <http://example.org/ns#a549> <http://example.org/ns#a549> .
+<http://example.org/ns#a550> <http://example.org/ns#a550> <http://example.org/ns#a550> .
+<http://example.org/ns#a551> <http://example.org/ns#a551> <http://example.org/ns#a551> .
+<http://example.org/ns#a552> <http://example.org/ns#a552> <http://example.org/ns#a552> .
+<http://example.org/ns#a553> <http://example.org/ns#a553> <http://example.org/ns#a553> .
+<http://example.org/ns#a554> <http://example.org/ns#a554> <http://example.org/ns#a554> .
+<http://example.org/ns#a555> <http://example.org/ns#a555> <http://example.org/ns#a555> .
+<http://example.org/ns#a556> <http://example.org/ns#a556> <http://example.org/ns#a556> .
+<http://example.org/ns#a557> <http://example.org/ns#a557> <http://example.org/ns#a557> .
+<http://example.org/ns#a558> <http://example.org/ns#a558> <http://example.org/ns#a558> .
+<http://example.org/ns#a559> <http://example.org/ns#a559> <http://example.org/ns#a559> .
+<http://example.org/ns#a560> <http://example.org/ns#a560> <http://example.org/ns#a560> .
+<http://example.org/ns#a561> <http://example.org/ns#a561> <http://example.org/ns#a561> .
+<http://example.org/ns#a562> <http://example.org/ns#a562> <http://example.org/ns#a562> .
+<http://example.org/ns#a563> <http://example.org/ns#a563> <http://example.org/ns#a563> .
+<http://example.org/ns#a564> <http://example.org/ns#a564> <http://example.org/ns#a564> .
+<http://example.org/ns#a565> <http://example.org/ns#a565> <http://example.org/ns#a565> .
+<http://example.org/ns#a566> <http://example.org/ns#a566> <http://example.org/ns#a566> .
+<http://example.org/ns#a567> <http://example.org/ns#a567> <http://example.org/ns#a567> .
+<http://example.org/ns#a568> <http://example.org/ns#a568> <http://example.org/ns#a568> .
+<http://example.org/ns#a569> <http://example.org/ns#a569> <http://example.org/ns#a569> .
+<http://example.org/ns#a570> <http://example.org/ns#a570> <http://example.org/ns#a570> .
+<http://example.org/ns#a571> <http://example.org/ns#a571> <http://example.org/ns#a571> .
+<http://example.org/ns#a572> <http://example.org/ns#a572> <http://example.org/ns#a572> .
+<http://example.org/ns#a573> <http://example.org/ns#a573> <http://example.org/ns#a573> .
+<http://example.org/ns#a574> <http://example.org/ns#a574> <http://example.org/ns#a574> .
+<http://example.org/ns#a575> <http://example.org/ns#a575> <http://example.org/ns#a575> .
+<http://example.org/ns#a576> <http://example.org/ns#a576> <http://example.org/ns#a576> .
+<http://example.org/ns#a577> <http://example.org/ns#a577> <http://example.org/ns#a577> .
+<http://example.org/ns#a578> <http://example.org/ns#a578> <http://example.org/ns#a578> .
+<http://example.org/ns#a579> <http://example.org/ns#a579> <http://example.org/ns#a579> .
+<http://example.org/ns#a580> <http://example.org/ns#a580> <http://example.org/ns#a580> .
+<http://example.org/ns#a581> <http://example.org/ns#a581> <http://example.org/ns#a581> .
+<http://example.org/ns#a582> <http://example.org/ns#a582> <http://example.org/ns#a582> .
+<http://example.org/ns#a583> <http://example.org/ns#a583> <http://example.org/ns#a583> .
+<http://example.org/ns#a584> <http://example.org/ns#a584> <http://example.org/ns#a584> .
+<http://example.org/ns#a585> <http://example.org/ns#a585> <http://example.org/ns#a585> .
+<http://example.org/ns#a586> <http://example.org/ns#a586> <http://example.org/ns#a586> .
+<http://example.org/ns#a587> <http://example.org/ns#a587> <http://example.org/ns#a587> .
+<http://example.org/ns#a588> <http://example.org/ns#a588> <http://example.org/ns#a588> .
+<http://example.org/ns#a589> <http://example.org/ns#a589> <http://example.org/ns#a589> .
+<http://example.org/ns#a590> <http://example.org/ns#a590> <http://example.org/ns#a590> .
+<http://example.org/ns#a591> <http://example.org/ns#a591> <http://example.org/ns#a591> .
+<http://example.org/ns#a592> <http://example.org/ns#a592> <http://example.org/ns#a592> .
+<http://example.org/ns#a593> <http://example.org/ns#a593> <http://example.org/ns#a593> .
+<http://example.org/ns#a594> <http://example.org/ns#a594> <http://example.org/ns#a594> .
+<http://example.org/ns#a595> <http://example.org/ns#a595> <http://example.org/ns#a595> .
+<http://example.org/ns#a596> <http://example.org/ns#a596> <http://example.org/ns#a596> .
+<http://example.org/ns#a597> <http://example.org/ns#a597> <http://example.org/ns#a597> .
+<http://example.org/ns#a598> <http://example.org/ns#a598> <http://example.org/ns#a598> .
+<http://example.org/ns#a599> <http://example.org/ns#a599> <http://example.org/ns#a599> .
+<http://example.org/ns#a600> <http://example.org/ns#a600> <http://example.org/ns#a600> .
+<http://example.org/ns#a601> <http://example.org/ns#a601> <http://example.org/ns#a601> .
+<http://example.org/ns#a602> <http://example.org/ns#a602> <http://example.org/ns#a602> .
+<http://example.org/ns#a603> <http://example.org/ns#a603> <http://example.org/ns#a603> .
+<http://example.org/ns#a604> <http://example.org/ns#a604> <http://example.org/ns#a604> .
+<http://example.org/ns#a605> <http://example.org/ns#a605> <http://example.org/ns#a605> .
+<http://example.org/ns#a606> <http://example.org/ns#a606> <http://example.org/ns#a606> .
+<http://example.org/ns#a607> <http://example.org/ns#a607> <http://example.org/ns#a607> .
+<http://example.org/ns#a608> <http://example.org/ns#a608> <http://example.org/ns#a608> .
+<http://example.org/ns#a609> <http://example.org/ns#a609> <http://example.org/ns#a609> .
+<http://example.org/ns#a610> <http://example.org/ns#a610> <http://example.org/ns#a610> .
+<http://example.org/ns#a611> <http://example.org/ns#a611> <http://example.org/ns#a611> .
+<http://example.org/ns#a612> <http://example.org/ns#a612> <http://example.org/ns#a612> .
+<http://example.org/ns#a613> <http://example.org/ns#a613> <http://example.org/ns#a613> .
+<http://example.org/ns#a614> <http://example.org/ns#a614> <http://example.org/ns#a614> .
+<http://example.org/ns#a615> <http://example.org/ns#a615> <http://example.org/ns#a615> .
+<http://example.org/ns#a616> <http://example.org/ns#a616> <http://example.org/ns#a616> .
+<http://example.org/ns#a617> <http://example.org/ns#a617> <http://example.org/ns#a617> .
+<http://example.org/ns#a618> <http://example.org/ns#a618> <http://example.org/ns#a618> .
+<http://example.org/ns#a619> <http://example.org/ns#a619> <http://example.org/ns#a619> .
+<http://example.org/ns#a620> <http://example.org/ns#a620> <http://example.org/ns#a620> .
+<http://example.org/ns#a621> <http://example.org/ns#a621> <http://example.org/ns#a621> .
+<http://example.org/ns#a622> <http://example.org/ns#a622> <http://example.org/ns#a622> .
+<http://example.org/ns#a623> <http://example.org/ns#a623> <http://example.org/ns#a623> .
+<http://example.org/ns#a624> <http://example.org/ns#a624> <http://example.org/ns#a624> .
+<http://example.org/ns#a625> <http://example.org/ns#a625> <http://example.org/ns#a625> .
+<http://example.org/ns#a626> <http://example.org/ns#a626> <http://example.org/ns#a626> .
+<http://example.org/ns#a627> <http://example.org/ns#a627> <http://example.org/ns#a627> .
+<http://example.org/ns#a628> <http://example.org/ns#a628> <http://example.org/ns#a628> .
+<http://example.org/ns#a629> <http://example.org/ns#a629> <http://example.org/ns#a629> .
+<http://example.org/ns#a630> <http://example.org/ns#a630> <http://example.org/ns#a630> .
+<http://example.org/ns#a631> <http://example.org/ns#a631> <http://example.org/ns#a631> .
+<http://example.org/ns#a632> <http://example.org/ns#a632> <http://example.org/ns#a632> .
+<http://example.org/ns#a633> <http://example.org/ns#a633> <http://example.org/ns#a633> .
+<http://example.org/ns#a634> <http://example.org/ns#a634> <http://example.org/ns#a634> .
+<http://example.org/ns#a635> <http://example.org/ns#a635> <http://example.org/ns#a635> .
+<http://example.org/ns#a636> <http://example.org/ns#a636> <http://example.org/ns#a636> .
+<http://example.org/ns#a637> <http://example.org/ns#a637> <http://example.org/ns#a637> .
+<http://example.org/ns#a638> <http://example.org/ns#a638> <http://example.org/ns#a638> .
+<http://example.org/ns#a639> <http://example.org/ns#a639> <http://example.org/ns#a639> .
+<http://example.org/ns#a640> <http://example.org/ns#a640> <http://example.org/ns#a640> .
+<http://example.org/ns#a641> <http://example.org/ns#a641> <http://example.org/ns#a641> .
+<http://example.org/ns#a642> <http://example.org/ns#a642> <http://example.org/ns#a642> .
+<http://example.org/ns#a643> <http://example.org/ns#a643> <http://example.org/ns#a643> .
+<http://example.org/ns#a644> <http://example.org/ns#a644> <http://example.org/ns#a644> .
+<http://example.org/ns#a645> <http://example.org/ns#a645> <http://example.org/ns#a645> .
+<http://example.org/ns#a646> <http://example.org/ns#a646> <http://example.org/ns#a646> .
+<http://example.org/ns#a647> <http://example.org/ns#a647> <http://example.org/ns#a647> .
+<http://example.org/ns#a648> <http://example.org/ns#a648> <http://example.org/ns#a648> .
+<http://example.org/ns#a649> <http://example.org/ns#a649> <http://example.org/ns#a649> .
+<http://example.org/ns#a650> <http://example.org/ns#a650> <http://example.org/ns#a650> .
+<http://example.org/ns#a651> <http://example.org/ns#a651> <http://example.org/ns#a651> .
+<http://example.org/ns#a652> <http://example.org/ns#a652> <http://example.org/ns#a652> .
+<http://example.org/ns#a653> <http://example.org/ns#a653> <http://example.org/ns#a653> .
+<http://example.org/ns#a654> <http://example.org/ns#a654> <http://example.org/ns#a654> .
+<http://example.org/ns#a655> <http://example.org/ns#a655> <http://example.org/ns#a655> .
+<http://example.org/ns#a656> <http://example.org/ns#a656> <http://example.org/ns#a656> .
+<http://example.org/ns#a657> <http://example.org/ns#a657> <http://example.org/ns#a657> .
+<http://example.org/ns#a658> <http://example.org/ns#a658> <http://example.org/ns#a658> .
+<http://example.org/ns#a659> <http://example.org/ns#a659> <http://example.org/ns#a659> .
+<http://example.org/ns#a660> <http://example.org/ns#a660> <http://example.org/ns#a660> .
+<http://example.org/ns#a661> <http://example.org/ns#a661> <http://example.org/ns#a661> .
+<http://example.org/ns#a662> <http://example.org/ns#a662> <http://example.org/ns#a662> .
+<http://example.org/ns#a663> <http://example.org/ns#a663> <http://example.org/ns#a663> .
+<http://example.org/ns#a664> <http://example.org/ns#a664> <http://example.org/ns#a664> .
+<http://example.org/ns#a665> <http://example.org/ns#a665> <http://example.org/ns#a665> .
+<http://example.org/ns#a666> <http://example.org/ns#a666> <http://example.org/ns#a666> .
+<http://example.org/ns#a667> <http://example.org/ns#a667> <http://example.org/ns#a667> .
+<http://example.org/ns#a668> <http://example.org/ns#a668> <http://example.org/ns#a668> .
+<http://example.org/ns#a669> <http://example.org/ns#a669> <http://example.org/ns#a669> .
+<http://example.org/ns#a670> <http://example.org/ns#a670> <http://example.org/ns#a670> .
+<http://example.org/ns#a671> <http://example.org/ns#a671> <http://example.org/ns#a671> .
+<http://example.org/ns#a672> <http://example.org/ns#a672> <http://example.org/ns#a672> .
+<http://example.org/ns#a673> <http://example.org/ns#a673> <http://example.org/ns#a673> .
+<http://example.org/ns#a674> <http://example.org/ns#a674> <http://example.org/ns#a674> .
+<http://example.org/ns#a675> <http://example.org/ns#a675> <http://example.org/ns#a675> .
+<http://example.org/ns#a676> <http://example.org/ns#a676> <http://example.org/ns#a676> .
+<http://example.org/ns#a677> <http://example.org/ns#a677> <http://example.org/ns#a677> .
+<http://example.org/ns#a678> <http://example.org/ns#a678> <http://example.org/ns#a678> .
+<http://example.org/ns#a679> <http://example.org/ns#a679> <http://example.org/ns#a679> .
+<http://example.org/ns#a680> <http://example.org/ns#a680> <http://example.org/ns#a680> .
+<http://example.org/ns#a681> <http://example.org/ns#a681> <http://example.org/ns#a681> .
+<http://example.org/ns#a682> <http://example.org/ns#a682> <http://example.org/ns#a682> .
+<http://example.org/ns#a683> <http://example.org/ns#a683> <http://example.org/ns#a683> .
+<http://example.org/ns#a684> <http://example.org/ns#a684> <http://example.org/ns#a684> .
+<http://example.org/ns#a685> <http://example.org/ns#a685> <http://example.org/ns#a685> .
+<http://example.org/ns#a686> <http://example.org/ns#a686> <http://example.org/ns#a686> .
+<http://example.org/ns#a687> <http://example.org/ns#a687> <http://example.org/ns#a687> .
+<http://example.org/ns#a688> <http://example.org/ns#a688> <http://example.org/ns#a688> .
+<http://example.org/ns#a689> <http://example.org/ns#a689> <http://example.org/ns#a689> .
+<http://example.org/ns#a690> <http://example.org/ns#a690> <http://example.org/ns#a690> .
+<http://example.org/ns#a691> <http://example.org/ns#a691> <http://example.org/ns#a691> .
+<http://example.org/ns#a692> <http://example.org/ns#a692> <http://example.org/ns#a692> .
+<http://example.org/ns#a693> <http://example.org/ns#a693> <http://example.org/ns#a693> .
+<http://example.org/ns#a694> <http://example.org/ns#a694> <http://example.org/ns#a694> .
+<http://example.org/ns#a695> <http://example.org/ns#a695> <http://example.org/ns#a695> .
+<http://example.org/ns#a696> <http://example.org/ns#a696> <http://example.org/ns#a696> .
+<http://example.org/ns#a697> <http://example.org/ns#a697> <http://example.org/ns#a697> .
+<http://example.org/ns#a698> <http://example.org/ns#a698> <http://example.org/ns#a698> .
+<http://example.org/ns#a699> <http://example.org/ns#a699> <http://example.org/ns#a699> .
+<http://example.org/ns#a700> <http://example.org/ns#a700> <http://example.org/ns#a700> .
+<http://example.org/ns#a701> <http://example.org/ns#a701> <http://example.org/ns#a701> .
+<http://example.org/ns#a702> <http://example.org/ns#a702> <http://example.org/ns#a702> .
+<http://example.org/ns#a703> <http://example.org/ns#a703> <http://example.org/ns#a703> .
+<http://example.org/ns#a704> <http://example.org/ns#a704> <http://example.org/ns#a704> .
+<http://example.org/ns#a705> <http://example.org/ns#a705> <http://example.org/ns#a705> .
+<http://example.org/ns#a706> <http://example.org/ns#a706> <http://example.org/ns#a706> .
+<http://example.org/ns#a707> <http://example.org/ns#a707> <http://example.org/ns#a707> .
+<http://example.org/ns#a708> <http://example.org/ns#a708> <http://example.org/ns#a708> .
+<http://example.org/ns#a709> <http://example.org/ns#a709> <http://example.org/ns#a709> .
+<http://example.org/ns#a710> <http://example.org/ns#a710> <http://example.org/ns#a710> .
+<http://example.org/ns#a711> <http://example.org/ns#a711> <http://example.org/ns#a711> .
+<http://example.org/ns#a712> <http://example.org/ns#a712> <http://example.org/ns#a712> .
+<http://example.org/ns#a713> <http://example.org/ns#a713> <http://example.org/ns#a713> .
+<http://example.org/ns#a714> <http://example.org/ns#a714> <http://example.org/ns#a714> .
+<http://example.org/ns#a715> <http://example.org/ns#a715> <http://example.org/ns#a715> .
+<http://example.org/ns#a716> <http://example.org/ns#a716> <http://example.org/ns#a716> .
+<http://example.org/ns#a717> <http://example.org/ns#a717> <http://example.org/ns#a717> .
+<http://example.org/ns#a718> <http://example.org/ns#a718> <http://example.org/ns#a718> .
+<http://example.org/ns#a719> <http://example.org/ns#a719> <http://example.org/ns#a719> .
+<http://example.org/ns#a720> <http://example.org/ns#a720> <http://example.org/ns#a720> .
+<http://example.org/ns#a721> <http://example.org/ns#a721> <http://example.org/ns#a721> .
+<http://example.org/ns#a722> <http://example.org/ns#a722> <http://example.org/ns#a722> .
+<http://example.org/ns#a723> <http://example.org/ns#a723> <http://example.org/ns#a723> .
+<http://example.org/ns#a724> <http://example.org/ns#a724> <http://example.org/ns#a724> .
+<http://example.org/ns#a725> <http://example.org/ns#a725> <http://example.org/ns#a725> .
+<http://example.org/ns#a726> <http://example.org/ns#a726> <http://example.org/ns#a726> .
+<http://example.org/ns#a727> <http://example.org/ns#a727> <http://example.org/ns#a727> .
+<http://example.org/ns#a728> <http://example.org/ns#a728> <http://example.org/ns#a728> .
+<http://example.org/ns#a729> <http://example.org/ns#a729> <http://example.org/ns#a729> .
+<http://example.org/ns#a730> <http://example.org/ns#a730> <http://example.org/ns#a730> .
+<http://example.org/ns#a731> <http://example.org/ns#a731> <http://example.org/ns#a731> .
+<http://example.org/ns#a732> <http://example.org/ns#a732> <http://example.org/ns#a732> .
+<http://example.org/ns#a733> <http://example.org/ns#a733> <http://example.org/ns#a733> .
+<http://example.org/ns#a734> <http://example.org/ns#a734> <http://example.org/ns#a734> .
+<http://example.org/ns#a735> <http://example.org/ns#a735> <http://example.org/ns#a735> .
+<http://example.org/ns#a736> <http://example.org/ns#a736> <http://example.org/ns#a736> .
+<http://example.org/ns#a737> <http://example.org/ns#a737> <http://example.org/ns#a737> .
+<http://example.org/ns#a738> <http://example.org/ns#a738> <http://example.org/ns#a738> .
+<http://example.org/ns#a739> <http://example.org/ns#a739> <http://example.org/ns#a739> .
+<http://example.org/ns#a740> <http://example.org/ns#a740> <http://example.org/ns#a740> .
+<http://example.org/ns#a741> <http://example.org/ns#a741> <http://example.org/ns#a741> .
+<http://example.org/ns#a742> <http://example.org/ns#a742> <http://example.org/ns#a742> .
+<http://example.org/ns#a743> <http://example.org/ns#a743> <http://example.org/ns#a743> .
+<http://example.org/ns#a744> <http://example.org/ns#a744> <http://example.org/ns#a744> .
+<http://example.org/ns#a745> <http://example.org/ns#a745> <http://example.org/ns#a745> .
+<http://example.org/ns#a746> <http://example.org/ns#a746> <http://example.org/ns#a746> .
+<http://example.org/ns#a747> <http://example.org/ns#a747> <http://example.org/ns#a747> .
+<http://example.org/ns#a748> <http://example.org/ns#a748> <http://example.org/ns#a748> .
+<http://example.org/ns#a749> <http://example.org/ns#a749> <http://example.org/ns#a749> .
+<http://example.org/ns#a750> <http://example.org/ns#a750> <http://example.org/ns#a750> .
+<http://example.org/ns#a751> <http://example.org/ns#a751> <http://example.org/ns#a751> .
+<http://example.org/ns#a752> <http://example.org/ns#a752> <http://example.org/ns#a752> .
+<http://example.org/ns#a753> <http://example.org/ns#a753> <http://example.org/ns#a753> .
+<http://example.org/ns#a754> <http://example.org/ns#a754> <http://example.org/ns#a754> .
+<http://example.org/ns#a755> <http://example.org/ns#a755> <http://example.org/ns#a755> .
+<http://example.org/ns#a756> <http://example.org/ns#a756> <http://example.org/ns#a756> .
+<http://example.org/ns#a757> <http://example.org/ns#a757> <http://example.org/ns#a757> .
+<http://example.org/ns#a758> <http://example.org/ns#a758> <http://example.org/ns#a758> .
+<http://example.org/ns#a759> <http://example.org/ns#a759> <http://example.org/ns#a759> .
+<http://example.org/ns#a760> <http://example.org/ns#a760> <http://example.org/ns#a760> .
+<http://example.org/ns#a761> <http://example.org/ns#a761> <http://example.org/ns#a761> .
+<http://example.org/ns#a762> <http://example.org/ns#a762> <http://example.org/ns#a762> .
+<http://example.org/ns#a763> <http://example.org/ns#a763> <http://example.org/ns#a763> .
+<http://example.org/ns#a764> <http://example.org/ns#a764> <http://example.org/ns#a764> .
+<http://example.org/ns#a765> <http://example.org/ns#a765> <http://example.org/ns#a765> .
+<http://example.org/ns#a766> <http://example.org/ns#a766> <http://example.org/ns#a766> .
+<http://example.org/ns#a767> <http://example.org/ns#a767> <http://example.org/ns#a767> .
+<http://example.org/ns#a768> <http://example.org/ns#a768> <http://example.org/ns#a768> .
+<http://example.org/ns#a769> <http://example.org/ns#a769> <http://example.org/ns#a769> .
+<http://example.org/ns#a770> <http://example.org/ns#a770> <http://example.org/ns#a770> .
+<http://example.org/ns#a771> <http://example.org/ns#a771> <http://example.org/ns#a771> .
+<http://example.org/ns#a772> <http://example.org/ns#a772> <http://example.org/ns#a772> .
+<http://example.org/ns#a773> <http://example.org/ns#a773> <http://example.org/ns#a773> .
+<http://example.org/ns#a774> <http://example.org/ns#a774> <http://example.org/ns#a774> .
+<http://example.org/ns#a775> <http://example.org/ns#a775> <http://example.org/ns#a775> .
+<http://example.org/ns#a776> <http://example.org/ns#a776> <http://example.org/ns#a776> .
+<http://example.org/ns#a777> <http://example.org/ns#a777> <http://example.org/ns#a777> .
+<http://example.org/ns#a778> <http://example.org/ns#a778> <http://example.org/ns#a778> .
+<http://example.org/ns#a779> <http://example.org/ns#a779> <http://example.org/ns#a779> .
+<http://example.org/ns#a780> <http://example.org/ns#a780> <http://example.org/ns#a780> .
+<http://example.org/ns#a781> <http://example.org/ns#a781> <http://example.org/ns#a781> .
+<http://example.org/ns#a782> <http://example.org/ns#a782> <http://example.org/ns#a782> .
+<http://example.org/ns#a783> <http://example.org/ns#a783> <http://example.org/ns#a783> .
+<http://example.org/ns#a784> <http://example.org/ns#a784> <http://example.org/ns#a784> .
+<http://example.org/ns#a785> <http://example.org/ns#a785> <http://example.org/ns#a785> .
+<http://example.org/ns#a786> <http://example.org/ns#a786> <http://example.org/ns#a786> .
+<http://example.org/ns#a787> <http://example.org/ns#a787> <http://example.org/ns#a787> .
+<http://example.org/ns#a788> <http://example.org/ns#a788> <http://example.org/ns#a788> .
+<http://example.org/ns#a789> <http://example.org/ns#a789> <http://example.org/ns#a789> .
+<http://example.org/ns#a790> <http://example.org/ns#a790> <http://example.org/ns#a790> .
+<http://example.org/ns#a791> <http://example.org/ns#a791> <http://example.org/ns#a791> .
+<http://example.org/ns#a792> <http://example.org/ns#a792> <http://example.org/ns#a792> .
+<http://example.org/ns#a793> <http://example.org/ns#a793> <http://example.org/ns#a793> .
+<http://example.org/ns#a794> <http://example.org/ns#a794> <http://example.org/ns#a794> .
+<http://example.org/ns#a795> <http://example.org/ns#a795> <http://example.org/ns#a795> .
+<http://example.org/ns#a796> <http://example.org/ns#a796> <http://example.org/ns#a796> .
+<http://example.org/ns#a797> <http://example.org/ns#a797> <http://example.org/ns#a797> .
+<http://example.org/ns#a798> <http://example.org/ns#a798> <http://example.org/ns#a798> .
+<http://example.org/ns#a799> <http://example.org/ns#a799> <http://example.org/ns#a799> .
+<http://example.org/ns#a800> <http://example.org/ns#a800> <http://example.org/ns#a800> .
+<http://example.org/ns#a801> <http://example.org/ns#a801> <http://example.org/ns#a801> .
+<http://example.org/ns#a802> <http://example.org/ns#a802> <http://example.org/ns#a802> .
+<http://example.org/ns#a803> <http://example.org/ns#a803> <http://example.org/ns#a803> .
+<http://example.org/ns#a804> <http://example.org/ns#a804> <http://example.org/ns#a804> .
+<http://example.org/ns#a805> <http://example.org/ns#a805> <http://example.org/ns#a805> .
+<http://example.org/ns#a806> <http://example.org/ns#a806> <http://example.org/ns#a806> .
+<http://example.org/ns#a807> <http://example.org/ns#a807> <http://example.org/ns#a807> .
+<http://example.org/ns#a808> <http://example.org/ns#a808> <http://example.org/ns#a808> .
+<http://example.org/ns#a809> <http://example.org/ns#a809> <http://example.org/ns#a809> .
+<http://example.org/ns#a810> <http://example.org/ns#a810> <http://example.org/ns#a810> .
+<http://example.org/ns#a811> <http://example.org/ns#a811> <http://example.org/ns#a811> .
+<http://example.org/ns#a812> <http://example.org/ns#a812> <http://example.org/ns#a812> .
+<http://example.org/ns#a813> <http://example.org/ns#a813> <http://example.org/ns#a813> .
+<http://example.org/ns#a814> <http://example.org/ns#a814> <http://example.org/ns#a814> .
+<http://example.org/ns#a815> <http://example.org/ns#a815> <http://example.org/ns#a815> .
+<http://example.org/ns#a816> <http://example.org/ns#a816> <http://example.org/ns#a816> .
+<http://example.org/ns#a817> <http://example.org/ns#a817> <http://example.org/ns#a817> .
+<http://example.org/ns#a818> <http://example.org/ns#a818> <http://example.org/ns#a818> .
+<http://example.org/ns#a819> <http://example.org/ns#a819> <http://example.org/ns#a819> .
+<http://example.org/ns#a820> <http://example.org/ns#a820> <http://example.org/ns#a820> .
+<http://example.org/ns#a821> <http://example.org/ns#a821> <http://example.org/ns#a821> .
+<http://example.org/ns#a822> <http://example.org/ns#a822> <http://example.org/ns#a822> .
+<http://example.org/ns#a823> <http://example.org/ns#a823> <http://example.org/ns#a823> .
+<http://example.org/ns#a824> <http://example.org/ns#a824> <http://example.org/ns#a824> .
+<http://example.org/ns#a825> <http://example.org/ns#a825> <http://example.org/ns#a825> .
+<http://example.org/ns#a826> <http://example.org/ns#a826> <http://example.org/ns#a826> .
+<http://example.org/ns#a827> <http://example.org/ns#a827> <http://example.org/ns#a827> .
+<http://example.org/ns#a828> <http://example.org/ns#a828> <http://example.org/ns#a828> .
+<http://example.org/ns#a829> <http://example.org/ns#a829> <http://example.org/ns#a829> .
+<http://example.org/ns#a830> <http://example.org/ns#a830> <http://example.org/ns#a830> .
+<http://example.org/ns#a831> <http://example.org/ns#a831> <http://example.org/ns#a831> .
+<http://example.org/ns#a832> <http://example.org/ns#a832> <http://example.org/ns#a832> .
+<http://example.org/ns#a833> <http://example.org/ns#a833> <http://example.org/ns#a833> .
+<http://example.org/ns#a834> <http://example.org/ns#a834> <http://example.org/ns#a834> .
+<http://example.org/ns#a835> <http://example.org/ns#a835> <http://example.org/ns#a835> .
+<http://example.org/ns#a836> <http://example.org/ns#a836> <http://example.org/ns#a836> .
+<http://example.org/ns#a837> <http://example.org/ns#a837> <http://example.org/ns#a837> .
+<http://example.org/ns#a838> <http://example.org/ns#a838> <http://example.org/ns#a838> .
+<http://example.org/ns#a839> <http://example.org/ns#a839> <http://example.org/ns#a839> .
+<http://example.org/ns#a840> <http://example.org/ns#a840> <http://example.org/ns#a840> .
+<http://example.org/ns#a841> <http://example.org/ns#a841> <http://example.org/ns#a841> .
+<http://example.org/ns#a842> <http://example.org/ns#a842> <http://example.org/ns#a842> .
+<http://example.org/ns#a843> <http://example.org/ns#a843> <http://example.org/ns#a843> .
+<http://example.org/ns#a844> <http://example.org/ns#a844> <http://example.org/ns#a844> .
+<http://example.org/ns#a845> <http://example.org/ns#a845> <http://example.org/ns#a845> .
+<http://example.org/ns#a846> <http://example.org/ns#a846> <http://example.org/ns#a846> .
+<http://example.org/ns#a847> <http://example.org/ns#a847> <http://example.org/ns#a847> .
+<http://example.org/ns#a848> <http://example.org/ns#a848> <http://example.org/ns#a848> .
+<http://example.org/ns#a849> <http://example.org/ns#a849> <http://example.org/ns#a849> .
+<http://example.org/ns#a850> <http://example.org/ns#a850> <http://example.org/ns#a850> .
+<http://example.org/ns#a851> <http://example.org/ns#a851> <http://example.org/ns#a851> .
+<http://example.org/ns#a852> <http://example.org/ns#a852> <http://example.org/ns#a852> .
+<http://example.org/ns#a853> <http://example.org/ns#a853> <http://example.org/ns#a853> .
+<http://example.org/ns#a854> <http://example.org/ns#a854> <http://example.org/ns#a854> .
+<http://example.org/ns#a855> <http://example.org/ns#a855> <http://example.org/ns#a855> .
+<http://example.org/ns#a856> <http://example.org/ns#a856> <http://example.org/ns#a856> .
+<http://example.org/ns#a857> <http://example.org/ns#a857> <http://example.org/ns#a857> .
+<http://example.org/ns#a858> <http://example.org/ns#a858> <http://example.org/ns#a858> .
+<http://example.org/ns#a859> <http://example.org/ns#a859> <http://example.org/ns#a859> .
+<http://example.org/ns#a860> <http://example.org/ns#a860> <http://example.org/ns#a860> .
+<http://example.org/ns#a861> <http://example.org/ns#a861> <http://example.org/ns#a861> .
+<http://example.org/ns#a862> <http://example.org/ns#a862> <http://example.org/ns#a862> .
+<http://example.org/ns#a863> <http://example.org/ns#a863> <http://example.org/ns#a863> .
+<http://example.org/ns#a864> <http://example.org/ns#a864> <http://example.org/ns#a864> .
+<http://example.org/ns#a865> <http://example.org/ns#a865> <http://example.org/ns#a865> .
+<http://example.org/ns#a866> <http://example.org/ns#a866> <http://example.org/ns#a866> .
+<http://example.org/ns#a867> <http://example.org/ns#a867> <http://example.org/ns#a867> .
+<http://example.org/ns#a868> <http://example.org/ns#a868> <http://example.org/ns#a868> .
+<http://example.org/ns#a869> <http://example.org/ns#a869> <http://example.org/ns#a869> .
+<http://example.org/ns#a870> <http://example.org/ns#a870> <http://example.org/ns#a870> .
+<http://example.org/ns#a871> <http://example.org/ns#a871> <http://example.org/ns#a871> .
+<http://example.org/ns#a872> <http://example.org/ns#a872> <http://example.org/ns#a872> .
+<http://example.org/ns#a873> <http://example.org/ns#a873> <http://example.org/ns#a873> .
+<http://example.org/ns#a874> <http://example.org/ns#a874> <http://example.org/ns#a874> .
+<http://example.org/ns#a875> <http://example.org/ns#a875> <http://example.org/ns#a875> .
+<http://example.org/ns#a876> <http://example.org/ns#a876> <http://example.org/ns#a876> .
+<http://example.org/ns#a877> <http://example.org/ns#a877> <http://example.org/ns#a877> .
+<http://example.org/ns#a878> <http://example.org/ns#a878> <http://example.org/ns#a878> .
+<http://example.org/ns#a879> <http://example.org/ns#a879> <http://example.org/ns#a879> .
+<http://example.org/ns#a880> <http://example.org/ns#a880> <http://example.org/ns#a880> .
+<http://example.org/ns#a881> <http://example.org/ns#a881> <http://example.org/ns#a881> .
+<http://example.org/ns#a882> <http://example.org/ns#a882> <http://example.org/ns#a882> .
+<http://example.org/ns#a883> <http://example.org/ns#a883> <http://example.org/ns#a883> .
+<http://example.org/ns#a884> <http://example.org/ns#a884> <http://example.org/ns#a884> .
+<http://example.org/ns#a885> <http://example.org/ns#a885> <http://example.org/ns#a885> .
+<http://example.org/ns#a886> <http://example.org/ns#a886> <http://example.org/ns#a886> .
+<http://example.org/ns#a887> <http://example.org/ns#a887> <http://example.org/ns#a887> .
+<http://example.org/ns#a888> <http://example.org/ns#a888> <http://example.org/ns#a888> .
+<http://example.org/ns#a889> <http://example.org/ns#a889> <http://example.org/ns#a889> .
+<http://example.org/ns#a890> <http://example.org/ns#a890> <http://example.org/ns#a890> .
+<http://example.org/ns#a891> <http://example.org/ns#a891> <http://example.org/ns#a891> .
+<http://example.org/ns#a892> <http://example.org/ns#a892> <http://example.org/ns#a892> .
+<http://example.org/ns#a893> <http://example.org/ns#a893> <http://example.org/ns#a893> .
+<http://example.org/ns#a894> <http://example.org/ns#a894> <http://example.org/ns#a894> .
+<http://example.org/ns#a895> <http://example.org/ns#a895> <http://example.org/ns#a895> .
+<http://example.org/ns#a896> <http://example.org/ns#a896> <http://example.org/ns#a896> .
+<http://example.org/ns#a897> <http://example.org/ns#a897> <http://example.org/ns#a897> .
+<http://example.org/ns#a898> <http://example.org/ns#a898> <http://example.org/ns#a898> .
+<http://example.org/ns#a899> <http://example.org/ns#a899> <http://example.org/ns#a899> .
+<http://example.org/ns#a900> <http://example.org/ns#a900> <http://example.org/ns#a900> .
+<http://example.org/ns#a901> <http://example.org/ns#a901> <http://example.org/ns#a901> .
+<http://example.org/ns#a902> <http://example.org/ns#a902> <http://example.org/ns#a902> .
+<http://example.org/ns#a903> <http://example.org/ns#a903> <http://example.org/ns#a903> .
+<http://example.org/ns#a904> <http://example.org/ns#a904> <http://example.org/ns#a904> .
+<http://example.org/ns#a905> <http://example.org/ns#a905> <http://example.org/ns#a905> .
+<http://example.org/ns#a906> <http://example.org/ns#a906> <http://example.org/ns#a906> .
+<http://example.org/ns#a907> <http://example.org/ns#a907> <http://example.org/ns#a907> .
+<http://example.org/ns#a908> <http://example.org/ns#a908> <http://example.org/ns#a908> .
+<http://example.org/ns#a909> <http://example.org/ns#a909> <http://example.org/ns#a909> .
+<http://example.org/ns#a910> <http://example.org/ns#a910> <http://example.org/ns#a910> .
+<http://example.org/ns#a911> <http://example.org/ns#a911> <http://example.org/ns#a911> .
+<http://example.org/ns#a912> <http://example.org/ns#a912> <http://example.org/ns#a912> .
+<http://example.org/ns#a913> <http://example.org/ns#a913> <http://example.org/ns#a913> .
+<http://example.org/ns#a914> <http://example.org/ns#a914> <http://example.org/ns#a914> .
+<http://example.org/ns#a915> <http://example.org/ns#a915> <http://example.org/ns#a915> .
+<http://example.org/ns#a916> <http://example.org/ns#a916> <http://example.org/ns#a916> .
+<http://example.org/ns#a917> <http://example.org/ns#a917> <http://example.org/ns#a917> .
+<http://example.org/ns#a918> <http://example.org/ns#a918> <http://example.org/ns#a918> .
+<http://example.org/ns#a919> <http://example.org/ns#a919> <http://example.org/ns#a919> .
+<http://example.org/ns#a920> <http://example.org/ns#a920> <http://example.org/ns#a920> .
+<http://example.org/ns#a921> <http://example.org/ns#a921> <http://example.org/ns#a921> .
+<http://example.org/ns#a922> <http://example.org/ns#a922> <http://example.org/ns#a922> .
+<http://example.org/ns#a923> <http://example.org/ns#a923> <http://example.org/ns#a923> .
+<http://example.org/ns#a924> <http://example.org/ns#a924> <http://example.org/ns#a924> .
+<http://example.org/ns#a925> <http://example.org/ns#a925> <http://example.org/ns#a925> .
+<http://example.org/ns#a926> <http://example.org/ns#a926> <http://example.org/ns#a926> .
+<http://example.org/ns#a927> <http://example.org/ns#a927> <http://example.org/ns#a927> .
+<http://example.org/ns#a928> <http://example.org/ns#a928> <http://example.org/ns#a928> .
+<http://example.org/ns#a929> <http://example.org/ns#a929> <http://example.org/ns#a929> .
+<http://example.org/ns#a930> <http://example.org/ns#a930> <http://example.org/ns#a930> .
+<http://example.org/ns#a931> <http://example.org/ns#a931> <http://example.org/ns#a931> .
+<http://example.org/ns#a932> <http://example.org/ns#a932> <http://example.org/ns#a932> .
+<http://example.org/ns#a933> <http://example.org/ns#a933> <http://example.org/ns#a933> .
+<http://example.org/ns#a934> <http://example.org/ns#a934> <http://example.org/ns#a934> .
+<http://example.org/ns#a935> <http://example.org/ns#a935> <http://example.org/ns#a935> .
+<http://example.org/ns#a936> <http://example.org/ns#a936> <http://example.org/ns#a936> .
+<http://example.org/ns#a937> <http://example.org/ns#a937> <http://example.org/ns#a937> .
+<http://example.org/ns#a938> <http://example.org/ns#a938> <http://example.org/ns#a938> .
+<http://example.org/ns#a939> <http://example.org/ns#a939> <http://example.org/ns#a939> .
+<http://example.org/ns#a940> <http://example.org/ns#a940> <http://example.org/ns#a940> .
+<http://example.org/ns#a941> <http://example.org/ns#a941> <http://example.org/ns#a941> .
+<http://example.org/ns#a942> <http://example.org/ns#a942> <http://example.org/ns#a942> .
+<http://example.org/ns#a943> <http://example.org/ns#a943> <http://example.org/ns#a943> .
+<http://example.org/ns#a944> <http://example.org/ns#a944> <http://example.org/ns#a944> .
+<http://example.org/ns#a945> <http://example.org/ns#a945> <http://example.org/ns#a945> .
+<http://example.org/ns#a946> <http://example.org/ns#a946> <http://example.org/ns#a946> .
+<http://example.org/ns#a947> <http://example.org/ns#a947> <http://example.org/ns#a947> .
+<http://example.org/ns#a948> <http://example.org/ns#a948> <http://example.org/ns#a948> .
+<http://example.org/ns#a949> <http://example.org/ns#a949> <http://example.org/ns#a949> .
+<http://example.org/ns#a950> <http://example.org/ns#a950> <http://example.org/ns#a950> .
+<http://example.org/ns#a951> <http://example.org/ns#a951> <http://example.org/ns#a951> .
+<http://example.org/ns#a952> <http://example.org/ns#a952> <http://example.org/ns#a952> .
+<http://example.org/ns#a953> <http://example.org/ns#a953> <http://example.org/ns#a953> .
+<http://example.org/ns#a954> <http://example.org/ns#a954> <http://example.org/ns#a954> .
+<http://example.org/ns#a955> <http://example.org/ns#a955> <http://example.org/ns#a955> .
+<http://example.org/ns#a956> <http://example.org/ns#a956> <http://example.org/ns#a956> .
+<http://example.org/ns#a957> <http://example.org/ns#a957> <http://example.org/ns#a957> .
+<http://example.org/ns#a958> <http://example.org/ns#a958> <http://example.org/ns#a958> .
+<http://example.org/ns#a959> <http://example.org/ns#a959> <http://example.org/ns#a959> .
+<http://example.org/ns#a960> <http://example.org/ns#a960> <http://example.org/ns#a960> .
+<http://example.org/ns#a961> <http://example.org/ns#a961> <http://example.org/ns#a961> .
+<http://example.org/ns#a962> <http://example.org/ns#a962> <http://example.org/ns#a962> .
+<http://example.org/ns#a963> <http://example.org/ns#a963> <http://example.org/ns#a963> .
+<http://example.org/ns#a964> <http://example.org/ns#a964> <http://example.org/ns#a964> .
+<http://example.org/ns#a965> <http://example.org/ns#a965> <http://example.org/ns#a965> .
+<http://example.org/ns#a966> <http://example.org/ns#a966> <http://example.org/ns#a966> .
+<http://example.org/ns#a967> <http://example.org/ns#a967> <http://example.org/ns#a967> .
+<http://example.org/ns#a968> <http://example.org/ns#a968> <http://example.org/ns#a968> .
+<http://example.org/ns#a969> <http://example.org/ns#a969> <http://example.org/ns#a969> .
+<http://example.org/ns#a970> <http://example.org/ns#a970> <http://example.org/ns#a970> .
+<http://example.org/ns#a971> <http://example.org/ns#a971> <http://example.org/ns#a971> .
+<http://example.org/ns#a972> <http://example.org/ns#a972> <http://example.org/ns#a972> .
+<http://example.org/ns#a973> <http://example.org/ns#a973> <http://example.org/ns#a973> .
+<http://example.org/ns#a974> <http://example.org/ns#a974> <http://example.org/ns#a974> .
+<http://example.org/ns#a975> <http://example.org/ns#a975> <http://example.org/ns#a975> .
+<http://example.org/ns#a976> <http://example.org/ns#a976> <http://example.org/ns#a976> .
+<http://example.org/ns#a977> <http://example.org/ns#a977> <http://example.org/ns#a977> .
+<http://example.org/ns#a978> <http://example.org/ns#a978> <http://example.org/ns#a978> .
+<http://example.org/ns#a979> <http://example.org/ns#a979> <http://example.org/ns#a979> .
+<http://example.org/ns#a980> <http://example.org/ns#a980> <http://example.org/ns#a980> .
+<http://example.org/ns#a981> <http://example.org/ns#a981> <http://example.org/ns#a981> .
+<http://example.org/ns#a982> <http://example.org/ns#a982> <http://example.org/ns#a982> .
+<http://example.org/ns#a983> <http://example.org/ns#a983> <http://example.org/ns#a983> .
+<http://example.org/ns#a984> <http://example.org/ns#a984> <http://example.org/ns#a984> .
+<http://example.org/ns#a985> <http://example.org/ns#a985> <http://example.org/ns#a985> .
+<http://example.org/ns#a986> <http://example.org/ns#a986> <http://example.org/ns#a986> .
+<http://example.org/ns#a987> <http://example.org/ns#a987> <http://example.org/ns#a987> .
+<http://example.org/ns#a988> <http://example.org/ns#a988> <http://example.org/ns#a988> .
+<http://example.org/ns#a989> <http://example.org/ns#a989> <http://example.org/ns#a989> .
+<http://example.org/ns#a990> <http://example.org/ns#a990> <http://example.org/ns#a990> .
+<http://example.org/ns#a991> <http://example.org/ns#a991> <http://example.org/ns#a991> .
+<http://example.org/ns#a992> <http://example.org/ns#a992> <http://example.org/ns#a992> .
+<http://example.org/ns#a993> <http://example.org/ns#a993> <http://example.org/ns#a993> .
+<http://example.org/ns#a994> <http://example.org/ns#a994> <http://example.org/ns#a994> .
+<http://example.org/ns#a995> <http://example.org/ns#a995> <http://example.org/ns#a995> .
+<http://example.org/ns#a996> <http://example.org/ns#a996> <http://example.org/ns#a996> .
+<http://example.org/ns#a997> <http://example.org/ns#a997> <http://example.org/ns#a997> .
+<http://example.org/ns#a998> <http://example.org/ns#a998> <http://example.org/ns#a998> .
+<http://example.org/ns#a999> <http://example.org/ns#a999> <http://example.org/ns#a999> .
+<http://example.org/ns#a1000> <http://example.org/ns#a1000> <http://example.org/ns#a1000> .
+<http://example.org/ns#a1001> <http://example.org/ns#a1001> <http://example.org/ns#a1001> .
+<http://example.org/ns#a1002> <http://example.org/ns#a1002> <http://example.org/ns#a1002> .
+<http://example.org/ns#a1003> <http://example.org/ns#a1003> <http://example.org/ns#a1003> .
+<http://example.org/ns#a1004> <http://example.org/ns#a1004> <http://example.org/ns#a1004> .
+<http://example.org/ns#a1005> <http://example.org/ns#a1005> <http://example.org/ns#a1005> .
+<http://example.org/ns#a1006> <http://example.org/ns#a1006> <http://example.org/ns#a1006> .
+<http://example.org/ns#a1007> <http://example.org/ns#a1007> <http://example.org/ns#a1007> .
+<http://example.org/ns#a1008> <http://example.org/ns#a1008> <http://example.org/ns#a1008> .
+<http://example.org/ns#a1009> <http://example.org/ns#a1009> <http://example.org/ns#a1009> .
+<http://example.org/ns#a1010> <http://example.org/ns#a1010> <http://example.org/ns#a1010> .
+<http://example.org/ns#a1011> <http://example.org/ns#a1011> <http://example.org/ns#a1011> .
+<http://example.org/ns#a1012> <http://example.org/ns#a1012> <http://example.org/ns#a1012> .
+<http://example.org/ns#a1013> <http://example.org/ns#a1013> <http://example.org/ns#a1013> .
+<http://example.org/ns#a1014> <http://example.org/ns#a1014> <http://example.org/ns#a1014> .
+<http://example.org/ns#a1015> <http://example.org/ns#a1015> <http://example.org/ns#a1015> .
+<http://example.org/ns#a1016> <http://example.org/ns#a1016> <http://example.org/ns#a1016> .
+<http://example.org/ns#a1017> <http://example.org/ns#a1017> <http://example.org/ns#a1017> .
+<http://example.org/ns#a1018> <http://example.org/ns#a1018> <http://example.org/ns#a1018> .
+<http://example.org/ns#a1019> <http://example.org/ns#a1019> <http://example.org/ns#a1019> .
+<http://example.org/ns#a1020> <http://example.org/ns#a1020> <http://example.org/ns#a1020> .
+<http://example.org/ns#a1021> <http://example.org/ns#a1021> <http://example.org/ns#a1021> .
+<http://example.org/ns#a1022> <http://example.org/ns#a1022> <http://example.org/ns#a1022> .
+<http://example.org/ns#a1023> <http://example.org/ns#a1023> <http://example.org/ns#a1023> .
+<http://example.org/ns#a1024> <http://example.org/ns#a1024> <http://example.org/ns#a1024> .
+<http://example.org/ns#a1025> <http://example.org/ns#a1025> <http://example.org/ns#a1025> .
+<http://example.org/ns#a1026> <http://example.org/ns#a1026> <http://example.org/ns#a1026> .
+<http://example.org/ns#a1027> <http://example.org/ns#a1027> <http://example.org/ns#a1027> .
+<http://example.org/ns#a1028> <http://example.org/ns#a1028> <http://example.org/ns#a1028> .
+<http://example.org/ns#a1029> <http://example.org/ns#a1029> <http://example.org/ns#a1029> .
+<http://example.org/ns#a1030> <http://example.org/ns#a1030> <http://example.org/ns#a1030> .
+<http://example.org/ns#a1031> <http://example.org/ns#a1031> <http://example.org/ns#a1031> .
+<http://example.org/ns#a1032> <http://example.org/ns#a1032> <http://example.org/ns#a1032> .
+<http://example.org/ns#a1033> <http://example.org/ns#a1033> <http://example.org/ns#a1033> .
+<http://example.org/ns#a1034> <http://example.org/ns#a1034> <http://example.org/ns#a1034> .
+<http://example.org/ns#a1035> <http://example.org/ns#a1035> <http://example.org/ns#a1035> .
+<http://example.org/ns#a1036> <http://example.org/ns#a1036> <http://example.org/ns#a1036> .
+<http://example.org/ns#a1037> <http://example.org/ns#a1037> <http://example.org/ns#a1037> .
+<http://example.org/ns#a1038> <http://example.org/ns#a1038> <http://example.org/ns#a1038> .
+<http://example.org/ns#a1039> <http://example.org/ns#a1039> <http://example.org/ns#a1039> .
+<http://example.org/ns#a1040> <http://example.org/ns#a1040> <http://example.org/ns#a1040> .
+<http://example.org/ns#a1041> <http://example.org/ns#a1041> <http://example.org/ns#a1041> .
+<http://example.org/ns#a1042> <http://example.org/ns#a1042> <http://example.org/ns#a1042> .
+<http://example.org/ns#a1043> <http://example.org/ns#a1043> <http://example.org/ns#a1043> .
+<http://example.org/ns#a1044> <http://example.org/ns#a1044> <http://example.org/ns#a1044> .
+<http://example.org/ns#a1045> <http://example.org/ns#a1045> <http://example.org/ns#a1045> .
+<http://example.org/ns#a1046> <http://example.org/ns#a1046> <http://example.org/ns#a1046> .
+<http://example.org/ns#a1047> <http://example.org/ns#a1047> <http://example.org/ns#a1047> .
+<http://example.org/ns#a1048> <http://example.org/ns#a1048> <http://example.org/ns#a1048> .
+<http://example.org/ns#a1049> <http://example.org/ns#a1049> <http://example.org/ns#a1049> .
+<http://example.org/ns#a1050> <http://example.org/ns#a1050> <http://example.org/ns#a1050> .
+<http://example.org/ns#a1051> <http://example.org/ns#a1051> <http://example.org/ns#a1051> .
+<http://example.org/ns#a1052> <http://example.org/ns#a1052> <http://example.org/ns#a1052> .
+<http://example.org/ns#a1053> <http://example.org/ns#a1053> <http://example.org/ns#a1053> .
+<http://example.org/ns#a1054> <http://example.org/ns#a1054> <http://example.org/ns#a1054> .
+<http://example.org/ns#a1055> <http://example.org/ns#a1055> <http://example.org/ns#a1055> .
+<http://example.org/ns#a1056> <http://example.org/ns#a1056> <http://example.org/ns#a1056> .
+<http://example.org/ns#a1057> <http://example.org/ns#a1057> <http://example.org/ns#a1057> .
+<http://example.org/ns#a1058> <http://example.org/ns#a1058> <http://example.org/ns#a1058> .
+<http://example.org/ns#a1059> <http://example.org/ns#a1059> <http://example.org/ns#a1059> .
+<http://example.org/ns#a1060> <http://example.org/ns#a1060> <http://example.org/ns#a1060> .
+<http://example.org/ns#a1061> <http://example.org/ns#a1061> <http://example.org/ns#a1061> .
+<http://example.org/ns#a1062> <http://example.org/ns#a1062> <http://example.org/ns#a1062> .
+<http://example.org/ns#a1063> <http://example.org/ns#a1063> <http://example.org/ns#a1063> .
+<http://example.org/ns#a1064> <http://example.org/ns#a1064> <http://example.org/ns#a1064> .
+<http://example.org/ns#a1065> <http://example.org/ns#a1065> <http://example.org/ns#a1065> .
+<http://example.org/ns#a1066> <http://example.org/ns#a1066> <http://example.org/ns#a1066> .
+<http://example.org/ns#a1067> <http://example.org/ns#a1067> <http://example.org/ns#a1067> .
+<http://example.org/ns#a1068> <http://example.org/ns#a1068> <http://example.org/ns#a1068> .
+<http://example.org/ns#a1069> <http://example.org/ns#a1069> <http://example.org/ns#a1069> .
+<http://example.org/ns#a1070> <http://example.org/ns#a1070> <http://example.org/ns#a1070> .
+<http://example.org/ns#a1071> <http://example.org/ns#a1071> <http://example.org/ns#a1071> .
+<http://example.org/ns#a1072> <http://example.org/ns#a1072> <http://example.org/ns#a1072> .
+<http://example.org/ns#a1073> <http://example.org/ns#a1073> <http://example.org/ns#a1073> .
+<http://example.org/ns#a1074> <http://example.org/ns#a1074> <http://example.org/ns#a1074> .
+<http://example.org/ns#a1075> <http://example.org/ns#a1075> <http://example.org/ns#a1075> .
+<http://example.org/ns#a1076> <http://example.org/ns#a1076> <http://example.org/ns#a1076> .
+<http://example.org/ns#a1077> <http://example.org/ns#a1077> <http://example.org/ns#a1077> .
+<http://example.org/ns#a1078> <http://example.org/ns#a1078> <http://example.org/ns#a1078> .
+<http://example.org/ns#a1079> <http://example.org/ns#a1079> <http://example.org/ns#a1079> .
+<http://example.org/ns#a1080> <http://example.org/ns#a1080> <http://example.org/ns#a1080> .
+<http://example.org/ns#a1081> <http://example.org/ns#a1081> <http://example.org/ns#a1081> .
+<http://example.org/ns#a1082> <http://example.org/ns#a1082> <http://example.org/ns#a1082> .
+<http://example.org/ns#a1083> <http://example.org/ns#a1083> <http://example.org/ns#a1083> .
+<http://example.org/ns#a1084> <http://example.org/ns#a1084> <http://example.org/ns#a1084> .
+<http://example.org/ns#a1085> <http://example.org/ns#a1085> <http://example.org/ns#a1085> .
+<http://example.org/ns#a1086> <http://example.org/ns#a1086> <http://example.org/ns#a1086> .
+<http://example.org/ns#a1087> <http://example.org/ns#a1087> <http://example.org/ns#a1087> .
+<http://example.org/ns#a1088> <http://example.org/ns#a1088> <http://example.org/ns#a1088> .
+<http://example.org/ns#a1089> <http://example.org/ns#a1089> <http://example.org/ns#a1089> .
+<http://example.org/ns#a1090> <http://example.org/ns#a1090> <http://example.org/ns#a1090> .
+<http://example.org/ns#a1091> <http://example.org/ns#a1091> <http://example.org/ns#a1091> .
+<http://example.org/ns#a1092> <http://example.org/ns#a1092> <http://example.org/ns#a1092> .
+<http://example.org/ns#a1093> <http://example.org/ns#a1093> <http://example.org/ns#a1093> .
+<http://example.org/ns#a1094> <http://example.org/ns#a1094> <http://example.org/ns#a1094> .
+<http://example.org/ns#a1095> <http://example.org/ns#a1095> <http://example.org/ns#a1095> .
+<http://example.org/ns#a1096> <http://example.org/ns#a1096> <http://example.org/ns#a1096> .
+<http://example.org/ns#a1097> <http://example.org/ns#a1097> <http://example.org/ns#a1097> .
+<http://example.org/ns#a1098> <http://example.org/ns#a1098> <http://example.org/ns#a1098> .
+<http://example.org/ns#a1099> <http://example.org/ns#a1099> <http://example.org/ns#a1099> .
+<http://example.org/ns#a1100> <http://example.org/ns#a1100> <http://example.org/ns#a1100> .
+<http://example.org/ns#a1101> <http://example.org/ns#a1101> <http://example.org/ns#a1101> .
+<http://example.org/ns#a1102> <http://example.org/ns#a1102> <http://example.org/ns#a1102> .
+<http://example.org/ns#a1103> <http://example.org/ns#a1103> <http://example.org/ns#a1103> .
+<http://example.org/ns#a1104> <http://example.org/ns#a1104> <http://example.org/ns#a1104> .
+<http://example.org/ns#a1105> <http://example.org/ns#a1105> <http://example.org/ns#a1105> .
+<http://example.org/ns#a1106> <http://example.org/ns#a1106> <http://example.org/ns#a1106> .
+<http://example.org/ns#a1107> <http://example.org/ns#a1107> <http://example.org/ns#a1107> .
+<http://example.org/ns#a1108> <http://example.org/ns#a1108> <http://example.org/ns#a1108> .
+<http://example.org/ns#a1109> <http://example.org/ns#a1109> <http://example.org/ns#a1109> .
+<http://example.org/ns#a1110> <http://example.org/ns#a1110> <http://example.org/ns#a1110> .
+<http://example.org/ns#a1111> <http://example.org/ns#a1111> <http://example.org/ns#a1111> .
+<http://example.org/ns#a1112> <http://example.org/ns#a1112> <http://example.org/ns#a1112> .
+<http://example.org/ns#a1113> <http://example.org/ns#a1113> <http://example.org/ns#a1113> .
+<http://example.org/ns#a1114> <http://example.org/ns#a1114> <http://example.org/ns#a1114> .
+<http://example.org/ns#a1115> <http://example.org/ns#a1115> <http://example.org/ns#a1115> .
+<http://example.org/ns#a1116> <http://example.org/ns#a1116> <http://example.org/ns#a1116> .
+<http://example.org/ns#a1117> <http://example.org/ns#a1117> <http://example.org/ns#a1117> .
+<http://example.org/ns#a1118> <http://example.org/ns#a1118> <http://example.org/ns#a1118> .
+<http://example.org/ns#a1119> <http://example.org/ns#a1119> <http://example.org/ns#a1119> .
+<http://example.org/ns#a1120> <http://example.org/ns#a1120> <http://example.org/ns#a1120> .
+<http://example.org/ns#a1121> <http://example.org/ns#a1121> <http://example.org/ns#a1121> .
+<http://example.org/ns#a1122> <http://example.org/ns#a1122> <http://example.org/ns#a1122> .
+<http://example.org/ns#a1123> <http://example.org/ns#a1123> <http://example.org/ns#a1123> .
+<http://example.org/ns#a1124> <http://example.org/ns#a1124> <http://example.org/ns#a1124> .
+<http://example.org/ns#a1125> <http://example.org/ns#a1125> <http://example.org/ns#a1125> .
+<http://example.org/ns#a1126> <http://example.org/ns#a1126> <http://example.org/ns#a1126> .
+<http://example.org/ns#a1127> <http://example.org/ns#a1127> <http://example.org/ns#a1127> .
+<http://example.org/ns#a1128> <http://example.org/ns#a1128> <http://example.org/ns#a1128> .
+<http://example.org/ns#a1129> <http://example.org/ns#a1129> <http://example.org/ns#a1129> .
+<http://example.org/ns#a1130> <http://example.org/ns#a1130> <http://example.org/ns#a1130> .
+<http://example.org/ns#a1131> <http://example.org/ns#a1131> <http://example.org/ns#a1131> .
+<http://example.org/ns#a1132> <http://example.org/ns#a1132> <http://example.org/ns#a1132> .
+<http://example.org/ns#a1133> <http://example.org/ns#a1133> <http://example.org/ns#a1133> .
+<http://example.org/ns#a1134> <http://example.org/ns#a1134> <http://example.org/ns#a1134> .
+<http://example.org/ns#a1135> <http://example.org/ns#a1135> <http://example.org/ns#a1135> .
+<http://example.org/ns#a1136> <http://example.org/ns#a1136> <http://example.org/ns#a1136> .
+<http://example.org/ns#a1137> <http://example.org/ns#a1137> <http://example.org/ns#a1137> .
+<http://example.org/ns#a1138> <http://example.org/ns#a1138> <http://example.org/ns#a1138> .
+<http://example.org/ns#a1139> <http://example.org/ns#a1139> <http://example.org/ns#a1139> .
+<http://example.org/ns#a1140> <http://example.org/ns#a1140> <http://example.org/ns#a1140> .
+<http://example.org/ns#a1141> <http://example.org/ns#a1141> <http://example.org/ns#a1141> .
+<http://example.org/ns#a1142> <http://example.org/ns#a1142> <http://example.org/ns#a1142> .
+<http://example.org/ns#a1143> <http://example.org/ns#a1143> <http://example.org/ns#a1143> .
+<http://example.org/ns#a1144> <http://example.org/ns#a1144> <http://example.org/ns#a1144> .
+<http://example.org/ns#a1145> <http://example.org/ns#a1145> <http://example.org/ns#a1145> .
+<http://example.org/ns#a1146> <http://example.org/ns#a1146> <http://example.org/ns#a1146> .
+<http://example.org/ns#a1147> <http://example.org/ns#a1147> <http://example.org/ns#a1147> .
+<http://example.org/ns#a1148> <http://example.org/ns#a1148> <http://example.org/ns#a1148> .
+<http://example.org/ns#a1149> <http://example.org/ns#a1149> <http://example.org/ns#a1149> .
+<http://example.org/ns#a1150> <http://example.org/ns#a1150> <http://example.org/ns#a1150> .
+<http://example.org/ns#a1151> <http://example.org/ns#a1151> <http://example.org/ns#a1151> .
+<http://example.org/ns#a1152> <http://example.org/ns#a1152> <http://example.org/ns#a1152> .
+<http://example.org/ns#a1153> <http://example.org/ns#a1153> <http://example.org/ns#a1153> .
+<http://example.org/ns#a1154> <http://example.org/ns#a1154> <http://example.org/ns#a1154> .
+<http://example.org/ns#a1155> <http://example.org/ns#a1155> <http://example.org/ns#a1155> .
+<http://example.org/ns#a1156> <http://example.org/ns#a1156> <http://example.org/ns#a1156> .
+<http://example.org/ns#a1157> <http://example.org/ns#a1157> <http://example.org/ns#a1157> .
+<http://example.org/ns#a1158> <http://example.org/ns#a1158> <http://example.org/ns#a1158> .
+<http://example.org/ns#a1159> <http://example.org/ns#a1159> <http://example.org/ns#a1159> .
+<http://example.org/ns#a1160> <http://example.org/ns#a1160> <http://example.org/ns#a1160> .
+<http://example.org/ns#a1161> <http://example.org/ns#a1161> <http://example.org/ns#a1161> .
+<http://example.org/ns#a1162> <http://example.org/ns#a1162> <http://example.org/ns#a1162> .
+<http://example.org/ns#a1163> <http://example.org/ns#a1163> <http://example.org/ns#a1163> .
+<http://example.org/ns#a1164> <http://example.org/ns#a1164> <http://example.org/ns#a1164> .
+<http://example.org/ns#a1165> <http://example.org/ns#a1165> <http://example.org/ns#a1165> .
+<http://example.org/ns#a1166> <http://example.org/ns#a1166> <http://example.org/ns#a1166> .
+<http://example.org/ns#a1167> <http://example.org/ns#a1167> <http://example.org/ns#a1167> .
+<http://example.org/ns#a1168> <http://example.org/ns#a1168> <http://example.org/ns#a1168> .
+<http://example.org/ns#a1169> <http://example.org/ns#a1169> <http://example.org/ns#a1169> .
+<http://example.org/ns#a1170> <http://example.org/ns#a1170> <http://example.org/ns#a1170> .
+<http://example.org/ns#a1171> <http://example.org/ns#a1171> <http://example.org/ns#a1171> .
+<http://example.org/ns#a1172> <http://example.org/ns#a1172> <http://example.org/ns#a1172> .
+<http://example.org/ns#a1173> <http://example.org/ns#a1173> <http://example.org/ns#a1173> .
+<http://example.org/ns#a1174> <http://example.org/ns#a1174> <http://example.org/ns#a1174> .
+<http://example.org/ns#a1175> <http://example.org/ns#a1175> <http://example.org/ns#a1175> .
+<http://example.org/ns#a1176> <http://example.org/ns#a1176> <http://example.org/ns#a1176> .
+<http://example.org/ns#a1177> <http://example.org/ns#a1177> <http://example.org/ns#a1177> .
+<http://example.org/ns#a1178> <http://example.org/ns#a1178> <http://example.org/ns#a1178> .
+<http://example.org/ns#a1179> <http://example.org/ns#a1179> <http://example.org/ns#a1179> .
+<http://example.org/ns#a1180> <http://example.org/ns#a1180> <http://example.org/ns#a1180> .
+<http://example.org/ns#a1181> <http://example.org/ns#a1181> <http://example.org/ns#a1181> .
+<http://example.org/ns#a1182> <http://example.org/ns#a1182> <http://example.org/ns#a1182> .
+<http://example.org/ns#a1183> <http://example.org/ns#a1183> <http://example.org/ns#a1183> .
+<http://example.org/ns#a1184> <http://example.org/ns#a1184> <http://example.org/ns#a1184> .
+<http://example.org/ns#a1185> <http://example.org/ns#a1185> <http://example.org/ns#a1185> .
+<http://example.org/ns#a1186> <http://example.org/ns#a1186> <http://example.org/ns#a1186> .
+<http://example.org/ns#a1187> <http://example.org/ns#a1187> <http://example.org/ns#a1187> .
+<http://example.org/ns#a1188> <http://example.org/ns#a1188> <http://example.org/ns#a1188> .
+<http://example.org/ns#a1189> <http://example.org/ns#a1189> <http://example.org/ns#a1189> .
+<http://example.org/ns#a1190> <http://example.org/ns#a1190> <http://example.org/ns#a1190> .
+<http://example.org/ns#a1191> <http://example.org/ns#a1191> <http://example.org/ns#a1191> .
+<http://example.org/ns#a1192> <http://example.org/ns#a1192> <http://example.org/ns#a1192> .
+<http://example.org/ns#a1193> <http://example.org/ns#a1193> <http://example.org/ns#a1193> .
+<http://example.org/ns#a1194> <http://example.org/ns#a1194> <http://example.org/ns#a1194> .
+<http://example.org/ns#a1195> <http://example.org/ns#a1195> <http://example.org/ns#a1195> .
+<http://example.org/ns#a1196> <http://example.org/ns#a1196> <http://example.org/ns#a1196> .
+<http://example.org/ns#a1197> <http://example.org/ns#a1197> <http://example.org/ns#a1197> .
+<http://example.org/ns#a1198> <http://example.org/ns#a1198> <http://example.org/ns#a1198> .
+<http://example.org/ns#a1199> <http://example.org/ns#a1199> <http://example.org/ns#a1199> .
+<http://example.org/ns#a1200> <http://example.org/ns#a1200> <http://example.org/ns#a1200> .
+<http://example.org/ns#a1201> <http://example.org/ns#a1201> <http://example.org/ns#a1201> .
+<http://example.org/ns#a1202> <http://example.org/ns#a1202> <http://example.org/ns#a1202> .
+<http://example.org/ns#a1203> <http://example.org/ns#a1203> <http://example.org/ns#a1203> .
+<http://example.org/ns#a1204> <http://example.org/ns#a1204> <http://example.org/ns#a1204> .
+<http://example.org/ns#a1205> <http://example.org/ns#a1205> <http://example.org/ns#a1205> .
+<http://example.org/ns#a1206> <http://example.org/ns#a1206> <http://example.org/ns#a1206> .
+<http://example.org/ns#a1207> <http://example.org/ns#a1207> <http://example.org/ns#a1207> .
+<http://example.org/ns#a1208> <http://example.org/ns#a1208> <http://example.org/ns#a1208> .
+<http://example.org/ns#a1209> <http://example.org/ns#a1209> <http://example.org/ns#a1209> .
+<http://example.org/ns#a1210> <http://example.org/ns#a1210> <http://example.org/ns#a1210> .
+<http://example.org/ns#a1211> <http://example.org/ns#a1211> <http://example.org/ns#a1211> .
+<http://example.org/ns#a1212> <http://example.org/ns#a1212> <http://example.org/ns#a1212> .
+<http://example.org/ns#a1213> <http://example.org/ns#a1213> <http://example.org/ns#a1213> .
+<http://example.org/ns#a1214> <http://example.org/ns#a1214> <http://example.org/ns#a1214> .
+<http://example.org/ns#a1215> <http://example.org/ns#a1215> <http://example.org/ns#a1215> .
+<http://example.org/ns#a1216> <http://example.org/ns#a1216> <http://example.org/ns#a1216> .
+<http://example.org/ns#a1217> <http://example.org/ns#a1217> <http://example.org/ns#a1217> .
+<http://example.org/ns#a1218> <http://example.org/ns#a1218> <http://example.org/ns#a1218> .
+<http://example.org/ns#a1219> <http://example.org/ns#a1219> <http://example.org/ns#a1219> .
+<http://example.org/ns#a1220> <http://example.org/ns#a1220> <http://example.org/ns#a1220> .
+<http://example.org/ns#a1221> <http://example.org/ns#a1221> <http://example.org/ns#a1221> .
+<http://example.org/ns#a1222> <http://example.org/ns#a1222> <http://example.org/ns#a1222> .
+<http://example.org/ns#a1223> <http://example.org/ns#a1223> <http://example.org/ns#a1223> .
+<http://example.org/ns#a1224> <http://example.org/ns#a1224> <http://example.org/ns#a1224> .
+<http://example.org/ns#a1225> <http://example.org/ns#a1225> <http://example.org/ns#a1225> .
+<http://example.org/ns#a1226> <http://example.org/ns#a1226> <http://example.org/ns#a1226> .
+<http://example.org/ns#a1227> <http://example.org/ns#a1227> <http://example.org/ns#a1227> .
+<http://example.org/ns#a1228> <http://example.org/ns#a1228> <http://example.org/ns#a1228> .
+<http://example.org/ns#a1229> <http://example.org/ns#a1229> <http://example.org/ns#a1229> .
+<http://example.org/ns#a1230> <http://example.org/ns#a1230> <http://example.org/ns#a1230> .
+<http://example.org/ns#a1231> <http://example.org/ns#a1231> <http://example.org/ns#a1231> .
+<http://example.org/ns#a1232> <http://example.org/ns#a1232> <http://example.org/ns#a1232> .
+<http://example.org/ns#a1233> <http://example.org/ns#a1233> <http://example.org/ns#a1233> .
+<http://example.org/ns#a1234> <http://example.org/ns#a1234> <http://example.org/ns#a1234> .
+<http://example.org/ns#a1235> <http://example.org/ns#a1235> <http://example.org/ns#a1235> .
+<http://example.org/ns#a1236> <http://example.org/ns#a1236> <http://example.org/ns#a1236> .
+<http://example.org/ns#a1237> <http://example.org/ns#a1237> <http://example.org/ns#a1237> .
+<http://example.org/ns#a1238> <http://example.org/ns#a1238> <http://example.org/ns#a1238> .
+<http://example.org/ns#a1239> <http://example.org/ns#a1239> <http://example.org/ns#a1239> .
+<http://example.org/ns#a1240> <http://example.org/ns#a1240> <http://example.org/ns#a1240> .
+<http://example.org/ns#a1241> <http://example.org/ns#a1241> <http://example.org/ns#a1241> .
+<http://example.org/ns#a1242> <http://example.org/ns#a1242> <http://example.org/ns#a1242> .
+<http://example.org/ns#a1243> <http://example.org/ns#a1243> <http://example.org/ns#a1243> .
+<http://example.org/ns#a1244> <http://example.org/ns#a1244> <http://example.org/ns#a1244> .
+<http://example.org/ns#a1245> <http://example.org/ns#a1245> <http://example.org/ns#a1245> .
+<http://example.org/ns#a1246> <http://example.org/ns#a1246> <http://example.org/ns#a1246> .
+<http://example.org/ns#a1247> <http://example.org/ns#a1247> <http://example.org/ns#a1247> .
+<http://example.org/ns#a1248> <http://example.org/ns#a1248> <http://example.org/ns#a1248> .
+<http://example.org/ns#a1249> <http://example.org/ns#a1249> <http://example.org/ns#a1249> .
+<http://example.org/ns#a1250> <http://example.org/ns#a1250> <http://example.org/ns#a1250> .
+<http://example.org/ns#a1251> <http://example.org/ns#a1251> <http://example.org/ns#a1251> .
+<http://example.org/ns#a1252> <http://example.org/ns#a1252> <http://example.org/ns#a1252> .
+<http://example.org/ns#a1253> <http://example.org/ns#a1253> <http://example.org/ns#a1253> .
+<http://example.org/ns#a1254> <http://example.org/ns#a1254> <http://example.org/ns#a1254> .
+<http://example.org/ns#a1255> <http://example.org/ns#a1255> <http://example.org/ns#a1255> .
+<http://example.org/ns#a1256> <http://example.org/ns#a1256> <http://example.org/ns#a1256> .
+<http://example.org/ns#a1257> <http://example.org/ns#a1257> <http://example.org/ns#a1257> .
+<http://example.org/ns#a1258> <http://example.org/ns#a1258> <http://example.org/ns#a1258> .
+<http://example.org/ns#a1259> <http://example.org/ns#a1259> <http://example.org/ns#a1259> .
+<http://example.org/ns#a1260> <http://example.org/ns#a1260> <http://example.org/ns#a1260> .
+<http://example.org/ns#a1261> <http://example.org/ns#a1261> <http://example.org/ns#a1261> .
+<http://example.org/ns#a1262> <http://example.org/ns#a1262> <http://example.org/ns#a1262> .
+<http://example.org/ns#a1263> <http://example.org/ns#a1263> <http://example.org/ns#a1263> .
+<http://example.org/ns#a1264> <http://example.org/ns#a1264> <http://example.org/ns#a1264> .
+<http://example.org/ns#a1265> <http://example.org/ns#a1265> <http://example.org/ns#a1265> .
+<http://example.org/ns#a1266> <http://example.org/ns#a1266> <http://example.org/ns#a1266> .
+<http://example.org/ns#a1267> <http://example.org/ns#a1267> <http://example.org/ns#a1267> .
+<http://example.org/ns#a1268> <http://example.org/ns#a1268> <http://example.org/ns#a1268> .
+<http://example.org/ns#a1269> <http://example.org/ns#a1269> <http://example.org/ns#a1269> .
+<http://example.org/ns#a1270> <http://example.org/ns#a1270> <http://example.org/ns#a1270> .
+<http://example.org/ns#a1271> <http://example.org/ns#a1271> <http://example.org/ns#a1271> .
+<http://example.org/ns#a1272> <http://example.org/ns#a1272> <http://example.org/ns#a1272> .
+<http://example.org/ns#a1273> <http://example.org/ns#a1273> <http://example.org/ns#a1273> .
+<http://example.org/ns#a1274> <http://example.org/ns#a1274> <http://example.org/ns#a1274> .
+<http://example.org/ns#a1275> <http://example.org/ns#a1275> <http://example.org/ns#a1275> .
+<http://example.org/ns#a1276> <http://example.org/ns#a1276> <http://example.org/ns#a1276> .
+<http://example.org/ns#a1277> <http://example.org/ns#a1277> <http://example.org/ns#a1277> .
+<http://example.org/ns#a1278> <http://example.org/ns#a1278> <http://example.org/ns#a1278> .
+<http://example.org/ns#a1279> <http://example.org/ns#a1279> <http://example.org/ns#a1279> .
+<http://example.org/ns#a1280> <http://example.org/ns#a1280> <http://example.org/ns#a1280> .
+<http://example.org/ns#a1281> <http://example.org/ns#a1281> <http://example.org/ns#a1281> .
+<http://example.org/ns#a1282> <http://example.org/ns#a1282> <http://example.org/ns#a1282> .
+<http://example.org/ns#a1283> <http://example.org/ns#a1283> <http://example.org/ns#a1283> .
+<http://example.org/ns#a1284> <http://example.org/ns#a1284> <http://example.org/ns#a1284> .
+<http://example.org/ns#a1285> <http://example.org/ns#a1285> <http://example.org/ns#a1285> .
+<http://example.org/ns#a1286> <http://example.org/ns#a1286> <http://example.org/ns#a1286> .
+<http://example.org/ns#a1287> <http://example.org/ns#a1287> <http://example.org/ns#a1287> .
+<http://example.org/ns#a1288> <http://example.org/ns#a1288> <http://example.org/ns#a1288> .
+<http://example.org/ns#a1289> <http://example.org/ns#a1289> <http://example.org/ns#a1289> .
+<http://example.org/ns#a1290> <http://example.org/ns#a1290> <http://example.org/ns#a1290> .
+<http://example.org/ns#a1291> <http://example.org/ns#a1291> <http://example.org/ns#a1291> .
+<http://example.org/ns#a1292> <http://example.org/ns#a1292> <http://example.org/ns#a1292> .
+<http://example.org/ns#a1293> <http://example.org/ns#a1293> <http://example.org/ns#a1293> .
+<http://example.org/ns#a1294> <http://example.org/ns#a1294> <http://example.org/ns#a1294> .
+<http://example.org/ns#a1295> <http://example.org/ns#a1295> <http://example.org/ns#a1295> .
+<http://example.org/ns#a1296> <http://example.org/ns#a1296> <http://example.org/ns#a1296> .
+<http://example.org/ns#a1297> <http://example.org/ns#a1297> <http://example.org/ns#a1297> .
+<http://example.org/ns#a1298> <http://example.org/ns#a1298> <http://example.org/ns#a1298> .
+<http://example.org/ns#a1299> <http://example.org/ns#a1299> <http://example.org/ns#a1299> .
+<http://example.org/ns#a1300> <http://example.org/ns#a1300> <http://example.org/ns#a1300> .
+<http://example.org/ns#a1301> <http://example.org/ns#a1301> <http://example.org/ns#a1301> .
+<http://example.org/ns#a1302> <http://example.org/ns#a1302> <http://example.org/ns#a1302> .
+<http://example.org/ns#a1303> <http://example.org/ns#a1303> <http://example.org/ns#a1303> .
+<http://example.org/ns#a1304> <http://example.org/ns#a1304> <http://example.org/ns#a1304> .
+<http://example.org/ns#a1305> <http://example.org/ns#a1305> <http://example.org/ns#a1305> .
+<http://example.org/ns#a1306> <http://example.org/ns#a1306> <http://example.org/ns#a1306> .
+<http://example.org/ns#a1307> <http://example.org/ns#a1307> <http://example.org/ns#a1307> .
+<http://example.org/ns#a1308> <http://example.org/ns#a1308> <http://example.org/ns#a1308> .
+<http://example.org/ns#a1309> <http://example.org/ns#a1309> <http://example.org/ns#a1309> .
+<http://example.org/ns#a1310> <http://example.org/ns#a1310> <http://example.org/ns#a1310> .
+<http://example.org/ns#a1311> <http://example.org/ns#a1311> <http://example.org/ns#a1311> .
+<http://example.org/ns#a1312> <http://example.org/ns#a1312> <http://example.org/ns#a1312> .
+<http://example.org/ns#a1313> <http://example.org/ns#a1313> <http://example.org/ns#a1313> .
+<http://example.org/ns#a1314> <http://example.org/ns#a1314> <http://example.org/ns#a1314> .
+<http://example.org/ns#a1315> <http://example.org/ns#a1315> <http://example.org/ns#a1315> .
+<http://example.org/ns#a1316> <http://example.org/ns#a1316> <http://example.org/ns#a1316> .
+<http://example.org/ns#a1317> <http://example.org/ns#a1317> <http://example.org/ns#a1317> .
+<http://example.org/ns#a1318> <http://example.org/ns#a1318> <http://example.org/ns#a1318> .
+<http://example.org/ns#a1319> <http://example.org/ns#a1319> <http://example.org/ns#a1319> .
+<http://example.org/ns#a1320> <http://example.org/ns#a1320> <http://example.org/ns#a1320> .
+<http://example.org/ns#a1321> <http://example.org/ns#a1321> <http://example.org/ns#a1321> .
+<http://example.org/ns#a1322> <http://example.org/ns#a1322> <http://example.org/ns#a1322> .
+<http://example.org/ns#a1323> <http://example.org/ns#a1323> <http://example.org/ns#a1323> .
+<http://example.org/ns#a1324> <http://example.org/ns#a1324> <http://example.org/ns#a1324> .
+<http://example.org/ns#a1325> <http://example.org/ns#a1325> <http://example.org/ns#a1325> .
+<http://example.org/ns#a1326> <http://example.org/ns#a1326> <http://example.org/ns#a1326> .
+<http://example.org/ns#a1327> <http://example.org/ns#a1327> <http://example.org/ns#a1327> .
+<http://example.org/ns#a1328> <http://example.org/ns#a1328> <http://example.org/ns#a1328> .
+<http://example.org/ns#a1329> <http://example.org/ns#a1329> <http://example.org/ns#a1329> .
+<http://example.org/ns#a1330> <http://example.org/ns#a1330> <http://example.org/ns#a1330> .
+<http://example.org/ns#a1331> <http://example.org/ns#a1331> <http://example.org/ns#a1331> .
+<http://example.org/ns#a1332> <http://example.org/ns#a1332> <http://example.org/ns#a1332> .
+<http://example.org/ns#a1333> <http://example.org/ns#a1333> <http://example.org/ns#a1333> .
+<http://example.org/ns#a1334> <http://example.org/ns#a1334> <http://example.org/ns#a1334> .
+<http://example.org/ns#a1335> <http://example.org/ns#a1335> <http://example.org/ns#a1335> .
+<http://example.org/ns#a1336> <http://example.org/ns#a1336> <http://example.org/ns#a1336> .
+<http://example.org/ns#a1337> <http://example.org/ns#a1337> <http://example.org/ns#a1337> .
+<http://example.org/ns#a1338> <http://example.org/ns#a1338> <http://example.org/ns#a1338> .
+<http://example.org/ns#a1339> <http://example.org/ns#a1339> <http://example.org/ns#a1339> .
+<http://example.org/ns#a1340> <http://example.org/ns#a1340> <http://example.org/ns#a1340> .
+<http://example.org/ns#a1341> <http://example.org/ns#a1341> <http://example.org/ns#a1341> .
+<http://example.org/ns#a1342> <http://example.org/ns#a1342> <http://example.org/ns#a1342> .
+<http://example.org/ns#a1343> <http://example.org/ns#a1343> <http://example.org/ns#a1343> .
+<http://example.org/ns#a1344> <http://example.org/ns#a1344> <http://example.org/ns#a1344> .
+<http://example.org/ns#a1345> <http://example.org/ns#a1345> <http://example.org/ns#a1345> .
+<http://example.org/ns#a1346> <http://example.org/ns#a1346> <http://example.org/ns#a1346> .
+<http://example.org/ns#a1347> <http://example.org/ns#a1347> <http://example.org/ns#a1347> .
+<http://example.org/ns#a1348> <http://example.org/ns#a1348> <http://example.org/ns#a1348> .
+<http://example.org/ns#a1349> <http://example.org/ns#a1349> <http://example.org/ns#a1349> .
+<http://example.org/ns#a1350> <http://example.org/ns#a1350> <http://example.org/ns#a1350> .
+<http://example.org/ns#a1351> <http://example.org/ns#a1351> <http://example.org/ns#a1351> .
+<http://example.org/ns#a1352> <http://example.org/ns#a1352> <http://example.org/ns#a1352> .
+<http://example.org/ns#a1353> <http://example.org/ns#a1353> <http://example.org/ns#a1353> .
+<http://example.org/ns#a1354> <http://example.org/ns#a1354> <http://example.org/ns#a1354> .
+<http://example.org/ns#a1355> <http://example.org/ns#a1355> <http://example.org/ns#a1355> .
+<http://example.org/ns#a1356> <http://example.org/ns#a1356> <http://example.org/ns#a1356> .
+<http://example.org/ns#a1357> <http://example.org/ns#a1357> <http://example.org/ns#a1357> .
+<http://example.org/ns#a1358> <http://example.org/ns#a1358> <http://example.org/ns#a1358> .
+<http://example.org/ns#a1359> <http://example.org/ns#a1359> <http://example.org/ns#a1359> .
+<http://example.org/ns#a1360> <http://example.org/ns#a1360> <http://example.org/ns#a1360> .
+<http://example.org/ns#a1361> <http://example.org/ns#a1361> <http://example.org/ns#a1361> .
+<http://example.org/ns#a1362> <http://example.org/ns#a1362> <http://example.org/ns#a1362> .
+<http://example.org/ns#a1363> <http://example.org/ns#a1363> <http://example.org/ns#a1363> .
+<http://example.org/ns#a1364> <http://example.org/ns#a1364> <http://example.org/ns#a1364> .
+<http://example.org/ns#a1365> <http://example.org/ns#a1365> <http://example.org/ns#a1365> .
+<http://example.org/ns#a1366> <http://example.org/ns#a1366> <http://example.org/ns#a1366> .
+<http://example.org/ns#a1367> <http://example.org/ns#a1367> <http://example.org/ns#a1367> .
+<http://example.org/ns#a1368> <http://example.org/ns#a1368> <http://example.org/ns#a1368> .
+<http://example.org/ns#a1369> <http://example.org/ns#a1369> <http://example.org/ns#a1369> .
+<http://example.org/ns#a1370> <http://example.org/ns#a1370> <http://example.org/ns#a1370> .
+<http://example.org/ns#a1371> <http://example.org/ns#a1371> <http://example.org/ns#a1371> .
+<http://example.org/ns#a1372> <http://example.org/ns#a1372> <http://example.org/ns#a1372> .
+<http://example.org/ns#a1373> <http://example.org/ns#a1373> <http://example.org/ns#a1373> .
+<http://example.org/ns#a1374> <http://example.org/ns#a1374> <http://example.org/ns#a1374> .
+<http://example.org/ns#a1375> <http://example.org/ns#a1375> <http://example.org/ns#a1375> .
+<http://example.org/ns#a1376> <http://example.org/ns#a1376> <http://example.org/ns#a1376> .
+<http://example.org/ns#a1377> <http://example.org/ns#a1377> <http://example.org/ns#a1377> .
+<http://example.org/ns#a1378> <http://example.org/ns#a1378> <http://example.org/ns#a1378> .
+<http://example.org/ns#a1379> <http://example.org/ns#a1379> <http://example.org/ns#a1379> .
+<http://example.org/ns#a1380> <http://example.org/ns#a1380> <http://example.org/ns#a1380> .
+<http://example.org/ns#a1381> <http://example.org/ns#a1381> <http://example.org/ns#a1381> .
+<http://example.org/ns#a1382> <http://example.org/ns#a1382> <http://example.org/ns#a1382> .
+<http://example.org/ns#a1383> <http://example.org/ns#a1383> <http://example.org/ns#a1383> .
+<http://example.org/ns#a1384> <http://example.org/ns#a1384> <http://example.org/ns#a1384> .
+<http://example.org/ns#a1385> <http://example.org/ns#a1385> <http://example.org/ns#a1385> .
+<http://example.org/ns#a1386> <http://example.org/ns#a1386> <http://example.org/ns#a1386> .
+<http://example.org/ns#a1387> <http://example.org/ns#a1387> <http://example.org/ns#a1387> .
+<http://example.org/ns#a1388> <http://example.org/ns#a1388> <http://example.org/ns#a1388> .
+<http://example.org/ns#a1389> <http://example.org/ns#a1389> <http://example.org/ns#a1389> .
+<http://example.org/ns#a1390> <http://example.org/ns#a1390> <http://example.org/ns#a1390> .
+<http://example.org/ns#a1391> <http://example.org/ns#a1391> <http://example.org/ns#a1391> .
+<http://example.org/ns#a1392> <http://example.org/ns#a1392> <http://example.org/ns#a1392> .
+<http://example.org/ns#a1393> <http://example.org/ns#a1393> <http://example.org/ns#a1393> .
+<http://example.org/ns#a1394> <http://example.org/ns#a1394> <http://example.org/ns#a1394> .
+<http://example.org/ns#a1395> <http://example.org/ns#a1395> <http://example.org/ns#a1395> .
+<http://example.org/ns#a1396> <http://example.org/ns#a1396> <http://example.org/ns#a1396> .
+<http://example.org/ns#a1397> <http://example.org/ns#a1397> <http://example.org/ns#a1397> .
+<http://example.org/ns#a1398> <http://example.org/ns#a1398> <http://example.org/ns#a1398> .
+<http://example.org/ns#a1399> <http://example.org/ns#a1399> <http://example.org/ns#a1399> .
+<http://example.org/ns#a1400> <http://example.org/ns#a1400> <http://example.org/ns#a1400> .
+<http://example.org/ns#a1401> <http://example.org/ns#a1401> <http://example.org/ns#a1401> .
+<http://example.org/ns#a1402> <http://example.org/ns#a1402> <http://example.org/ns#a1402> .
+<http://example.org/ns#a1403> <http://example.org/ns#a1403> <http://example.org/ns#a1403> .
+<http://example.org/ns#a1404> <http://example.org/ns#a1404> <http://example.org/ns#a1404> .
+<http://example.org/ns#a1405> <http://example.org/ns#a1405> <http://example.org/ns#a1405> .
+<http://example.org/ns#a1406> <http://example.org/ns#a1406> <http://example.org/ns#a1406> .
+<http://example.org/ns#a1407> <http://example.org/ns#a1407> <http://example.org/ns#a1407> .
+<http://example.org/ns#a1408> <http://example.org/ns#a1408> <http://example.org/ns#a1408> .
+<http://example.org/ns#a1409> <http://example.org/ns#a1409> <http://example.org/ns#a1409> .
+<http://example.org/ns#a1410> <http://example.org/ns#a1410> <http://example.org/ns#a1410> .
+<http://example.org/ns#a1411> <http://example.org/ns#a1411> <http://example.org/ns#a1411> .
+<http://example.org/ns#a1412> <http://example.org/ns#a1412> <http://example.org/ns#a1412> .
+<http://example.org/ns#a1413> <http://example.org/ns#a1413> <http://example.org/ns#a1413> .
+<http://example.org/ns#a1414> <http://example.org/ns#a1414> <http://example.org/ns#a1414> .
+<http://example.org/ns#a1415> <http://example.org/ns#a1415> <http://example.org/ns#a1415> .
+<http://example.org/ns#a1416> <http://example.org/ns#a1416> <http://example.org/ns#a1416> .
+<http://example.org/ns#a1417> <http://example.org/ns#a1417> <http://example.org/ns#a1417> .
+<http://example.org/ns#a1418> <http://example.org/ns#a1418> <http://example.org/ns#a1418> .
+<http://example.org/ns#a1419> <http://example.org/ns#a1419> <http://example.org/ns#a1419> .
+<http://example.org/ns#a1420> <http://example.org/ns#a1420> <http://example.org/ns#a1420> .
+<http://example.org/ns#a1421> <http://example.org/ns#a1421> <http://example.org/ns#a1421> .
+<http://example.org/ns#a1422> <http://example.org/ns#a1422> <http://example.org/ns#a1422> .
+<http://example.org/ns#a1423> <http://example.org/ns#a1423> <http://example.org/ns#a1423> .
+<http://example.org/ns#a1424> <http://example.org/ns#a1424> <http://example.org/ns#a1424> .
+<http://example.org/ns#a1425> <http://example.org/ns#a1425> <http://example.org/ns#a1425> .
+<http://example.org/ns#a1426> <http://example.org/ns#a1426> <http://example.org/ns#a1426> .
+<http://example.org/ns#a1427> <http://example.org/ns#a1427> <http://example.org/ns#a1427> .
+<http://example.org/ns#a1428> <http://example.org/ns#a1428> <http://example.org/ns#a1428> .
+<http://example.org/ns#a1429> <http://example.org/ns#a1429> <http://example.org/ns#a1429> .
+<http://example.org/ns#a1430> <http://example.org/ns#a1430> <http://example.org/ns#a1430> .
+<http://example.org/ns#a1431> <http://example.org/ns#a1431> <http://example.org/ns#a1431> .
+<http://example.org/ns#a1432> <http://example.org/ns#a1432> <http://example.org/ns#a1432> .
+<http://example.org/ns#a1433> <http://example.org/ns#a1433> <http://example.org/ns#a1433> .
+<http://example.org/ns#a1434> <http://example.org/ns#a1434> <http://example.org/ns#a1434> .
+<http://example.org/ns#a1435> <http://example.org/ns#a1435> <http://example.org/ns#a1435> .
+<http://example.org/ns#a1436> <http://example.org/ns#a1436> <http://example.org/ns#a1436> .
+<http://example.org/ns#a1437> <http://example.org/ns#a1437> <http://example.org/ns#a1437> .
+<http://example.org/ns#a1438> <http://example.org/ns#a1438> <http://example.org/ns#a1438> .
+<http://example.org/ns#a1439> <http://example.org/ns#a1439> <http://example.org/ns#a1439> .
+<http://example.org/ns#a1440> <http://example.org/ns#a1440> <http://example.org/ns#a1440> .
+<http://example.org/ns#a1441> <http://example.org/ns#a1441> <http://example.org/ns#a1441> .
+<http://example.org/ns#a1442> <http://example.org/ns#a1442> <http://example.org/ns#a1442> .
+<http://example.org/ns#a1443> <http://example.org/ns#a1443> <http://example.org/ns#a1443> .
+<http://example.org/ns#a1444> <http://example.org/ns#a1444> <http://example.org/ns#a1444> .
+<http://example.org/ns#a1445> <http://example.org/ns#a1445> <http://example.org/ns#a1445> .
+<http://example.org/ns#a1446> <http://example.org/ns#a1446> <http://example.org/ns#a1446> .
+<http://example.org/ns#a1447> <http://example.org/ns#a1447> <http://example.org/ns#a1447> .
+<http://example.org/ns#a1448> <http://example.org/ns#a1448> <http://example.org/ns#a1448> .
+<http://example.org/ns#a1449> <http://example.org/ns#a1449> <http://example.org/ns#a1449> .
+<http://example.org/ns#a1450> <http://example.org/ns#a1450> <http://example.org/ns#a1450> .
+<http://example.org/ns#a1451> <http://example.org/ns#a1451> <http://example.org/ns#a1451> .
+<http://example.org/ns#a1452> <http://example.org/ns#a1452> <http://example.org/ns#a1452> .
+<http://example.org/ns#a1453> <http://example.org/ns#a1453> <http://example.org/ns#a1453> .
+<http://example.org/ns#a1454> <http://example.org/ns#a1454> <http://example.org/ns#a1454> .
+<http://example.org/ns#a1455> <http://example.org/ns#a1455> <http://example.org/ns#a1455> .
+<http://example.org/ns#a1456> <http://example.org/ns#a1456> <http://example.org/ns#a1456> .
+<http://example.org/ns#a1457> <http://example.org/ns#a1457> <http://example.org/ns#a1457> .
+<http://example.org/ns#a1458> <http://example.org/ns#a1458> <http://example.org/ns#a1458> .
+<http://example.org/ns#a1459> <http://example.org/ns#a1459> <http://example.org/ns#a1459> .
+<http://example.org/ns#a1460> <http://example.org/ns#a1460> <http://example.org/ns#a1460> .
+<http://example.org/ns#a1461> <http://example.org/ns#a1461> <http://example.org/ns#a1461> .
+<http://example.org/ns#a1462> <http://example.org/ns#a1462> <http://example.org/ns#a1462> .
+<http://example.org/ns#a1463> <http://example.org/ns#a1463> <http://example.org/ns#a1463> .
+<http://example.org/ns#a1464> <http://example.org/ns#a1464> <http://example.org/ns#a1464> .
+<http://example.org/ns#a1465> <http://example.org/ns#a1465> <http://example.org/ns#a1465> .
+<http://example.org/ns#a1466> <http://example.org/ns#a1466> <http://example.org/ns#a1466> .
+<http://example.org/ns#a1467> <http://example.org/ns#a1467> <http://example.org/ns#a1467> .
+<http://example.org/ns#a1468> <http://example.org/ns#a1468> <http://example.org/ns#a1468> .
+<http://example.org/ns#a1469> <http://example.org/ns#a1469> <http://example.org/ns#a1469> .
+<http://example.org/ns#a1470> <http://example.org/ns#a1470> <http://example.org/ns#a1470> .
+<http://example.org/ns#a1471> <http://example.org/ns#a1471> <http://example.org/ns#a1471> .
+<http://example.org/ns#a1472> <http://example.org/ns#a1472> <http://example.org/ns#a1472> .
+<http://example.org/ns#a1473> <http://example.org/ns#a1473> <http://example.org/ns#a1473> .
+<http://example.org/ns#a1474> <http://example.org/ns#a1474> <http://example.org/ns#a1474> .
+<http://example.org/ns#a1475> <http://example.org/ns#a1475> <http://example.org/ns#a1475> .
+<http://example.org/ns#a1476> <http://example.org/ns#a1476> <http://example.org/ns#a1476> .
+<http://example.org/ns#a1477> <http://example.org/ns#a1477> <http://example.org/ns#a1477> .
+<http://example.org/ns#a1478> <http://example.org/ns#a1478> <http://example.org/ns#a1478> .
+<http://example.org/ns#a1479> <http://example.org/ns#a1479> <http://example.org/ns#a1479> .
+<http://example.org/ns#a1480> <http://example.org/ns#a1480> <http://example.org/ns#a1480> .
+<http://example.org/ns#a1481> <http://example.org/ns#a1481> <http://example.org/ns#a1481> .
+<http://example.org/ns#a1482> <http://example.org/ns#a1482> <http://example.org/ns#a1482> .
+<http://example.org/ns#a1483> <http://example.org/ns#a1483> <http://example.org/ns#a1483> .
+<http://example.org/ns#a1484> <http://example.org/ns#a1484> <http://example.org/ns#a1484> .
+<http://example.org/ns#a1485> <http://example.org/ns#a1485> <http://example.org/ns#a1485> .
+<http://example.org/ns#a1486> <http://example.org/ns#a1486> <http://example.org/ns#a1486> .
+<http://example.org/ns#a1487> <http://example.org/ns#a1487> <http://example.org/ns#a1487> .
+<http://example.org/ns#a1488> <http://example.org/ns#a1488> <http://example.org/ns#a1488> .
+<http://example.org/ns#a1489> <http://example.org/ns#a1489> <http://example.org/ns#a1489> .
+<http://example.org/ns#a1490> <http://example.org/ns#a1490> <http://example.org/ns#a1490> .
+<http://example.org/ns#a1491> <http://example.org/ns#a1491> <http://example.org/ns#a1491> .
+<http://example.org/ns#a1492> <http://example.org/ns#a1492> <http://example.org/ns#a1492> .
+<http://example.org/ns#a1493> <http://example.org/ns#a1493> <http://example.org/ns#a1493> .
+<http://example.org/ns#a1494> <http://example.org/ns#a1494> <http://example.org/ns#a1494> .
+<http://example.org/ns#a1495> <http://example.org/ns#a1495> <http://example.org/ns#a1495> .
+<http://example.org/ns#a1496> <http://example.org/ns#a1496> <http://example.org/ns#a1496> .
+<http://example.org/ns#a1497> <http://example.org/ns#a1497> <http://example.org/ns#a1497> .
+<http://example.org/ns#a1498> <http://example.org/ns#a1498> <http://example.org/ns#a1498> .
+<http://example.org/ns#a1499> <http://example.org/ns#a1499> <http://example.org/ns#a1499> .
+<http://example.org/ns#a1500> <http://example.org/ns#a1500> <http://example.org/ns#a1500> .
+<http://example.org/ns#a1501> <http://example.org/ns#a1501> <http://example.org/ns#a1501> .
+<http://example.org/ns#a1502> <http://example.org/ns#a1502> <http://example.org/ns#a1502> .
+<http://example.org/ns#a1503> <http://example.org/ns#a1503> <http://example.org/ns#a1503> .
+<http://example.org/ns#a1504> <http://example.org/ns#a1504> <http://example.org/ns#a1504> .
+<http://example.org/ns#a1505> <http://example.org/ns#a1505> <http://example.org/ns#a1505> .
+<http://example.org/ns#a1506> <http://example.org/ns#a1506> <http://example.org/ns#a1506> .
+<http://example.org/ns#a1507> <http://example.org/ns#a1507> <http://example.org/ns#a1507> .
+<http://example.org/ns#a1508> <http://example.org/ns#a1508> <http://example.org/ns#a1508> .
+<http://example.org/ns#a1509> <http://example.org/ns#a1509> <http://example.org/ns#a1509> .
+<http://example.org/ns#a1510> <http://example.org/ns#a1510> <http://example.org/ns#a1510> .
+<http://example.org/ns#a1511> <http://example.org/ns#a1511> <http://example.org/ns#a1511> .
+<http://example.org/ns#a1512> <http://example.org/ns#a1512> <http://example.org/ns#a1512> .
+<http://example.org/ns#a1513> <http://example.org/ns#a1513> <http://example.org/ns#a1513> .
+<http://example.org/ns#a1514> <http://example.org/ns#a1514> <http://example.org/ns#a1514> .
+<http://example.org/ns#a1515> <http://example.org/ns#a1515> <http://example.org/ns#a1515> .
+<http://example.org/ns#a1516> <http://example.org/ns#a1516> <http://example.org/ns#a1516> .
+<http://example.org/ns#a1517> <http://example.org/ns#a1517> <http://example.org/ns#a1517> .
+<http://example.org/ns#a1518> <http://example.org/ns#a1518> <http://example.org/ns#a1518> .
+<http://example.org/ns#a1519> <http://example.org/ns#a1519> <http://example.org/ns#a1519> .
+<http://example.org/ns#a1520> <http://example.org/ns#a1520> <http://example.org/ns#a1520> .
+<http://example.org/ns#a1521> <http://example.org/ns#a1521> <http://example.org/ns#a1521> .
+<http://example.org/ns#a1522> <http://example.org/ns#a1522> <http://example.org/ns#a1522> .
+<http://example.org/ns#a1523> <http://example.org/ns#a1523> <http://example.org/ns#a1523> .
+<http://example.org/ns#a1524> <http://example.org/ns#a1524> <http://example.org/ns#a1524> .
+<http://example.org/ns#a1525> <http://example.org/ns#a1525> <http://example.org/ns#a1525> .
+<http://example.org/ns#a1526> <http://example.org/ns#a1526> <http://example.org/ns#a1526> .
+<http://example.org/ns#a1527> <http://example.org/ns#a1527> <http://example.org/ns#a1527> .
+<http://example.org/ns#a1528> <http://example.org/ns#a1528> <http://example.org/ns#a1528> .
+<http://example.org/ns#a1529> <http://example.org/ns#a1529> <http://example.org/ns#a1529> .
+<http://example.org/ns#a1530> <http://example.org/ns#a1530> <http://example.org/ns#a1530> .
+<http://example.org/ns#a1531> <http://example.org/ns#a1531> <http://example.org/ns#a1531> .
+<http://example.org/ns#a1532> <http://example.org/ns#a1532> <http://example.org/ns#a1532> .
+<http://example.org/ns#a1533> <http://example.org/ns#a1533> <http://example.org/ns#a1533> .
+<http://example.org/ns#a1534> <http://example.org/ns#a1534> <http://example.org/ns#a1534> .
+<http://example.org/ns#a1535> <http://example.org/ns#a1535> <http://example.org/ns#a1535> .
+<http://example.org/ns#a1536> <http://example.org/ns#a1536> <http://example.org/ns#a1536> .
+<http://example.org/ns#a1537> <http://example.org/ns#a1537> <http://example.org/ns#a1537> .
+<http://example.org/ns#a1538> <http://example.org/ns#a1538> <http://example.org/ns#a1538> .
+<http://example.org/ns#a1539> <http://example.org/ns#a1539> <http://example.org/ns#a1539> .
+<http://example.org/ns#a1540> <http://example.org/ns#a1540> <http://example.org/ns#a1540> .
+<http://example.org/ns#a1541> <http://example.org/ns#a1541> <http://example.org/ns#a1541> .
+<http://example.org/ns#a1542> <http://example.org/ns#a1542> <http://example.org/ns#a1542> .
+<http://example.org/ns#a1543> <http://example.org/ns#a1543> <http://example.org/ns#a1543> .
+<http://example.org/ns#a1544> <http://example.org/ns#a1544> <http://example.org/ns#a1544> .
+<http://example.org/ns#a1545> <http://example.org/ns#a1545> <http://example.org/ns#a1545> .
+<http://example.org/ns#a1546> <http://example.org/ns#a1546> <http://example.org/ns#a1546> .
+<http://example.org/ns#a1547> <http://example.org/ns#a1547> <http://example.org/ns#a1547> .
+<http://example.org/ns#a1548> <http://example.org/ns#a1548> <http://example.org/ns#a1548> .
+<http://example.org/ns#a1549> <http://example.org/ns#a1549> <http://example.org/ns#a1549> .
+<http://example.org/ns#a1550> <http://example.org/ns#a1550> <http://example.org/ns#a1550> .
+<http://example.org/ns#a1551> <http://example.org/ns#a1551> <http://example.org/ns#a1551> .
+<http://example.org/ns#a1552> <http://example.org/ns#a1552> <http://example.org/ns#a1552> .
+<http://example.org/ns#a1553> <http://example.org/ns#a1553> <http://example.org/ns#a1553> .
+<http://example.org/ns#a1554> <http://example.org/ns#a1554> <http://example.org/ns#a1554> .
+<http://example.org/ns#a1555> <http://example.org/ns#a1555> <http://example.org/ns#a1555> .
+<http://example.org/ns#a1556> <http://example.org/ns#a1556> <http://example.org/ns#a1556> .
+<http://example.org/ns#a1557> <http://example.org/ns#a1557> <http://example.org/ns#a1557> .
+<http://example.org/ns#a1558> <http://example.org/ns#a1558> <http://example.org/ns#a1558> .
+<http://example.org/ns#a1559> <http://example.org/ns#a1559> <http://example.org/ns#a1559> .
+<http://example.org/ns#a1560> <http://example.org/ns#a1560> <http://example.org/ns#a1560> .
+<http://example.org/ns#a1561> <http://example.org/ns#a1561> <http://example.org/ns#a1561> .
+<http://example.org/ns#a1562> <http://example.org/ns#a1562> <http://example.org/ns#a1562> .
+<http://example.org/ns#a1563> <http://example.org/ns#a1563> <http://example.org/ns#a1563> .
+<http://example.org/ns#a1564> <http://example.org/ns#a1564> <http://example.org/ns#a1564> .
+<http://example.org/ns#a1565> <http://example.org/ns#a1565> <http://example.org/ns#a1565> .
+<http://example.org/ns#a1566> <http://example.org/ns#a1566> <http://example.org/ns#a1566> .
+<http://example.org/ns#a1567> <http://example.org/ns#a1567> <http://example.org/ns#a1567> .
+<http://example.org/ns#a1568> <http://example.org/ns#a1568> <http://example.org/ns#a1568> .
+<http://example.org/ns#a1569> <http://example.org/ns#a1569> <http://example.org/ns#a1569> .
+<http://example.org/ns#a1570> <http://example.org/ns#a1570> <http://example.org/ns#a1570> .
+<http://example.org/ns#a1571> <http://example.org/ns#a1571> <http://example.org/ns#a1571> .
+<http://example.org/ns#a1572> <http://example.org/ns#a1572> <http://example.org/ns#a1572> .
+<http://example.org/ns#a1573> <http://example.org/ns#a1573> <http://example.org/ns#a1573> .
+<http://example.org/ns#a1574> <http://example.org/ns#a1574> <http://example.org/ns#a1574> .
+<http://example.org/ns#a1575> <http://example.org/ns#a1575> <http://example.org/ns#a1575> .
+<http://example.org/ns#a1576> <http://example.org/ns#a1576> <http://example.org/ns#a1576> .
+<http://example.org/ns#a1577> <http://example.org/ns#a1577> <http://example.org/ns#a1577> .
+<http://example.org/ns#a1578> <http://example.org/ns#a1578> <http://example.org/ns#a1578> .
+<http://example.org/ns#a1579> <http://example.org/ns#a1579> <http://example.org/ns#a1579> .
+<http://example.org/ns#a1580> <http://example.org/ns#a1580> <http://example.org/ns#a1580> .
+<http://example.org/ns#a1581> <http://example.org/ns#a1581> <http://example.org/ns#a1581> .
+<http://example.org/ns#a1582> <http://example.org/ns#a1582> <http://example.org/ns#a1582> .
+<http://example.org/ns#a1583> <http://example.org/ns#a1583> <http://example.org/ns#a1583> .
+<http://example.org/ns#a1584> <http://example.org/ns#a1584> <http://example.org/ns#a1584> .
+<http://example.org/ns#a1585> <http://example.org/ns#a1585> <http://example.org/ns#a1585> .
+<http://example.org/ns#a1586> <http://example.org/ns#a1586> <http://example.org/ns#a1586> .
+<http://example.org/ns#a1587> <http://example.org/ns#a1587> <http://example.org/ns#a1587> .
+<http://example.org/ns#a1588> <http://example.org/ns#a1588> <http://example.org/ns#a1588> .
+<http://example.org/ns#a1589> <http://example.org/ns#a1589> <http://example.org/ns#a1589> .
+<http://example.org/ns#a1590> <http://example.org/ns#a1590> <http://example.org/ns#a1590> .
+<http://example.org/ns#a1591> <http://example.org/ns#a1591> <http://example.org/ns#a1591> .
+<http://example.org/ns#a1592> <http://example.org/ns#a1592> <http://example.org/ns#a1592> .
+<http://example.org/ns#a1593> <http://example.org/ns#a1593> <http://example.org/ns#a1593> .
+<http://example.org/ns#a1594> <http://example.org/ns#a1594> <http://example.org/ns#a1594> .
+<http://example.org/ns#a1595> <http://example.org/ns#a1595> <http://example.org/ns#a1595> .
+<http://example.org/ns#a1596> <http://example.org/ns#a1596> <http://example.org/ns#a1596> .
+<http://example.org/ns#a1597> <http://example.org/ns#a1597> <http://example.org/ns#a1597> .
+<http://example.org/ns#a1598> <http://example.org/ns#a1598> <http://example.org/ns#a1598> .
+<http://example.org/ns#a1599> <http://example.org/ns#a1599> <http://example.org/ns#a1599> .
+<http://example.org/ns#a1600> <http://example.org/ns#a1600> <http://example.org/ns#a1600> .
+<http://example.org/ns#a1601> <http://example.org/ns#a1601> <http://example.org/ns#a1601> .
+<http://example.org/ns#a1602> <http://example.org/ns#a1602> <http://example.org/ns#a1602> .
+<http://example.org/ns#a1603> <http://example.org/ns#a1603> <http://example.org/ns#a1603> .
+<http://example.org/ns#a1604> <http://example.org/ns#a1604> <http://example.org/ns#a1604> .
+<http://example.org/ns#a1605> <http://example.org/ns#a1605> <http://example.org/ns#a1605> .
+<http://example.org/ns#a1606> <http://example.org/ns#a1606> <http://example.org/ns#a1606> .
+<http://example.org/ns#a1607> <http://example.org/ns#a1607> <http://example.org/ns#a1607> .
+<http://example.org/ns#a1608> <http://example.org/ns#a1608> <http://example.org/ns#a1608> .
+<http://example.org/ns#a1609> <http://example.org/ns#a1609> <http://example.org/ns#a1609> .
+<http://example.org/ns#a1610> <http://example.org/ns#a1610> <http://example.org/ns#a1610> .
+<http://example.org/ns#a1611> <http://example.org/ns#a1611> <http://example.org/ns#a1611> .
+<http://example.org/ns#a1612> <http://example.org/ns#a1612> <http://example.org/ns#a1612> .
+<http://example.org/ns#a1613> <http://example.org/ns#a1613> <http://example.org/ns#a1613> .
+<http://example.org/ns#a1614> <http://example.org/ns#a1614> <http://example.org/ns#a1614> .
+<http://example.org/ns#a1615> <http://example.org/ns#a1615> <http://example.org/ns#a1615> .
+<http://example.org/ns#a1616> <http://example.org/ns#a1616> <http://example.org/ns#a1616> .
+<http://example.org/ns#a1617> <http://example.org/ns#a1617> <http://example.org/ns#a1617> .
+<http://example.org/ns#a1618> <http://example.org/ns#a1618> <http://example.org/ns#a1618> .
+<http://example.org/ns#a1619> <http://example.org/ns#a1619> <http://example.org/ns#a1619> .
+<http://example.org/ns#a1620> <http://example.org/ns#a1620> <http://example.org/ns#a1620> .
+<http://example.org/ns#a1621> <http://example.org/ns#a1621> <http://example.org/ns#a1621> .
+<http://example.org/ns#a1622> <http://example.org/ns#a1622> <http://example.org/ns#a1622> .
+<http://example.org/ns#a1623> <http://example.org/ns#a1623> <http://example.org/ns#a1623> .
+<http://example.org/ns#a1624> <http://example.org/ns#a1624> <http://example.org/ns#a1624> .
+<http://example.org/ns#a1625> <http://example.org/ns#a1625> <http://example.org/ns#a1625> .
+<http://example.org/ns#a1626> <http://example.org/ns#a1626> <http://example.org/ns#a1626> .
+<http://example.org/ns#a1627> <http://example.org/ns#a1627> <http://example.org/ns#a1627> .
+<http://example.org/ns#a1628> <http://example.org/ns#a1628> <http://example.org/ns#a1628> .
+<http://example.org/ns#a1629> <http://example.org/ns#a1629> <http://example.org/ns#a1629> .
+<http://example.org/ns#a1630> <http://example.org/ns#a1630> <http://example.org/ns#a1630> .
+<http://example.org/ns#a1631> <http://example.org/ns#a1631> <http://example.org/ns#a1631> .
+<http://example.org/ns#a1632> <http://example.org/ns#a1632> <http://example.org/ns#a1632> .
+<http://example.org/ns#a1633> <http://example.org/ns#a1633> <http://example.org/ns#a1633> .
+<http://example.org/ns#a1634> <http://example.org/ns#a1634> <http://example.org/ns#a1634> .
+<http://example.org/ns#a1635> <http://example.org/ns#a1635> <http://example.org/ns#a1635> .
+<http://example.org/ns#a1636> <http://example.org/ns#a1636> <http://example.org/ns#a1636> .
+<http://example.org/ns#a1637> <http://example.org/ns#a1637> <http://example.org/ns#a1637> .
+<http://example.org/ns#a1638> <http://example.org/ns#a1638> <http://example.org/ns#a1638> .
+<http://example.org/ns#a1639> <http://example.org/ns#a1639> <http://example.org/ns#a1639> .
+<http://example.org/ns#a1640> <http://example.org/ns#a1640> <http://example.org/ns#a1640> .
+<http://example.org/ns#a1641> <http://example.org/ns#a1641> <http://example.org/ns#a1641> .
+<http://example.org/ns#a1642> <http://example.org/ns#a1642> <http://example.org/ns#a1642> .
+<http://example.org/ns#a1643> <http://example.org/ns#a1643> <http://example.org/ns#a1643> .
+<http://example.org/ns#a1644> <http://example.org/ns#a1644> <http://example.org/ns#a1644> .
+<http://example.org/ns#a1645> <http://example.org/ns#a1645> <http://example.org/ns#a1645> .
+<http://example.org/ns#a1646> <http://example.org/ns#a1646> <http://example.org/ns#a1646> .
+<http://example.org/ns#a1647> <http://example.org/ns#a1647> <http://example.org/ns#a1647> .
+<http://example.org/ns#a1648> <http://example.org/ns#a1648> <http://example.org/ns#a1648> .
+<http://example.org/ns#a1649> <http://example.org/ns#a1649> <http://example.org/ns#a1649> .
+<http://example.org/ns#a1650> <http://example.org/ns#a1650> <http://example.org/ns#a1650> .
+<http://example.org/ns#a1651> <http://example.org/ns#a1651> <http://example.org/ns#a1651> .
+<http://example.org/ns#a1652> <http://example.org/ns#a1652> <http://example.org/ns#a1652> .
+<http://example.org/ns#a1653> <http://example.org/ns#a1653> <http://example.org/ns#a1653> .
+<http://example.org/ns#a1654> <http://example.org/ns#a1654> <http://example.org/ns#a1654> .
+<http://example.org/ns#a1655> <http://example.org/ns#a1655> <http://example.org/ns#a1655> .
+<http://example.org/ns#a1656> <http://example.org/ns#a1656> <http://example.org/ns#a1656> .
+<http://example.org/ns#a1657> <http://example.org/ns#a1657> <http://example.org/ns#a1657> .
+<http://example.org/ns#a1658> <http://example.org/ns#a1658> <http://example.org/ns#a1658> .
+<http://example.org/ns#a1659> <http://example.org/ns#a1659> <http://example.org/ns#a1659> .
+<http://example.org/ns#a1660> <http://example.org/ns#a1660> <http://example.org/ns#a1660> .
+<http://example.org/ns#a1661> <http://example.org/ns#a1661> <http://example.org/ns#a1661> .
+<http://example.org/ns#a1662> <http://example.org/ns#a1662> <http://example.org/ns#a1662> .
+<http://example.org/ns#a1663> <http://example.org/ns#a1663> <http://example.org/ns#a1663> .
+<http://example.org/ns#a1664> <http://example.org/ns#a1664> <http://example.org/ns#a1664> .
+<http://example.org/ns#a1665> <http://example.org/ns#a1665> <http://example.org/ns#a1665> .
+<http://example.org/ns#a1666> <http://example.org/ns#a1666> <http://example.org/ns#a1666> .
+<http://example.org/ns#a1667> <http://example.org/ns#a1667> <http://example.org/ns#a1667> .
+<http://example.org/ns#a1668> <http://example.org/ns#a1668> <http://example.org/ns#a1668> .
+<http://example.org/ns#a1669> <http://example.org/ns#a1669> <http://example.org/ns#a1669> .
+<http://example.org/ns#a1670> <http://example.org/ns#a1670> <http://example.org/ns#a1670> .
+<http://example.org/ns#a1671> <http://example.org/ns#a1671> <http://example.org/ns#a1671> .
+<http://example.org/ns#a1672> <http://example.org/ns#a1672> <http://example.org/ns#a1672> .
+<http://example.org/ns#a1673> <http://example.org/ns#a1673> <http://example.org/ns#a1673> .
+<http://example.org/ns#a1674> <http://example.org/ns#a1674> <http://example.org/ns#a1674> .
+<http://example.org/ns#a1675> <http://example.org/ns#a1675> <http://example.org/ns#a1675> .
+<http://example.org/ns#a1676> <http://example.org/ns#a1676> <http://example.org/ns#a1676> .
+<http://example.org/ns#a1677> <http://example.org/ns#a1677> <http://example.org/ns#a1677> .
+<http://example.org/ns#a1678> <http://example.org/ns#a1678> <http://example.org/ns#a1678> .
+<http://example.org/ns#a1679> <http://example.org/ns#a1679> <http://example.org/ns#a1679> .
+<http://example.org/ns#a1680> <http://example.org/ns#a1680> <http://example.org/ns#a1680> .
+<http://example.org/ns#a1681> <http://example.org/ns#a1681> <http://example.org/ns#a1681> .
+<http://example.org/ns#a1682> <http://example.org/ns#a1682> <http://example.org/ns#a1682> .
+<http://example.org/ns#a1683> <http://example.org/ns#a1683> <http://example.org/ns#a1683> .
+<http://example.org/ns#a1684> <http://example.org/ns#a1684> <http://example.org/ns#a1684> .
+<http://example.org/ns#a1685> <http://example.org/ns#a1685> <http://example.org/ns#a1685> .
+<http://example.org/ns#a1686> <http://example.org/ns#a1686> <http://example.org/ns#a1686> .
+<http://example.org/ns#a1687> <http://example.org/ns#a1687> <http://example.org/ns#a1687> .
+<http://example.org/ns#a1688> <http://example.org/ns#a1688> <http://example.org/ns#a1688> .
+<http://example.org/ns#a1689> <http://example.org/ns#a1689> <http://example.org/ns#a1689> .
+<http://example.org/ns#a1690> <http://example.org/ns#a1690> <http://example.org/ns#a1690> .
+<http://example.org/ns#a1691> <http://example.org/ns#a1691> <http://example.org/ns#a1691> .
+<http://example.org/ns#a1692> <http://example.org/ns#a1692> <http://example.org/ns#a1692> .
+<http://example.org/ns#a1693> <http://example.org/ns#a1693> <http://example.org/ns#a1693> .
+<http://example.org/ns#a1694> <http://example.org/ns#a1694> <http://example.org/ns#a1694> .
+<http://example.org/ns#a1695> <http://example.org/ns#a1695> <http://example.org/ns#a1695> .
+<http://example.org/ns#a1696> <http://example.org/ns#a1696> <http://example.org/ns#a1696> .
+<http://example.org/ns#a1697> <http://example.org/ns#a1697> <http://example.org/ns#a1697> .
+<http://example.org/ns#a1698> <http://example.org/ns#a1698> <http://example.org/ns#a1698> .
+<http://example.org/ns#a1699> <http://example.org/ns#a1699> <http://example.org/ns#a1699> .
+<http://example.org/ns#a1700> <http://example.org/ns#a1700> <http://example.org/ns#a1700> .
+<http://example.org/ns#a1701> <http://example.org/ns#a1701> <http://example.org/ns#a1701> .
+<http://example.org/ns#a1702> <http://example.org/ns#a1702> <http://example.org/ns#a1702> .
+<http://example.org/ns#a1703> <http://example.org/ns#a1703> <http://example.org/ns#a1703> .
+<http://example.org/ns#a1704> <http://example.org/ns#a1704> <http://example.org/ns#a1704> .
+<http://example.org/ns#a1705> <http://example.org/ns#a1705> <http://example.org/ns#a1705> .
+<http://example.org/ns#a1706> <http://example.org/ns#a1706> <http://example.org/ns#a1706> .
+<http://example.org/ns#a1707> <http://example.org/ns#a1707> <http://example.org/ns#a1707> .
+<http://example.org/ns#a1708> <http://example.org/ns#a1708> <http://example.org/ns#a1708> .
+<http://example.org/ns#a1709> <http://example.org/ns#a1709> <http://example.org/ns#a1709> .
+<http://example.org/ns#a1710> <http://example.org/ns#a1710> <http://example.org/ns#a1710> .
+<http://example.org/ns#a1711> <http://example.org/ns#a1711> <http://example.org/ns#a1711> .
+<http://example.org/ns#a1712> <http://example.org/ns#a1712> <http://example.org/ns#a1712> .
+<http://example.org/ns#a1713> <http://example.org/ns#a1713> <http://example.org/ns#a1713> .
+<http://example.org/ns#a1714> <http://example.org/ns#a1714> <http://example.org/ns#a1714> .
+<http://example.org/ns#a1715> <http://example.org/ns#a1715> <http://example.org/ns#a1715> .
+<http://example.org/ns#a1716> <http://example.org/ns#a1716> <http://example.org/ns#a1716> .
+<http://example.org/ns#a1717> <http://example.org/ns#a1717> <http://example.org/ns#a1717> .
+<http://example.org/ns#a1718> <http://example.org/ns#a1718> <http://example.org/ns#a1718> .
+<http://example.org/ns#a1719> <http://example.org/ns#a1719> <http://example.org/ns#a1719> .
+<http://example.org/ns#a1720> <http://example.org/ns#a1720> <http://example.org/ns#a1720> .
+<http://example.org/ns#a1721> <http://example.org/ns#a1721> <http://example.org/ns#a1721> .
+<http://example.org/ns#a1722> <http://example.org/ns#a1722> <http://example.org/ns#a1722> .
+<http://example.org/ns#a1723> <http://example.org/ns#a1723> <http://example.org/ns#a1723> .
+<http://example.org/ns#a1724> <http://example.org/ns#a1724> <http://example.org/ns#a1724> .
+<http://example.org/ns#a1725> <http://example.org/ns#a1725> <http://example.org/ns#a1725> .
+<http://example.org/ns#a1726> <http://example.org/ns#a1726> <http://example.org/ns#a1726> .
+<http://example.org/ns#a1727> <http://example.org/ns#a1727> <http://example.org/ns#a1727> .
+<http://example.org/ns#a1728> <http://example.org/ns#a1728> <http://example.org/ns#a1728> .
+<http://example.org/ns#a1729> <http://example.org/ns#a1729> <http://example.org/ns#a1729> .
+<http://example.org/ns#a1730> <http://example.org/ns#a1730> <http://example.org/ns#a1730> .
+<http://example.org/ns#a1731> <http://example.org/ns#a1731> <http://example.org/ns#a1731> .
+<http://example.org/ns#a1732> <http://example.org/ns#a1732> <http://example.org/ns#a1732> .
+<http://example.org/ns#a1733> <http://example.org/ns#a1733> <http://example.org/ns#a1733> .
+<http://example.org/ns#a1734> <http://example.org/ns#a1734> <http://example.org/ns#a1734> .
+<http://example.org/ns#a1735> <http://example.org/ns#a1735> <http://example.org/ns#a1735> .
+<http://example.org/ns#a1736> <http://example.org/ns#a1736> <http://example.org/ns#a1736> .
+<http://example.org/ns#a1737> <http://example.org/ns#a1737> <http://example.org/ns#a1737> .
+<http://example.org/ns#a1738> <http://example.org/ns#a1738> <http://example.org/ns#a1738> .
+<http://example.org/ns#a1739> <http://example.org/ns#a1739> <http://example.org/ns#a1739> .
+<http://example.org/ns#a1740> <http://example.org/ns#a1740> <http://example.org/ns#a1740> .
+<http://example.org/ns#a1741> <http://example.org/ns#a1741> <http://example.org/ns#a1741> .
+<http://example.org/ns#a1742> <http://example.org/ns#a1742> <http://example.org/ns#a1742> .
+<http://example.org/ns#a1743> <http://example.org/ns#a1743> <http://example.org/ns#a1743> .
+<http://example.org/ns#a1744> <http://example.org/ns#a1744> <http://example.org/ns#a1744> .
+<http://example.org/ns#a1745> <http://example.org/ns#a1745> <http://example.org/ns#a1745> .
+<http://example.org/ns#a1746> <http://example.org/ns#a1746> <http://example.org/ns#a1746> .
+<http://example.org/ns#a1747> <http://example.org/ns#a1747> <http://example.org/ns#a1747> .
+<http://example.org/ns#a1748> <http://example.org/ns#a1748> <http://example.org/ns#a1748> .
+<http://example.org/ns#a1749> <http://example.org/ns#a1749> <http://example.org/ns#a1749> .
+<http://example.org/ns#a1750> <http://example.org/ns#a1750> <http://example.org/ns#a1750> .
+<http://example.org/ns#a1751> <http://example.org/ns#a1751> <http://example.org/ns#a1751> .
+<http://example.org/ns#a1752> <http://example.org/ns#a1752> <http://example.org/ns#a1752> .
+<http://example.org/ns#a1753> <http://example.org/ns#a1753> <http://example.org/ns#a1753> .
+<http://example.org/ns#a1754> <http://example.org/ns#a1754> <http://example.org/ns#a1754> .
+<http://example.org/ns#a1755> <http://example.org/ns#a1755> <http://example.org/ns#a1755> .
+<http://example.org/ns#a1756> <http://example.org/ns#a1756> <http://example.org/ns#a1756> .
+<http://example.org/ns#a1757> <http://example.org/ns#a1757> <http://example.org/ns#a1757> .
+<http://example.org/ns#a1758> <http://example.org/ns#a1758> <http://example.org/ns#a1758> .
+<http://example.org/ns#a1759> <http://example.org/ns#a1759> <http://example.org/ns#a1759> .
+<http://example.org/ns#a1760> <http://example.org/ns#a1760> <http://example.org/ns#a1760> .
+<http://example.org/ns#a1761> <http://example.org/ns#a1761> <http://example.org/ns#a1761> .
+<http://example.org/ns#a1762> <http://example.org/ns#a1762> <http://example.org/ns#a1762> .
+<http://example.org/ns#a1763> <http://example.org/ns#a1763> <http://example.org/ns#a1763> .
+<http://example.org/ns#a1764> <http://example.org/ns#a1764> <http://example.org/ns#a1764> .
+<http://example.org/ns#a1765> <http://example.org/ns#a1765> <http://example.org/ns#a1765> .
+<http://example.org/ns#a1766> <http://example.org/ns#a1766> <http://example.org/ns#a1766> .
+<http://example.org/ns#a1767> <http://example.org/ns#a1767> <http://example.org/ns#a1767> .
+<http://example.org/ns#a1768> <http://example.org/ns#a1768> <http://example.org/ns#a1768> .
+<http://example.org/ns#a1769> <http://example.org/ns#a1769> <http://example.org/ns#a1769> .
+<http://example.org/ns#a1770> <http://example.org/ns#a1770> <http://example.org/ns#a1770> .
+<http://example.org/ns#a1771> <http://example.org/ns#a1771> <http://example.org/ns#a1771> .
+<http://example.org/ns#a1772> <http://example.org/ns#a1772> <http://example.org/ns#a1772> .
+<http://example.org/ns#a1773> <http://example.org/ns#a1773> <http://example.org/ns#a1773> .
+<http://example.org/ns#a1774> <http://example.org/ns#a1774> <http://example.org/ns#a1774> .
+<http://example.org/ns#a1775> <http://example.org/ns#a1775> <http://example.org/ns#a1775> .
+<http://example.org/ns#a1776> <http://example.org/ns#a1776> <http://example.org/ns#a1776> .
+<http://example.org/ns#a1777> <http://example.org/ns#a1777> <http://example.org/ns#a1777> .
+<http://example.org/ns#a1778> <http://example.org/ns#a1778> <http://example.org/ns#a1778> .
+<http://example.org/ns#a1779> <http://example.org/ns#a1779> <http://example.org/ns#a1779> .
+<http://example.org/ns#a1780> <http://example.org/ns#a1780> <http://example.org/ns#a1780> .
+<http://example.org/ns#a1781> <http://example.org/ns#a1781> <http://example.org/ns#a1781> .
+<http://example.org/ns#a1782> <http://example.org/ns#a1782> <http://example.org/ns#a1782> .
+<http://example.org/ns#a1783> <http://example.org/ns#a1783> <http://example.org/ns#a1783> .
+<http://example.org/ns#a1784> <http://example.org/ns#a1784> <http://example.org/ns#a1784> .
+<http://example.org/ns#a1785> <http://example.org/ns#a1785> <http://example.org/ns#a1785> .
+<http://example.org/ns#a1786> <http://example.org/ns#a1786> <http://example.org/ns#a1786> .
+<http://example.org/ns#a1787> <http://example.org/ns#a1787> <http://example.org/ns#a1787> .
+<http://example.org/ns#a1788> <http://example.org/ns#a1788> <http://example.org/ns#a1788> .
+<http://example.org/ns#a1789> <http://example.org/ns#a1789> <http://example.org/ns#a1789> .
+<http://example.org/ns#a1790> <http://example.org/ns#a1790> <http://example.org/ns#a1790> .
+<http://example.org/ns#a1791> <http://example.org/ns#a1791> <http://example.org/ns#a1791> .
+<http://example.org/ns#a1792> <http://example.org/ns#a1792> <http://example.org/ns#a1792> .
+<http://example.org/ns#a1793> <http://example.org/ns#a1793> <http://example.org/ns#a1793> .
+<http://example.org/ns#a1794> <http://example.org/ns#a1794> <http://example.org/ns#a1794> .
+<http://example.org/ns#a1795> <http://example.org/ns#a1795> <http://example.org/ns#a1795> .
+<http://example.org/ns#a1796> <http://example.org/ns#a1796> <http://example.org/ns#a1796> .
+<http://example.org/ns#a1797> <http://example.org/ns#a1797> <http://example.org/ns#a1797> .
+<http://example.org/ns#a1798> <http://example.org/ns#a1798> <http://example.org/ns#a1798> .
+<http://example.org/ns#a1799> <http://example.org/ns#a1799> <http://example.org/ns#a1799> .
+<http://example.org/ns#a1800> <http://example.org/ns#a1800> <http://example.org/ns#a1800> .
+<http://example.org/ns#a1801> <http://example.org/ns#a1801> <http://example.org/ns#a1801> .
+<http://example.org/ns#a1802> <http://example.org/ns#a1802> <http://example.org/ns#a1802> .
+<http://example.org/ns#a1803> <http://example.org/ns#a1803> <http://example.org/ns#a1803> .
+<http://example.org/ns#a1804> <http://example.org/ns#a1804> <http://example.org/ns#a1804> .
+<http://example.org/ns#a1805> <http://example.org/ns#a1805> <http://example.org/ns#a1805> .
+<http://example.org/ns#a1806> <http://example.org/ns#a1806> <http://example.org/ns#a1806> .
+<http://example.org/ns#a1807> <http://example.org/ns#a1807> <http://example.org/ns#a1807> .
+<http://example.org/ns#a1808> <http://example.org/ns#a1808> <http://example.org/ns#a1808> .
+<http://example.org/ns#a1809> <http://example.org/ns#a1809> <http://example.org/ns#a1809> .
+<http://example.org/ns#a1810> <http://example.org/ns#a1810> <http://example.org/ns#a1810> .
+<http://example.org/ns#a1811> <http://example.org/ns#a1811> <http://example.org/ns#a1811> .
+<http://example.org/ns#a1812> <http://example.org/ns#a1812> <http://example.org/ns#a1812> .
+<http://example.org/ns#a1813> <http://example.org/ns#a1813> <http://example.org/ns#a1813> .
+<http://example.org/ns#a1814> <http://example.org/ns#a1814> <http://example.org/ns#a1814> .
+<http://example.org/ns#a1815> <http://example.org/ns#a1815> <http://example.org/ns#a1815> .
+<http://example.org/ns#a1816> <http://example.org/ns#a1816> <http://example.org/ns#a1816> .
+<http://example.org/ns#a1817> <http://example.org/ns#a1817> <http://example.org/ns#a1817> .
+<http://example.org/ns#a1818> <http://example.org/ns#a1818> <http://example.org/ns#a1818> .
+<http://example.org/ns#a1819> <http://example.org/ns#a1819> <http://example.org/ns#a1819> .
+<http://example.org/ns#a1820> <http://example.org/ns#a1820> <http://example.org/ns#a1820> .
+<http://example.org/ns#a1821> <http://example.org/ns#a1821> <http://example.org/ns#a1821> .
+<http://example.org/ns#a1822> <http://example.org/ns#a1822> <http://example.org/ns#a1822> .
+<http://example.org/ns#a1823> <http://example.org/ns#a1823> <http://example.org/ns#a1823> .
+<http://example.org/ns#a1824> <http://example.org/ns#a1824> <http://example.org/ns#a1824> .
+<http://example.org/ns#a1825> <http://example.org/ns#a1825> <http://example.org/ns#a1825> .
+<http://example.org/ns#a1826> <http://example.org/ns#a1826> <http://example.org/ns#a1826> .
+<http://example.org/ns#a1827> <http://example.org/ns#a1827> <http://example.org/ns#a1827> .
+<http://example.org/ns#a1828> <http://example.org/ns#a1828> <http://example.org/ns#a1828> .
+<http://example.org/ns#a1829> <http://example.org/ns#a1829> <http://example.org/ns#a1829> .
+<http://example.org/ns#a1830> <http://example.org/ns#a1830> <http://example.org/ns#a1830> .
+<http://example.org/ns#a1831> <http://example.org/ns#a1831> <http://example.org/ns#a1831> .
+<http://example.org/ns#a1832> <http://example.org/ns#a1832> <http://example.org/ns#a1832> .
+<http://example.org/ns#a1833> <http://example.org/ns#a1833> <http://example.org/ns#a1833> .
+<http://example.org/ns#a1834> <http://example.org/ns#a1834> <http://example.org/ns#a1834> .
+<http://example.org/ns#a1835> <http://example.org/ns#a1835> <http://example.org/ns#a1835> .
+<http://example.org/ns#a1836> <http://example.org/ns#a1836> <http://example.org/ns#a1836> .
+<http://example.org/ns#a1837> <http://example.org/ns#a1837> <http://example.org/ns#a1837> .
+<http://example.org/ns#a1838> <http://example.org/ns#a1838> <http://example.org/ns#a1838> .
+<http://example.org/ns#a1839> <http://example.org/ns#a1839> <http://example.org/ns#a1839> .
+<http://example.org/ns#a1840> <http://example.org/ns#a1840> <http://example.org/ns#a1840> .
+<http://example.org/ns#a1841> <http://example.org/ns#a1841> <http://example.org/ns#a1841> .
+<http://example.org/ns#a1842> <http://example.org/ns#a1842> <http://example.org/ns#a1842> .
+<http://example.org/ns#a1843> <http://example.org/ns#a1843> <http://example.org/ns#a1843> .
+<http://example.org/ns#a1844> <http://example.org/ns#a1844> <http://example.org/ns#a1844> .
+<http://example.org/ns#a1845> <http://example.org/ns#a1845> <http://example.org/ns#a1845> .
+<http://example.org/ns#a1846> <http://example.org/ns#a1846> <http://example.org/ns#a1846> .
+<http://example.org/ns#a1847> <http://example.org/ns#a1847> <http://example.org/ns#a1847> .
+<http://example.org/ns#a1848> <http://example.org/ns#a1848> <http://example.org/ns#a1848> .
+<http://example.org/ns#a1849> <http://example.org/ns#a1849> <http://example.org/ns#a1849> .
+<http://example.org/ns#a1850> <http://example.org/ns#a1850> <http://example.org/ns#a1850> .
+<http://example.org/ns#a1851> <http://example.org/ns#a1851> <http://example.org/ns#a1851> .
+<http://example.org/ns#a1852> <http://example.org/ns#a1852> <http://example.org/ns#a1852> .
+<http://example.org/ns#a1853> <http://example.org/ns#a1853> <http://example.org/ns#a1853> .
+<http://example.org/ns#a1854> <http://example.org/ns#a1854> <http://example.org/ns#a1854> .
+<http://example.org/ns#a1855> <http://example.org/ns#a1855> <http://example.org/ns#a1855> .
+<http://example.org/ns#a1856> <http://example.org/ns#a1856> <http://example.org/ns#a1856> .
+<http://example.org/ns#a1857> <http://example.org/ns#a1857> <http://example.org/ns#a1857> .
+<http://example.org/ns#a1858> <http://example.org/ns#a1858> <http://example.org/ns#a1858> .
+<http://example.org/ns#a1859> <http://example.org/ns#a1859> <http://example.org/ns#a1859> .
+<http://example.org/ns#a1860> <http://example.org/ns#a1860> <http://example.org/ns#a1860> .
+<http://example.org/ns#a1861> <http://example.org/ns#a1861> <http://example.org/ns#a1861> .
+<http://example.org/ns#a1862> <http://example.org/ns#a1862> <http://example.org/ns#a1862> .
+<http://example.org/ns#a1863> <http://example.org/ns#a1863> <http://example.org/ns#a1863> .
+<http://example.org/ns#a1864> <http://example.org/ns#a1864> <http://example.org/ns#a1864> .
+<http://example.org/ns#a1865> <http://example.org/ns#a1865> <http://example.org/ns#a1865> .
+<http://example.org/ns#a1866> <http://example.org/ns#a1866> <http://example.org/ns#a1866> .
+<http://example.org/ns#a1867> <http://example.org/ns#a1867> <http://example.org/ns#a1867> .
+<http://example.org/ns#a1868> <http://example.org/ns#a1868> <http://example.org/ns#a1868> .
+<http://example.org/ns#a1869> <http://example.org/ns#a1869> <http://example.org/ns#a1869> .
+<http://example.org/ns#a1870> <http://example.org/ns#a1870> <http://example.org/ns#a1870> .
+<http://example.org/ns#a1871> <http://example.org/ns#a1871> <http://example.org/ns#a1871> .
+<http://example.org/ns#a1872> <http://example.org/ns#a1872> <http://example.org/ns#a1872> .
+<http://example.org/ns#a1873> <http://example.org/ns#a1873> <http://example.org/ns#a1873> .
+<http://example.org/ns#a1874> <http://example.org/ns#a1874> <http://example.org/ns#a1874> .
+<http://example.org/ns#a1875> <http://example.org/ns#a1875> <http://example.org/ns#a1875> .
+<http://example.org/ns#a1876> <http://example.org/ns#a1876> <http://example.org/ns#a1876> .
+<http://example.org/ns#a1877> <http://example.org/ns#a1877> <http://example.org/ns#a1877> .
+<http://example.org/ns#a1878> <http://example.org/ns#a1878> <http://example.org/ns#a1878> .
+<http://example.org/ns#a1879> <http://example.org/ns#a1879> <http://example.org/ns#a1879> .
+<http://example.org/ns#a1880> <http://example.org/ns#a1880> <http://example.org/ns#a1880> .
+<http://example.org/ns#a1881> <http://example.org/ns#a1881> <http://example.org/ns#a1881> .
+<http://example.org/ns#a1882> <http://example.org/ns#a1882> <http://example.org/ns#a1882> .
+<http://example.org/ns#a1883> <http://example.org/ns#a1883> <http://example.org/ns#a1883> .
+<http://example.org/ns#a1884> <http://example.org/ns#a1884> <http://example.org/ns#a1884> .
+<http://example.org/ns#a1885> <http://example.org/ns#a1885> <http://example.org/ns#a1885> .
+<http://example.org/ns#a1886> <http://example.org/ns#a1886> <http://example.org/ns#a1886> .
+<http://example.org/ns#a1887> <http://example.org/ns#a1887> <http://example.org/ns#a1887> .
+<http://example.org/ns#a1888> <http://example.org/ns#a1888> <http://example.org/ns#a1888> .
+<http://example.org/ns#a1889> <http://example.org/ns#a1889> <http://example.org/ns#a1889> .
+<http://example.org/ns#a1890> <http://example.org/ns#a1890> <http://example.org/ns#a1890> .
+<http://example.org/ns#a1891> <http://example.org/ns#a1891> <http://example.org/ns#a1891> .
+<http://example.org/ns#a1892> <http://example.org/ns#a1892> <http://example.org/ns#a1892> .
+<http://example.org/ns#a1893> <http://example.org/ns#a1893> <http://example.org/ns#a1893> .
+<http://example.org/ns#a1894> <http://example.org/ns#a1894> <http://example.org/ns#a1894> .
+<http://example.org/ns#a1895> <http://example.org/ns#a1895> <http://example.org/ns#a1895> .
+<http://example.org/ns#a1896> <http://example.org/ns#a1896> <http://example.org/ns#a1896> .
+<http://example.org/ns#a1897> <http://example.org/ns#a1897> <http://example.org/ns#a1897> .
+<http://example.org/ns#a1898> <http://example.org/ns#a1898> <http://example.org/ns#a1898> .
+<http://example.org/ns#a1899> <http://example.org/ns#a1899> <http://example.org/ns#a1899> .
+<http://example.org/ns#a1900> <http://example.org/ns#a1900> <http://example.org/ns#a1900> .
+<http://example.org/ns#a1901> <http://example.org/ns#a1901> <http://example.org/ns#a1901> .
+<http://example.org/ns#a1902> <http://example.org/ns#a1902> <http://example.org/ns#a1902> .
+<http://example.org/ns#a1903> <http://example.org/ns#a1903> <http://example.org/ns#a1903> .
+<http://example.org/ns#a1904> <http://example.org/ns#a1904> <http://example.org/ns#a1904> .
+<http://example.org/ns#a1905> <http://example.org/ns#a1905> <http://example.org/ns#a1905> .
+<http://example.org/ns#a1906> <http://example.org/ns#a1906> <http://example.org/ns#a1906> .
+<http://example.org/ns#a1907> <http://example.org/ns#a1907> <http://example.org/ns#a1907> .
+<http://example.org/ns#a1908> <http://example.org/ns#a1908> <http://example.org/ns#a1908> .
+<http://example.org/ns#a1909> <http://example.org/ns#a1909> <http://example.org/ns#a1909> .
+<http://example.org/ns#a1910> <http://example.org/ns#a1910> <http://example.org/ns#a1910> .
+<http://example.org/ns#a1911> <http://example.org/ns#a1911> <http://example.org/ns#a1911> .
+<http://example.org/ns#a1912> <http://example.org/ns#a1912> <http://example.org/ns#a1912> .
+<http://example.org/ns#a1913> <http://example.org/ns#a1913> <http://example.org/ns#a1913> .
+<http://example.org/ns#a1914> <http://example.org/ns#a1914> <http://example.org/ns#a1914> .
+<http://example.org/ns#a1915> <http://example.org/ns#a1915> <http://example.org/ns#a1915> .
+<http://example.org/ns#a1916> <http://example.org/ns#a1916> <http://example.org/ns#a1916> .
+<http://example.org/ns#a1917> <http://example.org/ns#a1917> <http://example.org/ns#a1917> .
+<http://example.org/ns#a1918> <http://example.org/ns#a1918> <http://example.org/ns#a1918> .
+<http://example.org/ns#a1919> <http://example.org/ns#a1919> <http://example.org/ns#a1919> .
+<http://example.org/ns#a1920> <http://example.org/ns#a1920> <http://example.org/ns#a1920> .
+<http://example.org/ns#a1921> <http://example.org/ns#a1921> <http://example.org/ns#a1921> .
+<http://example.org/ns#a1922> <http://example.org/ns#a1922> <http://example.org/ns#a1922> .
+<http://example.org/ns#a1923> <http://example.org/ns#a1923> <http://example.org/ns#a1923> .
+<http://example.org/ns#a1924> <http://example.org/ns#a1924> <http://example.org/ns#a1924> .
+<http://example.org/ns#a1925> <http://example.org/ns#a1925> <http://example.org/ns#a1925> .
+<http://example.org/ns#a1926> <http://example.org/ns#a1926> <http://example.org/ns#a1926> .
+<http://example.org/ns#a1927> <http://example.org/ns#a1927> <http://example.org/ns#a1927> .
+<http://example.org/ns#a1928> <http://example.org/ns#a1928> <http://example.org/ns#a1928> .
+<http://example.org/ns#a1929> <http://example.org/ns#a1929> <http://example.org/ns#a1929> .
+<http://example.org/ns#a1930> <http://example.org/ns#a1930> <http://example.org/ns#a1930> .
+<http://example.org/ns#a1931> <http://example.org/ns#a1931> <http://example.org/ns#a1931> .
+<http://example.org/ns#a1932> <http://example.org/ns#a1932> <http://example.org/ns#a1932> .
+<http://example.org/ns#a1933> <http://example.org/ns#a1933> <http://example.org/ns#a1933> .
+<http://example.org/ns#a1934> <http://example.org/ns#a1934> <http://example.org/ns#a1934> .
+<http://example.org/ns#a1935> <http://example.org/ns#a1935> <http://example.org/ns#a1935> .
+<http://example.org/ns#a1936> <http://example.org/ns#a1936> <http://example.org/ns#a1936> .
+<http://example.org/ns#a1937> <http://example.org/ns#a1937> <http://example.org/ns#a1937> .
+<http://example.org/ns#a1938> <http://example.org/ns#a1938> <http://example.org/ns#a1938> .
+<http://example.org/ns#a1939> <http://example.org/ns#a1939> <http://example.org/ns#a1939> .
+<http://example.org/ns#a1940> <http://example.org/ns#a1940> <http://example.org/ns#a1940> .
+<http://example.org/ns#a1941> <http://example.org/ns#a1941> <http://example.org/ns#a1941> .
+<http://example.org/ns#a1942> <http://example.org/ns#a1942> <http://example.org/ns#a1942> .
+<http://example.org/ns#a1943> <http://example.org/ns#a1943> <http://example.org/ns#a1943> .
+<http://example.org/ns#a1944> <http://example.org/ns#a1944> <http://example.org/ns#a1944> .
+<http://example.org/ns#a1945> <http://example.org/ns#a1945> <http://example.org/ns#a1945> .
+<http://example.org/ns#a1946> <http://example.org/ns#a1946> <http://example.org/ns#a1946> .
+<http://example.org/ns#a1947> <http://example.org/ns#a1947> <http://example.org/ns#a1947> .
+<http://example.org/ns#a1948> <http://example.org/ns#a1948> <http://example.org/ns#a1948> .
+<http://example.org/ns#a1949> <http://example.org/ns#a1949> <http://example.org/ns#a1949> .
+<http://example.org/ns#a1950> <http://example.org/ns#a1950> <http://example.org/ns#a1950> .
+<http://example.org/ns#a1951> <http://example.org/ns#a1951> <http://example.org/ns#a1951> .
+<http://example.org/ns#a1952> <http://example.org/ns#a1952> <http://example.org/ns#a1952> .
+<http://example.org/ns#a1953> <http://example.org/ns#a1953> <http://example.org/ns#a1953> .
+<http://example.org/ns#a1954> <http://example.org/ns#a1954> <http://example.org/ns#a1954> .
+<http://example.org/ns#a1955> <http://example.org/ns#a1955> <http://example.org/ns#a1955> .
+<http://example.org/ns#a1956> <http://example.org/ns#a1956> <http://example.org/ns#a1956> .
+<http://example.org/ns#a1957> <http://example.org/ns#a1957> <http://example.org/ns#a1957> .
+<http://example.org/ns#a1958> <http://example.org/ns#a1958> <http://example.org/ns#a1958> .
+<http://example.org/ns#a1959> <http://example.org/ns#a1959> <http://example.org/ns#a1959> .
+<http://example.org/ns#a1960> <http://example.org/ns#a1960> <http://example.org/ns#a1960> .
+<http://example.org/ns#a1961> <http://example.org/ns#a1961> <http://example.org/ns#a1961> .
+<http://example.org/ns#a1962> <http://example.org/ns#a1962> <http://example.org/ns#a1962> .
+<http://example.org/ns#a1963> <http://example.org/ns#a1963> <http://example.org/ns#a1963> .
+<http://example.org/ns#a1964> <http://example.org/ns#a1964> <http://example.org/ns#a1964> .
+<http://example.org/ns#a1965> <http://example.org/ns#a1965> <http://example.org/ns#a1965> .
+<http://example.org/ns#a1966> <http://example.org/ns#a1966> <http://example.org/ns#a1966> .
+<http://example.org/ns#a1967> <http://example.org/ns#a1967> <http://example.org/ns#a1967> .
+<http://example.org/ns#a1968> <http://example.org/ns#a1968> <http://example.org/ns#a1968> .
+<http://example.org/ns#a1969> <http://example.org/ns#a1969> <http://example.org/ns#a1969> .
+<http://example.org/ns#a1970> <http://example.org/ns#a1970> <http://example.org/ns#a1970> .
+<http://example.org/ns#a1971> <http://example.org/ns#a1971> <http://example.org/ns#a1971> .
+<http://example.org/ns#a1972> <http://example.org/ns#a1972> <http://example.org/ns#a1972> .
+<http://example.org/ns#a1973> <http://example.org/ns#a1973> <http://example.org/ns#a1973> .
+<http://example.org/ns#a1974> <http://example.org/ns#a1974> <http://example.org/ns#a1974> .
+<http://example.org/ns#a1975> <http://example.org/ns#a1975> <http://example.org/ns#a1975> .
+<http://example.org/ns#a1976> <http://example.org/ns#a1976> <http://example.org/ns#a1976> .
+<http://example.org/ns#a1977> <http://example.org/ns#a1977> <http://example.org/ns#a1977> .
+<http://example.org/ns#a1978> <http://example.org/ns#a1978> <http://example.org/ns#a1978> .
+<http://example.org/ns#a1979> <http://example.org/ns#a1979> <http://example.org/ns#a1979> .
+<http://example.org/ns#a1980> <http://example.org/ns#a1980> <http://example.org/ns#a1980> .
+<http://example.org/ns#a1981> <http://example.org/ns#a1981> <http://example.org/ns#a1981> .
+<http://example.org/ns#a1982> <http://example.org/ns#a1982> <http://example.org/ns#a1982> .
+<http://example.org/ns#a1983> <http://example.org/ns#a1983> <http://example.org/ns#a1983> .
+<http://example.org/ns#a1984> <http://example.org/ns#a1984> <http://example.org/ns#a1984> .
+<http://example.org/ns#a1985> <http://example.org/ns#a1985> <http://example.org/ns#a1985> .
+<http://example.org/ns#a1986> <http://example.org/ns#a1986> <http://example.org/ns#a1986> .
+<http://example.org/ns#a1987> <http://example.org/ns#a1987> <http://example.org/ns#a1987> .
+<http://example.org/ns#a1988> <http://example.org/ns#a1988> <http://example.org/ns#a1988> .
+<http://example.org/ns#a1989> <http://example.org/ns#a1989> <http://example.org/ns#a1989> .
+<http://example.org/ns#a1990> <http://example.org/ns#a1990> <http://example.org/ns#a1990> .
+<http://example.org/ns#a1991> <http://example.org/ns#a1991> <http://example.org/ns#a1991> .
+<http://example.org/ns#a1992> <http://example.org/ns#a1992> <http://example.org/ns#a1992> .
+<http://example.org/ns#a1993> <http://example.org/ns#a1993> <http://example.org/ns#a1993> .
+<http://example.org/ns#a1994> <http://example.org/ns#a1994> <http://example.org/ns#a1994> .
+<http://example.org/ns#a1995> <http://example.org/ns#a1995> <http://example.org/ns#a1995> .
+<http://example.org/ns#a1996> <http://example.org/ns#a1996> <http://example.org/ns#a1996> .
+<http://example.org/ns#a1997> <http://example.org/ns#a1997> <http://example.org/ns#a1997> .
+<http://example.org/ns#a1998> <http://example.org/ns#a1998> <http://example.org/ns#a1998> .
+<http://example.org/ns#a1999> <http://example.org/ns#a1999> <http://example.org/ns#a1999> .
+<http://example.org/ns#a2000> <http://example.org/ns#a2000> <http://example.org/ns#a2000> .
+<http://example.org/ns#a2001> <http://example.org/ns#a2001> <http://example.org/ns#a2001> .
+<http://example.org/ns#a2002> <http://example.org/ns#a2002> <http://example.org/ns#a2002> .
+<http://example.org/ns#a2003> <http://example.org/ns#a2003> <http://example.org/ns#a2003> .
+<http://example.org/ns#a2004> <http://example.org/ns#a2004> <http://example.org/ns#a2004> .
+<http://example.org/ns#a2005> <http://example.org/ns#a2005> <http://example.org/ns#a2005> .
+<http://example.org/ns#a2006> <http://example.org/ns#a2006> <http://example.org/ns#a2006> .
+<http://example.org/ns#a2007> <http://example.org/ns#a2007> <http://example.org/ns#a2007> .
+<http://example.org/ns#a2008> <http://example.org/ns#a2008> <http://example.org/ns#a2008> .
+<http://example.org/ns#a2009> <http://example.org/ns#a2009> <http://example.org/ns#a2009> .
+<http://example.org/ns#a2010> <http://example.org/ns#a2010> <http://example.org/ns#a2010> .
+<http://example.org/ns#a2011> <http://example.org/ns#a2011> <http://example.org/ns#a2011> .
+<http://example.org/ns#a2012> <http://example.org/ns#a2012> <http://example.org/ns#a2012> .
+<http://example.org/ns#a2013> <http://example.org/ns#a2013> <http://example.org/ns#a2013> .
+<http://example.org/ns#a2014> <http://example.org/ns#a2014> <http://example.org/ns#a2014> .
+<http://example.org/ns#a2015> <http://example.org/ns#a2015> <http://example.org/ns#a2015> .
+<http://example.org/ns#a2016> <http://example.org/ns#a2016> <http://example.org/ns#a2016> .
+<http://example.org/ns#a2017> <http://example.org/ns#a2017> <http://example.org/ns#a2017> .
+<http://example.org/ns#a2018> <http://example.org/ns#a2018> <http://example.org/ns#a2018> .
+<http://example.org/ns#a2019> <http://example.org/ns#a2019> <http://example.org/ns#a2019> .
+<http://example.org/ns#a2020> <http://example.org/ns#a2020> <http://example.org/ns#a2020> .
+<http://example.org/ns#a2021> <http://example.org/ns#a2021> <http://example.org/ns#a2021> .
+<http://example.org/ns#a2022> <http://example.org/ns#a2022> <http://example.org/ns#a2022> .
+<http://example.org/ns#a2023> <http://example.org/ns#a2023> <http://example.org/ns#a2023> .
+<http://example.org/ns#a2024> <http://example.org/ns#a2024> <http://example.org/ns#a2024> .
+<http://example.org/ns#a2025> <http://example.org/ns#a2025> <http://example.org/ns#a2025> .
+<http://example.org/ns#a2026> <http://example.org/ns#a2026> <http://example.org/ns#a2026> .
+<http://example.org/ns#a2027> <http://example.org/ns#a2027> <http://example.org/ns#a2027> .
+<http://example.org/ns#a2028> <http://example.org/ns#a2028> <http://example.org/ns#a2028> .
+<http://example.org/ns#a2029> <http://example.org/ns#a2029> <http://example.org/ns#a2029> .
+<http://example.org/ns#a2030> <http://example.org/ns#a2030> <http://example.org/ns#a2030> .
+<http://example.org/ns#a2031> <http://example.org/ns#a2031> <http://example.org/ns#a2031> .
+<http://example.org/ns#a2032> <http://example.org/ns#a2032> <http://example.org/ns#a2032> .
+<http://example.org/ns#a2033> <http://example.org/ns#a2033> <http://example.org/ns#a2033> .
+<http://example.org/ns#a2034> <http://example.org/ns#a2034> <http://example.org/ns#a2034> .
+<http://example.org/ns#a2035> <http://example.org/ns#a2035> <http://example.org/ns#a2035> .
+<http://example.org/ns#a2036> <http://example.org/ns#a2036> <http://example.org/ns#a2036> .
+<http://example.org/ns#a2037> <http://example.org/ns#a2037> <http://example.org/ns#a2037> .
+<http://example.org/ns#a2038> <http://example.org/ns#a2038> <http://example.org/ns#a2038> .
+<http://example.org/ns#a2039> <http://example.org/ns#a2039> <http://example.org/ns#a2039> .
+<http://example.org/ns#a2040> <http://example.org/ns#a2040> <http://example.org/ns#a2040> .
+<http://example.org/ns#a2041> <http://example.org/ns#a2041> <http://example.org/ns#a2041> .
+<http://example.org/ns#a2042> <http://example.org/ns#a2042> <http://example.org/ns#a2042> .
+<http://example.org/ns#a2043> <http://example.org/ns#a2043> <http://example.org/ns#a2043> .
+<http://example.org/ns#a2044> <http://example.org/ns#a2044> <http://example.org/ns#a2044> .
+<http://example.org/ns#a2045> <http://example.org/ns#a2045> <http://example.org/ns#a2045> .
+<http://example.org/ns#a2046> <http://example.org/ns#a2046> <http://example.org/ns#a2046> .
+<http://example.org/ns#a2047> <http://example.org/ns#a2047> <http://example.org/ns#a2047> .
+<http://example.org/ns#a2048> <http://example.org/ns#a2048> <http://example.org/ns#a2048> .
+<http://example.org/ns#a2049> <http://example.org/ns#a2049> <http://example.org/ns#a2049> .
+<http://example.org/ns#a2050> <http://example.org/ns#a2050> <http://example.org/ns#a2050> .
+<http://example.org/ns#a2051> <http://example.org/ns#a2051> <http://example.org/ns#a2051> .
+<http://example.org/ns#a2052> <http://example.org/ns#a2052> <http://example.org/ns#a2052> .
+<http://example.org/ns#a2053> <http://example.org/ns#a2053> <http://example.org/ns#a2053> .
+<http://example.org/ns#a2054> <http://example.org/ns#a2054> <http://example.org/ns#a2054> .
+<http://example.org/ns#a2055> <http://example.org/ns#a2055> <http://example.org/ns#a2055> .
+<http://example.org/ns#a2056> <http://example.org/ns#a2056> <http://example.org/ns#a2056> .
+<http://example.org/ns#a2057> <http://example.org/ns#a2057> <http://example.org/ns#a2057> .
+<http://example.org/ns#a2058> <http://example.org/ns#a2058> <http://example.org/ns#a2058> .
+<http://example.org/ns#a2059> <http://example.org/ns#a2059> <http://example.org/ns#a2059> .
+<http://example.org/ns#a2060> <http://example.org/ns#a2060> <http://example.org/ns#a2060> .
+<http://example.org/ns#a2061> <http://example.org/ns#a2061> <http://example.org/ns#a2061> .
+<http://example.org/ns#a2062> <http://example.org/ns#a2062> <http://example.org/ns#a2062> .
+<http://example.org/ns#a2063> <http://example.org/ns#a2063> <http://example.org/ns#a2063> .
+<http://example.org/ns#a2064> <http://example.org/ns#a2064> <http://example.org/ns#a2064> .
+<http://example.org/ns#a2065> <http://example.org/ns#a2065> <http://example.org/ns#a2065> .
+<http://example.org/ns#a2066> <http://example.org/ns#a2066> <http://example.org/ns#a2066> .
+<http://example.org/ns#a2067> <http://example.org/ns#a2067> <http://example.org/ns#a2067> .
+<http://example.org/ns#a2068> <http://example.org/ns#a2068> <http://example.org/ns#a2068> .
+<http://example.org/ns#a2069> <http://example.org/ns#a2069> <http://example.org/ns#a2069> .
+<http://example.org/ns#a2070> <http://example.org/ns#a2070> <http://example.org/ns#a2070> .
+<http://example.org/ns#a2071> <http://example.org/ns#a2071> <http://example.org/ns#a2071> .
+<http://example.org/ns#a2072> <http://example.org/ns#a2072> <http://example.org/ns#a2072> .
+<http://example.org/ns#a2073> <http://example.org/ns#a2073> <http://example.org/ns#a2073> .
+<http://example.org/ns#a2074> <http://example.org/ns#a2074> <http://example.org/ns#a2074> .
+<http://example.org/ns#a2075> <http://example.org/ns#a2075> <http://example.org/ns#a2075> .
+<http://example.org/ns#a2076> <http://example.org/ns#a2076> <http://example.org/ns#a2076> .
+<http://example.org/ns#a2077> <http://example.org/ns#a2077> <http://example.org/ns#a2077> .
+<http://example.org/ns#a2078> <http://example.org/ns#a2078> <http://example.org/ns#a2078> .
+<http://example.org/ns#a2079> <http://example.org/ns#a2079> <http://example.org/ns#a2079> .
+<http://example.org/ns#a2080> <http://example.org/ns#a2080> <http://example.org/ns#a2080> .
+<http://example.org/ns#a2081> <http://example.org/ns#a2081> <http://example.org/ns#a2081> .
+<http://example.org/ns#a2082> <http://example.org/ns#a2082> <http://example.org/ns#a2082> .
+<http://example.org/ns#a2083> <http://example.org/ns#a2083> <http://example.org/ns#a2083> .
+<http://example.org/ns#a2084> <http://example.org/ns#a2084> <http://example.org/ns#a2084> .
+<http://example.org/ns#a2085> <http://example.org/ns#a2085> <http://example.org/ns#a2085> .
+<http://example.org/ns#a2086> <http://example.org/ns#a2086> <http://example.org/ns#a2086> .
+<http://example.org/ns#a2087> <http://example.org/ns#a2087> <http://example.org/ns#a2087> .
+<http://example.org/ns#a2088> <http://example.org/ns#a2088> <http://example.org/ns#a2088> .
+<http://example.org/ns#a2089> <http://example.org/ns#a2089> <http://example.org/ns#a2089> .
+<http://example.org/ns#a2090> <http://example.org/ns#a2090> <http://example.org/ns#a2090> .
+<http://example.org/ns#a2091> <http://example.org/ns#a2091> <http://example.org/ns#a2091> .
+<http://example.org/ns#a2092> <http://example.org/ns#a2092> <http://example.org/ns#a2092> .
+<http://example.org/ns#a2093> <http://example.org/ns#a2093> <http://example.org/ns#a2093> .
+<http://example.org/ns#a2094> <http://example.org/ns#a2094> <http://example.org/ns#a2094> .
+<http://example.org/ns#a2095> <http://example.org/ns#a2095> <http://example.org/ns#a2095> .
+<http://example.org/ns#a2096> <http://example.org/ns#a2096> <http://example.org/ns#a2096> .
+<http://example.org/ns#a2097> <http://example.org/ns#a2097> <http://example.org/ns#a2097> .
+<http://example.org/ns#a2098> <http://example.org/ns#a2098> <http://example.org/ns#a2098> .
+<http://example.org/ns#a2099> <http://example.org/ns#a2099> <http://example.org/ns#a2099> .
+<http://example.org/ns#a2100> <http://example.org/ns#a2100> <http://example.org/ns#a2100> .
+<http://example.org/ns#a2101> <http://example.org/ns#a2101> <http://example.org/ns#a2101> .
+<http://example.org/ns#a2102> <http://example.org/ns#a2102> <http://example.org/ns#a2102> .
+<http://example.org/ns#a2103> <http://example.org/ns#a2103> <http://example.org/ns#a2103> .
+<http://example.org/ns#a2104> <http://example.org/ns#a2104> <http://example.org/ns#a2104> .
+<http://example.org/ns#a2105> <http://example.org/ns#a2105> <http://example.org/ns#a2105> .
+<http://example.org/ns#a2106> <http://example.org/ns#a2106> <http://example.org/ns#a2106> .
+<http://example.org/ns#a2107> <http://example.org/ns#a2107> <http://example.org/ns#a2107> .
+<http://example.org/ns#a2108> <http://example.org/ns#a2108> <http://example.org/ns#a2108> .
+<http://example.org/ns#a2109> <http://example.org/ns#a2109> <http://example.org/ns#a2109> .
+<http://example.org/ns#a2110> <http://example.org/ns#a2110> <http://example.org/ns#a2110> .
+<http://example.org/ns#a2111> <http://example.org/ns#a2111> <http://example.org/ns#a2111> .
+<http://example.org/ns#a2112> <http://example.org/ns#a2112> <http://example.org/ns#a2112> .
+<http://example.org/ns#a2113> <http://example.org/ns#a2113> <http://example.org/ns#a2113> .
+<http://example.org/ns#a2114> <http://example.org/ns#a2114> <http://example.org/ns#a2114> .
+<http://example.org/ns#a2115> <http://example.org/ns#a2115> <http://example.org/ns#a2115> .
+<http://example.org/ns#a2116> <http://example.org/ns#a2116> <http://example.org/ns#a2116> .
+<http://example.org/ns#a2117> <http://example.org/ns#a2117> <http://example.org/ns#a2117> .
+<http://example.org/ns#a2118> <http://example.org/ns#a2118> <http://example.org/ns#a2118> .
+<http://example.org/ns#a2119> <http://example.org/ns#a2119> <http://example.org/ns#a2119> .
+<http://example.org/ns#a2120> <http://example.org/ns#a2120> <http://example.org/ns#a2120> .
+<http://example.org/ns#a2121> <http://example.org/ns#a2121> <http://example.org/ns#a2121> .
+<http://example.org/ns#a2122> <http://example.org/ns#a2122> <http://example.org/ns#a2122> .
+<http://example.org/ns#a2123> <http://example.org/ns#a2123> <http://example.org/ns#a2123> .
+<http://example.org/ns#a2124> <http://example.org/ns#a2124> <http://example.org/ns#a2124> .
+<http://example.org/ns#a2125> <http://example.org/ns#a2125> <http://example.org/ns#a2125> .
+<http://example.org/ns#a2126> <http://example.org/ns#a2126> <http://example.org/ns#a2126> .
+<http://example.org/ns#a2127> <http://example.org/ns#a2127> <http://example.org/ns#a2127> .
+<http://example.org/ns#a2128> <http://example.org/ns#a2128> <http://example.org/ns#a2128> .
+<http://example.org/ns#a2129> <http://example.org/ns#a2129> <http://example.org/ns#a2129> .
+<http://example.org/ns#a2130> <http://example.org/ns#a2130> <http://example.org/ns#a2130> .
+<http://example.org/ns#a2131> <http://example.org/ns#a2131> <http://example.org/ns#a2131> .
+<http://example.org/ns#a2132> <http://example.org/ns#a2132> <http://example.org/ns#a2132> .
+<http://example.org/ns#a2133> <http://example.org/ns#a2133> <http://example.org/ns#a2133> .
+<http://example.org/ns#a2134> <http://example.org/ns#a2134> <http://example.org/ns#a2134> .
+<http://example.org/ns#a2135> <http://example.org/ns#a2135> <http://example.org/ns#a2135> .
+<http://example.org/ns#a2136> <http://example.org/ns#a2136> <http://example.org/ns#a2136> .
+<http://example.org/ns#a2137> <http://example.org/ns#a2137> <http://example.org/ns#a2137> .
+<http://example.org/ns#a2138> <http://example.org/ns#a2138> <http://example.org/ns#a2138> .
+<http://example.org/ns#a2139> <http://example.org/ns#a2139> <http://example.org/ns#a2139> .
+<http://example.org/ns#a2140> <http://example.org/ns#a2140> <http://example.org/ns#a2140> .
+<http://example.org/ns#a2141> <http://example.org/ns#a2141> <http://example.org/ns#a2141> .
+<http://example.org/ns#a2142> <http://example.org/ns#a2142> <http://example.org/ns#a2142> .
+<http://example.org/ns#a2143> <http://example.org/ns#a2143> <http://example.org/ns#a2143> .
+<http://example.org/ns#a2144> <http://example.org/ns#a2144> <http://example.org/ns#a2144> .
+<http://example.org/ns#a2145> <http://example.org/ns#a2145> <http://example.org/ns#a2145> .
+<http://example.org/ns#a2146> <http://example.org/ns#a2146> <http://example.org/ns#a2146> .
+<http://example.org/ns#a2147> <http://example.org/ns#a2147> <http://example.org/ns#a2147> .
+<http://example.org/ns#a2148> <http://example.org/ns#a2148> <http://example.org/ns#a2148> .
+<http://example.org/ns#a2149> <http://example.org/ns#a2149> <http://example.org/ns#a2149> .
+<http://example.org/ns#a2150> <http://example.org/ns#a2150> <http://example.org/ns#a2150> .
+<http://example.org/ns#a2151> <http://example.org/ns#a2151> <http://example.org/ns#a2151> .
+<http://example.org/ns#a2152> <http://example.org/ns#a2152> <http://example.org/ns#a2152> .
+<http://example.org/ns#a2153> <http://example.org/ns#a2153> <http://example.org/ns#a2153> .
+<http://example.org/ns#a2154> <http://example.org/ns#a2154> <http://example.org/ns#a2154> .
+<http://example.org/ns#a2155> <http://example.org/ns#a2155> <http://example.org/ns#a2155> .
+<http://example.org/ns#a2156> <http://example.org/ns#a2156> <http://example.org/ns#a2156> .
+<http://example.org/ns#a2157> <http://example.org/ns#a2157> <http://example.org/ns#a2157> .
+<http://example.org/ns#a2158> <http://example.org/ns#a2158> <http://example.org/ns#a2158> .
+<http://example.org/ns#a2159> <http://example.org/ns#a2159> <http://example.org/ns#a2159> .
+<http://example.org/ns#a2160> <http://example.org/ns#a2160> <http://example.org/ns#a2160> .
+<http://example.org/ns#a2161> <http://example.org/ns#a2161> <http://example.org/ns#a2161> .
+<http://example.org/ns#a2162> <http://example.org/ns#a2162> <http://example.org/ns#a2162> .
+<http://example.org/ns#a2163> <http://example.org/ns#a2163> <http://example.org/ns#a2163> .
+<http://example.org/ns#a2164> <http://example.org/ns#a2164> <http://example.org/ns#a2164> .
+<http://example.org/ns#a2165> <http://example.org/ns#a2165> <http://example.org/ns#a2165> .
+<http://example.org/ns#a2166> <http://example.org/ns#a2166> <http://example.org/ns#a2166> .
+<http://example.org/ns#a2167> <http://example.org/ns#a2167> <http://example.org/ns#a2167> .
+<http://example.org/ns#a2168> <http://example.org/ns#a2168> <http://example.org/ns#a2168> .
+<http://example.org/ns#a2169> <http://example.org/ns#a2169> <http://example.org/ns#a2169> .
+<http://example.org/ns#a2170> <http://example.org/ns#a2170> <http://example.org/ns#a2170> .
+<http://example.org/ns#a2171> <http://example.org/ns#a2171> <http://example.org/ns#a2171> .
+<http://example.org/ns#a2172> <http://example.org/ns#a2172> <http://example.org/ns#a2172> .
+<http://example.org/ns#a2173> <http://example.org/ns#a2173> <http://example.org/ns#a2173> .
+<http://example.org/ns#a2174> <http://example.org/ns#a2174> <http://example.org/ns#a2174> .
+<http://example.org/ns#a2175> <http://example.org/ns#a2175> <http://example.org/ns#a2175> .
+<http://example.org/ns#a2176> <http://example.org/ns#a2176> <http://example.org/ns#a2176> .
+<http://example.org/ns#a2177> <http://example.org/ns#a2177> <http://example.org/ns#a2177> .
+<http://example.org/ns#a2178> <http://example.org/ns#a2178> <http://example.org/ns#a2178> .
+<http://example.org/ns#a2179> <http://example.org/ns#a2179> <http://example.org/ns#a2179> .
+<http://example.org/ns#a2180> <http://example.org/ns#a2180> <http://example.org/ns#a2180> .
+<http://example.org/ns#a2181> <http://example.org/ns#a2181> <http://example.org/ns#a2181> .
+<http://example.org/ns#a2182> <http://example.org/ns#a2182> <http://example.org/ns#a2182> .
+<http://example.org/ns#a2183> <http://example.org/ns#a2183> <http://example.org/ns#a2183> .
+<http://example.org/ns#a2184> <http://example.org/ns#a2184> <http://example.org/ns#a2184> .
+<http://example.org/ns#a2185> <http://example.org/ns#a2185> <http://example.org/ns#a2185> .
+<http://example.org/ns#a2186> <http://example.org/ns#a2186> <http://example.org/ns#a2186> .
+<http://example.org/ns#a2187> <http://example.org/ns#a2187> <http://example.org/ns#a2187> .
+<http://example.org/ns#a2188> <http://example.org/ns#a2188> <http://example.org/ns#a2188> .
+<http://example.org/ns#a2189> <http://example.org/ns#a2189> <http://example.org/ns#a2189> .
+<http://example.org/ns#a2190> <http://example.org/ns#a2190> <http://example.org/ns#a2190> .
+<http://example.org/ns#a2191> <http://example.org/ns#a2191> <http://example.org/ns#a2191> .
+<http://example.org/ns#a2192> <http://example.org/ns#a2192> <http://example.org/ns#a2192> .
+<http://example.org/ns#a2193> <http://example.org/ns#a2193> <http://example.org/ns#a2193> .
+<http://example.org/ns#a2194> <http://example.org/ns#a2194> <http://example.org/ns#a2194> .
+<http://example.org/ns#a2195> <http://example.org/ns#a2195> <http://example.org/ns#a2195> .
+<http://example.org/ns#a2196> <http://example.org/ns#a2196> <http://example.org/ns#a2196> .
+<http://example.org/ns#a2197> <http://example.org/ns#a2197> <http://example.org/ns#a2197> .
+<http://example.org/ns#a2198> <http://example.org/ns#a2198> <http://example.org/ns#a2198> .
+<http://example.org/ns#a2199> <http://example.org/ns#a2199> <http://example.org/ns#a2199> .
+<http://example.org/ns#a2200> <http://example.org/ns#a2200> <http://example.org/ns#a2200> .
+<http://example.org/ns#a2201> <http://example.org/ns#a2201> <http://example.org/ns#a2201> .
+<http://example.org/ns#a2202> <http://example.org/ns#a2202> <http://example.org/ns#a2202> .
+<http://example.org/ns#a2203> <http://example.org/ns#a2203> <http://example.org/ns#a2203> .
+<http://example.org/ns#a2204> <http://example.org/ns#a2204> <http://example.org/ns#a2204> .
+<http://example.org/ns#a2205> <http://example.org/ns#a2205> <http://example.org/ns#a2205> .
+<http://example.org/ns#a2206> <http://example.org/ns#a2206> <http://example.org/ns#a2206> .
+<http://example.org/ns#a2207> <http://example.org/ns#a2207> <http://example.org/ns#a2207> .
+<http://example.org/ns#a2208> <http://example.org/ns#a2208> <http://example.org/ns#a2208> .
+<http://example.org/ns#a2209> <http://example.org/ns#a2209> <http://example.org/ns#a2209> .
+<http://example.org/ns#a2210> <http://example.org/ns#a2210> <http://example.org/ns#a2210> .
+<http://example.org/ns#a2211> <http://example.org/ns#a2211> <http://example.org/ns#a2211> .
+<http://example.org/ns#a2212> <http://example.org/ns#a2212> <http://example.org/ns#a2212> .
+<http://example.org/ns#a2213> <http://example.org/ns#a2213> <http://example.org/ns#a2213> .
+<http://example.org/ns#a2214> <http://example.org/ns#a2214> <http://example.org/ns#a2214> .
+<http://example.org/ns#a2215> <http://example.org/ns#a2215> <http://example.org/ns#a2215> .
+<http://example.org/ns#a2216> <http://example.org/ns#a2216> <http://example.org/ns#a2216> .
+<http://example.org/ns#a2217> <http://example.org/ns#a2217> <http://example.org/ns#a2217> .
+<http://example.org/ns#a2218> <http://example.org/ns#a2218> <http://example.org/ns#a2218> .
+<http://example.org/ns#a2219> <http://example.org/ns#a2219> <http://example.org/ns#a2219> .
+<http://example.org/ns#a2220> <http://example.org/ns#a2220> <http://example.org/ns#a2220> .
+<http://example.org/ns#a2221> <http://example.org/ns#a2221> <http://example.org/ns#a2221> .
+<http://example.org/ns#a2222> <http://example.org/ns#a2222> <http://example.org/ns#a2222> .
+<http://example.org/ns#a2223> <http://example.org/ns#a2223> <http://example.org/ns#a2223> .
+<http://example.org/ns#a2224> <http://example.org/ns#a2224> <http://example.org/ns#a2224> .
+<http://example.org/ns#a2225> <http://example.org/ns#a2225> <http://example.org/ns#a2225> .
+<http://example.org/ns#a2226> <http://example.org/ns#a2226> <http://example.org/ns#a2226> .
+<http://example.org/ns#a2227> <http://example.org/ns#a2227> <http://example.org/ns#a2227> .
+<http://example.org/ns#a2228> <http://example.org/ns#a2228> <http://example.org/ns#a2228> .
+<http://example.org/ns#a2229> <http://example.org/ns#a2229> <http://example.org/ns#a2229> .
+<http://example.org/ns#a2230> <http://example.org/ns#a2230> <http://example.org/ns#a2230> .
+<http://example.org/ns#a2231> <http://example.org/ns#a2231> <http://example.org/ns#a2231> .
+<http://example.org/ns#a2232> <http://example.org/ns#a2232> <http://example.org/ns#a2232> .
+<http://example.org/ns#a2233> <http://example.org/ns#a2233> <http://example.org/ns#a2233> .
+<http://example.org/ns#a2234> <http://example.org/ns#a2234> <http://example.org/ns#a2234> .
+<http://example.org/ns#a2235> <http://example.org/ns#a2235> <http://example.org/ns#a2235> .
+<http://example.org/ns#a2236> <http://example.org/ns#a2236> <http://example.org/ns#a2236> .
+<http://example.org/ns#a2237> <http://example.org/ns#a2237> <http://example.org/ns#a2237> .
+<http://example.org/ns#a2238> <http://example.org/ns#a2238> <http://example.org/ns#a2238> .
+<http://example.org/ns#a2239> <http://example.org/ns#a2239> <http://example.org/ns#a2239> .
+<http://example.org/ns#a2240> <http://example.org/ns#a2240> <http://example.org/ns#a2240> .
+<http://example.org/ns#a2241> <http://example.org/ns#a2241> <http://example.org/ns#a2241> .
+<http://example.org/ns#a2242> <http://example.org/ns#a2242> <http://example.org/ns#a2242> .
+<http://example.org/ns#a2243> <http://example.org/ns#a2243> <http://example.org/ns#a2243> .
+<http://example.org/ns#a2244> <http://example.org/ns#a2244> <http://example.org/ns#a2244> .
+<http://example.org/ns#a2245> <http://example.org/ns#a2245> <http://example.org/ns#a2245> .
+<http://example.org/ns#a2246> <http://example.org/ns#a2246> <http://example.org/ns#a2246> .
+<http://example.org/ns#a2247> <http://example.org/ns#a2247> <http://example.org/ns#a2247> .
+<http://example.org/ns#a2248> <http://example.org/ns#a2248> <http://example.org/ns#a2248> .
+<http://example.org/ns#a2249> <http://example.org/ns#a2249> <http://example.org/ns#a2249> .
+<http://example.org/ns#a2250> <http://example.org/ns#a2250> <http://example.org/ns#a2250> .
+<http://example.org/ns#a2251> <http://example.org/ns#a2251> <http://example.org/ns#a2251> .
+<http://example.org/ns#a2252> <http://example.org/ns#a2252> <http://example.org/ns#a2252> .
+<http://example.org/ns#a2253> <http://example.org/ns#a2253> <http://example.org/ns#a2253> .
+<http://example.org/ns#a2254> <http://example.org/ns#a2254> <http://example.org/ns#a2254> .
+<http://example.org/ns#a2255> <http://example.org/ns#a2255> <http://example.org/ns#a2255> .
+<http://example.org/ns#a2256> <http://example.org/ns#a2256> <http://example.org/ns#a2256> .
+<http://example.org/ns#a2257> <http://example.org/ns#a2257> <http://example.org/ns#a2257> .
+<http://example.org/ns#a2258> <http://example.org/ns#a2258> <http://example.org/ns#a2258> .
+<http://example.org/ns#a2259> <http://example.org/ns#a2259> <http://example.org/ns#a2259> .
+<http://example.org/ns#a2260> <http://example.org/ns#a2260> <http://example.org/ns#a2260> .
+<http://example.org/ns#a2261> <http://example.org/ns#a2261> <http://example.org/ns#a2261> .
+<http://example.org/ns#a2262> <http://example.org/ns#a2262> <http://example.org/ns#a2262> .
+<http://example.org/ns#a2263> <http://example.org/ns#a2263> <http://example.org/ns#a2263> .
+<http://example.org/ns#a2264> <http://example.org/ns#a2264> <http://example.org/ns#a2264> .
+<http://example.org/ns#a2265> <http://example.org/ns#a2265> <http://example.org/ns#a2265> .
+<http://example.org/ns#a2266> <http://example.org/ns#a2266> <http://example.org/ns#a2266> .
+<http://example.org/ns#a2267> <http://example.org/ns#a2267> <http://example.org/ns#a2267> .
+<http://example.org/ns#a2268> <http://example.org/ns#a2268> <http://example.org/ns#a2268> .
+<http://example.org/ns#a2269> <http://example.org/ns#a2269> <http://example.org/ns#a2269> .
+<http://example.org/ns#a2270> <http://example.org/ns#a2270> <http://example.org/ns#a2270> .
+<http://example.org/ns#a2271> <http://example.org/ns#a2271> <http://example.org/ns#a2271> .
+<http://example.org/ns#a2272> <http://example.org/ns#a2272> <http://example.org/ns#a2272> .
+<http://example.org/ns#a2273> <http://example.org/ns#a2273> <http://example.org/ns#a2273> .
+<http://example.org/ns#a2274> <http://example.org/ns#a2274> <http://example.org/ns#a2274> .
+<http://example.org/ns#a2275> <http://example.org/ns#a2275> <http://example.org/ns#a2275> .
+<http://example.org/ns#a2276> <http://example.org/ns#a2276> <http://example.org/ns#a2276> .
+<http://example.org/ns#a2277> <http://example.org/ns#a2277> <http://example.org/ns#a2277> .
+<http://example.org/ns#a2278> <http://example.org/ns#a2278> <http://example.org/ns#a2278> .
+<http://example.org/ns#a2279> <http://example.org/ns#a2279> <http://example.org/ns#a2279> .
+<http://example.org/ns#a2280> <http://example.org/ns#a2280> <http://example.org/ns#a2280> .
+<http://example.org/ns#a2281> <http://example.org/ns#a2281> <http://example.org/ns#a2281> .
+<http://example.org/ns#a2282> <http://example.org/ns#a2282> <http://example.org/ns#a2282> .
+<http://example.org/ns#a2283> <http://example.org/ns#a2283> <http://example.org/ns#a2283> .
+<http://example.org/ns#a2284> <http://example.org/ns#a2284> <http://example.org/ns#a2284> .
+<http://example.org/ns#a2285> <http://example.org/ns#a2285> <http://example.org/ns#a2285> .
+<http://example.org/ns#a2286> <http://example.org/ns#a2286> <http://example.org/ns#a2286> .
+<http://example.org/ns#a2287> <http://example.org/ns#a2287> <http://example.org/ns#a2287> .
+<http://example.org/ns#a2288> <http://example.org/ns#a2288> <http://example.org/ns#a2288> .
+<http://example.org/ns#a2289> <http://example.org/ns#a2289> <http://example.org/ns#a2289> .
+<http://example.org/ns#a2290> <http://example.org/ns#a2290> <http://example.org/ns#a2290> .
+<http://example.org/ns#a2291> <http://example.org/ns#a2291> <http://example.org/ns#a2291> .
+<http://example.org/ns#a2292> <http://example.org/ns#a2292> <http://example.org/ns#a2292> .
+<http://example.org/ns#a2293> <http://example.org/ns#a2293> <http://example.org/ns#a2293> .
+<http://example.org/ns#a2294> <http://example.org/ns#a2294> <http://example.org/ns#a2294> .
+<http://example.org/ns#a2295> <http://example.org/ns#a2295> <http://example.org/ns#a2295> .
+<http://example.org/ns#a2296> <http://example.org/ns#a2296> <http://example.org/ns#a2296> .
+<http://example.org/ns#a2297> <http://example.org/ns#a2297> <http://example.org/ns#a2297> .
+<http://example.org/ns#a2298> <http://example.org/ns#a2298> <http://example.org/ns#a2298> .
+<http://example.org/ns#a2299> <http://example.org/ns#a2299> <http://example.org/ns#a2299> .
+<http://example.org/ns#a2300> <http://example.org/ns#a2300> <http://example.org/ns#a2300> .
+<http://example.org/ns#a2301> <http://example.org/ns#a2301> <http://example.org/ns#a2301> .
+<http://example.org/ns#a2302> <http://example.org/ns#a2302> <http://example.org/ns#a2302> .
+<http://example.org/ns#a2303> <http://example.org/ns#a2303> <http://example.org/ns#a2303> .
+<http://example.org/ns#a2304> <http://example.org/ns#a2304> <http://example.org/ns#a2304> .
+<http://example.org/ns#a2305> <http://example.org/ns#a2305> <http://example.org/ns#a2305> .
+<http://example.org/ns#a2306> <http://example.org/ns#a2306> <http://example.org/ns#a2306> .
+<http://example.org/ns#a2307> <http://example.org/ns#a2307> <http://example.org/ns#a2307> .
+<http://example.org/ns#a2308> <http://example.org/ns#a2308> <http://example.org/ns#a2308> .
+<http://example.org/ns#a2309> <http://example.org/ns#a2309> <http://example.org/ns#a2309> .
+<http://example.org/ns#a2310> <http://example.org/ns#a2310> <http://example.org/ns#a2310> .
+<http://example.org/ns#a2311> <http://example.org/ns#a2311> <http://example.org/ns#a2311> .
+<http://example.org/ns#a2312> <http://example.org/ns#a2312> <http://example.org/ns#a2312> .
+<http://example.org/ns#a2313> <http://example.org/ns#a2313> <http://example.org/ns#a2313> .
+<http://example.org/ns#a2314> <http://example.org/ns#a2314> <http://example.org/ns#a2314> .
+<http://example.org/ns#a2315> <http://example.org/ns#a2315> <http://example.org/ns#a2315> .
+<http://example.org/ns#a2316> <http://example.org/ns#a2316> <http://example.org/ns#a2316> .
+<http://example.org/ns#a2317> <http://example.org/ns#a2317> <http://example.org/ns#a2317> .
+<http://example.org/ns#a2318> <http://example.org/ns#a2318> <http://example.org/ns#a2318> .
+<http://example.org/ns#a2319> <http://example.org/ns#a2319> <http://example.org/ns#a2319> .
+<http://example.org/ns#a2320> <http://example.org/ns#a2320> <http://example.org/ns#a2320> .
+<http://example.org/ns#a2321> <http://example.org/ns#a2321> <http://example.org/ns#a2321> .
+<http://example.org/ns#a2322> <http://example.org/ns#a2322> <http://example.org/ns#a2322> .
+<http://example.org/ns#a2323> <http://example.org/ns#a2323> <http://example.org/ns#a2323> .
+<http://example.org/ns#a2324> <http://example.org/ns#a2324> <http://example.org/ns#a2324> .
+<http://example.org/ns#a2325> <http://example.org/ns#a2325> <http://example.org/ns#a2325> .
+<http://example.org/ns#a2326> <http://example.org/ns#a2326> <http://example.org/ns#a2326> .
+<http://example.org/ns#a2327> <http://example.org/ns#a2327> <http://example.org/ns#a2327> .
+<http://example.org/ns#a2328> <http://example.org/ns#a2328> <http://example.org/ns#a2328> .
+<http://example.org/ns#a2329> <http://example.org/ns#a2329> <http://example.org/ns#a2329> .
+<http://example.org/ns#a2330> <http://example.org/ns#a2330> <http://example.org/ns#a2330> .
+<http://example.org/ns#a2331> <http://example.org/ns#a2331> <http://example.org/ns#a2331> .
+<http://example.org/ns#a2332> <http://example.org/ns#a2332> <http://example.org/ns#a2332> .
+<http://example.org/ns#a2333> <http://example.org/ns#a2333> <http://example.org/ns#a2333> .
+<http://example.org/ns#a2334> <http://example.org/ns#a2334> <http://example.org/ns#a2334> .
+<http://example.org/ns#a2335> <http://example.org/ns#a2335> <http://example.org/ns#a2335> .
+<http://example.org/ns#a2336> <http://example.org/ns#a2336> <http://example.org/ns#a2336> .
+<http://example.org/ns#a2337> <http://example.org/ns#a2337> <http://example.org/ns#a2337> .
+<http://example.org/ns#a2338> <http://example.org/ns#a2338> <http://example.org/ns#a2338> .
+<http://example.org/ns#a2339> <http://example.org/ns#a2339> <http://example.org/ns#a2339> .
+<http://example.org/ns#a2340> <http://example.org/ns#a2340> <http://example.org/ns#a2340> .
+<http://example.org/ns#a2341> <http://example.org/ns#a2341> <http://example.org/ns#a2341> .
+<http://example.org/ns#a2342> <http://example.org/ns#a2342> <http://example.org/ns#a2342> .
+<http://example.org/ns#a2343> <http://example.org/ns#a2343> <http://example.org/ns#a2343> .
+<http://example.org/ns#a2344> <http://example.org/ns#a2344> <http://example.org/ns#a2344> .
+<http://example.org/ns#a2345> <http://example.org/ns#a2345> <http://example.org/ns#a2345> .
+<http://example.org/ns#a2346> <http://example.org/ns#a2346> <http://example.org/ns#a2346> .
+<http://example.org/ns#a2347> <http://example.org/ns#a2347> <http://example.org/ns#a2347> .
+<http://example.org/ns#a2348> <http://example.org/ns#a2348> <http://example.org/ns#a2348> .
+<http://example.org/ns#a2349> <http://example.org/ns#a2349> <http://example.org/ns#a2349> .
+<http://example.org/ns#a2350> <http://example.org/ns#a2350> <http://example.org/ns#a2350> .
+<http://example.org/ns#a2351> <http://example.org/ns#a2351> <http://example.org/ns#a2351> .
+<http://example.org/ns#a2352> <http://example.org/ns#a2352> <http://example.org/ns#a2352> .
+<http://example.org/ns#a2353> <http://example.org/ns#a2353> <http://example.org/ns#a2353> .
+<http://example.org/ns#a2354> <http://example.org/ns#a2354> <http://example.org/ns#a2354> .
+<http://example.org/ns#a2355> <http://example.org/ns#a2355> <http://example.org/ns#a2355> .
+<http://example.org/ns#a2356> <http://example.org/ns#a2356> <http://example.org/ns#a2356> .
+<http://example.org/ns#a2357> <http://example.org/ns#a2357> <http://example.org/ns#a2357> .
+<http://example.org/ns#a2358> <http://example.org/ns#a2358> <http://example.org/ns#a2358> .
+<http://example.org/ns#a2359> <http://example.org/ns#a2359> <http://example.org/ns#a2359> .
+<http://example.org/ns#a2360> <http://example.org/ns#a2360> <http://example.org/ns#a2360> .
+<http://example.org/ns#a2361> <http://example.org/ns#a2361> <http://example.org/ns#a2361> .
+<http://example.org/ns#a2362> <http://example.org/ns#a2362> <http://example.org/ns#a2362> .
+<http://example.org/ns#a2363> <http://example.org/ns#a2363> <http://example.org/ns#a2363> .
+<http://example.org/ns#a2364> <http://example.org/ns#a2364> <http://example.org/ns#a2364> .
+<http://example.org/ns#a2365> <http://example.org/ns#a2365> <http://example.org/ns#a2365> .
+<http://example.org/ns#a2366> <http://example.org/ns#a2366> <http://example.org/ns#a2366> .
+<http://example.org/ns#a2367> <http://example.org/ns#a2367> <http://example.org/ns#a2367> .
+<http://example.org/ns#a2368> <http://example.org/ns#a2368> <http://example.org/ns#a2368> .
+<http://example.org/ns#a2369> <http://example.org/ns#a2369> <http://example.org/ns#a2369> .
+<http://example.org/ns#a2370> <http://example.org/ns#a2370> <http://example.org/ns#a2370> .
+<http://example.org/ns#a2371> <http://example.org/ns#a2371> <http://example.org/ns#a2371> .
+<http://example.org/ns#a2372> <http://example.org/ns#a2372> <http://example.org/ns#a2372> .
+<http://example.org/ns#a2373> <http://example.org/ns#a2373> <http://example.org/ns#a2373> .
+<http://example.org/ns#a2374> <http://example.org/ns#a2374> <http://example.org/ns#a2374> .
+<http://example.org/ns#a2375> <http://example.org/ns#a2375> <http://example.org/ns#a2375> .
+<http://example.org/ns#a2376> <http://example.org/ns#a2376> <http://example.org/ns#a2376> .
+<http://example.org/ns#a2377> <http://example.org/ns#a2377> <http://example.org/ns#a2377> .
+<http://example.org/ns#a2378> <http://example.org/ns#a2378> <http://example.org/ns#a2378> .
+<http://example.org/ns#a2379> <http://example.org/ns#a2379> <http://example.org/ns#a2379> .
+<http://example.org/ns#a2380> <http://example.org/ns#a2380> <http://example.org/ns#a2380> .
+<http://example.org/ns#a2381> <http://example.org/ns#a2381> <http://example.org/ns#a2381> .
+<http://example.org/ns#a2382> <http://example.org/ns#a2382> <http://example.org/ns#a2382> .
+<http://example.org/ns#a2383> <http://example.org/ns#a2383> <http://example.org/ns#a2383> .
+<http://example.org/ns#a2384> <http://example.org/ns#a2384> <http://example.org/ns#a2384> .
+<http://example.org/ns#a2385> <http://example.org/ns#a2385> <http://example.org/ns#a2385> .
+<http://example.org/ns#a2386> <http://example.org/ns#a2386> <http://example.org/ns#a2386> .
+<http://example.org/ns#a2387> <http://example.org/ns#a2387> <http://example.org/ns#a2387> .
+<http://example.org/ns#a2388> <http://example.org/ns#a2388> <http://example.org/ns#a2388> .
+<http://example.org/ns#a2389> <http://example.org/ns#a2389> <http://example.org/ns#a2389> .
+<http://example.org/ns#a2390> <http://example.org/ns#a2390> <http://example.org/ns#a2390> .
+<http://example.org/ns#a2391> <http://example.org/ns#a2391> <http://example.org/ns#a2391> .
+<http://example.org/ns#a2392> <http://example.org/ns#a2392> <http://example.org/ns#a2392> .
+<http://example.org/ns#a2393> <http://example.org/ns#a2393> <http://example.org/ns#a2393> .
+<http://example.org/ns#a2394> <http://example.org/ns#a2394> <http://example.org/ns#a2394> .
+<http://example.org/ns#a2395> <http://example.org/ns#a2395> <http://example.org/ns#a2395> .
+<http://example.org/ns#a2396> <http://example.org/ns#a2396> <http://example.org/ns#a2396> .
+<http://example.org/ns#a2397> <http://example.org/ns#a2397> <http://example.org/ns#a2397> .
+<http://example.org/ns#a2398> <http://example.org/ns#a2398> <http://example.org/ns#a2398> .
+<http://example.org/ns#a2399> <http://example.org/ns#a2399> <http://example.org/ns#a2399> .
+<http://example.org/ns#a2400> <http://example.org/ns#a2400> <http://example.org/ns#a2400> .
+<http://example.org/ns#a2401> <http://example.org/ns#a2401> <http://example.org/ns#a2401> .
+<http://example.org/ns#a2402> <http://example.org/ns#a2402> <http://example.org/ns#a2402> .
+<http://example.org/ns#a2403> <http://example.org/ns#a2403> <http://example.org/ns#a2403> .
+<http://example.org/ns#a2404> <http://example.org/ns#a2404> <http://example.org/ns#a2404> .
+<http://example.org/ns#a2405> <http://example.org/ns#a2405> <http://example.org/ns#a2405> .
+<http://example.org/ns#a2406> <http://example.org/ns#a2406> <http://example.org/ns#a2406> .
+<http://example.org/ns#a2407> <http://example.org/ns#a2407> <http://example.org/ns#a2407> .
+<http://example.org/ns#a2408> <http://example.org/ns#a2408> <http://example.org/ns#a2408> .
+<http://example.org/ns#a2409> <http://example.org/ns#a2409> <http://example.org/ns#a2409> .
+<http://example.org/ns#a2410> <http://example.org/ns#a2410> <http://example.org/ns#a2410> .
+<http://example.org/ns#a2411> <http://example.org/ns#a2411> <http://example.org/ns#a2411> .
+<http://example.org/ns#a2412> <http://example.org/ns#a2412> <http://example.org/ns#a2412> .
+<http://example.org/ns#a2413> <http://example.org/ns#a2413> <http://example.org/ns#a2413> .
+<http://example.org/ns#a2414> <http://example.org/ns#a2414> <http://example.org/ns#a2414> .
+<http://example.org/ns#a2415> <http://example.org/ns#a2415> <http://example.org/ns#a2415> .
+<http://example.org/ns#a2416> <http://example.org/ns#a2416> <http://example.org/ns#a2416> .
+<http://example.org/ns#a2417> <http://example.org/ns#a2417> <http://example.org/ns#a2417> .
+<http://example.org/ns#a2418> <http://example.org/ns#a2418> <http://example.org/ns#a2418> .
+<http://example.org/ns#a2419> <http://example.org/ns#a2419> <http://example.org/ns#a2419> .
+<http://example.org/ns#a2420> <http://example.org/ns#a2420> <http://example.org/ns#a2420> .
+<http://example.org/ns#a2421> <http://example.org/ns#a2421> <http://example.org/ns#a2421> .
+<http://example.org/ns#a2422> <http://example.org/ns#a2422> <http://example.org/ns#a2422> .
+<http://example.org/ns#a2423> <http://example.org/ns#a2423> <http://example.org/ns#a2423> .
+<http://example.org/ns#a2424> <http://example.org/ns#a2424> <http://example.org/ns#a2424> .
+<http://example.org/ns#a2425> <http://example.org/ns#a2425> <http://example.org/ns#a2425> .
+<http://example.org/ns#a2426> <http://example.org/ns#a2426> <http://example.org/ns#a2426> .
+<http://example.org/ns#a2427> <http://example.org/ns#a2427> <http://example.org/ns#a2427> .
+<http://example.org/ns#a2428> <http://example.org/ns#a2428> <http://example.org/ns#a2428> .
+<http://example.org/ns#a2429> <http://example.org/ns#a2429> <http://example.org/ns#a2429> .
+<http://example.org/ns#a2430> <http://example.org/ns#a2430> <http://example.org/ns#a2430> .
+<http://example.org/ns#a2431> <http://example.org/ns#a2431> <http://example.org/ns#a2431> .
+<http://example.org/ns#a2432> <http://example.org/ns#a2432> <http://example.org/ns#a2432> .
+<http://example.org/ns#a2433> <http://example.org/ns#a2433> <http://example.org/ns#a2433> .
+<http://example.org/ns#a2434> <http://example.org/ns#a2434> <http://example.org/ns#a2434> .
+<http://example.org/ns#a2435> <http://example.org/ns#a2435> <http://example.org/ns#a2435> .
+<http://example.org/ns#a2436> <http://example.org/ns#a2436> <http://example.org/ns#a2436> .
+<http://example.org/ns#a2437> <http://example.org/ns#a2437> <http://example.org/ns#a2437> .
+<http://example.org/ns#a2438> <http://example.org/ns#a2438> <http://example.org/ns#a2438> .
+<http://example.org/ns#a2439> <http://example.org/ns#a2439> <http://example.org/ns#a2439> .
+<http://example.org/ns#a2440> <http://example.org/ns#a2440> <http://example.org/ns#a2440> .
+<http://example.org/ns#a2441> <http://example.org/ns#a2441> <http://example.org/ns#a2441> .
+<http://example.org/ns#a2442> <http://example.org/ns#a2442> <http://example.org/ns#a2442> .
+<http://example.org/ns#a2443> <http://example.org/ns#a2443> <http://example.org/ns#a2443> .
+<http://example.org/ns#a2444> <http://example.org/ns#a2444> <http://example.org/ns#a2444> .
+<http://example.org/ns#a2445> <http://example.org/ns#a2445> <http://example.org/ns#a2445> .
+<http://example.org/ns#a2446> <http://example.org/ns#a2446> <http://example.org/ns#a2446> .
+<http://example.org/ns#a2447> <http://example.org/ns#a2447> <http://example.org/ns#a2447> .
+<http://example.org/ns#a2448> <http://example.org/ns#a2448> <http://example.org/ns#a2448> .
+<http://example.org/ns#a2449> <http://example.org/ns#a2449> <http://example.org/ns#a2449> .
+<http://example.org/ns#a2450> <http://example.org/ns#a2450> <http://example.org/ns#a2450> .
+<http://example.org/ns#a2451> <http://example.org/ns#a2451> <http://example.org/ns#a2451> .
+<http://example.org/ns#a2452> <http://example.org/ns#a2452> <http://example.org/ns#a2452> .
+<http://example.org/ns#a2453> <http://example.org/ns#a2453> <http://example.org/ns#a2453> .
+<http://example.org/ns#a2454> <http://example.org/ns#a2454> <http://example.org/ns#a2454> .
+<http://example.org/ns#a2455> <http://example.org/ns#a2455> <http://example.org/ns#a2455> .
+<http://example.org/ns#a2456> <http://example.org/ns#a2456> <http://example.org/ns#a2456> .
+<http://example.org/ns#a2457> <http://example.org/ns#a2457> <http://example.org/ns#a2457> .
+<http://example.org/ns#a2458> <http://example.org/ns#a2458> <http://example.org/ns#a2458> .
+<http://example.org/ns#a2459> <http://example.org/ns#a2459> <http://example.org/ns#a2459> .
+<http://example.org/ns#a2460> <http://example.org/ns#a2460> <http://example.org/ns#a2460> .
+<http://example.org/ns#a2461> <http://example.org/ns#a2461> <http://example.org/ns#a2461> .
+<http://example.org/ns#a2462> <http://example.org/ns#a2462> <http://example.org/ns#a2462> .
+<http://example.org/ns#a2463> <http://example.org/ns#a2463> <http://example.org/ns#a2463> .
+<http://example.org/ns#a2464> <http://example.org/ns#a2464> <http://example.org/ns#a2464> .
+<http://example.org/ns#a2465> <http://example.org/ns#a2465> <http://example.org/ns#a2465> .
+<http://example.org/ns#a2466> <http://example.org/ns#a2466> <http://example.org/ns#a2466> .
+<http://example.org/ns#a2467> <http://example.org/ns#a2467> <http://example.org/ns#a2467> .
+<http://example.org/ns#a2468> <http://example.org/ns#a2468> <http://example.org/ns#a2468> .
+<http://example.org/ns#a2469> <http://example.org/ns#a2469> <http://example.org/ns#a2469> .
+<http://example.org/ns#a2470> <http://example.org/ns#a2470> <http://example.org/ns#a2470> .
+<http://example.org/ns#a2471> <http://example.org/ns#a2471> <http://example.org/ns#a2471> .
+<http://example.org/ns#a2472> <http://example.org/ns#a2472> <http://example.org/ns#a2472> .
+<http://example.org/ns#a2473> <http://example.org/ns#a2473> <http://example.org/ns#a2473> .
+<http://example.org/ns#a2474> <http://example.org/ns#a2474> <http://example.org/ns#a2474> .
+<http://example.org/ns#a2475> <http://example.org/ns#a2475> <http://example.org/ns#a2475> .
+<http://example.org/ns#a2476> <http://example.org/ns#a2476> <http://example.org/ns#a2476> .
+<http://example.org/ns#a2477> <http://example.org/ns#a2477> <http://example.org/ns#a2477> .
+<http://example.org/ns#a2478> <http://example.org/ns#a2478> <http://example.org/ns#a2478> .
+<http://example.org/ns#a2479> <http://example.org/ns#a2479> <http://example.org/ns#a2479> .
+<http://example.org/ns#a2480> <http://example.org/ns#a2480> <http://example.org/ns#a2480> .
+<http://example.org/ns#a2481> <http://example.org/ns#a2481> <http://example.org/ns#a2481> .
+<http://example.org/ns#a2482> <http://example.org/ns#a2482> <http://example.org/ns#a2482> .
+<http://example.org/ns#a2483> <http://example.org/ns#a2483> <http://example.org/ns#a2483> .
+<http://example.org/ns#a2484> <http://example.org/ns#a2484> <http://example.org/ns#a2484> .
+<http://example.org/ns#a2485> <http://example.org/ns#a2485> <http://example.org/ns#a2485> .
+<http://example.org/ns#a2486> <http://example.org/ns#a2486> <http://example.org/ns#a2486> .
+<http://example.org/ns#a2487> <http://example.org/ns#a2487> <http://example.org/ns#a2487> .
+<http://example.org/ns#a2488> <http://example.org/ns#a2488> <http://example.org/ns#a2488> .
+<http://example.org/ns#a2489> <http://example.org/ns#a2489> <http://example.org/ns#a2489> .
+<http://example.org/ns#a2490> <http://example.org/ns#a2490> <http://example.org/ns#a2490> .
+<http://example.org/ns#a2491> <http://example.org/ns#a2491> <http://example.org/ns#a2491> .
+<http://example.org/ns#a2492> <http://example.org/ns#a2492> <http://example.org/ns#a2492> .
+<http://example.org/ns#a2493> <http://example.org/ns#a2493> <http://example.org/ns#a2493> .
+<http://example.org/ns#a2494> <http://example.org/ns#a2494> <http://example.org/ns#a2494> .
+<http://example.org/ns#a2495> <http://example.org/ns#a2495> <http://example.org/ns#a2495> .
+<http://example.org/ns#a2496> <http://example.org/ns#a2496> <http://example.org/ns#a2496> .
+<http://example.org/ns#a2497> <http://example.org/ns#a2497> <http://example.org/ns#a2497> .
+<http://example.org/ns#a2498> <http://example.org/ns#a2498> <http://example.org/ns#a2498> .
+<http://example.org/ns#a2499> <http://example.org/ns#a2499> <http://example.org/ns#a2499> .
+<http://example.org/ns#a2500> <http://example.org/ns#a2500> <http://example.org/ns#a2500> .
+<http://example.org/ns#a2501> <http://example.org/ns#a2501> <http://example.org/ns#a2501> .
+<http://example.org/ns#a2502> <http://example.org/ns#a2502> <http://example.org/ns#a2502> .
+<http://example.org/ns#a2503> <http://example.org/ns#a2503> <http://example.org/ns#a2503> .
+<http://example.org/ns#a2504> <http://example.org/ns#a2504> <http://example.org/ns#a2504> .
+<http://example.org/ns#a2505> <http://example.org/ns#a2505> <http://example.org/ns#a2505> .
+<http://example.org/ns#a2506> <http://example.org/ns#a2506> <http://example.org/ns#a2506> .
+<http://example.org/ns#a2507> <http://example.org/ns#a2507> <http://example.org/ns#a2507> .
+<http://example.org/ns#a2508> <http://example.org/ns#a2508> <http://example.org/ns#a2508> .
+<http://example.org/ns#a2509> <http://example.org/ns#a2509> <http://example.org/ns#a2509> .
+<http://example.org/ns#a2510> <http://example.org/ns#a2510> <http://example.org/ns#a2510> .
+<http://example.org/ns#a2511> <http://example.org/ns#a2511> <http://example.org/ns#a2511> .
+<http://example.org/ns#a2512> <http://example.org/ns#a2512> <http://example.org/ns#a2512> .
+<http://example.org/ns#a2513> <http://example.org/ns#a2513> <http://example.org/ns#a2513> .
+<http://example.org/ns#a2514> <http://example.org/ns#a2514> <http://example.org/ns#a2514> .
+<http://example.org/ns#a2515> <http://example.org/ns#a2515> <http://example.org/ns#a2515> .
+<http://example.org/ns#a2516> <http://example.org/ns#a2516> <http://example.org/ns#a2516> .
+<http://example.org/ns#a2517> <http://example.org/ns#a2517> <http://example.org/ns#a2517> .
+<http://example.org/ns#a2518> <http://example.org/ns#a2518> <http://example.org/ns#a2518> .
+<http://example.org/ns#a2519> <http://example.org/ns#a2519> <http://example.org/ns#a2519> .
+<http://example.org/ns#a2520> <http://example.org/ns#a2520> <http://example.org/ns#a2520> .
+<http://example.org/ns#a2521> <http://example.org/ns#a2521> <http://example.org/ns#a2521> .
+<http://example.org/ns#a2522> <http://example.org/ns#a2522> <http://example.org/ns#a2522> .
+<http://example.org/ns#a2523> <http://example.org/ns#a2523> <http://example.org/ns#a2523> .
+<http://example.org/ns#a2524> <http://example.org/ns#a2524> <http://example.org/ns#a2524> .
+<http://example.org/ns#a2525> <http://example.org/ns#a2525> <http://example.org/ns#a2525> .
+<http://example.org/ns#a2526> <http://example.org/ns#a2526> <http://example.org/ns#a2526> .
+<http://example.org/ns#a2527> <http://example.org/ns#a2527> <http://example.org/ns#a2527> .
+<http://example.org/ns#a2528> <http://example.org/ns#a2528> <http://example.org/ns#a2528> .
+<http://example.org/ns#a2529> <http://example.org/ns#a2529> <http://example.org/ns#a2529> .
+<http://example.org/ns#a2530> <http://example.org/ns#a2530> <http://example.org/ns#a2530> .
+<http://example.org/ns#a2531> <http://example.org/ns#a2531> <http://example.org/ns#a2531> .
+<http://example.org/ns#a2532> <http://example.org/ns#a2532> <http://example.org/ns#a2532> .
+<http://example.org/ns#a2533> <http://example.org/ns#a2533> <http://example.org/ns#a2533> .
+<http://example.org/ns#a2534> <http://example.org/ns#a2534> <http://example.org/ns#a2534> .
+<http://example.org/ns#a2535> <http://example.org/ns#a2535> <http://example.org/ns#a2535> .
+<http://example.org/ns#a2536> <http://example.org/ns#a2536> <http://example.org/ns#a2536> .
+<http://example.org/ns#a2537> <http://example.org/ns#a2537> <http://example.org/ns#a2537> .
+<http://example.org/ns#a2538> <http://example.org/ns#a2538> <http://example.org/ns#a2538> .
+<http://example.org/ns#a2539> <http://example.org/ns#a2539> <http://example.org/ns#a2539> .
+<http://example.org/ns#a2540> <http://example.org/ns#a2540> <http://example.org/ns#a2540> .
+<http://example.org/ns#a2541> <http://example.org/ns#a2541> <http://example.org/ns#a2541> .
+<http://example.org/ns#a2542> <http://example.org/ns#a2542> <http://example.org/ns#a2542> .
+<http://example.org/ns#a2543> <http://example.org/ns#a2543> <http://example.org/ns#a2543> .
+<http://example.org/ns#a2544> <http://example.org/ns#a2544> <http://example.org/ns#a2544> .
+<http://example.org/ns#a2545> <http://example.org/ns#a2545> <http://example.org/ns#a2545> .
+<http://example.org/ns#a2546> <http://example.org/ns#a2546> <http://example.org/ns#a2546> .
+<http://example.org/ns#a2547> <http://example.org/ns#a2547> <http://example.org/ns#a2547> .
+<http://example.org/ns#a2548> <http://example.org/ns#a2548> <http://example.org/ns#a2548> .
+<http://example.org/ns#a2549> <http://example.org/ns#a2549> <http://example.org/ns#a2549> .
+<http://example.org/ns#a2550> <http://example.org/ns#a2550> <http://example.org/ns#a2550> .
+<http://example.org/ns#a2551> <http://example.org/ns#a2551> <http://example.org/ns#a2551> .
+<http://example.org/ns#a2552> <http://example.org/ns#a2552> <http://example.org/ns#a2552> .
+<http://example.org/ns#a2553> <http://example.org/ns#a2553> <http://example.org/ns#a2553> .
+<http://example.org/ns#a2554> <http://example.org/ns#a2554> <http://example.org/ns#a2554> .
+<http://example.org/ns#a2555> <http://example.org/ns#a2555> <http://example.org/ns#a2555> .
+<http://example.org/ns#a2556> <http://example.org/ns#a2556> <http://example.org/ns#a2556> .
+<http://example.org/ns#a2557> <http://example.org/ns#a2557> <http://example.org/ns#a2557> .
+<http://example.org/ns#a2558> <http://example.org/ns#a2558> <http://example.org/ns#a2558> .
+<http://example.org/ns#a2559> <http://example.org/ns#a2559> <http://example.org/ns#a2559> .
+<http://example.org/ns#a2560> <http://example.org/ns#a2560> <http://example.org/ns#a2560> .
+<http://example.org/ns#a2561> <http://example.org/ns#a2561> <http://example.org/ns#a2561> .
+<http://example.org/ns#a2562> <http://example.org/ns#a2562> <http://example.org/ns#a2562> .
+<http://example.org/ns#a2563> <http://example.org/ns#a2563> <http://example.org/ns#a2563> .
+<http://example.org/ns#a2564> <http://example.org/ns#a2564> <http://example.org/ns#a2564> .
+<http://example.org/ns#a2565> <http://example.org/ns#a2565> <http://example.org/ns#a2565> .
+<http://example.org/ns#a2566> <http://example.org/ns#a2566> <http://example.org/ns#a2566> .
+<http://example.org/ns#a2567> <http://example.org/ns#a2567> <http://example.org/ns#a2567> .
+<http://example.org/ns#a2568> <http://example.org/ns#a2568> <http://example.org/ns#a2568> .
+<http://example.org/ns#a2569> <http://example.org/ns#a2569> <http://example.org/ns#a2569> .
+<http://example.org/ns#a2570> <http://example.org/ns#a2570> <http://example.org/ns#a2570> .
+<http://example.org/ns#a2571> <http://example.org/ns#a2571> <http://example.org/ns#a2571> .
+<http://example.org/ns#a2572> <http://example.org/ns#a2572> <http://example.org/ns#a2572> .
+<http://example.org/ns#a2573> <http://example.org/ns#a2573> <http://example.org/ns#a2573> .
+<http://example.org/ns#a2574> <http://example.org/ns#a2574> <http://example.org/ns#a2574> .
+<http://example.org/ns#a2575> <http://example.org/ns#a2575> <http://example.org/ns#a2575> .
+<http://example.org/ns#a2576> <http://example.org/ns#a2576> <http://example.org/ns#a2576> .
+<http://example.org/ns#a2577> <http://example.org/ns#a2577> <http://example.org/ns#a2577> .
+<http://example.org/ns#a2578> <http://example.org/ns#a2578> <http://example.org/ns#a2578> .
+<http://example.org/ns#a2579> <http://example.org/ns#a2579> <http://example.org/ns#a2579> .
+<http://example.org/ns#a2580> <http://example.org/ns#a2580> <http://example.org/ns#a2580> .
+<http://example.org/ns#a2581> <http://example.org/ns#a2581> <http://example.org/ns#a2581> .
+<http://example.org/ns#a2582> <http://example.org/ns#a2582> <http://example.org/ns#a2582> .
+<http://example.org/ns#a2583> <http://example.org/ns#a2583> <http://example.org/ns#a2583> .
+<http://example.org/ns#a2584> <http://example.org/ns#a2584> <http://example.org/ns#a2584> .
+<http://example.org/ns#a2585> <http://example.org/ns#a2585> <http://example.org/ns#a2585> .
+<http://example.org/ns#a2586> <http://example.org/ns#a2586> <http://example.org/ns#a2586> .
+<http://example.org/ns#a2587> <http://example.org/ns#a2587> <http://example.org/ns#a2587> .
+<http://example.org/ns#a2588> <http://example.org/ns#a2588> <http://example.org/ns#a2588> .
+<http://example.org/ns#a2589> <http://example.org/ns#a2589> <http://example.org/ns#a2589> .
+<http://example.org/ns#a2590> <http://example.org/ns#a2590> <http://example.org/ns#a2590> .
+<http://example.org/ns#a2591> <http://example.org/ns#a2591> <http://example.org/ns#a2591> .
+<http://example.org/ns#a2592> <http://example.org/ns#a2592> <http://example.org/ns#a2592> .
+<http://example.org/ns#a2593> <http://example.org/ns#a2593> <http://example.org/ns#a2593> .
+<http://example.org/ns#a2594> <http://example.org/ns#a2594> <http://example.org/ns#a2594> .
+<http://example.org/ns#a2595> <http://example.org/ns#a2595> <http://example.org/ns#a2595> .
+<http://example.org/ns#a2596> <http://example.org/ns#a2596> <http://example.org/ns#a2596> .
+<http://example.org/ns#a2597> <http://example.org/ns#a2597> <http://example.org/ns#a2597> .
+<http://example.org/ns#a2598> <http://example.org/ns#a2598> <http://example.org/ns#a2598> .
+<http://example.org/ns#a2599> <http://example.org/ns#a2599> <http://example.org/ns#a2599> .
+<http://example.org/ns#a2600> <http://example.org/ns#a2600> <http://example.org/ns#a2600> .
+<http://example.org/ns#a2601> <http://example.org/ns#a2601> <http://example.org/ns#a2601> .
+<http://example.org/ns#a2602> <http://example.org/ns#a2602> <http://example.org/ns#a2602> .
+<http://example.org/ns#a2603> <http://example.org/ns#a2603> <http://example.org/ns#a2603> .
+<http://example.org/ns#a2604> <http://example.org/ns#a2604> <http://example.org/ns#a2604> .
+<http://example.org/ns#a2605> <http://example.org/ns#a2605> <http://example.org/ns#a2605> .
+<http://example.org/ns#a2606> <http://example.org/ns#a2606> <http://example.org/ns#a2606> .
+<http://example.org/ns#a2607> <http://example.org/ns#a2607> <http://example.org/ns#a2607> .
+<http://example.org/ns#a2608> <http://example.org/ns#a2608> <http://example.org/ns#a2608> .
+<http://example.org/ns#a2609> <http://example.org/ns#a2609> <http://example.org/ns#a2609> .
+<http://example.org/ns#a2610> <http://example.org/ns#a2610> <http://example.org/ns#a2610> .
+<http://example.org/ns#a2611> <http://example.org/ns#a2611> <http://example.org/ns#a2611> .
+<http://example.org/ns#a2612> <http://example.org/ns#a2612> <http://example.org/ns#a2612> .
+<http://example.org/ns#a2613> <http://example.org/ns#a2613> <http://example.org/ns#a2613> .
+<http://example.org/ns#a2614> <http://example.org/ns#a2614> <http://example.org/ns#a2614> .
+<http://example.org/ns#a2615> <http://example.org/ns#a2615> <http://example.org/ns#a2615> .
+<http://example.org/ns#a2616> <http://example.org/ns#a2616> <http://example.org/ns#a2616> .
+<http://example.org/ns#a2617> <http://example.org/ns#a2617> <http://example.org/ns#a2617> .
+<http://example.org/ns#a2618> <http://example.org/ns#a2618> <http://example.org/ns#a2618> .
+<http://example.org/ns#a2619> <http://example.org/ns#a2619> <http://example.org/ns#a2619> .
+<http://example.org/ns#a2620> <http://example.org/ns#a2620> <http://example.org/ns#a2620> .
+<http://example.org/ns#a2621> <http://example.org/ns#a2621> <http://example.org/ns#a2621> .
+<http://example.org/ns#a2622> <http://example.org/ns#a2622> <http://example.org/ns#a2622> .
+<http://example.org/ns#a2623> <http://example.org/ns#a2623> <http://example.org/ns#a2623> .
+<http://example.org/ns#a2624> <http://example.org/ns#a2624> <http://example.org/ns#a2624> .
+<http://example.org/ns#a2625> <http://example.org/ns#a2625> <http://example.org/ns#a2625> .
+<http://example.org/ns#a2626> <http://example.org/ns#a2626> <http://example.org/ns#a2626> .
+<http://example.org/ns#a2627> <http://example.org/ns#a2627> <http://example.org/ns#a2627> .
+<http://example.org/ns#a2628> <http://example.org/ns#a2628> <http://example.org/ns#a2628> .
+<http://example.org/ns#a2629> <http://example.org/ns#a2629> <http://example.org/ns#a2629> .
+<http://example.org/ns#a2630> <http://example.org/ns#a2630> <http://example.org/ns#a2630> .
+<http://example.org/ns#a2631> <http://example.org/ns#a2631> <http://example.org/ns#a2631> .
+<http://example.org/ns#a2632> <http://example.org/ns#a2632> <http://example.org/ns#a2632> .
+<http://example.org/ns#a2633> <http://example.org/ns#a2633> <http://example.org/ns#a2633> .
+<http://example.org/ns#a2634> <http://example.org/ns#a2634> <http://example.org/ns#a2634> .
+<http://example.org/ns#a2635> <http://example.org/ns#a2635> <http://example.org/ns#a2635> .
+<http://example.org/ns#a2636> <http://example.org/ns#a2636> <http://example.org/ns#a2636> .
+<http://example.org/ns#a2637> <http://example.org/ns#a2637> <http://example.org/ns#a2637> .
+<http://example.org/ns#a2638> <http://example.org/ns#a2638> <http://example.org/ns#a2638> .
+<http://example.org/ns#a2639> <http://example.org/ns#a2639> <http://example.org/ns#a2639> .
+<http://example.org/ns#a2640> <http://example.org/ns#a2640> <http://example.org/ns#a2640> .
+<http://example.org/ns#a2641> <http://example.org/ns#a2641> <http://example.org/ns#a2641> .
+<http://example.org/ns#a2642> <http://example.org/ns#a2642> <http://example.org/ns#a2642> .
+<http://example.org/ns#a2643> <http://example.org/ns#a2643> <http://example.org/ns#a2643> .
+<http://example.org/ns#a2644> <http://example.org/ns#a2644> <http://example.org/ns#a2644> .
+<http://example.org/ns#a2645> <http://example.org/ns#a2645> <http://example.org/ns#a2645> .
+<http://example.org/ns#a2646> <http://example.org/ns#a2646> <http://example.org/ns#a2646> .
+<http://example.org/ns#a2647> <http://example.org/ns#a2647> <http://example.org/ns#a2647> .
+<http://example.org/ns#a2648> <http://example.org/ns#a2648> <http://example.org/ns#a2648> .
+<http://example.org/ns#a2649> <http://example.org/ns#a2649> <http://example.org/ns#a2649> .
+<http://example.org/ns#a2650> <http://example.org/ns#a2650> <http://example.org/ns#a2650> .
+<http://example.org/ns#a2651> <http://example.org/ns#a2651> <http://example.org/ns#a2651> .
+<http://example.org/ns#a2652> <http://example.org/ns#a2652> <http://example.org/ns#a2652> .
+<http://example.org/ns#a2653> <http://example.org/ns#a2653> <http://example.org/ns#a2653> .
+<http://example.org/ns#a2654> <http://example.org/ns#a2654> <http://example.org/ns#a2654> .
+<http://example.org/ns#a2655> <http://example.org/ns#a2655> <http://example.org/ns#a2655> .
+<http://example.org/ns#a2656> <http://example.org/ns#a2656> <http://example.org/ns#a2656> .
+<http://example.org/ns#a2657> <http://example.org/ns#a2657> <http://example.org/ns#a2657> .
+<http://example.org/ns#a2658> <http://example.org/ns#a2658> <http://example.org/ns#a2658> .
+<http://example.org/ns#a2659> <http://example.org/ns#a2659> <http://example.org/ns#a2659> .
+<http://example.org/ns#a2660> <http://example.org/ns#a2660> <http://example.org/ns#a2660> .
+<http://example.org/ns#a2661> <http://example.org/ns#a2661> <http://example.org/ns#a2661> .
+<http://example.org/ns#a2662> <http://example.org/ns#a2662> <http://example.org/ns#a2662> .
+<http://example.org/ns#a2663> <http://example.org/ns#a2663> <http://example.org/ns#a2663> .
+<http://example.org/ns#a2664> <http://example.org/ns#a2664> <http://example.org/ns#a2664> .
+<http://example.org/ns#a2665> <http://example.org/ns#a2665> <http://example.org/ns#a2665> .
+<http://example.org/ns#a2666> <http://example.org/ns#a2666> <http://example.org/ns#a2666> .
+<http://example.org/ns#a2667> <http://example.org/ns#a2667> <http://example.org/ns#a2667> .
+<http://example.org/ns#a2668> <http://example.org/ns#a2668> <http://example.org/ns#a2668> .
+<http://example.org/ns#a2669> <http://example.org/ns#a2669> <http://example.org/ns#a2669> .
+<http://example.org/ns#a2670> <http://example.org/ns#a2670> <http://example.org/ns#a2670> .
+<http://example.org/ns#a2671> <http://example.org/ns#a2671> <http://example.org/ns#a2671> .
+<http://example.org/ns#a2672> <http://example.org/ns#a2672> <http://example.org/ns#a2672> .
+<http://example.org/ns#a2673> <http://example.org/ns#a2673> <http://example.org/ns#a2673> .
+<http://example.org/ns#a2674> <http://example.org/ns#a2674> <http://example.org/ns#a2674> .
+<http://example.org/ns#a2675> <http://example.org/ns#a2675> <http://example.org/ns#a2675> .
+<http://example.org/ns#a2676> <http://example.org/ns#a2676> <http://example.org/ns#a2676> .
+<http://example.org/ns#a2677> <http://example.org/ns#a2677> <http://example.org/ns#a2677> .
+<http://example.org/ns#a2678> <http://example.org/ns#a2678> <http://example.org/ns#a2678> .
+<http://example.org/ns#a2679> <http://example.org/ns#a2679> <http://example.org/ns#a2679> .
+<http://example.org/ns#a2680> <http://example.org/ns#a2680> <http://example.org/ns#a2680> .
+<http://example.org/ns#a2681> <http://example.org/ns#a2681> <http://example.org/ns#a2681> .
+<http://example.org/ns#a2682> <http://example.org/ns#a2682> <http://example.org/ns#a2682> .
+<http://example.org/ns#a2683> <http://example.org/ns#a2683> <http://example.org/ns#a2683> .
+<http://example.org/ns#a2684> <http://example.org/ns#a2684> <http://example.org/ns#a2684> .
+<http://example.org/ns#a2685> <http://example.org/ns#a2685> <http://example.org/ns#a2685> .
+<http://example.org/ns#a2686> <http://example.org/ns#a2686> <http://example.org/ns#a2686> .
+<http://example.org/ns#a2687> <http://example.org/ns#a2687> <http://example.org/ns#a2687> .
+<http://example.org/ns#a2688> <http://example.org/ns#a2688> <http://example.org/ns#a2688> .
+<http://example.org/ns#a2689> <http://example.org/ns#a2689> <http://example.org/ns#a2689> .
+<http://example.org/ns#a2690> <http://example.org/ns#a2690> <http://example.org/ns#a2690> .
+<http://example.org/ns#a2691> <http://example.org/ns#a2691> <http://example.org/ns#a2691> .
+<http://example.org/ns#a2692> <http://example.org/ns#a2692> <http://example.org/ns#a2692> .
+<http://example.org/ns#a2693> <http://example.org/ns#a2693> <http://example.org/ns#a2693> .
+<http://example.org/ns#a2694> <http://example.org/ns#a2694> <http://example.org/ns#a2694> .
+<http://example.org/ns#a2695> <http://example.org/ns#a2695> <http://example.org/ns#a2695> .
+<http://example.org/ns#a2696> <http://example.org/ns#a2696> <http://example.org/ns#a2696> .
+<http://example.org/ns#a2697> <http://example.org/ns#a2697> <http://example.org/ns#a2697> .
+<http://example.org/ns#a2698> <http://example.org/ns#a2698> <http://example.org/ns#a2698> .
+<http://example.org/ns#a2699> <http://example.org/ns#a2699> <http://example.org/ns#a2699> .
+<http://example.org/ns#a2700> <http://example.org/ns#a2700> <http://example.org/ns#a2700> .
+<http://example.org/ns#a2701> <http://example.org/ns#a2701> <http://example.org/ns#a2701> .
+<http://example.org/ns#a2702> <http://example.org/ns#a2702> <http://example.org/ns#a2702> .
+<http://example.org/ns#a2703> <http://example.org/ns#a2703> <http://example.org/ns#a2703> .
+<http://example.org/ns#a2704> <http://example.org/ns#a2704> <http://example.org/ns#a2704> .
+<http://example.org/ns#a2705> <http://example.org/ns#a2705> <http://example.org/ns#a2705> .
+<http://example.org/ns#a2706> <http://example.org/ns#a2706> <http://example.org/ns#a2706> .
+<http://example.org/ns#a2707> <http://example.org/ns#a2707> <http://example.org/ns#a2707> .
+<http://example.org/ns#a2708> <http://example.org/ns#a2708> <http://example.org/ns#a2708> .
+<http://example.org/ns#a2709> <http://example.org/ns#a2709> <http://example.org/ns#a2709> .
+<http://example.org/ns#a2710> <http://example.org/ns#a2710> <http://example.org/ns#a2710> .
+<http://example.org/ns#a2711> <http://example.org/ns#a2711> <http://example.org/ns#a2711> .
+<http://example.org/ns#a2712> <http://example.org/ns#a2712> <http://example.org/ns#a2712> .
+<http://example.org/ns#a2713> <http://example.org/ns#a2713> <http://example.org/ns#a2713> .
+<http://example.org/ns#a2714> <http://example.org/ns#a2714> <http://example.org/ns#a2714> .
+<http://example.org/ns#a2715> <http://example.org/ns#a2715> <http://example.org/ns#a2715> .
+<http://example.org/ns#a2716> <http://example.org/ns#a2716> <http://example.org/ns#a2716> .
+<http://example.org/ns#a2717> <http://example.org/ns#a2717> <http://example.org/ns#a2717> .
+<http://example.org/ns#a2718> <http://example.org/ns#a2718> <http://example.org/ns#a2718> .
+<http://example.org/ns#a2719> <http://example.org/ns#a2719> <http://example.org/ns#a2719> .
+<http://example.org/ns#a2720> <http://example.org/ns#a2720> <http://example.org/ns#a2720> .
+<http://example.org/ns#a2721> <http://example.org/ns#a2721> <http://example.org/ns#a2721> .
+<http://example.org/ns#a2722> <http://example.org/ns#a2722> <http://example.org/ns#a2722> .
+<http://example.org/ns#a2723> <http://example.org/ns#a2723> <http://example.org/ns#a2723> .
+<http://example.org/ns#a2724> <http://example.org/ns#a2724> <http://example.org/ns#a2724> .
+<http://example.org/ns#a2725> <http://example.org/ns#a2725> <http://example.org/ns#a2725> .
+<http://example.org/ns#a2726> <http://example.org/ns#a2726> <http://example.org/ns#a2726> .
+<http://example.org/ns#a2727> <http://example.org/ns#a2727> <http://example.org/ns#a2727> .
+<http://example.org/ns#a2728> <http://example.org/ns#a2728> <http://example.org/ns#a2728> .
+<http://example.org/ns#a2729> <http://example.org/ns#a2729> <http://example.org/ns#a2729> .
+<http://example.org/ns#a2730> <http://example.org/ns#a2730> <http://example.org/ns#a2730> .
+<http://example.org/ns#a2731> <http://example.org/ns#a2731> <http://example.org/ns#a2731> .
+<http://example.org/ns#a2732> <http://example.org/ns#a2732> <http://example.org/ns#a2732> .
+<http://example.org/ns#a2733> <http://example.org/ns#a2733> <http://example.org/ns#a2733> .
+<http://example.org/ns#a2734> <http://example.org/ns#a2734> <http://example.org/ns#a2734> .
+<http://example.org/ns#a2735> <http://example.org/ns#a2735> <http://example.org/ns#a2735> .
+<http://example.org/ns#a2736> <http://example.org/ns#a2736> <http://example.org/ns#a2736> .
+<http://example.org/ns#a2737> <http://example.org/ns#a2737> <http://example.org/ns#a2737> .
+<http://example.org/ns#a2738> <http://example.org/ns#a2738> <http://example.org/ns#a2738> .
+<http://example.org/ns#a2739> <http://example.org/ns#a2739> <http://example.org/ns#a2739> .
+<http://example.org/ns#a2740> <http://example.org/ns#a2740> <http://example.org/ns#a2740> .
+<http://example.org/ns#a2741> <http://example.org/ns#a2741> <http://example.org/ns#a2741> .
+<http://example.org/ns#a2742> <http://example.org/ns#a2742> <http://example.org/ns#a2742> .
+<http://example.org/ns#a2743> <http://example.org/ns#a2743> <http://example.org/ns#a2743> .
+<http://example.org/ns#a2744> <http://example.org/ns#a2744> <http://example.org/ns#a2744> .
+<http://example.org/ns#a2745> <http://example.org/ns#a2745> <http://example.org/ns#a2745> .
+<http://example.org/ns#a2746> <http://example.org/ns#a2746> <http://example.org/ns#a2746> .
+<http://example.org/ns#a2747> <http://example.org/ns#a2747> <http://example.org/ns#a2747> .
+<http://example.org/ns#a2748> <http://example.org/ns#a2748> <http://example.org/ns#a2748> .
+<http://example.org/ns#a2749> <http://example.org/ns#a2749> <http://example.org/ns#a2749> .
+<http://example.org/ns#a2750> <http://example.org/ns#a2750> <http://example.org/ns#a2750> .
+<http://example.org/ns#a2751> <http://example.org/ns#a2751> <http://example.org/ns#a2751> .
+<http://example.org/ns#a2752> <http://example.org/ns#a2752> <http://example.org/ns#a2752> .
+<http://example.org/ns#a2753> <http://example.org/ns#a2753> <http://example.org/ns#a2753> .
+<http://example.org/ns#a2754> <http://example.org/ns#a2754> <http://example.org/ns#a2754> .
+<http://example.org/ns#a2755> <http://example.org/ns#a2755> <http://example.org/ns#a2755> .
+<http://example.org/ns#a2756> <http://example.org/ns#a2756> <http://example.org/ns#a2756> .
+<http://example.org/ns#a2757> <http://example.org/ns#a2757> <http://example.org/ns#a2757> .
+<http://example.org/ns#a2758> <http://example.org/ns#a2758> <http://example.org/ns#a2758> .
+<http://example.org/ns#a2759> <http://example.org/ns#a2759> <http://example.org/ns#a2759> .
+<http://example.org/ns#a2760> <http://example.org/ns#a2760> <http://example.org/ns#a2760> .
+<http://example.org/ns#a2761> <http://example.org/ns#a2761> <http://example.org/ns#a2761> .
+<http://example.org/ns#a2762> <http://example.org/ns#a2762> <http://example.org/ns#a2762> .
+<http://example.org/ns#a2763> <http://example.org/ns#a2763> <http://example.org/ns#a2763> .
+<http://example.org/ns#a2764> <http://example.org/ns#a2764> <http://example.org/ns#a2764> .
+<http://example.org/ns#a2765> <http://example.org/ns#a2765> <http://example.org/ns#a2765> .
+<http://example.org/ns#a2766> <http://example.org/ns#a2766> <http://example.org/ns#a2766> .
+<http://example.org/ns#a2767> <http://example.org/ns#a2767> <http://example.org/ns#a2767> .
+<http://example.org/ns#a2768> <http://example.org/ns#a2768> <http://example.org/ns#a2768> .
+<http://example.org/ns#a2769> <http://example.org/ns#a2769> <http://example.org/ns#a2769> .
+<http://example.org/ns#a2770> <http://example.org/ns#a2770> <http://example.org/ns#a2770> .
+<http://example.org/ns#a2771> <http://example.org/ns#a2771> <http://example.org/ns#a2771> .
+<http://example.org/ns#a2772> <http://example.org/ns#a2772> <http://example.org/ns#a2772> .
+<http://example.org/ns#a2773> <http://example.org/ns#a2773> <http://example.org/ns#a2773> .
+<http://example.org/ns#a2774> <http://example.org/ns#a2774> <http://example.org/ns#a2774> .
+<http://example.org/ns#a2775> <http://example.org/ns#a2775> <http://example.org/ns#a2775> .
+<http://example.org/ns#a2776> <http://example.org/ns#a2776> <http://example.org/ns#a2776> .
+<http://example.org/ns#a2777> <http://example.org/ns#a2777> <http://example.org/ns#a2777> .
+<http://example.org/ns#a2778> <http://example.org/ns#a2778> <http://example.org/ns#a2778> .
+<http://example.org/ns#a2779> <http://example.org/ns#a2779> <http://example.org/ns#a2779> .
+<http://example.org/ns#a2780> <http://example.org/ns#a2780> <http://example.org/ns#a2780> .
+<http://example.org/ns#a2781> <http://example.org/ns#a2781> <http://example.org/ns#a2781> .
+<http://example.org/ns#a2782> <http://example.org/ns#a2782> <http://example.org/ns#a2782> .
+<http://example.org/ns#a2783> <http://example.org/ns#a2783> <http://example.org/ns#a2783> .
+<http://example.org/ns#a2784> <http://example.org/ns#a2784> <http://example.org/ns#a2784> .
+<http://example.org/ns#a2785> <http://example.org/ns#a2785> <http://example.org/ns#a2785> .
+<http://example.org/ns#a2786> <http://example.org/ns#a2786> <http://example.org/ns#a2786> .
+<http://example.org/ns#a2787> <http://example.org/ns#a2787> <http://example.org/ns#a2787> .
+<http://example.org/ns#a2788> <http://example.org/ns#a2788> <http://example.org/ns#a2788> .
+<http://example.org/ns#a2789> <http://example.org/ns#a2789> <http://example.org/ns#a2789> .
+<http://example.org/ns#a2790> <http://example.org/ns#a2790> <http://example.org/ns#a2790> .
+<http://example.org/ns#a2791> <http://example.org/ns#a2791> <http://example.org/ns#a2791> .
+<http://example.org/ns#a2792> <http://example.org/ns#a2792> <http://example.org/ns#a2792> .
+<http://example.org/ns#a2793> <http://example.org/ns#a2793> <http://example.org/ns#a2793> .
+<http://example.org/ns#a2794> <http://example.org/ns#a2794> <http://example.org/ns#a2794> .
+<http://example.org/ns#a2795> <http://example.org/ns#a2795> <http://example.org/ns#a2795> .
+<http://example.org/ns#a2796> <http://example.org/ns#a2796> <http://example.org/ns#a2796> .
+<http://example.org/ns#a2797> <http://example.org/ns#a2797> <http://example.org/ns#a2797> .
+<http://example.org/ns#a2798> <http://example.org/ns#a2798> <http://example.org/ns#a2798> .
+<http://example.org/ns#a2799> <http://example.org/ns#a2799> <http://example.org/ns#a2799> .
+<http://example.org/ns#a2800> <http://example.org/ns#a2800> <http://example.org/ns#a2800> .
+<http://example.org/ns#a2801> <http://example.org/ns#a2801> <http://example.org/ns#a2801> .
+<http://example.org/ns#a2802> <http://example.org/ns#a2802> <http://example.org/ns#a2802> .
+<http://example.org/ns#a2803> <http://example.org/ns#a2803> <http://example.org/ns#a2803> .
+<http://example.org/ns#a2804> <http://example.org/ns#a2804> <http://example.org/ns#a2804> .
+<http://example.org/ns#a2805> <http://example.org/ns#a2805> <http://example.org/ns#a2805> .
+<http://example.org/ns#a2806> <http://example.org/ns#a2806> <http://example.org/ns#a2806> .
+<http://example.org/ns#a2807> <http://example.org/ns#a2807> <http://example.org/ns#a2807> .
+<http://example.org/ns#a2808> <http://example.org/ns#a2808> <http://example.org/ns#a2808> .
+<http://example.org/ns#a2809> <http://example.org/ns#a2809> <http://example.org/ns#a2809> .
+<http://example.org/ns#a2810> <http://example.org/ns#a2810> <http://example.org/ns#a2810> .
+<http://example.org/ns#a2811> <http://example.org/ns#a2811> <http://example.org/ns#a2811> .
+<http://example.org/ns#a2812> <http://example.org/ns#a2812> <http://example.org/ns#a2812> .
+<http://example.org/ns#a2813> <http://example.org/ns#a2813> <http://example.org/ns#a2813> .
+<http://example.org/ns#a2814> <http://example.org/ns#a2814> <http://example.org/ns#a2814> .
+<http://example.org/ns#a2815> <http://example.org/ns#a2815> <http://example.org/ns#a2815> .
+<http://example.org/ns#a2816> <http://example.org/ns#a2816> <http://example.org/ns#a2816> .
+<http://example.org/ns#a2817> <http://example.org/ns#a2817> <http://example.org/ns#a2817> .
+<http://example.org/ns#a2818> <http://example.org/ns#a2818> <http://example.org/ns#a2818> .
+<http://example.org/ns#a2819> <http://example.org/ns#a2819> <http://example.org/ns#a2819> .
+<http://example.org/ns#a2820> <http://example.org/ns#a2820> <http://example.org/ns#a2820> .
+<http://example.org/ns#a2821> <http://example.org/ns#a2821> <http://example.org/ns#a2821> .
+<http://example.org/ns#a2822> <http://example.org/ns#a2822> <http://example.org/ns#a2822> .
+<http://example.org/ns#a2823> <http://example.org/ns#a2823> <http://example.org/ns#a2823> .
+<http://example.org/ns#a2824> <http://example.org/ns#a2824> <http://example.org/ns#a2824> .
+<http://example.org/ns#a2825> <http://example.org/ns#a2825> <http://example.org/ns#a2825> .
+<http://example.org/ns#a2826> <http://example.org/ns#a2826> <http://example.org/ns#a2826> .
+<http://example.org/ns#a2827> <http://example.org/ns#a2827> <http://example.org/ns#a2827> .
+<http://example.org/ns#a2828> <http://example.org/ns#a2828> <http://example.org/ns#a2828> .
+<http://example.org/ns#a2829> <http://example.org/ns#a2829> <http://example.org/ns#a2829> .
+<http://example.org/ns#a2830> <http://example.org/ns#a2830> <http://example.org/ns#a2830> .
+<http://example.org/ns#a2831> <http://example.org/ns#a2831> <http://example.org/ns#a2831> .
+<http://example.org/ns#a2832> <http://example.org/ns#a2832> <http://example.org/ns#a2832> .
+<http://example.org/ns#a2833> <http://example.org/ns#a2833> <http://example.org/ns#a2833> .
+<http://example.org/ns#a2834> <http://example.org/ns#a2834> <http://example.org/ns#a2834> .
+<http://example.org/ns#a2835> <http://example.org/ns#a2835> <http://example.org/ns#a2835> .
+<http://example.org/ns#a2836> <http://example.org/ns#a2836> <http://example.org/ns#a2836> .
+<http://example.org/ns#a2837> <http://example.org/ns#a2837> <http://example.org/ns#a2837> .
+<http://example.org/ns#a2838> <http://example.org/ns#a2838> <http://example.org/ns#a2838> .
+<http://example.org/ns#a2839> <http://example.org/ns#a2839> <http://example.org/ns#a2839> .
+<http://example.org/ns#a2840> <http://example.org/ns#a2840> <http://example.org/ns#a2840> .
+<http://example.org/ns#a2841> <http://example.org/ns#a2841> <http://example.org/ns#a2841> .
+<http://example.org/ns#a2842> <http://example.org/ns#a2842> <http://example.org/ns#a2842> .
+<http://example.org/ns#a2843> <http://example.org/ns#a2843> <http://example.org/ns#a2843> .
+<http://example.org/ns#a2844> <http://example.org/ns#a2844> <http://example.org/ns#a2844> .
+<http://example.org/ns#a2845> <http://example.org/ns#a2845> <http://example.org/ns#a2845> .
+<http://example.org/ns#a2846> <http://example.org/ns#a2846> <http://example.org/ns#a2846> .
+<http://example.org/ns#a2847> <http://example.org/ns#a2847> <http://example.org/ns#a2847> .
+<http://example.org/ns#a2848> <http://example.org/ns#a2848> <http://example.org/ns#a2848> .
+<http://example.org/ns#a2849> <http://example.org/ns#a2849> <http://example.org/ns#a2849> .
+<http://example.org/ns#a2850> <http://example.org/ns#a2850> <http://example.org/ns#a2850> .
+<http://example.org/ns#a2851> <http://example.org/ns#a2851> <http://example.org/ns#a2851> .
+<http://example.org/ns#a2852> <http://example.org/ns#a2852> <http://example.org/ns#a2852> .
+<http://example.org/ns#a2853> <http://example.org/ns#a2853> <http://example.org/ns#a2853> .
+<http://example.org/ns#a2854> <http://example.org/ns#a2854> <http://example.org/ns#a2854> .
+<http://example.org/ns#a2855> <http://example.org/ns#a2855> <http://example.org/ns#a2855> .
+<http://example.org/ns#a2856> <http://example.org/ns#a2856> <http://example.org/ns#a2856> .
+<http://example.org/ns#a2857> <http://example.org/ns#a2857> <http://example.org/ns#a2857> .
+<http://example.org/ns#a2858> <http://example.org/ns#a2858> <http://example.org/ns#a2858> .
+<http://example.org/ns#a2859> <http://example.org/ns#a2859> <http://example.org/ns#a2859> .
+<http://example.org/ns#a2860> <http://example.org/ns#a2860> <http://example.org/ns#a2860> .
+<http://example.org/ns#a2861> <http://example.org/ns#a2861> <http://example.org/ns#a2861> .
+<http://example.org/ns#a2862> <http://example.org/ns#a2862> <http://example.org/ns#a2862> .
+<http://example.org/ns#a2863> <http://example.org/ns#a2863> <http://example.org/ns#a2863> .
+<http://example.org/ns#a2864> <http://example.org/ns#a2864> <http://example.org/ns#a2864> .
+<http://example.org/ns#a2865> <http://example.org/ns#a2865> <http://example.org/ns#a2865> .
+<http://example.org/ns#a2866> <http://example.org/ns#a2866> <http://example.org/ns#a2866> .
+<http://example.org/ns#a2867> <http://example.org/ns#a2867> <http://example.org/ns#a2867> .
+<http://example.org/ns#a2868> <http://example.org/ns#a2868> <http://example.org/ns#a2868> .
+<http://example.org/ns#a2869> <http://example.org/ns#a2869> <http://example.org/ns#a2869> .
+<http://example.org/ns#a2870> <http://example.org/ns#a2870> <http://example.org/ns#a2870> .
+<http://example.org/ns#a2871> <http://example.org/ns#a2871> <http://example.org/ns#a2871> .
+<http://example.org/ns#a2872> <http://example.org/ns#a2872> <http://example.org/ns#a2872> .
+<http://example.org/ns#a2873> <http://example.org/ns#a2873> <http://example.org/ns#a2873> .
+<http://example.org/ns#a2874> <http://example.org/ns#a2874> <http://example.org/ns#a2874> .
+<http://example.org/ns#a2875> <http://example.org/ns#a2875> <http://example.org/ns#a2875> .
+<http://example.org/ns#a2876> <http://example.org/ns#a2876> <http://example.org/ns#a2876> .
+<http://example.org/ns#a2877> <http://example.org/ns#a2877> <http://example.org/ns#a2877> .
+<http://example.org/ns#a2878> <http://example.org/ns#a2878> <http://example.org/ns#a2878> .
+<http://example.org/ns#a2879> <http://example.org/ns#a2879> <http://example.org/ns#a2879> .
+<http://example.org/ns#a2880> <http://example.org/ns#a2880> <http://example.org/ns#a2880> .
+<http://example.org/ns#a2881> <http://example.org/ns#a2881> <http://example.org/ns#a2881> .
+<http://example.org/ns#a2882> <http://example.org/ns#a2882> <http://example.org/ns#a2882> .
+<http://example.org/ns#a2883> <http://example.org/ns#a2883> <http://example.org/ns#a2883> .
+<http://example.org/ns#a2884> <http://example.org/ns#a2884> <http://example.org/ns#a2884> .
+<http://example.org/ns#a2885> <http://example.org/ns#a2885> <http://example.org/ns#a2885> .
+<http://example.org/ns#a2886> <http://example.org/ns#a2886> <http://example.org/ns#a2886> .
+<http://example.org/ns#a2887> <http://example.org/ns#a2887> <http://example.org/ns#a2887> .
+<http://example.org/ns#a2888> <http://example.org/ns#a2888> <http://example.org/ns#a2888> .
+<http://example.org/ns#a2889> <http://example.org/ns#a2889> <http://example.org/ns#a2889> .
+<http://example.org/ns#a2890> <http://example.org/ns#a2890> <http://example.org/ns#a2890> .
+<http://example.org/ns#a2891> <http://example.org/ns#a2891> <http://example.org/ns#a2891> .
+<http://example.org/ns#a2892> <http://example.org/ns#a2892> <http://example.org/ns#a2892> .
+<http://example.org/ns#a2893> <http://example.org/ns#a2893> <http://example.org/ns#a2893> .
+<http://example.org/ns#a2894> <http://example.org/ns#a2894> <http://example.org/ns#a2894> .
+<http://example.org/ns#a2895> <http://example.org/ns#a2895> <http://example.org/ns#a2895> .
+<http://example.org/ns#a2896> <http://example.org/ns#a2896> <http://example.org/ns#a2896> .
+<http://example.org/ns#a2897> <http://example.org/ns#a2897> <http://example.org/ns#a2897> .
+<http://example.org/ns#a2898> <http://example.org/ns#a2898> <http://example.org/ns#a2898> .
+<http://example.org/ns#a2899> <http://example.org/ns#a2899> <http://example.org/ns#a2899> .
+<http://example.org/ns#a2900> <http://example.org/ns#a2900> <http://example.org/ns#a2900> .
+<http://example.org/ns#a2901> <http://example.org/ns#a2901> <http://example.org/ns#a2901> .
+<http://example.org/ns#a2902> <http://example.org/ns#a2902> <http://example.org/ns#a2902> .
+<http://example.org/ns#a2903> <http://example.org/ns#a2903> <http://example.org/ns#a2903> .
+<http://example.org/ns#a2904> <http://example.org/ns#a2904> <http://example.org/ns#a2904> .
+<http://example.org/ns#a2905> <http://example.org/ns#a2905> <http://example.org/ns#a2905> .
+<http://example.org/ns#a2906> <http://example.org/ns#a2906> <http://example.org/ns#a2906> .
+<http://example.org/ns#a2907> <http://example.org/ns#a2907> <http://example.org/ns#a2907> .
+<http://example.org/ns#a2908> <http://example.org/ns#a2908> <http://example.org/ns#a2908> .
+<http://example.org/ns#a2909> <http://example.org/ns#a2909> <http://example.org/ns#a2909> .
+<http://example.org/ns#a2910> <http://example.org/ns#a2910> <http://example.org/ns#a2910> .
+<http://example.org/ns#a2911> <http://example.org/ns#a2911> <http://example.org/ns#a2911> .
+<http://example.org/ns#a2912> <http://example.org/ns#a2912> <http://example.org/ns#a2912> .
+<http://example.org/ns#a2913> <http://example.org/ns#a2913> <http://example.org/ns#a2913> .
+<http://example.org/ns#a2914> <http://example.org/ns#a2914> <http://example.org/ns#a2914> .
+<http://example.org/ns#a2915> <http://example.org/ns#a2915> <http://example.org/ns#a2915> .
+<http://example.org/ns#a2916> <http://example.org/ns#a2916> <http://example.org/ns#a2916> .
+<http://example.org/ns#a2917> <http://example.org/ns#a2917> <http://example.org/ns#a2917> .
+<http://example.org/ns#a2918> <http://example.org/ns#a2918> <http://example.org/ns#a2918> .
+<http://example.org/ns#a2919> <http://example.org/ns#a2919> <http://example.org/ns#a2919> .
+<http://example.org/ns#a2920> <http://example.org/ns#a2920> <http://example.org/ns#a2920> .
+<http://example.org/ns#a2921> <http://example.org/ns#a2921> <http://example.org/ns#a2921> .
+<http://example.org/ns#a2922> <http://example.org/ns#a2922> <http://example.org/ns#a2922> .
+<http://example.org/ns#a2923> <http://example.org/ns#a2923> <http://example.org/ns#a2923> .
+<http://example.org/ns#a2924> <http://example.org/ns#a2924> <http://example.org/ns#a2924> .
+<http://example.org/ns#a2925> <http://example.org/ns#a2925> <http://example.org/ns#a2925> .
+<http://example.org/ns#a2926> <http://example.org/ns#a2926> <http://example.org/ns#a2926> .
+<http://example.org/ns#a2927> <http://example.org/ns#a2927> <http://example.org/ns#a2927> .
+<http://example.org/ns#a2928> <http://example.org/ns#a2928> <http://example.org/ns#a2928> .
+<http://example.org/ns#a2929> <http://example.org/ns#a2929> <http://example.org/ns#a2929> .
+<http://example.org/ns#a2930> <http://example.org/ns#a2930> <http://example.org/ns#a2930> .
+<http://example.org/ns#a2931> <http://example.org/ns#a2931> <http://example.org/ns#a2931> .
+<http://example.org/ns#a2932> <http://example.org/ns#a2932> <http://example.org/ns#a2932> .
+<http://example.org/ns#a2933> <http://example.org/ns#a2933> <http://example.org/ns#a2933> .
+<http://example.org/ns#a2934> <http://example.org/ns#a2934> <http://example.org/ns#a2934> .
+<http://example.org/ns#a2935> <http://example.org/ns#a2935> <http://example.org/ns#a2935> .
+<http://example.org/ns#a2936> <http://example.org/ns#a2936> <http://example.org/ns#a2936> .
+<http://example.org/ns#a2937> <http://example.org/ns#a2937> <http://example.org/ns#a2937> .
+<http://example.org/ns#a2938> <http://example.org/ns#a2938> <http://example.org/ns#a2938> .
+<http://example.org/ns#a2939> <http://example.org/ns#a2939> <http://example.org/ns#a2939> .
+<http://example.org/ns#a2940> <http://example.org/ns#a2940> <http://example.org/ns#a2940> .
+<http://example.org/ns#a2941> <http://example.org/ns#a2941> <http://example.org/ns#a2941> .
+<http://example.org/ns#a2942> <http://example.org/ns#a2942> <http://example.org/ns#a2942> .
+<http://example.org/ns#a2943> <http://example.org/ns#a2943> <http://example.org/ns#a2943> .
+<http://example.org/ns#a2944> <http://example.org/ns#a2944> <http://example.org/ns#a2944> .
+<http://example.org/ns#a2945> <http://example.org/ns#a2945> <http://example.org/ns#a2945> .
+<http://example.org/ns#a2946> <http://example.org/ns#a2946> <http://example.org/ns#a2946> .
+<http://example.org/ns#a2947> <http://example.org/ns#a2947> <http://example.org/ns#a2947> .
+<http://example.org/ns#a2948> <http://example.org/ns#a2948> <http://example.org/ns#a2948> .
+<http://example.org/ns#a2949> <http://example.org/ns#a2949> <http://example.org/ns#a2949> .
+<http://example.org/ns#a2950> <http://example.org/ns#a2950> <http://example.org/ns#a2950> .
+<http://example.org/ns#a2951> <http://example.org/ns#a2951> <http://example.org/ns#a2951> .
+<http://example.org/ns#a2952> <http://example.org/ns#a2952> <http://example.org/ns#a2952> .
+<http://example.org/ns#a2953> <http://example.org/ns#a2953> <http://example.org/ns#a2953> .
+<http://example.org/ns#a2954> <http://example.org/ns#a2954> <http://example.org/ns#a2954> .
+<http://example.org/ns#a2955> <http://example.org/ns#a2955> <http://example.org/ns#a2955> .
+<http://example.org/ns#a2956> <http://example.org/ns#a2956> <http://example.org/ns#a2956> .
+<http://example.org/ns#a2957> <http://example.org/ns#a2957> <http://example.org/ns#a2957> .
+<http://example.org/ns#a2958> <http://example.org/ns#a2958> <http://example.org/ns#a2958> .
+<http://example.org/ns#a2959> <http://example.org/ns#a2959> <http://example.org/ns#a2959> .
+<http://example.org/ns#a2960> <http://example.org/ns#a2960> <http://example.org/ns#a2960> .
+<http://example.org/ns#a2961> <http://example.org/ns#a2961> <http://example.org/ns#a2961> .
+<http://example.org/ns#a2962> <http://example.org/ns#a2962> <http://example.org/ns#a2962> .
+<http://example.org/ns#a2963> <http://example.org/ns#a2963> <http://example.org/ns#a2963> .
+<http://example.org/ns#a2964> <http://example.org/ns#a2964> <http://example.org/ns#a2964> .
+<http://example.org/ns#a2965> <http://example.org/ns#a2965> <http://example.org/ns#a2965> .
+<http://example.org/ns#a2966> <http://example.org/ns#a2966> <http://example.org/ns#a2966> .
+<http://example.org/ns#a2967> <http://example.org/ns#a2967> <http://example.org/ns#a2967> .
+<http://example.org/ns#a2968> <http://example.org/ns#a2968> <http://example.org/ns#a2968> .
+<http://example.org/ns#a2969> <http://example.org/ns#a2969> <http://example.org/ns#a2969> .
+<http://example.org/ns#a2970> <http://example.org/ns#a2970> <http://example.org/ns#a2970> .
+<http://example.org/ns#a2971> <http://example.org/ns#a2971> <http://example.org/ns#a2971> .
+<http://example.org/ns#a2972> <http://example.org/ns#a2972> <http://example.org/ns#a2972> .
+<http://example.org/ns#a2973> <http://example.org/ns#a2973> <http://example.org/ns#a2973> .
+<http://example.org/ns#a2974> <http://example.org/ns#a2974> <http://example.org/ns#a2974> .
+<http://example.org/ns#a2975> <http://example.org/ns#a2975> <http://example.org/ns#a2975> .
+<http://example.org/ns#a2976> <http://example.org/ns#a2976> <http://example.org/ns#a2976> .
+<http://example.org/ns#a2977> <http://example.org/ns#a2977> <http://example.org/ns#a2977> .
+<http://example.org/ns#a2978> <http://example.org/ns#a2978> <http://example.org/ns#a2978> .
+<http://example.org/ns#a2979> <http://example.org/ns#a2979> <http://example.org/ns#a2979> .
+<http://example.org/ns#a2980> <http://example.org/ns#a2980> <http://example.org/ns#a2980> .
+<http://example.org/ns#a2981> <http://example.org/ns#a2981> <http://example.org/ns#a2981> .
+<http://example.org/ns#a2982> <http://example.org/ns#a2982> <http://example.org/ns#a2982> .
+<http://example.org/ns#a2983> <http://example.org/ns#a2983> <http://example.org/ns#a2983> .
+<http://example.org/ns#a2984> <http://example.org/ns#a2984> <http://example.org/ns#a2984> .
+<http://example.org/ns#a2985> <http://example.org/ns#a2985> <http://example.org/ns#a2985> .
+<http://example.org/ns#a2986> <http://example.org/ns#a2986> <http://example.org/ns#a2986> .
+<http://example.org/ns#a2987> <http://example.org/ns#a2987> <http://example.org/ns#a2987> .
+<http://example.org/ns#a2988> <http://example.org/ns#a2988> <http://example.org/ns#a2988> .
+<http://example.org/ns#a2989> <http://example.org/ns#a2989> <http://example.org/ns#a2989> .
+<http://example.org/ns#a2990> <http://example.org/ns#a2990> <http://example.org/ns#a2990> .
+<http://example.org/ns#a2991> <http://example.org/ns#a2991> <http://example.org/ns#a2991> .
+<http://example.org/ns#a2992> <http://example.org/ns#a2992> <http://example.org/ns#a2992> .
+<http://example.org/ns#a2993> <http://example.org/ns#a2993> <http://example.org/ns#a2993> .
+<http://example.org/ns#a2994> <http://example.org/ns#a2994> <http://example.org/ns#a2994> .
+<http://example.org/ns#a2995> <http://example.org/ns#a2995> <http://example.org/ns#a2995> .
+<http://example.org/ns#a2996> <http://example.org/ns#a2996> <http://example.org/ns#a2996> .
+<http://example.org/ns#a2997> <http://example.org/ns#a2997> <http://example.org/ns#a2997> .
+<http://example.org/ns#a2998> <http://example.org/ns#a2998> <http://example.org/ns#a2998> .
+<http://example.org/ns#a2999> <http://example.org/ns#a2999> <http://example.org/ns#a2999> .
+<http://example.org/ns#a3000> <http://example.org/ns#a3000> <http://example.org/ns#a3000> .
+<http://example.org/ns#a3001> <http://example.org/ns#a3001> <http://example.org/ns#a3001> .
+<http://example.org/ns#a3002> <http://example.org/ns#a3002> <http://example.org/ns#a3002> .
+<http://example.org/ns#a3003> <http://example.org/ns#a3003> <http://example.org/ns#a3003> .
+<http://example.org/ns#a3004> <http://example.org/ns#a3004> <http://example.org/ns#a3004> .
+<http://example.org/ns#a3005> <http://example.org/ns#a3005> <http://example.org/ns#a3005> .
+<http://example.org/ns#a3006> <http://example.org/ns#a3006> <http://example.org/ns#a3006> .
+<http://example.org/ns#a3007> <http://example.org/ns#a3007> <http://example.org/ns#a3007> .
+<http://example.org/ns#a3008> <http://example.org/ns#a3008> <http://example.org/ns#a3008> .
+<http://example.org/ns#a3009> <http://example.org/ns#a3009> <http://example.org/ns#a3009> .
+<http://example.org/ns#a3010> <http://example.org/ns#a3010> <http://example.org/ns#a3010> .
+<http://example.org/ns#a3011> <http://example.org/ns#a3011> <http://example.org/ns#a3011> .
+<http://example.org/ns#a3012> <http://example.org/ns#a3012> <http://example.org/ns#a3012> .
+<http://example.org/ns#a3013> <http://example.org/ns#a3013> <http://example.org/ns#a3013> .
+<http://example.org/ns#a3014> <http://example.org/ns#a3014> <http://example.org/ns#a3014> .
+<http://example.org/ns#a3015> <http://example.org/ns#a3015> <http://example.org/ns#a3015> .
+<http://example.org/ns#a3016> <http://example.org/ns#a3016> <http://example.org/ns#a3016> .
+<http://example.org/ns#a3017> <http://example.org/ns#a3017> <http://example.org/ns#a3017> .
+<http://example.org/ns#a3018> <http://example.org/ns#a3018> <http://example.org/ns#a3018> .
+<http://example.org/ns#a3019> <http://example.org/ns#a3019> <http://example.org/ns#a3019> .
+<http://example.org/ns#a3020> <http://example.org/ns#a3020> <http://example.org/ns#a3020> .
+<http://example.org/ns#a3021> <http://example.org/ns#a3021> <http://example.org/ns#a3021> .
+<http://example.org/ns#a3022> <http://example.org/ns#a3022> <http://example.org/ns#a3022> .
+<http://example.org/ns#a3023> <http://example.org/ns#a3023> <http://example.org/ns#a3023> .
+<http://example.org/ns#a3024> <http://example.org/ns#a3024> <http://example.org/ns#a3024> .
+<http://example.org/ns#a3025> <http://example.org/ns#a3025> <http://example.org/ns#a3025> .
+<http://example.org/ns#a3026> <http://example.org/ns#a3026> <http://example.org/ns#a3026> .
+<http://example.org/ns#a3027> <http://example.org/ns#a3027> <http://example.org/ns#a3027> .
+<http://example.org/ns#a3028> <http://example.org/ns#a3028> <http://example.org/ns#a3028> .
+<http://example.org/ns#a3029> <http://example.org/ns#a3029> <http://example.org/ns#a3029> .
+<http://example.org/ns#a3030> <http://example.org/ns#a3030> <http://example.org/ns#a3030> .
+<http://example.org/ns#a3031> <http://example.org/ns#a3031> <http://example.org/ns#a3031> .
+<http://example.org/ns#a3032> <http://example.org/ns#a3032> <http://example.org/ns#a3032> .
+<http://example.org/ns#a3033> <http://example.org/ns#a3033> <http://example.org/ns#a3033> .
+<http://example.org/ns#a3034> <http://example.org/ns#a3034> <http://example.org/ns#a3034> .
+<http://example.org/ns#a3035> <http://example.org/ns#a3035> <http://example.org/ns#a3035> .
+<http://example.org/ns#a3036> <http://example.org/ns#a3036> <http://example.org/ns#a3036> .
+<http://example.org/ns#a3037> <http://example.org/ns#a3037> <http://example.org/ns#a3037> .
+<http://example.org/ns#a3038> <http://example.org/ns#a3038> <http://example.org/ns#a3038> .
+<http://example.org/ns#a3039> <http://example.org/ns#a3039> <http://example.org/ns#a3039> .
+<http://example.org/ns#a3040> <http://example.org/ns#a3040> <http://example.org/ns#a3040> .
+<http://example.org/ns#a3041> <http://example.org/ns#a3041> <http://example.org/ns#a3041> .
+<http://example.org/ns#a3042> <http://example.org/ns#a3042> <http://example.org/ns#a3042> .
+<http://example.org/ns#a3043> <http://example.org/ns#a3043> <http://example.org/ns#a3043> .
+<http://example.org/ns#a3044> <http://example.org/ns#a3044> <http://example.org/ns#a3044> .
+<http://example.org/ns#a3045> <http://example.org/ns#a3045> <http://example.org/ns#a3045> .
+<http://example.org/ns#a3046> <http://example.org/ns#a3046> <http://example.org/ns#a3046> .
+<http://example.org/ns#a3047> <http://example.org/ns#a3047> <http://example.org/ns#a3047> .
+<http://example.org/ns#a3048> <http://example.org/ns#a3048> <http://example.org/ns#a3048> .
+<http://example.org/ns#a3049> <http://example.org/ns#a3049> <http://example.org/ns#a3049> .
+<http://example.org/ns#a3050> <http://example.org/ns#a3050> <http://example.org/ns#a3050> .
+<http://example.org/ns#a3051> <http://example.org/ns#a3051> <http://example.org/ns#a3051> .
+<http://example.org/ns#a3052> <http://example.org/ns#a3052> <http://example.org/ns#a3052> .
+<http://example.org/ns#a3053> <http://example.org/ns#a3053> <http://example.org/ns#a3053> .
+<http://example.org/ns#a3054> <http://example.org/ns#a3054> <http://example.org/ns#a3054> .
+<http://example.org/ns#a3055> <http://example.org/ns#a3055> <http://example.org/ns#a3055> .
+<http://example.org/ns#a3056> <http://example.org/ns#a3056> <http://example.org/ns#a3056> .
+<http://example.org/ns#a3057> <http://example.org/ns#a3057> <http://example.org/ns#a3057> .
+<http://example.org/ns#a3058> <http://example.org/ns#a3058> <http://example.org/ns#a3058> .
+<http://example.org/ns#a3059> <http://example.org/ns#a3059> <http://example.org/ns#a3059> .
+<http://example.org/ns#a3060> <http://example.org/ns#a3060> <http://example.org/ns#a3060> .
+<http://example.org/ns#a3061> <http://example.org/ns#a3061> <http://example.org/ns#a3061> .
+<http://example.org/ns#a3062> <http://example.org/ns#a3062> <http://example.org/ns#a3062> .
+<http://example.org/ns#a3063> <http://example.org/ns#a3063> <http://example.org/ns#a3063> .
+<http://example.org/ns#a3064> <http://example.org/ns#a3064> <http://example.org/ns#a3064> .
+<http://example.org/ns#a3065> <http://example.org/ns#a3065> <http://example.org/ns#a3065> .
+<http://example.org/ns#a3066> <http://example.org/ns#a3066> <http://example.org/ns#a3066> .
+<http://example.org/ns#a3067> <http://example.org/ns#a3067> <http://example.org/ns#a3067> .
+<http://example.org/ns#a3068> <http://example.org/ns#a3068> <http://example.org/ns#a3068> .
+<http://example.org/ns#a3069> <http://example.org/ns#a3069> <http://example.org/ns#a3069> .
+<http://example.org/ns#a3070> <http://example.org/ns#a3070> <http://example.org/ns#a3070> .
+<http://example.org/ns#a3071> <http://example.org/ns#a3071> <http://example.org/ns#a3071> .
+<http://example.org/ns#a3072> <http://example.org/ns#a3072> <http://example.org/ns#a3072> .
+<http://example.org/ns#a3073> <http://example.org/ns#a3073> <http://example.org/ns#a3073> .
+<http://example.org/ns#a3074> <http://example.org/ns#a3074> <http://example.org/ns#a3074> .
+<http://example.org/ns#a3075> <http://example.org/ns#a3075> <http://example.org/ns#a3075> .
+<http://example.org/ns#a3076> <http://example.org/ns#a3076> <http://example.org/ns#a3076> .
+<http://example.org/ns#a3077> <http://example.org/ns#a3077> <http://example.org/ns#a3077> .
+<http://example.org/ns#a3078> <http://example.org/ns#a3078> <http://example.org/ns#a3078> .
+<http://example.org/ns#a3079> <http://example.org/ns#a3079> <http://example.org/ns#a3079> .
+<http://example.org/ns#a3080> <http://example.org/ns#a3080> <http://example.org/ns#a3080> .
+<http://example.org/ns#a3081> <http://example.org/ns#a3081> <http://example.org/ns#a3081> .
+<http://example.org/ns#a3082> <http://example.org/ns#a3082> <http://example.org/ns#a3082> .
+<http://example.org/ns#a3083> <http://example.org/ns#a3083> <http://example.org/ns#a3083> .
+<http://example.org/ns#a3084> <http://example.org/ns#a3084> <http://example.org/ns#a3084> .
+<http://example.org/ns#a3085> <http://example.org/ns#a3085> <http://example.org/ns#a3085> .
+<http://example.org/ns#a3086> <http://example.org/ns#a3086> <http://example.org/ns#a3086> .
+<http://example.org/ns#a3087> <http://example.org/ns#a3087> <http://example.org/ns#a3087> .
+<http://example.org/ns#a3088> <http://example.org/ns#a3088> <http://example.org/ns#a3088> .
+<http://example.org/ns#a3089> <http://example.org/ns#a3089> <http://example.org/ns#a3089> .
+<http://example.org/ns#a3090> <http://example.org/ns#a3090> <http://example.org/ns#a3090> .
+<http://example.org/ns#a3091> <http://example.org/ns#a3091> <http://example.org/ns#a3091> .
+<http://example.org/ns#a3092> <http://example.org/ns#a3092> <http://example.org/ns#a3092> .
+<http://example.org/ns#a3093> <http://example.org/ns#a3093> <http://example.org/ns#a3093> .
+<http://example.org/ns#a3094> <http://example.org/ns#a3094> <http://example.org/ns#a3094> .
+<http://example.org/ns#a3095> <http://example.org/ns#a3095> <http://example.org/ns#a3095> .
+<http://example.org/ns#a3096> <http://example.org/ns#a3096> <http://example.org/ns#a3096> .
+<http://example.org/ns#a3097> <http://example.org/ns#a3097> <http://example.org/ns#a3097> .
+<http://example.org/ns#a3098> <http://example.org/ns#a3098> <http://example.org/ns#a3098> .
+<http://example.org/ns#a3099> <http://example.org/ns#a3099> <http://example.org/ns#a3099> .
+<http://example.org/ns#a3100> <http://example.org/ns#a3100> <http://example.org/ns#a3100> .
+<http://example.org/ns#a3101> <http://example.org/ns#a3101> <http://example.org/ns#a3101> .
+<http://example.org/ns#a3102> <http://example.org/ns#a3102> <http://example.org/ns#a3102> .
+<http://example.org/ns#a3103> <http://example.org/ns#a3103> <http://example.org/ns#a3103> .
+<http://example.org/ns#a3104> <http://example.org/ns#a3104> <http://example.org/ns#a3104> .
+<http://example.org/ns#a3105> <http://example.org/ns#a3105> <http://example.org/ns#a3105> .
+<http://example.org/ns#a3106> <http://example.org/ns#a3106> <http://example.org/ns#a3106> .
+<http://example.org/ns#a3107> <http://example.org/ns#a3107> <http://example.org/ns#a3107> .
+<http://example.org/ns#a3108> <http://example.org/ns#a3108> <http://example.org/ns#a3108> .
+<http://example.org/ns#a3109> <http://example.org/ns#a3109> <http://example.org/ns#a3109> .
+<http://example.org/ns#a3110> <http://example.org/ns#a3110> <http://example.org/ns#a3110> .
+<http://example.org/ns#a3111> <http://example.org/ns#a3111> <http://example.org/ns#a3111> .
+<http://example.org/ns#a3112> <http://example.org/ns#a3112> <http://example.org/ns#a3112> .
+<http://example.org/ns#a3113> <http://example.org/ns#a3113> <http://example.org/ns#a3113> .
+<http://example.org/ns#a3114> <http://example.org/ns#a3114> <http://example.org/ns#a3114> .
+<http://example.org/ns#a3115> <http://example.org/ns#a3115> <http://example.org/ns#a3115> .
+<http://example.org/ns#a3116> <http://example.org/ns#a3116> <http://example.org/ns#a3116> .
+<http://example.org/ns#a3117> <http://example.org/ns#a3117> <http://example.org/ns#a3117> .
+<http://example.org/ns#a3118> <http://example.org/ns#a3118> <http://example.org/ns#a3118> .
+<http://example.org/ns#a3119> <http://example.org/ns#a3119> <http://example.org/ns#a3119> .
+<http://example.org/ns#a3120> <http://example.org/ns#a3120> <http://example.org/ns#a3120> .
+<http://example.org/ns#a3121> <http://example.org/ns#a3121> <http://example.org/ns#a3121> .
+<http://example.org/ns#a3122> <http://example.org/ns#a3122> <http://example.org/ns#a3122> .
+<http://example.org/ns#a3123> <http://example.org/ns#a3123> <http://example.org/ns#a3123> .
+<http://example.org/ns#a3124> <http://example.org/ns#a3124> <http://example.org/ns#a3124> .
+<http://example.org/ns#a3125> <http://example.org/ns#a3125> <http://example.org/ns#a3125> .
+<http://example.org/ns#a3126> <http://example.org/ns#a3126> <http://example.org/ns#a3126> .
+<http://example.org/ns#a3127> <http://example.org/ns#a3127> <http://example.org/ns#a3127> .
+<http://example.org/ns#a3128> <http://example.org/ns#a3128> <http://example.org/ns#a3128> .
+<http://example.org/ns#a3129> <http://example.org/ns#a3129> <http://example.org/ns#a3129> .
+<http://example.org/ns#a3130> <http://example.org/ns#a3130> <http://example.org/ns#a3130> .
+<http://example.org/ns#a3131> <http://example.org/ns#a3131> <http://example.org/ns#a3131> .
+<http://example.org/ns#a3132> <http://example.org/ns#a3132> <http://example.org/ns#a3132> .
+<http://example.org/ns#a3133> <http://example.org/ns#a3133> <http://example.org/ns#a3133> .
+<http://example.org/ns#a3134> <http://example.org/ns#a3134> <http://example.org/ns#a3134> .
+<http://example.org/ns#a3135> <http://example.org/ns#a3135> <http://example.org/ns#a3135> .
+<http://example.org/ns#a3136> <http://example.org/ns#a3136> <http://example.org/ns#a3136> .
+<http://example.org/ns#a3137> <http://example.org/ns#a3137> <http://example.org/ns#a3137> .
+<http://example.org/ns#a3138> <http://example.org/ns#a3138> <http://example.org/ns#a3138> .
+<http://example.org/ns#a3139> <http://example.org/ns#a3139> <http://example.org/ns#a3139> .
+<http://example.org/ns#a3140> <http://example.org/ns#a3140> <http://example.org/ns#a3140> .
+<http://example.org/ns#a3141> <http://example.org/ns#a3141> <http://example.org/ns#a3141> .
+<http://example.org/ns#a3142> <http://example.org/ns#a3142> <http://example.org/ns#a3142> .
+<http://example.org/ns#a3143> <http://example.org/ns#a3143> <http://example.org/ns#a3143> .
+<http://example.org/ns#a3144> <http://example.org/ns#a3144> <http://example.org/ns#a3144> .
+<http://example.org/ns#a3145> <http://example.org/ns#a3145> <http://example.org/ns#a3145> .
+<http://example.org/ns#a3146> <http://example.org/ns#a3146> <http://example.org/ns#a3146> .
+<http://example.org/ns#a3147> <http://example.org/ns#a3147> <http://example.org/ns#a3147> .
+<http://example.org/ns#a3148> <http://example.org/ns#a3148> <http://example.org/ns#a3148> .
+<http://example.org/ns#a3149> <http://example.org/ns#a3149> <http://example.org/ns#a3149> .
+<http://example.org/ns#a3150> <http://example.org/ns#a3150> <http://example.org/ns#a3150> .
+<http://example.org/ns#a3151> <http://example.org/ns#a3151> <http://example.org/ns#a3151> .
+<http://example.org/ns#a3152> <http://example.org/ns#a3152> <http://example.org/ns#a3152> .
+<http://example.org/ns#a3153> <http://example.org/ns#a3153> <http://example.org/ns#a3153> .
+<http://example.org/ns#a3154> <http://example.org/ns#a3154> <http://example.org/ns#a3154> .
+<http://example.org/ns#a3155> <http://example.org/ns#a3155> <http://example.org/ns#a3155> .
+<http://example.org/ns#a3156> <http://example.org/ns#a3156> <http://example.org/ns#a3156> .
+<http://example.org/ns#a3157> <http://example.org/ns#a3157> <http://example.org/ns#a3157> .
+<http://example.org/ns#a3158> <http://example.org/ns#a3158> <http://example.org/ns#a3158> .
+<http://example.org/ns#a3159> <http://example.org/ns#a3159> <http://example.org/ns#a3159> .
+<http://example.org/ns#a3160> <http://example.org/ns#a3160> <http://example.org/ns#a3160> .
+<http://example.org/ns#a3161> <http://example.org/ns#a3161> <http://example.org/ns#a3161> .
+<http://example.org/ns#a3162> <http://example.org/ns#a3162> <http://example.org/ns#a3162> .
+<http://example.org/ns#a3163> <http://example.org/ns#a3163> <http://example.org/ns#a3163> .
+<http://example.org/ns#a3164> <http://example.org/ns#a3164> <http://example.org/ns#a3164> .
+<http://example.org/ns#a3165> <http://example.org/ns#a3165> <http://example.org/ns#a3165> .
+<http://example.org/ns#a3166> <http://example.org/ns#a3166> <http://example.org/ns#a3166> .
+<http://example.org/ns#a3167> <http://example.org/ns#a3167> <http://example.org/ns#a3167> .
+<http://example.org/ns#a3168> <http://example.org/ns#a3168> <http://example.org/ns#a3168> .
+<http://example.org/ns#a3169> <http://example.org/ns#a3169> <http://example.org/ns#a3169> .
+<http://example.org/ns#a3170> <http://example.org/ns#a3170> <http://example.org/ns#a3170> .
+<http://example.org/ns#a3171> <http://example.org/ns#a3171> <http://example.org/ns#a3171> .
+<http://example.org/ns#a3172> <http://example.org/ns#a3172> <http://example.org/ns#a3172> .
+<http://example.org/ns#a3173> <http://example.org/ns#a3173> <http://example.org/ns#a3173> .
+<http://example.org/ns#a3174> <http://example.org/ns#a3174> <http://example.org/ns#a3174> .
+<http://example.org/ns#a3175> <http://example.org/ns#a3175> <http://example.org/ns#a3175> .
+<http://example.org/ns#a3176> <http://example.org/ns#a3176> <http://example.org/ns#a3176> .
+<http://example.org/ns#a3177> <http://example.org/ns#a3177> <http://example.org/ns#a3177> .
+<http://example.org/ns#a3178> <http://example.org/ns#a3178> <http://example.org/ns#a3178> .
+<http://example.org/ns#a3179> <http://example.org/ns#a3179> <http://example.org/ns#a3179> .
+<http://example.org/ns#a3180> <http://example.org/ns#a3180> <http://example.org/ns#a3180> .
+<http://example.org/ns#a3181> <http://example.org/ns#a3181> <http://example.org/ns#a3181> .
+<http://example.org/ns#a3182> <http://example.org/ns#a3182> <http://example.org/ns#a3182> .
+<http://example.org/ns#a3183> <http://example.org/ns#a3183> <http://example.org/ns#a3183> .
+<http://example.org/ns#a3184> <http://example.org/ns#a3184> <http://example.org/ns#a3184> .
+<http://example.org/ns#a3185> <http://example.org/ns#a3185> <http://example.org/ns#a3185> .
+<http://example.org/ns#a3186> <http://example.org/ns#a3186> <http://example.org/ns#a3186> .
+<http://example.org/ns#a3187> <http://example.org/ns#a3187> <http://example.org/ns#a3187> .
+<http://example.org/ns#a3188> <http://example.org/ns#a3188> <http://example.org/ns#a3188> .
+<http://example.org/ns#a3189> <http://example.org/ns#a3189> <http://example.org/ns#a3189> .
+<http://example.org/ns#a3190> <http://example.org/ns#a3190> <http://example.org/ns#a3190> .
+<http://example.org/ns#a3191> <http://example.org/ns#a3191> <http://example.org/ns#a3191> .
+<http://example.org/ns#a3192> <http://example.org/ns#a3192> <http://example.org/ns#a3192> .
+<http://example.org/ns#a3193> <http://example.org/ns#a3193> <http://example.org/ns#a3193> .
+<http://example.org/ns#a3194> <http://example.org/ns#a3194> <http://example.org/ns#a3194> .
+<http://example.org/ns#a3195> <http://example.org/ns#a3195> <http://example.org/ns#a3195> .
+<http://example.org/ns#a3196> <http://example.org/ns#a3196> <http://example.org/ns#a3196> .
+<http://example.org/ns#a3197> <http://example.org/ns#a3197> <http://example.org/ns#a3197> .
+<http://example.org/ns#a3198> <http://example.org/ns#a3198> <http://example.org/ns#a3198> .
+<http://example.org/ns#a3199> <http://example.org/ns#a3199> <http://example.org/ns#a3199> .
+<http://example.org/ns#a3200> <http://example.org/ns#a3200> <http://example.org/ns#a3200> .
+<http://example.org/ns#a3201> <http://example.org/ns#a3201> <http://example.org/ns#a3201> .
+<http://example.org/ns#a3202> <http://example.org/ns#a3202> <http://example.org/ns#a3202> .
+<http://example.org/ns#a3203> <http://example.org/ns#a3203> <http://example.org/ns#a3203> .
+<http://example.org/ns#a3204> <http://example.org/ns#a3204> <http://example.org/ns#a3204> .
+<http://example.org/ns#a3205> <http://example.org/ns#a3205> <http://example.org/ns#a3205> .
+<http://example.org/ns#a3206> <http://example.org/ns#a3206> <http://example.org/ns#a3206> .
+<http://example.org/ns#a3207> <http://example.org/ns#a3207> <http://example.org/ns#a3207> .
+<http://example.org/ns#a3208> <http://example.org/ns#a3208> <http://example.org/ns#a3208> .
+<http://example.org/ns#a3209> <http://example.org/ns#a3209> <http://example.org/ns#a3209> .
+<http://example.org/ns#a3210> <http://example.org/ns#a3210> <http://example.org/ns#a3210> .
+<http://example.org/ns#a3211> <http://example.org/ns#a3211> <http://example.org/ns#a3211> .
+<http://example.org/ns#a3212> <http://example.org/ns#a3212> <http://example.org/ns#a3212> .
+<http://example.org/ns#a3213> <http://example.org/ns#a3213> <http://example.org/ns#a3213> .
+<http://example.org/ns#a3214> <http://example.org/ns#a3214> <http://example.org/ns#a3214> .
+<http://example.org/ns#a3215> <http://example.org/ns#a3215> <http://example.org/ns#a3215> .
+<http://example.org/ns#a3216> <http://example.org/ns#a3216> <http://example.org/ns#a3216> .
+<http://example.org/ns#a3217> <http://example.org/ns#a3217> <http://example.org/ns#a3217> .
+<http://example.org/ns#a3218> <http://example.org/ns#a3218> <http://example.org/ns#a3218> .
+<http://example.org/ns#a3219> <http://example.org/ns#a3219> <http://example.org/ns#a3219> .
+<http://example.org/ns#a3220> <http://example.org/ns#a3220> <http://example.org/ns#a3220> .
+<http://example.org/ns#a3221> <http://example.org/ns#a3221> <http://example.org/ns#a3221> .
+<http://example.org/ns#a3222> <http://example.org/ns#a3222> <http://example.org/ns#a3222> .
+<http://example.org/ns#a3223> <http://example.org/ns#a3223> <http://example.org/ns#a3223> .
+<http://example.org/ns#a3224> <http://example.org/ns#a3224> <http://example.org/ns#a3224> .
+<http://example.org/ns#a3225> <http://example.org/ns#a3225> <http://example.org/ns#a3225> .
+<http://example.org/ns#a3226> <http://example.org/ns#a3226> <http://example.org/ns#a3226> .
+<http://example.org/ns#a3227> <http://example.org/ns#a3227> <http://example.org/ns#a3227> .
+<http://example.org/ns#a3228> <http://example.org/ns#a3228> <http://example.org/ns#a3228> .
+<http://example.org/ns#a3229> <http://example.org/ns#a3229> <http://example.org/ns#a3229> .
+<http://example.org/ns#a3230> <http://example.org/ns#a3230> <http://example.org/ns#a3230> .
+<http://example.org/ns#a3231> <http://example.org/ns#a3231> <http://example.org/ns#a3231> .
+<http://example.org/ns#a3232> <http://example.org/ns#a3232> <http://example.org/ns#a3232> .
+<http://example.org/ns#a3233> <http://example.org/ns#a3233> <http://example.org/ns#a3233> .
+<http://example.org/ns#a3234> <http://example.org/ns#a3234> <http://example.org/ns#a3234> .
+<http://example.org/ns#a3235> <http://example.org/ns#a3235> <http://example.org/ns#a3235> .
+<http://example.org/ns#a3236> <http://example.org/ns#a3236> <http://example.org/ns#a3236> .
+<http://example.org/ns#a3237> <http://example.org/ns#a3237> <http://example.org/ns#a3237> .
+<http://example.org/ns#a3238> <http://example.org/ns#a3238> <http://example.org/ns#a3238> .
+<http://example.org/ns#a3239> <http://example.org/ns#a3239> <http://example.org/ns#a3239> .
+<http://example.org/ns#a3240> <http://example.org/ns#a3240> <http://example.org/ns#a3240> .
+<http://example.org/ns#a3241> <http://example.org/ns#a3241> <http://example.org/ns#a3241> .
+<http://example.org/ns#a3242> <http://example.org/ns#a3242> <http://example.org/ns#a3242> .
+<http://example.org/ns#a3243> <http://example.org/ns#a3243> <http://example.org/ns#a3243> .
+<http://example.org/ns#a3244> <http://example.org/ns#a3244> <http://example.org/ns#a3244> .
+<http://example.org/ns#a3245> <http://example.org/ns#a3245> <http://example.org/ns#a3245> .
+<http://example.org/ns#a3246> <http://example.org/ns#a3246> <http://example.org/ns#a3246> .
+<http://example.org/ns#a3247> <http://example.org/ns#a3247> <http://example.org/ns#a3247> .
+<http://example.org/ns#a3248> <http://example.org/ns#a3248> <http://example.org/ns#a3248> .
+<http://example.org/ns#a3249> <http://example.org/ns#a3249> <http://example.org/ns#a3249> .
+<http://example.org/ns#a3250> <http://example.org/ns#a3250> <http://example.org/ns#a3250> .
+<http://example.org/ns#a3251> <http://example.org/ns#a3251> <http://example.org/ns#a3251> .
+<http://example.org/ns#a3252> <http://example.org/ns#a3252> <http://example.org/ns#a3252> .
+<http://example.org/ns#a3253> <http://example.org/ns#a3253> <http://example.org/ns#a3253> .
+<http://example.org/ns#a3254> <http://example.org/ns#a3254> <http://example.org/ns#a3254> .
+<http://example.org/ns#a3255> <http://example.org/ns#a3255> <http://example.org/ns#a3255> .
+<http://example.org/ns#a3256> <http://example.org/ns#a3256> <http://example.org/ns#a3256> .
+<http://example.org/ns#a3257> <http://example.org/ns#a3257> <http://example.org/ns#a3257> .
+<http://example.org/ns#a3258> <http://example.org/ns#a3258> <http://example.org/ns#a3258> .
+<http://example.org/ns#a3259> <http://example.org/ns#a3259> <http://example.org/ns#a3259> .
+<http://example.org/ns#a3260> <http://example.org/ns#a3260> <http://example.org/ns#a3260> .
+<http://example.org/ns#a3261> <http://example.org/ns#a3261> <http://example.org/ns#a3261> .
+<http://example.org/ns#a3262> <http://example.org/ns#a3262> <http://example.org/ns#a3262> .
+<http://example.org/ns#a3263> <http://example.org/ns#a3263> <http://example.org/ns#a3263> .
+<http://example.org/ns#a3264> <http://example.org/ns#a3264> <http://example.org/ns#a3264> .
+<http://example.org/ns#a3265> <http://example.org/ns#a3265> <http://example.org/ns#a3265> .
+<http://example.org/ns#a3266> <http://example.org/ns#a3266> <http://example.org/ns#a3266> .
+<http://example.org/ns#a3267> <http://example.org/ns#a3267> <http://example.org/ns#a3267> .
+<http://example.org/ns#a3268> <http://example.org/ns#a3268> <http://example.org/ns#a3268> .
+<http://example.org/ns#a3269> <http://example.org/ns#a3269> <http://example.org/ns#a3269> .
+<http://example.org/ns#a3270> <http://example.org/ns#a3270> <http://example.org/ns#a3270> .
+<http://example.org/ns#a3271> <http://example.org/ns#a3271> <http://example.org/ns#a3271> .
+<http://example.org/ns#a3272> <http://example.org/ns#a3272> <http://example.org/ns#a3272> .
+<http://example.org/ns#a3273> <http://example.org/ns#a3273> <http://example.org/ns#a3273> .
+<http://example.org/ns#a3274> <http://example.org/ns#a3274> <http://example.org/ns#a3274> .
+<http://example.org/ns#a3275> <http://example.org/ns#a3275> <http://example.org/ns#a3275> .
+<http://example.org/ns#a3276> <http://example.org/ns#a3276> <http://example.org/ns#a3276> .
+<http://example.org/ns#a3277> <http://example.org/ns#a3277> <http://example.org/ns#a3277> .
+<http://example.org/ns#a3278> <http://example.org/ns#a3278> <http://example.org/ns#a3278> .
+<http://example.org/ns#a3279> <http://example.org/ns#a3279> <http://example.org/ns#a3279> .
+<http://example.org/ns#a3280> <http://example.org/ns#a3280> <http://example.org/ns#a3280> .
+<http://example.org/ns#a3281> <http://example.org/ns#a3281> <http://example.org/ns#a3281> .
+<http://example.org/ns#a3282> <http://example.org/ns#a3282> <http://example.org/ns#a3282> .
+<http://example.org/ns#a3283> <http://example.org/ns#a3283> <http://example.org/ns#a3283> .
+<http://example.org/ns#a3284> <http://example.org/ns#a3284> <http://example.org/ns#a3284> .
+<http://example.org/ns#a3285> <http://example.org/ns#a3285> <http://example.org/ns#a3285> .
+<http://example.org/ns#a3286> <http://example.org/ns#a3286> <http://example.org/ns#a3286> .
+<http://example.org/ns#a3287> <http://example.org/ns#a3287> <http://example.org/ns#a3287> .
+<http://example.org/ns#a3288> <http://example.org/ns#a3288> <http://example.org/ns#a3288> .
+<http://example.org/ns#a3289> <http://example.org/ns#a3289> <http://example.org/ns#a3289> .
+<http://example.org/ns#a3290> <http://example.org/ns#a3290> <http://example.org/ns#a3290> .
+<http://example.org/ns#a3291> <http://example.org/ns#a3291> <http://example.org/ns#a3291> .
+<http://example.org/ns#a3292> <http://example.org/ns#a3292> <http://example.org/ns#a3292> .
+<http://example.org/ns#a3293> <http://example.org/ns#a3293> <http://example.org/ns#a3293> .
+<http://example.org/ns#a3294> <http://example.org/ns#a3294> <http://example.org/ns#a3294> .
+<http://example.org/ns#a3295> <http://example.org/ns#a3295> <http://example.org/ns#a3295> .
+<http://example.org/ns#a3296> <http://example.org/ns#a3296> <http://example.org/ns#a3296> .
+<http://example.org/ns#a3297> <http://example.org/ns#a3297> <http://example.org/ns#a3297> .
+<http://example.org/ns#a3298> <http://example.org/ns#a3298> <http://example.org/ns#a3298> .
+<http://example.org/ns#a3299> <http://example.org/ns#a3299> <http://example.org/ns#a3299> .
+<http://example.org/ns#a3300> <http://example.org/ns#a3300> <http://example.org/ns#a3300> .
+<http://example.org/ns#a3301> <http://example.org/ns#a3301> <http://example.org/ns#a3301> .
+<http://example.org/ns#a3302> <http://example.org/ns#a3302> <http://example.org/ns#a3302> .
+<http://example.org/ns#a3303> <http://example.org/ns#a3303> <http://example.org/ns#a3303> .
+<http://example.org/ns#a3304> <http://example.org/ns#a3304> <http://example.org/ns#a3304> .
+<http://example.org/ns#a3305> <http://example.org/ns#a3305> <http://example.org/ns#a3305> .
+<http://example.org/ns#a3306> <http://example.org/ns#a3306> <http://example.org/ns#a3306> .
+<http://example.org/ns#a3307> <http://example.org/ns#a3307> <http://example.org/ns#a3307> .
+<http://example.org/ns#a3308> <http://example.org/ns#a3308> <http://example.org/ns#a3308> .
+<http://example.org/ns#a3309> <http://example.org/ns#a3309> <http://example.org/ns#a3309> .
+<http://example.org/ns#a3310> <http://example.org/ns#a3310> <http://example.org/ns#a3310> .
+<http://example.org/ns#a3311> <http://example.org/ns#a3311> <http://example.org/ns#a3311> .
+<http://example.org/ns#a3312> <http://example.org/ns#a3312> <http://example.org/ns#a3312> .
+<http://example.org/ns#a3313> <http://example.org/ns#a3313> <http://example.org/ns#a3313> .
+<http://example.org/ns#a3314> <http://example.org/ns#a3314> <http://example.org/ns#a3314> .
+<http://example.org/ns#a3315> <http://example.org/ns#a3315> <http://example.org/ns#a3315> .
+<http://example.org/ns#a3316> <http://example.org/ns#a3316> <http://example.org/ns#a3316> .
+<http://example.org/ns#a3317> <http://example.org/ns#a3317> <http://example.org/ns#a3317> .
+<http://example.org/ns#a3318> <http://example.org/ns#a3318> <http://example.org/ns#a3318> .
+<http://example.org/ns#a3319> <http://example.org/ns#a3319> <http://example.org/ns#a3319> .
+<http://example.org/ns#a3320> <http://example.org/ns#a3320> <http://example.org/ns#a3320> .
+<http://example.org/ns#a3321> <http://example.org/ns#a3321> <http://example.org/ns#a3321> .
+<http://example.org/ns#a3322> <http://example.org/ns#a3322> <http://example.org/ns#a3322> .
+<http://example.org/ns#a3323> <http://example.org/ns#a3323> <http://example.org/ns#a3323> .
+<http://example.org/ns#a3324> <http://example.org/ns#a3324> <http://example.org/ns#a3324> .
+<http://example.org/ns#a3325> <http://example.org/ns#a3325> <http://example.org/ns#a3325> .
+<http://example.org/ns#a3326> <http://example.org/ns#a3326> <http://example.org/ns#a3326> .
+<http://example.org/ns#a3327> <http://example.org/ns#a3327> <http://example.org/ns#a3327> .
+<http://example.org/ns#a3328> <http://example.org/ns#a3328> <http://example.org/ns#a3328> .
+<http://example.org/ns#a3329> <http://example.org/ns#a3329> <http://example.org/ns#a3329> .
+<http://example.org/ns#a3330> <http://example.org/ns#a3330> <http://example.org/ns#a3330> .
+<http://example.org/ns#a3331> <http://example.org/ns#a3331> <http://example.org/ns#a3331> .
+<http://example.org/ns#a3332> <http://example.org/ns#a3332> <http://example.org/ns#a3332> .
+<http://example.org/ns#a3333> <http://example.org/ns#a3333> <http://example.org/ns#a3333> .
+<http://example.org/ns#a3334> <http://example.org/ns#a3334> <http://example.org/ns#a3334> .
+<http://example.org/ns#a3335> <http://example.org/ns#a3335> <http://example.org/ns#a3335> .
+<http://example.org/ns#a3336> <http://example.org/ns#a3336> <http://example.org/ns#a3336> .
+<http://example.org/ns#a3337> <http://example.org/ns#a3337> <http://example.org/ns#a3337> .
+<http://example.org/ns#a3338> <http://example.org/ns#a3338> <http://example.org/ns#a3338> .
+<http://example.org/ns#a3339> <http://example.org/ns#a3339> <http://example.org/ns#a3339> .
+<http://example.org/ns#a3340> <http://example.org/ns#a3340> <http://example.org/ns#a3340> .
+<http://example.org/ns#a3341> <http://example.org/ns#a3341> <http://example.org/ns#a3341> .
+<http://example.org/ns#a3342> <http://example.org/ns#a3342> <http://example.org/ns#a3342> .
+<http://example.org/ns#a3343> <http://example.org/ns#a3343> <http://example.org/ns#a3343> .
+<http://example.org/ns#a3344> <http://example.org/ns#a3344> <http://example.org/ns#a3344> .
+<http://example.org/ns#a3345> <http://example.org/ns#a3345> <http://example.org/ns#a3345> .
+<http://example.org/ns#a3346> <http://example.org/ns#a3346> <http://example.org/ns#a3346> .
+<http://example.org/ns#a3347> <http://example.org/ns#a3347> <http://example.org/ns#a3347> .
+<http://example.org/ns#a3348> <http://example.org/ns#a3348> <http://example.org/ns#a3348> .
+<http://example.org/ns#a3349> <http://example.org/ns#a3349> <http://example.org/ns#a3349> .
+<http://example.org/ns#a3350> <http://example.org/ns#a3350> <http://example.org/ns#a3350> .
+<http://example.org/ns#a3351> <http://example.org/ns#a3351> <http://example.org/ns#a3351> .
+<http://example.org/ns#a3352> <http://example.org/ns#a3352> <http://example.org/ns#a3352> .
+<http://example.org/ns#a3353> <http://example.org/ns#a3353> <http://example.org/ns#a3353> .
+<http://example.org/ns#a3354> <http://example.org/ns#a3354> <http://example.org/ns#a3354> .
+<http://example.org/ns#a3355> <http://example.org/ns#a3355> <http://example.org/ns#a3355> .
+<http://example.org/ns#a3356> <http://example.org/ns#a3356> <http://example.org/ns#a3356> .
+<http://example.org/ns#a3357> <http://example.org/ns#a3357> <http://example.org/ns#a3357> .
+<http://example.org/ns#a3358> <http://example.org/ns#a3358> <http://example.org/ns#a3358> .
+<http://example.org/ns#a3359> <http://example.org/ns#a3359> <http://example.org/ns#a3359> .
+<http://example.org/ns#a3360> <http://example.org/ns#a3360> <http://example.org/ns#a3360> .
+<http://example.org/ns#a3361> <http://example.org/ns#a3361> <http://example.org/ns#a3361> .
+<http://example.org/ns#a3362> <http://example.org/ns#a3362> <http://example.org/ns#a3362> .
+<http://example.org/ns#a3363> <http://example.org/ns#a3363> <http://example.org/ns#a3363> .
+<http://example.org/ns#a3364> <http://example.org/ns#a3364> <http://example.org/ns#a3364> .
+<http://example.org/ns#a3365> <http://example.org/ns#a3365> <http://example.org/ns#a3365> .
+<http://example.org/ns#a3366> <http://example.org/ns#a3366> <http://example.org/ns#a3366> .
+<http://example.org/ns#a3367> <http://example.org/ns#a3367> <http://example.org/ns#a3367> .
+<http://example.org/ns#a3368> <http://example.org/ns#a3368> <http://example.org/ns#a3368> .
+<http://example.org/ns#a3369> <http://example.org/ns#a3369> <http://example.org/ns#a3369> .
+<http://example.org/ns#a3370> <http://example.org/ns#a3370> <http://example.org/ns#a3370> .
+<http://example.org/ns#a3371> <http://example.org/ns#a3371> <http://example.org/ns#a3371> .
+<http://example.org/ns#a3372> <http://example.org/ns#a3372> <http://example.org/ns#a3372> .
+<http://example.org/ns#a3373> <http://example.org/ns#a3373> <http://example.org/ns#a3373> .
+<http://example.org/ns#a3374> <http://example.org/ns#a3374> <http://example.org/ns#a3374> .
+<http://example.org/ns#a3375> <http://example.org/ns#a3375> <http://example.org/ns#a3375> .
+<http://example.org/ns#a3376> <http://example.org/ns#a3376> <http://example.org/ns#a3376> .
+<http://example.org/ns#a3377> <http://example.org/ns#a3377> <http://example.org/ns#a3377> .
+<http://example.org/ns#a3378> <http://example.org/ns#a3378> <http://example.org/ns#a3378> .
+<http://example.org/ns#a3379> <http://example.org/ns#a3379> <http://example.org/ns#a3379> .
+<http://example.org/ns#a3380> <http://example.org/ns#a3380> <http://example.org/ns#a3380> .
+<http://example.org/ns#a3381> <http://example.org/ns#a3381> <http://example.org/ns#a3381> .
+<http://example.org/ns#a3382> <http://example.org/ns#a3382> <http://example.org/ns#a3382> .
+<http://example.org/ns#a3383> <http://example.org/ns#a3383> <http://example.org/ns#a3383> .
+<http://example.org/ns#a3384> <http://example.org/ns#a3384> <http://example.org/ns#a3384> .
+<http://example.org/ns#a3385> <http://example.org/ns#a3385> <http://example.org/ns#a3385> .
+<http://example.org/ns#a3386> <http://example.org/ns#a3386> <http://example.org/ns#a3386> .
+<http://example.org/ns#a3387> <http://example.org/ns#a3387> <http://example.org/ns#a3387> .
+<http://example.org/ns#a3388> <http://example.org/ns#a3388> <http://example.org/ns#a3388> .
+<http://example.org/ns#a3389> <http://example.org/ns#a3389> <http://example.org/ns#a3389> .
+<http://example.org/ns#a3390> <http://example.org/ns#a3390> <http://example.org/ns#a3390> .
+<http://example.org/ns#a3391> <http://example.org/ns#a3391> <http://example.org/ns#a3391> .
+<http://example.org/ns#a3392> <http://example.org/ns#a3392> <http://example.org/ns#a3392> .
+<http://example.org/ns#a3393> <http://example.org/ns#a3393> <http://example.org/ns#a3393> .
+<http://example.org/ns#a3394> <http://example.org/ns#a3394> <http://example.org/ns#a3394> .
+<http://example.org/ns#a3395> <http://example.org/ns#a3395> <http://example.org/ns#a3395> .
+<http://example.org/ns#a3396> <http://example.org/ns#a3396> <http://example.org/ns#a3396> .
+<http://example.org/ns#a3397> <http://example.org/ns#a3397> <http://example.org/ns#a3397> .
+<http://example.org/ns#a3398> <http://example.org/ns#a3398> <http://example.org/ns#a3398> .
+<http://example.org/ns#a3399> <http://example.org/ns#a3399> <http://example.org/ns#a3399> .
+<http://example.org/ns#a3400> <http://example.org/ns#a3400> <http://example.org/ns#a3400> .
+<http://example.org/ns#a3401> <http://example.org/ns#a3401> <http://example.org/ns#a3401> .
+<http://example.org/ns#a3402> <http://example.org/ns#a3402> <http://example.org/ns#a3402> .
+<http://example.org/ns#a3403> <http://example.org/ns#a3403> <http://example.org/ns#a3403> .
+<http://example.org/ns#a3404> <http://example.org/ns#a3404> <http://example.org/ns#a3404> .
+<http://example.org/ns#a3405> <http://example.org/ns#a3405> <http://example.org/ns#a3405> .
+<http://example.org/ns#a3406> <http://example.org/ns#a3406> <http://example.org/ns#a3406> .
+<http://example.org/ns#a3407> <http://example.org/ns#a3407> <http://example.org/ns#a3407> .
+<http://example.org/ns#a3408> <http://example.org/ns#a3408> <http://example.org/ns#a3408> .
+<http://example.org/ns#a3409> <http://example.org/ns#a3409> <http://example.org/ns#a3409> .
+<http://example.org/ns#a3410> <http://example.org/ns#a3410> <http://example.org/ns#a3410> .
+<http://example.org/ns#a3411> <http://example.org/ns#a3411> <http://example.org/ns#a3411> .
+<http://example.org/ns#a3412> <http://example.org/ns#a3412> <http://example.org/ns#a3412> .
+<http://example.org/ns#a3413> <http://example.org/ns#a3413> <http://example.org/ns#a3413> .
+<http://example.org/ns#a3414> <http://example.org/ns#a3414> <http://example.org/ns#a3414> .
+<http://example.org/ns#a3415> <http://example.org/ns#a3415> <http://example.org/ns#a3415> .
+<http://example.org/ns#a3416> <http://example.org/ns#a3416> <http://example.org/ns#a3416> .
+<http://example.org/ns#a3417> <http://example.org/ns#a3417> <http://example.org/ns#a3417> .
+<http://example.org/ns#a3418> <http://example.org/ns#a3418> <http://example.org/ns#a3418> .
+<http://example.org/ns#a3419> <http://example.org/ns#a3419> <http://example.org/ns#a3419> .
+<http://example.org/ns#a3420> <http://example.org/ns#a3420> <http://example.org/ns#a3420> .
+<http://example.org/ns#a3421> <http://example.org/ns#a3421> <http://example.org/ns#a3421> .
+<http://example.org/ns#a3422> <http://example.org/ns#a3422> <http://example.org/ns#a3422> .
+<http://example.org/ns#a3423> <http://example.org/ns#a3423> <http://example.org/ns#a3423> .
+<http://example.org/ns#a3424> <http://example.org/ns#a3424> <http://example.org/ns#a3424> .
+<http://example.org/ns#a3425> <http://example.org/ns#a3425> <http://example.org/ns#a3425> .
+<http://example.org/ns#a3426> <http://example.org/ns#a3426> <http://example.org/ns#a3426> .
+<http://example.org/ns#a3427> <http://example.org/ns#a3427> <http://example.org/ns#a3427> .
+<http://example.org/ns#a3428> <http://example.org/ns#a3428> <http://example.org/ns#a3428> .
+<http://example.org/ns#a3429> <http://example.org/ns#a3429> <http://example.org/ns#a3429> .
+<http://example.org/ns#a3430> <http://example.org/ns#a3430> <http://example.org/ns#a3430> .
+<http://example.org/ns#a3431> <http://example.org/ns#a3431> <http://example.org/ns#a3431> .
+<http://example.org/ns#a3432> <http://example.org/ns#a3432> <http://example.org/ns#a3432> .
+<http://example.org/ns#a3433> <http://example.org/ns#a3433> <http://example.org/ns#a3433> .
+<http://example.org/ns#a3434> <http://example.org/ns#a3434> <http://example.org/ns#a3434> .
+<http://example.org/ns#a3435> <http://example.org/ns#a3435> <http://example.org/ns#a3435> .
+<http://example.org/ns#a3436> <http://example.org/ns#a3436> <http://example.org/ns#a3436> .
+<http://example.org/ns#a3437> <http://example.org/ns#a3437> <http://example.org/ns#a3437> .
+<http://example.org/ns#a3438> <http://example.org/ns#a3438> <http://example.org/ns#a3438> .
+<http://example.org/ns#a3439> <http://example.org/ns#a3439> <http://example.org/ns#a3439> .
+<http://example.org/ns#a3440> <http://example.org/ns#a3440> <http://example.org/ns#a3440> .
+<http://example.org/ns#a3441> <http://example.org/ns#a3441> <http://example.org/ns#a3441> .
+<http://example.org/ns#a3442> <http://example.org/ns#a3442> <http://example.org/ns#a3442> .
+<http://example.org/ns#a3443> <http://example.org/ns#a3443> <http://example.org/ns#a3443> .
+<http://example.org/ns#a3444> <http://example.org/ns#a3444> <http://example.org/ns#a3444> .
+<http://example.org/ns#a3445> <http://example.org/ns#a3445> <http://example.org/ns#a3445> .
+<http://example.org/ns#a3446> <http://example.org/ns#a3446> <http://example.org/ns#a3446> .
+<http://example.org/ns#a3447> <http://example.org/ns#a3447> <http://example.org/ns#a3447> .
+<http://example.org/ns#a3448> <http://example.org/ns#a3448> <http://example.org/ns#a3448> .
+<http://example.org/ns#a3449> <http://example.org/ns#a3449> <http://example.org/ns#a3449> .
+<http://example.org/ns#a3450> <http://example.org/ns#a3450> <http://example.org/ns#a3450> .
+<http://example.org/ns#a3451> <http://example.org/ns#a3451> <http://example.org/ns#a3451> .
+<http://example.org/ns#a3452> <http://example.org/ns#a3452> <http://example.org/ns#a3452> .
+<http://example.org/ns#a3453> <http://example.org/ns#a3453> <http://example.org/ns#a3453> .
+<http://example.org/ns#a3454> <http://example.org/ns#a3454> <http://example.org/ns#a3454> .
+<http://example.org/ns#a3455> <http://example.org/ns#a3455> <http://example.org/ns#a3455> .
+<http://example.org/ns#a3456> <http://example.org/ns#a3456> <http://example.org/ns#a3456> .
+<http://example.org/ns#a3457> <http://example.org/ns#a3457> <http://example.org/ns#a3457> .
+<http://example.org/ns#a3458> <http://example.org/ns#a3458> <http://example.org/ns#a3458> .
+<http://example.org/ns#a3459> <http://example.org/ns#a3459> <http://example.org/ns#a3459> .
+<http://example.org/ns#a3460> <http://example.org/ns#a3460> <http://example.org/ns#a3460> .
+<http://example.org/ns#a3461> <http://example.org/ns#a3461> <http://example.org/ns#a3461> .
+<http://example.org/ns#a3462> <http://example.org/ns#a3462> <http://example.org/ns#a3462> .
+<http://example.org/ns#a3463> <http://example.org/ns#a3463> <http://example.org/ns#a3463> .
+<http://example.org/ns#a3464> <http://example.org/ns#a3464> <http://example.org/ns#a3464> .
+<http://example.org/ns#a3465> <http://example.org/ns#a3465> <http://example.org/ns#a3465> .
+<http://example.org/ns#a3466> <http://example.org/ns#a3466> <http://example.org/ns#a3466> .
+<http://example.org/ns#a3467> <http://example.org/ns#a3467> <http://example.org/ns#a3467> .
+<http://example.org/ns#a3468> <http://example.org/ns#a3468> <http://example.org/ns#a3468> .
+<http://example.org/ns#a3469> <http://example.org/ns#a3469> <http://example.org/ns#a3469> .
+<http://example.org/ns#a3470> <http://example.org/ns#a3470> <http://example.org/ns#a3470> .
+<http://example.org/ns#a3471> <http://example.org/ns#a3471> <http://example.org/ns#a3471> .
+<http://example.org/ns#a3472> <http://example.org/ns#a3472> <http://example.org/ns#a3472> .
+<http://example.org/ns#a3473> <http://example.org/ns#a3473> <http://example.org/ns#a3473> .
+<http://example.org/ns#a3474> <http://example.org/ns#a3474> <http://example.org/ns#a3474> .
+<http://example.org/ns#a3475> <http://example.org/ns#a3475> <http://example.org/ns#a3475> .
+<http://example.org/ns#a3476> <http://example.org/ns#a3476> <http://example.org/ns#a3476> .
+<http://example.org/ns#a3477> <http://example.org/ns#a3477> <http://example.org/ns#a3477> .
+<http://example.org/ns#a3478> <http://example.org/ns#a3478> <http://example.org/ns#a3478> .
+<http://example.org/ns#a3479> <http://example.org/ns#a3479> <http://example.org/ns#a3479> .
+<http://example.org/ns#a3480> <http://example.org/ns#a3480> <http://example.org/ns#a3480> .
+<http://example.org/ns#a3481> <http://example.org/ns#a3481> <http://example.org/ns#a3481> .
+<http://example.org/ns#a3482> <http://example.org/ns#a3482> <http://example.org/ns#a3482> .
+<http://example.org/ns#a3483> <http://example.org/ns#a3483> <http://example.org/ns#a3483> .
+<http://example.org/ns#a3484> <http://example.org/ns#a3484> <http://example.org/ns#a3484> .
+<http://example.org/ns#a3485> <http://example.org/ns#a3485> <http://example.org/ns#a3485> .
+<http://example.org/ns#a3486> <http://example.org/ns#a3486> <http://example.org/ns#a3486> .
+<http://example.org/ns#a3487> <http://example.org/ns#a3487> <http://example.org/ns#a3487> .
+<http://example.org/ns#a3488> <http://example.org/ns#a3488> <http://example.org/ns#a3488> .
+<http://example.org/ns#a3489> <http://example.org/ns#a3489> <http://example.org/ns#a3489> .
+<http://example.org/ns#a3490> <http://example.org/ns#a3490> <http://example.org/ns#a3490> .
+<http://example.org/ns#a3491> <http://example.org/ns#a3491> <http://example.org/ns#a3491> .
+<http://example.org/ns#a3492> <http://example.org/ns#a3492> <http://example.org/ns#a3492> .
+<http://example.org/ns#a3493> <http://example.org/ns#a3493> <http://example.org/ns#a3493> .
+<http://example.org/ns#a3494> <http://example.org/ns#a3494> <http://example.org/ns#a3494> .
+<http://example.org/ns#a3495> <http://example.org/ns#a3495> <http://example.org/ns#a3495> .
+<http://example.org/ns#a3496> <http://example.org/ns#a3496> <http://example.org/ns#a3496> .
+<http://example.org/ns#a3497> <http://example.org/ns#a3497> <http://example.org/ns#a3497> .
+<http://example.org/ns#a3498> <http://example.org/ns#a3498> <http://example.org/ns#a3498> .
+<http://example.org/ns#a3499> <http://example.org/ns#a3499> <http://example.org/ns#a3499> .
+<http://example.org/ns#a3500> <http://example.org/ns#a3500> <http://example.org/ns#a3500> .
+<http://example.org/ns#a3501> <http://example.org/ns#a3501> <http://example.org/ns#a3501> .
+<http://example.org/ns#a3502> <http://example.org/ns#a3502> <http://example.org/ns#a3502> .
+<http://example.org/ns#a3503> <http://example.org/ns#a3503> <http://example.org/ns#a3503> .
+<http://example.org/ns#a3504> <http://example.org/ns#a3504> <http://example.org/ns#a3504> .
+<http://example.org/ns#a3505> <http://example.org/ns#a3505> <http://example.org/ns#a3505> .
+<http://example.org/ns#a3506> <http://example.org/ns#a3506> <http://example.org/ns#a3506> .
+<http://example.org/ns#a3507> <http://example.org/ns#a3507> <http://example.org/ns#a3507> .
+<http://example.org/ns#a3508> <http://example.org/ns#a3508> <http://example.org/ns#a3508> .
+<http://example.org/ns#a3509> <http://example.org/ns#a3509> <http://example.org/ns#a3509> .
+<http://example.org/ns#a3510> <http://example.org/ns#a3510> <http://example.org/ns#a3510> .
+<http://example.org/ns#a3511> <http://example.org/ns#a3511> <http://example.org/ns#a3511> .
+<http://example.org/ns#a3512> <http://example.org/ns#a3512> <http://example.org/ns#a3512> .
+<http://example.org/ns#a3513> <http://example.org/ns#a3513> <http://example.org/ns#a3513> .
+<http://example.org/ns#a3514> <http://example.org/ns#a3514> <http://example.org/ns#a3514> .
+<http://example.org/ns#a3515> <http://example.org/ns#a3515> <http://example.org/ns#a3515> .
+<http://example.org/ns#a3516> <http://example.org/ns#a3516> <http://example.org/ns#a3516> .
+<http://example.org/ns#a3517> <http://example.org/ns#a3517> <http://example.org/ns#a3517> .
+<http://example.org/ns#a3518> <http://example.org/ns#a3518> <http://example.org/ns#a3518> .
+<http://example.org/ns#a3519> <http://example.org/ns#a3519> <http://example.org/ns#a3519> .
+<http://example.org/ns#a3520> <http://example.org/ns#a3520> <http://example.org/ns#a3520> .
+<http://example.org/ns#a3521> <http://example.org/ns#a3521> <http://example.org/ns#a3521> .
+<http://example.org/ns#a3522> <http://example.org/ns#a3522> <http://example.org/ns#a3522> .
+<http://example.org/ns#a3523> <http://example.org/ns#a3523> <http://example.org/ns#a3523> .
+<http://example.org/ns#a3524> <http://example.org/ns#a3524> <http://example.org/ns#a3524> .
+<http://example.org/ns#a3525> <http://example.org/ns#a3525> <http://example.org/ns#a3525> .
+<http://example.org/ns#a3526> <http://example.org/ns#a3526> <http://example.org/ns#a3526> .
+<http://example.org/ns#a3527> <http://example.org/ns#a3527> <http://example.org/ns#a3527> .
+<http://example.org/ns#a3528> <http://example.org/ns#a3528> <http://example.org/ns#a3528> .
+<http://example.org/ns#a3529> <http://example.org/ns#a3529> <http://example.org/ns#a3529> .
+<http://example.org/ns#a3530> <http://example.org/ns#a3530> <http://example.org/ns#a3530> .
+<http://example.org/ns#a3531> <http://example.org/ns#a3531> <http://example.org/ns#a3531> .
+<http://example.org/ns#a3532> <http://example.org/ns#a3532> <http://example.org/ns#a3532> .
+<http://example.org/ns#a3533> <http://example.org/ns#a3533> <http://example.org/ns#a3533> .
+<http://example.org/ns#a3534> <http://example.org/ns#a3534> <http://example.org/ns#a3534> .
+<http://example.org/ns#a3535> <http://example.org/ns#a3535> <http://example.org/ns#a3535> .
+<http://example.org/ns#a3536> <http://example.org/ns#a3536> <http://example.org/ns#a3536> .
+<http://example.org/ns#a3537> <http://example.org/ns#a3537> <http://example.org/ns#a3537> .
+<http://example.org/ns#a3538> <http://example.org/ns#a3538> <http://example.org/ns#a3538> .
+<http://example.org/ns#a3539> <http://example.org/ns#a3539> <http://example.org/ns#a3539> .
+<http://example.org/ns#a3540> <http://example.org/ns#a3540> <http://example.org/ns#a3540> .
+<http://example.org/ns#a3541> <http://example.org/ns#a3541> <http://example.org/ns#a3541> .
+<http://example.org/ns#a3542> <http://example.org/ns#a3542> <http://example.org/ns#a3542> .
+<http://example.org/ns#a3543> <http://example.org/ns#a3543> <http://example.org/ns#a3543> .
+<http://example.org/ns#a3544> <http://example.org/ns#a3544> <http://example.org/ns#a3544> .
+<http://example.org/ns#a3545> <http://example.org/ns#a3545> <http://example.org/ns#a3545> .
+<http://example.org/ns#a3546> <http://example.org/ns#a3546> <http://example.org/ns#a3546> .
+<http://example.org/ns#a3547> <http://example.org/ns#a3547> <http://example.org/ns#a3547> .
+<http://example.org/ns#a3548> <http://example.org/ns#a3548> <http://example.org/ns#a3548> .
+<http://example.org/ns#a3549> <http://example.org/ns#a3549> <http://example.org/ns#a3549> .
+<http://example.org/ns#a3550> <http://example.org/ns#a3550> <http://example.org/ns#a3550> .
+<http://example.org/ns#a3551> <http://example.org/ns#a3551> <http://example.org/ns#a3551> .
+<http://example.org/ns#a3552> <http://example.org/ns#a3552> <http://example.org/ns#a3552> .
+<http://example.org/ns#a3553> <http://example.org/ns#a3553> <http://example.org/ns#a3553> .
+<http://example.org/ns#a3554> <http://example.org/ns#a3554> <http://example.org/ns#a3554> .
+<http://example.org/ns#a3555> <http://example.org/ns#a3555> <http://example.org/ns#a3555> .
+<http://example.org/ns#a3556> <http://example.org/ns#a3556> <http://example.org/ns#a3556> .
+<http://example.org/ns#a3557> <http://example.org/ns#a3557> <http://example.org/ns#a3557> .
+<http://example.org/ns#a3558> <http://example.org/ns#a3558> <http://example.org/ns#a3558> .
+<http://example.org/ns#a3559> <http://example.org/ns#a3559> <http://example.org/ns#a3559> .
+<http://example.org/ns#a3560> <http://example.org/ns#a3560> <http://example.org/ns#a3560> .
+<http://example.org/ns#a3561> <http://example.org/ns#a3561> <http://example.org/ns#a3561> .
+<http://example.org/ns#a3562> <http://example.org/ns#a3562> <http://example.org/ns#a3562> .
+<http://example.org/ns#a3563> <http://example.org/ns#a3563> <http://example.org/ns#a3563> .
+<http://example.org/ns#a3564> <http://example.org/ns#a3564> <http://example.org/ns#a3564> .
+<http://example.org/ns#a3565> <http://example.org/ns#a3565> <http://example.org/ns#a3565> .
+<http://example.org/ns#a3566> <http://example.org/ns#a3566> <http://example.org/ns#a3566> .
+<http://example.org/ns#a3567> <http://example.org/ns#a3567> <http://example.org/ns#a3567> .
+<http://example.org/ns#a3568> <http://example.org/ns#a3568> <http://example.org/ns#a3568> .
+<http://example.org/ns#a3569> <http://example.org/ns#a3569> <http://example.org/ns#a3569> .
+<http://example.org/ns#a3570> <http://example.org/ns#a3570> <http://example.org/ns#a3570> .
+<http://example.org/ns#a3571> <http://example.org/ns#a3571> <http://example.org/ns#a3571> .
+<http://example.org/ns#a3572> <http://example.org/ns#a3572> <http://example.org/ns#a3572> .
+<http://example.org/ns#a3573> <http://example.org/ns#a3573> <http://example.org/ns#a3573> .
+<http://example.org/ns#a3574> <http://example.org/ns#a3574> <http://example.org/ns#a3574> .
+<http://example.org/ns#a3575> <http://example.org/ns#a3575> <http://example.org/ns#a3575> .
+<http://example.org/ns#a3576> <http://example.org/ns#a3576> <http://example.org/ns#a3576> .
+<http://example.org/ns#a3577> <http://example.org/ns#a3577> <http://example.org/ns#a3577> .
+<http://example.org/ns#a3578> <http://example.org/ns#a3578> <http://example.org/ns#a3578> .
+<http://example.org/ns#a3579> <http://example.org/ns#a3579> <http://example.org/ns#a3579> .
+<http://example.org/ns#a3580> <http://example.org/ns#a3580> <http://example.org/ns#a3580> .
+<http://example.org/ns#a3581> <http://example.org/ns#a3581> <http://example.org/ns#a3581> .
+<http://example.org/ns#a3582> <http://example.org/ns#a3582> <http://example.org/ns#a3582> .
+<http://example.org/ns#a3583> <http://example.org/ns#a3583> <http://example.org/ns#a3583> .
+<http://example.org/ns#a3584> <http://example.org/ns#a3584> <http://example.org/ns#a3584> .
+<http://example.org/ns#a3585> <http://example.org/ns#a3585> <http://example.org/ns#a3585> .
+<http://example.org/ns#a3586> <http://example.org/ns#a3586> <http://example.org/ns#a3586> .
+<http://example.org/ns#a3587> <http://example.org/ns#a3587> <http://example.org/ns#a3587> .
+<http://example.org/ns#a3588> <http://example.org/ns#a3588> <http://example.org/ns#a3588> .
+<http://example.org/ns#a3589> <http://example.org/ns#a3589> <http://example.org/ns#a3589> .
+<http://example.org/ns#a3590> <http://example.org/ns#a3590> <http://example.org/ns#a3590> .
+<http://example.org/ns#a3591> <http://example.org/ns#a3591> <http://example.org/ns#a3591> .
+<http://example.org/ns#a3592> <http://example.org/ns#a3592> <http://example.org/ns#a3592> .
+<http://example.org/ns#a3593> <http://example.org/ns#a3593> <http://example.org/ns#a3593> .
+<http://example.org/ns#a3594> <http://example.org/ns#a3594> <http://example.org/ns#a3594> .
+<http://example.org/ns#a3595> <http://example.org/ns#a3595> <http://example.org/ns#a3595> .
+<http://example.org/ns#a3596> <http://example.org/ns#a3596> <http://example.org/ns#a3596> .
+<http://example.org/ns#a3597> <http://example.org/ns#a3597> <http://example.org/ns#a3597> .
+<http://example.org/ns#a3598> <http://example.org/ns#a3598> <http://example.org/ns#a3598> .
+<http://example.org/ns#a3599> <http://example.org/ns#a3599> <http://example.org/ns#a3599> .
+<http://example.org/ns#a3600> <http://example.org/ns#a3600> <http://example.org/ns#a3600> .
+<http://example.org/ns#a3601> <http://example.org/ns#a3601> <http://example.org/ns#a3601> .
+<http://example.org/ns#a3602> <http://example.org/ns#a3602> <http://example.org/ns#a3602> .
+<http://example.org/ns#a3603> <http://example.org/ns#a3603> <http://example.org/ns#a3603> .
+<http://example.org/ns#a3604> <http://example.org/ns#a3604> <http://example.org/ns#a3604> .
+<http://example.org/ns#a3605> <http://example.org/ns#a3605> <http://example.org/ns#a3605> .
+<http://example.org/ns#a3606> <http://example.org/ns#a3606> <http://example.org/ns#a3606> .
+<http://example.org/ns#a3607> <http://example.org/ns#a3607> <http://example.org/ns#a3607> .
+<http://example.org/ns#a3608> <http://example.org/ns#a3608> <http://example.org/ns#a3608> .
+<http://example.org/ns#a3609> <http://example.org/ns#a3609> <http://example.org/ns#a3609> .
+<http://example.org/ns#a3610> <http://example.org/ns#a3610> <http://example.org/ns#a3610> .
+<http://example.org/ns#a3611> <http://example.org/ns#a3611> <http://example.org/ns#a3611> .
+<http://example.org/ns#a3612> <http://example.org/ns#a3612> <http://example.org/ns#a3612> .
+<http://example.org/ns#a3613> <http://example.org/ns#a3613> <http://example.org/ns#a3613> .
+<http://example.org/ns#a3614> <http://example.org/ns#a3614> <http://example.org/ns#a3614> .
+<http://example.org/ns#a3615> <http://example.org/ns#a3615> <http://example.org/ns#a3615> .
+<http://example.org/ns#a3616> <http://example.org/ns#a3616> <http://example.org/ns#a3616> .
+<http://example.org/ns#a3617> <http://example.org/ns#a3617> <http://example.org/ns#a3617> .
+<http://example.org/ns#a3618> <http://example.org/ns#a3618> <http://example.org/ns#a3618> .
+<http://example.org/ns#a3619> <http://example.org/ns#a3619> <http://example.org/ns#a3619> .
+<http://example.org/ns#a3620> <http://example.org/ns#a3620> <http://example.org/ns#a3620> .
+<http://example.org/ns#a3621> <http://example.org/ns#a3621> <http://example.org/ns#a3621> .
+<http://example.org/ns#a3622> <http://example.org/ns#a3622> <http://example.org/ns#a3622> .
+<http://example.org/ns#a3623> <http://example.org/ns#a3623> <http://example.org/ns#a3623> .
+<http://example.org/ns#a3624> <http://example.org/ns#a3624> <http://example.org/ns#a3624> .
+<http://example.org/ns#a3625> <http://example.org/ns#a3625> <http://example.org/ns#a3625> .
+<http://example.org/ns#a3626> <http://example.org/ns#a3626> <http://example.org/ns#a3626> .
+<http://example.org/ns#a3627> <http://example.org/ns#a3627> <http://example.org/ns#a3627> .
+<http://example.org/ns#a3628> <http://example.org/ns#a3628> <http://example.org/ns#a3628> .
+<http://example.org/ns#a3629> <http://example.org/ns#a3629> <http://example.org/ns#a3629> .
+<http://example.org/ns#a3630> <http://example.org/ns#a3630> <http://example.org/ns#a3630> .
+<http://example.org/ns#a3631> <http://example.org/ns#a3631> <http://example.org/ns#a3631> .
+<http://example.org/ns#a3632> <http://example.org/ns#a3632> <http://example.org/ns#a3632> .
+<http://example.org/ns#a3633> <http://example.org/ns#a3633> <http://example.org/ns#a3633> .
+<http://example.org/ns#a3634> <http://example.org/ns#a3634> <http://example.org/ns#a3634> .
+<http://example.org/ns#a3635> <http://example.org/ns#a3635> <http://example.org/ns#a3635> .
+<http://example.org/ns#a3636> <http://example.org/ns#a3636> <http://example.org/ns#a3636> .
+<http://example.org/ns#a3637> <http://example.org/ns#a3637> <http://example.org/ns#a3637> .
+<http://example.org/ns#a3638> <http://example.org/ns#a3638> <http://example.org/ns#a3638> .
+<http://example.org/ns#a3639> <http://example.org/ns#a3639> <http://example.org/ns#a3639> .
+<http://example.org/ns#a3640> <http://example.org/ns#a3640> <http://example.org/ns#a3640> .
+<http://example.org/ns#a3641> <http://example.org/ns#a3641> <http://example.org/ns#a3641> .
+<http://example.org/ns#a3642> <http://example.org/ns#a3642> <http://example.org/ns#a3642> .
+<http://example.org/ns#a3643> <http://example.org/ns#a3643> <http://example.org/ns#a3643> .
+<http://example.org/ns#a3644> <http://example.org/ns#a3644> <http://example.org/ns#a3644> .
+<http://example.org/ns#a3645> <http://example.org/ns#a3645> <http://example.org/ns#a3645> .
+<http://example.org/ns#a3646> <http://example.org/ns#a3646> <http://example.org/ns#a3646> .
+<http://example.org/ns#a3647> <http://example.org/ns#a3647> <http://example.org/ns#a3647> .
+<http://example.org/ns#a3648> <http://example.org/ns#a3648> <http://example.org/ns#a3648> .
+<http://example.org/ns#a3649> <http://example.org/ns#a3649> <http://example.org/ns#a3649> .
+<http://example.org/ns#a3650> <http://example.org/ns#a3650> <http://example.org/ns#a3650> .
+<http://example.org/ns#a3651> <http://example.org/ns#a3651> <http://example.org/ns#a3651> .
+<http://example.org/ns#a3652> <http://example.org/ns#a3652> <http://example.org/ns#a3652> .
+<http://example.org/ns#a3653> <http://example.org/ns#a3653> <http://example.org/ns#a3653> .
+<http://example.org/ns#a3654> <http://example.org/ns#a3654> <http://example.org/ns#a3654> .
+<http://example.org/ns#a3655> <http://example.org/ns#a3655> <http://example.org/ns#a3655> .
+<http://example.org/ns#a3656> <http://example.org/ns#a3656> <http://example.org/ns#a3656> .
+<http://example.org/ns#a3657> <http://example.org/ns#a3657> <http://example.org/ns#a3657> .
+<http://example.org/ns#a3658> <http://example.org/ns#a3658> <http://example.org/ns#a3658> .
+<http://example.org/ns#a3659> <http://example.org/ns#a3659> <http://example.org/ns#a3659> .
+<http://example.org/ns#a3660> <http://example.org/ns#a3660> <http://example.org/ns#a3660> .
+<http://example.org/ns#a3661> <http://example.org/ns#a3661> <http://example.org/ns#a3661> .
+<http://example.org/ns#a3662> <http://example.org/ns#a3662> <http://example.org/ns#a3662> .
+<http://example.org/ns#a3663> <http://example.org/ns#a3663> <http://example.org/ns#a3663> .
+<http://example.org/ns#a3664> <http://example.org/ns#a3664> <http://example.org/ns#a3664> .
+<http://example.org/ns#a3665> <http://example.org/ns#a3665> <http://example.org/ns#a3665> .
+<http://example.org/ns#a3666> <http://example.org/ns#a3666> <http://example.org/ns#a3666> .
+<http://example.org/ns#a3667> <http://example.org/ns#a3667> <http://example.org/ns#a3667> .
+<http://example.org/ns#a3668> <http://example.org/ns#a3668> <http://example.org/ns#a3668> .
+<http://example.org/ns#a3669> <http://example.org/ns#a3669> <http://example.org/ns#a3669> .
+<http://example.org/ns#a3670> <http://example.org/ns#a3670> <http://example.org/ns#a3670> .
+<http://example.org/ns#a3671> <http://example.org/ns#a3671> <http://example.org/ns#a3671> .
+<http://example.org/ns#a3672> <http://example.org/ns#a3672> <http://example.org/ns#a3672> .
+<http://example.org/ns#a3673> <http://example.org/ns#a3673> <http://example.org/ns#a3673> .
+<http://example.org/ns#a3674> <http://example.org/ns#a3674> <http://example.org/ns#a3674> .
+<http://example.org/ns#a3675> <http://example.org/ns#a3675> <http://example.org/ns#a3675> .
+<http://example.org/ns#a3676> <http://example.org/ns#a3676> <http://example.org/ns#a3676> .
+<http://example.org/ns#a3677> <http://example.org/ns#a3677> <http://example.org/ns#a3677> .
+<http://example.org/ns#a3678> <http://example.org/ns#a3678> <http://example.org/ns#a3678> .
+<http://example.org/ns#a3679> <http://example.org/ns#a3679> <http://example.org/ns#a3679> .
+<http://example.org/ns#a3680> <http://example.org/ns#a3680> <http://example.org/ns#a3680> .
+<http://example.org/ns#a3681> <http://example.org/ns#a3681> <http://example.org/ns#a3681> .
+<http://example.org/ns#a3682> <http://example.org/ns#a3682> <http://example.org/ns#a3682> .
+<http://example.org/ns#a3683> <http://example.org/ns#a3683> <http://example.org/ns#a3683> .
+<http://example.org/ns#a3684> <http://example.org/ns#a3684> <http://example.org/ns#a3684> .
+<http://example.org/ns#a3685> <http://example.org/ns#a3685> <http://example.org/ns#a3685> .
+<http://example.org/ns#a3686> <http://example.org/ns#a3686> <http://example.org/ns#a3686> .
+<http://example.org/ns#a3687> <http://example.org/ns#a3687> <http://example.org/ns#a3687> .
+<http://example.org/ns#a3688> <http://example.org/ns#a3688> <http://example.org/ns#a3688> .
+<http://example.org/ns#a3689> <http://example.org/ns#a3689> <http://example.org/ns#a3689> .
+<http://example.org/ns#a3690> <http://example.org/ns#a3690> <http://example.org/ns#a3690> .
+<http://example.org/ns#a3691> <http://example.org/ns#a3691> <http://example.org/ns#a3691> .
+<http://example.org/ns#a3692> <http://example.org/ns#a3692> <http://example.org/ns#a3692> .
+<http://example.org/ns#a3693> <http://example.org/ns#a3693> <http://example.org/ns#a3693> .
+<http://example.org/ns#a3694> <http://example.org/ns#a3694> <http://example.org/ns#a3694> .
+<http://example.org/ns#a3695> <http://example.org/ns#a3695> <http://example.org/ns#a3695> .
+<http://example.org/ns#a3696> <http://example.org/ns#a3696> <http://example.org/ns#a3696> .
+<http://example.org/ns#a3697> <http://example.org/ns#a3697> <http://example.org/ns#a3697> .
+<http://example.org/ns#a3698> <http://example.org/ns#a3698> <http://example.org/ns#a3698> .
+<http://example.org/ns#a3699> <http://example.org/ns#a3699> <http://example.org/ns#a3699> .
+<http://example.org/ns#a3700> <http://example.org/ns#a3700> <http://example.org/ns#a3700> .
+<http://example.org/ns#a3701> <http://example.org/ns#a3701> <http://example.org/ns#a3701> .
+<http://example.org/ns#a3702> <http://example.org/ns#a3702> <http://example.org/ns#a3702> .
+<http://example.org/ns#a3703> <http://example.org/ns#a3703> <http://example.org/ns#a3703> .
+<http://example.org/ns#a3704> <http://example.org/ns#a3704> <http://example.org/ns#a3704> .
+<http://example.org/ns#a3705> <http://example.org/ns#a3705> <http://example.org/ns#a3705> .
+<http://example.org/ns#a3706> <http://example.org/ns#a3706> <http://example.org/ns#a3706> .
+<http://example.org/ns#a3707> <http://example.org/ns#a3707> <http://example.org/ns#a3707> .
+<http://example.org/ns#a3708> <http://example.org/ns#a3708> <http://example.org/ns#a3708> .
+<http://example.org/ns#a3709> <http://example.org/ns#a3709> <http://example.org/ns#a3709> .
+<http://example.org/ns#a3710> <http://example.org/ns#a3710> <http://example.org/ns#a3710> .
+<http://example.org/ns#a3711> <http://example.org/ns#a3711> <http://example.org/ns#a3711> .
+<http://example.org/ns#a3712> <http://example.org/ns#a3712> <http://example.org/ns#a3712> .
+<http://example.org/ns#a3713> <http://example.org/ns#a3713> <http://example.org/ns#a3713> .
+<http://example.org/ns#a3714> <http://example.org/ns#a3714> <http://example.org/ns#a3714> .
+<http://example.org/ns#a3715> <http://example.org/ns#a3715> <http://example.org/ns#a3715> .
+<http://example.org/ns#a3716> <http://example.org/ns#a3716> <http://example.org/ns#a3716> .
+<http://example.org/ns#a3717> <http://example.org/ns#a3717> <http://example.org/ns#a3717> .
+<http://example.org/ns#a3718> <http://example.org/ns#a3718> <http://example.org/ns#a3718> .
+<http://example.org/ns#a3719> <http://example.org/ns#a3719> <http://example.org/ns#a3719> .
+<http://example.org/ns#a3720> <http://example.org/ns#a3720> <http://example.org/ns#a3720> .
+<http://example.org/ns#a3721> <http://example.org/ns#a3721> <http://example.org/ns#a3721> .
+<http://example.org/ns#a3722> <http://example.org/ns#a3722> <http://example.org/ns#a3722> .
+<http://example.org/ns#a3723> <http://example.org/ns#a3723> <http://example.org/ns#a3723> .
+<http://example.org/ns#a3724> <http://example.org/ns#a3724> <http://example.org/ns#a3724> .
+<http://example.org/ns#a3725> <http://example.org/ns#a3725> <http://example.org/ns#a3725> .
+<http://example.org/ns#a3726> <http://example.org/ns#a3726> <http://example.org/ns#a3726> .
+<http://example.org/ns#a3727> <http://example.org/ns#a3727> <http://example.org/ns#a3727> .
+<http://example.org/ns#a3728> <http://example.org/ns#a3728> <http://example.org/ns#a3728> .
+<http://example.org/ns#a3729> <http://example.org/ns#a3729> <http://example.org/ns#a3729> .
+<http://example.org/ns#a3730> <http://example.org/ns#a3730> <http://example.org/ns#a3730> .
+<http://example.org/ns#a3731> <http://example.org/ns#a3731> <http://example.org/ns#a3731> .
+<http://example.org/ns#a3732> <http://example.org/ns#a3732> <http://example.org/ns#a3732> .
+<http://example.org/ns#a3733> <http://example.org/ns#a3733> <http://example.org/ns#a3733> .
+<http://example.org/ns#a3734> <http://example.org/ns#a3734> <http://example.org/ns#a3734> .
+<http://example.org/ns#a3735> <http://example.org/ns#a3735> <http://example.org/ns#a3735> .
+<http://example.org/ns#a3736> <http://example.org/ns#a3736> <http://example.org/ns#a3736> .
+<http://example.org/ns#a3737> <http://example.org/ns#a3737> <http://example.org/ns#a3737> .
+<http://example.org/ns#a3738> <http://example.org/ns#a3738> <http://example.org/ns#a3738> .
+<http://example.org/ns#a3739> <http://example.org/ns#a3739> <http://example.org/ns#a3739> .
+<http://example.org/ns#a3740> <http://example.org/ns#a3740> <http://example.org/ns#a3740> .
+<http://example.org/ns#a3741> <http://example.org/ns#a3741> <http://example.org/ns#a3741> .
+<http://example.org/ns#a3742> <http://example.org/ns#a3742> <http://example.org/ns#a3742> .
+<http://example.org/ns#a3743> <http://example.org/ns#a3743> <http://example.org/ns#a3743> .
+<http://example.org/ns#a3744> <http://example.org/ns#a3744> <http://example.org/ns#a3744> .
+<http://example.org/ns#a3745> <http://example.org/ns#a3745> <http://example.org/ns#a3745> .
+<http://example.org/ns#a3746> <http://example.org/ns#a3746> <http://example.org/ns#a3746> .
+<http://example.org/ns#a3747> <http://example.org/ns#a3747> <http://example.org/ns#a3747> .
+<http://example.org/ns#a3748> <http://example.org/ns#a3748> <http://example.org/ns#a3748> .
+<http://example.org/ns#a3749> <http://example.org/ns#a3749> <http://example.org/ns#a3749> .
+<http://example.org/ns#a3750> <http://example.org/ns#a3750> <http://example.org/ns#a3750> .
+<http://example.org/ns#a3751> <http://example.org/ns#a3751> <http://example.org/ns#a3751> .
+<http://example.org/ns#a3752> <http://example.org/ns#a3752> <http://example.org/ns#a3752> .
+<http://example.org/ns#a3753> <http://example.org/ns#a3753> <http://example.org/ns#a3753> .
+<http://example.org/ns#a3754> <http://example.org/ns#a3754> <http://example.org/ns#a3754> .
+<http://example.org/ns#a3755> <http://example.org/ns#a3755> <http://example.org/ns#a3755> .
+<http://example.org/ns#a3756> <http://example.org/ns#a3756> <http://example.org/ns#a3756> .
+<http://example.org/ns#a3757> <http://example.org/ns#a3757> <http://example.org/ns#a3757> .
+<http://example.org/ns#a3758> <http://example.org/ns#a3758> <http://example.org/ns#a3758> .
+<http://example.org/ns#a3759> <http://example.org/ns#a3759> <http://example.org/ns#a3759> .
+<http://example.org/ns#a3760> <http://example.org/ns#a3760> <http://example.org/ns#a3760> .
+<http://example.org/ns#a3761> <http://example.org/ns#a3761> <http://example.org/ns#a3761> .
+<http://example.org/ns#a3762> <http://example.org/ns#a3762> <http://example.org/ns#a3762> .
+<http://example.org/ns#a3763> <http://example.org/ns#a3763> <http://example.org/ns#a3763> .
+<http://example.org/ns#a3764> <http://example.org/ns#a3764> <http://example.org/ns#a3764> .
+<http://example.org/ns#a3765> <http://example.org/ns#a3765> <http://example.org/ns#a3765> .
+<http://example.org/ns#a3766> <http://example.org/ns#a3766> <http://example.org/ns#a3766> .
+<http://example.org/ns#a3767> <http://example.org/ns#a3767> <http://example.org/ns#a3767> .
+<http://example.org/ns#a3768> <http://example.org/ns#a3768> <http://example.org/ns#a3768> .
+<http://example.org/ns#a3769> <http://example.org/ns#a3769> <http://example.org/ns#a3769> .
+<http://example.org/ns#a3770> <http://example.org/ns#a3770> <http://example.org/ns#a3770> .
+<http://example.org/ns#a3771> <http://example.org/ns#a3771> <http://example.org/ns#a3771> .
+<http://example.org/ns#a3772> <http://example.org/ns#a3772> <http://example.org/ns#a3772> .
+<http://example.org/ns#a3773> <http://example.org/ns#a3773> <http://example.org/ns#a3773> .
+<http://example.org/ns#a3774> <http://example.org/ns#a3774> <http://example.org/ns#a3774> .
+<http://example.org/ns#a3775> <http://example.org/ns#a3775> <http://example.org/ns#a3775> .
+<http://example.org/ns#a3776> <http://example.org/ns#a3776> <http://example.org/ns#a3776> .
+<http://example.org/ns#a3777> <http://example.org/ns#a3777> <http://example.org/ns#a3777> .
+<http://example.org/ns#a3778> <http://example.org/ns#a3778> <http://example.org/ns#a3778> .
+<http://example.org/ns#a3779> <http://example.org/ns#a3779> <http://example.org/ns#a3779> .
+<http://example.org/ns#a3780> <http://example.org/ns#a3780> <http://example.org/ns#a3780> .
+<http://example.org/ns#a3781> <http://example.org/ns#a3781> <http://example.org/ns#a3781> .
+<http://example.org/ns#a3782> <http://example.org/ns#a3782> <http://example.org/ns#a3782> .
+<http://example.org/ns#a3783> <http://example.org/ns#a3783> <http://example.org/ns#a3783> .
+<http://example.org/ns#a3784> <http://example.org/ns#a3784> <http://example.org/ns#a3784> .
+<http://example.org/ns#a3785> <http://example.org/ns#a3785> <http://example.org/ns#a3785> .
+<http://example.org/ns#a3786> <http://example.org/ns#a3786> <http://example.org/ns#a3786> .
+<http://example.org/ns#a3787> <http://example.org/ns#a3787> <http://example.org/ns#a3787> .
+<http://example.org/ns#a3788> <http://example.org/ns#a3788> <http://example.org/ns#a3788> .
+<http://example.org/ns#a3789> <http://example.org/ns#a3789> <http://example.org/ns#a3789> .
+<http://example.org/ns#a3790> <http://example.org/ns#a3790> <http://example.org/ns#a3790> .
+<http://example.org/ns#a3791> <http://example.org/ns#a3791> <http://example.org/ns#a3791> .
+<http://example.org/ns#a3792> <http://example.org/ns#a3792> <http://example.org/ns#a3792> .
+<http://example.org/ns#a3793> <http://example.org/ns#a3793> <http://example.org/ns#a3793> .
+<http://example.org/ns#a3794> <http://example.org/ns#a3794> <http://example.org/ns#a3794> .
+<http://example.org/ns#a3795> <http://example.org/ns#a3795> <http://example.org/ns#a3795> .
+<http://example.org/ns#a3796> <http://example.org/ns#a3796> <http://example.org/ns#a3796> .
+<http://example.org/ns#a3797> <http://example.org/ns#a3797> <http://example.org/ns#a3797> .
+<http://example.org/ns#a3798> <http://example.org/ns#a3798> <http://example.org/ns#a3798> .
+<http://example.org/ns#a3799> <http://example.org/ns#a3799> <http://example.org/ns#a3799> .
+<http://example.org/ns#a3800> <http://example.org/ns#a3800> <http://example.org/ns#a3800> .
+<http://example.org/ns#a3801> <http://example.org/ns#a3801> <http://example.org/ns#a3801> .
+<http://example.org/ns#a3802> <http://example.org/ns#a3802> <http://example.org/ns#a3802> .
+<http://example.org/ns#a3803> <http://example.org/ns#a3803> <http://example.org/ns#a3803> .
+<http://example.org/ns#a3804> <http://example.org/ns#a3804> <http://example.org/ns#a3804> .
+<http://example.org/ns#a3805> <http://example.org/ns#a3805> <http://example.org/ns#a3805> .
+<http://example.org/ns#a3806> <http://example.org/ns#a3806> <http://example.org/ns#a3806> .
+<http://example.org/ns#a3807> <http://example.org/ns#a3807> <http://example.org/ns#a3807> .
+<http://example.org/ns#a3808> <http://example.org/ns#a3808> <http://example.org/ns#a3808> .
+<http://example.org/ns#a3809> <http://example.org/ns#a3809> <http://example.org/ns#a3809> .
+<http://example.org/ns#a3810> <http://example.org/ns#a3810> <http://example.org/ns#a3810> .
+<http://example.org/ns#a3811> <http://example.org/ns#a3811> <http://example.org/ns#a3811> .
+<http://example.org/ns#a3812> <http://example.org/ns#a3812> <http://example.org/ns#a3812> .
+<http://example.org/ns#a3813> <http://example.org/ns#a3813> <http://example.org/ns#a3813> .
+<http://example.org/ns#a3814> <http://example.org/ns#a3814> <http://example.org/ns#a3814> .
+<http://example.org/ns#a3815> <http://example.org/ns#a3815> <http://example.org/ns#a3815> .
+<http://example.org/ns#a3816> <http://example.org/ns#a3816> <http://example.org/ns#a3816> .
+<http://example.org/ns#a3817> <http://example.org/ns#a3817> <http://example.org/ns#a3817> .
+<http://example.org/ns#a3818> <http://example.org/ns#a3818> <http://example.org/ns#a3818> .
+<http://example.org/ns#a3819> <http://example.org/ns#a3819> <http://example.org/ns#a3819> .
+<http://example.org/ns#a3820> <http://example.org/ns#a3820> <http://example.org/ns#a3820> .
+<http://example.org/ns#a3821> <http://example.org/ns#a3821> <http://example.org/ns#a3821> .
+<http://example.org/ns#a3822> <http://example.org/ns#a3822> <http://example.org/ns#a3822> .
+<http://example.org/ns#a3823> <http://example.org/ns#a3823> <http://example.org/ns#a3823> .
+<http://example.org/ns#a3824> <http://example.org/ns#a3824> <http://example.org/ns#a3824> .
+<http://example.org/ns#a3825> <http://example.org/ns#a3825> <http://example.org/ns#a3825> .
+<http://example.org/ns#a3826> <http://example.org/ns#a3826> <http://example.org/ns#a3826> .
+<http://example.org/ns#a3827> <http://example.org/ns#a3827> <http://example.org/ns#a3827> .
+<http://example.org/ns#a3828> <http://example.org/ns#a3828> <http://example.org/ns#a3828> .
+<http://example.org/ns#a3829> <http://example.org/ns#a3829> <http://example.org/ns#a3829> .
+<http://example.org/ns#a3830> <http://example.org/ns#a3830> <http://example.org/ns#a3830> .
+<http://example.org/ns#a3831> <http://example.org/ns#a3831> <http://example.org/ns#a3831> .
+<http://example.org/ns#a3832> <http://example.org/ns#a3832> <http://example.org/ns#a3832> .
+<http://example.org/ns#a3833> <http://example.org/ns#a3833> <http://example.org/ns#a3833> .
+<http://example.org/ns#a3834> <http://example.org/ns#a3834> <http://example.org/ns#a3834> .
+<http://example.org/ns#a3835> <http://example.org/ns#a3835> <http://example.org/ns#a3835> .
+<http://example.org/ns#a3836> <http://example.org/ns#a3836> <http://example.org/ns#a3836> .
+<http://example.org/ns#a3837> <http://example.org/ns#a3837> <http://example.org/ns#a3837> .
+<http://example.org/ns#a3838> <http://example.org/ns#a3838> <http://example.org/ns#a3838> .
+<http://example.org/ns#a3839> <http://example.org/ns#a3839> <http://example.org/ns#a3839> .
+<http://example.org/ns#a3840> <http://example.org/ns#a3840> <http://example.org/ns#a3840> .
+<http://example.org/ns#a3841> <http://example.org/ns#a3841> <http://example.org/ns#a3841> .
+<http://example.org/ns#a3842> <http://example.org/ns#a3842> <http://example.org/ns#a3842> .
+<http://example.org/ns#a3843> <http://example.org/ns#a3843> <http://example.org/ns#a3843> .
+<http://example.org/ns#a3844> <http://example.org/ns#a3844> <http://example.org/ns#a3844> .
+<http://example.org/ns#a3845> <http://example.org/ns#a3845> <http://example.org/ns#a3845> .
+<http://example.org/ns#a3846> <http://example.org/ns#a3846> <http://example.org/ns#a3846> .
+<http://example.org/ns#a3847> <http://example.org/ns#a3847> <http://example.org/ns#a3847> .
+<http://example.org/ns#a3848> <http://example.org/ns#a3848> <http://example.org/ns#a3848> .
+<http://example.org/ns#a3849> <http://example.org/ns#a3849> <http://example.org/ns#a3849> .
+<http://example.org/ns#a3850> <http://example.org/ns#a3850> <http://example.org/ns#a3850> .
+<http://example.org/ns#a3851> <http://example.org/ns#a3851> <http://example.org/ns#a3851> .
+<http://example.org/ns#a3852> <http://example.org/ns#a3852> <http://example.org/ns#a3852> .
+<http://example.org/ns#a3853> <http://example.org/ns#a3853> <http://example.org/ns#a3853> .
+<http://example.org/ns#a3854> <http://example.org/ns#a3854> <http://example.org/ns#a3854> .
+<http://example.org/ns#a3855> <http://example.org/ns#a3855> <http://example.org/ns#a3855> .
+<http://example.org/ns#a3856> <http://example.org/ns#a3856> <http://example.org/ns#a3856> .
+<http://example.org/ns#a3857> <http://example.org/ns#a3857> <http://example.org/ns#a3857> .
+<http://example.org/ns#a3858> <http://example.org/ns#a3858> <http://example.org/ns#a3858> .
+<http://example.org/ns#a3859> <http://example.org/ns#a3859> <http://example.org/ns#a3859> .
+<http://example.org/ns#a3860> <http://example.org/ns#a3860> <http://example.org/ns#a3860> .
+<http://example.org/ns#a3861> <http://example.org/ns#a3861> <http://example.org/ns#a3861> .
+<http://example.org/ns#a3862> <http://example.org/ns#a3862> <http://example.org/ns#a3862> .
+<http://example.org/ns#a3863> <http://example.org/ns#a3863> <http://example.org/ns#a3863> .
+<http://example.org/ns#a3864> <http://example.org/ns#a3864> <http://example.org/ns#a3864> .
+<http://example.org/ns#a3865> <http://example.org/ns#a3865> <http://example.org/ns#a3865> .
+<http://example.org/ns#a3866> <http://example.org/ns#a3866> <http://example.org/ns#a3866> .
+<http://example.org/ns#a3867> <http://example.org/ns#a3867> <http://example.org/ns#a3867> .
+<http://example.org/ns#a3868> <http://example.org/ns#a3868> <http://example.org/ns#a3868> .
+<http://example.org/ns#a3869> <http://example.org/ns#a3869> <http://example.org/ns#a3869> .
+<http://example.org/ns#a3870> <http://example.org/ns#a3870> <http://example.org/ns#a3870> .
+<http://example.org/ns#a3871> <http://example.org/ns#a3871> <http://example.org/ns#a3871> .
+<http://example.org/ns#a3872> <http://example.org/ns#a3872> <http://example.org/ns#a3872> .
+<http://example.org/ns#a3873> <http://example.org/ns#a3873> <http://example.org/ns#a3873> .
+<http://example.org/ns#a3874> <http://example.org/ns#a3874> <http://example.org/ns#a3874> .
+<http://example.org/ns#a3875> <http://example.org/ns#a3875> <http://example.org/ns#a3875> .
+<http://example.org/ns#a3876> <http://example.org/ns#a3876> <http://example.org/ns#a3876> .
+<http://example.org/ns#a3877> <http://example.org/ns#a3877> <http://example.org/ns#a3877> .
+<http://example.org/ns#a3878> <http://example.org/ns#a3878> <http://example.org/ns#a3878> .
+<http://example.org/ns#a3879> <http://example.org/ns#a3879> <http://example.org/ns#a3879> .
+<http://example.org/ns#a3880> <http://example.org/ns#a3880> <http://example.org/ns#a3880> .
+<http://example.org/ns#a3881> <http://example.org/ns#a3881> <http://example.org/ns#a3881> .
+<http://example.org/ns#a3882> <http://example.org/ns#a3882> <http://example.org/ns#a3882> .
+<http://example.org/ns#a3883> <http://example.org/ns#a3883> <http://example.org/ns#a3883> .
+<http://example.org/ns#a3884> <http://example.org/ns#a3884> <http://example.org/ns#a3884> .
+<http://example.org/ns#a3885> <http://example.org/ns#a3885> <http://example.org/ns#a3885> .
+<http://example.org/ns#a3886> <http://example.org/ns#a3886> <http://example.org/ns#a3886> .
+<http://example.org/ns#a3887> <http://example.org/ns#a3887> <http://example.org/ns#a3887> .
+<http://example.org/ns#a3888> <http://example.org/ns#a3888> <http://example.org/ns#a3888> .
+<http://example.org/ns#a3889> <http://example.org/ns#a3889> <http://example.org/ns#a3889> .
+<http://example.org/ns#a3890> <http://example.org/ns#a3890> <http://example.org/ns#a3890> .
+<http://example.org/ns#a3891> <http://example.org/ns#a3891> <http://example.org/ns#a3891> .
+<http://example.org/ns#a3892> <http://example.org/ns#a3892> <http://example.org/ns#a3892> .
+<http://example.org/ns#a3893> <http://example.org/ns#a3893> <http://example.org/ns#a3893> .
+<http://example.org/ns#a3894> <http://example.org/ns#a3894> <http://example.org/ns#a3894> .
+<http://example.org/ns#a3895> <http://example.org/ns#a3895> <http://example.org/ns#a3895> .
+<http://example.org/ns#a3896> <http://example.org/ns#a3896> <http://example.org/ns#a3896> .
+<http://example.org/ns#a3897> <http://example.org/ns#a3897> <http://example.org/ns#a3897> .
+<http://example.org/ns#a3898> <http://example.org/ns#a3898> <http://example.org/ns#a3898> .
+<http://example.org/ns#a3899> <http://example.org/ns#a3899> <http://example.org/ns#a3899> .
+<http://example.org/ns#a3900> <http://example.org/ns#a3900> <http://example.org/ns#a3900> .
+<http://example.org/ns#a3901> <http://example.org/ns#a3901> <http://example.org/ns#a3901> .
+<http://example.org/ns#a3902> <http://example.org/ns#a3902> <http://example.org/ns#a3902> .
+<http://example.org/ns#a3903> <http://example.org/ns#a3903> <http://example.org/ns#a3903> .
+<http://example.org/ns#a3904> <http://example.org/ns#a3904> <http://example.org/ns#a3904> .
+<http://example.org/ns#a3905> <http://example.org/ns#a3905> <http://example.org/ns#a3905> .
+<http://example.org/ns#a3906> <http://example.org/ns#a3906> <http://example.org/ns#a3906> .
+<http://example.org/ns#a3907> <http://example.org/ns#a3907> <http://example.org/ns#a3907> .
+<http://example.org/ns#a3908> <http://example.org/ns#a3908> <http://example.org/ns#a3908> .
+<http://example.org/ns#a3909> <http://example.org/ns#a3909> <http://example.org/ns#a3909> .
+<http://example.org/ns#a3910> <http://example.org/ns#a3910> <http://example.org/ns#a3910> .
+<http://example.org/ns#a3911> <http://example.org/ns#a3911> <http://example.org/ns#a3911> .
+<http://example.org/ns#a3912> <http://example.org/ns#a3912> <http://example.org/ns#a3912> .
+<http://example.org/ns#a3913> <http://example.org/ns#a3913> <http://example.org/ns#a3913> .
+<http://example.org/ns#a3914> <http://example.org/ns#a3914> <http://example.org/ns#a3914> .
+<http://example.org/ns#a3915> <http://example.org/ns#a3915> <http://example.org/ns#a3915> .
+<http://example.org/ns#a3916> <http://example.org/ns#a3916> <http://example.org/ns#a3916> .
+<http://example.org/ns#a3917> <http://example.org/ns#a3917> <http://example.org/ns#a3917> .
+<http://example.org/ns#a3918> <http://example.org/ns#a3918> <http://example.org/ns#a3918> .
+<http://example.org/ns#a3919> <http://example.org/ns#a3919> <http://example.org/ns#a3919> .
+<http://example.org/ns#a3920> <http://example.org/ns#a3920> <http://example.org/ns#a3920> .
+<http://example.org/ns#a3921> <http://example.org/ns#a3921> <http://example.org/ns#a3921> .
+<http://example.org/ns#a3922> <http://example.org/ns#a3922> <http://example.org/ns#a3922> .
+<http://example.org/ns#a3923> <http://example.org/ns#a3923> <http://example.org/ns#a3923> .
+<http://example.org/ns#a3924> <http://example.org/ns#a3924> <http://example.org/ns#a3924> .
+<http://example.org/ns#a3925> <http://example.org/ns#a3925> <http://example.org/ns#a3925> .
+<http://example.org/ns#a3926> <http://example.org/ns#a3926> <http://example.org/ns#a3926> .
+<http://example.org/ns#a3927> <http://example.org/ns#a3927> <http://example.org/ns#a3927> .
+<http://example.org/ns#a3928> <http://example.org/ns#a3928> <http://example.org/ns#a3928> .
+<http://example.org/ns#a3929> <http://example.org/ns#a3929> <http://example.org/ns#a3929> .
+<http://example.org/ns#a3930> <http://example.org/ns#a3930> <http://example.org/ns#a3930> .
+<http://example.org/ns#a3931> <http://example.org/ns#a3931> <http://example.org/ns#a3931> .
+<http://example.org/ns#a3932> <http://example.org/ns#a3932> <http://example.org/ns#a3932> .
+<http://example.org/ns#a3933> <http://example.org/ns#a3933> <http://example.org/ns#a3933> .
+<http://example.org/ns#a3934> <http://example.org/ns#a3934> <http://example.org/ns#a3934> .
+<http://example.org/ns#a3935> <http://example.org/ns#a3935> <http://example.org/ns#a3935> .
+<http://example.org/ns#a3936> <http://example.org/ns#a3936> <http://example.org/ns#a3936> .
+<http://example.org/ns#a3937> <http://example.org/ns#a3937> <http://example.org/ns#a3937> .
+<http://example.org/ns#a3938> <http://example.org/ns#a3938> <http://example.org/ns#a3938> .
+<http://example.org/ns#a3939> <http://example.org/ns#a3939> <http://example.org/ns#a3939> .
+<http://example.org/ns#a3940> <http://example.org/ns#a3940> <http://example.org/ns#a3940> .
+<http://example.org/ns#a3941> <http://example.org/ns#a3941> <http://example.org/ns#a3941> .
+<http://example.org/ns#a3942> <http://example.org/ns#a3942> <http://example.org/ns#a3942> .
+<http://example.org/ns#a3943> <http://example.org/ns#a3943> <http://example.org/ns#a3943> .
+<http://example.org/ns#a3944> <http://example.org/ns#a3944> <http://example.org/ns#a3944> .
+<http://example.org/ns#a3945> <http://example.org/ns#a3945> <http://example.org/ns#a3945> .
+<http://example.org/ns#a3946> <http://example.org/ns#a3946> <http://example.org/ns#a3946> .
+<http://example.org/ns#a3947> <http://example.org/ns#a3947> <http://example.org/ns#a3947> .
+<http://example.org/ns#a3948> <http://example.org/ns#a3948> <http://example.org/ns#a3948> .
+<http://example.org/ns#a3949> <http://example.org/ns#a3949> <http://example.org/ns#a3949> .
+<http://example.org/ns#a3950> <http://example.org/ns#a3950> <http://example.org/ns#a3950> .
+<http://example.org/ns#a3951> <http://example.org/ns#a3951> <http://example.org/ns#a3951> .
+<http://example.org/ns#a3952> <http://example.org/ns#a3952> <http://example.org/ns#a3952> .
+<http://example.org/ns#a3953> <http://example.org/ns#a3953> <http://example.org/ns#a3953> .
+<http://example.org/ns#a3954> <http://example.org/ns#a3954> <http://example.org/ns#a3954> .
+<http://example.org/ns#a3955> <http://example.org/ns#a3955> <http://example.org/ns#a3955> .
+<http://example.org/ns#a3956> <http://example.org/ns#a3956> <http://example.org/ns#a3956> .
+<http://example.org/ns#a3957> <http://example.org/ns#a3957> <http://example.org/ns#a3957> .
+<http://example.org/ns#a3958> <http://example.org/ns#a3958> <http://example.org/ns#a3958> .
+<http://example.org/ns#a3959> <http://example.org/ns#a3959> <http://example.org/ns#a3959> .
+<http://example.org/ns#a3960> <http://example.org/ns#a3960> <http://example.org/ns#a3960> .
+<http://example.org/ns#a3961> <http://example.org/ns#a3961> <http://example.org/ns#a3961> .
+<http://example.org/ns#a3962> <http://example.org/ns#a3962> <http://example.org/ns#a3962> .
+<http://example.org/ns#a3963> <http://example.org/ns#a3963> <http://example.org/ns#a3963> .
+<http://example.org/ns#a3964> <http://example.org/ns#a3964> <http://example.org/ns#a3964> .
+<http://example.org/ns#a3965> <http://example.org/ns#a3965> <http://example.org/ns#a3965> .
+<http://example.org/ns#a3966> <http://example.org/ns#a3966> <http://example.org/ns#a3966> .
+<http://example.org/ns#a3967> <http://example.org/ns#a3967> <http://example.org/ns#a3967> .
+<http://example.org/ns#a3968> <http://example.org/ns#a3968> <http://example.org/ns#a3968> .
+<http://example.org/ns#a3969> <http://example.org/ns#a3969> <http://example.org/ns#a3969> .
+<http://example.org/ns#a3970> <http://example.org/ns#a3970> <http://example.org/ns#a3970> .
+<http://example.org/ns#a3971> <http://example.org/ns#a3971> <http://example.org/ns#a3971> .
+<http://example.org/ns#a3972> <http://example.org/ns#a3972> <http://example.org/ns#a3972> .
+<http://example.org/ns#a3973> <http://example.org/ns#a3973> <http://example.org/ns#a3973> .
+<http://example.org/ns#a3974> <http://example.org/ns#a3974> <http://example.org/ns#a3974> .
+<http://example.org/ns#a3975> <http://example.org/ns#a3975> <http://example.org/ns#a3975> .
+<http://example.org/ns#a3976> <http://example.org/ns#a3976> <http://example.org/ns#a3976> .
+<http://example.org/ns#a3977> <http://example.org/ns#a3977> <http://example.org/ns#a3977> .
+<http://example.org/ns#a3978> <http://example.org/ns#a3978> <http://example.org/ns#a3978> .
+<http://example.org/ns#a3979> <http://example.org/ns#a3979> <http://example.org/ns#a3979> .
+<http://example.org/ns#a3980> <http://example.org/ns#a3980> <http://example.org/ns#a3980> .
+<http://example.org/ns#a3981> <http://example.org/ns#a3981> <http://example.org/ns#a3981> .
+<http://example.org/ns#a3982> <http://example.org/ns#a3982> <http://example.org/ns#a3982> .
+<http://example.org/ns#a3983> <http://example.org/ns#a3983> <http://example.org/ns#a3983> .
+<http://example.org/ns#a3984> <http://example.org/ns#a3984> <http://example.org/ns#a3984> .
+<http://example.org/ns#a3985> <http://example.org/ns#a3985> <http://example.org/ns#a3985> .
+<http://example.org/ns#a3986> <http://example.org/ns#a3986> <http://example.org/ns#a3986> .
+<http://example.org/ns#a3987> <http://example.org/ns#a3987> <http://example.org/ns#a3987> .
+<http://example.org/ns#a3988> <http://example.org/ns#a3988> <http://example.org/ns#a3988> .
+<http://example.org/ns#a3989> <http://example.org/ns#a3989> <http://example.org/ns#a3989> .
+<http://example.org/ns#a3990> <http://example.org/ns#a3990> <http://example.org/ns#a3990> .
+<http://example.org/ns#a3991> <http://example.org/ns#a3991> <http://example.org/ns#a3991> .
+<http://example.org/ns#a3992> <http://example.org/ns#a3992> <http://example.org/ns#a3992> .
+<http://example.org/ns#a3993> <http://example.org/ns#a3993> <http://example.org/ns#a3993> .
+<http://example.org/ns#a3994> <http://example.org/ns#a3994> <http://example.org/ns#a3994> .
+<http://example.org/ns#a3995> <http://example.org/ns#a3995> <http://example.org/ns#a3995> .
+<http://example.org/ns#a3996> <http://example.org/ns#a3996> <http://example.org/ns#a3996> .
+<http://example.org/ns#a3997> <http://example.org/ns#a3997> <http://example.org/ns#a3997> .
+<http://example.org/ns#a3998> <http://example.org/ns#a3998> <http://example.org/ns#a3998> .
+<http://example.org/ns#a3999> <http://example.org/ns#a3999> <http://example.org/ns#a3999> .
+<http://example.org/ns#a4000> <http://example.org/ns#a4000> <http://example.org/ns#a4000> .
+<http://example.org/ns#a4001> <http://example.org/ns#a4001> <http://example.org/ns#a4001> .
+<http://example.org/ns#a4002> <http://example.org/ns#a4002> <http://example.org/ns#a4002> .
+<http://example.org/ns#a4003> <http://example.org/ns#a4003> <http://example.org/ns#a4003> .
+<http://example.org/ns#a4004> <http://example.org/ns#a4004> <http://example.org/ns#a4004> .
+<http://example.org/ns#a4005> <http://example.org/ns#a4005> <http://example.org/ns#a4005> .
+<http://example.org/ns#a4006> <http://example.org/ns#a4006> <http://example.org/ns#a4006> .
+<http://example.org/ns#a4007> <http://example.org/ns#a4007> <http://example.org/ns#a4007> .
+<http://example.org/ns#a4008> <http://example.org/ns#a4008> <http://example.org/ns#a4008> .
+<http://example.org/ns#a4009> <http://example.org/ns#a4009> <http://example.org/ns#a4009> .
+<http://example.org/ns#a4010> <http://example.org/ns#a4010> <http://example.org/ns#a4010> .
+<http://example.org/ns#a4011> <http://example.org/ns#a4011> <http://example.org/ns#a4011> .
+<http://example.org/ns#a4012> <http://example.org/ns#a4012> <http://example.org/ns#a4012> .
+<http://example.org/ns#a4013> <http://example.org/ns#a4013> <http://example.org/ns#a4013> .
+<http://example.org/ns#a4014> <http://example.org/ns#a4014> <http://example.org/ns#a4014> .
+<http://example.org/ns#a4015> <http://example.org/ns#a4015> <http://example.org/ns#a4015> .
+<http://example.org/ns#a4016> <http://example.org/ns#a4016> <http://example.org/ns#a4016> .
+<http://example.org/ns#a4017> <http://example.org/ns#a4017> <http://example.org/ns#a4017> .
+<http://example.org/ns#a4018> <http://example.org/ns#a4018> <http://example.org/ns#a4018> .
+<http://example.org/ns#a4019> <http://example.org/ns#a4019> <http://example.org/ns#a4019> .
+<http://example.org/ns#a4020> <http://example.org/ns#a4020> <http://example.org/ns#a4020> .
+<http://example.org/ns#a4021> <http://example.org/ns#a4021> <http://example.org/ns#a4021> .
+<http://example.org/ns#a4022> <http://example.org/ns#a4022> <http://example.org/ns#a4022> .
+<http://example.org/ns#a4023> <http://example.org/ns#a4023> <http://example.org/ns#a4023> .
+<http://example.org/ns#a4024> <http://example.org/ns#a4024> <http://example.org/ns#a4024> .
+<http://example.org/ns#a4025> <http://example.org/ns#a4025> <http://example.org/ns#a4025> .
+<http://example.org/ns#a4026> <http://example.org/ns#a4026> <http://example.org/ns#a4026> .
+<http://example.org/ns#a4027> <http://example.org/ns#a4027> <http://example.org/ns#a4027> .
+<http://example.org/ns#a4028> <http://example.org/ns#a4028> <http://example.org/ns#a4028> .
+<http://example.org/ns#a4029> <http://example.org/ns#a4029> <http://example.org/ns#a4029> .
+<http://example.org/ns#a4030> <http://example.org/ns#a4030> <http://example.org/ns#a4030> .
+<http://example.org/ns#a4031> <http://example.org/ns#a4031> <http://example.org/ns#a4031> .
+<http://example.org/ns#a4032> <http://example.org/ns#a4032> <http://example.org/ns#a4032> .
+<http://example.org/ns#a4033> <http://example.org/ns#a4033> <http://example.org/ns#a4033> .
+<http://example.org/ns#a4034> <http://example.org/ns#a4034> <http://example.org/ns#a4034> .
+<http://example.org/ns#a4035> <http://example.org/ns#a4035> <http://example.org/ns#a4035> .
+<http://example.org/ns#a4036> <http://example.org/ns#a4036> <http://example.org/ns#a4036> .
+<http://example.org/ns#a4037> <http://example.org/ns#a4037> <http://example.org/ns#a4037> .
+<http://example.org/ns#a4038> <http://example.org/ns#a4038> <http://example.org/ns#a4038> .
+<http://example.org/ns#a4039> <http://example.org/ns#a4039> <http://example.org/ns#a4039> .
+<http://example.org/ns#a4040> <http://example.org/ns#a4040> <http://example.org/ns#a4040> .
+<http://example.org/ns#a4041> <http://example.org/ns#a4041> <http://example.org/ns#a4041> .
+<http://example.org/ns#a4042> <http://example.org/ns#a4042> <http://example.org/ns#a4042> .
+<http://example.org/ns#a4043> <http://example.org/ns#a4043> <http://example.org/ns#a4043> .
+<http://example.org/ns#a4044> <http://example.org/ns#a4044> <http://example.org/ns#a4044> .
+<http://example.org/ns#a4045> <http://example.org/ns#a4045> <http://example.org/ns#a4045> .
+<http://example.org/ns#a4046> <http://example.org/ns#a4046> <http://example.org/ns#a4046> .
+<http://example.org/ns#a4047> <http://example.org/ns#a4047> <http://example.org/ns#a4047> .
+<http://example.org/ns#a4048> <http://example.org/ns#a4048> <http://example.org/ns#a4048> .
+<http://example.org/ns#a4049> <http://example.org/ns#a4049> <http://example.org/ns#a4049> .
+<http://example.org/ns#a4050> <http://example.org/ns#a4050> <http://example.org/ns#a4050> .
+<http://example.org/ns#a4051> <http://example.org/ns#a4051> <http://example.org/ns#a4051> .
+<http://example.org/ns#a4052> <http://example.org/ns#a4052> <http://example.org/ns#a4052> .
+<http://example.org/ns#a4053> <http://example.org/ns#a4053> <http://example.org/ns#a4053> .
+<http://example.org/ns#a4054> <http://example.org/ns#a4054> <http://example.org/ns#a4054> .
+<http://example.org/ns#a4055> <http://example.org/ns#a4055> <http://example.org/ns#a4055> .
+<http://example.org/ns#a4056> <http://example.org/ns#a4056> <http://example.org/ns#a4056> .
+<http://example.org/ns#a4057> <http://example.org/ns#a4057> <http://example.org/ns#a4057> .
+<http://example.org/ns#a4058> <http://example.org/ns#a4058> <http://example.org/ns#a4058> .
+<http://example.org/ns#a4059> <http://example.org/ns#a4059> <http://example.org/ns#a4059> .
+<http://example.org/ns#a4060> <http://example.org/ns#a4060> <http://example.org/ns#a4060> .
+<http://example.org/ns#a4061> <http://example.org/ns#a4061> <http://example.org/ns#a4061> .
+<http://example.org/ns#a4062> <http://example.org/ns#a4062> <http://example.org/ns#a4062> .
+<http://example.org/ns#a4063> <http://example.org/ns#a4063> <http://example.org/ns#a4063> .
+<http://example.org/ns#a4064> <http://example.org/ns#a4064> <http://example.org/ns#a4064> .
+<http://example.org/ns#a4065> <http://example.org/ns#a4065> <http://example.org/ns#a4065> .
+<http://example.org/ns#a4066> <http://example.org/ns#a4066> <http://example.org/ns#a4066> .
+<http://example.org/ns#a4067> <http://example.org/ns#a4067> <http://example.org/ns#a4067> .
+<http://example.org/ns#a4068> <http://example.org/ns#a4068> <http://example.org/ns#a4068> .
+<http://example.org/ns#a4069> <http://example.org/ns#a4069> <http://example.org/ns#a4069> .
+<http://example.org/ns#a4070> <http://example.org/ns#a4070> <http://example.org/ns#a4070> .
+<http://example.org/ns#a4071> <http://example.org/ns#a4071> <http://example.org/ns#a4071> .
+<http://example.org/ns#a4072> <http://example.org/ns#a4072> <http://example.org/ns#a4072> .
+<http://example.org/ns#a4073> <http://example.org/ns#a4073> <http://example.org/ns#a4073> .
+<http://example.org/ns#a4074> <http://example.org/ns#a4074> <http://example.org/ns#a4074> .
+<http://example.org/ns#a4075> <http://example.org/ns#a4075> <http://example.org/ns#a4075> .
+<http://example.org/ns#a4076> <http://example.org/ns#a4076> <http://example.org/ns#a4076> .
+<http://example.org/ns#a4077> <http://example.org/ns#a4077> <http://example.org/ns#a4077> .
+<http://example.org/ns#a4078> <http://example.org/ns#a4078> <http://example.org/ns#a4078> .
+<http://example.org/ns#a4079> <http://example.org/ns#a4079> <http://example.org/ns#a4079> .
+<http://example.org/ns#a4080> <http://example.org/ns#a4080> <http://example.org/ns#a4080> .
+<http://example.org/ns#a4081> <http://example.org/ns#a4081> <http://example.org/ns#a4081> .
+<http://example.org/ns#a4082> <http://example.org/ns#a4082> <http://example.org/ns#a4082> .
+<http://example.org/ns#a4083> <http://example.org/ns#a4083> <http://example.org/ns#a4083> .
+<http://example.org/ns#a4084> <http://example.org/ns#a4084> <http://example.org/ns#a4084> .
+<http://example.org/ns#a4085> <http://example.org/ns#a4085> <http://example.org/ns#a4085> .
+<http://example.org/ns#a4086> <http://example.org/ns#a4086> <http://example.org/ns#a4086> .
+<http://example.org/ns#a4087> <http://example.org/ns#a4087> <http://example.org/ns#a4087> .
+<http://example.org/ns#a4088> <http://example.org/ns#a4088> <http://example.org/ns#a4088> .
+<http://example.org/ns#a4089> <http://example.org/ns#a4089> <http://example.org/ns#a4089> .
+<http://example.org/ns#a4090> <http://example.org/ns#a4090> <http://example.org/ns#a4090> .
+<http://example.org/ns#a4091> <http://example.org/ns#a4091> <http://example.org/ns#a4091> .
+<http://example.org/ns#a4092> <http://example.org/ns#a4092> <http://example.org/ns#a4092> .
+<http://example.org/ns#a4093> <http://example.org/ns#a4093> <http://example.org/ns#a4093> .
+<http://example.org/ns#a4094> <http://example.org/ns#a4094> <http://example.org/ns#a4094> .
+<http://example.org/ns#a4095> <http://example.org/ns#a4095> <http://example.org/ns#a4095> .
+<http://example.org/ns#a4096> <http://example.org/ns#a4096> <http://example.org/ns#a4096> .
+<http://example.org/ns#a4097> <http://example.org/ns#a4097> <http://example.org/ns#a4097> .
+<http://example.org/ns#a4098> <http://example.org/ns#a4098> <http://example.org/ns#a4098> .
+<http://example.org/ns#a4099> <http://example.org/ns#a4099> <http://example.org/ns#a4099> .
+<http://example.org/ns#a4100> <http://example.org/ns#a4100> <http://example.org/ns#a4100> .
+<http://example.org/ns#a4101> <http://example.org/ns#a4101> <http://example.org/ns#a4101> .
+<http://example.org/ns#a4102> <http://example.org/ns#a4102> <http://example.org/ns#a4102> .
+<http://example.org/ns#a4103> <http://example.org/ns#a4103> <http://example.org/ns#a4103> .
+<http://example.org/ns#a4104> <http://example.org/ns#a4104> <http://example.org/ns#a4104> .
+<http://example.org/ns#a4105> <http://example.org/ns#a4105> <http://example.org/ns#a4105> .
+<http://example.org/ns#a4106> <http://example.org/ns#a4106> <http://example.org/ns#a4106> .
+<http://example.org/ns#a4107> <http://example.org/ns#a4107> <http://example.org/ns#a4107> .
+<http://example.org/ns#a4108> <http://example.org/ns#a4108> <http://example.org/ns#a4108> .
+<http://example.org/ns#a4109> <http://example.org/ns#a4109> <http://example.org/ns#a4109> .
+<http://example.org/ns#a4110> <http://example.org/ns#a4110> <http://example.org/ns#a4110> .
+<http://example.org/ns#a4111> <http://example.org/ns#a4111> <http://example.org/ns#a4111> .
+<http://example.org/ns#a4112> <http://example.org/ns#a4112> <http://example.org/ns#a4112> .
+<http://example.org/ns#a4113> <http://example.org/ns#a4113> <http://example.org/ns#a4113> .
+<http://example.org/ns#a4114> <http://example.org/ns#a4114> <http://example.org/ns#a4114> .
+<http://example.org/ns#a4115> <http://example.org/ns#a4115> <http://example.org/ns#a4115> .
+<http://example.org/ns#a4116> <http://example.org/ns#a4116> <http://example.org/ns#a4116> .
+<http://example.org/ns#a4117> <http://example.org/ns#a4117> <http://example.org/ns#a4117> .
+<http://example.org/ns#a4118> <http://example.org/ns#a4118> <http://example.org/ns#a4118> .
+<http://example.org/ns#a4119> <http://example.org/ns#a4119> <http://example.org/ns#a4119> .
+<http://example.org/ns#a4120> <http://example.org/ns#a4120> <http://example.org/ns#a4120> .
+<http://example.org/ns#a4121> <http://example.org/ns#a4121> <http://example.org/ns#a4121> .
+<http://example.org/ns#a4122> <http://example.org/ns#a4122> <http://example.org/ns#a4122> .
+<http://example.org/ns#a4123> <http://example.org/ns#a4123> <http://example.org/ns#a4123> .
+<http://example.org/ns#a4124> <http://example.org/ns#a4124> <http://example.org/ns#a4124> .
+<http://example.org/ns#a4125> <http://example.org/ns#a4125> <http://example.org/ns#a4125> .
+<http://example.org/ns#a4126> <http://example.org/ns#a4126> <http://example.org/ns#a4126> .
+<http://example.org/ns#a4127> <http://example.org/ns#a4127> <http://example.org/ns#a4127> .
+<http://example.org/ns#a4128> <http://example.org/ns#a4128> <http://example.org/ns#a4128> .
+<http://example.org/ns#a4129> <http://example.org/ns#a4129> <http://example.org/ns#a4129> .
+<http://example.org/ns#a4130> <http://example.org/ns#a4130> <http://example.org/ns#a4130> .
+<http://example.org/ns#a4131> <http://example.org/ns#a4131> <http://example.org/ns#a4131> .
+<http://example.org/ns#a4132> <http://example.org/ns#a4132> <http://example.org/ns#a4132> .
+<http://example.org/ns#a4133> <http://example.org/ns#a4133> <http://example.org/ns#a4133> .
+<http://example.org/ns#a4134> <http://example.org/ns#a4134> <http://example.org/ns#a4134> .
+<http://example.org/ns#a4135> <http://example.org/ns#a4135> <http://example.org/ns#a4135> .
+<http://example.org/ns#a4136> <http://example.org/ns#a4136> <http://example.org/ns#a4136> .
+<http://example.org/ns#a4137> <http://example.org/ns#a4137> <http://example.org/ns#a4137> .
+<http://example.org/ns#a4138> <http://example.org/ns#a4138> <http://example.org/ns#a4138> .
+<http://example.org/ns#a4139> <http://example.org/ns#a4139> <http://example.org/ns#a4139> .
+<http://example.org/ns#a4140> <http://example.org/ns#a4140> <http://example.org/ns#a4140> .
+<http://example.org/ns#a4141> <http://example.org/ns#a4141> <http://example.org/ns#a4141> .
+<http://example.org/ns#a4142> <http://example.org/ns#a4142> <http://example.org/ns#a4142> .
+<http://example.org/ns#a4143> <http://example.org/ns#a4143> <http://example.org/ns#a4143> .
+<http://example.org/ns#a4144> <http://example.org/ns#a4144> <http://example.org/ns#a4144> .
+<http://example.org/ns#a4145> <http://example.org/ns#a4145> <http://example.org/ns#a4145> .
+<http://example.org/ns#a4146> <http://example.org/ns#a4146> <http://example.org/ns#a4146> .
+<http://example.org/ns#a4147> <http://example.org/ns#a4147> <http://example.org/ns#a4147> .
+<http://example.org/ns#a4148> <http://example.org/ns#a4148> <http://example.org/ns#a4148> .
+<http://example.org/ns#a4149> <http://example.org/ns#a4149> <http://example.org/ns#a4149> .
+<http://example.org/ns#a4150> <http://example.org/ns#a4150> <http://example.org/ns#a4150> .
+<http://example.org/ns#a4151> <http://example.org/ns#a4151> <http://example.org/ns#a4151> .
+<http://example.org/ns#a4152> <http://example.org/ns#a4152> <http://example.org/ns#a4152> .
+<http://example.org/ns#a4153> <http://example.org/ns#a4153> <http://example.org/ns#a4153> .
+<http://example.org/ns#a4154> <http://example.org/ns#a4154> <http://example.org/ns#a4154> .
+<http://example.org/ns#a4155> <http://example.org/ns#a4155> <http://example.org/ns#a4155> .
+<http://example.org/ns#a4156> <http://example.org/ns#a4156> <http://example.org/ns#a4156> .
+<http://example.org/ns#a4157> <http://example.org/ns#a4157> <http://example.org/ns#a4157> .
+<http://example.org/ns#a4158> <http://example.org/ns#a4158> <http://example.org/ns#a4158> .
+<http://example.org/ns#a4159> <http://example.org/ns#a4159> <http://example.org/ns#a4159> .
+<http://example.org/ns#a4160> <http://example.org/ns#a4160> <http://example.org/ns#a4160> .
+<http://example.org/ns#a4161> <http://example.org/ns#a4161> <http://example.org/ns#a4161> .
+<http://example.org/ns#a4162> <http://example.org/ns#a4162> <http://example.org/ns#a4162> .
+<http://example.org/ns#a4163> <http://example.org/ns#a4163> <http://example.org/ns#a4163> .
+<http://example.org/ns#a4164> <http://example.org/ns#a4164> <http://example.org/ns#a4164> .
+<http://example.org/ns#a4165> <http://example.org/ns#a4165> <http://example.org/ns#a4165> .
+<http://example.org/ns#a4166> <http://example.org/ns#a4166> <http://example.org/ns#a4166> .
+<http://example.org/ns#a4167> <http://example.org/ns#a4167> <http://example.org/ns#a4167> .
+<http://example.org/ns#a4168> <http://example.org/ns#a4168> <http://example.org/ns#a4168> .
+<http://example.org/ns#a4169> <http://example.org/ns#a4169> <http://example.org/ns#a4169> .
+<http://example.org/ns#a4170> <http://example.org/ns#a4170> <http://example.org/ns#a4170> .
+<http://example.org/ns#a4171> <http://example.org/ns#a4171> <http://example.org/ns#a4171> .
+<http://example.org/ns#a4172> <http://example.org/ns#a4172> <http://example.org/ns#a4172> .
+<http://example.org/ns#a4173> <http://example.org/ns#a4173> <http://example.org/ns#a4173> .
+<http://example.org/ns#a4174> <http://example.org/ns#a4174> <http://example.org/ns#a4174> .
+<http://example.org/ns#a4175> <http://example.org/ns#a4175> <http://example.org/ns#a4175> .
+<http://example.org/ns#a4176> <http://example.org/ns#a4176> <http://example.org/ns#a4176> .
+<http://example.org/ns#a4177> <http://example.org/ns#a4177> <http://example.org/ns#a4177> .
+<http://example.org/ns#a4178> <http://example.org/ns#a4178> <http://example.org/ns#a4178> .
+<http://example.org/ns#a4179> <http://example.org/ns#a4179> <http://example.org/ns#a4179> .
+<http://example.org/ns#a4180> <http://example.org/ns#a4180> <http://example.org/ns#a4180> .
+<http://example.org/ns#a4181> <http://example.org/ns#a4181> <http://example.org/ns#a4181> .
+<http://example.org/ns#a4182> <http://example.org/ns#a4182> <http://example.org/ns#a4182> .
+<http://example.org/ns#a4183> <http://example.org/ns#a4183> <http://example.org/ns#a4183> .
+<http://example.org/ns#a4184> <http://example.org/ns#a4184> <http://example.org/ns#a4184> .
+<http://example.org/ns#a4185> <http://example.org/ns#a4185> <http://example.org/ns#a4185> .
+<http://example.org/ns#a4186> <http://example.org/ns#a4186> <http://example.org/ns#a4186> .
+<http://example.org/ns#a4187> <http://example.org/ns#a4187> <http://example.org/ns#a4187> .
+<http://example.org/ns#a4188> <http://example.org/ns#a4188> <http://example.org/ns#a4188> .
+<http://example.org/ns#a4189> <http://example.org/ns#a4189> <http://example.org/ns#a4189> .
+<http://example.org/ns#a4190> <http://example.org/ns#a4190> <http://example.org/ns#a4190> .
+<http://example.org/ns#a4191> <http://example.org/ns#a4191> <http://example.org/ns#a4191> .
+<http://example.org/ns#a4192> <http://example.org/ns#a4192> <http://example.org/ns#a4192> .
+<http://example.org/ns#a4193> <http://example.org/ns#a4193> <http://example.org/ns#a4193> .
+<http://example.org/ns#a4194> <http://example.org/ns#a4194> <http://example.org/ns#a4194> .
+<http://example.org/ns#a4195> <http://example.org/ns#a4195> <http://example.org/ns#a4195> .
+<http://example.org/ns#a4196> <http://example.org/ns#a4196> <http://example.org/ns#a4196> .
+<http://example.org/ns#a4197> <http://example.org/ns#a4197> <http://example.org/ns#a4197> .
+<http://example.org/ns#a4198> <http://example.org/ns#a4198> <http://example.org/ns#a4198> .
+<http://example.org/ns#a4199> <http://example.org/ns#a4199> <http://example.org/ns#a4199> .
+<http://example.org/ns#a4200> <http://example.org/ns#a4200> <http://example.org/ns#a4200> .
+<http://example.org/ns#a4201> <http://example.org/ns#a4201> <http://example.org/ns#a4201> .
+<http://example.org/ns#a4202> <http://example.org/ns#a4202> <http://example.org/ns#a4202> .
+<http://example.org/ns#a4203> <http://example.org/ns#a4203> <http://example.org/ns#a4203> .
+<http://example.org/ns#a4204> <http://example.org/ns#a4204> <http://example.org/ns#a4204> .
+<http://example.org/ns#a4205> <http://example.org/ns#a4205> <http://example.org/ns#a4205> .
+<http://example.org/ns#a4206> <http://example.org/ns#a4206> <http://example.org/ns#a4206> .
+<http://example.org/ns#a4207> <http://example.org/ns#a4207> <http://example.org/ns#a4207> .
+<http://example.org/ns#a4208> <http://example.org/ns#a4208> <http://example.org/ns#a4208> .
+<http://example.org/ns#a4209> <http://example.org/ns#a4209> <http://example.org/ns#a4209> .
+<http://example.org/ns#a4210> <http://example.org/ns#a4210> <http://example.org/ns#a4210> .
+<http://example.org/ns#a4211> <http://example.org/ns#a4211> <http://example.org/ns#a4211> .
+<http://example.org/ns#a4212> <http://example.org/ns#a4212> <http://example.org/ns#a4212> .
+<http://example.org/ns#a4213> <http://example.org/ns#a4213> <http://example.org/ns#a4213> .
+<http://example.org/ns#a4214> <http://example.org/ns#a4214> <http://example.org/ns#a4214> .
+<http://example.org/ns#a4215> <http://example.org/ns#a4215> <http://example.org/ns#a4215> .
+<http://example.org/ns#a4216> <http://example.org/ns#a4216> <http://example.org/ns#a4216> .
+<http://example.org/ns#a4217> <http://example.org/ns#a4217> <http://example.org/ns#a4217> .
+<http://example.org/ns#a4218> <http://example.org/ns#a4218> <http://example.org/ns#a4218> .
+<http://example.org/ns#a4219> <http://example.org/ns#a4219> <http://example.org/ns#a4219> .
+<http://example.org/ns#a4220> <http://example.org/ns#a4220> <http://example.org/ns#a4220> .
+<http://example.org/ns#a4221> <http://example.org/ns#a4221> <http://example.org/ns#a4221> .
+<http://example.org/ns#a4222> <http://example.org/ns#a4222> <http://example.org/ns#a4222> .
+<http://example.org/ns#a4223> <http://example.org/ns#a4223> <http://example.org/ns#a4223> .
+<http://example.org/ns#a4224> <http://example.org/ns#a4224> <http://example.org/ns#a4224> .
+<http://example.org/ns#a4225> <http://example.org/ns#a4225> <http://example.org/ns#a4225> .
+<http://example.org/ns#a4226> <http://example.org/ns#a4226> <http://example.org/ns#a4226> .
+<http://example.org/ns#a4227> <http://example.org/ns#a4227> <http://example.org/ns#a4227> .
+<http://example.org/ns#a4228> <http://example.org/ns#a4228> <http://example.org/ns#a4228> .
+<http://example.org/ns#a4229> <http://example.org/ns#a4229> <http://example.org/ns#a4229> .
+<http://example.org/ns#a4230> <http://example.org/ns#a4230> <http://example.org/ns#a4230> .
+<http://example.org/ns#a4231> <http://example.org/ns#a4231> <http://example.org/ns#a4231> .
+<http://example.org/ns#a4232> <http://example.org/ns#a4232> <http://example.org/ns#a4232> .
+<http://example.org/ns#a4233> <http://example.org/ns#a4233> <http://example.org/ns#a4233> .
+<http://example.org/ns#a4234> <http://example.org/ns#a4234> <http://example.org/ns#a4234> .
+<http://example.org/ns#a4235> <http://example.org/ns#a4235> <http://example.org/ns#a4235> .
+<http://example.org/ns#a4236> <http://example.org/ns#a4236> <http://example.org/ns#a4236> .
+<http://example.org/ns#a4237> <http://example.org/ns#a4237> <http://example.org/ns#a4237> .
+<http://example.org/ns#a4238> <http://example.org/ns#a4238> <http://example.org/ns#a4238> .
+<http://example.org/ns#a4239> <http://example.org/ns#a4239> <http://example.org/ns#a4239> .
+<http://example.org/ns#a4240> <http://example.org/ns#a4240> <http://example.org/ns#a4240> .
+<http://example.org/ns#a4241> <http://example.org/ns#a4241> <http://example.org/ns#a4241> .
+<http://example.org/ns#a4242> <http://example.org/ns#a4242> <http://example.org/ns#a4242> .
+<http://example.org/ns#a4243> <http://example.org/ns#a4243> <http://example.org/ns#a4243> .
+<http://example.org/ns#a4244> <http://example.org/ns#a4244> <http://example.org/ns#a4244> .
+<http://example.org/ns#a4245> <http://example.org/ns#a4245> <http://example.org/ns#a4245> .
+<http://example.org/ns#a4246> <http://example.org/ns#a4246> <http://example.org/ns#a4246> .
+<http://example.org/ns#a4247> <http://example.org/ns#a4247> <http://example.org/ns#a4247> .
+<http://example.org/ns#a4248> <http://example.org/ns#a4248> <http://example.org/ns#a4248> .
+<http://example.org/ns#a4249> <http://example.org/ns#a4249> <http://example.org/ns#a4249> .
+<http://example.org/ns#a4250> <http://example.org/ns#a4250> <http://example.org/ns#a4250> .
+<http://example.org/ns#a4251> <http://example.org/ns#a4251> <http://example.org/ns#a4251> .
+<http://example.org/ns#a4252> <http://example.org/ns#a4252> <http://example.org/ns#a4252> .
+<http://example.org/ns#a4253> <http://example.org/ns#a4253> <http://example.org/ns#a4253> .
+<http://example.org/ns#a4254> <http://example.org/ns#a4254> <http://example.org/ns#a4254> .
+<http://example.org/ns#a4255> <http://example.org/ns#a4255> <http://example.org/ns#a4255> .
+<http://example.org/ns#a4256> <http://example.org/ns#a4256> <http://example.org/ns#a4256> .
+<http://example.org/ns#a4257> <http://example.org/ns#a4257> <http://example.org/ns#a4257> .
+<http://example.org/ns#a4258> <http://example.org/ns#a4258> <http://example.org/ns#a4258> .
+<http://example.org/ns#a4259> <http://example.org/ns#a4259> <http://example.org/ns#a4259> .
+<http://example.org/ns#a4260> <http://example.org/ns#a4260> <http://example.org/ns#a4260> .
+<http://example.org/ns#a4261> <http://example.org/ns#a4261> <http://example.org/ns#a4261> .
+<http://example.org/ns#a4262> <http://example.org/ns#a4262> <http://example.org/ns#a4262> .
+<http://example.org/ns#a4263> <http://example.org/ns#a4263> <http://example.org/ns#a4263> .
+<http://example.org/ns#a4264> <http://example.org/ns#a4264> <http://example.org/ns#a4264> .
+<http://example.org/ns#a4265> <http://example.org/ns#a4265> <http://example.org/ns#a4265> .
+<http://example.org/ns#a4266> <http://example.org/ns#a4266> <http://example.org/ns#a4266> .
+<http://example.org/ns#a4267> <http://example.org/ns#a4267> <http://example.org/ns#a4267> .
+<http://example.org/ns#a4268> <http://example.org/ns#a4268> <http://example.org/ns#a4268> .
+<http://example.org/ns#a4269> <http://example.org/ns#a4269> <http://example.org/ns#a4269> .
+<http://example.org/ns#a4270> <http://example.org/ns#a4270> <http://example.org/ns#a4270> .
+<http://example.org/ns#a4271> <http://example.org/ns#a4271> <http://example.org/ns#a4271> .
+<http://example.org/ns#a4272> <http://example.org/ns#a4272> <http://example.org/ns#a4272> .
+<http://example.org/ns#a4273> <http://example.org/ns#a4273> <http://example.org/ns#a4273> .
+<http://example.org/ns#a4274> <http://example.org/ns#a4274> <http://example.org/ns#a4274> .
+<http://example.org/ns#a4275> <http://example.org/ns#a4275> <http://example.org/ns#a4275> .
+<http://example.org/ns#a4276> <http://example.org/ns#a4276> <http://example.org/ns#a4276> .
+<http://example.org/ns#a4277> <http://example.org/ns#a4277> <http://example.org/ns#a4277> .
+<http://example.org/ns#a4278> <http://example.org/ns#a4278> <http://example.org/ns#a4278> .
+<http://example.org/ns#a4279> <http://example.org/ns#a4279> <http://example.org/ns#a4279> .
+<http://example.org/ns#a4280> <http://example.org/ns#a4280> <http://example.org/ns#a4280> .
+<http://example.org/ns#a4281> <http://example.org/ns#a4281> <http://example.org/ns#a4281> .
+<http://example.org/ns#a4282> <http://example.org/ns#a4282> <http://example.org/ns#a4282> .
+<http://example.org/ns#a4283> <http://example.org/ns#a4283> <http://example.org/ns#a4283> .
+<http://example.org/ns#a4284> <http://example.org/ns#a4284> <http://example.org/ns#a4284> .
+<http://example.org/ns#a4285> <http://example.org/ns#a4285> <http://example.org/ns#a4285> .
+<http://example.org/ns#a4286> <http://example.org/ns#a4286> <http://example.org/ns#a4286> .
+<http://example.org/ns#a4287> <http://example.org/ns#a4287> <http://example.org/ns#a4287> .
+<http://example.org/ns#a4288> <http://example.org/ns#a4288> <http://example.org/ns#a4288> .
+<http://example.org/ns#a4289> <http://example.org/ns#a4289> <http://example.org/ns#a4289> .
+<http://example.org/ns#a4290> <http://example.org/ns#a4290> <http://example.org/ns#a4290> .
+<http://example.org/ns#a4291> <http://example.org/ns#a4291> <http://example.org/ns#a4291> .
+<http://example.org/ns#a4292> <http://example.org/ns#a4292> <http://example.org/ns#a4292> .
+<http://example.org/ns#a4293> <http://example.org/ns#a4293> <http://example.org/ns#a4293> .
+<http://example.org/ns#a4294> <http://example.org/ns#a4294> <http://example.org/ns#a4294> .
+<http://example.org/ns#a4295> <http://example.org/ns#a4295> <http://example.org/ns#a4295> .
+<http://example.org/ns#a4296> <http://example.org/ns#a4296> <http://example.org/ns#a4296> .
+<http://example.org/ns#a4297> <http://example.org/ns#a4297> <http://example.org/ns#a4297> .
+<http://example.org/ns#a4298> <http://example.org/ns#a4298> <http://example.org/ns#a4298> .
+<http://example.org/ns#a4299> <http://example.org/ns#a4299> <http://example.org/ns#a4299> .
+<http://example.org/ns#a4300> <http://example.org/ns#a4300> <http://example.org/ns#a4300> .
+<http://example.org/ns#a4301> <http://example.org/ns#a4301> <http://example.org/ns#a4301> .
+<http://example.org/ns#a4302> <http://example.org/ns#a4302> <http://example.org/ns#a4302> .
+<http://example.org/ns#a4303> <http://example.org/ns#a4303> <http://example.org/ns#a4303> .
+<http://example.org/ns#a4304> <http://example.org/ns#a4304> <http://example.org/ns#a4304> .
+<http://example.org/ns#a4305> <http://example.org/ns#a4305> <http://example.org/ns#a4305> .
+<http://example.org/ns#a4306> <http://example.org/ns#a4306> <http://example.org/ns#a4306> .
+<http://example.org/ns#a4307> <http://example.org/ns#a4307> <http://example.org/ns#a4307> .
+<http://example.org/ns#a4308> <http://example.org/ns#a4308> <http://example.org/ns#a4308> .
+<http://example.org/ns#a4309> <http://example.org/ns#a4309> <http://example.org/ns#a4309> .
+<http://example.org/ns#a4310> <http://example.org/ns#a4310> <http://example.org/ns#a4310> .
+<http://example.org/ns#a4311> <http://example.org/ns#a4311> <http://example.org/ns#a4311> .
+<http://example.org/ns#a4312> <http://example.org/ns#a4312> <http://example.org/ns#a4312> .
+<http://example.org/ns#a4313> <http://example.org/ns#a4313> <http://example.org/ns#a4313> .
+<http://example.org/ns#a4314> <http://example.org/ns#a4314> <http://example.org/ns#a4314> .
+<http://example.org/ns#a4315> <http://example.org/ns#a4315> <http://example.org/ns#a4315> .
+<http://example.org/ns#a4316> <http://example.org/ns#a4316> <http://example.org/ns#a4316> .
+<http://example.org/ns#a4317> <http://example.org/ns#a4317> <http://example.org/ns#a4317> .
+<http://example.org/ns#a4318> <http://example.org/ns#a4318> <http://example.org/ns#a4318> .
+<http://example.org/ns#a4319> <http://example.org/ns#a4319> <http://example.org/ns#a4319> .
+<http://example.org/ns#a4320> <http://example.org/ns#a4320> <http://example.org/ns#a4320> .
+<http://example.org/ns#a4321> <http://example.org/ns#a4321> <http://example.org/ns#a4321> .
+<http://example.org/ns#a4322> <http://example.org/ns#a4322> <http://example.org/ns#a4322> .
+<http://example.org/ns#a4323> <http://example.org/ns#a4323> <http://example.org/ns#a4323> .
+<http://example.org/ns#a4324> <http://example.org/ns#a4324> <http://example.org/ns#a4324> .
+<http://example.org/ns#a4325> <http://example.org/ns#a4325> <http://example.org/ns#a4325> .
+<http://example.org/ns#a4326> <http://example.org/ns#a4326> <http://example.org/ns#a4326> .
+<http://example.org/ns#a4327> <http://example.org/ns#a4327> <http://example.org/ns#a4327> .
+<http://example.org/ns#a4328> <http://example.org/ns#a4328> <http://example.org/ns#a4328> .
+<http://example.org/ns#a4329> <http://example.org/ns#a4329> <http://example.org/ns#a4329> .
+<http://example.org/ns#a4330> <http://example.org/ns#a4330> <http://example.org/ns#a4330> .
+<http://example.org/ns#a4331> <http://example.org/ns#a4331> <http://example.org/ns#a4331> .
+<http://example.org/ns#a4332> <http://example.org/ns#a4332> <http://example.org/ns#a4332> .
+<http://example.org/ns#a4333> <http://example.org/ns#a4333> <http://example.org/ns#a4333> .
+<http://example.org/ns#a4334> <http://example.org/ns#a4334> <http://example.org/ns#a4334> .
+<http://example.org/ns#a4335> <http://example.org/ns#a4335> <http://example.org/ns#a4335> .
+<http://example.org/ns#a4336> <http://example.org/ns#a4336> <http://example.org/ns#a4336> .
+<http://example.org/ns#a4337> <http://example.org/ns#a4337> <http://example.org/ns#a4337> .
+<http://example.org/ns#a4338> <http://example.org/ns#a4338> <http://example.org/ns#a4338> .
+<http://example.org/ns#a4339> <http://example.org/ns#a4339> <http://example.org/ns#a4339> .
+<http://example.org/ns#a4340> <http://example.org/ns#a4340> <http://example.org/ns#a4340> .
+<http://example.org/ns#a4341> <http://example.org/ns#a4341> <http://example.org/ns#a4341> .
+<http://example.org/ns#a4342> <http://example.org/ns#a4342> <http://example.org/ns#a4342> .
+<http://example.org/ns#a4343> <http://example.org/ns#a4343> <http://example.org/ns#a4343> .
+<http://example.org/ns#a4344> <http://example.org/ns#a4344> <http://example.org/ns#a4344> .
+<http://example.org/ns#a4345> <http://example.org/ns#a4345> <http://example.org/ns#a4345> .
+<http://example.org/ns#a4346> <http://example.org/ns#a4346> <http://example.org/ns#a4346> .
+<http://example.org/ns#a4347> <http://example.org/ns#a4347> <http://example.org/ns#a4347> .
+<http://example.org/ns#a4348> <http://example.org/ns#a4348> <http://example.org/ns#a4348> .
+<http://example.org/ns#a4349> <http://example.org/ns#a4349> <http://example.org/ns#a4349> .
+<http://example.org/ns#a4350> <http://example.org/ns#a4350> <http://example.org/ns#a4350> .
+<http://example.org/ns#a4351> <http://example.org/ns#a4351> <http://example.org/ns#a4351> .
+<http://example.org/ns#a4352> <http://example.org/ns#a4352> <http://example.org/ns#a4352> .
+<http://example.org/ns#a4353> <http://example.org/ns#a4353> <http://example.org/ns#a4353> .
+<http://example.org/ns#a4354> <http://example.org/ns#a4354> <http://example.org/ns#a4354> .
+<http://example.org/ns#a4355> <http://example.org/ns#a4355> <http://example.org/ns#a4355> .
+<http://example.org/ns#a4356> <http://example.org/ns#a4356> <http://example.org/ns#a4356> .
+<http://example.org/ns#a4357> <http://example.org/ns#a4357> <http://example.org/ns#a4357> .
+<http://example.org/ns#a4358> <http://example.org/ns#a4358> <http://example.org/ns#a4358> .
+<http://example.org/ns#a4359> <http://example.org/ns#a4359> <http://example.org/ns#a4359> .
+<http://example.org/ns#a4360> <http://example.org/ns#a4360> <http://example.org/ns#a4360> .
+<http://example.org/ns#a4361> <http://example.org/ns#a4361> <http://example.org/ns#a4361> .
+<http://example.org/ns#a4362> <http://example.org/ns#a4362> <http://example.org/ns#a4362> .
+<http://example.org/ns#a4363> <http://example.org/ns#a4363> <http://example.org/ns#a4363> .
+<http://example.org/ns#a4364> <http://example.org/ns#a4364> <http://example.org/ns#a4364> .
+<http://example.org/ns#a4365> <http://example.org/ns#a4365> <http://example.org/ns#a4365> .
+<http://example.org/ns#a4366> <http://example.org/ns#a4366> <http://example.org/ns#a4366> .
+<http://example.org/ns#a4367> <http://example.org/ns#a4367> <http://example.org/ns#a4367> .
+<http://example.org/ns#a4368> <http://example.org/ns#a4368> <http://example.org/ns#a4368> .
+<http://example.org/ns#a4369> <http://example.org/ns#a4369> <http://example.org/ns#a4369> .
+<http://example.org/ns#a4370> <http://example.org/ns#a4370> <http://example.org/ns#a4370> .
+<http://example.org/ns#a4371> <http://example.org/ns#a4371> <http://example.org/ns#a4371> .
+<http://example.org/ns#a4372> <http://example.org/ns#a4372> <http://example.org/ns#a4372> .
+<http://example.org/ns#a4373> <http://example.org/ns#a4373> <http://example.org/ns#a4373> .
+<http://example.org/ns#a4374> <http://example.org/ns#a4374> <http://example.org/ns#a4374> .
+<http://example.org/ns#a4375> <http://example.org/ns#a4375> <http://example.org/ns#a4375> .
+<http://example.org/ns#a4376> <http://example.org/ns#a4376> <http://example.org/ns#a4376> .
+<http://example.org/ns#a4377> <http://example.org/ns#a4377> <http://example.org/ns#a4377> .
+<http://example.org/ns#a4378> <http://example.org/ns#a4378> <http://example.org/ns#a4378> .
+<http://example.org/ns#a4379> <http://example.org/ns#a4379> <http://example.org/ns#a4379> .
+<http://example.org/ns#a4380> <http://example.org/ns#a4380> <http://example.org/ns#a4380> .
+<http://example.org/ns#a4381> <http://example.org/ns#a4381> <http://example.org/ns#a4381> .
+<http://example.org/ns#a4382> <http://example.org/ns#a4382> <http://example.org/ns#a4382> .
+<http://example.org/ns#a4383> <http://example.org/ns#a4383> <http://example.org/ns#a4383> .
+<http://example.org/ns#a4384> <http://example.org/ns#a4384> <http://example.org/ns#a4384> .
+<http://example.org/ns#a4385> <http://example.org/ns#a4385> <http://example.org/ns#a4385> .
+<http://example.org/ns#a4386> <http://example.org/ns#a4386> <http://example.org/ns#a4386> .
+<http://example.org/ns#a4387> <http://example.org/ns#a4387> <http://example.org/ns#a4387> .
+<http://example.org/ns#a4388> <http://example.org/ns#a4388> <http://example.org/ns#a4388> .
+<http://example.org/ns#a4389> <http://example.org/ns#a4389> <http://example.org/ns#a4389> .
+<http://example.org/ns#a4390> <http://example.org/ns#a4390> <http://example.org/ns#a4390> .
+<http://example.org/ns#a4391> <http://example.org/ns#a4391> <http://example.org/ns#a4391> .
+<http://example.org/ns#a4392> <http://example.org/ns#a4392> <http://example.org/ns#a4392> .
+<http://example.org/ns#a4393> <http://example.org/ns#a4393> <http://example.org/ns#a4393> .
+<http://example.org/ns#a4394> <http://example.org/ns#a4394> <http://example.org/ns#a4394> .
+<http://example.org/ns#a4395> <http://example.org/ns#a4395> <http://example.org/ns#a4395> .
+<http://example.org/ns#a4396> <http://example.org/ns#a4396> <http://example.org/ns#a4396> .
+<http://example.org/ns#a4397> <http://example.org/ns#a4397> <http://example.org/ns#a4397> .
+<http://example.org/ns#a4398> <http://example.org/ns#a4398> <http://example.org/ns#a4398> .
+<http://example.org/ns#a4399> <http://example.org/ns#a4399> <http://example.org/ns#a4399> .
+<http://example.org/ns#a4400> <http://example.org/ns#a4400> <http://example.org/ns#a4400> .
+<http://example.org/ns#a4401> <http://example.org/ns#a4401> <http://example.org/ns#a4401> .
+<http://example.org/ns#a4402> <http://example.org/ns#a4402> <http://example.org/ns#a4402> .
+<http://example.org/ns#a4403> <http://example.org/ns#a4403> <http://example.org/ns#a4403> .
+<http://example.org/ns#a4404> <http://example.org/ns#a4404> <http://example.org/ns#a4404> .
+<http://example.org/ns#a4405> <http://example.org/ns#a4405> <http://example.org/ns#a4405> .
+<http://example.org/ns#a4406> <http://example.org/ns#a4406> <http://example.org/ns#a4406> .
+<http://example.org/ns#a4407> <http://example.org/ns#a4407> <http://example.org/ns#a4407> .
+<http://example.org/ns#a4408> <http://example.org/ns#a4408> <http://example.org/ns#a4408> .
+<http://example.org/ns#a4409> <http://example.org/ns#a4409> <http://example.org/ns#a4409> .
+<http://example.org/ns#a4410> <http://example.org/ns#a4410> <http://example.org/ns#a4410> .
+<http://example.org/ns#a4411> <http://example.org/ns#a4411> <http://example.org/ns#a4411> .
+<http://example.org/ns#a4412> <http://example.org/ns#a4412> <http://example.org/ns#a4412> .
+<http://example.org/ns#a4413> <http://example.org/ns#a4413> <http://example.org/ns#a4413> .
+<http://example.org/ns#a4414> <http://example.org/ns#a4414> <http://example.org/ns#a4414> .
+<http://example.org/ns#a4415> <http://example.org/ns#a4415> <http://example.org/ns#a4415> .
+<http://example.org/ns#a4416> <http://example.org/ns#a4416> <http://example.org/ns#a4416> .
+<http://example.org/ns#a4417> <http://example.org/ns#a4417> <http://example.org/ns#a4417> .
+<http://example.org/ns#a4418> <http://example.org/ns#a4418> <http://example.org/ns#a4418> .
+<http://example.org/ns#a4419> <http://example.org/ns#a4419> <http://example.org/ns#a4419> .
+<http://example.org/ns#a4420> <http://example.org/ns#a4420> <http://example.org/ns#a4420> .
+<http://example.org/ns#a4421> <http://example.org/ns#a4421> <http://example.org/ns#a4421> .
+<http://example.org/ns#a4422> <http://example.org/ns#a4422> <http://example.org/ns#a4422> .
+<http://example.org/ns#a4423> <http://example.org/ns#a4423> <http://example.org/ns#a4423> .
+<http://example.org/ns#a4424> <http://example.org/ns#a4424> <http://example.org/ns#a4424> .
+<http://example.org/ns#a4425> <http://example.org/ns#a4425> <http://example.org/ns#a4425> .
+<http://example.org/ns#a4426> <http://example.org/ns#a4426> <http://example.org/ns#a4426> .
+<http://example.org/ns#a4427> <http://example.org/ns#a4427> <http://example.org/ns#a4427> .
+<http://example.org/ns#a4428> <http://example.org/ns#a4428> <http://example.org/ns#a4428> .
+<http://example.org/ns#a4429> <http://example.org/ns#a4429> <http://example.org/ns#a4429> .
+<http://example.org/ns#a4430> <http://example.org/ns#a4430> <http://example.org/ns#a4430> .
+<http://example.org/ns#a4431> <http://example.org/ns#a4431> <http://example.org/ns#a4431> .
+<http://example.org/ns#a4432> <http://example.org/ns#a4432> <http://example.org/ns#a4432> .
+<http://example.org/ns#a4433> <http://example.org/ns#a4433> <http://example.org/ns#a4433> .
+<http://example.org/ns#a4434> <http://example.org/ns#a4434> <http://example.org/ns#a4434> .
+<http://example.org/ns#a4435> <http://example.org/ns#a4435> <http://example.org/ns#a4435> .
+<http://example.org/ns#a4436> <http://example.org/ns#a4436> <http://example.org/ns#a4436> .
+<http://example.org/ns#a4437> <http://example.org/ns#a4437> <http://example.org/ns#a4437> .
+<http://example.org/ns#a4438> <http://example.org/ns#a4438> <http://example.org/ns#a4438> .
+<http://example.org/ns#a4439> <http://example.org/ns#a4439> <http://example.org/ns#a4439> .
+<http://example.org/ns#a4440> <http://example.org/ns#a4440> <http://example.org/ns#a4440> .
+<http://example.org/ns#a4441> <http://example.org/ns#a4441> <http://example.org/ns#a4441> .
+<http://example.org/ns#a4442> <http://example.org/ns#a4442> <http://example.org/ns#a4442> .
+<http://example.org/ns#a4443> <http://example.org/ns#a4443> <http://example.org/ns#a4443> .
+<http://example.org/ns#a4444> <http://example.org/ns#a4444> <http://example.org/ns#a4444> .
+<http://example.org/ns#a4445> <http://example.org/ns#a4445> <http://example.org/ns#a4445> .
+<http://example.org/ns#a4446> <http://example.org/ns#a4446> <http://example.org/ns#a4446> .
+<http://example.org/ns#a4447> <http://example.org/ns#a4447> <http://example.org/ns#a4447> .
+<http://example.org/ns#a4448> <http://example.org/ns#a4448> <http://example.org/ns#a4448> .
+<http://example.org/ns#a4449> <http://example.org/ns#a4449> <http://example.org/ns#a4449> .
+<http://example.org/ns#a4450> <http://example.org/ns#a4450> <http://example.org/ns#a4450> .
+<http://example.org/ns#a4451> <http://example.org/ns#a4451> <http://example.org/ns#a4451> .
+<http://example.org/ns#a4452> <http://example.org/ns#a4452> <http://example.org/ns#a4452> .
+<http://example.org/ns#a4453> <http://example.org/ns#a4453> <http://example.org/ns#a4453> .
+<http://example.org/ns#a4454> <http://example.org/ns#a4454> <http://example.org/ns#a4454> .
+<http://example.org/ns#a4455> <http://example.org/ns#a4455> <http://example.org/ns#a4455> .
+<http://example.org/ns#a4456> <http://example.org/ns#a4456> <http://example.org/ns#a4456> .
+<http://example.org/ns#a4457> <http://example.org/ns#a4457> <http://example.org/ns#a4457> .
+<http://example.org/ns#a4458> <http://example.org/ns#a4458> <http://example.org/ns#a4458> .
+<http://example.org/ns#a4459> <http://example.org/ns#a4459> <http://example.org/ns#a4459> .
+<http://example.org/ns#a4460> <http://example.org/ns#a4460> <http://example.org/ns#a4460> .
+<http://example.org/ns#a4461> <http://example.org/ns#a4461> <http://example.org/ns#a4461> .
+<http://example.org/ns#a4462> <http://example.org/ns#a4462> <http://example.org/ns#a4462> .
+<http://example.org/ns#a4463> <http://example.org/ns#a4463> <http://example.org/ns#a4463> .
+<http://example.org/ns#a4464> <http://example.org/ns#a4464> <http://example.org/ns#a4464> .
+<http://example.org/ns#a4465> <http://example.org/ns#a4465> <http://example.org/ns#a4465> .
+<http://example.org/ns#a4466> <http://example.org/ns#a4466> <http://example.org/ns#a4466> .
+<http://example.org/ns#a4467> <http://example.org/ns#a4467> <http://example.org/ns#a4467> .
+<http://example.org/ns#a4468> <http://example.org/ns#a4468> <http://example.org/ns#a4468> .
+<http://example.org/ns#a4469> <http://example.org/ns#a4469> <http://example.org/ns#a4469> .
+<http://example.org/ns#a4470> <http://example.org/ns#a4470> <http://example.org/ns#a4470> .
+<http://example.org/ns#a4471> <http://example.org/ns#a4471> <http://example.org/ns#a4471> .
+<http://example.org/ns#a4472> <http://example.org/ns#a4472> <http://example.org/ns#a4472> .
+<http://example.org/ns#a4473> <http://example.org/ns#a4473> <http://example.org/ns#a4473> .
+<http://example.org/ns#a4474> <http://example.org/ns#a4474> <http://example.org/ns#a4474> .
+<http://example.org/ns#a4475> <http://example.org/ns#a4475> <http://example.org/ns#a4475> .
+<http://example.org/ns#a4476> <http://example.org/ns#a4476> <http://example.org/ns#a4476> .
+<http://example.org/ns#a4477> <http://example.org/ns#a4477> <http://example.org/ns#a4477> .
+<http://example.org/ns#a4478> <http://example.org/ns#a4478> <http://example.org/ns#a4478> .
+<http://example.org/ns#a4479> <http://example.org/ns#a4479> <http://example.org/ns#a4479> .
+<http://example.org/ns#a4480> <http://example.org/ns#a4480> <http://example.org/ns#a4480> .
+<http://example.org/ns#a4481> <http://example.org/ns#a4481> <http://example.org/ns#a4481> .
+<http://example.org/ns#a4482> <http://example.org/ns#a4482> <http://example.org/ns#a4482> .
+<http://example.org/ns#a4483> <http://example.org/ns#a4483> <http://example.org/ns#a4483> .
+<http://example.org/ns#a4484> <http://example.org/ns#a4484> <http://example.org/ns#a4484> .
+<http://example.org/ns#a4485> <http://example.org/ns#a4485> <http://example.org/ns#a4485> .
+<http://example.org/ns#a4486> <http://example.org/ns#a4486> <http://example.org/ns#a4486> .
+<http://example.org/ns#a4487> <http://example.org/ns#a4487> <http://example.org/ns#a4487> .
+<http://example.org/ns#a4488> <http://example.org/ns#a4488> <http://example.org/ns#a4488> .
+<http://example.org/ns#a4489> <http://example.org/ns#a4489> <http://example.org/ns#a4489> .
+<http://example.org/ns#a4490> <http://example.org/ns#a4490> <http://example.org/ns#a4490> .
+<http://example.org/ns#a4491> <http://example.org/ns#a4491> <http://example.org/ns#a4491> .
+<http://example.org/ns#a4492> <http://example.org/ns#a4492> <http://example.org/ns#a4492> .
+<http://example.org/ns#a4493> <http://example.org/ns#a4493> <http://example.org/ns#a4493> .
+<http://example.org/ns#a4494> <http://example.org/ns#a4494> <http://example.org/ns#a4494> .
+<http://example.org/ns#a4495> <http://example.org/ns#a4495> <http://example.org/ns#a4495> .
+<http://example.org/ns#a4496> <http://example.org/ns#a4496> <http://example.org/ns#a4496> .
+<http://example.org/ns#a4497> <http://example.org/ns#a4497> <http://example.org/ns#a4497> .
+<http://example.org/ns#a4498> <http://example.org/ns#a4498> <http://example.org/ns#a4498> .
+<http://example.org/ns#a4499> <http://example.org/ns#a4499> <http://example.org/ns#a4499> .
+<http://example.org/ns#a4500> <http://example.org/ns#a4500> <http://example.org/ns#a4500> .
+<http://example.org/ns#a4501> <http://example.org/ns#a4501> <http://example.org/ns#a4501> .
+<http://example.org/ns#a4502> <http://example.org/ns#a4502> <http://example.org/ns#a4502> .
+<http://example.org/ns#a4503> <http://example.org/ns#a4503> <http://example.org/ns#a4503> .
+<http://example.org/ns#a4504> <http://example.org/ns#a4504> <http://example.org/ns#a4504> .
+<http://example.org/ns#a4505> <http://example.org/ns#a4505> <http://example.org/ns#a4505> .
+<http://example.org/ns#a4506> <http://example.org/ns#a4506> <http://example.org/ns#a4506> .
+<http://example.org/ns#a4507> <http://example.org/ns#a4507> <http://example.org/ns#a4507> .
+<http://example.org/ns#a4508> <http://example.org/ns#a4508> <http://example.org/ns#a4508> .
+<http://example.org/ns#a4509> <http://example.org/ns#a4509> <http://example.org/ns#a4509> .
+<http://example.org/ns#a4510> <http://example.org/ns#a4510> <http://example.org/ns#a4510> .
+<http://example.org/ns#a4511> <http://example.org/ns#a4511> <http://example.org/ns#a4511> .
+<http://example.org/ns#a4512> <http://example.org/ns#a4512> <http://example.org/ns#a4512> .
+<http://example.org/ns#a4513> <http://example.org/ns#a4513> <http://example.org/ns#a4513> .
+<http://example.org/ns#a4514> <http://example.org/ns#a4514> <http://example.org/ns#a4514> .
+<http://example.org/ns#a4515> <http://example.org/ns#a4515> <http://example.org/ns#a4515> .
+<http://example.org/ns#a4516> <http://example.org/ns#a4516> <http://example.org/ns#a4516> .
+<http://example.org/ns#a4517> <http://example.org/ns#a4517> <http://example.org/ns#a4517> .
+<http://example.org/ns#a4518> <http://example.org/ns#a4518> <http://example.org/ns#a4518> .
+<http://example.org/ns#a4519> <http://example.org/ns#a4519> <http://example.org/ns#a4519> .
+<http://example.org/ns#a4520> <http://example.org/ns#a4520> <http://example.org/ns#a4520> .
+<http://example.org/ns#a4521> <http://example.org/ns#a4521> <http://example.org/ns#a4521> .
+<http://example.org/ns#a4522> <http://example.org/ns#a4522> <http://example.org/ns#a4522> .
+<http://example.org/ns#a4523> <http://example.org/ns#a4523> <http://example.org/ns#a4523> .
+<http://example.org/ns#a4524> <http://example.org/ns#a4524> <http://example.org/ns#a4524> .
+<http://example.org/ns#a4525> <http://example.org/ns#a4525> <http://example.org/ns#a4525> .
+<http://example.org/ns#a4526> <http://example.org/ns#a4526> <http://example.org/ns#a4526> .
+<http://example.org/ns#a4527> <http://example.org/ns#a4527> <http://example.org/ns#a4527> .
+<http://example.org/ns#a4528> <http://example.org/ns#a4528> <http://example.org/ns#a4528> .
+<http://example.org/ns#a4529> <http://example.org/ns#a4529> <http://example.org/ns#a4529> .
+<http://example.org/ns#a4530> <http://example.org/ns#a4530> <http://example.org/ns#a4530> .
+<http://example.org/ns#a4531> <http://example.org/ns#a4531> <http://example.org/ns#a4531> .
+<http://example.org/ns#a4532> <http://example.org/ns#a4532> <http://example.org/ns#a4532> .
+<http://example.org/ns#a4533> <http://example.org/ns#a4533> <http://example.org/ns#a4533> .
+<http://example.org/ns#a4534> <http://example.org/ns#a4534> <http://example.org/ns#a4534> .
+<http://example.org/ns#a4535> <http://example.org/ns#a4535> <http://example.org/ns#a4535> .
+<http://example.org/ns#a4536> <http://example.org/ns#a4536> <http://example.org/ns#a4536> .
+<http://example.org/ns#a4537> <http://example.org/ns#a4537> <http://example.org/ns#a4537> .
+<http://example.org/ns#a4538> <http://example.org/ns#a4538> <http://example.org/ns#a4538> .
+<http://example.org/ns#a4539> <http://example.org/ns#a4539> <http://example.org/ns#a4539> .
+<http://example.org/ns#a4540> <http://example.org/ns#a4540> <http://example.org/ns#a4540> .
+<http://example.org/ns#a4541> <http://example.org/ns#a4541> <http://example.org/ns#a4541> .
+<http://example.org/ns#a4542> <http://example.org/ns#a4542> <http://example.org/ns#a4542> .
+<http://example.org/ns#a4543> <http://example.org/ns#a4543> <http://example.org/ns#a4543> .
+<http://example.org/ns#a4544> <http://example.org/ns#a4544> <http://example.org/ns#a4544> .
+<http://example.org/ns#a4545> <http://example.org/ns#a4545> <http://example.org/ns#a4545> .
+<http://example.org/ns#a4546> <http://example.org/ns#a4546> <http://example.org/ns#a4546> .
+<http://example.org/ns#a4547> <http://example.org/ns#a4547> <http://example.org/ns#a4547> .
+<http://example.org/ns#a4548> <http://example.org/ns#a4548> <http://example.org/ns#a4548> .
+<http://example.org/ns#a4549> <http://example.org/ns#a4549> <http://example.org/ns#a4549> .
+<http://example.org/ns#a4550> <http://example.org/ns#a4550> <http://example.org/ns#a4550> .
+<http://example.org/ns#a4551> <http://example.org/ns#a4551> <http://example.org/ns#a4551> .
+<http://example.org/ns#a4552> <http://example.org/ns#a4552> <http://example.org/ns#a4552> .
+<http://example.org/ns#a4553> <http://example.org/ns#a4553> <http://example.org/ns#a4553> .
+<http://example.org/ns#a4554> <http://example.org/ns#a4554> <http://example.org/ns#a4554> .
+<http://example.org/ns#a4555> <http://example.org/ns#a4555> <http://example.org/ns#a4555> .
+<http://example.org/ns#a4556> <http://example.org/ns#a4556> <http://example.org/ns#a4556> .
+<http://example.org/ns#a4557> <http://example.org/ns#a4557> <http://example.org/ns#a4557> .
+<http://example.org/ns#a4558> <http://example.org/ns#a4558> <http://example.org/ns#a4558> .
+<http://example.org/ns#a4559> <http://example.org/ns#a4559> <http://example.org/ns#a4559> .
+<http://example.org/ns#a4560> <http://example.org/ns#a4560> <http://example.org/ns#a4560> .
+<http://example.org/ns#a4561> <http://example.org/ns#a4561> <http://example.org/ns#a4561> .
+<http://example.org/ns#a4562> <http://example.org/ns#a4562> <http://example.org/ns#a4562> .
+<http://example.org/ns#a4563> <http://example.org/ns#a4563> <http://example.org/ns#a4563> .
+<http://example.org/ns#a4564> <http://example.org/ns#a4564> <http://example.org/ns#a4564> .
+<http://example.org/ns#a4565> <http://example.org/ns#a4565> <http://example.org/ns#a4565> .
+<http://example.org/ns#a4566> <http://example.org/ns#a4566> <http://example.org/ns#a4566> .
+<http://example.org/ns#a4567> <http://example.org/ns#a4567> <http://example.org/ns#a4567> .
+<http://example.org/ns#a4568> <http://example.org/ns#a4568> <http://example.org/ns#a4568> .
+<http://example.org/ns#a4569> <http://example.org/ns#a4569> <http://example.org/ns#a4569> .
+<http://example.org/ns#a4570> <http://example.org/ns#a4570> <http://example.org/ns#a4570> .
+<http://example.org/ns#a4571> <http://example.org/ns#a4571> <http://example.org/ns#a4571> .
+<http://example.org/ns#a4572> <http://example.org/ns#a4572> <http://example.org/ns#a4572> .
+<http://example.org/ns#a4573> <http://example.org/ns#a4573> <http://example.org/ns#a4573> .
+<http://example.org/ns#a4574> <http://example.org/ns#a4574> <http://example.org/ns#a4574> .
+<http://example.org/ns#a4575> <http://example.org/ns#a4575> <http://example.org/ns#a4575> .
+<http://example.org/ns#a4576> <http://example.org/ns#a4576> <http://example.org/ns#a4576> .
+<http://example.org/ns#a4577> <http://example.org/ns#a4577> <http://example.org/ns#a4577> .
+<http://example.org/ns#a4578> <http://example.org/ns#a4578> <http://example.org/ns#a4578> .
+<http://example.org/ns#a4579> <http://example.org/ns#a4579> <http://example.org/ns#a4579> .
+<http://example.org/ns#a4580> <http://example.org/ns#a4580> <http://example.org/ns#a4580> .
+<http://example.org/ns#a4581> <http://example.org/ns#a4581> <http://example.org/ns#a4581> .
+<http://example.org/ns#a4582> <http://example.org/ns#a4582> <http://example.org/ns#a4582> .
+<http://example.org/ns#a4583> <http://example.org/ns#a4583> <http://example.org/ns#a4583> .
+<http://example.org/ns#a4584> <http://example.org/ns#a4584> <http://example.org/ns#a4584> .
+<http://example.org/ns#a4585> <http://example.org/ns#a4585> <http://example.org/ns#a4585> .
+<http://example.org/ns#a4586> <http://example.org/ns#a4586> <http://example.org/ns#a4586> .
+<http://example.org/ns#a4587> <http://example.org/ns#a4587> <http://example.org/ns#a4587> .
+<http://example.org/ns#a4588> <http://example.org/ns#a4588> <http://example.org/ns#a4588> .
+<http://example.org/ns#a4589> <http://example.org/ns#a4589> <http://example.org/ns#a4589> .
+<http://example.org/ns#a4590> <http://example.org/ns#a4590> <http://example.org/ns#a4590> .
+<http://example.org/ns#a4591> <http://example.org/ns#a4591> <http://example.org/ns#a4591> .
+<http://example.org/ns#a4592> <http://example.org/ns#a4592> <http://example.org/ns#a4592> .
+<http://example.org/ns#a4593> <http://example.org/ns#a4593> <http://example.org/ns#a4593> .
+<http://example.org/ns#a4594> <http://example.org/ns#a4594> <http://example.org/ns#a4594> .
+<http://example.org/ns#a4595> <http://example.org/ns#a4595> <http://example.org/ns#a4595> .
+<http://example.org/ns#a4596> <http://example.org/ns#a4596> <http://example.org/ns#a4596> .
+<http://example.org/ns#a4597> <http://example.org/ns#a4597> <http://example.org/ns#a4597> .
+<http://example.org/ns#a4598> <http://example.org/ns#a4598> <http://example.org/ns#a4598> .
+<http://example.org/ns#a4599> <http://example.org/ns#a4599> <http://example.org/ns#a4599> .
+<http://example.org/ns#a4600> <http://example.org/ns#a4600> <http://example.org/ns#a4600> .
+<http://example.org/ns#a4601> <http://example.org/ns#a4601> <http://example.org/ns#a4601> .
+<http://example.org/ns#a4602> <http://example.org/ns#a4602> <http://example.org/ns#a4602> .
+<http://example.org/ns#a4603> <http://example.org/ns#a4603> <http://example.org/ns#a4603> .
+<http://example.org/ns#a4604> <http://example.org/ns#a4604> <http://example.org/ns#a4604> .
+<http://example.org/ns#a4605> <http://example.org/ns#a4605> <http://example.org/ns#a4605> .
+<http://example.org/ns#a4606> <http://example.org/ns#a4606> <http://example.org/ns#a4606> .
+<http://example.org/ns#a4607> <http://example.org/ns#a4607> <http://example.org/ns#a4607> .
+<http://example.org/ns#a4608> <http://example.org/ns#a4608> <http://example.org/ns#a4608> .
+<http://example.org/ns#a4609> <http://example.org/ns#a4609> <http://example.org/ns#a4609> .
+<http://example.org/ns#a4610> <http://example.org/ns#a4610> <http://example.org/ns#a4610> .
+<http://example.org/ns#a4611> <http://example.org/ns#a4611> <http://example.org/ns#a4611> .
+<http://example.org/ns#a4612> <http://example.org/ns#a4612> <http://example.org/ns#a4612> .
+<http://example.org/ns#a4613> <http://example.org/ns#a4613> <http://example.org/ns#a4613> .
+<http://example.org/ns#a4614> <http://example.org/ns#a4614> <http://example.org/ns#a4614> .
+<http://example.org/ns#a4615> <http://example.org/ns#a4615> <http://example.org/ns#a4615> .
+<http://example.org/ns#a4616> <http://example.org/ns#a4616> <http://example.org/ns#a4616> .
+<http://example.org/ns#a4617> <http://example.org/ns#a4617> <http://example.org/ns#a4617> .
+<http://example.org/ns#a4618> <http://example.org/ns#a4618> <http://example.org/ns#a4618> .
+<http://example.org/ns#a4619> <http://example.org/ns#a4619> <http://example.org/ns#a4619> .
+<http://example.org/ns#a4620> <http://example.org/ns#a4620> <http://example.org/ns#a4620> .
+<http://example.org/ns#a4621> <http://example.org/ns#a4621> <http://example.org/ns#a4621> .
+<http://example.org/ns#a4622> <http://example.org/ns#a4622> <http://example.org/ns#a4622> .
+<http://example.org/ns#a4623> <http://example.org/ns#a4623> <http://example.org/ns#a4623> .
+<http://example.org/ns#a4624> <http://example.org/ns#a4624> <http://example.org/ns#a4624> .
+<http://example.org/ns#a4625> <http://example.org/ns#a4625> <http://example.org/ns#a4625> .
+<http://example.org/ns#a4626> <http://example.org/ns#a4626> <http://example.org/ns#a4626> .
+<http://example.org/ns#a4627> <http://example.org/ns#a4627> <http://example.org/ns#a4627> .
+<http://example.org/ns#a4628> <http://example.org/ns#a4628> <http://example.org/ns#a4628> .
+<http://example.org/ns#a4629> <http://example.org/ns#a4629> <http://example.org/ns#a4629> .
+<http://example.org/ns#a4630> <http://example.org/ns#a4630> <http://example.org/ns#a4630> .
+<http://example.org/ns#a4631> <http://example.org/ns#a4631> <http://example.org/ns#a4631> .
+<http://example.org/ns#a4632> <http://example.org/ns#a4632> <http://example.org/ns#a4632> .
+<http://example.org/ns#a4633> <http://example.org/ns#a4633> <http://example.org/ns#a4633> .
+<http://example.org/ns#a4634> <http://example.org/ns#a4634> <http://example.org/ns#a4634> .
+<http://example.org/ns#a4635> <http://example.org/ns#a4635> <http://example.org/ns#a4635> .
+<http://example.org/ns#a4636> <http://example.org/ns#a4636> <http://example.org/ns#a4636> .
+<http://example.org/ns#a4637> <http://example.org/ns#a4637> <http://example.org/ns#a4637> .
+<http://example.org/ns#a4638> <http://example.org/ns#a4638> <http://example.org/ns#a4638> .
+<http://example.org/ns#a4639> <http://example.org/ns#a4639> <http://example.org/ns#a4639> .
+<http://example.org/ns#a4640> <http://example.org/ns#a4640> <http://example.org/ns#a4640> .
+<http://example.org/ns#a4641> <http://example.org/ns#a4641> <http://example.org/ns#a4641> .
+<http://example.org/ns#a4642> <http://example.org/ns#a4642> <http://example.org/ns#a4642> .
+<http://example.org/ns#a4643> <http://example.org/ns#a4643> <http://example.org/ns#a4643> .
+<http://example.org/ns#a4644> <http://example.org/ns#a4644> <http://example.org/ns#a4644> .
+<http://example.org/ns#a4645> <http://example.org/ns#a4645> <http://example.org/ns#a4645> .
+<http://example.org/ns#a4646> <http://example.org/ns#a4646> <http://example.org/ns#a4646> .
+<http://example.org/ns#a4647> <http://example.org/ns#a4647> <http://example.org/ns#a4647> .
+<http://example.org/ns#a4648> <http://example.org/ns#a4648> <http://example.org/ns#a4648> .
+<http://example.org/ns#a4649> <http://example.org/ns#a4649> <http://example.org/ns#a4649> .
+<http://example.org/ns#a4650> <http://example.org/ns#a4650> <http://example.org/ns#a4650> .
+<http://example.org/ns#a4651> <http://example.org/ns#a4651> <http://example.org/ns#a4651> .
+<http://example.org/ns#a4652> <http://example.org/ns#a4652> <http://example.org/ns#a4652> .
+<http://example.org/ns#a4653> <http://example.org/ns#a4653> <http://example.org/ns#a4653> .
+<http://example.org/ns#a4654> <http://example.org/ns#a4654> <http://example.org/ns#a4654> .
+<http://example.org/ns#a4655> <http://example.org/ns#a4655> <http://example.org/ns#a4655> .
+<http://example.org/ns#a4656> <http://example.org/ns#a4656> <http://example.org/ns#a4656> .
+<http://example.org/ns#a4657> <http://example.org/ns#a4657> <http://example.org/ns#a4657> .
+<http://example.org/ns#a4658> <http://example.org/ns#a4658> <http://example.org/ns#a4658> .
+<http://example.org/ns#a4659> <http://example.org/ns#a4659> <http://example.org/ns#a4659> .
+<http://example.org/ns#a4660> <http://example.org/ns#a4660> <http://example.org/ns#a4660> .
+<http://example.org/ns#a4661> <http://example.org/ns#a4661> <http://example.org/ns#a4661> .
+<http://example.org/ns#a4662> <http://example.org/ns#a4662> <http://example.org/ns#a4662> .
+<http://example.org/ns#a4663> <http://example.org/ns#a4663> <http://example.org/ns#a4663> .
+<http://example.org/ns#a4664> <http://example.org/ns#a4664> <http://example.org/ns#a4664> .
+<http://example.org/ns#a4665> <http://example.org/ns#a4665> <http://example.org/ns#a4665> .
+<http://example.org/ns#a4666> <http://example.org/ns#a4666> <http://example.org/ns#a4666> .
+<http://example.org/ns#a4667> <http://example.org/ns#a4667> <http://example.org/ns#a4667> .
+<http://example.org/ns#a4668> <http://example.org/ns#a4668> <http://example.org/ns#a4668> .
+<http://example.org/ns#a4669> <http://example.org/ns#a4669> <http://example.org/ns#a4669> .
+<http://example.org/ns#a4670> <http://example.org/ns#a4670> <http://example.org/ns#a4670> .
+<http://example.org/ns#a4671> <http://example.org/ns#a4671> <http://example.org/ns#a4671> .
+<http://example.org/ns#a4672> <http://example.org/ns#a4672> <http://example.org/ns#a4672> .
+<http://example.org/ns#a4673> <http://example.org/ns#a4673> <http://example.org/ns#a4673> .
+<http://example.org/ns#a4674> <http://example.org/ns#a4674> <http://example.org/ns#a4674> .
+<http://example.org/ns#a4675> <http://example.org/ns#a4675> <http://example.org/ns#a4675> .
+<http://example.org/ns#a4676> <http://example.org/ns#a4676> <http://example.org/ns#a4676> .
+<http://example.org/ns#a4677> <http://example.org/ns#a4677> <http://example.org/ns#a4677> .
+<http://example.org/ns#a4678> <http://example.org/ns#a4678> <http://example.org/ns#a4678> .
+<http://example.org/ns#a4679> <http://example.org/ns#a4679> <http://example.org/ns#a4679> .
+<http://example.org/ns#a4680> <http://example.org/ns#a4680> <http://example.org/ns#a4680> .
+<http://example.org/ns#a4681> <http://example.org/ns#a4681> <http://example.org/ns#a4681> .
+<http://example.org/ns#a4682> <http://example.org/ns#a4682> <http://example.org/ns#a4682> .
+<http://example.org/ns#a4683> <http://example.org/ns#a4683> <http://example.org/ns#a4683> .
+<http://example.org/ns#a4684> <http://example.org/ns#a4684> <http://example.org/ns#a4684> .
+<http://example.org/ns#a4685> <http://example.org/ns#a4685> <http://example.org/ns#a4685> .
+<http://example.org/ns#a4686> <http://example.org/ns#a4686> <http://example.org/ns#a4686> .
+<http://example.org/ns#a4687> <http://example.org/ns#a4687> <http://example.org/ns#a4687> .
+<http://example.org/ns#a4688> <http://example.org/ns#a4688> <http://example.org/ns#a4688> .
+<http://example.org/ns#a4689> <http://example.org/ns#a4689> <http://example.org/ns#a4689> .
+<http://example.org/ns#a4690> <http://example.org/ns#a4690> <http://example.org/ns#a4690> .
+<http://example.org/ns#a4691> <http://example.org/ns#a4691> <http://example.org/ns#a4691> .
+<http://example.org/ns#a4692> <http://example.org/ns#a4692> <http://example.org/ns#a4692> .
+<http://example.org/ns#a4693> <http://example.org/ns#a4693> <http://example.org/ns#a4693> .
+<http://example.org/ns#a4694> <http://example.org/ns#a4694> <http://example.org/ns#a4694> .
+<http://example.org/ns#a4695> <http://example.org/ns#a4695> <http://example.org/ns#a4695> .
+<http://example.org/ns#a4696> <http://example.org/ns#a4696> <http://example.org/ns#a4696> .
+<http://example.org/ns#a4697> <http://example.org/ns#a4697> <http://example.org/ns#a4697> .
+<http://example.org/ns#a4698> <http://example.org/ns#a4698> <http://example.org/ns#a4698> .
+<http://example.org/ns#a4699> <http://example.org/ns#a4699> <http://example.org/ns#a4699> .
+<http://example.org/ns#a4700> <http://example.org/ns#a4700> <http://example.org/ns#a4700> .
+<http://example.org/ns#a4701> <http://example.org/ns#a4701> <http://example.org/ns#a4701> .
+<http://example.org/ns#a4702> <http://example.org/ns#a4702> <http://example.org/ns#a4702> .
+<http://example.org/ns#a4703> <http://example.org/ns#a4703> <http://example.org/ns#a4703> .
+<http://example.org/ns#a4704> <http://example.org/ns#a4704> <http://example.org/ns#a4704> .
+<http://example.org/ns#a4705> <http://example.org/ns#a4705> <http://example.org/ns#a4705> .
+<http://example.org/ns#a4706> <http://example.org/ns#a4706> <http://example.org/ns#a4706> .
+<http://example.org/ns#a4707> <http://example.org/ns#a4707> <http://example.org/ns#a4707> .
+<http://example.org/ns#a4708> <http://example.org/ns#a4708> <http://example.org/ns#a4708> .
+<http://example.org/ns#a4709> <http://example.org/ns#a4709> <http://example.org/ns#a4709> .
+<http://example.org/ns#a4710> <http://example.org/ns#a4710> <http://example.org/ns#a4710> .
+<http://example.org/ns#a4711> <http://example.org/ns#a4711> <http://example.org/ns#a4711> .
+<http://example.org/ns#a4712> <http://example.org/ns#a4712> <http://example.org/ns#a4712> .
+<http://example.org/ns#a4713> <http://example.org/ns#a4713> <http://example.org/ns#a4713> .
+<http://example.org/ns#a4714> <http://example.org/ns#a4714> <http://example.org/ns#a4714> .
+<http://example.org/ns#a4715> <http://example.org/ns#a4715> <http://example.org/ns#a4715> .
+<http://example.org/ns#a4716> <http://example.org/ns#a4716> <http://example.org/ns#a4716> .
+<http://example.org/ns#a4717> <http://example.org/ns#a4717> <http://example.org/ns#a4717> .
+<http://example.org/ns#a4718> <http://example.org/ns#a4718> <http://example.org/ns#a4718> .
+<http://example.org/ns#a4719> <http://example.org/ns#a4719> <http://example.org/ns#a4719> .
+<http://example.org/ns#a4720> <http://example.org/ns#a4720> <http://example.org/ns#a4720> .
+<http://example.org/ns#a4721> <http://example.org/ns#a4721> <http://example.org/ns#a4721> .
+<http://example.org/ns#a4722> <http://example.org/ns#a4722> <http://example.org/ns#a4722> .
+<http://example.org/ns#a4723> <http://example.org/ns#a4723> <http://example.org/ns#a4723> .
+<http://example.org/ns#a4724> <http://example.org/ns#a4724> <http://example.org/ns#a4724> .
+<http://example.org/ns#a4725> <http://example.org/ns#a4725> <http://example.org/ns#a4725> .
+<http://example.org/ns#a4726> <http://example.org/ns#a4726> <http://example.org/ns#a4726> .
+<http://example.org/ns#a4727> <http://example.org/ns#a4727> <http://example.org/ns#a4727> .
+<http://example.org/ns#a4728> <http://example.org/ns#a4728> <http://example.org/ns#a4728> .
+<http://example.org/ns#a4729> <http://example.org/ns#a4729> <http://example.org/ns#a4729> .
+<http://example.org/ns#a4730> <http://example.org/ns#a4730> <http://example.org/ns#a4730> .
+<http://example.org/ns#a4731> <http://example.org/ns#a4731> <http://example.org/ns#a4731> .
+<http://example.org/ns#a4732> <http://example.org/ns#a4732> <http://example.org/ns#a4732> .
+<http://example.org/ns#a4733> <http://example.org/ns#a4733> <http://example.org/ns#a4733> .
+<http://example.org/ns#a4734> <http://example.org/ns#a4734> <http://example.org/ns#a4734> .
+<http://example.org/ns#a4735> <http://example.org/ns#a4735> <http://example.org/ns#a4735> .
+<http://example.org/ns#a4736> <http://example.org/ns#a4736> <http://example.org/ns#a4736> .
+<http://example.org/ns#a4737> <http://example.org/ns#a4737> <http://example.org/ns#a4737> .
+<http://example.org/ns#a4738> <http://example.org/ns#a4738> <http://example.org/ns#a4738> .
+<http://example.org/ns#a4739> <http://example.org/ns#a4739> <http://example.org/ns#a4739> .
+<http://example.org/ns#a4740> <http://example.org/ns#a4740> <http://example.org/ns#a4740> .
+<http://example.org/ns#a4741> <http://example.org/ns#a4741> <http://example.org/ns#a4741> .
+<http://example.org/ns#a4742> <http://example.org/ns#a4742> <http://example.org/ns#a4742> .
+<http://example.org/ns#a4743> <http://example.org/ns#a4743> <http://example.org/ns#a4743> .
+<http://example.org/ns#a4744> <http://example.org/ns#a4744> <http://example.org/ns#a4744> .
+<http://example.org/ns#a4745> <http://example.org/ns#a4745> <http://example.org/ns#a4745> .
+<http://example.org/ns#a4746> <http://example.org/ns#a4746> <http://example.org/ns#a4746> .
+<http://example.org/ns#a4747> <http://example.org/ns#a4747> <http://example.org/ns#a4747> .
+<http://example.org/ns#a4748> <http://example.org/ns#a4748> <http://example.org/ns#a4748> .
+<http://example.org/ns#a4749> <http://example.org/ns#a4749> <http://example.org/ns#a4749> .
+<http://example.org/ns#a4750> <http://example.org/ns#a4750> <http://example.org/ns#a4750> .
+<http://example.org/ns#a4751> <http://example.org/ns#a4751> <http://example.org/ns#a4751> .
+<http://example.org/ns#a4752> <http://example.org/ns#a4752> <http://example.org/ns#a4752> .
+<http://example.org/ns#a4753> <http://example.org/ns#a4753> <http://example.org/ns#a4753> .
+<http://example.org/ns#a4754> <http://example.org/ns#a4754> <http://example.org/ns#a4754> .
+<http://example.org/ns#a4755> <http://example.org/ns#a4755> <http://example.org/ns#a4755> .
+<http://example.org/ns#a4756> <http://example.org/ns#a4756> <http://example.org/ns#a4756> .
+<http://example.org/ns#a4757> <http://example.org/ns#a4757> <http://example.org/ns#a4757> .
+<http://example.org/ns#a4758> <http://example.org/ns#a4758> <http://example.org/ns#a4758> .
+<http://example.org/ns#a4759> <http://example.org/ns#a4759> <http://example.org/ns#a4759> .
+<http://example.org/ns#a4760> <http://example.org/ns#a4760> <http://example.org/ns#a4760> .
+<http://example.org/ns#a4761> <http://example.org/ns#a4761> <http://example.org/ns#a4761> .
+<http://example.org/ns#a4762> <http://example.org/ns#a4762> <http://example.org/ns#a4762> .
+<http://example.org/ns#a4763> <http://example.org/ns#a4763> <http://example.org/ns#a4763> .
+<http://example.org/ns#a4764> <http://example.org/ns#a4764> <http://example.org/ns#a4764> .
+<http://example.org/ns#a4765> <http://example.org/ns#a4765> <http://example.org/ns#a4765> .
+<http://example.org/ns#a4766> <http://example.org/ns#a4766> <http://example.org/ns#a4766> .
+<http://example.org/ns#a4767> <http://example.org/ns#a4767> <http://example.org/ns#a4767> .
+<http://example.org/ns#a4768> <http://example.org/ns#a4768> <http://example.org/ns#a4768> .
+<http://example.org/ns#a4769> <http://example.org/ns#a4769> <http://example.org/ns#a4769> .
+<http://example.org/ns#a4770> <http://example.org/ns#a4770> <http://example.org/ns#a4770> .
+<http://example.org/ns#a4771> <http://example.org/ns#a4771> <http://example.org/ns#a4771> .
+<http://example.org/ns#a4772> <http://example.org/ns#a4772> <http://example.org/ns#a4772> .
+<http://example.org/ns#a4773> <http://example.org/ns#a4773> <http://example.org/ns#a4773> .
+<http://example.org/ns#a4774> <http://example.org/ns#a4774> <http://example.org/ns#a4774> .
+<http://example.org/ns#a4775> <http://example.org/ns#a4775> <http://example.org/ns#a4775> .
+<http://example.org/ns#a4776> <http://example.org/ns#a4776> <http://example.org/ns#a4776> .
+<http://example.org/ns#a4777> <http://example.org/ns#a4777> <http://example.org/ns#a4777> .
+<http://example.org/ns#a4778> <http://example.org/ns#a4778> <http://example.org/ns#a4778> .
+<http://example.org/ns#a4779> <http://example.org/ns#a4779> <http://example.org/ns#a4779> .
+<http://example.org/ns#a4780> <http://example.org/ns#a4780> <http://example.org/ns#a4780> .
+<http://example.org/ns#a4781> <http://example.org/ns#a4781> <http://example.org/ns#a4781> .
+<http://example.org/ns#a4782> <http://example.org/ns#a4782> <http://example.org/ns#a4782> .
+<http://example.org/ns#a4783> <http://example.org/ns#a4783> <http://example.org/ns#a4783> .
+<http://example.org/ns#a4784> <http://example.org/ns#a4784> <http://example.org/ns#a4784> .
+<http://example.org/ns#a4785> <http://example.org/ns#a4785> <http://example.org/ns#a4785> .
+<http://example.org/ns#a4786> <http://example.org/ns#a4786> <http://example.org/ns#a4786> .
+<http://example.org/ns#a4787> <http://example.org/ns#a4787> <http://example.org/ns#a4787> .
+<http://example.org/ns#a4788> <http://example.org/ns#a4788> <http://example.org/ns#a4788> .
+<http://example.org/ns#a4789> <http://example.org/ns#a4789> <http://example.org/ns#a4789> .
+<http://example.org/ns#a4790> <http://example.org/ns#a4790> <http://example.org/ns#a4790> .
+<http://example.org/ns#a4791> <http://example.org/ns#a4791> <http://example.org/ns#a4791> .
+<http://example.org/ns#a4792> <http://example.org/ns#a4792> <http://example.org/ns#a4792> .
+<http://example.org/ns#a4793> <http://example.org/ns#a4793> <http://example.org/ns#a4793> .
+<http://example.org/ns#a4794> <http://example.org/ns#a4794> <http://example.org/ns#a4794> .
+<http://example.org/ns#a4795> <http://example.org/ns#a4795> <http://example.org/ns#a4795> .
+<http://example.org/ns#a4796> <http://example.org/ns#a4796> <http://example.org/ns#a4796> .
+<http://example.org/ns#a4797> <http://example.org/ns#a4797> <http://example.org/ns#a4797> .
+<http://example.org/ns#a4798> <http://example.org/ns#a4798> <http://example.org/ns#a4798> .
+<http://example.org/ns#a4799> <http://example.org/ns#a4799> <http://example.org/ns#a4799> .
+<http://example.org/ns#a4800> <http://example.org/ns#a4800> <http://example.org/ns#a4800> .
+<http://example.org/ns#a4801> <http://example.org/ns#a4801> <http://example.org/ns#a4801> .
+<http://example.org/ns#a4802> <http://example.org/ns#a4802> <http://example.org/ns#a4802> .
+<http://example.org/ns#a4803> <http://example.org/ns#a4803> <http://example.org/ns#a4803> .
+<http://example.org/ns#a4804> <http://example.org/ns#a4804> <http://example.org/ns#a4804> .
+<http://example.org/ns#a4805> <http://example.org/ns#a4805> <http://example.org/ns#a4805> .
+<http://example.org/ns#a4806> <http://example.org/ns#a4806> <http://example.org/ns#a4806> .
+<http://example.org/ns#a4807> <http://example.org/ns#a4807> <http://example.org/ns#a4807> .
+<http://example.org/ns#a4808> <http://example.org/ns#a4808> <http://example.org/ns#a4808> .
+<http://example.org/ns#a4809> <http://example.org/ns#a4809> <http://example.org/ns#a4809> .
+<http://example.org/ns#a4810> <http://example.org/ns#a4810> <http://example.org/ns#a4810> .
+<http://example.org/ns#a4811> <http://example.org/ns#a4811> <http://example.org/ns#a4811> .
+<http://example.org/ns#a4812> <http://example.org/ns#a4812> <http://example.org/ns#a4812> .
+<http://example.org/ns#a4813> <http://example.org/ns#a4813> <http://example.org/ns#a4813> .
+<http://example.org/ns#a4814> <http://example.org/ns#a4814> <http://example.org/ns#a4814> .
+<http://example.org/ns#a4815> <http://example.org/ns#a4815> <http://example.org/ns#a4815> .
+<http://example.org/ns#a4816> <http://example.org/ns#a4816> <http://example.org/ns#a4816> .
+<http://example.org/ns#a4817> <http://example.org/ns#a4817> <http://example.org/ns#a4817> .
+<http://example.org/ns#a4818> <http://example.org/ns#a4818> <http://example.org/ns#a4818> .
+<http://example.org/ns#a4819> <http://example.org/ns#a4819> <http://example.org/ns#a4819> .
+<http://example.org/ns#a4820> <http://example.org/ns#a4820> <http://example.org/ns#a4820> .
+<http://example.org/ns#a4821> <http://example.org/ns#a4821> <http://example.org/ns#a4821> .
+<http://example.org/ns#a4822> <http://example.org/ns#a4822> <http://example.org/ns#a4822> .
+<http://example.org/ns#a4823> <http://example.org/ns#a4823> <http://example.org/ns#a4823> .
+<http://example.org/ns#a4824> <http://example.org/ns#a4824> <http://example.org/ns#a4824> .
+<http://example.org/ns#a4825> <http://example.org/ns#a4825> <http://example.org/ns#a4825> .
+<http://example.org/ns#a4826> <http://example.org/ns#a4826> <http://example.org/ns#a4826> .
+<http://example.org/ns#a4827> <http://example.org/ns#a4827> <http://example.org/ns#a4827> .
+<http://example.org/ns#a4828> <http://example.org/ns#a4828> <http://example.org/ns#a4828> .
+<http://example.org/ns#a4829> <http://example.org/ns#a4829> <http://example.org/ns#a4829> .
+<http://example.org/ns#a4830> <http://example.org/ns#a4830> <http://example.org/ns#a4830> .
+<http://example.org/ns#a4831> <http://example.org/ns#a4831> <http://example.org/ns#a4831> .
+<http://example.org/ns#a4832> <http://example.org/ns#a4832> <http://example.org/ns#a4832> .
+<http://example.org/ns#a4833> <http://example.org/ns#a4833> <http://example.org/ns#a4833> .
+<http://example.org/ns#a4834> <http://example.org/ns#a4834> <http://example.org/ns#a4834> .
+<http://example.org/ns#a4835> <http://example.org/ns#a4835> <http://example.org/ns#a4835> .
+<http://example.org/ns#a4836> <http://example.org/ns#a4836> <http://example.org/ns#a4836> .
+<http://example.org/ns#a4837> <http://example.org/ns#a4837> <http://example.org/ns#a4837> .
+<http://example.org/ns#a4838> <http://example.org/ns#a4838> <http://example.org/ns#a4838> .
+<http://example.org/ns#a4839> <http://example.org/ns#a4839> <http://example.org/ns#a4839> .
+<http://example.org/ns#a4840> <http://example.org/ns#a4840> <http://example.org/ns#a4840> .
+<http://example.org/ns#a4841> <http://example.org/ns#a4841> <http://example.org/ns#a4841> .
+<http://example.org/ns#a4842> <http://example.org/ns#a4842> <http://example.org/ns#a4842> .
+<http://example.org/ns#a4843> <http://example.org/ns#a4843> <http://example.org/ns#a4843> .
+<http://example.org/ns#a4844> <http://example.org/ns#a4844> <http://example.org/ns#a4844> .
+<http://example.org/ns#a4845> <http://example.org/ns#a4845> <http://example.org/ns#a4845> .
+<http://example.org/ns#a4846> <http://example.org/ns#a4846> <http://example.org/ns#a4846> .
+<http://example.org/ns#a4847> <http://example.org/ns#a4847> <http://example.org/ns#a4847> .
+<http://example.org/ns#a4848> <http://example.org/ns#a4848> <http://example.org/ns#a4848> .
+<http://example.org/ns#a4849> <http://example.org/ns#a4849> <http://example.org/ns#a4849> .
+<http://example.org/ns#a4850> <http://example.org/ns#a4850> <http://example.org/ns#a4850> .
+<http://example.org/ns#a4851> <http://example.org/ns#a4851> <http://example.org/ns#a4851> .
+<http://example.org/ns#a4852> <http://example.org/ns#a4852> <http://example.org/ns#a4852> .
+<http://example.org/ns#a4853> <http://example.org/ns#a4853> <http://example.org/ns#a4853> .
+<http://example.org/ns#a4854> <http://example.org/ns#a4854> <http://example.org/ns#a4854> .
+<http://example.org/ns#a4855> <http://example.org/ns#a4855> <http://example.org/ns#a4855> .
+<http://example.org/ns#a4856> <http://example.org/ns#a4856> <http://example.org/ns#a4856> .
+<http://example.org/ns#a4857> <http://example.org/ns#a4857> <http://example.org/ns#a4857> .
+<http://example.org/ns#a4858> <http://example.org/ns#a4858> <http://example.org/ns#a4858> .
+<http://example.org/ns#a4859> <http://example.org/ns#a4859> <http://example.org/ns#a4859> .
+<http://example.org/ns#a4860> <http://example.org/ns#a4860> <http://example.org/ns#a4860> .
+<http://example.org/ns#a4861> <http://example.org/ns#a4861> <http://example.org/ns#a4861> .
+<http://example.org/ns#a4862> <http://example.org/ns#a4862> <http://example.org/ns#a4862> .
+<http://example.org/ns#a4863> <http://example.org/ns#a4863> <http://example.org/ns#a4863> .
+<http://example.org/ns#a4864> <http://example.org/ns#a4864> <http://example.org/ns#a4864> .
+<http://example.org/ns#a4865> <http://example.org/ns#a4865> <http://example.org/ns#a4865> .
+<http://example.org/ns#a4866> <http://example.org/ns#a4866> <http://example.org/ns#a4866> .
+<http://example.org/ns#a4867> <http://example.org/ns#a4867> <http://example.org/ns#a4867> .
+<http://example.org/ns#a4868> <http://example.org/ns#a4868> <http://example.org/ns#a4868> .
+<http://example.org/ns#a4869> <http://example.org/ns#a4869> <http://example.org/ns#a4869> .
+<http://example.org/ns#a4870> <http://example.org/ns#a4870> <http://example.org/ns#a4870> .
+<http://example.org/ns#a4871> <http://example.org/ns#a4871> <http://example.org/ns#a4871> .
+<http://example.org/ns#a4872> <http://example.org/ns#a4872> <http://example.org/ns#a4872> .
+<http://example.org/ns#a4873> <http://example.org/ns#a4873> <http://example.org/ns#a4873> .
+<http://example.org/ns#a4874> <http://example.org/ns#a4874> <http://example.org/ns#a4874> .
+<http://example.org/ns#a4875> <http://example.org/ns#a4875> <http://example.org/ns#a4875> .
+<http://example.org/ns#a4876> <http://example.org/ns#a4876> <http://example.org/ns#a4876> .
+<http://example.org/ns#a4877> <http://example.org/ns#a4877> <http://example.org/ns#a4877> .
+<http://example.org/ns#a4878> <http://example.org/ns#a4878> <http://example.org/ns#a4878> .
+<http://example.org/ns#a4879> <http://example.org/ns#a4879> <http://example.org/ns#a4879> .
+<http://example.org/ns#a4880> <http://example.org/ns#a4880> <http://example.org/ns#a4880> .
+<http://example.org/ns#a4881> <http://example.org/ns#a4881> <http://example.org/ns#a4881> .
+<http://example.org/ns#a4882> <http://example.org/ns#a4882> <http://example.org/ns#a4882> .
+<http://example.org/ns#a4883> <http://example.org/ns#a4883> <http://example.org/ns#a4883> .
+<http://example.org/ns#a4884> <http://example.org/ns#a4884> <http://example.org/ns#a4884> .
+<http://example.org/ns#a4885> <http://example.org/ns#a4885> <http://example.org/ns#a4885> .
+<http://example.org/ns#a4886> <http://example.org/ns#a4886> <http://example.org/ns#a4886> .
+<http://example.org/ns#a4887> <http://example.org/ns#a4887> <http://example.org/ns#a4887> .
+<http://example.org/ns#a4888> <http://example.org/ns#a4888> <http://example.org/ns#a4888> .
+<http://example.org/ns#a4889> <http://example.org/ns#a4889> <http://example.org/ns#a4889> .
+<http://example.org/ns#a4890> <http://example.org/ns#a4890> <http://example.org/ns#a4890> .
+<http://example.org/ns#a4891> <http://example.org/ns#a4891> <http://example.org/ns#a4891> .
+<http://example.org/ns#a4892> <http://example.org/ns#a4892> <http://example.org/ns#a4892> .
+<http://example.org/ns#a4893> <http://example.org/ns#a4893> <http://example.org/ns#a4893> .
+<http://example.org/ns#a4894> <http://example.org/ns#a4894> <http://example.org/ns#a4894> .
+<http://example.org/ns#a4895> <http://example.org/ns#a4895> <http://example.org/ns#a4895> .
+<http://example.org/ns#a4896> <http://example.org/ns#a4896> <http://example.org/ns#a4896> .
+<http://example.org/ns#a4897> <http://example.org/ns#a4897> <http://example.org/ns#a4897> .
+<http://example.org/ns#a4898> <http://example.org/ns#a4898> <http://example.org/ns#a4898> .
+<http://example.org/ns#a4899> <http://example.org/ns#a4899> <http://example.org/ns#a4899> .
+<http://example.org/ns#a4900> <http://example.org/ns#a4900> <http://example.org/ns#a4900> .
+<http://example.org/ns#a4901> <http://example.org/ns#a4901> <http://example.org/ns#a4901> .
+<http://example.org/ns#a4902> <http://example.org/ns#a4902> <http://example.org/ns#a4902> .
+<http://example.org/ns#a4903> <http://example.org/ns#a4903> <http://example.org/ns#a4903> .
+<http://example.org/ns#a4904> <http://example.org/ns#a4904> <http://example.org/ns#a4904> .
+<http://example.org/ns#a4905> <http://example.org/ns#a4905> <http://example.org/ns#a4905> .
+<http://example.org/ns#a4906> <http://example.org/ns#a4906> <http://example.org/ns#a4906> .
+<http://example.org/ns#a4907> <http://example.org/ns#a4907> <http://example.org/ns#a4907> .
+<http://example.org/ns#a4908> <http://example.org/ns#a4908> <http://example.org/ns#a4908> .
+<http://example.org/ns#a4909> <http://example.org/ns#a4909> <http://example.org/ns#a4909> .
+<http://example.org/ns#a4910> <http://example.org/ns#a4910> <http://example.org/ns#a4910> .
+<http://example.org/ns#a4911> <http://example.org/ns#a4911> <http://example.org/ns#a4911> .
+<http://example.org/ns#a4912> <http://example.org/ns#a4912> <http://example.org/ns#a4912> .
+<http://example.org/ns#a4913> <http://example.org/ns#a4913> <http://example.org/ns#a4913> .
+<http://example.org/ns#a4914> <http://example.org/ns#a4914> <http://example.org/ns#a4914> .
+<http://example.org/ns#a4915> <http://example.org/ns#a4915> <http://example.org/ns#a4915> .
+<http://example.org/ns#a4916> <http://example.org/ns#a4916> <http://example.org/ns#a4916> .
+<http://example.org/ns#a4917> <http://example.org/ns#a4917> <http://example.org/ns#a4917> .
+<http://example.org/ns#a4918> <http://example.org/ns#a4918> <http://example.org/ns#a4918> .
+<http://example.org/ns#a4919> <http://example.org/ns#a4919> <http://example.org/ns#a4919> .
+<http://example.org/ns#a4920> <http://example.org/ns#a4920> <http://example.org/ns#a4920> .
+<http://example.org/ns#a4921> <http://example.org/ns#a4921> <http://example.org/ns#a4921> .
+<http://example.org/ns#a4922> <http://example.org/ns#a4922> <http://example.org/ns#a4922> .
+<http://example.org/ns#a4923> <http://example.org/ns#a4923> <http://example.org/ns#a4923> .
+<http://example.org/ns#a4924> <http://example.org/ns#a4924> <http://example.org/ns#a4924> .
+<http://example.org/ns#a4925> <http://example.org/ns#a4925> <http://example.org/ns#a4925> .
+<http://example.org/ns#a4926> <http://example.org/ns#a4926> <http://example.org/ns#a4926> .
+<http://example.org/ns#a4927> <http://example.org/ns#a4927> <http://example.org/ns#a4927> .
+<http://example.org/ns#a4928> <http://example.org/ns#a4928> <http://example.org/ns#a4928> .
+<http://example.org/ns#a4929> <http://example.org/ns#a4929> <http://example.org/ns#a4929> .
+<http://example.org/ns#a4930> <http://example.org/ns#a4930> <http://example.org/ns#a4930> .
+<http://example.org/ns#a4931> <http://example.org/ns#a4931> <http://example.org/ns#a4931> .
+<http://example.org/ns#a4932> <http://example.org/ns#a4932> <http://example.org/ns#a4932> .
+<http://example.org/ns#a4933> <http://example.org/ns#a4933> <http://example.org/ns#a4933> .
+<http://example.org/ns#a4934> <http://example.org/ns#a4934> <http://example.org/ns#a4934> .
+<http://example.org/ns#a4935> <http://example.org/ns#a4935> <http://example.org/ns#a4935> .
+<http://example.org/ns#a4936> <http://example.org/ns#a4936> <http://example.org/ns#a4936> .
+<http://example.org/ns#a4937> <http://example.org/ns#a4937> <http://example.org/ns#a4937> .
+<http://example.org/ns#a4938> <http://example.org/ns#a4938> <http://example.org/ns#a4938> .
+<http://example.org/ns#a4939> <http://example.org/ns#a4939> <http://example.org/ns#a4939> .
+<http://example.org/ns#a4940> <http://example.org/ns#a4940> <http://example.org/ns#a4940> .
+<http://example.org/ns#a4941> <http://example.org/ns#a4941> <http://example.org/ns#a4941> .
+<http://example.org/ns#a4942> <http://example.org/ns#a4942> <http://example.org/ns#a4942> .
+<http://example.org/ns#a4943> <http://example.org/ns#a4943> <http://example.org/ns#a4943> .
+<http://example.org/ns#a4944> <http://example.org/ns#a4944> <http://example.org/ns#a4944> .
+<http://example.org/ns#a4945> <http://example.org/ns#a4945> <http://example.org/ns#a4945> .
+<http://example.org/ns#a4946> <http://example.org/ns#a4946> <http://example.org/ns#a4946> .
+<http://example.org/ns#a4947> <http://example.org/ns#a4947> <http://example.org/ns#a4947> .
+<http://example.org/ns#a4948> <http://example.org/ns#a4948> <http://example.org/ns#a4948> .
+<http://example.org/ns#a4949> <http://example.org/ns#a4949> <http://example.org/ns#a4949> .
+<http://example.org/ns#a4950> <http://example.org/ns#a4950> <http://example.org/ns#a4950> .
+<http://example.org/ns#a4951> <http://example.org/ns#a4951> <http://example.org/ns#a4951> .
+<http://example.org/ns#a4952> <http://example.org/ns#a4952> <http://example.org/ns#a4952> .
+<http://example.org/ns#a4953> <http://example.org/ns#a4953> <http://example.org/ns#a4953> .
+<http://example.org/ns#a4954> <http://example.org/ns#a4954> <http://example.org/ns#a4954> .
+<http://example.org/ns#a4955> <http://example.org/ns#a4955> <http://example.org/ns#a4955> .
+<http://example.org/ns#a4956> <http://example.org/ns#a4956> <http://example.org/ns#a4956> .
+<http://example.org/ns#a4957> <http://example.org/ns#a4957> <http://example.org/ns#a4957> .
+<http://example.org/ns#a4958> <http://example.org/ns#a4958> <http://example.org/ns#a4958> .
+<http://example.org/ns#a4959> <http://example.org/ns#a4959> <http://example.org/ns#a4959> .
+<http://example.org/ns#a4960> <http://example.org/ns#a4960> <http://example.org/ns#a4960> .
+<http://example.org/ns#a4961> <http://example.org/ns#a4961> <http://example.org/ns#a4961> .
+<http://example.org/ns#a4962> <http://example.org/ns#a4962> <http://example.org/ns#a4962> .
+<http://example.org/ns#a4963> <http://example.org/ns#a4963> <http://example.org/ns#a4963> .
+<http://example.org/ns#a4964> <http://example.org/ns#a4964> <http://example.org/ns#a4964> .
+<http://example.org/ns#a4965> <http://example.org/ns#a4965> <http://example.org/ns#a4965> .
+<http://example.org/ns#a4966> <http://example.org/ns#a4966> <http://example.org/ns#a4966> .
+<http://example.org/ns#a4967> <http://example.org/ns#a4967> <http://example.org/ns#a4967> .
+<http://example.org/ns#a4968> <http://example.org/ns#a4968> <http://example.org/ns#a4968> .
+<http://example.org/ns#a4969> <http://example.org/ns#a4969> <http://example.org/ns#a4969> .
+<http://example.org/ns#a4970> <http://example.org/ns#a4970> <http://example.org/ns#a4970> .
+<http://example.org/ns#a4971> <http://example.org/ns#a4971> <http://example.org/ns#a4971> .
+<http://example.org/ns#a4972> <http://example.org/ns#a4972> <http://example.org/ns#a4972> .
+<http://example.org/ns#a4973> <http://example.org/ns#a4973> <http://example.org/ns#a4973> .
+<http://example.org/ns#a4974> <http://example.org/ns#a4974> <http://example.org/ns#a4974> .
+<http://example.org/ns#a4975> <http://example.org/ns#a4975> <http://example.org/ns#a4975> .
+<http://example.org/ns#a4976> <http://example.org/ns#a4976> <http://example.org/ns#a4976> .
+<http://example.org/ns#a4977> <http://example.org/ns#a4977> <http://example.org/ns#a4977> .
+<http://example.org/ns#a4978> <http://example.org/ns#a4978> <http://example.org/ns#a4978> .
+<http://example.org/ns#a4979> <http://example.org/ns#a4979> <http://example.org/ns#a4979> .
+<http://example.org/ns#a4980> <http://example.org/ns#a4980> <http://example.org/ns#a4980> .
+<http://example.org/ns#a4981> <http://example.org/ns#a4981> <http://example.org/ns#a4981> .
+<http://example.org/ns#a4982> <http://example.org/ns#a4982> <http://example.org/ns#a4982> .
+<http://example.org/ns#a4983> <http://example.org/ns#a4983> <http://example.org/ns#a4983> .
+<http://example.org/ns#a4984> <http://example.org/ns#a4984> <http://example.org/ns#a4984> .
+<http://example.org/ns#a4985> <http://example.org/ns#a4985> <http://example.org/ns#a4985> .
+<http://example.org/ns#a4986> <http://example.org/ns#a4986> <http://example.org/ns#a4986> .
+<http://example.org/ns#a4987> <http://example.org/ns#a4987> <http://example.org/ns#a4987> .
+<http://example.org/ns#a4988> <http://example.org/ns#a4988> <http://example.org/ns#a4988> .
+<http://example.org/ns#a4989> <http://example.org/ns#a4989> <http://example.org/ns#a4989> .
+<http://example.org/ns#a4990> <http://example.org/ns#a4990> <http://example.org/ns#a4990> .
+<http://example.org/ns#a4991> <http://example.org/ns#a4991> <http://example.org/ns#a4991> .
+<http://example.org/ns#a4992> <http://example.org/ns#a4992> <http://example.org/ns#a4992> .
+<http://example.org/ns#a4993> <http://example.org/ns#a4993> <http://example.org/ns#a4993> .
+<http://example.org/ns#a4994> <http://example.org/ns#a4994> <http://example.org/ns#a4994> .
+<http://example.org/ns#a4995> <http://example.org/ns#a4995> <http://example.org/ns#a4995> .
+<http://example.org/ns#a4996> <http://example.org/ns#a4996> <http://example.org/ns#a4996> .
+<http://example.org/ns#a4997> <http://example.org/ns#a4997> <http://example.org/ns#a4997> .
+<http://example.org/ns#a4998> <http://example.org/ns#a4998> <http://example.org/ns#a4998> .
+<http://example.org/ns#a4999> <http://example.org/ns#a4999> <http://example.org/ns#a4999> .
+<http://example.org/ns#a5000> <http://example.org/ns#a5000> <http://example.org/ns#a5000> .
+<http://example.org/ns#a5001> <http://example.org/ns#a5001> <http://example.org/ns#a5001> .
+<http://example.org/ns#a5002> <http://example.org/ns#a5002> <http://example.org/ns#a5002> .
+<http://example.org/ns#a5003> <http://example.org/ns#a5003> <http://example.org/ns#a5003> .
+<http://example.org/ns#a5004> <http://example.org/ns#a5004> <http://example.org/ns#a5004> .
+<http://example.org/ns#a5005> <http://example.org/ns#a5005> <http://example.org/ns#a5005> .
+<http://example.org/ns#a5006> <http://example.org/ns#a5006> <http://example.org/ns#a5006> .
+<http://example.org/ns#a5007> <http://example.org/ns#a5007> <http://example.org/ns#a5007> .
+<http://example.org/ns#a5008> <http://example.org/ns#a5008> <http://example.org/ns#a5008> .
+<http://example.org/ns#a5009> <http://example.org/ns#a5009> <http://example.org/ns#a5009> .
+<http://example.org/ns#a5010> <http://example.org/ns#a5010> <http://example.org/ns#a5010> .
+<http://example.org/ns#a5011> <http://example.org/ns#a5011> <http://example.org/ns#a5011> .
+<http://example.org/ns#a5012> <http://example.org/ns#a5012> <http://example.org/ns#a5012> .
+<http://example.org/ns#a5013> <http://example.org/ns#a5013> <http://example.org/ns#a5013> .
+<http://example.org/ns#a5014> <http://example.org/ns#a5014> <http://example.org/ns#a5014> .
+<http://example.org/ns#a5015> <http://example.org/ns#a5015> <http://example.org/ns#a5015> .
+<http://example.org/ns#a5016> <http://example.org/ns#a5016> <http://example.org/ns#a5016> .
+<http://example.org/ns#a5017> <http://example.org/ns#a5017> <http://example.org/ns#a5017> .
+<http://example.org/ns#a5018> <http://example.org/ns#a5018> <http://example.org/ns#a5018> .
+<http://example.org/ns#a5019> <http://example.org/ns#a5019> <http://example.org/ns#a5019> .
+<http://example.org/ns#a5020> <http://example.org/ns#a5020> <http://example.org/ns#a5020> .
+<http://example.org/ns#a5021> <http://example.org/ns#a5021> <http://example.org/ns#a5021> .
+<http://example.org/ns#a5022> <http://example.org/ns#a5022> <http://example.org/ns#a5022> .
+<http://example.org/ns#a5023> <http://example.org/ns#a5023> <http://example.org/ns#a5023> .
+<http://example.org/ns#a5024> <http://example.org/ns#a5024> <http://example.org/ns#a5024> .
+<http://example.org/ns#a5025> <http://example.org/ns#a5025> <http://example.org/ns#a5025> .
+<http://example.org/ns#a5026> <http://example.org/ns#a5026> <http://example.org/ns#a5026> .
+<http://example.org/ns#a5027> <http://example.org/ns#a5027> <http://example.org/ns#a5027> .
+<http://example.org/ns#a5028> <http://example.org/ns#a5028> <http://example.org/ns#a5028> .
+<http://example.org/ns#a5029> <http://example.org/ns#a5029> <http://example.org/ns#a5029> .
+<http://example.org/ns#a5030> <http://example.org/ns#a5030> <http://example.org/ns#a5030> .
+<http://example.org/ns#a5031> <http://example.org/ns#a5031> <http://example.org/ns#a5031> .
+<http://example.org/ns#a5032> <http://example.org/ns#a5032> <http://example.org/ns#a5032> .
+<http://example.org/ns#a5033> <http://example.org/ns#a5033> <http://example.org/ns#a5033> .
+<http://example.org/ns#a5034> <http://example.org/ns#a5034> <http://example.org/ns#a5034> .
+<http://example.org/ns#a5035> <http://example.org/ns#a5035> <http://example.org/ns#a5035> .
+<http://example.org/ns#a5036> <http://example.org/ns#a5036> <http://example.org/ns#a5036> .
+<http://example.org/ns#a5037> <http://example.org/ns#a5037> <http://example.org/ns#a5037> .
+<http://example.org/ns#a5038> <http://example.org/ns#a5038> <http://example.org/ns#a5038> .
+<http://example.org/ns#a5039> <http://example.org/ns#a5039> <http://example.org/ns#a5039> .
+<http://example.org/ns#a5040> <http://example.org/ns#a5040> <http://example.org/ns#a5040> .
+<http://example.org/ns#a5041> <http://example.org/ns#a5041> <http://example.org/ns#a5041> .
+<http://example.org/ns#a5042> <http://example.org/ns#a5042> <http://example.org/ns#a5042> .
+<http://example.org/ns#a5043> <http://example.org/ns#a5043> <http://example.org/ns#a5043> .
+<http://example.org/ns#a5044> <http://example.org/ns#a5044> <http://example.org/ns#a5044> .
+<http://example.org/ns#a5045> <http://example.org/ns#a5045> <http://example.org/ns#a5045> .
+<http://example.org/ns#a5046> <http://example.org/ns#a5046> <http://example.org/ns#a5046> .
+<http://example.org/ns#a5047> <http://example.org/ns#a5047> <http://example.org/ns#a5047> .
+<http://example.org/ns#a5048> <http://example.org/ns#a5048> <http://example.org/ns#a5048> .
+<http://example.org/ns#a5049> <http://example.org/ns#a5049> <http://example.org/ns#a5049> .
+<http://example.org/ns#a5050> <http://example.org/ns#a5050> <http://example.org/ns#a5050> .
+<http://example.org/ns#a5051> <http://example.org/ns#a5051> <http://example.org/ns#a5051> .
+<http://example.org/ns#a5052> <http://example.org/ns#a5052> <http://example.org/ns#a5052> .
+<http://example.org/ns#a5053> <http://example.org/ns#a5053> <http://example.org/ns#a5053> .
+<http://example.org/ns#a5054> <http://example.org/ns#a5054> <http://example.org/ns#a5054> .
+<http://example.org/ns#a5055> <http://example.org/ns#a5055> <http://example.org/ns#a5055> .
+<http://example.org/ns#a5056> <http://example.org/ns#a5056> <http://example.org/ns#a5056> .
+<http://example.org/ns#a5057> <http://example.org/ns#a5057> <http://example.org/ns#a5057> .
+<http://example.org/ns#a5058> <http://example.org/ns#a5058> <http://example.org/ns#a5058> .
+<http://example.org/ns#a5059> <http://example.org/ns#a5059> <http://example.org/ns#a5059> .
+<http://example.org/ns#a5060> <http://example.org/ns#a5060> <http://example.org/ns#a5060> .
+<http://example.org/ns#a5061> <http://example.org/ns#a5061> <http://example.org/ns#a5061> .
+<http://example.org/ns#a5062> <http://example.org/ns#a5062> <http://example.org/ns#a5062> .
+<http://example.org/ns#a5063> <http://example.org/ns#a5063> <http://example.org/ns#a5063> .
+<http://example.org/ns#a5064> <http://example.org/ns#a5064> <http://example.org/ns#a5064> .
+<http://example.org/ns#a5065> <http://example.org/ns#a5065> <http://example.org/ns#a5065> .
+<http://example.org/ns#a5066> <http://example.org/ns#a5066> <http://example.org/ns#a5066> .
+<http://example.org/ns#a5067> <http://example.org/ns#a5067> <http://example.org/ns#a5067> .
+<http://example.org/ns#a5068> <http://example.org/ns#a5068> <http://example.org/ns#a5068> .
+<http://example.org/ns#a5069> <http://example.org/ns#a5069> <http://example.org/ns#a5069> .
+<http://example.org/ns#a5070> <http://example.org/ns#a5070> <http://example.org/ns#a5070> .
+<http://example.org/ns#a5071> <http://example.org/ns#a5071> <http://example.org/ns#a5071> .
+<http://example.org/ns#a5072> <http://example.org/ns#a5072> <http://example.org/ns#a5072> .
+<http://example.org/ns#a5073> <http://example.org/ns#a5073> <http://example.org/ns#a5073> .
+<http://example.org/ns#a5074> <http://example.org/ns#a5074> <http://example.org/ns#a5074> .
+<http://example.org/ns#a5075> <http://example.org/ns#a5075> <http://example.org/ns#a5075> .
+<http://example.org/ns#a5076> <http://example.org/ns#a5076> <http://example.org/ns#a5076> .
+<http://example.org/ns#a5077> <http://example.org/ns#a5077> <http://example.org/ns#a5077> .
+<http://example.org/ns#a5078> <http://example.org/ns#a5078> <http://example.org/ns#a5078> .
+<http://example.org/ns#a5079> <http://example.org/ns#a5079> <http://example.org/ns#a5079> .
+<http://example.org/ns#a5080> <http://example.org/ns#a5080> <http://example.org/ns#a5080> .
+<http://example.org/ns#a5081> <http://example.org/ns#a5081> <http://example.org/ns#a5081> .
+<http://example.org/ns#a5082> <http://example.org/ns#a5082> <http://example.org/ns#a5082> .
+<http://example.org/ns#a5083> <http://example.org/ns#a5083> <http://example.org/ns#a5083> .
+<http://example.org/ns#a5084> <http://example.org/ns#a5084> <http://example.org/ns#a5084> .
+<http://example.org/ns#a5085> <http://example.org/ns#a5085> <http://example.org/ns#a5085> .
+<http://example.org/ns#a5086> <http://example.org/ns#a5086> <http://example.org/ns#a5086> .
+<http://example.org/ns#a5087> <http://example.org/ns#a5087> <http://example.org/ns#a5087> .
+<http://example.org/ns#a5088> <http://example.org/ns#a5088> <http://example.org/ns#a5088> .
+<http://example.org/ns#a5089> <http://example.org/ns#a5089> <http://example.org/ns#a5089> .
+<http://example.org/ns#a5090> <http://example.org/ns#a5090> <http://example.org/ns#a5090> .
+<http://example.org/ns#a5091> <http://example.org/ns#a5091> <http://example.org/ns#a5091> .
+<http://example.org/ns#a5092> <http://example.org/ns#a5092> <http://example.org/ns#a5092> .
+<http://example.org/ns#a5093> <http://example.org/ns#a5093> <http://example.org/ns#a5093> .
+<http://example.org/ns#a5094> <http://example.org/ns#a5094> <http://example.org/ns#a5094> .
+<http://example.org/ns#a5095> <http://example.org/ns#a5095> <http://example.org/ns#a5095> .
+<http://example.org/ns#a5096> <http://example.org/ns#a5096> <http://example.org/ns#a5096> .
+<http://example.org/ns#a5097> <http://example.org/ns#a5097> <http://example.org/ns#a5097> .
+<http://example.org/ns#a5098> <http://example.org/ns#a5098> <http://example.org/ns#a5098> .
+<http://example.org/ns#a5099> <http://example.org/ns#a5099> <http://example.org/ns#a5099> .
+<http://example.org/ns#a5100> <http://example.org/ns#a5100> <http://example.org/ns#a5100> .
+<http://example.org/ns#a5101> <http://example.org/ns#a5101> <http://example.org/ns#a5101> .
+<http://example.org/ns#a5102> <http://example.org/ns#a5102> <http://example.org/ns#a5102> .
+<http://example.org/ns#a5103> <http://example.org/ns#a5103> <http://example.org/ns#a5103> .
+<http://example.org/ns#a5104> <http://example.org/ns#a5104> <http://example.org/ns#a5104> .
+<http://example.org/ns#a5105> <http://example.org/ns#a5105> <http://example.org/ns#a5105> .
+<http://example.org/ns#a5106> <http://example.org/ns#a5106> <http://example.org/ns#a5106> .
+<http://example.org/ns#a5107> <http://example.org/ns#a5107> <http://example.org/ns#a5107> .
+<http://example.org/ns#a5108> <http://example.org/ns#a5108> <http://example.org/ns#a5108> .
+<http://example.org/ns#a5109> <http://example.org/ns#a5109> <http://example.org/ns#a5109> .
+<http://example.org/ns#a5110> <http://example.org/ns#a5110> <http://example.org/ns#a5110> .
+<http://example.org/ns#a5111> <http://example.org/ns#a5111> <http://example.org/ns#a5111> .
+<http://example.org/ns#a5112> <http://example.org/ns#a5112> <http://example.org/ns#a5112> .
+<http://example.org/ns#a5113> <http://example.org/ns#a5113> <http://example.org/ns#a5113> .
+<http://example.org/ns#a5114> <http://example.org/ns#a5114> <http://example.org/ns#a5114> .
+<http://example.org/ns#a5115> <http://example.org/ns#a5115> <http://example.org/ns#a5115> .
+<http://example.org/ns#a5116> <http://example.org/ns#a5116> <http://example.org/ns#a5116> .
+<http://example.org/ns#a5117> <http://example.org/ns#a5117> <http://example.org/ns#a5117> .
+<http://example.org/ns#a5118> <http://example.org/ns#a5118> <http://example.org/ns#a5118> .
+<http://example.org/ns#a5119> <http://example.org/ns#a5119> <http://example.org/ns#a5119> .
+<http://example.org/ns#a5120> <http://example.org/ns#a5120> <http://example.org/ns#a5120> .
+<http://example.org/ns#a5121> <http://example.org/ns#a5121> <http://example.org/ns#a5121> .
+<http://example.org/ns#a5122> <http://example.org/ns#a5122> <http://example.org/ns#a5122> .
+<http://example.org/ns#a5123> <http://example.org/ns#a5123> <http://example.org/ns#a5123> .
+<http://example.org/ns#a5124> <http://example.org/ns#a5124> <http://example.org/ns#a5124> .
+<http://example.org/ns#a5125> <http://example.org/ns#a5125> <http://example.org/ns#a5125> .
+<http://example.org/ns#a5126> <http://example.org/ns#a5126> <http://example.org/ns#a5126> .
+<http://example.org/ns#a5127> <http://example.org/ns#a5127> <http://example.org/ns#a5127> .
+<http://example.org/ns#a5128> <http://example.org/ns#a5128> <http://example.org/ns#a5128> .
+<http://example.org/ns#a5129> <http://example.org/ns#a5129> <http://example.org/ns#a5129> .
+<http://example.org/ns#a5130> <http://example.org/ns#a5130> <http://example.org/ns#a5130> .
+<http://example.org/ns#a5131> <http://example.org/ns#a5131> <http://example.org/ns#a5131> .
+<http://example.org/ns#a5132> <http://example.org/ns#a5132> <http://example.org/ns#a5132> .
+<http://example.org/ns#a5133> <http://example.org/ns#a5133> <http://example.org/ns#a5133> .
+<http://example.org/ns#a5134> <http://example.org/ns#a5134> <http://example.org/ns#a5134> .
+<http://example.org/ns#a5135> <http://example.org/ns#a5135> <http://example.org/ns#a5135> .
+<http://example.org/ns#a5136> <http://example.org/ns#a5136> <http://example.org/ns#a5136> .
+<http://example.org/ns#a5137> <http://example.org/ns#a5137> <http://example.org/ns#a5137> .
+<http://example.org/ns#a5138> <http://example.org/ns#a5138> <http://example.org/ns#a5138> .
+<http://example.org/ns#a5139> <http://example.org/ns#a5139> <http://example.org/ns#a5139> .
+<http://example.org/ns#a5140> <http://example.org/ns#a5140> <http://example.org/ns#a5140> .
+<http://example.org/ns#a5141> <http://example.org/ns#a5141> <http://example.org/ns#a5141> .
+<http://example.org/ns#a5142> <http://example.org/ns#a5142> <http://example.org/ns#a5142> .
+<http://example.org/ns#a5143> <http://example.org/ns#a5143> <http://example.org/ns#a5143> .
+<http://example.org/ns#a5144> <http://example.org/ns#a5144> <http://example.org/ns#a5144> .
+<http://example.org/ns#a5145> <http://example.org/ns#a5145> <http://example.org/ns#a5145> .
+<http://example.org/ns#a5146> <http://example.org/ns#a5146> <http://example.org/ns#a5146> .
+<http://example.org/ns#a5147> <http://example.org/ns#a5147> <http://example.org/ns#a5147> .
+<http://example.org/ns#a5148> <http://example.org/ns#a5148> <http://example.org/ns#a5148> .
+<http://example.org/ns#a5149> <http://example.org/ns#a5149> <http://example.org/ns#a5149> .
+<http://example.org/ns#a5150> <http://example.org/ns#a5150> <http://example.org/ns#a5150> .
+<http://example.org/ns#a5151> <http://example.org/ns#a5151> <http://example.org/ns#a5151> .
+<http://example.org/ns#a5152> <http://example.org/ns#a5152> <http://example.org/ns#a5152> .
+<http://example.org/ns#a5153> <http://example.org/ns#a5153> <http://example.org/ns#a5153> .
+<http://example.org/ns#a5154> <http://example.org/ns#a5154> <http://example.org/ns#a5154> .
+<http://example.org/ns#a5155> <http://example.org/ns#a5155> <http://example.org/ns#a5155> .
+<http://example.org/ns#a5156> <http://example.org/ns#a5156> <http://example.org/ns#a5156> .
+<http://example.org/ns#a5157> <http://example.org/ns#a5157> <http://example.org/ns#a5157> .
+<http://example.org/ns#a5158> <http://example.org/ns#a5158> <http://example.org/ns#a5158> .
+<http://example.org/ns#a5159> <http://example.org/ns#a5159> <http://example.org/ns#a5159> .
+<http://example.org/ns#a5160> <http://example.org/ns#a5160> <http://example.org/ns#a5160> .
+<http://example.org/ns#a5161> <http://example.org/ns#a5161> <http://example.org/ns#a5161> .
+<http://example.org/ns#a5162> <http://example.org/ns#a5162> <http://example.org/ns#a5162> .
+<http://example.org/ns#a5163> <http://example.org/ns#a5163> <http://example.org/ns#a5163> .
+<http://example.org/ns#a5164> <http://example.org/ns#a5164> <http://example.org/ns#a5164> .
+<http://example.org/ns#a5165> <http://example.org/ns#a5165> <http://example.org/ns#a5165> .
+<http://example.org/ns#a5166> <http://example.org/ns#a5166> <http://example.org/ns#a5166> .
+<http://example.org/ns#a5167> <http://example.org/ns#a5167> <http://example.org/ns#a5167> .
+<http://example.org/ns#a5168> <http://example.org/ns#a5168> <http://example.org/ns#a5168> .
+<http://example.org/ns#a5169> <http://example.org/ns#a5169> <http://example.org/ns#a5169> .
+<http://example.org/ns#a5170> <http://example.org/ns#a5170> <http://example.org/ns#a5170> .
+<http://example.org/ns#a5171> <http://example.org/ns#a5171> <http://example.org/ns#a5171> .
+<http://example.org/ns#a5172> <http://example.org/ns#a5172> <http://example.org/ns#a5172> .
+<http://example.org/ns#a5173> <http://example.org/ns#a5173> <http://example.org/ns#a5173> .
+<http://example.org/ns#a5174> <http://example.org/ns#a5174> <http://example.org/ns#a5174> .
+<http://example.org/ns#a5175> <http://example.org/ns#a5175> <http://example.org/ns#a5175> .
+<http://example.org/ns#a5176> <http://example.org/ns#a5176> <http://example.org/ns#a5176> .
+<http://example.org/ns#a5177> <http://example.org/ns#a5177> <http://example.org/ns#a5177> .
+<http://example.org/ns#a5178> <http://example.org/ns#a5178> <http://example.org/ns#a5178> .
+<http://example.org/ns#a5179> <http://example.org/ns#a5179> <http://example.org/ns#a5179> .
+<http://example.org/ns#a5180> <http://example.org/ns#a5180> <http://example.org/ns#a5180> .
+<http://example.org/ns#a5181> <http://example.org/ns#a5181> <http://example.org/ns#a5181> .
+<http://example.org/ns#a5182> <http://example.org/ns#a5182> <http://example.org/ns#a5182> .
+<http://example.org/ns#a5183> <http://example.org/ns#a5183> <http://example.org/ns#a5183> .
+<http://example.org/ns#a5184> <http://example.org/ns#a5184> <http://example.org/ns#a5184> .
+<http://example.org/ns#a5185> <http://example.org/ns#a5185> <http://example.org/ns#a5185> .
+<http://example.org/ns#a5186> <http://example.org/ns#a5186> <http://example.org/ns#a5186> .
+<http://example.org/ns#a5187> <http://example.org/ns#a5187> <http://example.org/ns#a5187> .
+<http://example.org/ns#a5188> <http://example.org/ns#a5188> <http://example.org/ns#a5188> .
+<http://example.org/ns#a5189> <http://example.org/ns#a5189> <http://example.org/ns#a5189> .
+<http://example.org/ns#a5190> <http://example.org/ns#a5190> <http://example.org/ns#a5190> .
+<http://example.org/ns#a5191> <http://example.org/ns#a5191> <http://example.org/ns#a5191> .
+<http://example.org/ns#a5192> <http://example.org/ns#a5192> <http://example.org/ns#a5192> .
+<http://example.org/ns#a5193> <http://example.org/ns#a5193> <http://example.org/ns#a5193> .
+<http://example.org/ns#a5194> <http://example.org/ns#a5194> <http://example.org/ns#a5194> .
+<http://example.org/ns#a5195> <http://example.org/ns#a5195> <http://example.org/ns#a5195> .
+<http://example.org/ns#a5196> <http://example.org/ns#a5196> <http://example.org/ns#a5196> .
+<http://example.org/ns#a5197> <http://example.org/ns#a5197> <http://example.org/ns#a5197> .
+<http://example.org/ns#a5198> <http://example.org/ns#a5198> <http://example.org/ns#a5198> .
+<http://example.org/ns#a5199> <http://example.org/ns#a5199> <http://example.org/ns#a5199> .
+<http://example.org/ns#a5200> <http://example.org/ns#a5200> <http://example.org/ns#a5200> .
+<http://example.org/ns#a5201> <http://example.org/ns#a5201> <http://example.org/ns#a5201> .
+<http://example.org/ns#a5202> <http://example.org/ns#a5202> <http://example.org/ns#a5202> .
+<http://example.org/ns#a5203> <http://example.org/ns#a5203> <http://example.org/ns#a5203> .
+<http://example.org/ns#a5204> <http://example.org/ns#a5204> <http://example.org/ns#a5204> .
+<http://example.org/ns#a5205> <http://example.org/ns#a5205> <http://example.org/ns#a5205> .
+<http://example.org/ns#a5206> <http://example.org/ns#a5206> <http://example.org/ns#a5206> .
+<http://example.org/ns#a5207> <http://example.org/ns#a5207> <http://example.org/ns#a5207> .
+<http://example.org/ns#a5208> <http://example.org/ns#a5208> <http://example.org/ns#a5208> .
+<http://example.org/ns#a5209> <http://example.org/ns#a5209> <http://example.org/ns#a5209> .
+<http://example.org/ns#a5210> <http://example.org/ns#a5210> <http://example.org/ns#a5210> .
+<http://example.org/ns#a5211> <http://example.org/ns#a5211> <http://example.org/ns#a5211> .
+<http://example.org/ns#a5212> <http://example.org/ns#a5212> <http://example.org/ns#a5212> .
+<http://example.org/ns#a5213> <http://example.org/ns#a5213> <http://example.org/ns#a5213> .
+<http://example.org/ns#a5214> <http://example.org/ns#a5214> <http://example.org/ns#a5214> .
+<http://example.org/ns#a5215> <http://example.org/ns#a5215> <http://example.org/ns#a5215> .
+<http://example.org/ns#a5216> <http://example.org/ns#a5216> <http://example.org/ns#a5216> .
+<http://example.org/ns#a5217> <http://example.org/ns#a5217> <http://example.org/ns#a5217> .
+<http://example.org/ns#a5218> <http://example.org/ns#a5218> <http://example.org/ns#a5218> .
+<http://example.org/ns#a5219> <http://example.org/ns#a5219> <http://example.org/ns#a5219> .
+<http://example.org/ns#a5220> <http://example.org/ns#a5220> <http://example.org/ns#a5220> .
+<http://example.org/ns#a5221> <http://example.org/ns#a5221> <http://example.org/ns#a5221> .
+<http://example.org/ns#a5222> <http://example.org/ns#a5222> <http://example.org/ns#a5222> .
+<http://example.org/ns#a5223> <http://example.org/ns#a5223> <http://example.org/ns#a5223> .
+<http://example.org/ns#a5224> <http://example.org/ns#a5224> <http://example.org/ns#a5224> .
+<http://example.org/ns#a5225> <http://example.org/ns#a5225> <http://example.org/ns#a5225> .
+<http://example.org/ns#a5226> <http://example.org/ns#a5226> <http://example.org/ns#a5226> .
+<http://example.org/ns#a5227> <http://example.org/ns#a5227> <http://example.org/ns#a5227> .
+<http://example.org/ns#a5228> <http://example.org/ns#a5228> <http://example.org/ns#a5228> .
+<http://example.org/ns#a5229> <http://example.org/ns#a5229> <http://example.org/ns#a5229> .
+<http://example.org/ns#a5230> <http://example.org/ns#a5230> <http://example.org/ns#a5230> .
+<http://example.org/ns#a5231> <http://example.org/ns#a5231> <http://example.org/ns#a5231> .
+<http://example.org/ns#a5232> <http://example.org/ns#a5232> <http://example.org/ns#a5232> .
+<http://example.org/ns#a5233> <http://example.org/ns#a5233> <http://example.org/ns#a5233> .
+<http://example.org/ns#a5234> <http://example.org/ns#a5234> <http://example.org/ns#a5234> .
+<http://example.org/ns#a5235> <http://example.org/ns#a5235> <http://example.org/ns#a5235> .
+<http://example.org/ns#a5236> <http://example.org/ns#a5236> <http://example.org/ns#a5236> .
+<http://example.org/ns#a5237> <http://example.org/ns#a5237> <http://example.org/ns#a5237> .
+<http://example.org/ns#a5238> <http://example.org/ns#a5238> <http://example.org/ns#a5238> .
+<http://example.org/ns#a5239> <http://example.org/ns#a5239> <http://example.org/ns#a5239> .
+<http://example.org/ns#a5240> <http://example.org/ns#a5240> <http://example.org/ns#a5240> .
+<http://example.org/ns#a5241> <http://example.org/ns#a5241> <http://example.org/ns#a5241> .
+<http://example.org/ns#a5242> <http://example.org/ns#a5242> <http://example.org/ns#a5242> .
+<http://example.org/ns#a5243> <http://example.org/ns#a5243> <http://example.org/ns#a5243> .
+<http://example.org/ns#a5244> <http://example.org/ns#a5244> <http://example.org/ns#a5244> .
+<http://example.org/ns#a5245> <http://example.org/ns#a5245> <http://example.org/ns#a5245> .
+<http://example.org/ns#a5246> <http://example.org/ns#a5246> <http://example.org/ns#a5246> .
+<http://example.org/ns#a5247> <http://example.org/ns#a5247> <http://example.org/ns#a5247> .
+<http://example.org/ns#a5248> <http://example.org/ns#a5248> <http://example.org/ns#a5248> .
+<http://example.org/ns#a5249> <http://example.org/ns#a5249> <http://example.org/ns#a5249> .
+<http://example.org/ns#a5250> <http://example.org/ns#a5250> <http://example.org/ns#a5250> .
+<http://example.org/ns#a5251> <http://example.org/ns#a5251> <http://example.org/ns#a5251> .
+<http://example.org/ns#a5252> <http://example.org/ns#a5252> <http://example.org/ns#a5252> .
+<http://example.org/ns#a5253> <http://example.org/ns#a5253> <http://example.org/ns#a5253> .
+<http://example.org/ns#a5254> <http://example.org/ns#a5254> <http://example.org/ns#a5254> .
+<http://example.org/ns#a5255> <http://example.org/ns#a5255> <http://example.org/ns#a5255> .
+<http://example.org/ns#a5256> <http://example.org/ns#a5256> <http://example.org/ns#a5256> .
+<http://example.org/ns#a5257> <http://example.org/ns#a5257> <http://example.org/ns#a5257> .
+<http://example.org/ns#a5258> <http://example.org/ns#a5258> <http://example.org/ns#a5258> .
+<http://example.org/ns#a5259> <http://example.org/ns#a5259> <http://example.org/ns#a5259> .
+<http://example.org/ns#a5260> <http://example.org/ns#a5260> <http://example.org/ns#a5260> .
+<http://example.org/ns#a5261> <http://example.org/ns#a5261> <http://example.org/ns#a5261> .
+<http://example.org/ns#a5262> <http://example.org/ns#a5262> <http://example.org/ns#a5262> .
+<http://example.org/ns#a5263> <http://example.org/ns#a5263> <http://example.org/ns#a5263> .
+<http://example.org/ns#a5264> <http://example.org/ns#a5264> <http://example.org/ns#a5264> .
+<http://example.org/ns#a5265> <http://example.org/ns#a5265> <http://example.org/ns#a5265> .
+<http://example.org/ns#a5266> <http://example.org/ns#a5266> <http://example.org/ns#a5266> .
+<http://example.org/ns#a5267> <http://example.org/ns#a5267> <http://example.org/ns#a5267> .
+<http://example.org/ns#a5268> <http://example.org/ns#a5268> <http://example.org/ns#a5268> .
+<http://example.org/ns#a5269> <http://example.org/ns#a5269> <http://example.org/ns#a5269> .
+<http://example.org/ns#a5270> <http://example.org/ns#a5270> <http://example.org/ns#a5270> .
+<http://example.org/ns#a5271> <http://example.org/ns#a5271> <http://example.org/ns#a5271> .
+<http://example.org/ns#a5272> <http://example.org/ns#a5272> <http://example.org/ns#a5272> .
+<http://example.org/ns#a5273> <http://example.org/ns#a5273> <http://example.org/ns#a5273> .
+<http://example.org/ns#a5274> <http://example.org/ns#a5274> <http://example.org/ns#a5274> .
+<http://example.org/ns#a5275> <http://example.org/ns#a5275> <http://example.org/ns#a5275> .
+<http://example.org/ns#a5276> <http://example.org/ns#a5276> <http://example.org/ns#a5276> .
+<http://example.org/ns#a5277> <http://example.org/ns#a5277> <http://example.org/ns#a5277> .
+<http://example.org/ns#a5278> <http://example.org/ns#a5278> <http://example.org/ns#a5278> .
+<http://example.org/ns#a5279> <http://example.org/ns#a5279> <http://example.org/ns#a5279> .
+<http://example.org/ns#a5280> <http://example.org/ns#a5280> <http://example.org/ns#a5280> .
+<http://example.org/ns#a5281> <http://example.org/ns#a5281> <http://example.org/ns#a5281> .
+<http://example.org/ns#a5282> <http://example.org/ns#a5282> <http://example.org/ns#a5282> .
+<http://example.org/ns#a5283> <http://example.org/ns#a5283> <http://example.org/ns#a5283> .
+<http://example.org/ns#a5284> <http://example.org/ns#a5284> <http://example.org/ns#a5284> .
+<http://example.org/ns#a5285> <http://example.org/ns#a5285> <http://example.org/ns#a5285> .
+<http://example.org/ns#a5286> <http://example.org/ns#a5286> <http://example.org/ns#a5286> .
+<http://example.org/ns#a5287> <http://example.org/ns#a5287> <http://example.org/ns#a5287> .
+<http://example.org/ns#a5288> <http://example.org/ns#a5288> <http://example.org/ns#a5288> .
+<http://example.org/ns#a5289> <http://example.org/ns#a5289> <http://example.org/ns#a5289> .
+<http://example.org/ns#a5290> <http://example.org/ns#a5290> <http://example.org/ns#a5290> .
+<http://example.org/ns#a5291> <http://example.org/ns#a5291> <http://example.org/ns#a5291> .
+<http://example.org/ns#a5292> <http://example.org/ns#a5292> <http://example.org/ns#a5292> .
+<http://example.org/ns#a5293> <http://example.org/ns#a5293> <http://example.org/ns#a5293> .
+<http://example.org/ns#a5294> <http://example.org/ns#a5294> <http://example.org/ns#a5294> .
+<http://example.org/ns#a5295> <http://example.org/ns#a5295> <http://example.org/ns#a5295> .
+<http://example.org/ns#a5296> <http://example.org/ns#a5296> <http://example.org/ns#a5296> .
+<http://example.org/ns#a5297> <http://example.org/ns#a5297> <http://example.org/ns#a5297> .
+<http://example.org/ns#a5298> <http://example.org/ns#a5298> <http://example.org/ns#a5298> .
+<http://example.org/ns#a5299> <http://example.org/ns#a5299> <http://example.org/ns#a5299> .
+<http://example.org/ns#a5300> <http://example.org/ns#a5300> <http://example.org/ns#a5300> .
+<http://example.org/ns#a5301> <http://example.org/ns#a5301> <http://example.org/ns#a5301> .
+<http://example.org/ns#a5302> <http://example.org/ns#a5302> <http://example.org/ns#a5302> .
+<http://example.org/ns#a5303> <http://example.org/ns#a5303> <http://example.org/ns#a5303> .
+<http://example.org/ns#a5304> <http://example.org/ns#a5304> <http://example.org/ns#a5304> .
+<http://example.org/ns#a5305> <http://example.org/ns#a5305> <http://example.org/ns#a5305> .
+<http://example.org/ns#a5306> <http://example.org/ns#a5306> <http://example.org/ns#a5306> .
+<http://example.org/ns#a5307> <http://example.org/ns#a5307> <http://example.org/ns#a5307> .
+<http://example.org/ns#a5308> <http://example.org/ns#a5308> <http://example.org/ns#a5308> .
+<http://example.org/ns#a5309> <http://example.org/ns#a5309> <http://example.org/ns#a5309> .
+<http://example.org/ns#a5310> <http://example.org/ns#a5310> <http://example.org/ns#a5310> .
+<http://example.org/ns#a5311> <http://example.org/ns#a5311> <http://example.org/ns#a5311> .
+<http://example.org/ns#a5312> <http://example.org/ns#a5312> <http://example.org/ns#a5312> .
+<http://example.org/ns#a5313> <http://example.org/ns#a5313> <http://example.org/ns#a5313> .
+<http://example.org/ns#a5314> <http://example.org/ns#a5314> <http://example.org/ns#a5314> .
+<http://example.org/ns#a5315> <http://example.org/ns#a5315> <http://example.org/ns#a5315> .
+<http://example.org/ns#a5316> <http://example.org/ns#a5316> <http://example.org/ns#a5316> .
+<http://example.org/ns#a5317> <http://example.org/ns#a5317> <http://example.org/ns#a5317> .
+<http://example.org/ns#a5318> <http://example.org/ns#a5318> <http://example.org/ns#a5318> .
+<http://example.org/ns#a5319> <http://example.org/ns#a5319> <http://example.org/ns#a5319> .
+<http://example.org/ns#a5320> <http://example.org/ns#a5320> <http://example.org/ns#a5320> .
+<http://example.org/ns#a5321> <http://example.org/ns#a5321> <http://example.org/ns#a5321> .
+<http://example.org/ns#a5322> <http://example.org/ns#a5322> <http://example.org/ns#a5322> .
+<http://example.org/ns#a5323> <http://example.org/ns#a5323> <http://example.org/ns#a5323> .
+<http://example.org/ns#a5324> <http://example.org/ns#a5324> <http://example.org/ns#a5324> .
+<http://example.org/ns#a5325> <http://example.org/ns#a5325> <http://example.org/ns#a5325> .
+<http://example.org/ns#a5326> <http://example.org/ns#a5326> <http://example.org/ns#a5326> .
+<http://example.org/ns#a5327> <http://example.org/ns#a5327> <http://example.org/ns#a5327> .
+<http://example.org/ns#a5328> <http://example.org/ns#a5328> <http://example.org/ns#a5328> .
+<http://example.org/ns#a5329> <http://example.org/ns#a5329> <http://example.org/ns#a5329> .
+<http://example.org/ns#a5330> <http://example.org/ns#a5330> <http://example.org/ns#a5330> .
+<http://example.org/ns#a5331> <http://example.org/ns#a5331> <http://example.org/ns#a5331> .
+<http://example.org/ns#a5332> <http://example.org/ns#a5332> <http://example.org/ns#a5332> .
+<http://example.org/ns#a5333> <http://example.org/ns#a5333> <http://example.org/ns#a5333> .
+<http://example.org/ns#a5334> <http://example.org/ns#a5334> <http://example.org/ns#a5334> .
+<http://example.org/ns#a5335> <http://example.org/ns#a5335> <http://example.org/ns#a5335> .
+<http://example.org/ns#a5336> <http://example.org/ns#a5336> <http://example.org/ns#a5336> .
+<http://example.org/ns#a5337> <http://example.org/ns#a5337> <http://example.org/ns#a5337> .
+<http://example.org/ns#a5338> <http://example.org/ns#a5338> <http://example.org/ns#a5338> .
+<http://example.org/ns#a5339> <http://example.org/ns#a5339> <http://example.org/ns#a5339> .
+<http://example.org/ns#a5340> <http://example.org/ns#a5340> <http://example.org/ns#a5340> .
+<http://example.org/ns#a5341> <http://example.org/ns#a5341> <http://example.org/ns#a5341> .
+<http://example.org/ns#a5342> <http://example.org/ns#a5342> <http://example.org/ns#a5342> .
+<http://example.org/ns#a5343> <http://example.org/ns#a5343> <http://example.org/ns#a5343> .
+<http://example.org/ns#a5344> <http://example.org/ns#a5344> <http://example.org/ns#a5344> .
+<http://example.org/ns#a5345> <http://example.org/ns#a5345> <http://example.org/ns#a5345> .
+<http://example.org/ns#a5346> <http://example.org/ns#a5346> <http://example.org/ns#a5346> .
+<http://example.org/ns#a5347> <http://example.org/ns#a5347> <http://example.org/ns#a5347> .
+<http://example.org/ns#a5348> <http://example.org/ns#a5348> <http://example.org/ns#a5348> .
+<http://example.org/ns#a5349> <http://example.org/ns#a5349> <http://example.org/ns#a5349> .
+<http://example.org/ns#a5350> <http://example.org/ns#a5350> <http://example.org/ns#a5350> .
+<http://example.org/ns#a5351> <http://example.org/ns#a5351> <http://example.org/ns#a5351> .
+<http://example.org/ns#a5352> <http://example.org/ns#a5352> <http://example.org/ns#a5352> .
+<http://example.org/ns#a5353> <http://example.org/ns#a5353> <http://example.org/ns#a5353> .
+<http://example.org/ns#a5354> <http://example.org/ns#a5354> <http://example.org/ns#a5354> .
+<http://example.org/ns#a5355> <http://example.org/ns#a5355> <http://example.org/ns#a5355> .
+<http://example.org/ns#a5356> <http://example.org/ns#a5356> <http://example.org/ns#a5356> .
+<http://example.org/ns#a5357> <http://example.org/ns#a5357> <http://example.org/ns#a5357> .
+<http://example.org/ns#a5358> <http://example.org/ns#a5358> <http://example.org/ns#a5358> .
+<http://example.org/ns#a5359> <http://example.org/ns#a5359> <http://example.org/ns#a5359> .
+<http://example.org/ns#a5360> <http://example.org/ns#a5360> <http://example.org/ns#a5360> .
+<http://example.org/ns#a5361> <http://example.org/ns#a5361> <http://example.org/ns#a5361> .
+<http://example.org/ns#a5362> <http://example.org/ns#a5362> <http://example.org/ns#a5362> .
+<http://example.org/ns#a5363> <http://example.org/ns#a5363> <http://example.org/ns#a5363> .
+<http://example.org/ns#a5364> <http://example.org/ns#a5364> <http://example.org/ns#a5364> .
+<http://example.org/ns#a5365> <http://example.org/ns#a5365> <http://example.org/ns#a5365> .
+<http://example.org/ns#a5366> <http://example.org/ns#a5366> <http://example.org/ns#a5366> .
+<http://example.org/ns#a5367> <http://example.org/ns#a5367> <http://example.org/ns#a5367> .
+<http://example.org/ns#a5368> <http://example.org/ns#a5368> <http://example.org/ns#a5368> .
+<http://example.org/ns#a5369> <http://example.org/ns#a5369> <http://example.org/ns#a5369> .
+<http://example.org/ns#a5370> <http://example.org/ns#a5370> <http://example.org/ns#a5370> .
+<http://example.org/ns#a5371> <http://example.org/ns#a5371> <http://example.org/ns#a5371> .
+<http://example.org/ns#a5372> <http://example.org/ns#a5372> <http://example.org/ns#a5372> .
+<http://example.org/ns#a5373> <http://example.org/ns#a5373> <http://example.org/ns#a5373> .
+<http://example.org/ns#a5374> <http://example.org/ns#a5374> <http://example.org/ns#a5374> .
+<http://example.org/ns#a5375> <http://example.org/ns#a5375> <http://example.org/ns#a5375> .
+<http://example.org/ns#a5376> <http://example.org/ns#a5376> <http://example.org/ns#a5376> .
+<http://example.org/ns#a5377> <http://example.org/ns#a5377> <http://example.org/ns#a5377> .
+<http://example.org/ns#a5378> <http://example.org/ns#a5378> <http://example.org/ns#a5378> .
+<http://example.org/ns#a5379> <http://example.org/ns#a5379> <http://example.org/ns#a5379> .
+<http://example.org/ns#a5380> <http://example.org/ns#a5380> <http://example.org/ns#a5380> .
+<http://example.org/ns#a5381> <http://example.org/ns#a5381> <http://example.org/ns#a5381> .
+<http://example.org/ns#a5382> <http://example.org/ns#a5382> <http://example.org/ns#a5382> .
+<http://example.org/ns#a5383> <http://example.org/ns#a5383> <http://example.org/ns#a5383> .
+<http://example.org/ns#a5384> <http://example.org/ns#a5384> <http://example.org/ns#a5384> .
+<http://example.org/ns#a5385> <http://example.org/ns#a5385> <http://example.org/ns#a5385> .
+<http://example.org/ns#a5386> <http://example.org/ns#a5386> <http://example.org/ns#a5386> .
+<http://example.org/ns#a5387> <http://example.org/ns#a5387> <http://example.org/ns#a5387> .
+<http://example.org/ns#a5388> <http://example.org/ns#a5388> <http://example.org/ns#a5388> .
+<http://example.org/ns#a5389> <http://example.org/ns#a5389> <http://example.org/ns#a5389> .
+<http://example.org/ns#a5390> <http://example.org/ns#a5390> <http://example.org/ns#a5390> .
+<http://example.org/ns#a5391> <http://example.org/ns#a5391> <http://example.org/ns#a5391> .
+<http://example.org/ns#a5392> <http://example.org/ns#a5392> <http://example.org/ns#a5392> .
+<http://example.org/ns#a5393> <http://example.org/ns#a5393> <http://example.org/ns#a5393> .
+<http://example.org/ns#a5394> <http://example.org/ns#a5394> <http://example.org/ns#a5394> .
+<http://example.org/ns#a5395> <http://example.org/ns#a5395> <http://example.org/ns#a5395> .
+<http://example.org/ns#a5396> <http://example.org/ns#a5396> <http://example.org/ns#a5396> .
+<http://example.org/ns#a5397> <http://example.org/ns#a5397> <http://example.org/ns#a5397> .
+<http://example.org/ns#a5398> <http://example.org/ns#a5398> <http://example.org/ns#a5398> .
+<http://example.org/ns#a5399> <http://example.org/ns#a5399> <http://example.org/ns#a5399> .
+<http://example.org/ns#a5400> <http://example.org/ns#a5400> <http://example.org/ns#a5400> .
+<http://example.org/ns#a5401> <http://example.org/ns#a5401> <http://example.org/ns#a5401> .
+<http://example.org/ns#a5402> <http://example.org/ns#a5402> <http://example.org/ns#a5402> .
+<http://example.org/ns#a5403> <http://example.org/ns#a5403> <http://example.org/ns#a5403> .
+<http://example.org/ns#a5404> <http://example.org/ns#a5404> <http://example.org/ns#a5404> .
+<http://example.org/ns#a5405> <http://example.org/ns#a5405> <http://example.org/ns#a5405> .
+<http://example.org/ns#a5406> <http://example.org/ns#a5406> <http://example.org/ns#a5406> .
+<http://example.org/ns#a5407> <http://example.org/ns#a5407> <http://example.org/ns#a5407> .
+<http://example.org/ns#a5408> <http://example.org/ns#a5408> <http://example.org/ns#a5408> .
+<http://example.org/ns#a5409> <http://example.org/ns#a5409> <http://example.org/ns#a5409> .
+<http://example.org/ns#a5410> <http://example.org/ns#a5410> <http://example.org/ns#a5410> .
+<http://example.org/ns#a5411> <http://example.org/ns#a5411> <http://example.org/ns#a5411> .
+<http://example.org/ns#a5412> <http://example.org/ns#a5412> <http://example.org/ns#a5412> .
+<http://example.org/ns#a5413> <http://example.org/ns#a5413> <http://example.org/ns#a5413> .
+<http://example.org/ns#a5414> <http://example.org/ns#a5414> <http://example.org/ns#a5414> .
+<http://example.org/ns#a5415> <http://example.org/ns#a5415> <http://example.org/ns#a5415> .
+<http://example.org/ns#a5416> <http://example.org/ns#a5416> <http://example.org/ns#a5416> .
+<http://example.org/ns#a5417> <http://example.org/ns#a5417> <http://example.org/ns#a5417> .
+<http://example.org/ns#a5418> <http://example.org/ns#a5418> <http://example.org/ns#a5418> .
+<http://example.org/ns#a5419> <http://example.org/ns#a5419> <http://example.org/ns#a5419> .
+<http://example.org/ns#a5420> <http://example.org/ns#a5420> <http://example.org/ns#a5420> .
+<http://example.org/ns#a5421> <http://example.org/ns#a5421> <http://example.org/ns#a5421> .
+<http://example.org/ns#a5422> <http://example.org/ns#a5422> <http://example.org/ns#a5422> .
+<http://example.org/ns#a5423> <http://example.org/ns#a5423> <http://example.org/ns#a5423> .
+<http://example.org/ns#a5424> <http://example.org/ns#a5424> <http://example.org/ns#a5424> .
+<http://example.org/ns#a5425> <http://example.org/ns#a5425> <http://example.org/ns#a5425> .
+<http://example.org/ns#a5426> <http://example.org/ns#a5426> <http://example.org/ns#a5426> .
+<http://example.org/ns#a5427> <http://example.org/ns#a5427> <http://example.org/ns#a5427> .
+<http://example.org/ns#a5428> <http://example.org/ns#a5428> <http://example.org/ns#a5428> .
+<http://example.org/ns#a5429> <http://example.org/ns#a5429> <http://example.org/ns#a5429> .
+<http://example.org/ns#a5430> <http://example.org/ns#a5430> <http://example.org/ns#a5430> .
+<http://example.org/ns#a5431> <http://example.org/ns#a5431> <http://example.org/ns#a5431> .
+<http://example.org/ns#a5432> <http://example.org/ns#a5432> <http://example.org/ns#a5432> .
+<http://example.org/ns#a5433> <http://example.org/ns#a5433> <http://example.org/ns#a5433> .
+<http://example.org/ns#a5434> <http://example.org/ns#a5434> <http://example.org/ns#a5434> .
+<http://example.org/ns#a5435> <http://example.org/ns#a5435> <http://example.org/ns#a5435> .
+<http://example.org/ns#a5436> <http://example.org/ns#a5436> <http://example.org/ns#a5436> .
+<http://example.org/ns#a5437> <http://example.org/ns#a5437> <http://example.org/ns#a5437> .
+<http://example.org/ns#a5438> <http://example.org/ns#a5438> <http://example.org/ns#a5438> .
+<http://example.org/ns#a5439> <http://example.org/ns#a5439> <http://example.org/ns#a5439> .
+<http://example.org/ns#a5440> <http://example.org/ns#a5440> <http://example.org/ns#a5440> .
+<http://example.org/ns#a5441> <http://example.org/ns#a5441> <http://example.org/ns#a5441> .
+<http://example.org/ns#a5442> <http://example.org/ns#a5442> <http://example.org/ns#a5442> .
+<http://example.org/ns#a5443> <http://example.org/ns#a5443> <http://example.org/ns#a5443> .
+<http://example.org/ns#a5444> <http://example.org/ns#a5444> <http://example.org/ns#a5444> .
+<http://example.org/ns#a5445> <http://example.org/ns#a5445> <http://example.org/ns#a5445> .
+<http://example.org/ns#a5446> <http://example.org/ns#a5446> <http://example.org/ns#a5446> .
+<http://example.org/ns#a5447> <http://example.org/ns#a5447> <http://example.org/ns#a5447> .
+<http://example.org/ns#a5448> <http://example.org/ns#a5448> <http://example.org/ns#a5448> .
+<http://example.org/ns#a5449> <http://example.org/ns#a5449> <http://example.org/ns#a5449> .
+<http://example.org/ns#a5450> <http://example.org/ns#a5450> <http://example.org/ns#a5450> .
+<http://example.org/ns#a5451> <http://example.org/ns#a5451> <http://example.org/ns#a5451> .
+<http://example.org/ns#a5452> <http://example.org/ns#a5452> <http://example.org/ns#a5452> .
+<http://example.org/ns#a5453> <http://example.org/ns#a5453> <http://example.org/ns#a5453> .
+<http://example.org/ns#a5454> <http://example.org/ns#a5454> <http://example.org/ns#a5454> .
+<http://example.org/ns#a5455> <http://example.org/ns#a5455> <http://example.org/ns#a5455> .
+<http://example.org/ns#a5456> <http://example.org/ns#a5456> <http://example.org/ns#a5456> .
+<http://example.org/ns#a5457> <http://example.org/ns#a5457> <http://example.org/ns#a5457> .
+<http://example.org/ns#a5458> <http://example.org/ns#a5458> <http://example.org/ns#a5458> .
+<http://example.org/ns#a5459> <http://example.org/ns#a5459> <http://example.org/ns#a5459> .
+<http://example.org/ns#a5460> <http://example.org/ns#a5460> <http://example.org/ns#a5460> .
+<http://example.org/ns#a5461> <http://example.org/ns#a5461> <http://example.org/ns#a5461> .
+<http://example.org/ns#a5462> <http://example.org/ns#a5462> <http://example.org/ns#a5462> .
+<http://example.org/ns#a5463> <http://example.org/ns#a5463> <http://example.org/ns#a5463> .
+<http://example.org/ns#a5464> <http://example.org/ns#a5464> <http://example.org/ns#a5464> .
+<http://example.org/ns#a5465> <http://example.org/ns#a5465> <http://example.org/ns#a5465> .
+<http://example.org/ns#a5466> <http://example.org/ns#a5466> <http://example.org/ns#a5466> .
+<http://example.org/ns#a5467> <http://example.org/ns#a5467> <http://example.org/ns#a5467> .
+<http://example.org/ns#a5468> <http://example.org/ns#a5468> <http://example.org/ns#a5468> .
+<http://example.org/ns#a5469> <http://example.org/ns#a5469> <http://example.org/ns#a5469> .
+<http://example.org/ns#a5470> <http://example.org/ns#a5470> <http://example.org/ns#a5470> .
+<http://example.org/ns#a5471> <http://example.org/ns#a5471> <http://example.org/ns#a5471> .
+<http://example.org/ns#a5472> <http://example.org/ns#a5472> <http://example.org/ns#a5472> .
+<http://example.org/ns#a5473> <http://example.org/ns#a5473> <http://example.org/ns#a5473> .
+<http://example.org/ns#a5474> <http://example.org/ns#a5474> <http://example.org/ns#a5474> .
+<http://example.org/ns#a5475> <http://example.org/ns#a5475> <http://example.org/ns#a5475> .
+<http://example.org/ns#a5476> <http://example.org/ns#a5476> <http://example.org/ns#a5476> .
+<http://example.org/ns#a5477> <http://example.org/ns#a5477> <http://example.org/ns#a5477> .
+<http://example.org/ns#a5478> <http://example.org/ns#a5478> <http://example.org/ns#a5478> .
+<http://example.org/ns#a5479> <http://example.org/ns#a5479> <http://example.org/ns#a5479> .
+<http://example.org/ns#a5480> <http://example.org/ns#a5480> <http://example.org/ns#a5480> .
+<http://example.org/ns#a5481> <http://example.org/ns#a5481> <http://example.org/ns#a5481> .
+<http://example.org/ns#a5482> <http://example.org/ns#a5482> <http://example.org/ns#a5482> .
+<http://example.org/ns#a5483> <http://example.org/ns#a5483> <http://example.org/ns#a5483> .
+<http://example.org/ns#a5484> <http://example.org/ns#a5484> <http://example.org/ns#a5484> .
+<http://example.org/ns#a5485> <http://example.org/ns#a5485> <http://example.org/ns#a5485> .
+<http://example.org/ns#a5486> <http://example.org/ns#a5486> <http://example.org/ns#a5486> .
+<http://example.org/ns#a5487> <http://example.org/ns#a5487> <http://example.org/ns#a5487> .
+<http://example.org/ns#a5488> <http://example.org/ns#a5488> <http://example.org/ns#a5488> .
+<http://example.org/ns#a5489> <http://example.org/ns#a5489> <http://example.org/ns#a5489> .
+<http://example.org/ns#a5490> <http://example.org/ns#a5490> <http://example.org/ns#a5490> .
+<http://example.org/ns#a5491> <http://example.org/ns#a5491> <http://example.org/ns#a5491> .
+<http://example.org/ns#a5492> <http://example.org/ns#a5492> <http://example.org/ns#a5492> .
+<http://example.org/ns#a5493> <http://example.org/ns#a5493> <http://example.org/ns#a5493> .
+<http://example.org/ns#a5494> <http://example.org/ns#a5494> <http://example.org/ns#a5494> .
+<http://example.org/ns#a5495> <http://example.org/ns#a5495> <http://example.org/ns#a5495> .
+<http://example.org/ns#a5496> <http://example.org/ns#a5496> <http://example.org/ns#a5496> .
+<http://example.org/ns#a5497> <http://example.org/ns#a5497> <http://example.org/ns#a5497> .
+<http://example.org/ns#a5498> <http://example.org/ns#a5498> <http://example.org/ns#a5498> .
+<http://example.org/ns#a5499> <http://example.org/ns#a5499> <http://example.org/ns#a5499> .
+<http://example.org/ns#a5500> <http://example.org/ns#a5500> <http://example.org/ns#a5500> .
+<http://example.org/ns#a5501> <http://example.org/ns#a5501> <http://example.org/ns#a5501> .
+<http://example.org/ns#a5502> <http://example.org/ns#a5502> <http://example.org/ns#a5502> .
+<http://example.org/ns#a5503> <http://example.org/ns#a5503> <http://example.org/ns#a5503> .
+<http://example.org/ns#a5504> <http://example.org/ns#a5504> <http://example.org/ns#a5504> .
+<http://example.org/ns#a5505> <http://example.org/ns#a5505> <http://example.org/ns#a5505> .
+<http://example.org/ns#a5506> <http://example.org/ns#a5506> <http://example.org/ns#a5506> .
+<http://example.org/ns#a5507> <http://example.org/ns#a5507> <http://example.org/ns#a5507> .
+<http://example.org/ns#a5508> <http://example.org/ns#a5508> <http://example.org/ns#a5508> .
+<http://example.org/ns#a5509> <http://example.org/ns#a5509> <http://example.org/ns#a5509> .
+<http://example.org/ns#a5510> <http://example.org/ns#a5510> <http://example.org/ns#a5510> .
+<http://example.org/ns#a5511> <http://example.org/ns#a5511> <http://example.org/ns#a5511> .
+<http://example.org/ns#a5512> <http://example.org/ns#a5512> <http://example.org/ns#a5512> .
+<http://example.org/ns#a5513> <http://example.org/ns#a5513> <http://example.org/ns#a5513> .
+<http://example.org/ns#a5514> <http://example.org/ns#a5514> <http://example.org/ns#a5514> .
+<http://example.org/ns#a5515> <http://example.org/ns#a5515> <http://example.org/ns#a5515> .
+<http://example.org/ns#a5516> <http://example.org/ns#a5516> <http://example.org/ns#a5516> .
+<http://example.org/ns#a5517> <http://example.org/ns#a5517> <http://example.org/ns#a5517> .
+<http://example.org/ns#a5518> <http://example.org/ns#a5518> <http://example.org/ns#a5518> .
+<http://example.org/ns#a5519> <http://example.org/ns#a5519> <http://example.org/ns#a5519> .
+<http://example.org/ns#a5520> <http://example.org/ns#a5520> <http://example.org/ns#a5520> .
+<http://example.org/ns#a5521> <http://example.org/ns#a5521> <http://example.org/ns#a5521> .
+<http://example.org/ns#a5522> <http://example.org/ns#a5522> <http://example.org/ns#a5522> .
+<http://example.org/ns#a5523> <http://example.org/ns#a5523> <http://example.org/ns#a5523> .
+<http://example.org/ns#a5524> <http://example.org/ns#a5524> <http://example.org/ns#a5524> .
+<http://example.org/ns#a5525> <http://example.org/ns#a5525> <http://example.org/ns#a5525> .
+<http://example.org/ns#a5526> <http://example.org/ns#a5526> <http://example.org/ns#a5526> .
+<http://example.org/ns#a5527> <http://example.org/ns#a5527> <http://example.org/ns#a5527> .
+<http://example.org/ns#a5528> <http://example.org/ns#a5528> <http://example.org/ns#a5528> .
+<http://example.org/ns#a5529> <http://example.org/ns#a5529> <http://example.org/ns#a5529> .
+<http://example.org/ns#a5530> <http://example.org/ns#a5530> <http://example.org/ns#a5530> .
+<http://example.org/ns#a5531> <http://example.org/ns#a5531> <http://example.org/ns#a5531> .
+<http://example.org/ns#a5532> <http://example.org/ns#a5532> <http://example.org/ns#a5532> .
+<http://example.org/ns#a5533> <http://example.org/ns#a5533> <http://example.org/ns#a5533> .
+<http://example.org/ns#a5534> <http://example.org/ns#a5534> <http://example.org/ns#a5534> .
+<http://example.org/ns#a5535> <http://example.org/ns#a5535> <http://example.org/ns#a5535> .
+<http://example.org/ns#a5536> <http://example.org/ns#a5536> <http://example.org/ns#a5536> .
+<http://example.org/ns#a5537> <http://example.org/ns#a5537> <http://example.org/ns#a5537> .
+<http://example.org/ns#a5538> <http://example.org/ns#a5538> <http://example.org/ns#a5538> .
+<http://example.org/ns#a5539> <http://example.org/ns#a5539> <http://example.org/ns#a5539> .
+<http://example.org/ns#a5540> <http://example.org/ns#a5540> <http://example.org/ns#a5540> .
+<http://example.org/ns#a5541> <http://example.org/ns#a5541> <http://example.org/ns#a5541> .
+<http://example.org/ns#a5542> <http://example.org/ns#a5542> <http://example.org/ns#a5542> .
+<http://example.org/ns#a5543> <http://example.org/ns#a5543> <http://example.org/ns#a5543> .
+<http://example.org/ns#a5544> <http://example.org/ns#a5544> <http://example.org/ns#a5544> .
+<http://example.org/ns#a5545> <http://example.org/ns#a5545> <http://example.org/ns#a5545> .
+<http://example.org/ns#a5546> <http://example.org/ns#a5546> <http://example.org/ns#a5546> .
+<http://example.org/ns#a5547> <http://example.org/ns#a5547> <http://example.org/ns#a5547> .
+<http://example.org/ns#a5548> <http://example.org/ns#a5548> <http://example.org/ns#a5548> .
+<http://example.org/ns#a5549> <http://example.org/ns#a5549> <http://example.org/ns#a5549> .
+<http://example.org/ns#a5550> <http://example.org/ns#a5550> <http://example.org/ns#a5550> .
+<http://example.org/ns#a5551> <http://example.org/ns#a5551> <http://example.org/ns#a5551> .
+<http://example.org/ns#a5552> <http://example.org/ns#a5552> <http://example.org/ns#a5552> .
+<http://example.org/ns#a5553> <http://example.org/ns#a5553> <http://example.org/ns#a5553> .
+<http://example.org/ns#a5554> <http://example.org/ns#a5554> <http://example.org/ns#a5554> .
+<http://example.org/ns#a5555> <http://example.org/ns#a5555> <http://example.org/ns#a5555> .
+<http://example.org/ns#a5556> <http://example.org/ns#a5556> <http://example.org/ns#a5556> .
+<http://example.org/ns#a5557> <http://example.org/ns#a5557> <http://example.org/ns#a5557> .
+<http://example.org/ns#a5558> <http://example.org/ns#a5558> <http://example.org/ns#a5558> .
+<http://example.org/ns#a5559> <http://example.org/ns#a5559> <http://example.org/ns#a5559> .
+<http://example.org/ns#a5560> <http://example.org/ns#a5560> <http://example.org/ns#a5560> .
+<http://example.org/ns#a5561> <http://example.org/ns#a5561> <http://example.org/ns#a5561> .
+<http://example.org/ns#a5562> <http://example.org/ns#a5562> <http://example.org/ns#a5562> .
+<http://example.org/ns#a5563> <http://example.org/ns#a5563> <http://example.org/ns#a5563> .
+<http://example.org/ns#a5564> <http://example.org/ns#a5564> <http://example.org/ns#a5564> .
+<http://example.org/ns#a5565> <http://example.org/ns#a5565> <http://example.org/ns#a5565> .
+<http://example.org/ns#a5566> <http://example.org/ns#a5566> <http://example.org/ns#a5566> .
+<http://example.org/ns#a5567> <http://example.org/ns#a5567> <http://example.org/ns#a5567> .
+<http://example.org/ns#a5568> <http://example.org/ns#a5568> <http://example.org/ns#a5568> .
+<http://example.org/ns#a5569> <http://example.org/ns#a5569> <http://example.org/ns#a5569> .
+<http://example.org/ns#a5570> <http://example.org/ns#a5570> <http://example.org/ns#a5570> .
+<http://example.org/ns#a5571> <http://example.org/ns#a5571> <http://example.org/ns#a5571> .
+<http://example.org/ns#a5572> <http://example.org/ns#a5572> <http://example.org/ns#a5572> .
+<http://example.org/ns#a5573> <http://example.org/ns#a5573> <http://example.org/ns#a5573> .
+<http://example.org/ns#a5574> <http://example.org/ns#a5574> <http://example.org/ns#a5574> .
+<http://example.org/ns#a5575> <http://example.org/ns#a5575> <http://example.org/ns#a5575> .
+<http://example.org/ns#a5576> <http://example.org/ns#a5576> <http://example.org/ns#a5576> .
+<http://example.org/ns#a5577> <http://example.org/ns#a5577> <http://example.org/ns#a5577> .
+<http://example.org/ns#a5578> <http://example.org/ns#a5578> <http://example.org/ns#a5578> .
+<http://example.org/ns#a5579> <http://example.org/ns#a5579> <http://example.org/ns#a5579> .
+<http://example.org/ns#a5580> <http://example.org/ns#a5580> <http://example.org/ns#a5580> .
+<http://example.org/ns#a5581> <http://example.org/ns#a5581> <http://example.org/ns#a5581> .
+<http://example.org/ns#a5582> <http://example.org/ns#a5582> <http://example.org/ns#a5582> .
+<http://example.org/ns#a5583> <http://example.org/ns#a5583> <http://example.org/ns#a5583> .
+<http://example.org/ns#a5584> <http://example.org/ns#a5584> <http://example.org/ns#a5584> .
+<http://example.org/ns#a5585> <http://example.org/ns#a5585> <http://example.org/ns#a5585> .
+<http://example.org/ns#a5586> <http://example.org/ns#a5586> <http://example.org/ns#a5586> .
+<http://example.org/ns#a5587> <http://example.org/ns#a5587> <http://example.org/ns#a5587> .
+<http://example.org/ns#a5588> <http://example.org/ns#a5588> <http://example.org/ns#a5588> .
+<http://example.org/ns#a5589> <http://example.org/ns#a5589> <http://example.org/ns#a5589> .
+<http://example.org/ns#a5590> <http://example.org/ns#a5590> <http://example.org/ns#a5590> .
+<http://example.org/ns#a5591> <http://example.org/ns#a5591> <http://example.org/ns#a5591> .
+<http://example.org/ns#a5592> <http://example.org/ns#a5592> <http://example.org/ns#a5592> .
+<http://example.org/ns#a5593> <http://example.org/ns#a5593> <http://example.org/ns#a5593> .
+<http://example.org/ns#a5594> <http://example.org/ns#a5594> <http://example.org/ns#a5594> .
+<http://example.org/ns#a5595> <http://example.org/ns#a5595> <http://example.org/ns#a5595> .
+<http://example.org/ns#a5596> <http://example.org/ns#a5596> <http://example.org/ns#a5596> .
+<http://example.org/ns#a5597> <http://example.org/ns#a5597> <http://example.org/ns#a5597> .
+<http://example.org/ns#a5598> <http://example.org/ns#a5598> <http://example.org/ns#a5598> .
+<http://example.org/ns#a5599> <http://example.org/ns#a5599> <http://example.org/ns#a5599> .
+<http://example.org/ns#a5600> <http://example.org/ns#a5600> <http://example.org/ns#a5600> .
+<http://example.org/ns#a5601> <http://example.org/ns#a5601> <http://example.org/ns#a5601> .
+<http://example.org/ns#a5602> <http://example.org/ns#a5602> <http://example.org/ns#a5602> .
+<http://example.org/ns#a5603> <http://example.org/ns#a5603> <http://example.org/ns#a5603> .
+<http://example.org/ns#a5604> <http://example.org/ns#a5604> <http://example.org/ns#a5604> .
+<http://example.org/ns#a5605> <http://example.org/ns#a5605> <http://example.org/ns#a5605> .
+<http://example.org/ns#a5606> <http://example.org/ns#a5606> <http://example.org/ns#a5606> .
+<http://example.org/ns#a5607> <http://example.org/ns#a5607> <http://example.org/ns#a5607> .
+<http://example.org/ns#a5608> <http://example.org/ns#a5608> <http://example.org/ns#a5608> .
+<http://example.org/ns#a5609> <http://example.org/ns#a5609> <http://example.org/ns#a5609> .
+<http://example.org/ns#a5610> <http://example.org/ns#a5610> <http://example.org/ns#a5610> .
+<http://example.org/ns#a5611> <http://example.org/ns#a5611> <http://example.org/ns#a5611> .
+<http://example.org/ns#a5612> <http://example.org/ns#a5612> <http://example.org/ns#a5612> .
+<http://example.org/ns#a5613> <http://example.org/ns#a5613> <http://example.org/ns#a5613> .
+<http://example.org/ns#a5614> <http://example.org/ns#a5614> <http://example.org/ns#a5614> .
+<http://example.org/ns#a5615> <http://example.org/ns#a5615> <http://example.org/ns#a5615> .
+<http://example.org/ns#a5616> <http://example.org/ns#a5616> <http://example.org/ns#a5616> .
+<http://example.org/ns#a5617> <http://example.org/ns#a5617> <http://example.org/ns#a5617> .
+<http://example.org/ns#a5618> <http://example.org/ns#a5618> <http://example.org/ns#a5618> .
+<http://example.org/ns#a5619> <http://example.org/ns#a5619> <http://example.org/ns#a5619> .
+<http://example.org/ns#a5620> <http://example.org/ns#a5620> <http://example.org/ns#a5620> .
+<http://example.org/ns#a5621> <http://example.org/ns#a5621> <http://example.org/ns#a5621> .
+<http://example.org/ns#a5622> <http://example.org/ns#a5622> <http://example.org/ns#a5622> .
+<http://example.org/ns#a5623> <http://example.org/ns#a5623> <http://example.org/ns#a5623> .
+<http://example.org/ns#a5624> <http://example.org/ns#a5624> <http://example.org/ns#a5624> .
+<http://example.org/ns#a5625> <http://example.org/ns#a5625> <http://example.org/ns#a5625> .
+<http://example.org/ns#a5626> <http://example.org/ns#a5626> <http://example.org/ns#a5626> .
+<http://example.org/ns#a5627> <http://example.org/ns#a5627> <http://example.org/ns#a5627> .
+<http://example.org/ns#a5628> <http://example.org/ns#a5628> <http://example.org/ns#a5628> .
+<http://example.org/ns#a5629> <http://example.org/ns#a5629> <http://example.org/ns#a5629> .
+<http://example.org/ns#a5630> <http://example.org/ns#a5630> <http://example.org/ns#a5630> .
+<http://example.org/ns#a5631> <http://example.org/ns#a5631> <http://example.org/ns#a5631> .
+<http://example.org/ns#a5632> <http://example.org/ns#a5632> <http://example.org/ns#a5632> .
+<http://example.org/ns#a5633> <http://example.org/ns#a5633> <http://example.org/ns#a5633> .
+<http://example.org/ns#a5634> <http://example.org/ns#a5634> <http://example.org/ns#a5634> .
+<http://example.org/ns#a5635> <http://example.org/ns#a5635> <http://example.org/ns#a5635> .
+<http://example.org/ns#a5636> <http://example.org/ns#a5636> <http://example.org/ns#a5636> .
+<http://example.org/ns#a5637> <http://example.org/ns#a5637> <http://example.org/ns#a5637> .
+<http://example.org/ns#a5638> <http://example.org/ns#a5638> <http://example.org/ns#a5638> .
+<http://example.org/ns#a5639> <http://example.org/ns#a5639> <http://example.org/ns#a5639> .
+<http://example.org/ns#a5640> <http://example.org/ns#a5640> <http://example.org/ns#a5640> .
+<http://example.org/ns#a5641> <http://example.org/ns#a5641> <http://example.org/ns#a5641> .
+<http://example.org/ns#a5642> <http://example.org/ns#a5642> <http://example.org/ns#a5642> .
+<http://example.org/ns#a5643> <http://example.org/ns#a5643> <http://example.org/ns#a5643> .
+<http://example.org/ns#a5644> <http://example.org/ns#a5644> <http://example.org/ns#a5644> .
+<http://example.org/ns#a5645> <http://example.org/ns#a5645> <http://example.org/ns#a5645> .
+<http://example.org/ns#a5646> <http://example.org/ns#a5646> <http://example.org/ns#a5646> .
+<http://example.org/ns#a5647> <http://example.org/ns#a5647> <http://example.org/ns#a5647> .
+<http://example.org/ns#a5648> <http://example.org/ns#a5648> <http://example.org/ns#a5648> .
+<http://example.org/ns#a5649> <http://example.org/ns#a5649> <http://example.org/ns#a5649> .
+<http://example.org/ns#a5650> <http://example.org/ns#a5650> <http://example.org/ns#a5650> .
+<http://example.org/ns#a5651> <http://example.org/ns#a5651> <http://example.org/ns#a5651> .
+<http://example.org/ns#a5652> <http://example.org/ns#a5652> <http://example.org/ns#a5652> .
+<http://example.org/ns#a5653> <http://example.org/ns#a5653> <http://example.org/ns#a5653> .
+<http://example.org/ns#a5654> <http://example.org/ns#a5654> <http://example.org/ns#a5654> .
+<http://example.org/ns#a5655> <http://example.org/ns#a5655> <http://example.org/ns#a5655> .
+<http://example.org/ns#a5656> <http://example.org/ns#a5656> <http://example.org/ns#a5656> .
+<http://example.org/ns#a5657> <http://example.org/ns#a5657> <http://example.org/ns#a5657> .
+<http://example.org/ns#a5658> <http://example.org/ns#a5658> <http://example.org/ns#a5658> .
+<http://example.org/ns#a5659> <http://example.org/ns#a5659> <http://example.org/ns#a5659> .
+<http://example.org/ns#a5660> <http://example.org/ns#a5660> <http://example.org/ns#a5660> .
+<http://example.org/ns#a5661> <http://example.org/ns#a5661> <http://example.org/ns#a5661> .
+<http://example.org/ns#a5662> <http://example.org/ns#a5662> <http://example.org/ns#a5662> .
+<http://example.org/ns#a5663> <http://example.org/ns#a5663> <http://example.org/ns#a5663> .
+<http://example.org/ns#a5664> <http://example.org/ns#a5664> <http://example.org/ns#a5664> .
+<http://example.org/ns#a5665> <http://example.org/ns#a5665> <http://example.org/ns#a5665> .
+<http://example.org/ns#a5666> <http://example.org/ns#a5666> <http://example.org/ns#a5666> .
+<http://example.org/ns#a5667> <http://example.org/ns#a5667> <http://example.org/ns#a5667> .
+<http://example.org/ns#a5668> <http://example.org/ns#a5668> <http://example.org/ns#a5668> .
+<http://example.org/ns#a5669> <http://example.org/ns#a5669> <http://example.org/ns#a5669> .
+<http://example.org/ns#a5670> <http://example.org/ns#a5670> <http://example.org/ns#a5670> .
+<http://example.org/ns#a5671> <http://example.org/ns#a5671> <http://example.org/ns#a5671> .
+<http://example.org/ns#a5672> <http://example.org/ns#a5672> <http://example.org/ns#a5672> .
+<http://example.org/ns#a5673> <http://example.org/ns#a5673> <http://example.org/ns#a5673> .
+<http://example.org/ns#a5674> <http://example.org/ns#a5674> <http://example.org/ns#a5674> .
+<http://example.org/ns#a5675> <http://example.org/ns#a5675> <http://example.org/ns#a5675> .
+<http://example.org/ns#a5676> <http://example.org/ns#a5676> <http://example.org/ns#a5676> .
+<http://example.org/ns#a5677> <http://example.org/ns#a5677> <http://example.org/ns#a5677> .
+<http://example.org/ns#a5678> <http://example.org/ns#a5678> <http://example.org/ns#a5678> .
+<http://example.org/ns#a5679> <http://example.org/ns#a5679> <http://example.org/ns#a5679> .
+<http://example.org/ns#a5680> <http://example.org/ns#a5680> <http://example.org/ns#a5680> .
+<http://example.org/ns#a5681> <http://example.org/ns#a5681> <http://example.org/ns#a5681> .
+<http://example.org/ns#a5682> <http://example.org/ns#a5682> <http://example.org/ns#a5682> .
+<http://example.org/ns#a5683> <http://example.org/ns#a5683> <http://example.org/ns#a5683> .
+<http://example.org/ns#a5684> <http://example.org/ns#a5684> <http://example.org/ns#a5684> .
+<http://example.org/ns#a5685> <http://example.org/ns#a5685> <http://example.org/ns#a5685> .
+<http://example.org/ns#a5686> <http://example.org/ns#a5686> <http://example.org/ns#a5686> .
+<http://example.org/ns#a5687> <http://example.org/ns#a5687> <http://example.org/ns#a5687> .
+<http://example.org/ns#a5688> <http://example.org/ns#a5688> <http://example.org/ns#a5688> .
+<http://example.org/ns#a5689> <http://example.org/ns#a5689> <http://example.org/ns#a5689> .
+<http://example.org/ns#a5690> <http://example.org/ns#a5690> <http://example.org/ns#a5690> .
+<http://example.org/ns#a5691> <http://example.org/ns#a5691> <http://example.org/ns#a5691> .
+<http://example.org/ns#a5692> <http://example.org/ns#a5692> <http://example.org/ns#a5692> .
+<http://example.org/ns#a5693> <http://example.org/ns#a5693> <http://example.org/ns#a5693> .
+<http://example.org/ns#a5694> <http://example.org/ns#a5694> <http://example.org/ns#a5694> .
+<http://example.org/ns#a5695> <http://example.org/ns#a5695> <http://example.org/ns#a5695> .
+<http://example.org/ns#a5696> <http://example.org/ns#a5696> <http://example.org/ns#a5696> .
+<http://example.org/ns#a5697> <http://example.org/ns#a5697> <http://example.org/ns#a5697> .
+<http://example.org/ns#a5698> <http://example.org/ns#a5698> <http://example.org/ns#a5698> .
+<http://example.org/ns#a5699> <http://example.org/ns#a5699> <http://example.org/ns#a5699> .
+<http://example.org/ns#a5700> <http://example.org/ns#a5700> <http://example.org/ns#a5700> .
+<http://example.org/ns#a5701> <http://example.org/ns#a5701> <http://example.org/ns#a5701> .
+<http://example.org/ns#a5702> <http://example.org/ns#a5702> <http://example.org/ns#a5702> .
+<http://example.org/ns#a5703> <http://example.org/ns#a5703> <http://example.org/ns#a5703> .
+<http://example.org/ns#a5704> <http://example.org/ns#a5704> <http://example.org/ns#a5704> .
+<http://example.org/ns#a5705> <http://example.org/ns#a5705> <http://example.org/ns#a5705> .
+<http://example.org/ns#a5706> <http://example.org/ns#a5706> <http://example.org/ns#a5706> .
+<http://example.org/ns#a5707> <http://example.org/ns#a5707> <http://example.org/ns#a5707> .
+<http://example.org/ns#a5708> <http://example.org/ns#a5708> <http://example.org/ns#a5708> .
+<http://example.org/ns#a5709> <http://example.org/ns#a5709> <http://example.org/ns#a5709> .
+<http://example.org/ns#a5710> <http://example.org/ns#a5710> <http://example.org/ns#a5710> .
+<http://example.org/ns#a5711> <http://example.org/ns#a5711> <http://example.org/ns#a5711> .
+<http://example.org/ns#a5712> <http://example.org/ns#a5712> <http://example.org/ns#a5712> .
+<http://example.org/ns#a5713> <http://example.org/ns#a5713> <http://example.org/ns#a5713> .
+<http://example.org/ns#a5714> <http://example.org/ns#a5714> <http://example.org/ns#a5714> .
+<http://example.org/ns#a5715> <http://example.org/ns#a5715> <http://example.org/ns#a5715> .
+<http://example.org/ns#a5716> <http://example.org/ns#a5716> <http://example.org/ns#a5716> .
+<http://example.org/ns#a5717> <http://example.org/ns#a5717> <http://example.org/ns#a5717> .
+<http://example.org/ns#a5718> <http://example.org/ns#a5718> <http://example.org/ns#a5718> .
+<http://example.org/ns#a5719> <http://example.org/ns#a5719> <http://example.org/ns#a5719> .
+<http://example.org/ns#a5720> <http://example.org/ns#a5720> <http://example.org/ns#a5720> .
+<http://example.org/ns#a5721> <http://example.org/ns#a5721> <http://example.org/ns#a5721> .
+<http://example.org/ns#a5722> <http://example.org/ns#a5722> <http://example.org/ns#a5722> .
+<http://example.org/ns#a5723> <http://example.org/ns#a5723> <http://example.org/ns#a5723> .
+<http://example.org/ns#a5724> <http://example.org/ns#a5724> <http://example.org/ns#a5724> .
+<http://example.org/ns#a5725> <http://example.org/ns#a5725> <http://example.org/ns#a5725> .
+<http://example.org/ns#a5726> <http://example.org/ns#a5726> <http://example.org/ns#a5726> .
+<http://example.org/ns#a5727> <http://example.org/ns#a5727> <http://example.org/ns#a5727> .
+<http://example.org/ns#a5728> <http://example.org/ns#a5728> <http://example.org/ns#a5728> .
+<http://example.org/ns#a5729> <http://example.org/ns#a5729> <http://example.org/ns#a5729> .
+<http://example.org/ns#a5730> <http://example.org/ns#a5730> <http://example.org/ns#a5730> .
+<http://example.org/ns#a5731> <http://example.org/ns#a5731> <http://example.org/ns#a5731> .
+<http://example.org/ns#a5732> <http://example.org/ns#a5732> <http://example.org/ns#a5732> .
+<http://example.org/ns#a5733> <http://example.org/ns#a5733> <http://example.org/ns#a5733> .
+<http://example.org/ns#a5734> <http://example.org/ns#a5734> <http://example.org/ns#a5734> .
+<http://example.org/ns#a5735> <http://example.org/ns#a5735> <http://example.org/ns#a5735> .
+<http://example.org/ns#a5736> <http://example.org/ns#a5736> <http://example.org/ns#a5736> .
+<http://example.org/ns#a5737> <http://example.org/ns#a5737> <http://example.org/ns#a5737> .
+<http://example.org/ns#a5738> <http://example.org/ns#a5738> <http://example.org/ns#a5738> .
+<http://example.org/ns#a5739> <http://example.org/ns#a5739> <http://example.org/ns#a5739> .
+<http://example.org/ns#a5740> <http://example.org/ns#a5740> <http://example.org/ns#a5740> .
+<http://example.org/ns#a5741> <http://example.org/ns#a5741> <http://example.org/ns#a5741> .
+<http://example.org/ns#a5742> <http://example.org/ns#a5742> <http://example.org/ns#a5742> .
+<http://example.org/ns#a5743> <http://example.org/ns#a5743> <http://example.org/ns#a5743> .
+<http://example.org/ns#a5744> <http://example.org/ns#a5744> <http://example.org/ns#a5744> .
+<http://example.org/ns#a5745> <http://example.org/ns#a5745> <http://example.org/ns#a5745> .
+<http://example.org/ns#a5746> <http://example.org/ns#a5746> <http://example.org/ns#a5746> .
+<http://example.org/ns#a5747> <http://example.org/ns#a5747> <http://example.org/ns#a5747> .
+<http://example.org/ns#a5748> <http://example.org/ns#a5748> <http://example.org/ns#a5748> .
+<http://example.org/ns#a5749> <http://example.org/ns#a5749> <http://example.org/ns#a5749> .
+<http://example.org/ns#a5750> <http://example.org/ns#a5750> <http://example.org/ns#a5750> .
+<http://example.org/ns#a5751> <http://example.org/ns#a5751> <http://example.org/ns#a5751> .
+<http://example.org/ns#a5752> <http://example.org/ns#a5752> <http://example.org/ns#a5752> .
+<http://example.org/ns#a5753> <http://example.org/ns#a5753> <http://example.org/ns#a5753> .
+<http://example.org/ns#a5754> <http://example.org/ns#a5754> <http://example.org/ns#a5754> .
+<http://example.org/ns#a5755> <http://example.org/ns#a5755> <http://example.org/ns#a5755> .
+<http://example.org/ns#a5756> <http://example.org/ns#a5756> <http://example.org/ns#a5756> .
+<http://example.org/ns#a5757> <http://example.org/ns#a5757> <http://example.org/ns#a5757> .
+<http://example.org/ns#a5758> <http://example.org/ns#a5758> <http://example.org/ns#a5758> .
+<http://example.org/ns#a5759> <http://example.org/ns#a5759> <http://example.org/ns#a5759> .
+<http://example.org/ns#a5760> <http://example.org/ns#a5760> <http://example.org/ns#a5760> .
+<http://example.org/ns#a5761> <http://example.org/ns#a5761> <http://example.org/ns#a5761> .
+<http://example.org/ns#a5762> <http://example.org/ns#a5762> <http://example.org/ns#a5762> .
+<http://example.org/ns#a5763> <http://example.org/ns#a5763> <http://example.org/ns#a5763> .
+<http://example.org/ns#a5764> <http://example.org/ns#a5764> <http://example.org/ns#a5764> .
+<http://example.org/ns#a5765> <http://example.org/ns#a5765> <http://example.org/ns#a5765> .
+<http://example.org/ns#a5766> <http://example.org/ns#a5766> <http://example.org/ns#a5766> .
+<http://example.org/ns#a5767> <http://example.org/ns#a5767> <http://example.org/ns#a5767> .
+<http://example.org/ns#a5768> <http://example.org/ns#a5768> <http://example.org/ns#a5768> .
+<http://example.org/ns#a5769> <http://example.org/ns#a5769> <http://example.org/ns#a5769> .
+<http://example.org/ns#a5770> <http://example.org/ns#a5770> <http://example.org/ns#a5770> .
+<http://example.org/ns#a5771> <http://example.org/ns#a5771> <http://example.org/ns#a5771> .
+<http://example.org/ns#a5772> <http://example.org/ns#a5772> <http://example.org/ns#a5772> .
+<http://example.org/ns#a5773> <http://example.org/ns#a5773> <http://example.org/ns#a5773> .
+<http://example.org/ns#a5774> <http://example.org/ns#a5774> <http://example.org/ns#a5774> .
+<http://example.org/ns#a5775> <http://example.org/ns#a5775> <http://example.org/ns#a5775> .
+<http://example.org/ns#a5776> <http://example.org/ns#a5776> <http://example.org/ns#a5776> .
+<http://example.org/ns#a5777> <http://example.org/ns#a5777> <http://example.org/ns#a5777> .
+<http://example.org/ns#a5778> <http://example.org/ns#a5778> <http://example.org/ns#a5778> .
+<http://example.org/ns#a5779> <http://example.org/ns#a5779> <http://example.org/ns#a5779> .
+<http://example.org/ns#a5780> <http://example.org/ns#a5780> <http://example.org/ns#a5780> .
+<http://example.org/ns#a5781> <http://example.org/ns#a5781> <http://example.org/ns#a5781> .
+<http://example.org/ns#a5782> <http://example.org/ns#a5782> <http://example.org/ns#a5782> .
+<http://example.org/ns#a5783> <http://example.org/ns#a5783> <http://example.org/ns#a5783> .
+<http://example.org/ns#a5784> <http://example.org/ns#a5784> <http://example.org/ns#a5784> .
+<http://example.org/ns#a5785> <http://example.org/ns#a5785> <http://example.org/ns#a5785> .
+<http://example.org/ns#a5786> <http://example.org/ns#a5786> <http://example.org/ns#a5786> .
+<http://example.org/ns#a5787> <http://example.org/ns#a5787> <http://example.org/ns#a5787> .
+<http://example.org/ns#a5788> <http://example.org/ns#a5788> <http://example.org/ns#a5788> .
+<http://example.org/ns#a5789> <http://example.org/ns#a5789> <http://example.org/ns#a5789> .
+<http://example.org/ns#a5790> <http://example.org/ns#a5790> <http://example.org/ns#a5790> .
+<http://example.org/ns#a5791> <http://example.org/ns#a5791> <http://example.org/ns#a5791> .
+<http://example.org/ns#a5792> <http://example.org/ns#a5792> <http://example.org/ns#a5792> .
+<http://example.org/ns#a5793> <http://example.org/ns#a5793> <http://example.org/ns#a5793> .
+<http://example.org/ns#a5794> <http://example.org/ns#a5794> <http://example.org/ns#a5794> .
+<http://example.org/ns#a5795> <http://example.org/ns#a5795> <http://example.org/ns#a5795> .
+<http://example.org/ns#a5796> <http://example.org/ns#a5796> <http://example.org/ns#a5796> .
+<http://example.org/ns#a5797> <http://example.org/ns#a5797> <http://example.org/ns#a5797> .
+<http://example.org/ns#a5798> <http://example.org/ns#a5798> <http://example.org/ns#a5798> .
+<http://example.org/ns#a5799> <http://example.org/ns#a5799> <http://example.org/ns#a5799> .
+<http://example.org/ns#a5800> <http://example.org/ns#a5800> <http://example.org/ns#a5800> .
+<http://example.org/ns#a5801> <http://example.org/ns#a5801> <http://example.org/ns#a5801> .
+<http://example.org/ns#a5802> <http://example.org/ns#a5802> <http://example.org/ns#a5802> .
+<http://example.org/ns#a5803> <http://example.org/ns#a5803> <http://example.org/ns#a5803> .
+<http://example.org/ns#a5804> <http://example.org/ns#a5804> <http://example.org/ns#a5804> .
+<http://example.org/ns#a5805> <http://example.org/ns#a5805> <http://example.org/ns#a5805> .
+<http://example.org/ns#a5806> <http://example.org/ns#a5806> <http://example.org/ns#a5806> .
+<http://example.org/ns#a5807> <http://example.org/ns#a5807> <http://example.org/ns#a5807> .
+<http://example.org/ns#a5808> <http://example.org/ns#a5808> <http://example.org/ns#a5808> .
+<http://example.org/ns#a5809> <http://example.org/ns#a5809> <http://example.org/ns#a5809> .
+<http://example.org/ns#a5810> <http://example.org/ns#a5810> <http://example.org/ns#a5810> .
+<http://example.org/ns#a5811> <http://example.org/ns#a5811> <http://example.org/ns#a5811> .
+<http://example.org/ns#a5812> <http://example.org/ns#a5812> <http://example.org/ns#a5812> .
+<http://example.org/ns#a5813> <http://example.org/ns#a5813> <http://example.org/ns#a5813> .
+<http://example.org/ns#a5814> <http://example.org/ns#a5814> <http://example.org/ns#a5814> .
+<http://example.org/ns#a5815> <http://example.org/ns#a5815> <http://example.org/ns#a5815> .
+<http://example.org/ns#a5816> <http://example.org/ns#a5816> <http://example.org/ns#a5816> .
+<http://example.org/ns#a5817> <http://example.org/ns#a5817> <http://example.org/ns#a5817> .
+<http://example.org/ns#a5818> <http://example.org/ns#a5818> <http://example.org/ns#a5818> .
+<http://example.org/ns#a5819> <http://example.org/ns#a5819> <http://example.org/ns#a5819> .
+<http://example.org/ns#a5820> <http://example.org/ns#a5820> <http://example.org/ns#a5820> .
+<http://example.org/ns#a5821> <http://example.org/ns#a5821> <http://example.org/ns#a5821> .
+<http://example.org/ns#a5822> <http://example.org/ns#a5822> <http://example.org/ns#a5822> .
+<http://example.org/ns#a5823> <http://example.org/ns#a5823> <http://example.org/ns#a5823> .
+<http://example.org/ns#a5824> <http://example.org/ns#a5824> <http://example.org/ns#a5824> .
+<http://example.org/ns#a5825> <http://example.org/ns#a5825> <http://example.org/ns#a5825> .
+<http://example.org/ns#a5826> <http://example.org/ns#a5826> <http://example.org/ns#a5826> .
+<http://example.org/ns#a5827> <http://example.org/ns#a5827> <http://example.org/ns#a5827> .
+<http://example.org/ns#a5828> <http://example.org/ns#a5828> <http://example.org/ns#a5828> .
+<http://example.org/ns#a5829> <http://example.org/ns#a5829> <http://example.org/ns#a5829> .
+<http://example.org/ns#a5830> <http://example.org/ns#a5830> <http://example.org/ns#a5830> .
+<http://example.org/ns#a5831> <http://example.org/ns#a5831> <http://example.org/ns#a5831> .
+<http://example.org/ns#a5832> <http://example.org/ns#a5832> <http://example.org/ns#a5832> .
+<http://example.org/ns#a5833> <http://example.org/ns#a5833> <http://example.org/ns#a5833> .
+<http://example.org/ns#a5834> <http://example.org/ns#a5834> <http://example.org/ns#a5834> .
+<http://example.org/ns#a5835> <http://example.org/ns#a5835> <http://example.org/ns#a5835> .
+<http://example.org/ns#a5836> <http://example.org/ns#a5836> <http://example.org/ns#a5836> .
+<http://example.org/ns#a5837> <http://example.org/ns#a5837> <http://example.org/ns#a5837> .
+<http://example.org/ns#a5838> <http://example.org/ns#a5838> <http://example.org/ns#a5838> .
+<http://example.org/ns#a5839> <http://example.org/ns#a5839> <http://example.org/ns#a5839> .
+<http://example.org/ns#a5840> <http://example.org/ns#a5840> <http://example.org/ns#a5840> .
+<http://example.org/ns#a5841> <http://example.org/ns#a5841> <http://example.org/ns#a5841> .
+<http://example.org/ns#a5842> <http://example.org/ns#a5842> <http://example.org/ns#a5842> .
+<http://example.org/ns#a5843> <http://example.org/ns#a5843> <http://example.org/ns#a5843> .
+<http://example.org/ns#a5844> <http://example.org/ns#a5844> <http://example.org/ns#a5844> .
+<http://example.org/ns#a5845> <http://example.org/ns#a5845> <http://example.org/ns#a5845> .
+<http://example.org/ns#a5846> <http://example.org/ns#a5846> <http://example.org/ns#a5846> .
+<http://example.org/ns#a5847> <http://example.org/ns#a5847> <http://example.org/ns#a5847> .
+<http://example.org/ns#a5848> <http://example.org/ns#a5848> <http://example.org/ns#a5848> .
+<http://example.org/ns#a5849> <http://example.org/ns#a5849> <http://example.org/ns#a5849> .
+<http://example.org/ns#a5850> <http://example.org/ns#a5850> <http://example.org/ns#a5850> .
+<http://example.org/ns#a5851> <http://example.org/ns#a5851> <http://example.org/ns#a5851> .
+<http://example.org/ns#a5852> <http://example.org/ns#a5852> <http://example.org/ns#a5852> .
+<http://example.org/ns#a5853> <http://example.org/ns#a5853> <http://example.org/ns#a5853> .
+<http://example.org/ns#a5854> <http://example.org/ns#a5854> <http://example.org/ns#a5854> .
+<http://example.org/ns#a5855> <http://example.org/ns#a5855> <http://example.org/ns#a5855> .
+<http://example.org/ns#a5856> <http://example.org/ns#a5856> <http://example.org/ns#a5856> .
+<http://example.org/ns#a5857> <http://example.org/ns#a5857> <http://example.org/ns#a5857> .
+<http://example.org/ns#a5858> <http://example.org/ns#a5858> <http://example.org/ns#a5858> .
+<http://example.org/ns#a5859> <http://example.org/ns#a5859> <http://example.org/ns#a5859> .
+<http://example.org/ns#a5860> <http://example.org/ns#a5860> <http://example.org/ns#a5860> .
+<http://example.org/ns#a5861> <http://example.org/ns#a5861> <http://example.org/ns#a5861> .
+<http://example.org/ns#a5862> <http://example.org/ns#a5862> <http://example.org/ns#a5862> .
+<http://example.org/ns#a5863> <http://example.org/ns#a5863> <http://example.org/ns#a5863> .
+<http://example.org/ns#a5864> <http://example.org/ns#a5864> <http://example.org/ns#a5864> .
+<http://example.org/ns#a5865> <http://example.org/ns#a5865> <http://example.org/ns#a5865> .
+<http://example.org/ns#a5866> <http://example.org/ns#a5866> <http://example.org/ns#a5866> .
+<http://example.org/ns#a5867> <http://example.org/ns#a5867> <http://example.org/ns#a5867> .
+<http://example.org/ns#a5868> <http://example.org/ns#a5868> <http://example.org/ns#a5868> .
+<http://example.org/ns#a5869> <http://example.org/ns#a5869> <http://example.org/ns#a5869> .
+<http://example.org/ns#a5870> <http://example.org/ns#a5870> <http://example.org/ns#a5870> .
+<http://example.org/ns#a5871> <http://example.org/ns#a5871> <http://example.org/ns#a5871> .
+<http://example.org/ns#a5872> <http://example.org/ns#a5872> <http://example.org/ns#a5872> .
+<http://example.org/ns#a5873> <http://example.org/ns#a5873> <http://example.org/ns#a5873> .
+<http://example.org/ns#a5874> <http://example.org/ns#a5874> <http://example.org/ns#a5874> .
+<http://example.org/ns#a5875> <http://example.org/ns#a5875> <http://example.org/ns#a5875> .
+<http://example.org/ns#a5876> <http://example.org/ns#a5876> <http://example.org/ns#a5876> .
+<http://example.org/ns#a5877> <http://example.org/ns#a5877> <http://example.org/ns#a5877> .
+<http://example.org/ns#a5878> <http://example.org/ns#a5878> <http://example.org/ns#a5878> .
+<http://example.org/ns#a5879> <http://example.org/ns#a5879> <http://example.org/ns#a5879> .
+<http://example.org/ns#a5880> <http://example.org/ns#a5880> <http://example.org/ns#a5880> .
+<http://example.org/ns#a5881> <http://example.org/ns#a5881> <http://example.org/ns#a5881> .
+<http://example.org/ns#a5882> <http://example.org/ns#a5882> <http://example.org/ns#a5882> .
+<http://example.org/ns#a5883> <http://example.org/ns#a5883> <http://example.org/ns#a5883> .
+<http://example.org/ns#a5884> <http://example.org/ns#a5884> <http://example.org/ns#a5884> .
+<http://example.org/ns#a5885> <http://example.org/ns#a5885> <http://example.org/ns#a5885> .
+<http://example.org/ns#a5886> <http://example.org/ns#a5886> <http://example.org/ns#a5886> .
+<http://example.org/ns#a5887> <http://example.org/ns#a5887> <http://example.org/ns#a5887> .
+<http://example.org/ns#a5888> <http://example.org/ns#a5888> <http://example.org/ns#a5888> .
+<http://example.org/ns#a5889> <http://example.org/ns#a5889> <http://example.org/ns#a5889> .
+<http://example.org/ns#a5890> <http://example.org/ns#a5890> <http://example.org/ns#a5890> .
+<http://example.org/ns#a5891> <http://example.org/ns#a5891> <http://example.org/ns#a5891> .
+<http://example.org/ns#a5892> <http://example.org/ns#a5892> <http://example.org/ns#a5892> .
+<http://example.org/ns#a5893> <http://example.org/ns#a5893> <http://example.org/ns#a5893> .
+<http://example.org/ns#a5894> <http://example.org/ns#a5894> <http://example.org/ns#a5894> .
+<http://example.org/ns#a5895> <http://example.org/ns#a5895> <http://example.org/ns#a5895> .
+<http://example.org/ns#a5896> <http://example.org/ns#a5896> <http://example.org/ns#a5896> .
+<http://example.org/ns#a5897> <http://example.org/ns#a5897> <http://example.org/ns#a5897> .
+<http://example.org/ns#a5898> <http://example.org/ns#a5898> <http://example.org/ns#a5898> .
+<http://example.org/ns#a5899> <http://example.org/ns#a5899> <http://example.org/ns#a5899> .
+<http://example.org/ns#a5900> <http://example.org/ns#a5900> <http://example.org/ns#a5900> .
+<http://example.org/ns#a5901> <http://example.org/ns#a5901> <http://example.org/ns#a5901> .
+<http://example.org/ns#a5902> <http://example.org/ns#a5902> <http://example.org/ns#a5902> .
+<http://example.org/ns#a5903> <http://example.org/ns#a5903> <http://example.org/ns#a5903> .
+<http://example.org/ns#a5904> <http://example.org/ns#a5904> <http://example.org/ns#a5904> .
+<http://example.org/ns#a5905> <http://example.org/ns#a5905> <http://example.org/ns#a5905> .
+<http://example.org/ns#a5906> <http://example.org/ns#a5906> <http://example.org/ns#a5906> .
+<http://example.org/ns#a5907> <http://example.org/ns#a5907> <http://example.org/ns#a5907> .
+<http://example.org/ns#a5908> <http://example.org/ns#a5908> <http://example.org/ns#a5908> .
+<http://example.org/ns#a5909> <http://example.org/ns#a5909> <http://example.org/ns#a5909> .
+<http://example.org/ns#a5910> <http://example.org/ns#a5910> <http://example.org/ns#a5910> .
+<http://example.org/ns#a5911> <http://example.org/ns#a5911> <http://example.org/ns#a5911> .
+<http://example.org/ns#a5912> <http://example.org/ns#a5912> <http://example.org/ns#a5912> .
+<http://example.org/ns#a5913> <http://example.org/ns#a5913> <http://example.org/ns#a5913> .
+<http://example.org/ns#a5914> <http://example.org/ns#a5914> <http://example.org/ns#a5914> .
+<http://example.org/ns#a5915> <http://example.org/ns#a5915> <http://example.org/ns#a5915> .
+<http://example.org/ns#a5916> <http://example.org/ns#a5916> <http://example.org/ns#a5916> .
+<http://example.org/ns#a5917> <http://example.org/ns#a5917> <http://example.org/ns#a5917> .
+<http://example.org/ns#a5918> <http://example.org/ns#a5918> <http://example.org/ns#a5918> .
+<http://example.org/ns#a5919> <http://example.org/ns#a5919> <http://example.org/ns#a5919> .
+<http://example.org/ns#a5920> <http://example.org/ns#a5920> <http://example.org/ns#a5920> .
+<http://example.org/ns#a5921> <http://example.org/ns#a5921> <http://example.org/ns#a5921> .
+<http://example.org/ns#a5922> <http://example.org/ns#a5922> <http://example.org/ns#a5922> .
+<http://example.org/ns#a5923> <http://example.org/ns#a5923> <http://example.org/ns#a5923> .
+<http://example.org/ns#a5924> <http://example.org/ns#a5924> <http://example.org/ns#a5924> .
+<http://example.org/ns#a5925> <http://example.org/ns#a5925> <http://example.org/ns#a5925> .
+<http://example.org/ns#a5926> <http://example.org/ns#a5926> <http://example.org/ns#a5926> .
+<http://example.org/ns#a5927> <http://example.org/ns#a5927> <http://example.org/ns#a5927> .
+<http://example.org/ns#a5928> <http://example.org/ns#a5928> <http://example.org/ns#a5928> .
+<http://example.org/ns#a5929> <http://example.org/ns#a5929> <http://example.org/ns#a5929> .
+<http://example.org/ns#a5930> <http://example.org/ns#a5930> <http://example.org/ns#a5930> .
+<http://example.org/ns#a5931> <http://example.org/ns#a5931> <http://example.org/ns#a5931> .
+<http://example.org/ns#a5932> <http://example.org/ns#a5932> <http://example.org/ns#a5932> .
+<http://example.org/ns#a5933> <http://example.org/ns#a5933> <http://example.org/ns#a5933> .
+<http://example.org/ns#a5934> <http://example.org/ns#a5934> <http://example.org/ns#a5934> .
+<http://example.org/ns#a5935> <http://example.org/ns#a5935> <http://example.org/ns#a5935> .
+<http://example.org/ns#a5936> <http://example.org/ns#a5936> <http://example.org/ns#a5936> .
+<http://example.org/ns#a5937> <http://example.org/ns#a5937> <http://example.org/ns#a5937> .
+<http://example.org/ns#a5938> <http://example.org/ns#a5938> <http://example.org/ns#a5938> .
+<http://example.org/ns#a5939> <http://example.org/ns#a5939> <http://example.org/ns#a5939> .
+<http://example.org/ns#a5940> <http://example.org/ns#a5940> <http://example.org/ns#a5940> .
+<http://example.org/ns#a5941> <http://example.org/ns#a5941> <http://example.org/ns#a5941> .
+<http://example.org/ns#a5942> <http://example.org/ns#a5942> <http://example.org/ns#a5942> .
+<http://example.org/ns#a5943> <http://example.org/ns#a5943> <http://example.org/ns#a5943> .
+<http://example.org/ns#a5944> <http://example.org/ns#a5944> <http://example.org/ns#a5944> .
+<http://example.org/ns#a5945> <http://example.org/ns#a5945> <http://example.org/ns#a5945> .
+<http://example.org/ns#a5946> <http://example.org/ns#a5946> <http://example.org/ns#a5946> .
+<http://example.org/ns#a5947> <http://example.org/ns#a5947> <http://example.org/ns#a5947> .
+<http://example.org/ns#a5948> <http://example.org/ns#a5948> <http://example.org/ns#a5948> .
+<http://example.org/ns#a5949> <http://example.org/ns#a5949> <http://example.org/ns#a5949> .
+<http://example.org/ns#a5950> <http://example.org/ns#a5950> <http://example.org/ns#a5950> .
+<http://example.org/ns#a5951> <http://example.org/ns#a5951> <http://example.org/ns#a5951> .
+<http://example.org/ns#a5952> <http://example.org/ns#a5952> <http://example.org/ns#a5952> .
+<http://example.org/ns#a5953> <http://example.org/ns#a5953> <http://example.org/ns#a5953> .
+<http://example.org/ns#a5954> <http://example.org/ns#a5954> <http://example.org/ns#a5954> .
+<http://example.org/ns#a5955> <http://example.org/ns#a5955> <http://example.org/ns#a5955> .
+<http://example.org/ns#a5956> <http://example.org/ns#a5956> <http://example.org/ns#a5956> .
+<http://example.org/ns#a5957> <http://example.org/ns#a5957> <http://example.org/ns#a5957> .
+<http://example.org/ns#a5958> <http://example.org/ns#a5958> <http://example.org/ns#a5958> .
+<http://example.org/ns#a5959> <http://example.org/ns#a5959> <http://example.org/ns#a5959> .
+<http://example.org/ns#a5960> <http://example.org/ns#a5960> <http://example.org/ns#a5960> .
+<http://example.org/ns#a5961> <http://example.org/ns#a5961> <http://example.org/ns#a5961> .
+<http://example.org/ns#a5962> <http://example.org/ns#a5962> <http://example.org/ns#a5962> .
+<http://example.org/ns#a5963> <http://example.org/ns#a5963> <http://example.org/ns#a5963> .
+<http://example.org/ns#a5964> <http://example.org/ns#a5964> <http://example.org/ns#a5964> .
+<http://example.org/ns#a5965> <http://example.org/ns#a5965> <http://example.org/ns#a5965> .
+<http://example.org/ns#a5966> <http://example.org/ns#a5966> <http://example.org/ns#a5966> .
+<http://example.org/ns#a5967> <http://example.org/ns#a5967> <http://example.org/ns#a5967> .
+<http://example.org/ns#a5968> <http://example.org/ns#a5968> <http://example.org/ns#a5968> .
+<http://example.org/ns#a5969> <http://example.org/ns#a5969> <http://example.org/ns#a5969> .
+<http://example.org/ns#a5970> <http://example.org/ns#a5970> <http://example.org/ns#a5970> .
+<http://example.org/ns#a5971> <http://example.org/ns#a5971> <http://example.org/ns#a5971> .
+<http://example.org/ns#a5972> <http://example.org/ns#a5972> <http://example.org/ns#a5972> .
+<http://example.org/ns#a5973> <http://example.org/ns#a5973> <http://example.org/ns#a5973> .
+<http://example.org/ns#a5974> <http://example.org/ns#a5974> <http://example.org/ns#a5974> .
+<http://example.org/ns#a5975> <http://example.org/ns#a5975> <http://example.org/ns#a5975> .
+<http://example.org/ns#a5976> <http://example.org/ns#a5976> <http://example.org/ns#a5976> .
+<http://example.org/ns#a5977> <http://example.org/ns#a5977> <http://example.org/ns#a5977> .
+<http://example.org/ns#a5978> <http://example.org/ns#a5978> <http://example.org/ns#a5978> .
+<http://example.org/ns#a5979> <http://example.org/ns#a5979> <http://example.org/ns#a5979> .
+<http://example.org/ns#a5980> <http://example.org/ns#a5980> <http://example.org/ns#a5980> .
+<http://example.org/ns#a5981> <http://example.org/ns#a5981> <http://example.org/ns#a5981> .
+<http://example.org/ns#a5982> <http://example.org/ns#a5982> <http://example.org/ns#a5982> .
+<http://example.org/ns#a5983> <http://example.org/ns#a5983> <http://example.org/ns#a5983> .
+<http://example.org/ns#a5984> <http://example.org/ns#a5984> <http://example.org/ns#a5984> .
+<http://example.org/ns#a5985> <http://example.org/ns#a5985> <http://example.org/ns#a5985> .
+<http://example.org/ns#a5986> <http://example.org/ns#a5986> <http://example.org/ns#a5986> .
+<http://example.org/ns#a5987> <http://example.org/ns#a5987> <http://example.org/ns#a5987> .
+<http://example.org/ns#a5988> <http://example.org/ns#a5988> <http://example.org/ns#a5988> .
+<http://example.org/ns#a5989> <http://example.org/ns#a5989> <http://example.org/ns#a5989> .
+<http://example.org/ns#a5990> <http://example.org/ns#a5990> <http://example.org/ns#a5990> .
+<http://example.org/ns#a5991> <http://example.org/ns#a5991> <http://example.org/ns#a5991> .
+<http://example.org/ns#a5992> <http://example.org/ns#a5992> <http://example.org/ns#a5992> .
+<http://example.org/ns#a5993> <http://example.org/ns#a5993> <http://example.org/ns#a5993> .
+<http://example.org/ns#a5994> <http://example.org/ns#a5994> <http://example.org/ns#a5994> .
+<http://example.org/ns#a5995> <http://example.org/ns#a5995> <http://example.org/ns#a5995> .
+<http://example.org/ns#a5996> <http://example.org/ns#a5996> <http://example.org/ns#a5996> .
+<http://example.org/ns#a5997> <http://example.org/ns#a5997> <http://example.org/ns#a5997> .
+<http://example.org/ns#a5998> <http://example.org/ns#a5998> <http://example.org/ns#a5998> .
+<http://example.org/ns#a5999> <http://example.org/ns#a5999> <http://example.org/ns#a5999> .
+<http://example.org/ns#a6000> <http://example.org/ns#a6000> <http://example.org/ns#a6000> .
+<http://example.org/ns#a6001> <http://example.org/ns#a6001> <http://example.org/ns#a6001> .
+<http://example.org/ns#a6002> <http://example.org/ns#a6002> <http://example.org/ns#a6002> .
+<http://example.org/ns#a6003> <http://example.org/ns#a6003> <http://example.org/ns#a6003> .
+<http://example.org/ns#a6004> <http://example.org/ns#a6004> <http://example.org/ns#a6004> .
+<http://example.org/ns#a6005> <http://example.org/ns#a6005> <http://example.org/ns#a6005> .
+<http://example.org/ns#a6006> <http://example.org/ns#a6006> <http://example.org/ns#a6006> .
+<http://example.org/ns#a6007> <http://example.org/ns#a6007> <http://example.org/ns#a6007> .
+<http://example.org/ns#a6008> <http://example.org/ns#a6008> <http://example.org/ns#a6008> .
+<http://example.org/ns#a6009> <http://example.org/ns#a6009> <http://example.org/ns#a6009> .
+<http://example.org/ns#a6010> <http://example.org/ns#a6010> <http://example.org/ns#a6010> .
+<http://example.org/ns#a6011> <http://example.org/ns#a6011> <http://example.org/ns#a6011> .
+<http://example.org/ns#a6012> <http://example.org/ns#a6012> <http://example.org/ns#a6012> .
+<http://example.org/ns#a6013> <http://example.org/ns#a6013> <http://example.org/ns#a6013> .
+<http://example.org/ns#a6014> <http://example.org/ns#a6014> <http://example.org/ns#a6014> .
+<http://example.org/ns#a6015> <http://example.org/ns#a6015> <http://example.org/ns#a6015> .
+<http://example.org/ns#a6016> <http://example.org/ns#a6016> <http://example.org/ns#a6016> .
+<http://example.org/ns#a6017> <http://example.org/ns#a6017> <http://example.org/ns#a6017> .
+<http://example.org/ns#a6018> <http://example.org/ns#a6018> <http://example.org/ns#a6018> .
+<http://example.org/ns#a6019> <http://example.org/ns#a6019> <http://example.org/ns#a6019> .
+<http://example.org/ns#a6020> <http://example.org/ns#a6020> <http://example.org/ns#a6020> .
+<http://example.org/ns#a6021> <http://example.org/ns#a6021> <http://example.org/ns#a6021> .
+<http://example.org/ns#a6022> <http://example.org/ns#a6022> <http://example.org/ns#a6022> .
+<http://example.org/ns#a6023> <http://example.org/ns#a6023> <http://example.org/ns#a6023> .
+<http://example.org/ns#a6024> <http://example.org/ns#a6024> <http://example.org/ns#a6024> .
+<http://example.org/ns#a6025> <http://example.org/ns#a6025> <http://example.org/ns#a6025> .
+<http://example.org/ns#a6026> <http://example.org/ns#a6026> <http://example.org/ns#a6026> .
+<http://example.org/ns#a6027> <http://example.org/ns#a6027> <http://example.org/ns#a6027> .
+<http://example.org/ns#a6028> <http://example.org/ns#a6028> <http://example.org/ns#a6028> .
+<http://example.org/ns#a6029> <http://example.org/ns#a6029> <http://example.org/ns#a6029> .
+<http://example.org/ns#a6030> <http://example.org/ns#a6030> <http://example.org/ns#a6030> .
+<http://example.org/ns#a6031> <http://example.org/ns#a6031> <http://example.org/ns#a6031> .
+<http://example.org/ns#a6032> <http://example.org/ns#a6032> <http://example.org/ns#a6032> .
+<http://example.org/ns#a6033> <http://example.org/ns#a6033> <http://example.org/ns#a6033> .
+<http://example.org/ns#a6034> <http://example.org/ns#a6034> <http://example.org/ns#a6034> .
+<http://example.org/ns#a6035> <http://example.org/ns#a6035> <http://example.org/ns#a6035> .
+<http://example.org/ns#a6036> <http://example.org/ns#a6036> <http://example.org/ns#a6036> .
+<http://example.org/ns#a6037> <http://example.org/ns#a6037> <http://example.org/ns#a6037> .
+<http://example.org/ns#a6038> <http://example.org/ns#a6038> <http://example.org/ns#a6038> .
+<http://example.org/ns#a6039> <http://example.org/ns#a6039> <http://example.org/ns#a6039> .
+<http://example.org/ns#a6040> <http://example.org/ns#a6040> <http://example.org/ns#a6040> .
+<http://example.org/ns#a6041> <http://example.org/ns#a6041> <http://example.org/ns#a6041> .
+<http://example.org/ns#a6042> <http://example.org/ns#a6042> <http://example.org/ns#a6042> .
+<http://example.org/ns#a6043> <http://example.org/ns#a6043> <http://example.org/ns#a6043> .
+<http://example.org/ns#a6044> <http://example.org/ns#a6044> <http://example.org/ns#a6044> .
+<http://example.org/ns#a6045> <http://example.org/ns#a6045> <http://example.org/ns#a6045> .
+<http://example.org/ns#a6046> <http://example.org/ns#a6046> <http://example.org/ns#a6046> .
+<http://example.org/ns#a6047> <http://example.org/ns#a6047> <http://example.org/ns#a6047> .
+<http://example.org/ns#a6048> <http://example.org/ns#a6048> <http://example.org/ns#a6048> .
+<http://example.org/ns#a6049> <http://example.org/ns#a6049> <http://example.org/ns#a6049> .
+<http://example.org/ns#a6050> <http://example.org/ns#a6050> <http://example.org/ns#a6050> .
+<http://example.org/ns#a6051> <http://example.org/ns#a6051> <http://example.org/ns#a6051> .
+<http://example.org/ns#a6052> <http://example.org/ns#a6052> <http://example.org/ns#a6052> .
+<http://example.org/ns#a6053> <http://example.org/ns#a6053> <http://example.org/ns#a6053> .
+<http://example.org/ns#a6054> <http://example.org/ns#a6054> <http://example.org/ns#a6054> .
+<http://example.org/ns#a6055> <http://example.org/ns#a6055> <http://example.org/ns#a6055> .
+<http://example.org/ns#a6056> <http://example.org/ns#a6056> <http://example.org/ns#a6056> .
+<http://example.org/ns#a6057> <http://example.org/ns#a6057> <http://example.org/ns#a6057> .
+<http://example.org/ns#a6058> <http://example.org/ns#a6058> <http://example.org/ns#a6058> .
+<http://example.org/ns#a6059> <http://example.org/ns#a6059> <http://example.org/ns#a6059> .
+<http://example.org/ns#a6060> <http://example.org/ns#a6060> <http://example.org/ns#a6060> .
+<http://example.org/ns#a6061> <http://example.org/ns#a6061> <http://example.org/ns#a6061> .
+<http://example.org/ns#a6062> <http://example.org/ns#a6062> <http://example.org/ns#a6062> .
+<http://example.org/ns#a6063> <http://example.org/ns#a6063> <http://example.org/ns#a6063> .
+<http://example.org/ns#a6064> <http://example.org/ns#a6064> <http://example.org/ns#a6064> .
+<http://example.org/ns#a6065> <http://example.org/ns#a6065> <http://example.org/ns#a6065> .
+<http://example.org/ns#a6066> <http://example.org/ns#a6066> <http://example.org/ns#a6066> .
+<http://example.org/ns#a6067> <http://example.org/ns#a6067> <http://example.org/ns#a6067> .
+<http://example.org/ns#a6068> <http://example.org/ns#a6068> <http://example.org/ns#a6068> .
+<http://example.org/ns#a6069> <http://example.org/ns#a6069> <http://example.org/ns#a6069> .
+<http://example.org/ns#a6070> <http://example.org/ns#a6070> <http://example.org/ns#a6070> .
+<http://example.org/ns#a6071> <http://example.org/ns#a6071> <http://example.org/ns#a6071> .
+<http://example.org/ns#a6072> <http://example.org/ns#a6072> <http://example.org/ns#a6072> .
+<http://example.org/ns#a6073> <http://example.org/ns#a6073> <http://example.org/ns#a6073> .
+<http://example.org/ns#a6074> <http://example.org/ns#a6074> <http://example.org/ns#a6074> .
+<http://example.org/ns#a6075> <http://example.org/ns#a6075> <http://example.org/ns#a6075> .
+<http://example.org/ns#a6076> <http://example.org/ns#a6076> <http://example.org/ns#a6076> .
+<http://example.org/ns#a6077> <http://example.org/ns#a6077> <http://example.org/ns#a6077> .
+<http://example.org/ns#a6078> <http://example.org/ns#a6078> <http://example.org/ns#a6078> .
+<http://example.org/ns#a6079> <http://example.org/ns#a6079> <http://example.org/ns#a6079> .
+<http://example.org/ns#a6080> <http://example.org/ns#a6080> <http://example.org/ns#a6080> .
+<http://example.org/ns#a6081> <http://example.org/ns#a6081> <http://example.org/ns#a6081> .
+<http://example.org/ns#a6082> <http://example.org/ns#a6082> <http://example.org/ns#a6082> .
+<http://example.org/ns#a6083> <http://example.org/ns#a6083> <http://example.org/ns#a6083> .
+<http://example.org/ns#a6084> <http://example.org/ns#a6084> <http://example.org/ns#a6084> .
+<http://example.org/ns#a6085> <http://example.org/ns#a6085> <http://example.org/ns#a6085> .
+<http://example.org/ns#a6086> <http://example.org/ns#a6086> <http://example.org/ns#a6086> .
+<http://example.org/ns#a6087> <http://example.org/ns#a6087> <http://example.org/ns#a6087> .
+<http://example.org/ns#a6088> <http://example.org/ns#a6088> <http://example.org/ns#a6088> .
+<http://example.org/ns#a6089> <http://example.org/ns#a6089> <http://example.org/ns#a6089> .
+<http://example.org/ns#a6090> <http://example.org/ns#a6090> <http://example.org/ns#a6090> .
+<http://example.org/ns#a6091> <http://example.org/ns#a6091> <http://example.org/ns#a6091> .
+<http://example.org/ns#a6092> <http://example.org/ns#a6092> <http://example.org/ns#a6092> .
+<http://example.org/ns#a6093> <http://example.org/ns#a6093> <http://example.org/ns#a6093> .
+<http://example.org/ns#a6094> <http://example.org/ns#a6094> <http://example.org/ns#a6094> .
+<http://example.org/ns#a6095> <http://example.org/ns#a6095> <http://example.org/ns#a6095> .
+<http://example.org/ns#a6096> <http://example.org/ns#a6096> <http://example.org/ns#a6096> .
+<http://example.org/ns#a6097> <http://example.org/ns#a6097> <http://example.org/ns#a6097> .
+<http://example.org/ns#a6098> <http://example.org/ns#a6098> <http://example.org/ns#a6098> .
+<http://example.org/ns#a6099> <http://example.org/ns#a6099> <http://example.org/ns#a6099> .
+<http://example.org/ns#a6100> <http://example.org/ns#a6100> <http://example.org/ns#a6100> .
+<http://example.org/ns#a6101> <http://example.org/ns#a6101> <http://example.org/ns#a6101> .
+<http://example.org/ns#a6102> <http://example.org/ns#a6102> <http://example.org/ns#a6102> .
+<http://example.org/ns#a6103> <http://example.org/ns#a6103> <http://example.org/ns#a6103> .
+<http://example.org/ns#a6104> <http://example.org/ns#a6104> <http://example.org/ns#a6104> .
+<http://example.org/ns#a6105> <http://example.org/ns#a6105> <http://example.org/ns#a6105> .
+<http://example.org/ns#a6106> <http://example.org/ns#a6106> <http://example.org/ns#a6106> .
+<http://example.org/ns#a6107> <http://example.org/ns#a6107> <http://example.org/ns#a6107> .
+<http://example.org/ns#a6108> <http://example.org/ns#a6108> <http://example.org/ns#a6108> .
+<http://example.org/ns#a6109> <http://example.org/ns#a6109> <http://example.org/ns#a6109> .
+<http://example.org/ns#a6110> <http://example.org/ns#a6110> <http://example.org/ns#a6110> .
+<http://example.org/ns#a6111> <http://example.org/ns#a6111> <http://example.org/ns#a6111> .
+<http://example.org/ns#a6112> <http://example.org/ns#a6112> <http://example.org/ns#a6112> .
+<http://example.org/ns#a6113> <http://example.org/ns#a6113> <http://example.org/ns#a6113> .
+<http://example.org/ns#a6114> <http://example.org/ns#a6114> <http://example.org/ns#a6114> .
+<http://example.org/ns#a6115> <http://example.org/ns#a6115> <http://example.org/ns#a6115> .
+<http://example.org/ns#a6116> <http://example.org/ns#a6116> <http://example.org/ns#a6116> .
+<http://example.org/ns#a6117> <http://example.org/ns#a6117> <http://example.org/ns#a6117> .
+<http://example.org/ns#a6118> <http://example.org/ns#a6118> <http://example.org/ns#a6118> .
+<http://example.org/ns#a6119> <http://example.org/ns#a6119> <http://example.org/ns#a6119> .
+<http://example.org/ns#a6120> <http://example.org/ns#a6120> <http://example.org/ns#a6120> .
+<http://example.org/ns#a6121> <http://example.org/ns#a6121> <http://example.org/ns#a6121> .
+<http://example.org/ns#a6122> <http://example.org/ns#a6122> <http://example.org/ns#a6122> .
+<http://example.org/ns#a6123> <http://example.org/ns#a6123> <http://example.org/ns#a6123> .
+<http://example.org/ns#a6124> <http://example.org/ns#a6124> <http://example.org/ns#a6124> .
+<http://example.org/ns#a6125> <http://example.org/ns#a6125> <http://example.org/ns#a6125> .
+<http://example.org/ns#a6126> <http://example.org/ns#a6126> <http://example.org/ns#a6126> .
+<http://example.org/ns#a6127> <http://example.org/ns#a6127> <http://example.org/ns#a6127> .
+<http://example.org/ns#a6128> <http://example.org/ns#a6128> <http://example.org/ns#a6128> .
+<http://example.org/ns#a6129> <http://example.org/ns#a6129> <http://example.org/ns#a6129> .
+<http://example.org/ns#a6130> <http://example.org/ns#a6130> <http://example.org/ns#a6130> .
+<http://example.org/ns#a6131> <http://example.org/ns#a6131> <http://example.org/ns#a6131> .
+<http://example.org/ns#a6132> <http://example.org/ns#a6132> <http://example.org/ns#a6132> .
+<http://example.org/ns#a6133> <http://example.org/ns#a6133> <http://example.org/ns#a6133> .
+<http://example.org/ns#a6134> <http://example.org/ns#a6134> <http://example.org/ns#a6134> .
+<http://example.org/ns#a6135> <http://example.org/ns#a6135> <http://example.org/ns#a6135> .
+<http://example.org/ns#a6136> <http://example.org/ns#a6136> <http://example.org/ns#a6136> .
+<http://example.org/ns#a6137> <http://example.org/ns#a6137> <http://example.org/ns#a6137> .
+<http://example.org/ns#a6138> <http://example.org/ns#a6138> <http://example.org/ns#a6138> .
+<http://example.org/ns#a6139> <http://example.org/ns#a6139> <http://example.org/ns#a6139> .
+<http://example.org/ns#a6140> <http://example.org/ns#a6140> <http://example.org/ns#a6140> .
+<http://example.org/ns#a6141> <http://example.org/ns#a6141> <http://example.org/ns#a6141> .
+<http://example.org/ns#a6142> <http://example.org/ns#a6142> <http://example.org/ns#a6142> .
+<http://example.org/ns#a6143> <http://example.org/ns#a6143> <http://example.org/ns#a6143> .
+<http://example.org/ns#a6144> <http://example.org/ns#a6144> <http://example.org/ns#a6144> .
+<http://example.org/ns#a6145> <http://example.org/ns#a6145> <http://example.org/ns#a6145> .
+<http://example.org/ns#a6146> <http://example.org/ns#a6146> <http://example.org/ns#a6146> .
+<http://example.org/ns#a6147> <http://example.org/ns#a6147> <http://example.org/ns#a6147> .
+<http://example.org/ns#a6148> <http://example.org/ns#a6148> <http://example.org/ns#a6148> .
+<http://example.org/ns#a6149> <http://example.org/ns#a6149> <http://example.org/ns#a6149> .
+<http://example.org/ns#a6150> <http://example.org/ns#a6150> <http://example.org/ns#a6150> .
+<http://example.org/ns#a6151> <http://example.org/ns#a6151> <http://example.org/ns#a6151> .
+<http://example.org/ns#a6152> <http://example.org/ns#a6152> <http://example.org/ns#a6152> .
+<http://example.org/ns#a6153> <http://example.org/ns#a6153> <http://example.org/ns#a6153> .
+<http://example.org/ns#a6154> <http://example.org/ns#a6154> <http://example.org/ns#a6154> .
+<http://example.org/ns#a6155> <http://example.org/ns#a6155> <http://example.org/ns#a6155> .
+<http://example.org/ns#a6156> <http://example.org/ns#a6156> <http://example.org/ns#a6156> .
+<http://example.org/ns#a6157> <http://example.org/ns#a6157> <http://example.org/ns#a6157> .
+<http://example.org/ns#a6158> <http://example.org/ns#a6158> <http://example.org/ns#a6158> .
+<http://example.org/ns#a6159> <http://example.org/ns#a6159> <http://example.org/ns#a6159> .
+<http://example.org/ns#a6160> <http://example.org/ns#a6160> <http://example.org/ns#a6160> .
+<http://example.org/ns#a6161> <http://example.org/ns#a6161> <http://example.org/ns#a6161> .
+<http://example.org/ns#a6162> <http://example.org/ns#a6162> <http://example.org/ns#a6162> .
+<http://example.org/ns#a6163> <http://example.org/ns#a6163> <http://example.org/ns#a6163> .
+<http://example.org/ns#a6164> <http://example.org/ns#a6164> <http://example.org/ns#a6164> .
+<http://example.org/ns#a6165> <http://example.org/ns#a6165> <http://example.org/ns#a6165> .
+<http://example.org/ns#a6166> <http://example.org/ns#a6166> <http://example.org/ns#a6166> .
+<http://example.org/ns#a6167> <http://example.org/ns#a6167> <http://example.org/ns#a6167> .
+<http://example.org/ns#a6168> <http://example.org/ns#a6168> <http://example.org/ns#a6168> .
+<http://example.org/ns#a6169> <http://example.org/ns#a6169> <http://example.org/ns#a6169> .
+<http://example.org/ns#a6170> <http://example.org/ns#a6170> <http://example.org/ns#a6170> .
+<http://example.org/ns#a6171> <http://example.org/ns#a6171> <http://example.org/ns#a6171> .
+<http://example.org/ns#a6172> <http://example.org/ns#a6172> <http://example.org/ns#a6172> .
+<http://example.org/ns#a6173> <http://example.org/ns#a6173> <http://example.org/ns#a6173> .
+<http://example.org/ns#a6174> <http://example.org/ns#a6174> <http://example.org/ns#a6174> .
+<http://example.org/ns#a6175> <http://example.org/ns#a6175> <http://example.org/ns#a6175> .
+<http://example.org/ns#a6176> <http://example.org/ns#a6176> <http://example.org/ns#a6176> .
+<http://example.org/ns#a6177> <http://example.org/ns#a6177> <http://example.org/ns#a6177> .
+<http://example.org/ns#a6178> <http://example.org/ns#a6178> <http://example.org/ns#a6178> .
+<http://example.org/ns#a6179> <http://example.org/ns#a6179> <http://example.org/ns#a6179> .
+<http://example.org/ns#a6180> <http://example.org/ns#a6180> <http://example.org/ns#a6180> .
+<http://example.org/ns#a6181> <http://example.org/ns#a6181> <http://example.org/ns#a6181> .
+<http://example.org/ns#a6182> <http://example.org/ns#a6182> <http://example.org/ns#a6182> .
+<http://example.org/ns#a6183> <http://example.org/ns#a6183> <http://example.org/ns#a6183> .
+<http://example.org/ns#a6184> <http://example.org/ns#a6184> <http://example.org/ns#a6184> .
+<http://example.org/ns#a6185> <http://example.org/ns#a6185> <http://example.org/ns#a6185> .
+<http://example.org/ns#a6186> <http://example.org/ns#a6186> <http://example.org/ns#a6186> .
+<http://example.org/ns#a6187> <http://example.org/ns#a6187> <http://example.org/ns#a6187> .
+<http://example.org/ns#a6188> <http://example.org/ns#a6188> <http://example.org/ns#a6188> .
+<http://example.org/ns#a6189> <http://example.org/ns#a6189> <http://example.org/ns#a6189> .
+<http://example.org/ns#a6190> <http://example.org/ns#a6190> <http://example.org/ns#a6190> .
+<http://example.org/ns#a6191> <http://example.org/ns#a6191> <http://example.org/ns#a6191> .
+<http://example.org/ns#a6192> <http://example.org/ns#a6192> <http://example.org/ns#a6192> .
+<http://example.org/ns#a6193> <http://example.org/ns#a6193> <http://example.org/ns#a6193> .
+<http://example.org/ns#a6194> <http://example.org/ns#a6194> <http://example.org/ns#a6194> .
+<http://example.org/ns#a6195> <http://example.org/ns#a6195> <http://example.org/ns#a6195> .
+<http://example.org/ns#a6196> <http://example.org/ns#a6196> <http://example.org/ns#a6196> .
+<http://example.org/ns#a6197> <http://example.org/ns#a6197> <http://example.org/ns#a6197> .
+<http://example.org/ns#a6198> <http://example.org/ns#a6198> <http://example.org/ns#a6198> .
+<http://example.org/ns#a6199> <http://example.org/ns#a6199> <http://example.org/ns#a6199> .
+<http://example.org/ns#a6200> <http://example.org/ns#a6200> <http://example.org/ns#a6200> .
+<http://example.org/ns#a6201> <http://example.org/ns#a6201> <http://example.org/ns#a6201> .
+<http://example.org/ns#a6202> <http://example.org/ns#a6202> <http://example.org/ns#a6202> .
+<http://example.org/ns#a6203> <http://example.org/ns#a6203> <http://example.org/ns#a6203> .
+<http://example.org/ns#a6204> <http://example.org/ns#a6204> <http://example.org/ns#a6204> .
+<http://example.org/ns#a6205> <http://example.org/ns#a6205> <http://example.org/ns#a6205> .
+<http://example.org/ns#a6206> <http://example.org/ns#a6206> <http://example.org/ns#a6206> .
+<http://example.org/ns#a6207> <http://example.org/ns#a6207> <http://example.org/ns#a6207> .
+<http://example.org/ns#a6208> <http://example.org/ns#a6208> <http://example.org/ns#a6208> .
+<http://example.org/ns#a6209> <http://example.org/ns#a6209> <http://example.org/ns#a6209> .
+<http://example.org/ns#a6210> <http://example.org/ns#a6210> <http://example.org/ns#a6210> .
+<http://example.org/ns#a6211> <http://example.org/ns#a6211> <http://example.org/ns#a6211> .
+<http://example.org/ns#a6212> <http://example.org/ns#a6212> <http://example.org/ns#a6212> .
+<http://example.org/ns#a6213> <http://example.org/ns#a6213> <http://example.org/ns#a6213> .
+<http://example.org/ns#a6214> <http://example.org/ns#a6214> <http://example.org/ns#a6214> .
+<http://example.org/ns#a6215> <http://example.org/ns#a6215> <http://example.org/ns#a6215> .
+<http://example.org/ns#a6216> <http://example.org/ns#a6216> <http://example.org/ns#a6216> .
+<http://example.org/ns#a6217> <http://example.org/ns#a6217> <http://example.org/ns#a6217> .
+<http://example.org/ns#a6218> <http://example.org/ns#a6218> <http://example.org/ns#a6218> .
+<http://example.org/ns#a6219> <http://example.org/ns#a6219> <http://example.org/ns#a6219> .
+<http://example.org/ns#a6220> <http://example.org/ns#a6220> <http://example.org/ns#a6220> .
+<http://example.org/ns#a6221> <http://example.org/ns#a6221> <http://example.org/ns#a6221> .
+<http://example.org/ns#a6222> <http://example.org/ns#a6222> <http://example.org/ns#a6222> .
+<http://example.org/ns#a6223> <http://example.org/ns#a6223> <http://example.org/ns#a6223> .
+<http://example.org/ns#a6224> <http://example.org/ns#a6224> <http://example.org/ns#a6224> .
+<http://example.org/ns#a6225> <http://example.org/ns#a6225> <http://example.org/ns#a6225> .
+<http://example.org/ns#a6226> <http://example.org/ns#a6226> <http://example.org/ns#a6226> .
+<http://example.org/ns#a6227> <http://example.org/ns#a6227> <http://example.org/ns#a6227> .
+<http://example.org/ns#a6228> <http://example.org/ns#a6228> <http://example.org/ns#a6228> .
+<http://example.org/ns#a6229> <http://example.org/ns#a6229> <http://example.org/ns#a6229> .
+<http://example.org/ns#a6230> <http://example.org/ns#a6230> <http://example.org/ns#a6230> .
+<http://example.org/ns#a6231> <http://example.org/ns#a6231> <http://example.org/ns#a6231> .
+<http://example.org/ns#a6232> <http://example.org/ns#a6232> <http://example.org/ns#a6232> .
+<http://example.org/ns#a6233> <http://example.org/ns#a6233> <http://example.org/ns#a6233> .
+<http://example.org/ns#a6234> <http://example.org/ns#a6234> <http://example.org/ns#a6234> .
+<http://example.org/ns#a6235> <http://example.org/ns#a6235> <http://example.org/ns#a6235> .
+<http://example.org/ns#a6236> <http://example.org/ns#a6236> <http://example.org/ns#a6236> .
+<http://example.org/ns#a6237> <http://example.org/ns#a6237> <http://example.org/ns#a6237> .
+<http://example.org/ns#a6238> <http://example.org/ns#a6238> <http://example.org/ns#a6238> .
+<http://example.org/ns#a6239> <http://example.org/ns#a6239> <http://example.org/ns#a6239> .
+<http://example.org/ns#a6240> <http://example.org/ns#a6240> <http://example.org/ns#a6240> .
+<http://example.org/ns#a6241> <http://example.org/ns#a6241> <http://example.org/ns#a6241> .
+<http://example.org/ns#a6242> <http://example.org/ns#a6242> <http://example.org/ns#a6242> .
+<http://example.org/ns#a6243> <http://example.org/ns#a6243> <http://example.org/ns#a6243> .
+<http://example.org/ns#a6244> <http://example.org/ns#a6244> <http://example.org/ns#a6244> .
+<http://example.org/ns#a6245> <http://example.org/ns#a6245> <http://example.org/ns#a6245> .
+<http://example.org/ns#a6246> <http://example.org/ns#a6246> <http://example.org/ns#a6246> .
+<http://example.org/ns#a6247> <http://example.org/ns#a6247> <http://example.org/ns#a6247> .
+<http://example.org/ns#a6248> <http://example.org/ns#a6248> <http://example.org/ns#a6248> .
+<http://example.org/ns#a6249> <http://example.org/ns#a6249> <http://example.org/ns#a6249> .
+<http://example.org/ns#a6250> <http://example.org/ns#a6250> <http://example.org/ns#a6250> .
+<http://example.org/ns#a6251> <http://example.org/ns#a6251> <http://example.org/ns#a6251> .
+<http://example.org/ns#a6252> <http://example.org/ns#a6252> <http://example.org/ns#a6252> .
+<http://example.org/ns#a6253> <http://example.org/ns#a6253> <http://example.org/ns#a6253> .
+<http://example.org/ns#a6254> <http://example.org/ns#a6254> <http://example.org/ns#a6254> .
+<http://example.org/ns#a6255> <http://example.org/ns#a6255> <http://example.org/ns#a6255> .
+<http://example.org/ns#a6256> <http://example.org/ns#a6256> <http://example.org/ns#a6256> .
+<http://example.org/ns#a6257> <http://example.org/ns#a6257> <http://example.org/ns#a6257> .
+<http://example.org/ns#a6258> <http://example.org/ns#a6258> <http://example.org/ns#a6258> .
+<http://example.org/ns#a6259> <http://example.org/ns#a6259> <http://example.org/ns#a6259> .
+<http://example.org/ns#a6260> <http://example.org/ns#a6260> <http://example.org/ns#a6260> .
+<http://example.org/ns#a6261> <http://example.org/ns#a6261> <http://example.org/ns#a6261> .
+<http://example.org/ns#a6262> <http://example.org/ns#a6262> <http://example.org/ns#a6262> .
+<http://example.org/ns#a6263> <http://example.org/ns#a6263> <http://example.org/ns#a6263> .
+<http://example.org/ns#a6264> <http://example.org/ns#a6264> <http://example.org/ns#a6264> .
+<http://example.org/ns#a6265> <http://example.org/ns#a6265> <http://example.org/ns#a6265> .
+<http://example.org/ns#a6266> <http://example.org/ns#a6266> <http://example.org/ns#a6266> .
+<http://example.org/ns#a6267> <http://example.org/ns#a6267> <http://example.org/ns#a6267> .
+<http://example.org/ns#a6268> <http://example.org/ns#a6268> <http://example.org/ns#a6268> .
+<http://example.org/ns#a6269> <http://example.org/ns#a6269> <http://example.org/ns#a6269> .
+<http://example.org/ns#a6270> <http://example.org/ns#a6270> <http://example.org/ns#a6270> .
+<http://example.org/ns#a6271> <http://example.org/ns#a6271> <http://example.org/ns#a6271> .
+<http://example.org/ns#a6272> <http://example.org/ns#a6272> <http://example.org/ns#a6272> .
+<http://example.org/ns#a6273> <http://example.org/ns#a6273> <http://example.org/ns#a6273> .
+<http://example.org/ns#a6274> <http://example.org/ns#a6274> <http://example.org/ns#a6274> .
+<http://example.org/ns#a6275> <http://example.org/ns#a6275> <http://example.org/ns#a6275> .
+<http://example.org/ns#a6276> <http://example.org/ns#a6276> <http://example.org/ns#a6276> .
+<http://example.org/ns#a6277> <http://example.org/ns#a6277> <http://example.org/ns#a6277> .
+<http://example.org/ns#a6278> <http://example.org/ns#a6278> <http://example.org/ns#a6278> .
+<http://example.org/ns#a6279> <http://example.org/ns#a6279> <http://example.org/ns#a6279> .
+<http://example.org/ns#a6280> <http://example.org/ns#a6280> <http://example.org/ns#a6280> .
+<http://example.org/ns#a6281> <http://example.org/ns#a6281> <http://example.org/ns#a6281> .
+<http://example.org/ns#a6282> <http://example.org/ns#a6282> <http://example.org/ns#a6282> .
+<http://example.org/ns#a6283> <http://example.org/ns#a6283> <http://example.org/ns#a6283> .
+<http://example.org/ns#a6284> <http://example.org/ns#a6284> <http://example.org/ns#a6284> .
+<http://example.org/ns#a6285> <http://example.org/ns#a6285> <http://example.org/ns#a6285> .
+<http://example.org/ns#a6286> <http://example.org/ns#a6286> <http://example.org/ns#a6286> .
+<http://example.org/ns#a6287> <http://example.org/ns#a6287> <http://example.org/ns#a6287> .
+<http://example.org/ns#a6288> <http://example.org/ns#a6288> <http://example.org/ns#a6288> .
+<http://example.org/ns#a6289> <http://example.org/ns#a6289> <http://example.org/ns#a6289> .
+<http://example.org/ns#a6290> <http://example.org/ns#a6290> <http://example.org/ns#a6290> .
+<http://example.org/ns#a6291> <http://example.org/ns#a6291> <http://example.org/ns#a6291> .
+<http://example.org/ns#a6292> <http://example.org/ns#a6292> <http://example.org/ns#a6292> .
+<http://example.org/ns#a6293> <http://example.org/ns#a6293> <http://example.org/ns#a6293> .
+<http://example.org/ns#a6294> <http://example.org/ns#a6294> <http://example.org/ns#a6294> .
+<http://example.org/ns#a6295> <http://example.org/ns#a6295> <http://example.org/ns#a6295> .
+<http://example.org/ns#a6296> <http://example.org/ns#a6296> <http://example.org/ns#a6296> .
+<http://example.org/ns#a6297> <http://example.org/ns#a6297> <http://example.org/ns#a6297> .
+<http://example.org/ns#a6298> <http://example.org/ns#a6298> <http://example.org/ns#a6298> .
+<http://example.org/ns#a6299> <http://example.org/ns#a6299> <http://example.org/ns#a6299> .
+<http://example.org/ns#a6300> <http://example.org/ns#a6300> <http://example.org/ns#a6300> .
+<http://example.org/ns#a6301> <http://example.org/ns#a6301> <http://example.org/ns#a6301> .
+<http://example.org/ns#a6302> <http://example.org/ns#a6302> <http://example.org/ns#a6302> .
+<http://example.org/ns#a6303> <http://example.org/ns#a6303> <http://example.org/ns#a6303> .
+<http://example.org/ns#a6304> <http://example.org/ns#a6304> <http://example.org/ns#a6304> .
+<http://example.org/ns#a6305> <http://example.org/ns#a6305> <http://example.org/ns#a6305> .
+<http://example.org/ns#a6306> <http://example.org/ns#a6306> <http://example.org/ns#a6306> .
+<http://example.org/ns#a6307> <http://example.org/ns#a6307> <http://example.org/ns#a6307> .
+<http://example.org/ns#a6308> <http://example.org/ns#a6308> <http://example.org/ns#a6308> .
+<http://example.org/ns#a6309> <http://example.org/ns#a6309> <http://example.org/ns#a6309> .
+<http://example.org/ns#a6310> <http://example.org/ns#a6310> <http://example.org/ns#a6310> .
+<http://example.org/ns#a6311> <http://example.org/ns#a6311> <http://example.org/ns#a6311> .
+<http://example.org/ns#a6312> <http://example.org/ns#a6312> <http://example.org/ns#a6312> .
+<http://example.org/ns#a6313> <http://example.org/ns#a6313> <http://example.org/ns#a6313> .
+<http://example.org/ns#a6314> <http://example.org/ns#a6314> <http://example.org/ns#a6314> .
+<http://example.org/ns#a6315> <http://example.org/ns#a6315> <http://example.org/ns#a6315> .
+<http://example.org/ns#a6316> <http://example.org/ns#a6316> <http://example.org/ns#a6316> .
+<http://example.org/ns#a6317> <http://example.org/ns#a6317> <http://example.org/ns#a6317> .
+<http://example.org/ns#a6318> <http://example.org/ns#a6318> <http://example.org/ns#a6318> .
+<http://example.org/ns#a6319> <http://example.org/ns#a6319> <http://example.org/ns#a6319> .
+<http://example.org/ns#a6320> <http://example.org/ns#a6320> <http://example.org/ns#a6320> .
+<http://example.org/ns#a6321> <http://example.org/ns#a6321> <http://example.org/ns#a6321> .
+<http://example.org/ns#a6322> <http://example.org/ns#a6322> <http://example.org/ns#a6322> .
+<http://example.org/ns#a6323> <http://example.org/ns#a6323> <http://example.org/ns#a6323> .
+<http://example.org/ns#a6324> <http://example.org/ns#a6324> <http://example.org/ns#a6324> .
+<http://example.org/ns#a6325> <http://example.org/ns#a6325> <http://example.org/ns#a6325> .
+<http://example.org/ns#a6326> <http://example.org/ns#a6326> <http://example.org/ns#a6326> .
+<http://example.org/ns#a6327> <http://example.org/ns#a6327> <http://example.org/ns#a6327> .
+<http://example.org/ns#a6328> <http://example.org/ns#a6328> <http://example.org/ns#a6328> .
+<http://example.org/ns#a6329> <http://example.org/ns#a6329> <http://example.org/ns#a6329> .
+<http://example.org/ns#a6330> <http://example.org/ns#a6330> <http://example.org/ns#a6330> .
+<http://example.org/ns#a6331> <http://example.org/ns#a6331> <http://example.org/ns#a6331> .
+<http://example.org/ns#a6332> <http://example.org/ns#a6332> <http://example.org/ns#a6332> .
+<http://example.org/ns#a6333> <http://example.org/ns#a6333> <http://example.org/ns#a6333> .
+<http://example.org/ns#a6334> <http://example.org/ns#a6334> <http://example.org/ns#a6334> .
+<http://example.org/ns#a6335> <http://example.org/ns#a6335> <http://example.org/ns#a6335> .
+<http://example.org/ns#a6336> <http://example.org/ns#a6336> <http://example.org/ns#a6336> .
+<http://example.org/ns#a6337> <http://example.org/ns#a6337> <http://example.org/ns#a6337> .
+<http://example.org/ns#a6338> <http://example.org/ns#a6338> <http://example.org/ns#a6338> .
+<http://example.org/ns#a6339> <http://example.org/ns#a6339> <http://example.org/ns#a6339> .
+<http://example.org/ns#a6340> <http://example.org/ns#a6340> <http://example.org/ns#a6340> .
+<http://example.org/ns#a6341> <http://example.org/ns#a6341> <http://example.org/ns#a6341> .
+<http://example.org/ns#a6342> <http://example.org/ns#a6342> <http://example.org/ns#a6342> .
+<http://example.org/ns#a6343> <http://example.org/ns#a6343> <http://example.org/ns#a6343> .
+<http://example.org/ns#a6344> <http://example.org/ns#a6344> <http://example.org/ns#a6344> .
+<http://example.org/ns#a6345> <http://example.org/ns#a6345> <http://example.org/ns#a6345> .
+<http://example.org/ns#a6346> <http://example.org/ns#a6346> <http://example.org/ns#a6346> .
+<http://example.org/ns#a6347> <http://example.org/ns#a6347> <http://example.org/ns#a6347> .
+<http://example.org/ns#a6348> <http://example.org/ns#a6348> <http://example.org/ns#a6348> .
+<http://example.org/ns#a6349> <http://example.org/ns#a6349> <http://example.org/ns#a6349> .
+<http://example.org/ns#a6350> <http://example.org/ns#a6350> <http://example.org/ns#a6350> .
+<http://example.org/ns#a6351> <http://example.org/ns#a6351> <http://example.org/ns#a6351> .
+<http://example.org/ns#a6352> <http://example.org/ns#a6352> <http://example.org/ns#a6352> .
+<http://example.org/ns#a6353> <http://example.org/ns#a6353> <http://example.org/ns#a6353> .
+<http://example.org/ns#a6354> <http://example.org/ns#a6354> <http://example.org/ns#a6354> .
+<http://example.org/ns#a6355> <http://example.org/ns#a6355> <http://example.org/ns#a6355> .
+<http://example.org/ns#a6356> <http://example.org/ns#a6356> <http://example.org/ns#a6356> .
+<http://example.org/ns#a6357> <http://example.org/ns#a6357> <http://example.org/ns#a6357> .
+<http://example.org/ns#a6358> <http://example.org/ns#a6358> <http://example.org/ns#a6358> .
+<http://example.org/ns#a6359> <http://example.org/ns#a6359> <http://example.org/ns#a6359> .
+<http://example.org/ns#a6360> <http://example.org/ns#a6360> <http://example.org/ns#a6360> .
+<http://example.org/ns#a6361> <http://example.org/ns#a6361> <http://example.org/ns#a6361> .
+<http://example.org/ns#a6362> <http://example.org/ns#a6362> <http://example.org/ns#a6362> .
+<http://example.org/ns#a6363> <http://example.org/ns#a6363> <http://example.org/ns#a6363> .
+<http://example.org/ns#a6364> <http://example.org/ns#a6364> <http://example.org/ns#a6364> .
+<http://example.org/ns#a6365> <http://example.org/ns#a6365> <http://example.org/ns#a6365> .
+<http://example.org/ns#a6366> <http://example.org/ns#a6366> <http://example.org/ns#a6366> .
+<http://example.org/ns#a6367> <http://example.org/ns#a6367> <http://example.org/ns#a6367> .
+<http://example.org/ns#a6368> <http://example.org/ns#a6368> <http://example.org/ns#a6368> .
+<http://example.org/ns#a6369> <http://example.org/ns#a6369> <http://example.org/ns#a6369> .
+<http://example.org/ns#a6370> <http://example.org/ns#a6370> <http://example.org/ns#a6370> .
+<http://example.org/ns#a6371> <http://example.org/ns#a6371> <http://example.org/ns#a6371> .
+<http://example.org/ns#a6372> <http://example.org/ns#a6372> <http://example.org/ns#a6372> .
+<http://example.org/ns#a6373> <http://example.org/ns#a6373> <http://example.org/ns#a6373> .
+<http://example.org/ns#a6374> <http://example.org/ns#a6374> <http://example.org/ns#a6374> .
+<http://example.org/ns#a6375> <http://example.org/ns#a6375> <http://example.org/ns#a6375> .
+<http://example.org/ns#a6376> <http://example.org/ns#a6376> <http://example.org/ns#a6376> .
+<http://example.org/ns#a6377> <http://example.org/ns#a6377> <http://example.org/ns#a6377> .
+<http://example.org/ns#a6378> <http://example.org/ns#a6378> <http://example.org/ns#a6378> .
+<http://example.org/ns#a6379> <http://example.org/ns#a6379> <http://example.org/ns#a6379> .
+<http://example.org/ns#a6380> <http://example.org/ns#a6380> <http://example.org/ns#a6380> .
+<http://example.org/ns#a6381> <http://example.org/ns#a6381> <http://example.org/ns#a6381> .
+<http://example.org/ns#a6382> <http://example.org/ns#a6382> <http://example.org/ns#a6382> .
+<http://example.org/ns#a6383> <http://example.org/ns#a6383> <http://example.org/ns#a6383> .
+<http://example.org/ns#a6384> <http://example.org/ns#a6384> <http://example.org/ns#a6384> .
+<http://example.org/ns#a6385> <http://example.org/ns#a6385> <http://example.org/ns#a6385> .
+<http://example.org/ns#a6386> <http://example.org/ns#a6386> <http://example.org/ns#a6386> .
+<http://example.org/ns#a6387> <http://example.org/ns#a6387> <http://example.org/ns#a6387> .
+<http://example.org/ns#a6388> <http://example.org/ns#a6388> <http://example.org/ns#a6388> .
+<http://example.org/ns#a6389> <http://example.org/ns#a6389> <http://example.org/ns#a6389> .
+<http://example.org/ns#a6390> <http://example.org/ns#a6390> <http://example.org/ns#a6390> .
+<http://example.org/ns#a6391> <http://example.org/ns#a6391> <http://example.org/ns#a6391> .
+<http://example.org/ns#a6392> <http://example.org/ns#a6392> <http://example.org/ns#a6392> .
+<http://example.org/ns#a6393> <http://example.org/ns#a6393> <http://example.org/ns#a6393> .
+<http://example.org/ns#a6394> <http://example.org/ns#a6394> <http://example.org/ns#a6394> .
+<http://example.org/ns#a6395> <http://example.org/ns#a6395> <http://example.org/ns#a6395> .
+<http://example.org/ns#a6396> <http://example.org/ns#a6396> <http://example.org/ns#a6396> .
+<http://example.org/ns#a6397> <http://example.org/ns#a6397> <http://example.org/ns#a6397> .
+<http://example.org/ns#a6398> <http://example.org/ns#a6398> <http://example.org/ns#a6398> .
+<http://example.org/ns#a6399> <http://example.org/ns#a6399> <http://example.org/ns#a6399> .
+<http://example.org/ns#a6400> <http://example.org/ns#a6400> <http://example.org/ns#a6400> .
+<http://example.org/ns#a6401> <http://example.org/ns#a6401> <http://example.org/ns#a6401> .
+<http://example.org/ns#a6402> <http://example.org/ns#a6402> <http://example.org/ns#a6402> .
+<http://example.org/ns#a6403> <http://example.org/ns#a6403> <http://example.org/ns#a6403> .
+<http://example.org/ns#a6404> <http://example.org/ns#a6404> <http://example.org/ns#a6404> .
+<http://example.org/ns#a6405> <http://example.org/ns#a6405> <http://example.org/ns#a6405> .
+<http://example.org/ns#a6406> <http://example.org/ns#a6406> <http://example.org/ns#a6406> .
+<http://example.org/ns#a6407> <http://example.org/ns#a6407> <http://example.org/ns#a6407> .
+<http://example.org/ns#a6408> <http://example.org/ns#a6408> <http://example.org/ns#a6408> .
+<http://example.org/ns#a6409> <http://example.org/ns#a6409> <http://example.org/ns#a6409> .
+<http://example.org/ns#a6410> <http://example.org/ns#a6410> <http://example.org/ns#a6410> .
+<http://example.org/ns#a6411> <http://example.org/ns#a6411> <http://example.org/ns#a6411> .
+<http://example.org/ns#a6412> <http://example.org/ns#a6412> <http://example.org/ns#a6412> .
+<http://example.org/ns#a6413> <http://example.org/ns#a6413> <http://example.org/ns#a6413> .
+<http://example.org/ns#a6414> <http://example.org/ns#a6414> <http://example.org/ns#a6414> .
+<http://example.org/ns#a6415> <http://example.org/ns#a6415> <http://example.org/ns#a6415> .
+<http://example.org/ns#a6416> <http://example.org/ns#a6416> <http://example.org/ns#a6416> .
+<http://example.org/ns#a6417> <http://example.org/ns#a6417> <http://example.org/ns#a6417> .
+<http://example.org/ns#a6418> <http://example.org/ns#a6418> <http://example.org/ns#a6418> .
+<http://example.org/ns#a6419> <http://example.org/ns#a6419> <http://example.org/ns#a6419> .
+<http://example.org/ns#a6420> <http://example.org/ns#a6420> <http://example.org/ns#a6420> .
+<http://example.org/ns#a6421> <http://example.org/ns#a6421> <http://example.org/ns#a6421> .
+<http://example.org/ns#a6422> <http://example.org/ns#a6422> <http://example.org/ns#a6422> .
+<http://example.org/ns#a6423> <http://example.org/ns#a6423> <http://example.org/ns#a6423> .
+<http://example.org/ns#a6424> <http://example.org/ns#a6424> <http://example.org/ns#a6424> .
+<http://example.org/ns#a6425> <http://example.org/ns#a6425> <http://example.org/ns#a6425> .
+<http://example.org/ns#a6426> <http://example.org/ns#a6426> <http://example.org/ns#a6426> .
+<http://example.org/ns#a6427> <http://example.org/ns#a6427> <http://example.org/ns#a6427> .
+<http://example.org/ns#a6428> <http://example.org/ns#a6428> <http://example.org/ns#a6428> .
+<http://example.org/ns#a6429> <http://example.org/ns#a6429> <http://example.org/ns#a6429> .
+<http://example.org/ns#a6430> <http://example.org/ns#a6430> <http://example.org/ns#a6430> .
+<http://example.org/ns#a6431> <http://example.org/ns#a6431> <http://example.org/ns#a6431> .
+<http://example.org/ns#a6432> <http://example.org/ns#a6432> <http://example.org/ns#a6432> .
+<http://example.org/ns#a6433> <http://example.org/ns#a6433> <http://example.org/ns#a6433> .
+<http://example.org/ns#a6434> <http://example.org/ns#a6434> <http://example.org/ns#a6434> .
+<http://example.org/ns#a6435> <http://example.org/ns#a6435> <http://example.org/ns#a6435> .
+<http://example.org/ns#a6436> <http://example.org/ns#a6436> <http://example.org/ns#a6436> .
+<http://example.org/ns#a6437> <http://example.org/ns#a6437> <http://example.org/ns#a6437> .
+<http://example.org/ns#a6438> <http://example.org/ns#a6438> <http://example.org/ns#a6438> .
+<http://example.org/ns#a6439> <http://example.org/ns#a6439> <http://example.org/ns#a6439> .
+<http://example.org/ns#a6440> <http://example.org/ns#a6440> <http://example.org/ns#a6440> .
+<http://example.org/ns#a6441> <http://example.org/ns#a6441> <http://example.org/ns#a6441> .
+<http://example.org/ns#a6442> <http://example.org/ns#a6442> <http://example.org/ns#a6442> .
+<http://example.org/ns#a6443> <http://example.org/ns#a6443> <http://example.org/ns#a6443> .
+<http://example.org/ns#a6444> <http://example.org/ns#a6444> <http://example.org/ns#a6444> .
+<http://example.org/ns#a6445> <http://example.org/ns#a6445> <http://example.org/ns#a6445> .
+<http://example.org/ns#a6446> <http://example.org/ns#a6446> <http://example.org/ns#a6446> .
+<http://example.org/ns#a6447> <http://example.org/ns#a6447> <http://example.org/ns#a6447> .
+<http://example.org/ns#a6448> <http://example.org/ns#a6448> <http://example.org/ns#a6448> .
+<http://example.org/ns#a6449> <http://example.org/ns#a6449> <http://example.org/ns#a6449> .
+<http://example.org/ns#a6450> <http://example.org/ns#a6450> <http://example.org/ns#a6450> .
+<http://example.org/ns#a6451> <http://example.org/ns#a6451> <http://example.org/ns#a6451> .
+<http://example.org/ns#a6452> <http://example.org/ns#a6452> <http://example.org/ns#a6452> .
+<http://example.org/ns#a6453> <http://example.org/ns#a6453> <http://example.org/ns#a6453> .
+<http://example.org/ns#a6454> <http://example.org/ns#a6454> <http://example.org/ns#a6454> .
+<http://example.org/ns#a6455> <http://example.org/ns#a6455> <http://example.org/ns#a6455> .
+<http://example.org/ns#a6456> <http://example.org/ns#a6456> <http://example.org/ns#a6456> .
+<http://example.org/ns#a6457> <http://example.org/ns#a6457> <http://example.org/ns#a6457> .
+<http://example.org/ns#a6458> <http://example.org/ns#a6458> <http://example.org/ns#a6458> .
+<http://example.org/ns#a6459> <http://example.org/ns#a6459> <http://example.org/ns#a6459> .
+<http://example.org/ns#a6460> <http://example.org/ns#a6460> <http://example.org/ns#a6460> .
+<http://example.org/ns#a6461> <http://example.org/ns#a6461> <http://example.org/ns#a6461> .
+<http://example.org/ns#a6462> <http://example.org/ns#a6462> <http://example.org/ns#a6462> .
+<http://example.org/ns#a6463> <http://example.org/ns#a6463> <http://example.org/ns#a6463> .
+<http://example.org/ns#a6464> <http://example.org/ns#a6464> <http://example.org/ns#a6464> .
+<http://example.org/ns#a6465> <http://example.org/ns#a6465> <http://example.org/ns#a6465> .
+<http://example.org/ns#a6466> <http://example.org/ns#a6466> <http://example.org/ns#a6466> .
+<http://example.org/ns#a6467> <http://example.org/ns#a6467> <http://example.org/ns#a6467> .
+<http://example.org/ns#a6468> <http://example.org/ns#a6468> <http://example.org/ns#a6468> .
+<http://example.org/ns#a6469> <http://example.org/ns#a6469> <http://example.org/ns#a6469> .
+<http://example.org/ns#a6470> <http://example.org/ns#a6470> <http://example.org/ns#a6470> .
+<http://example.org/ns#a6471> <http://example.org/ns#a6471> <http://example.org/ns#a6471> .
+<http://example.org/ns#a6472> <http://example.org/ns#a6472> <http://example.org/ns#a6472> .
+<http://example.org/ns#a6473> <http://example.org/ns#a6473> <http://example.org/ns#a6473> .
+<http://example.org/ns#a6474> <http://example.org/ns#a6474> <http://example.org/ns#a6474> .
+<http://example.org/ns#a6475> <http://example.org/ns#a6475> <http://example.org/ns#a6475> .
+<http://example.org/ns#a6476> <http://example.org/ns#a6476> <http://example.org/ns#a6476> .
+<http://example.org/ns#a6477> <http://example.org/ns#a6477> <http://example.org/ns#a6477> .
+<http://example.org/ns#a6478> <http://example.org/ns#a6478> <http://example.org/ns#a6478> .
+<http://example.org/ns#a6479> <http://example.org/ns#a6479> <http://example.org/ns#a6479> .
+<http://example.org/ns#a6480> <http://example.org/ns#a6480> <http://example.org/ns#a6480> .
+<http://example.org/ns#a6481> <http://example.org/ns#a6481> <http://example.org/ns#a6481> .
+<http://example.org/ns#a6482> <http://example.org/ns#a6482> <http://example.org/ns#a6482> .
+<http://example.org/ns#a6483> <http://example.org/ns#a6483> <http://example.org/ns#a6483> .
+<http://example.org/ns#a6484> <http://example.org/ns#a6484> <http://example.org/ns#a6484> .
+<http://example.org/ns#a6485> <http://example.org/ns#a6485> <http://example.org/ns#a6485> .
+<http://example.org/ns#a6486> <http://example.org/ns#a6486> <http://example.org/ns#a6486> .
+<http://example.org/ns#a6487> <http://example.org/ns#a6487> <http://example.org/ns#a6487> .
+<http://example.org/ns#a6488> <http://example.org/ns#a6488> <http://example.org/ns#a6488> .
+<http://example.org/ns#a6489> <http://example.org/ns#a6489> <http://example.org/ns#a6489> .
+<http://example.org/ns#a6490> <http://example.org/ns#a6490> <http://example.org/ns#a6490> .
+<http://example.org/ns#a6491> <http://example.org/ns#a6491> <http://example.org/ns#a6491> .
+<http://example.org/ns#a6492> <http://example.org/ns#a6492> <http://example.org/ns#a6492> .
+<http://example.org/ns#a6493> <http://example.org/ns#a6493> <http://example.org/ns#a6493> .
+<http://example.org/ns#a6494> <http://example.org/ns#a6494> <http://example.org/ns#a6494> .
+<http://example.org/ns#a6495> <http://example.org/ns#a6495> <http://example.org/ns#a6495> .
+<http://example.org/ns#a6496> <http://example.org/ns#a6496> <http://example.org/ns#a6496> .
+<http://example.org/ns#a6497> <http://example.org/ns#a6497> <http://example.org/ns#a6497> .
+<http://example.org/ns#a6498> <http://example.org/ns#a6498> <http://example.org/ns#a6498> .
+<http://example.org/ns#a6499> <http://example.org/ns#a6499> <http://example.org/ns#a6499> .
+<http://example.org/ns#a6500> <http://example.org/ns#a6500> <http://example.org/ns#a6500> .
+<http://example.org/ns#a6501> <http://example.org/ns#a6501> <http://example.org/ns#a6501> .
+<http://example.org/ns#a6502> <http://example.org/ns#a6502> <http://example.org/ns#a6502> .
+<http://example.org/ns#a6503> <http://example.org/ns#a6503> <http://example.org/ns#a6503> .
+<http://example.org/ns#a6504> <http://example.org/ns#a6504> <http://example.org/ns#a6504> .
+<http://example.org/ns#a6505> <http://example.org/ns#a6505> <http://example.org/ns#a6505> .
+<http://example.org/ns#a6506> <http://example.org/ns#a6506> <http://example.org/ns#a6506> .
+<http://example.org/ns#a6507> <http://example.org/ns#a6507> <http://example.org/ns#a6507> .
+<http://example.org/ns#a6508> <http://example.org/ns#a6508> <http://example.org/ns#a6508> .
+<http://example.org/ns#a6509> <http://example.org/ns#a6509> <http://example.org/ns#a6509> .
+<http://example.org/ns#a6510> <http://example.org/ns#a6510> <http://example.org/ns#a6510> .
+<http://example.org/ns#a6511> <http://example.org/ns#a6511> <http://example.org/ns#a6511> .
+<http://example.org/ns#a6512> <http://example.org/ns#a6512> <http://example.org/ns#a6512> .
+<http://example.org/ns#a6513> <http://example.org/ns#a6513> <http://example.org/ns#a6513> .
+<http://example.org/ns#a6514> <http://example.org/ns#a6514> <http://example.org/ns#a6514> .
+<http://example.org/ns#a6515> <http://example.org/ns#a6515> <http://example.org/ns#a6515> .
+<http://example.org/ns#a6516> <http://example.org/ns#a6516> <http://example.org/ns#a6516> .
+<http://example.org/ns#a6517> <http://example.org/ns#a6517> <http://example.org/ns#a6517> .
+<http://example.org/ns#a6518> <http://example.org/ns#a6518> <http://example.org/ns#a6518> .
+<http://example.org/ns#a6519> <http://example.org/ns#a6519> <http://example.org/ns#a6519> .
+<http://example.org/ns#a6520> <http://example.org/ns#a6520> <http://example.org/ns#a6520> .
+<http://example.org/ns#a6521> <http://example.org/ns#a6521> <http://example.org/ns#a6521> .
+<http://example.org/ns#a6522> <http://example.org/ns#a6522> <http://example.org/ns#a6522> .
+<http://example.org/ns#a6523> <http://example.org/ns#a6523> <http://example.org/ns#a6523> .
+<http://example.org/ns#a6524> <http://example.org/ns#a6524> <http://example.org/ns#a6524> .
+<http://example.org/ns#a6525> <http://example.org/ns#a6525> <http://example.org/ns#a6525> .
+<http://example.org/ns#a6526> <http://example.org/ns#a6526> <http://example.org/ns#a6526> .
+<http://example.org/ns#a6527> <http://example.org/ns#a6527> <http://example.org/ns#a6527> .
+<http://example.org/ns#a6528> <http://example.org/ns#a6528> <http://example.org/ns#a6528> .
+<http://example.org/ns#a6529> <http://example.org/ns#a6529> <http://example.org/ns#a6529> .
+<http://example.org/ns#a6530> <http://example.org/ns#a6530> <http://example.org/ns#a6530> .
+<http://example.org/ns#a6531> <http://example.org/ns#a6531> <http://example.org/ns#a6531> .
+<http://example.org/ns#a6532> <http://example.org/ns#a6532> <http://example.org/ns#a6532> .
+<http://example.org/ns#a6533> <http://example.org/ns#a6533> <http://example.org/ns#a6533> .
+<http://example.org/ns#a6534> <http://example.org/ns#a6534> <http://example.org/ns#a6534> .
+<http://example.org/ns#a6535> <http://example.org/ns#a6535> <http://example.org/ns#a6535> .
+<http://example.org/ns#a6536> <http://example.org/ns#a6536> <http://example.org/ns#a6536> .
+<http://example.org/ns#a6537> <http://example.org/ns#a6537> <http://example.org/ns#a6537> .
+<http://example.org/ns#a6538> <http://example.org/ns#a6538> <http://example.org/ns#a6538> .
+<http://example.org/ns#a6539> <http://example.org/ns#a6539> <http://example.org/ns#a6539> .
+<http://example.org/ns#a6540> <http://example.org/ns#a6540> <http://example.org/ns#a6540> .
+<http://example.org/ns#a6541> <http://example.org/ns#a6541> <http://example.org/ns#a6541> .
+<http://example.org/ns#a6542> <http://example.org/ns#a6542> <http://example.org/ns#a6542> .
+<http://example.org/ns#a6543> <http://example.org/ns#a6543> <http://example.org/ns#a6543> .
+<http://example.org/ns#a6544> <http://example.org/ns#a6544> <http://example.org/ns#a6544> .
+<http://example.org/ns#a6545> <http://example.org/ns#a6545> <http://example.org/ns#a6545> .
+<http://example.org/ns#a6546> <http://example.org/ns#a6546> <http://example.org/ns#a6546> .
+<http://example.org/ns#a6547> <http://example.org/ns#a6547> <http://example.org/ns#a6547> .
+<http://example.org/ns#a6548> <http://example.org/ns#a6548> <http://example.org/ns#a6548> .
+<http://example.org/ns#a6549> <http://example.org/ns#a6549> <http://example.org/ns#a6549> .
+<http://example.org/ns#a6550> <http://example.org/ns#a6550> <http://example.org/ns#a6550> .
+<http://example.org/ns#a6551> <http://example.org/ns#a6551> <http://example.org/ns#a6551> .
+<http://example.org/ns#a6552> <http://example.org/ns#a6552> <http://example.org/ns#a6552> .
+<http://example.org/ns#a6553> <http://example.org/ns#a6553> <http://example.org/ns#a6553> .
+<http://example.org/ns#a6554> <http://example.org/ns#a6554> <http://example.org/ns#a6554> .
+<http://example.org/ns#a6555> <http://example.org/ns#a6555> <http://example.org/ns#a6555> .
+<http://example.org/ns#a6556> <http://example.org/ns#a6556> <http://example.org/ns#a6556> .
+<http://example.org/ns#a6557> <http://example.org/ns#a6557> <http://example.org/ns#a6557> .
+<http://example.org/ns#a6558> <http://example.org/ns#a6558> <http://example.org/ns#a6558> .
+<http://example.org/ns#a6559> <http://example.org/ns#a6559> <http://example.org/ns#a6559> .
+<http://example.org/ns#a6560> <http://example.org/ns#a6560> <http://example.org/ns#a6560> .
+<http://example.org/ns#a6561> <http://example.org/ns#a6561> <http://example.org/ns#a6561> .
+<http://example.org/ns#a6562> <http://example.org/ns#a6562> <http://example.org/ns#a6562> .
+<http://example.org/ns#a6563> <http://example.org/ns#a6563> <http://example.org/ns#a6563> .
+<http://example.org/ns#a6564> <http://example.org/ns#a6564> <http://example.org/ns#a6564> .
+<http://example.org/ns#a6565> <http://example.org/ns#a6565> <http://example.org/ns#a6565> .
+<http://example.org/ns#a6566> <http://example.org/ns#a6566> <http://example.org/ns#a6566> .
+<http://example.org/ns#a6567> <http://example.org/ns#a6567> <http://example.org/ns#a6567> .
+<http://example.org/ns#a6568> <http://example.org/ns#a6568> <http://example.org/ns#a6568> .
+<http://example.org/ns#a6569> <http://example.org/ns#a6569> <http://example.org/ns#a6569> .
+<http://example.org/ns#a6570> <http://example.org/ns#a6570> <http://example.org/ns#a6570> .
+<http://example.org/ns#a6571> <http://example.org/ns#a6571> <http://example.org/ns#a6571> .
+<http://example.org/ns#a6572> <http://example.org/ns#a6572> <http://example.org/ns#a6572> .
+<http://example.org/ns#a6573> <http://example.org/ns#a6573> <http://example.org/ns#a6573> .
+<http://example.org/ns#a6574> <http://example.org/ns#a6574> <http://example.org/ns#a6574> .
+<http://example.org/ns#a6575> <http://example.org/ns#a6575> <http://example.org/ns#a6575> .
+<http://example.org/ns#a6576> <http://example.org/ns#a6576> <http://example.org/ns#a6576> .
+<http://example.org/ns#a6577> <http://example.org/ns#a6577> <http://example.org/ns#a6577> .
+<http://example.org/ns#a6578> <http://example.org/ns#a6578> <http://example.org/ns#a6578> .
+<http://example.org/ns#a6579> <http://example.org/ns#a6579> <http://example.org/ns#a6579> .
+<http://example.org/ns#a6580> <http://example.org/ns#a6580> <http://example.org/ns#a6580> .
+<http://example.org/ns#a6581> <http://example.org/ns#a6581> <http://example.org/ns#a6581> .
+<http://example.org/ns#a6582> <http://example.org/ns#a6582> <http://example.org/ns#a6582> .
+<http://example.org/ns#a6583> <http://example.org/ns#a6583> <http://example.org/ns#a6583> .
+<http://example.org/ns#a6584> <http://example.org/ns#a6584> <http://example.org/ns#a6584> .
+<http://example.org/ns#a6585> <http://example.org/ns#a6585> <http://example.org/ns#a6585> .
+<http://example.org/ns#a6586> <http://example.org/ns#a6586> <http://example.org/ns#a6586> .
+<http://example.org/ns#a6587> <http://example.org/ns#a6587> <http://example.org/ns#a6587> .
+<http://example.org/ns#a6588> <http://example.org/ns#a6588> <http://example.org/ns#a6588> .
+<http://example.org/ns#a6589> <http://example.org/ns#a6589> <http://example.org/ns#a6589> .
+<http://example.org/ns#a6590> <http://example.org/ns#a6590> <http://example.org/ns#a6590> .
+<http://example.org/ns#a6591> <http://example.org/ns#a6591> <http://example.org/ns#a6591> .
+<http://example.org/ns#a6592> <http://example.org/ns#a6592> <http://example.org/ns#a6592> .
+<http://example.org/ns#a6593> <http://example.org/ns#a6593> <http://example.org/ns#a6593> .
+<http://example.org/ns#a6594> <http://example.org/ns#a6594> <http://example.org/ns#a6594> .
+<http://example.org/ns#a6595> <http://example.org/ns#a6595> <http://example.org/ns#a6595> .
+<http://example.org/ns#a6596> <http://example.org/ns#a6596> <http://example.org/ns#a6596> .
+<http://example.org/ns#a6597> <http://example.org/ns#a6597> <http://example.org/ns#a6597> .
+<http://example.org/ns#a6598> <http://example.org/ns#a6598> <http://example.org/ns#a6598> .
+<http://example.org/ns#a6599> <http://example.org/ns#a6599> <http://example.org/ns#a6599> .
+<http://example.org/ns#a6600> <http://example.org/ns#a6600> <http://example.org/ns#a6600> .
+<http://example.org/ns#a6601> <http://example.org/ns#a6601> <http://example.org/ns#a6601> .
+<http://example.org/ns#a6602> <http://example.org/ns#a6602> <http://example.org/ns#a6602> .
+<http://example.org/ns#a6603> <http://example.org/ns#a6603> <http://example.org/ns#a6603> .
+<http://example.org/ns#a6604> <http://example.org/ns#a6604> <http://example.org/ns#a6604> .
+<http://example.org/ns#a6605> <http://example.org/ns#a6605> <http://example.org/ns#a6605> .
+<http://example.org/ns#a6606> <http://example.org/ns#a6606> <http://example.org/ns#a6606> .
+<http://example.org/ns#a6607> <http://example.org/ns#a6607> <http://example.org/ns#a6607> .
+<http://example.org/ns#a6608> <http://example.org/ns#a6608> <http://example.org/ns#a6608> .
+<http://example.org/ns#a6609> <http://example.org/ns#a6609> <http://example.org/ns#a6609> .
+<http://example.org/ns#a6610> <http://example.org/ns#a6610> <http://example.org/ns#a6610> .
+<http://example.org/ns#a6611> <http://example.org/ns#a6611> <http://example.org/ns#a6611> .
+<http://example.org/ns#a6612> <http://example.org/ns#a6612> <http://example.org/ns#a6612> .
+<http://example.org/ns#a6613> <http://example.org/ns#a6613> <http://example.org/ns#a6613> .
+<http://example.org/ns#a6614> <http://example.org/ns#a6614> <http://example.org/ns#a6614> .
+<http://example.org/ns#a6615> <http://example.org/ns#a6615> <http://example.org/ns#a6615> .
+<http://example.org/ns#a6616> <http://example.org/ns#a6616> <http://example.org/ns#a6616> .
+<http://example.org/ns#a6617> <http://example.org/ns#a6617> <http://example.org/ns#a6617> .
+<http://example.org/ns#a6618> <http://example.org/ns#a6618> <http://example.org/ns#a6618> .
+<http://example.org/ns#a6619> <http://example.org/ns#a6619> <http://example.org/ns#a6619> .
+<http://example.org/ns#a6620> <http://example.org/ns#a6620> <http://example.org/ns#a6620> .
+<http://example.org/ns#a6621> <http://example.org/ns#a6621> <http://example.org/ns#a6621> .
+<http://example.org/ns#a6622> <http://example.org/ns#a6622> <http://example.org/ns#a6622> .
+<http://example.org/ns#a6623> <http://example.org/ns#a6623> <http://example.org/ns#a6623> .
+<http://example.org/ns#a6624> <http://example.org/ns#a6624> <http://example.org/ns#a6624> .
+<http://example.org/ns#a6625> <http://example.org/ns#a6625> <http://example.org/ns#a6625> .
+<http://example.org/ns#a6626> <http://example.org/ns#a6626> <http://example.org/ns#a6626> .
+<http://example.org/ns#a6627> <http://example.org/ns#a6627> <http://example.org/ns#a6627> .
+<http://example.org/ns#a6628> <http://example.org/ns#a6628> <http://example.org/ns#a6628> .
+<http://example.org/ns#a6629> <http://example.org/ns#a6629> <http://example.org/ns#a6629> .
+<http://example.org/ns#a6630> <http://example.org/ns#a6630> <http://example.org/ns#a6630> .
+<http://example.org/ns#a6631> <http://example.org/ns#a6631> <http://example.org/ns#a6631> .
+<http://example.org/ns#a6632> <http://example.org/ns#a6632> <http://example.org/ns#a6632> .
+<http://example.org/ns#a6633> <http://example.org/ns#a6633> <http://example.org/ns#a6633> .
+<http://example.org/ns#a6634> <http://example.org/ns#a6634> <http://example.org/ns#a6634> .
+<http://example.org/ns#a6635> <http://example.org/ns#a6635> <http://example.org/ns#a6635> .
+<http://example.org/ns#a6636> <http://example.org/ns#a6636> <http://example.org/ns#a6636> .
+<http://example.org/ns#a6637> <http://example.org/ns#a6637> <http://example.org/ns#a6637> .
+<http://example.org/ns#a6638> <http://example.org/ns#a6638> <http://example.org/ns#a6638> .
+<http://example.org/ns#a6639> <http://example.org/ns#a6639> <http://example.org/ns#a6639> .
+<http://example.org/ns#a6640> <http://example.org/ns#a6640> <http://example.org/ns#a6640> .
+<http://example.org/ns#a6641> <http://example.org/ns#a6641> <http://example.org/ns#a6641> .
+<http://example.org/ns#a6642> <http://example.org/ns#a6642> <http://example.org/ns#a6642> .
+<http://example.org/ns#a6643> <http://example.org/ns#a6643> <http://example.org/ns#a6643> .
+<http://example.org/ns#a6644> <http://example.org/ns#a6644> <http://example.org/ns#a6644> .
+<http://example.org/ns#a6645> <http://example.org/ns#a6645> <http://example.org/ns#a6645> .
+<http://example.org/ns#a6646> <http://example.org/ns#a6646> <http://example.org/ns#a6646> .
+<http://example.org/ns#a6647> <http://example.org/ns#a6647> <http://example.org/ns#a6647> .
+<http://example.org/ns#a6648> <http://example.org/ns#a6648> <http://example.org/ns#a6648> .
+<http://example.org/ns#a6649> <http://example.org/ns#a6649> <http://example.org/ns#a6649> .
+<http://example.org/ns#a6650> <http://example.org/ns#a6650> <http://example.org/ns#a6650> .
+<http://example.org/ns#a6651> <http://example.org/ns#a6651> <http://example.org/ns#a6651> .
+<http://example.org/ns#a6652> <http://example.org/ns#a6652> <http://example.org/ns#a6652> .
+<http://example.org/ns#a6653> <http://example.org/ns#a6653> <http://example.org/ns#a6653> .
+<http://example.org/ns#a6654> <http://example.org/ns#a6654> <http://example.org/ns#a6654> .
+<http://example.org/ns#a6655> <http://example.org/ns#a6655> <http://example.org/ns#a6655> .
+<http://example.org/ns#a6656> <http://example.org/ns#a6656> <http://example.org/ns#a6656> .
+<http://example.org/ns#a6657> <http://example.org/ns#a6657> <http://example.org/ns#a6657> .
+<http://example.org/ns#a6658> <http://example.org/ns#a6658> <http://example.org/ns#a6658> .
+<http://example.org/ns#a6659> <http://example.org/ns#a6659> <http://example.org/ns#a6659> .
+<http://example.org/ns#a6660> <http://example.org/ns#a6660> <http://example.org/ns#a6660> .
+<http://example.org/ns#a6661> <http://example.org/ns#a6661> <http://example.org/ns#a6661> .
+<http://example.org/ns#a6662> <http://example.org/ns#a6662> <http://example.org/ns#a6662> .
+<http://example.org/ns#a6663> <http://example.org/ns#a6663> <http://example.org/ns#a6663> .
+<http://example.org/ns#a6664> <http://example.org/ns#a6664> <http://example.org/ns#a6664> .
+<http://example.org/ns#a6665> <http://example.org/ns#a6665> <http://example.org/ns#a6665> .
+<http://example.org/ns#a6666> <http://example.org/ns#a6666> <http://example.org/ns#a6666> .
+<http://example.org/ns#a6667> <http://example.org/ns#a6667> <http://example.org/ns#a6667> .
+<http://example.org/ns#a6668> <http://example.org/ns#a6668> <http://example.org/ns#a6668> .
+<http://example.org/ns#a6669> <http://example.org/ns#a6669> <http://example.org/ns#a6669> .
+<http://example.org/ns#a6670> <http://example.org/ns#a6670> <http://example.org/ns#a6670> .
+<http://example.org/ns#a6671> <http://example.org/ns#a6671> <http://example.org/ns#a6671> .
+<http://example.org/ns#a6672> <http://example.org/ns#a6672> <http://example.org/ns#a6672> .
+<http://example.org/ns#a6673> <http://example.org/ns#a6673> <http://example.org/ns#a6673> .
+<http://example.org/ns#a6674> <http://example.org/ns#a6674> <http://example.org/ns#a6674> .
+<http://example.org/ns#a6675> <http://example.org/ns#a6675> <http://example.org/ns#a6675> .
+<http://example.org/ns#a6676> <http://example.org/ns#a6676> <http://example.org/ns#a6676> .
+<http://example.org/ns#a6677> <http://example.org/ns#a6677> <http://example.org/ns#a6677> .
+<http://example.org/ns#a6678> <http://example.org/ns#a6678> <http://example.org/ns#a6678> .
+<http://example.org/ns#a6679> <http://example.org/ns#a6679> <http://example.org/ns#a6679> .
+<http://example.org/ns#a6680> <http://example.org/ns#a6680> <http://example.org/ns#a6680> .
+<http://example.org/ns#a6681> <http://example.org/ns#a6681> <http://example.org/ns#a6681> .
+<http://example.org/ns#a6682> <http://example.org/ns#a6682> <http://example.org/ns#a6682> .
+<http://example.org/ns#a6683> <http://example.org/ns#a6683> <http://example.org/ns#a6683> .
+<http://example.org/ns#a6684> <http://example.org/ns#a6684> <http://example.org/ns#a6684> .
+<http://example.org/ns#a6685> <http://example.org/ns#a6685> <http://example.org/ns#a6685> .
+<http://example.org/ns#a6686> <http://example.org/ns#a6686> <http://example.org/ns#a6686> .
+<http://example.org/ns#a6687> <http://example.org/ns#a6687> <http://example.org/ns#a6687> .
+<http://example.org/ns#a6688> <http://example.org/ns#a6688> <http://example.org/ns#a6688> .
+<http://example.org/ns#a6689> <http://example.org/ns#a6689> <http://example.org/ns#a6689> .
+<http://example.org/ns#a6690> <http://example.org/ns#a6690> <http://example.org/ns#a6690> .
+<http://example.org/ns#a6691> <http://example.org/ns#a6691> <http://example.org/ns#a6691> .
+<http://example.org/ns#a6692> <http://example.org/ns#a6692> <http://example.org/ns#a6692> .
+<http://example.org/ns#a6693> <http://example.org/ns#a6693> <http://example.org/ns#a6693> .
+<http://example.org/ns#a6694> <http://example.org/ns#a6694> <http://example.org/ns#a6694> .
+<http://example.org/ns#a6695> <http://example.org/ns#a6695> <http://example.org/ns#a6695> .
+<http://example.org/ns#a6696> <http://example.org/ns#a6696> <http://example.org/ns#a6696> .
+<http://example.org/ns#a6697> <http://example.org/ns#a6697> <http://example.org/ns#a6697> .
+<http://example.org/ns#a6698> <http://example.org/ns#a6698> <http://example.org/ns#a6698> .
+<http://example.org/ns#a6699> <http://example.org/ns#a6699> <http://example.org/ns#a6699> .
+<http://example.org/ns#a6700> <http://example.org/ns#a6700> <http://example.org/ns#a6700> .
+<http://example.org/ns#a6701> <http://example.org/ns#a6701> <http://example.org/ns#a6701> .
+<http://example.org/ns#a6702> <http://example.org/ns#a6702> <http://example.org/ns#a6702> .
+<http://example.org/ns#a6703> <http://example.org/ns#a6703> <http://example.org/ns#a6703> .
+<http://example.org/ns#a6704> <http://example.org/ns#a6704> <http://example.org/ns#a6704> .
+<http://example.org/ns#a6705> <http://example.org/ns#a6705> <http://example.org/ns#a6705> .
+<http://example.org/ns#a6706> <http://example.org/ns#a6706> <http://example.org/ns#a6706> .
+<http://example.org/ns#a6707> <http://example.org/ns#a6707> <http://example.org/ns#a6707> .
+<http://example.org/ns#a6708> <http://example.org/ns#a6708> <http://example.org/ns#a6708> .
+<http://example.org/ns#a6709> <http://example.org/ns#a6709> <http://example.org/ns#a6709> .
+<http://example.org/ns#a6710> <http://example.org/ns#a6710> <http://example.org/ns#a6710> .
+<http://example.org/ns#a6711> <http://example.org/ns#a6711> <http://example.org/ns#a6711> .
+<http://example.org/ns#a6712> <http://example.org/ns#a6712> <http://example.org/ns#a6712> .
+<http://example.org/ns#a6713> <http://example.org/ns#a6713> <http://example.org/ns#a6713> .
+<http://example.org/ns#a6714> <http://example.org/ns#a6714> <http://example.org/ns#a6714> .
+<http://example.org/ns#a6715> <http://example.org/ns#a6715> <http://example.org/ns#a6715> .
+<http://example.org/ns#a6716> <http://example.org/ns#a6716> <http://example.org/ns#a6716> .
+<http://example.org/ns#a6717> <http://example.org/ns#a6717> <http://example.org/ns#a6717> .
+<http://example.org/ns#a6718> <http://example.org/ns#a6718> <http://example.org/ns#a6718> .
+<http://example.org/ns#a6719> <http://example.org/ns#a6719> <http://example.org/ns#a6719> .
+<http://example.org/ns#a6720> <http://example.org/ns#a6720> <http://example.org/ns#a6720> .
+<http://example.org/ns#a6721> <http://example.org/ns#a6721> <http://example.org/ns#a6721> .
+<http://example.org/ns#a6722> <http://example.org/ns#a6722> <http://example.org/ns#a6722> .
+<http://example.org/ns#a6723> <http://example.org/ns#a6723> <http://example.org/ns#a6723> .
+<http://example.org/ns#a6724> <http://example.org/ns#a6724> <http://example.org/ns#a6724> .
+<http://example.org/ns#a6725> <http://example.org/ns#a6725> <http://example.org/ns#a6725> .
+<http://example.org/ns#a6726> <http://example.org/ns#a6726> <http://example.org/ns#a6726> .
+<http://example.org/ns#a6727> <http://example.org/ns#a6727> <http://example.org/ns#a6727> .
+<http://example.org/ns#a6728> <http://example.org/ns#a6728> <http://example.org/ns#a6728> .
+<http://example.org/ns#a6729> <http://example.org/ns#a6729> <http://example.org/ns#a6729> .
+<http://example.org/ns#a6730> <http://example.org/ns#a6730> <http://example.org/ns#a6730> .
+<http://example.org/ns#a6731> <http://example.org/ns#a6731> <http://example.org/ns#a6731> .
+<http://example.org/ns#a6732> <http://example.org/ns#a6732> <http://example.org/ns#a6732> .
+<http://example.org/ns#a6733> <http://example.org/ns#a6733> <http://example.org/ns#a6733> .
+<http://example.org/ns#a6734> <http://example.org/ns#a6734> <http://example.org/ns#a6734> .
+<http://example.org/ns#a6735> <http://example.org/ns#a6735> <http://example.org/ns#a6735> .
+<http://example.org/ns#a6736> <http://example.org/ns#a6736> <http://example.org/ns#a6736> .
+<http://example.org/ns#a6737> <http://example.org/ns#a6737> <http://example.org/ns#a6737> .
+<http://example.org/ns#a6738> <http://example.org/ns#a6738> <http://example.org/ns#a6738> .
+<http://example.org/ns#a6739> <http://example.org/ns#a6739> <http://example.org/ns#a6739> .
+<http://example.org/ns#a6740> <http://example.org/ns#a6740> <http://example.org/ns#a6740> .
+<http://example.org/ns#a6741> <http://example.org/ns#a6741> <http://example.org/ns#a6741> .
+<http://example.org/ns#a6742> <http://example.org/ns#a6742> <http://example.org/ns#a6742> .
+<http://example.org/ns#a6743> <http://example.org/ns#a6743> <http://example.org/ns#a6743> .
+<http://example.org/ns#a6744> <http://example.org/ns#a6744> <http://example.org/ns#a6744> .
+<http://example.org/ns#a6745> <http://example.org/ns#a6745> <http://example.org/ns#a6745> .
+<http://example.org/ns#a6746> <http://example.org/ns#a6746> <http://example.org/ns#a6746> .
+<http://example.org/ns#a6747> <http://example.org/ns#a6747> <http://example.org/ns#a6747> .
+<http://example.org/ns#a6748> <http://example.org/ns#a6748> <http://example.org/ns#a6748> .
+<http://example.org/ns#a6749> <http://example.org/ns#a6749> <http://example.org/ns#a6749> .
+<http://example.org/ns#a6750> <http://example.org/ns#a6750> <http://example.org/ns#a6750> .
+<http://example.org/ns#a6751> <http://example.org/ns#a6751> <http://example.org/ns#a6751> .
+<http://example.org/ns#a6752> <http://example.org/ns#a6752> <http://example.org/ns#a6752> .
+<http://example.org/ns#a6753> <http://example.org/ns#a6753> <http://example.org/ns#a6753> .
+<http://example.org/ns#a6754> <http://example.org/ns#a6754> <http://example.org/ns#a6754> .
+<http://example.org/ns#a6755> <http://example.org/ns#a6755> <http://example.org/ns#a6755> .
+<http://example.org/ns#a6756> <http://example.org/ns#a6756> <http://example.org/ns#a6756> .
+<http://example.org/ns#a6757> <http://example.org/ns#a6757> <http://example.org/ns#a6757> .
+<http://example.org/ns#a6758> <http://example.org/ns#a6758> <http://example.org/ns#a6758> .
+<http://example.org/ns#a6759> <http://example.org/ns#a6759> <http://example.org/ns#a6759> .
+<http://example.org/ns#a6760> <http://example.org/ns#a6760> <http://example.org/ns#a6760> .
+<http://example.org/ns#a6761> <http://example.org/ns#a6761> <http://example.org/ns#a6761> .
+<http://example.org/ns#a6762> <http://example.org/ns#a6762> <http://example.org/ns#a6762> .
+<http://example.org/ns#a6763> <http://example.org/ns#a6763> <http://example.org/ns#a6763> .
+<http://example.org/ns#a6764> <http://example.org/ns#a6764> <http://example.org/ns#a6764> .
+<http://example.org/ns#a6765> <http://example.org/ns#a6765> <http://example.org/ns#a6765> .
+<http://example.org/ns#a6766> <http://example.org/ns#a6766> <http://example.org/ns#a6766> .
+<http://example.org/ns#a6767> <http://example.org/ns#a6767> <http://example.org/ns#a6767> .
+<http://example.org/ns#a6768> <http://example.org/ns#a6768> <http://example.org/ns#a6768> .
+<http://example.org/ns#a6769> <http://example.org/ns#a6769> <http://example.org/ns#a6769> .
+<http://example.org/ns#a6770> <http://example.org/ns#a6770> <http://example.org/ns#a6770> .
+<http://example.org/ns#a6771> <http://example.org/ns#a6771> <http://example.org/ns#a6771> .
+<http://example.org/ns#a6772> <http://example.org/ns#a6772> <http://example.org/ns#a6772> .
+<http://example.org/ns#a6773> <http://example.org/ns#a6773> <http://example.org/ns#a6773> .
+<http://example.org/ns#a6774> <http://example.org/ns#a6774> <http://example.org/ns#a6774> .
+<http://example.org/ns#a6775> <http://example.org/ns#a6775> <http://example.org/ns#a6775> .
+<http://example.org/ns#a6776> <http://example.org/ns#a6776> <http://example.org/ns#a6776> .
+<http://example.org/ns#a6777> <http://example.org/ns#a6777> <http://example.org/ns#a6777> .
+<http://example.org/ns#a6778> <http://example.org/ns#a6778> <http://example.org/ns#a6778> .
+<http://example.org/ns#a6779> <http://example.org/ns#a6779> <http://example.org/ns#a6779> .
+<http://example.org/ns#a6780> <http://example.org/ns#a6780> <http://example.org/ns#a6780> .
+<http://example.org/ns#a6781> <http://example.org/ns#a6781> <http://example.org/ns#a6781> .
+<http://example.org/ns#a6782> <http://example.org/ns#a6782> <http://example.org/ns#a6782> .
+<http://example.org/ns#a6783> <http://example.org/ns#a6783> <http://example.org/ns#a6783> .
+<http://example.org/ns#a6784> <http://example.org/ns#a6784> <http://example.org/ns#a6784> .
+<http://example.org/ns#a6785> <http://example.org/ns#a6785> <http://example.org/ns#a6785> .
+<http://example.org/ns#a6786> <http://example.org/ns#a6786> <http://example.org/ns#a6786> .
+<http://example.org/ns#a6787> <http://example.org/ns#a6787> <http://example.org/ns#a6787> .
+<http://example.org/ns#a6788> <http://example.org/ns#a6788> <http://example.org/ns#a6788> .
+<http://example.org/ns#a6789> <http://example.org/ns#a6789> <http://example.org/ns#a6789> .
+<http://example.org/ns#a6790> <http://example.org/ns#a6790> <http://example.org/ns#a6790> .
+<http://example.org/ns#a6791> <http://example.org/ns#a6791> <http://example.org/ns#a6791> .
+<http://example.org/ns#a6792> <http://example.org/ns#a6792> <http://example.org/ns#a6792> .
+<http://example.org/ns#a6793> <http://example.org/ns#a6793> <http://example.org/ns#a6793> .
+<http://example.org/ns#a6794> <http://example.org/ns#a6794> <http://example.org/ns#a6794> .
+<http://example.org/ns#a6795> <http://example.org/ns#a6795> <http://example.org/ns#a6795> .
+<http://example.org/ns#a6796> <http://example.org/ns#a6796> <http://example.org/ns#a6796> .
+<http://example.org/ns#a6797> <http://example.org/ns#a6797> <http://example.org/ns#a6797> .
+<http://example.org/ns#a6798> <http://example.org/ns#a6798> <http://example.org/ns#a6798> .
+<http://example.org/ns#a6799> <http://example.org/ns#a6799> <http://example.org/ns#a6799> .
+<http://example.org/ns#a6800> <http://example.org/ns#a6800> <http://example.org/ns#a6800> .
+<http://example.org/ns#a6801> <http://example.org/ns#a6801> <http://example.org/ns#a6801> .
+<http://example.org/ns#a6802> <http://example.org/ns#a6802> <http://example.org/ns#a6802> .
+<http://example.org/ns#a6803> <http://example.org/ns#a6803> <http://example.org/ns#a6803> .
+<http://example.org/ns#a6804> <http://example.org/ns#a6804> <http://example.org/ns#a6804> .
+<http://example.org/ns#a6805> <http://example.org/ns#a6805> <http://example.org/ns#a6805> .
+<http://example.org/ns#a6806> <http://example.org/ns#a6806> <http://example.org/ns#a6806> .
+<http://example.org/ns#a6807> <http://example.org/ns#a6807> <http://example.org/ns#a6807> .
+<http://example.org/ns#a6808> <http://example.org/ns#a6808> <http://example.org/ns#a6808> .
+<http://example.org/ns#a6809> <http://example.org/ns#a6809> <http://example.org/ns#a6809> .
+<http://example.org/ns#a6810> <http://example.org/ns#a6810> <http://example.org/ns#a6810> .
+<http://example.org/ns#a6811> <http://example.org/ns#a6811> <http://example.org/ns#a6811> .
+<http://example.org/ns#a6812> <http://example.org/ns#a6812> <http://example.org/ns#a6812> .
+<http://example.org/ns#a6813> <http://example.org/ns#a6813> <http://example.org/ns#a6813> .
+<http://example.org/ns#a6814> <http://example.org/ns#a6814> <http://example.org/ns#a6814> .
+<http://example.org/ns#a6815> <http://example.org/ns#a6815> <http://example.org/ns#a6815> .
+<http://example.org/ns#a6816> <http://example.org/ns#a6816> <http://example.org/ns#a6816> .
+<http://example.org/ns#a6817> <http://example.org/ns#a6817> <http://example.org/ns#a6817> .
+<http://example.org/ns#a6818> <http://example.org/ns#a6818> <http://example.org/ns#a6818> .
+<http://example.org/ns#a6819> <http://example.org/ns#a6819> <http://example.org/ns#a6819> .
+<http://example.org/ns#a6820> <http://example.org/ns#a6820> <http://example.org/ns#a6820> .
+<http://example.org/ns#a6821> <http://example.org/ns#a6821> <http://example.org/ns#a6821> .
+<http://example.org/ns#a6822> <http://example.org/ns#a6822> <http://example.org/ns#a6822> .
+<http://example.org/ns#a6823> <http://example.org/ns#a6823> <http://example.org/ns#a6823> .
+<http://example.org/ns#a6824> <http://example.org/ns#a6824> <http://example.org/ns#a6824> .
+<http://example.org/ns#a6825> <http://example.org/ns#a6825> <http://example.org/ns#a6825> .
+<http://example.org/ns#a6826> <http://example.org/ns#a6826> <http://example.org/ns#a6826> .
+<http://example.org/ns#a6827> <http://example.org/ns#a6827> <http://example.org/ns#a6827> .
+<http://example.org/ns#a6828> <http://example.org/ns#a6828> <http://example.org/ns#a6828> .
+<http://example.org/ns#a6829> <http://example.org/ns#a6829> <http://example.org/ns#a6829> .
+<http://example.org/ns#a6830> <http://example.org/ns#a6830> <http://example.org/ns#a6830> .
+<http://example.org/ns#a6831> <http://example.org/ns#a6831> <http://example.org/ns#a6831> .
+<http://example.org/ns#a6832> <http://example.org/ns#a6832> <http://example.org/ns#a6832> .
+<http://example.org/ns#a6833> <http://example.org/ns#a6833> <http://example.org/ns#a6833> .
+<http://example.org/ns#a6834> <http://example.org/ns#a6834> <http://example.org/ns#a6834> .
+<http://example.org/ns#a6835> <http://example.org/ns#a6835> <http://example.org/ns#a6835> .
+<http://example.org/ns#a6836> <http://example.org/ns#a6836> <http://example.org/ns#a6836> .
+<http://example.org/ns#a6837> <http://example.org/ns#a6837> <http://example.org/ns#a6837> .
+<http://example.org/ns#a6838> <http://example.org/ns#a6838> <http://example.org/ns#a6838> .
+<http://example.org/ns#a6839> <http://example.org/ns#a6839> <http://example.org/ns#a6839> .
+<http://example.org/ns#a6840> <http://example.org/ns#a6840> <http://example.org/ns#a6840> .
+<http://example.org/ns#a6841> <http://example.org/ns#a6841> <http://example.org/ns#a6841> .
+<http://example.org/ns#a6842> <http://example.org/ns#a6842> <http://example.org/ns#a6842> .
+<http://example.org/ns#a6843> <http://example.org/ns#a6843> <http://example.org/ns#a6843> .
+<http://example.org/ns#a6844> <http://example.org/ns#a6844> <http://example.org/ns#a6844> .
+<http://example.org/ns#a6845> <http://example.org/ns#a6845> <http://example.org/ns#a6845> .
+<http://example.org/ns#a6846> <http://example.org/ns#a6846> <http://example.org/ns#a6846> .
+<http://example.org/ns#a6847> <http://example.org/ns#a6847> <http://example.org/ns#a6847> .
+<http://example.org/ns#a6848> <http://example.org/ns#a6848> <http://example.org/ns#a6848> .
+<http://example.org/ns#a6849> <http://example.org/ns#a6849> <http://example.org/ns#a6849> .
+<http://example.org/ns#a6850> <http://example.org/ns#a6850> <http://example.org/ns#a6850> .
+<http://example.org/ns#a6851> <http://example.org/ns#a6851> <http://example.org/ns#a6851> .
+<http://example.org/ns#a6852> <http://example.org/ns#a6852> <http://example.org/ns#a6852> .
+<http://example.org/ns#a6853> <http://example.org/ns#a6853> <http://example.org/ns#a6853> .
+<http://example.org/ns#a6854> <http://example.org/ns#a6854> <http://example.org/ns#a6854> .
+<http://example.org/ns#a6855> <http://example.org/ns#a6855> <http://example.org/ns#a6855> .
+<http://example.org/ns#a6856> <http://example.org/ns#a6856> <http://example.org/ns#a6856> .
+<http://example.org/ns#a6857> <http://example.org/ns#a6857> <http://example.org/ns#a6857> .
+<http://example.org/ns#a6858> <http://example.org/ns#a6858> <http://example.org/ns#a6858> .
+<http://example.org/ns#a6859> <http://example.org/ns#a6859> <http://example.org/ns#a6859> .
+<http://example.org/ns#a6860> <http://example.org/ns#a6860> <http://example.org/ns#a6860> .
+<http://example.org/ns#a6861> <http://example.org/ns#a6861> <http://example.org/ns#a6861> .
+<http://example.org/ns#a6862> <http://example.org/ns#a6862> <http://example.org/ns#a6862> .
+<http://example.org/ns#a6863> <http://example.org/ns#a6863> <http://example.org/ns#a6863> .
+<http://example.org/ns#a6864> <http://example.org/ns#a6864> <http://example.org/ns#a6864> .
+<http://example.org/ns#a6865> <http://example.org/ns#a6865> <http://example.org/ns#a6865> .
+<http://example.org/ns#a6866> <http://example.org/ns#a6866> <http://example.org/ns#a6866> .
+<http://example.org/ns#a6867> <http://example.org/ns#a6867> <http://example.org/ns#a6867> .
+<http://example.org/ns#a6868> <http://example.org/ns#a6868> <http://example.org/ns#a6868> .
+<http://example.org/ns#a6869> <http://example.org/ns#a6869> <http://example.org/ns#a6869> .
+<http://example.org/ns#a6870> <http://example.org/ns#a6870> <http://example.org/ns#a6870> .
+<http://example.org/ns#a6871> <http://example.org/ns#a6871> <http://example.org/ns#a6871> .
+<http://example.org/ns#a6872> <http://example.org/ns#a6872> <http://example.org/ns#a6872> .
+<http://example.org/ns#a6873> <http://example.org/ns#a6873> <http://example.org/ns#a6873> .
+<http://example.org/ns#a6874> <http://example.org/ns#a6874> <http://example.org/ns#a6874> .
+<http://example.org/ns#a6875> <http://example.org/ns#a6875> <http://example.org/ns#a6875> .
+<http://example.org/ns#a6876> <http://example.org/ns#a6876> <http://example.org/ns#a6876> .
+<http://example.org/ns#a6877> <http://example.org/ns#a6877> <http://example.org/ns#a6877> .
+<http://example.org/ns#a6878> <http://example.org/ns#a6878> <http://example.org/ns#a6878> .
+<http://example.org/ns#a6879> <http://example.org/ns#a6879> <http://example.org/ns#a6879> .
+<http://example.org/ns#a6880> <http://example.org/ns#a6880> <http://example.org/ns#a6880> .
+<http://example.org/ns#a6881> <http://example.org/ns#a6881> <http://example.org/ns#a6881> .
+<http://example.org/ns#a6882> <http://example.org/ns#a6882> <http://example.org/ns#a6882> .
+<http://example.org/ns#a6883> <http://example.org/ns#a6883> <http://example.org/ns#a6883> .
+<http://example.org/ns#a6884> <http://example.org/ns#a6884> <http://example.org/ns#a6884> .
+<http://example.org/ns#a6885> <http://example.org/ns#a6885> <http://example.org/ns#a6885> .
+<http://example.org/ns#a6886> <http://example.org/ns#a6886> <http://example.org/ns#a6886> .
+<http://example.org/ns#a6887> <http://example.org/ns#a6887> <http://example.org/ns#a6887> .
+<http://example.org/ns#a6888> <http://example.org/ns#a6888> <http://example.org/ns#a6888> .
+<http://example.org/ns#a6889> <http://example.org/ns#a6889> <http://example.org/ns#a6889> .
+<http://example.org/ns#a6890> <http://example.org/ns#a6890> <http://example.org/ns#a6890> .
+<http://example.org/ns#a6891> <http://example.org/ns#a6891> <http://example.org/ns#a6891> .
+<http://example.org/ns#a6892> <http://example.org/ns#a6892> <http://example.org/ns#a6892> .
+<http://example.org/ns#a6893> <http://example.org/ns#a6893> <http://example.org/ns#a6893> .
+<http://example.org/ns#a6894> <http://example.org/ns#a6894> <http://example.org/ns#a6894> .
+<http://example.org/ns#a6895> <http://example.org/ns#a6895> <http://example.org/ns#a6895> .
+<http://example.org/ns#a6896> <http://example.org/ns#a6896> <http://example.org/ns#a6896> .
+<http://example.org/ns#a6897> <http://example.org/ns#a6897> <http://example.org/ns#a6897> .
+<http://example.org/ns#a6898> <http://example.org/ns#a6898> <http://example.org/ns#a6898> .
+<http://example.org/ns#a6899> <http://example.org/ns#a6899> <http://example.org/ns#a6899> .
+<http://example.org/ns#a6900> <http://example.org/ns#a6900> <http://example.org/ns#a6900> .
+<http://example.org/ns#a6901> <http://example.org/ns#a6901> <http://example.org/ns#a6901> .
+<http://example.org/ns#a6902> <http://example.org/ns#a6902> <http://example.org/ns#a6902> .
+<http://example.org/ns#a6903> <http://example.org/ns#a6903> <http://example.org/ns#a6903> .
+<http://example.org/ns#a6904> <http://example.org/ns#a6904> <http://example.org/ns#a6904> .
+<http://example.org/ns#a6905> <http://example.org/ns#a6905> <http://example.org/ns#a6905> .
+<http://example.org/ns#a6906> <http://example.org/ns#a6906> <http://example.org/ns#a6906> .
+<http://example.org/ns#a6907> <http://example.org/ns#a6907> <http://example.org/ns#a6907> .
+<http://example.org/ns#a6908> <http://example.org/ns#a6908> <http://example.org/ns#a6908> .
+<http://example.org/ns#a6909> <http://example.org/ns#a6909> <http://example.org/ns#a6909> .
+<http://example.org/ns#a6910> <http://example.org/ns#a6910> <http://example.org/ns#a6910> .
+<http://example.org/ns#a6911> <http://example.org/ns#a6911> <http://example.org/ns#a6911> .
+<http://example.org/ns#a6912> <http://example.org/ns#a6912> <http://example.org/ns#a6912> .
+<http://example.org/ns#a6913> <http://example.org/ns#a6913> <http://example.org/ns#a6913> .
+<http://example.org/ns#a6914> <http://example.org/ns#a6914> <http://example.org/ns#a6914> .
+<http://example.org/ns#a6915> <http://example.org/ns#a6915> <http://example.org/ns#a6915> .
+<http://example.org/ns#a6916> <http://example.org/ns#a6916> <http://example.org/ns#a6916> .
+<http://example.org/ns#a6917> <http://example.org/ns#a6917> <http://example.org/ns#a6917> .
+<http://example.org/ns#a6918> <http://example.org/ns#a6918> <http://example.org/ns#a6918> .
+<http://example.org/ns#a6919> <http://example.org/ns#a6919> <http://example.org/ns#a6919> .
+<http://example.org/ns#a6920> <http://example.org/ns#a6920> <http://example.org/ns#a6920> .
+<http://example.org/ns#a6921> <http://example.org/ns#a6921> <http://example.org/ns#a6921> .
+<http://example.org/ns#a6922> <http://example.org/ns#a6922> <http://example.org/ns#a6922> .
+<http://example.org/ns#a6923> <http://example.org/ns#a6923> <http://example.org/ns#a6923> .
+<http://example.org/ns#a6924> <http://example.org/ns#a6924> <http://example.org/ns#a6924> .
+<http://example.org/ns#a6925> <http://example.org/ns#a6925> <http://example.org/ns#a6925> .
+<http://example.org/ns#a6926> <http://example.org/ns#a6926> <http://example.org/ns#a6926> .
+<http://example.org/ns#a6927> <http://example.org/ns#a6927> <http://example.org/ns#a6927> .
+<http://example.org/ns#a6928> <http://example.org/ns#a6928> <http://example.org/ns#a6928> .
+<http://example.org/ns#a6929> <http://example.org/ns#a6929> <http://example.org/ns#a6929> .
+<http://example.org/ns#a6930> <http://example.org/ns#a6930> <http://example.org/ns#a6930> .
+<http://example.org/ns#a6931> <http://example.org/ns#a6931> <http://example.org/ns#a6931> .
+<http://example.org/ns#a6932> <http://example.org/ns#a6932> <http://example.org/ns#a6932> .
+<http://example.org/ns#a6933> <http://example.org/ns#a6933> <http://example.org/ns#a6933> .
+<http://example.org/ns#a6934> <http://example.org/ns#a6934> <http://example.org/ns#a6934> .
+<http://example.org/ns#a6935> <http://example.org/ns#a6935> <http://example.org/ns#a6935> .
+<http://example.org/ns#a6936> <http://example.org/ns#a6936> <http://example.org/ns#a6936> .
+<http://example.org/ns#a6937> <http://example.org/ns#a6937> <http://example.org/ns#a6937> .
+<http://example.org/ns#a6938> <http://example.org/ns#a6938> <http://example.org/ns#a6938> .
+<http://example.org/ns#a6939> <http://example.org/ns#a6939> <http://example.org/ns#a6939> .
+<http://example.org/ns#a6940> <http://example.org/ns#a6940> <http://example.org/ns#a6940> .
+<http://example.org/ns#a6941> <http://example.org/ns#a6941> <http://example.org/ns#a6941> .
+<http://example.org/ns#a6942> <http://example.org/ns#a6942> <http://example.org/ns#a6942> .
+<http://example.org/ns#a6943> <http://example.org/ns#a6943> <http://example.org/ns#a6943> .
+<http://example.org/ns#a6944> <http://example.org/ns#a6944> <http://example.org/ns#a6944> .
+<http://example.org/ns#a6945> <http://example.org/ns#a6945> <http://example.org/ns#a6945> .
+<http://example.org/ns#a6946> <http://example.org/ns#a6946> <http://example.org/ns#a6946> .
+<http://example.org/ns#a6947> <http://example.org/ns#a6947> <http://example.org/ns#a6947> .
+<http://example.org/ns#a6948> <http://example.org/ns#a6948> <http://example.org/ns#a6948> .
+<http://example.org/ns#a6949> <http://example.org/ns#a6949> <http://example.org/ns#a6949> .
+<http://example.org/ns#a6950> <http://example.org/ns#a6950> <http://example.org/ns#a6950> .
+<http://example.org/ns#a6951> <http://example.org/ns#a6951> <http://example.org/ns#a6951> .
+<http://example.org/ns#a6952> <http://example.org/ns#a6952> <http://example.org/ns#a6952> .
+<http://example.org/ns#a6953> <http://example.org/ns#a6953> <http://example.org/ns#a6953> .
+<http://example.org/ns#a6954> <http://example.org/ns#a6954> <http://example.org/ns#a6954> .
+<http://example.org/ns#a6955> <http://example.org/ns#a6955> <http://example.org/ns#a6955> .
+<http://example.org/ns#a6956> <http://example.org/ns#a6956> <http://example.org/ns#a6956> .
+<http://example.org/ns#a6957> <http://example.org/ns#a6957> <http://example.org/ns#a6957> .
+<http://example.org/ns#a6958> <http://example.org/ns#a6958> <http://example.org/ns#a6958> .
+<http://example.org/ns#a6959> <http://example.org/ns#a6959> <http://example.org/ns#a6959> .
+<http://example.org/ns#a6960> <http://example.org/ns#a6960> <http://example.org/ns#a6960> .
+<http://example.org/ns#a6961> <http://example.org/ns#a6961> <http://example.org/ns#a6961> .
+<http://example.org/ns#a6962> <http://example.org/ns#a6962> <http://example.org/ns#a6962> .
+<http://example.org/ns#a6963> <http://example.org/ns#a6963> <http://example.org/ns#a6963> .
+<http://example.org/ns#a6964> <http://example.org/ns#a6964> <http://example.org/ns#a6964> .
+<http://example.org/ns#a6965> <http://example.org/ns#a6965> <http://example.org/ns#a6965> .
+<http://example.org/ns#a6966> <http://example.org/ns#a6966> <http://example.org/ns#a6966> .
+<http://example.org/ns#a6967> <http://example.org/ns#a6967> <http://example.org/ns#a6967> .
+<http://example.org/ns#a6968> <http://example.org/ns#a6968> <http://example.org/ns#a6968> .
+<http://example.org/ns#a6969> <http://example.org/ns#a6969> <http://example.org/ns#a6969> .
+<http://example.org/ns#a6970> <http://example.org/ns#a6970> <http://example.org/ns#a6970> .
+<http://example.org/ns#a6971> <http://example.org/ns#a6971> <http://example.org/ns#a6971> .
+<http://example.org/ns#a6972> <http://example.org/ns#a6972> <http://example.org/ns#a6972> .
+<http://example.org/ns#a6973> <http://example.org/ns#a6973> <http://example.org/ns#a6973> .
+<http://example.org/ns#a6974> <http://example.org/ns#a6974> <http://example.org/ns#a6974> .
+<http://example.org/ns#a6975> <http://example.org/ns#a6975> <http://example.org/ns#a6975> .
+<http://example.org/ns#a6976> <http://example.org/ns#a6976> <http://example.org/ns#a6976> .
+<http://example.org/ns#a6977> <http://example.org/ns#a6977> <http://example.org/ns#a6977> .
+<http://example.org/ns#a6978> <http://example.org/ns#a6978> <http://example.org/ns#a6978> .
+<http://example.org/ns#a6979> <http://example.org/ns#a6979> <http://example.org/ns#a6979> .
+<http://example.org/ns#a6980> <http://example.org/ns#a6980> <http://example.org/ns#a6980> .
+<http://example.org/ns#a6981> <http://example.org/ns#a6981> <http://example.org/ns#a6981> .
+<http://example.org/ns#a6982> <http://example.org/ns#a6982> <http://example.org/ns#a6982> .
+<http://example.org/ns#a6983> <http://example.org/ns#a6983> <http://example.org/ns#a6983> .
+<http://example.org/ns#a6984> <http://example.org/ns#a6984> <http://example.org/ns#a6984> .
+<http://example.org/ns#a6985> <http://example.org/ns#a6985> <http://example.org/ns#a6985> .
+<http://example.org/ns#a6986> <http://example.org/ns#a6986> <http://example.org/ns#a6986> .
+<http://example.org/ns#a6987> <http://example.org/ns#a6987> <http://example.org/ns#a6987> .
+<http://example.org/ns#a6988> <http://example.org/ns#a6988> <http://example.org/ns#a6988> .
+<http://example.org/ns#a6989> <http://example.org/ns#a6989> <http://example.org/ns#a6989> .
+<http://example.org/ns#a6990> <http://example.org/ns#a6990> <http://example.org/ns#a6990> .
+<http://example.org/ns#a6991> <http://example.org/ns#a6991> <http://example.org/ns#a6991> .
+<http://example.org/ns#a6992> <http://example.org/ns#a6992> <http://example.org/ns#a6992> .
+<http://example.org/ns#a6993> <http://example.org/ns#a6993> <http://example.org/ns#a6993> .
+<http://example.org/ns#a6994> <http://example.org/ns#a6994> <http://example.org/ns#a6994> .
+<http://example.org/ns#a6995> <http://example.org/ns#a6995> <http://example.org/ns#a6995> .
+<http://example.org/ns#a6996> <http://example.org/ns#a6996> <http://example.org/ns#a6996> .
+<http://example.org/ns#a6997> <http://example.org/ns#a6997> <http://example.org/ns#a6997> .
+<http://example.org/ns#a6998> <http://example.org/ns#a6998> <http://example.org/ns#a6998> .
+<http://example.org/ns#a6999> <http://example.org/ns#a6999> <http://example.org/ns#a6999> .
+<http://example.org/ns#a7000> <http://example.org/ns#a7000> <http://example.org/ns#a7000> .
+<http://example.org/ns#a7001> <http://example.org/ns#a7001> <http://example.org/ns#a7001> .
+<http://example.org/ns#a7002> <http://example.org/ns#a7002> <http://example.org/ns#a7002> .
+<http://example.org/ns#a7003> <http://example.org/ns#a7003> <http://example.org/ns#a7003> .
+<http://example.org/ns#a7004> <http://example.org/ns#a7004> <http://example.org/ns#a7004> .
+<http://example.org/ns#a7005> <http://example.org/ns#a7005> <http://example.org/ns#a7005> .
+<http://example.org/ns#a7006> <http://example.org/ns#a7006> <http://example.org/ns#a7006> .
+<http://example.org/ns#a7007> <http://example.org/ns#a7007> <http://example.org/ns#a7007> .
+<http://example.org/ns#a7008> <http://example.org/ns#a7008> <http://example.org/ns#a7008> .
+<http://example.org/ns#a7009> <http://example.org/ns#a7009> <http://example.org/ns#a7009> .
+<http://example.org/ns#a7010> <http://example.org/ns#a7010> <http://example.org/ns#a7010> .
+<http://example.org/ns#a7011> <http://example.org/ns#a7011> <http://example.org/ns#a7011> .
+<http://example.org/ns#a7012> <http://example.org/ns#a7012> <http://example.org/ns#a7012> .
+<http://example.org/ns#a7013> <http://example.org/ns#a7013> <http://example.org/ns#a7013> .
+<http://example.org/ns#a7014> <http://example.org/ns#a7014> <http://example.org/ns#a7014> .
+<http://example.org/ns#a7015> <http://example.org/ns#a7015> <http://example.org/ns#a7015> .
+<http://example.org/ns#a7016> <http://example.org/ns#a7016> <http://example.org/ns#a7016> .
+<http://example.org/ns#a7017> <http://example.org/ns#a7017> <http://example.org/ns#a7017> .
+<http://example.org/ns#a7018> <http://example.org/ns#a7018> <http://example.org/ns#a7018> .
+<http://example.org/ns#a7019> <http://example.org/ns#a7019> <http://example.org/ns#a7019> .
+<http://example.org/ns#a7020> <http://example.org/ns#a7020> <http://example.org/ns#a7020> .
+<http://example.org/ns#a7021> <http://example.org/ns#a7021> <http://example.org/ns#a7021> .
+<http://example.org/ns#a7022> <http://example.org/ns#a7022> <http://example.org/ns#a7022> .
+<http://example.org/ns#a7023> <http://example.org/ns#a7023> <http://example.org/ns#a7023> .
+<http://example.org/ns#a7024> <http://example.org/ns#a7024> <http://example.org/ns#a7024> .
+<http://example.org/ns#a7025> <http://example.org/ns#a7025> <http://example.org/ns#a7025> .
+<http://example.org/ns#a7026> <http://example.org/ns#a7026> <http://example.org/ns#a7026> .
+<http://example.org/ns#a7027> <http://example.org/ns#a7027> <http://example.org/ns#a7027> .
+<http://example.org/ns#a7028> <http://example.org/ns#a7028> <http://example.org/ns#a7028> .
+<http://example.org/ns#a7029> <http://example.org/ns#a7029> <http://example.org/ns#a7029> .
+<http://example.org/ns#a7030> <http://example.org/ns#a7030> <http://example.org/ns#a7030> .
+<http://example.org/ns#a7031> <http://example.org/ns#a7031> <http://example.org/ns#a7031> .
+<http://example.org/ns#a7032> <http://example.org/ns#a7032> <http://example.org/ns#a7032> .
+<http://example.org/ns#a7033> <http://example.org/ns#a7033> <http://example.org/ns#a7033> .
+<http://example.org/ns#a7034> <http://example.org/ns#a7034> <http://example.org/ns#a7034> .
+<http://example.org/ns#a7035> <http://example.org/ns#a7035> <http://example.org/ns#a7035> .
+<http://example.org/ns#a7036> <http://example.org/ns#a7036> <http://example.org/ns#a7036> .
+<http://example.org/ns#a7037> <http://example.org/ns#a7037> <http://example.org/ns#a7037> .
+<http://example.org/ns#a7038> <http://example.org/ns#a7038> <http://example.org/ns#a7038> .
+<http://example.org/ns#a7039> <http://example.org/ns#a7039> <http://example.org/ns#a7039> .
+<http://example.org/ns#a7040> <http://example.org/ns#a7040> <http://example.org/ns#a7040> .
+<http://example.org/ns#a7041> <http://example.org/ns#a7041> <http://example.org/ns#a7041> .
+<http://example.org/ns#a7042> <http://example.org/ns#a7042> <http://example.org/ns#a7042> .
+<http://example.org/ns#a7043> <http://example.org/ns#a7043> <http://example.org/ns#a7043> .
+<http://example.org/ns#a7044> <http://example.org/ns#a7044> <http://example.org/ns#a7044> .
+<http://example.org/ns#a7045> <http://example.org/ns#a7045> <http://example.org/ns#a7045> .
+<http://example.org/ns#a7046> <http://example.org/ns#a7046> <http://example.org/ns#a7046> .
+<http://example.org/ns#a7047> <http://example.org/ns#a7047> <http://example.org/ns#a7047> .
+<http://example.org/ns#a7048> <http://example.org/ns#a7048> <http://example.org/ns#a7048> .
+<http://example.org/ns#a7049> <http://example.org/ns#a7049> <http://example.org/ns#a7049> .
+<http://example.org/ns#a7050> <http://example.org/ns#a7050> <http://example.org/ns#a7050> .
+<http://example.org/ns#a7051> <http://example.org/ns#a7051> <http://example.org/ns#a7051> .
+<http://example.org/ns#a7052> <http://example.org/ns#a7052> <http://example.org/ns#a7052> .
+<http://example.org/ns#a7053> <http://example.org/ns#a7053> <http://example.org/ns#a7053> .
+<http://example.org/ns#a7054> <http://example.org/ns#a7054> <http://example.org/ns#a7054> .
+<http://example.org/ns#a7055> <http://example.org/ns#a7055> <http://example.org/ns#a7055> .
+<http://example.org/ns#a7056> <http://example.org/ns#a7056> <http://example.org/ns#a7056> .
+<http://example.org/ns#a7057> <http://example.org/ns#a7057> <http://example.org/ns#a7057> .
+<http://example.org/ns#a7058> <http://example.org/ns#a7058> <http://example.org/ns#a7058> .
+<http://example.org/ns#a7059> <http://example.org/ns#a7059> <http://example.org/ns#a7059> .
+<http://example.org/ns#a7060> <http://example.org/ns#a7060> <http://example.org/ns#a7060> .
+<http://example.org/ns#a7061> <http://example.org/ns#a7061> <http://example.org/ns#a7061> .
+<http://example.org/ns#a7062> <http://example.org/ns#a7062> <http://example.org/ns#a7062> .
+<http://example.org/ns#a7063> <http://example.org/ns#a7063> <http://example.org/ns#a7063> .
+<http://example.org/ns#a7064> <http://example.org/ns#a7064> <http://example.org/ns#a7064> .
+<http://example.org/ns#a7065> <http://example.org/ns#a7065> <http://example.org/ns#a7065> .
+<http://example.org/ns#a7066> <http://example.org/ns#a7066> <http://example.org/ns#a7066> .
+<http://example.org/ns#a7067> <http://example.org/ns#a7067> <http://example.org/ns#a7067> .
+<http://example.org/ns#a7068> <http://example.org/ns#a7068> <http://example.org/ns#a7068> .
+<http://example.org/ns#a7069> <http://example.org/ns#a7069> <http://example.org/ns#a7069> .
+<http://example.org/ns#a7070> <http://example.org/ns#a7070> <http://example.org/ns#a7070> .
+<http://example.org/ns#a7071> <http://example.org/ns#a7071> <http://example.org/ns#a7071> .
+<http://example.org/ns#a7072> <http://example.org/ns#a7072> <http://example.org/ns#a7072> .
+<http://example.org/ns#a7073> <http://example.org/ns#a7073> <http://example.org/ns#a7073> .
+<http://example.org/ns#a7074> <http://example.org/ns#a7074> <http://example.org/ns#a7074> .
+<http://example.org/ns#a7075> <http://example.org/ns#a7075> <http://example.org/ns#a7075> .
+<http://example.org/ns#a7076> <http://example.org/ns#a7076> <http://example.org/ns#a7076> .
+<http://example.org/ns#a7077> <http://example.org/ns#a7077> <http://example.org/ns#a7077> .
+<http://example.org/ns#a7078> <http://example.org/ns#a7078> <http://example.org/ns#a7078> .
+<http://example.org/ns#a7079> <http://example.org/ns#a7079> <http://example.org/ns#a7079> .
+<http://example.org/ns#a7080> <http://example.org/ns#a7080> <http://example.org/ns#a7080> .
+<http://example.org/ns#a7081> <http://example.org/ns#a7081> <http://example.org/ns#a7081> .
+<http://example.org/ns#a7082> <http://example.org/ns#a7082> <http://example.org/ns#a7082> .
+<http://example.org/ns#a7083> <http://example.org/ns#a7083> <http://example.org/ns#a7083> .
+<http://example.org/ns#a7084> <http://example.org/ns#a7084> <http://example.org/ns#a7084> .
+<http://example.org/ns#a7085> <http://example.org/ns#a7085> <http://example.org/ns#a7085> .
+<http://example.org/ns#a7086> <http://example.org/ns#a7086> <http://example.org/ns#a7086> .
+<http://example.org/ns#a7087> <http://example.org/ns#a7087> <http://example.org/ns#a7087> .
+<http://example.org/ns#a7088> <http://example.org/ns#a7088> <http://example.org/ns#a7088> .
+<http://example.org/ns#a7089> <http://example.org/ns#a7089> <http://example.org/ns#a7089> .
+<http://example.org/ns#a7090> <http://example.org/ns#a7090> <http://example.org/ns#a7090> .
+<http://example.org/ns#a7091> <http://example.org/ns#a7091> <http://example.org/ns#a7091> .
+<http://example.org/ns#a7092> <http://example.org/ns#a7092> <http://example.org/ns#a7092> .
+<http://example.org/ns#a7093> <http://example.org/ns#a7093> <http://example.org/ns#a7093> .
+<http://example.org/ns#a7094> <http://example.org/ns#a7094> <http://example.org/ns#a7094> .
+<http://example.org/ns#a7095> <http://example.org/ns#a7095> <http://example.org/ns#a7095> .
+<http://example.org/ns#a7096> <http://example.org/ns#a7096> <http://example.org/ns#a7096> .
+<http://example.org/ns#a7097> <http://example.org/ns#a7097> <http://example.org/ns#a7097> .
+<http://example.org/ns#a7098> <http://example.org/ns#a7098> <http://example.org/ns#a7098> .
+<http://example.org/ns#a7099> <http://example.org/ns#a7099> <http://example.org/ns#a7099> .
+<http://example.org/ns#a7100> <http://example.org/ns#a7100> <http://example.org/ns#a7100> .
+<http://example.org/ns#a7101> <http://example.org/ns#a7101> <http://example.org/ns#a7101> .
+<http://example.org/ns#a7102> <http://example.org/ns#a7102> <http://example.org/ns#a7102> .
+<http://example.org/ns#a7103> <http://example.org/ns#a7103> <http://example.org/ns#a7103> .
+<http://example.org/ns#a7104> <http://example.org/ns#a7104> <http://example.org/ns#a7104> .
+<http://example.org/ns#a7105> <http://example.org/ns#a7105> <http://example.org/ns#a7105> .
+<http://example.org/ns#a7106> <http://example.org/ns#a7106> <http://example.org/ns#a7106> .
+<http://example.org/ns#a7107> <http://example.org/ns#a7107> <http://example.org/ns#a7107> .
+<http://example.org/ns#a7108> <http://example.org/ns#a7108> <http://example.org/ns#a7108> .
+<http://example.org/ns#a7109> <http://example.org/ns#a7109> <http://example.org/ns#a7109> .
+<http://example.org/ns#a7110> <http://example.org/ns#a7110> <http://example.org/ns#a7110> .
+<http://example.org/ns#a7111> <http://example.org/ns#a7111> <http://example.org/ns#a7111> .
+<http://example.org/ns#a7112> <http://example.org/ns#a7112> <http://example.org/ns#a7112> .
+<http://example.org/ns#a7113> <http://example.org/ns#a7113> <http://example.org/ns#a7113> .
+<http://example.org/ns#a7114> <http://example.org/ns#a7114> <http://example.org/ns#a7114> .
+<http://example.org/ns#a7115> <http://example.org/ns#a7115> <http://example.org/ns#a7115> .
+<http://example.org/ns#a7116> <http://example.org/ns#a7116> <http://example.org/ns#a7116> .
+<http://example.org/ns#a7117> <http://example.org/ns#a7117> <http://example.org/ns#a7117> .
+<http://example.org/ns#a7118> <http://example.org/ns#a7118> <http://example.org/ns#a7118> .
+<http://example.org/ns#a7119> <http://example.org/ns#a7119> <http://example.org/ns#a7119> .
+<http://example.org/ns#a7120> <http://example.org/ns#a7120> <http://example.org/ns#a7120> .
+<http://example.org/ns#a7121> <http://example.org/ns#a7121> <http://example.org/ns#a7121> .
+<http://example.org/ns#a7122> <http://example.org/ns#a7122> <http://example.org/ns#a7122> .
+<http://example.org/ns#a7123> <http://example.org/ns#a7123> <http://example.org/ns#a7123> .
+<http://example.org/ns#a7124> <http://example.org/ns#a7124> <http://example.org/ns#a7124> .
+<http://example.org/ns#a7125> <http://example.org/ns#a7125> <http://example.org/ns#a7125> .
+<http://example.org/ns#a7126> <http://example.org/ns#a7126> <http://example.org/ns#a7126> .
+<http://example.org/ns#a7127> <http://example.org/ns#a7127> <http://example.org/ns#a7127> .
+<http://example.org/ns#a7128> <http://example.org/ns#a7128> <http://example.org/ns#a7128> .
+<http://example.org/ns#a7129> <http://example.org/ns#a7129> <http://example.org/ns#a7129> .
+<http://example.org/ns#a7130> <http://example.org/ns#a7130> <http://example.org/ns#a7130> .
+<http://example.org/ns#a7131> <http://example.org/ns#a7131> <http://example.org/ns#a7131> .
+<http://example.org/ns#a7132> <http://example.org/ns#a7132> <http://example.org/ns#a7132> .
+<http://example.org/ns#a7133> <http://example.org/ns#a7133> <http://example.org/ns#a7133> .
+<http://example.org/ns#a7134> <http://example.org/ns#a7134> <http://example.org/ns#a7134> .
+<http://example.org/ns#a7135> <http://example.org/ns#a7135> <http://example.org/ns#a7135> .
+<http://example.org/ns#a7136> <http://example.org/ns#a7136> <http://example.org/ns#a7136> .
+<http://example.org/ns#a7137> <http://example.org/ns#a7137> <http://example.org/ns#a7137> .
+<http://example.org/ns#a7138> <http://example.org/ns#a7138> <http://example.org/ns#a7138> .
+<http://example.org/ns#a7139> <http://example.org/ns#a7139> <http://example.org/ns#a7139> .
+<http://example.org/ns#a7140> <http://example.org/ns#a7140> <http://example.org/ns#a7140> .
+<http://example.org/ns#a7141> <http://example.org/ns#a7141> <http://example.org/ns#a7141> .
+<http://example.org/ns#a7142> <http://example.org/ns#a7142> <http://example.org/ns#a7142> .
+<http://example.org/ns#a7143> <http://example.org/ns#a7143> <http://example.org/ns#a7143> .
+<http://example.org/ns#a7144> <http://example.org/ns#a7144> <http://example.org/ns#a7144> .
+<http://example.org/ns#a7145> <http://example.org/ns#a7145> <http://example.org/ns#a7145> .
+<http://example.org/ns#a7146> <http://example.org/ns#a7146> <http://example.org/ns#a7146> .
+<http://example.org/ns#a7147> <http://example.org/ns#a7147> <http://example.org/ns#a7147> .
+<http://example.org/ns#a7148> <http://example.org/ns#a7148> <http://example.org/ns#a7148> .
+<http://example.org/ns#a7149> <http://example.org/ns#a7149> <http://example.org/ns#a7149> .
+<http://example.org/ns#a7150> <http://example.org/ns#a7150> <http://example.org/ns#a7150> .
+<http://example.org/ns#a7151> <http://example.org/ns#a7151> <http://example.org/ns#a7151> .
+<http://example.org/ns#a7152> <http://example.org/ns#a7152> <http://example.org/ns#a7152> .
+<http://example.org/ns#a7153> <http://example.org/ns#a7153> <http://example.org/ns#a7153> .
+<http://example.org/ns#a7154> <http://example.org/ns#a7154> <http://example.org/ns#a7154> .
+<http://example.org/ns#a7155> <http://example.org/ns#a7155> <http://example.org/ns#a7155> .
+<http://example.org/ns#a7156> <http://example.org/ns#a7156> <http://example.org/ns#a7156> .
+<http://example.org/ns#a7157> <http://example.org/ns#a7157> <http://example.org/ns#a7157> .
+<http://example.org/ns#a7158> <http://example.org/ns#a7158> <http://example.org/ns#a7158> .
+<http://example.org/ns#a7159> <http://example.org/ns#a7159> <http://example.org/ns#a7159> .
+<http://example.org/ns#a7160> <http://example.org/ns#a7160> <http://example.org/ns#a7160> .
+<http://example.org/ns#a7161> <http://example.org/ns#a7161> <http://example.org/ns#a7161> .
+<http://example.org/ns#a7162> <http://example.org/ns#a7162> <http://example.org/ns#a7162> .
+<http://example.org/ns#a7163> <http://example.org/ns#a7163> <http://example.org/ns#a7163> .
+<http://example.org/ns#a7164> <http://example.org/ns#a7164> <http://example.org/ns#a7164> .
+<http://example.org/ns#a7165> <http://example.org/ns#a7165> <http://example.org/ns#a7165> .
+<http://example.org/ns#a7166> <http://example.org/ns#a7166> <http://example.org/ns#a7166> .
+<http://example.org/ns#a7167> <http://example.org/ns#a7167> <http://example.org/ns#a7167> .
+<http://example.org/ns#a7168> <http://example.org/ns#a7168> <http://example.org/ns#a7168> .
+<http://example.org/ns#a7169> <http://example.org/ns#a7169> <http://example.org/ns#a7169> .
+<http://example.org/ns#a7170> <http://example.org/ns#a7170> <http://example.org/ns#a7170> .
+<http://example.org/ns#a7171> <http://example.org/ns#a7171> <http://example.org/ns#a7171> .
+<http://example.org/ns#a7172> <http://example.org/ns#a7172> <http://example.org/ns#a7172> .
+<http://example.org/ns#a7173> <http://example.org/ns#a7173> <http://example.org/ns#a7173> .
+<http://example.org/ns#a7174> <http://example.org/ns#a7174> <http://example.org/ns#a7174> .
+<http://example.org/ns#a7175> <http://example.org/ns#a7175> <http://example.org/ns#a7175> .
+<http://example.org/ns#a7176> <http://example.org/ns#a7176> <http://example.org/ns#a7176> .
+<http://example.org/ns#a7177> <http://example.org/ns#a7177> <http://example.org/ns#a7177> .
+<http://example.org/ns#a7178> <http://example.org/ns#a7178> <http://example.org/ns#a7178> .
+<http://example.org/ns#a7179> <http://example.org/ns#a7179> <http://example.org/ns#a7179> .
+<http://example.org/ns#a7180> <http://example.org/ns#a7180> <http://example.org/ns#a7180> .
+<http://example.org/ns#a7181> <http://example.org/ns#a7181> <http://example.org/ns#a7181> .
+<http://example.org/ns#a7182> <http://example.org/ns#a7182> <http://example.org/ns#a7182> .
+<http://example.org/ns#a7183> <http://example.org/ns#a7183> <http://example.org/ns#a7183> .
+<http://example.org/ns#a7184> <http://example.org/ns#a7184> <http://example.org/ns#a7184> .
+<http://example.org/ns#a7185> <http://example.org/ns#a7185> <http://example.org/ns#a7185> .
+<http://example.org/ns#a7186> <http://example.org/ns#a7186> <http://example.org/ns#a7186> .
+<http://example.org/ns#a7187> <http://example.org/ns#a7187> <http://example.org/ns#a7187> .
+<http://example.org/ns#a7188> <http://example.org/ns#a7188> <http://example.org/ns#a7188> .
+<http://example.org/ns#a7189> <http://example.org/ns#a7189> <http://example.org/ns#a7189> .
+<http://example.org/ns#a7190> <http://example.org/ns#a7190> <http://example.org/ns#a7190> .
+<http://example.org/ns#a7191> <http://example.org/ns#a7191> <http://example.org/ns#a7191> .
+<http://example.org/ns#a7192> <http://example.org/ns#a7192> <http://example.org/ns#a7192> .
+<http://example.org/ns#a7193> <http://example.org/ns#a7193> <http://example.org/ns#a7193> .
+<http://example.org/ns#a7194> <http://example.org/ns#a7194> <http://example.org/ns#a7194> .
+<http://example.org/ns#a7195> <http://example.org/ns#a7195> <http://example.org/ns#a7195> .
+<http://example.org/ns#a7196> <http://example.org/ns#a7196> <http://example.org/ns#a7196> .
+<http://example.org/ns#a7197> <http://example.org/ns#a7197> <http://example.org/ns#a7197> .
+<http://example.org/ns#a7198> <http://example.org/ns#a7198> <http://example.org/ns#a7198> .
+<http://example.org/ns#a7199> <http://example.org/ns#a7199> <http://example.org/ns#a7199> .
+<http://example.org/ns#a7200> <http://example.org/ns#a7200> <http://example.org/ns#a7200> .
+<http://example.org/ns#a7201> <http://example.org/ns#a7201> <http://example.org/ns#a7201> .
+<http://example.org/ns#a7202> <http://example.org/ns#a7202> <http://example.org/ns#a7202> .
+<http://example.org/ns#a7203> <http://example.org/ns#a7203> <http://example.org/ns#a7203> .
+<http://example.org/ns#a7204> <http://example.org/ns#a7204> <http://example.org/ns#a7204> .
+<http://example.org/ns#a7205> <http://example.org/ns#a7205> <http://example.org/ns#a7205> .
+<http://example.org/ns#a7206> <http://example.org/ns#a7206> <http://example.org/ns#a7206> .
+<http://example.org/ns#a7207> <http://example.org/ns#a7207> <http://example.org/ns#a7207> .
+<http://example.org/ns#a7208> <http://example.org/ns#a7208> <http://example.org/ns#a7208> .
+<http://example.org/ns#a7209> <http://example.org/ns#a7209> <http://example.org/ns#a7209> .
+<http://example.org/ns#a7210> <http://example.org/ns#a7210> <http://example.org/ns#a7210> .
+<http://example.org/ns#a7211> <http://example.org/ns#a7211> <http://example.org/ns#a7211> .
+<http://example.org/ns#a7212> <http://example.org/ns#a7212> <http://example.org/ns#a7212> .
+<http://example.org/ns#a7213> <http://example.org/ns#a7213> <http://example.org/ns#a7213> .
+<http://example.org/ns#a7214> <http://example.org/ns#a7214> <http://example.org/ns#a7214> .
+<http://example.org/ns#a7215> <http://example.org/ns#a7215> <http://example.org/ns#a7215> .
+<http://example.org/ns#a7216> <http://example.org/ns#a7216> <http://example.org/ns#a7216> .
+<http://example.org/ns#a7217> <http://example.org/ns#a7217> <http://example.org/ns#a7217> .
+<http://example.org/ns#a7218> <http://example.org/ns#a7218> <http://example.org/ns#a7218> .
+<http://example.org/ns#a7219> <http://example.org/ns#a7219> <http://example.org/ns#a7219> .
+<http://example.org/ns#a7220> <http://example.org/ns#a7220> <http://example.org/ns#a7220> .
+<http://example.org/ns#a7221> <http://example.org/ns#a7221> <http://example.org/ns#a7221> .
+<http://example.org/ns#a7222> <http://example.org/ns#a7222> <http://example.org/ns#a7222> .
+<http://example.org/ns#a7223> <http://example.org/ns#a7223> <http://example.org/ns#a7223> .
+<http://example.org/ns#a7224> <http://example.org/ns#a7224> <http://example.org/ns#a7224> .
+<http://example.org/ns#a7225> <http://example.org/ns#a7225> <http://example.org/ns#a7225> .
+<http://example.org/ns#a7226> <http://example.org/ns#a7226> <http://example.org/ns#a7226> .
+<http://example.org/ns#a7227> <http://example.org/ns#a7227> <http://example.org/ns#a7227> .
+<http://example.org/ns#a7228> <http://example.org/ns#a7228> <http://example.org/ns#a7228> .
+<http://example.org/ns#a7229> <http://example.org/ns#a7229> <http://example.org/ns#a7229> .
+<http://example.org/ns#a7230> <http://example.org/ns#a7230> <http://example.org/ns#a7230> .
+<http://example.org/ns#a7231> <http://example.org/ns#a7231> <http://example.org/ns#a7231> .
+<http://example.org/ns#a7232> <http://example.org/ns#a7232> <http://example.org/ns#a7232> .
+<http://example.org/ns#a7233> <http://example.org/ns#a7233> <http://example.org/ns#a7233> .
+<http://example.org/ns#a7234> <http://example.org/ns#a7234> <http://example.org/ns#a7234> .
+<http://example.org/ns#a7235> <http://example.org/ns#a7235> <http://example.org/ns#a7235> .
+<http://example.org/ns#a7236> <http://example.org/ns#a7236> <http://example.org/ns#a7236> .
+<http://example.org/ns#a7237> <http://example.org/ns#a7237> <http://example.org/ns#a7237> .
+<http://example.org/ns#a7238> <http://example.org/ns#a7238> <http://example.org/ns#a7238> .
+<http://example.org/ns#a7239> <http://example.org/ns#a7239> <http://example.org/ns#a7239> .
+<http://example.org/ns#a7240> <http://example.org/ns#a7240> <http://example.org/ns#a7240> .
+<http://example.org/ns#a7241> <http://example.org/ns#a7241> <http://example.org/ns#a7241> .
+<http://example.org/ns#a7242> <http://example.org/ns#a7242> <http://example.org/ns#a7242> .
+<http://example.org/ns#a7243> <http://example.org/ns#a7243> <http://example.org/ns#a7243> .
+<http://example.org/ns#a7244> <http://example.org/ns#a7244> <http://example.org/ns#a7244> .
+<http://example.org/ns#a7245> <http://example.org/ns#a7245> <http://example.org/ns#a7245> .
+<http://example.org/ns#a7246> <http://example.org/ns#a7246> <http://example.org/ns#a7246> .
+<http://example.org/ns#a7247> <http://example.org/ns#a7247> <http://example.org/ns#a7247> .
+<http://example.org/ns#a7248> <http://example.org/ns#a7248> <http://example.org/ns#a7248> .
+<http://example.org/ns#a7249> <http://example.org/ns#a7249> <http://example.org/ns#a7249> .
+<http://example.org/ns#a7250> <http://example.org/ns#a7250> <http://example.org/ns#a7250> .
+<http://example.org/ns#a7251> <http://example.org/ns#a7251> <http://example.org/ns#a7251> .
+<http://example.org/ns#a7252> <http://example.org/ns#a7252> <http://example.org/ns#a7252> .
+<http://example.org/ns#a7253> <http://example.org/ns#a7253> <http://example.org/ns#a7253> .
+<http://example.org/ns#a7254> <http://example.org/ns#a7254> <http://example.org/ns#a7254> .
+<http://example.org/ns#a7255> <http://example.org/ns#a7255> <http://example.org/ns#a7255> .
+<http://example.org/ns#a7256> <http://example.org/ns#a7256> <http://example.org/ns#a7256> .
+<http://example.org/ns#a7257> <http://example.org/ns#a7257> <http://example.org/ns#a7257> .
+<http://example.org/ns#a7258> <http://example.org/ns#a7258> <http://example.org/ns#a7258> .
+<http://example.org/ns#a7259> <http://example.org/ns#a7259> <http://example.org/ns#a7259> .
+<http://example.org/ns#a7260> <http://example.org/ns#a7260> <http://example.org/ns#a7260> .
+<http://example.org/ns#a7261> <http://example.org/ns#a7261> <http://example.org/ns#a7261> .
+<http://example.org/ns#a7262> <http://example.org/ns#a7262> <http://example.org/ns#a7262> .
+<http://example.org/ns#a7263> <http://example.org/ns#a7263> <http://example.org/ns#a7263> .
+<http://example.org/ns#a7264> <http://example.org/ns#a7264> <http://example.org/ns#a7264> .
+<http://example.org/ns#a7265> <http://example.org/ns#a7265> <http://example.org/ns#a7265> .
+<http://example.org/ns#a7266> <http://example.org/ns#a7266> <http://example.org/ns#a7266> .
+<http://example.org/ns#a7267> <http://example.org/ns#a7267> <http://example.org/ns#a7267> .
+<http://example.org/ns#a7268> <http://example.org/ns#a7268> <http://example.org/ns#a7268> .
+<http://example.org/ns#a7269> <http://example.org/ns#a7269> <http://example.org/ns#a7269> .
+<http://example.org/ns#a7270> <http://example.org/ns#a7270> <http://example.org/ns#a7270> .
+<http://example.org/ns#a7271> <http://example.org/ns#a7271> <http://example.org/ns#a7271> .
+<http://example.org/ns#a7272> <http://example.org/ns#a7272> <http://example.org/ns#a7272> .
+<http://example.org/ns#a7273> <http://example.org/ns#a7273> <http://example.org/ns#a7273> .
+<http://example.org/ns#a7274> <http://example.org/ns#a7274> <http://example.org/ns#a7274> .
+<http://example.org/ns#a7275> <http://example.org/ns#a7275> <http://example.org/ns#a7275> .
+<http://example.org/ns#a7276> <http://example.org/ns#a7276> <http://example.org/ns#a7276> .
+<http://example.org/ns#a7277> <http://example.org/ns#a7277> <http://example.org/ns#a7277> .
+<http://example.org/ns#a7278> <http://example.org/ns#a7278> <http://example.org/ns#a7278> .
+<http://example.org/ns#a7279> <http://example.org/ns#a7279> <http://example.org/ns#a7279> .
+<http://example.org/ns#a7280> <http://example.org/ns#a7280> <http://example.org/ns#a7280> .
+<http://example.org/ns#a7281> <http://example.org/ns#a7281> <http://example.org/ns#a7281> .
+<http://example.org/ns#a7282> <http://example.org/ns#a7282> <http://example.org/ns#a7282> .
+<http://example.org/ns#a7283> <http://example.org/ns#a7283> <http://example.org/ns#a7283> .
+<http://example.org/ns#a7284> <http://example.org/ns#a7284> <http://example.org/ns#a7284> .
+<http://example.org/ns#a7285> <http://example.org/ns#a7285> <http://example.org/ns#a7285> .
+<http://example.org/ns#a7286> <http://example.org/ns#a7286> <http://example.org/ns#a7286> .
+<http://example.org/ns#a7287> <http://example.org/ns#a7287> <http://example.org/ns#a7287> .
+<http://example.org/ns#a7288> <http://example.org/ns#a7288> <http://example.org/ns#a7288> .
+<http://example.org/ns#a7289> <http://example.org/ns#a7289> <http://example.org/ns#a7289> .
+<http://example.org/ns#a7290> <http://example.org/ns#a7290> <http://example.org/ns#a7290> .
+<http://example.org/ns#a7291> <http://example.org/ns#a7291> <http://example.org/ns#a7291> .
+<http://example.org/ns#a7292> <http://example.org/ns#a7292> <http://example.org/ns#a7292> .
+<http://example.org/ns#a7293> <http://example.org/ns#a7293> <http://example.org/ns#a7293> .
+<http://example.org/ns#a7294> <http://example.org/ns#a7294> <http://example.org/ns#a7294> .
+<http://example.org/ns#a7295> <http://example.org/ns#a7295> <http://example.org/ns#a7295> .
+<http://example.org/ns#a7296> <http://example.org/ns#a7296> <http://example.org/ns#a7296> .
+<http://example.org/ns#a7297> <http://example.org/ns#a7297> <http://example.org/ns#a7297> .
+<http://example.org/ns#a7298> <http://example.org/ns#a7298> <http://example.org/ns#a7298> .
+<http://example.org/ns#a7299> <http://example.org/ns#a7299> <http://example.org/ns#a7299> .
+<http://example.org/ns#a7300> <http://example.org/ns#a7300> <http://example.org/ns#a7300> .
+<http://example.org/ns#a7301> <http://example.org/ns#a7301> <http://example.org/ns#a7301> .
+<http://example.org/ns#a7302> <http://example.org/ns#a7302> <http://example.org/ns#a7302> .
+<http://example.org/ns#a7303> <http://example.org/ns#a7303> <http://example.org/ns#a7303> .
+<http://example.org/ns#a7304> <http://example.org/ns#a7304> <http://example.org/ns#a7304> .
+<http://example.org/ns#a7305> <http://example.org/ns#a7305> <http://example.org/ns#a7305> .
+<http://example.org/ns#a7306> <http://example.org/ns#a7306> <http://example.org/ns#a7306> .
+<http://example.org/ns#a7307> <http://example.org/ns#a7307> <http://example.org/ns#a7307> .
+<http://example.org/ns#a7308> <http://example.org/ns#a7308> <http://example.org/ns#a7308> .
+<http://example.org/ns#a7309> <http://example.org/ns#a7309> <http://example.org/ns#a7309> .
+<http://example.org/ns#a7310> <http://example.org/ns#a7310> <http://example.org/ns#a7310> .
+<http://example.org/ns#a7311> <http://example.org/ns#a7311> <http://example.org/ns#a7311> .
+<http://example.org/ns#a7312> <http://example.org/ns#a7312> <http://example.org/ns#a7312> .
+<http://example.org/ns#a7313> <http://example.org/ns#a7313> <http://example.org/ns#a7313> .
+<http://example.org/ns#a7314> <http://example.org/ns#a7314> <http://example.org/ns#a7314> .
+<http://example.org/ns#a7315> <http://example.org/ns#a7315> <http://example.org/ns#a7315> .
+<http://example.org/ns#a7316> <http://example.org/ns#a7316> <http://example.org/ns#a7316> .
+<http://example.org/ns#a7317> <http://example.org/ns#a7317> <http://example.org/ns#a7317> .
+<http://example.org/ns#a7318> <http://example.org/ns#a7318> <http://example.org/ns#a7318> .
+<http://example.org/ns#a7319> <http://example.org/ns#a7319> <http://example.org/ns#a7319> .
+<http://example.org/ns#a7320> <http://example.org/ns#a7320> <http://example.org/ns#a7320> .
+<http://example.org/ns#a7321> <http://example.org/ns#a7321> <http://example.org/ns#a7321> .
+<http://example.org/ns#a7322> <http://example.org/ns#a7322> <http://example.org/ns#a7322> .
+<http://example.org/ns#a7323> <http://example.org/ns#a7323> <http://example.org/ns#a7323> .
+<http://example.org/ns#a7324> <http://example.org/ns#a7324> <http://example.org/ns#a7324> .
+<http://example.org/ns#a7325> <http://example.org/ns#a7325> <http://example.org/ns#a7325> .
+<http://example.org/ns#a7326> <http://example.org/ns#a7326> <http://example.org/ns#a7326> .
+<http://example.org/ns#a7327> <http://example.org/ns#a7327> <http://example.org/ns#a7327> .
+<http://example.org/ns#a7328> <http://example.org/ns#a7328> <http://example.org/ns#a7328> .
+<http://example.org/ns#a7329> <http://example.org/ns#a7329> <http://example.org/ns#a7329> .
+<http://example.org/ns#a7330> <http://example.org/ns#a7330> <http://example.org/ns#a7330> .
+<http://example.org/ns#a7331> <http://example.org/ns#a7331> <http://example.org/ns#a7331> .
+<http://example.org/ns#a7332> <http://example.org/ns#a7332> <http://example.org/ns#a7332> .
+<http://example.org/ns#a7333> <http://example.org/ns#a7333> <http://example.org/ns#a7333> .
+<http://example.org/ns#a7334> <http://example.org/ns#a7334> <http://example.org/ns#a7334> .
+<http://example.org/ns#a7335> <http://example.org/ns#a7335> <http://example.org/ns#a7335> .
+<http://example.org/ns#a7336> <http://example.org/ns#a7336> <http://example.org/ns#a7336> .
+<http://example.org/ns#a7337> <http://example.org/ns#a7337> <http://example.org/ns#a7337> .
+<http://example.org/ns#a7338> <http://example.org/ns#a7338> <http://example.org/ns#a7338> .
+<http://example.org/ns#a7339> <http://example.org/ns#a7339> <http://example.org/ns#a7339> .
+<http://example.org/ns#a7340> <http://example.org/ns#a7340> <http://example.org/ns#a7340> .
+<http://example.org/ns#a7341> <http://example.org/ns#a7341> <http://example.org/ns#a7341> .
+<http://example.org/ns#a7342> <http://example.org/ns#a7342> <http://example.org/ns#a7342> .
+<http://example.org/ns#a7343> <http://example.org/ns#a7343> <http://example.org/ns#a7343> .
+<http://example.org/ns#a7344> <http://example.org/ns#a7344> <http://example.org/ns#a7344> .
+<http://example.org/ns#a7345> <http://example.org/ns#a7345> <http://example.org/ns#a7345> .
+<http://example.org/ns#a7346> <http://example.org/ns#a7346> <http://example.org/ns#a7346> .
+<http://example.org/ns#a7347> <http://example.org/ns#a7347> <http://example.org/ns#a7347> .
+<http://example.org/ns#a7348> <http://example.org/ns#a7348> <http://example.org/ns#a7348> .
+<http://example.org/ns#a7349> <http://example.org/ns#a7349> <http://example.org/ns#a7349> .
+<http://example.org/ns#a7350> <http://example.org/ns#a7350> <http://example.org/ns#a7350> .
+<http://example.org/ns#a7351> <http://example.org/ns#a7351> <http://example.org/ns#a7351> .
+<http://example.org/ns#a7352> <http://example.org/ns#a7352> <http://example.org/ns#a7352> .
+<http://example.org/ns#a7353> <http://example.org/ns#a7353> <http://example.org/ns#a7353> .
+<http://example.org/ns#a7354> <http://example.org/ns#a7354> <http://example.org/ns#a7354> .
+<http://example.org/ns#a7355> <http://example.org/ns#a7355> <http://example.org/ns#a7355> .
+<http://example.org/ns#a7356> <http://example.org/ns#a7356> <http://example.org/ns#a7356> .
+<http://example.org/ns#a7357> <http://example.org/ns#a7357> <http://example.org/ns#a7357> .
+<http://example.org/ns#a7358> <http://example.org/ns#a7358> <http://example.org/ns#a7358> .
+<http://example.org/ns#a7359> <http://example.org/ns#a7359> <http://example.org/ns#a7359> .
+<http://example.org/ns#a7360> <http://example.org/ns#a7360> <http://example.org/ns#a7360> .
+<http://example.org/ns#a7361> <http://example.org/ns#a7361> <http://example.org/ns#a7361> .
+<http://example.org/ns#a7362> <http://example.org/ns#a7362> <http://example.org/ns#a7362> .
+<http://example.org/ns#a7363> <http://example.org/ns#a7363> <http://example.org/ns#a7363> .
+<http://example.org/ns#a7364> <http://example.org/ns#a7364> <http://example.org/ns#a7364> .
+<http://example.org/ns#a7365> <http://example.org/ns#a7365> <http://example.org/ns#a7365> .
+<http://example.org/ns#a7366> <http://example.org/ns#a7366> <http://example.org/ns#a7366> .
+<http://example.org/ns#a7367> <http://example.org/ns#a7367> <http://example.org/ns#a7367> .
+<http://example.org/ns#a7368> <http://example.org/ns#a7368> <http://example.org/ns#a7368> .
+<http://example.org/ns#a7369> <http://example.org/ns#a7369> <http://example.org/ns#a7369> .
+<http://example.org/ns#a7370> <http://example.org/ns#a7370> <http://example.org/ns#a7370> .
+<http://example.org/ns#a7371> <http://example.org/ns#a7371> <http://example.org/ns#a7371> .
+<http://example.org/ns#a7372> <http://example.org/ns#a7372> <http://example.org/ns#a7372> .
+<http://example.org/ns#a7373> <http://example.org/ns#a7373> <http://example.org/ns#a7373> .
+<http://example.org/ns#a7374> <http://example.org/ns#a7374> <http://example.org/ns#a7374> .
+<http://example.org/ns#a7375> <http://example.org/ns#a7375> <http://example.org/ns#a7375> .
+<http://example.org/ns#a7376> <http://example.org/ns#a7376> <http://example.org/ns#a7376> .
+<http://example.org/ns#a7377> <http://example.org/ns#a7377> <http://example.org/ns#a7377> .
+<http://example.org/ns#a7378> <http://example.org/ns#a7378> <http://example.org/ns#a7378> .
+<http://example.org/ns#a7379> <http://example.org/ns#a7379> <http://example.org/ns#a7379> .
+<http://example.org/ns#a7380> <http://example.org/ns#a7380> <http://example.org/ns#a7380> .
+<http://example.org/ns#a7381> <http://example.org/ns#a7381> <http://example.org/ns#a7381> .
+<http://example.org/ns#a7382> <http://example.org/ns#a7382> <http://example.org/ns#a7382> .
+<http://example.org/ns#a7383> <http://example.org/ns#a7383> <http://example.org/ns#a7383> .
+<http://example.org/ns#a7384> <http://example.org/ns#a7384> <http://example.org/ns#a7384> .
+<http://example.org/ns#a7385> <http://example.org/ns#a7385> <http://example.org/ns#a7385> .
+<http://example.org/ns#a7386> <http://example.org/ns#a7386> <http://example.org/ns#a7386> .
+<http://example.org/ns#a7387> <http://example.org/ns#a7387> <http://example.org/ns#a7387> .
+<http://example.org/ns#a7388> <http://example.org/ns#a7388> <http://example.org/ns#a7388> .
+<http://example.org/ns#a7389> <http://example.org/ns#a7389> <http://example.org/ns#a7389> .
+<http://example.org/ns#a7390> <http://example.org/ns#a7390> <http://example.org/ns#a7390> .
+<http://example.org/ns#a7391> <http://example.org/ns#a7391> <http://example.org/ns#a7391> .
+<http://example.org/ns#a7392> <http://example.org/ns#a7392> <http://example.org/ns#a7392> .
+<http://example.org/ns#a7393> <http://example.org/ns#a7393> <http://example.org/ns#a7393> .
+<http://example.org/ns#a7394> <http://example.org/ns#a7394> <http://example.org/ns#a7394> .
+<http://example.org/ns#a7395> <http://example.org/ns#a7395> <http://example.org/ns#a7395> .
+<http://example.org/ns#a7396> <http://example.org/ns#a7396> <http://example.org/ns#a7396> .
+<http://example.org/ns#a7397> <http://example.org/ns#a7397> <http://example.org/ns#a7397> .
+<http://example.org/ns#a7398> <http://example.org/ns#a7398> <http://example.org/ns#a7398> .
+<http://example.org/ns#a7399> <http://example.org/ns#a7399> <http://example.org/ns#a7399> .
+<http://example.org/ns#a7400> <http://example.org/ns#a7400> <http://example.org/ns#a7400> .
+<http://example.org/ns#a7401> <http://example.org/ns#a7401> <http://example.org/ns#a7401> .
+<http://example.org/ns#a7402> <http://example.org/ns#a7402> <http://example.org/ns#a7402> .
+<http://example.org/ns#a7403> <http://example.org/ns#a7403> <http://example.org/ns#a7403> .
+<http://example.org/ns#a7404> <http://example.org/ns#a7404> <http://example.org/ns#a7404> .
+<http://example.org/ns#a7405> <http://example.org/ns#a7405> <http://example.org/ns#a7405> .
+<http://example.org/ns#a7406> <http://example.org/ns#a7406> <http://example.org/ns#a7406> .
+<http://example.org/ns#a7407> <http://example.org/ns#a7407> <http://example.org/ns#a7407> .
+<http://example.org/ns#a7408> <http://example.org/ns#a7408> <http://example.org/ns#a7408> .
+<http://example.org/ns#a7409> <http://example.org/ns#a7409> <http://example.org/ns#a7409> .
+<http://example.org/ns#a7410> <http://example.org/ns#a7410> <http://example.org/ns#a7410> .
+<http://example.org/ns#a7411> <http://example.org/ns#a7411> <http://example.org/ns#a7411> .
+<http://example.org/ns#a7412> <http://example.org/ns#a7412> <http://example.org/ns#a7412> .
+<http://example.org/ns#a7413> <http://example.org/ns#a7413> <http://example.org/ns#a7413> .
+<http://example.org/ns#a7414> <http://example.org/ns#a7414> <http://example.org/ns#a7414> .
+<http://example.org/ns#a7415> <http://example.org/ns#a7415> <http://example.org/ns#a7415> .
+<http://example.org/ns#a7416> <http://example.org/ns#a7416> <http://example.org/ns#a7416> .
+<http://example.org/ns#a7417> <http://example.org/ns#a7417> <http://example.org/ns#a7417> .
+<http://example.org/ns#a7418> <http://example.org/ns#a7418> <http://example.org/ns#a7418> .
+<http://example.org/ns#a7419> <http://example.org/ns#a7419> <http://example.org/ns#a7419> .
+<http://example.org/ns#a7420> <http://example.org/ns#a7420> <http://example.org/ns#a7420> .
+<http://example.org/ns#a7421> <http://example.org/ns#a7421> <http://example.org/ns#a7421> .
+<http://example.org/ns#a7422> <http://example.org/ns#a7422> <http://example.org/ns#a7422> .
+<http://example.org/ns#a7423> <http://example.org/ns#a7423> <http://example.org/ns#a7423> .
+<http://example.org/ns#a7424> <http://example.org/ns#a7424> <http://example.org/ns#a7424> .
+<http://example.org/ns#a7425> <http://example.org/ns#a7425> <http://example.org/ns#a7425> .
+<http://example.org/ns#a7426> <http://example.org/ns#a7426> <http://example.org/ns#a7426> .
+<http://example.org/ns#a7427> <http://example.org/ns#a7427> <http://example.org/ns#a7427> .
+<http://example.org/ns#a7428> <http://example.org/ns#a7428> <http://example.org/ns#a7428> .
+<http://example.org/ns#a7429> <http://example.org/ns#a7429> <http://example.org/ns#a7429> .
+<http://example.org/ns#a7430> <http://example.org/ns#a7430> <http://example.org/ns#a7430> .
+<http://example.org/ns#a7431> <http://example.org/ns#a7431> <http://example.org/ns#a7431> .
+<http://example.org/ns#a7432> <http://example.org/ns#a7432> <http://example.org/ns#a7432> .
+<http://example.org/ns#a7433> <http://example.org/ns#a7433> <http://example.org/ns#a7433> .
+<http://example.org/ns#a7434> <http://example.org/ns#a7434> <http://example.org/ns#a7434> .
+<http://example.org/ns#a7435> <http://example.org/ns#a7435> <http://example.org/ns#a7435> .
+<http://example.org/ns#a7436> <http://example.org/ns#a7436> <http://example.org/ns#a7436> .
+<http://example.org/ns#a7437> <http://example.org/ns#a7437> <http://example.org/ns#a7437> .
+<http://example.org/ns#a7438> <http://example.org/ns#a7438> <http://example.org/ns#a7438> .
+<http://example.org/ns#a7439> <http://example.org/ns#a7439> <http://example.org/ns#a7439> .
+<http://example.org/ns#a7440> <http://example.org/ns#a7440> <http://example.org/ns#a7440> .
+<http://example.org/ns#a7441> <http://example.org/ns#a7441> <http://example.org/ns#a7441> .
+<http://example.org/ns#a7442> <http://example.org/ns#a7442> <http://example.org/ns#a7442> .
+<http://example.org/ns#a7443> <http://example.org/ns#a7443> <http://example.org/ns#a7443> .
+<http://example.org/ns#a7444> <http://example.org/ns#a7444> <http://example.org/ns#a7444> .
+<http://example.org/ns#a7445> <http://example.org/ns#a7445> <http://example.org/ns#a7445> .
+<http://example.org/ns#a7446> <http://example.org/ns#a7446> <http://example.org/ns#a7446> .
+<http://example.org/ns#a7447> <http://example.org/ns#a7447> <http://example.org/ns#a7447> .
+<http://example.org/ns#a7448> <http://example.org/ns#a7448> <http://example.org/ns#a7448> .
+<http://example.org/ns#a7449> <http://example.org/ns#a7449> <http://example.org/ns#a7449> .
+<http://example.org/ns#a7450> <http://example.org/ns#a7450> <http://example.org/ns#a7450> .
+<http://example.org/ns#a7451> <http://example.org/ns#a7451> <http://example.org/ns#a7451> .
+<http://example.org/ns#a7452> <http://example.org/ns#a7452> <http://example.org/ns#a7452> .
+<http://example.org/ns#a7453> <http://example.org/ns#a7453> <http://example.org/ns#a7453> .
+<http://example.org/ns#a7454> <http://example.org/ns#a7454> <http://example.org/ns#a7454> .
+<http://example.org/ns#a7455> <http://example.org/ns#a7455> <http://example.org/ns#a7455> .
+<http://example.org/ns#a7456> <http://example.org/ns#a7456> <http://example.org/ns#a7456> .
+<http://example.org/ns#a7457> <http://example.org/ns#a7457> <http://example.org/ns#a7457> .
+<http://example.org/ns#a7458> <http://example.org/ns#a7458> <http://example.org/ns#a7458> .
+<http://example.org/ns#a7459> <http://example.org/ns#a7459> <http://example.org/ns#a7459> .
+<http://example.org/ns#a7460> <http://example.org/ns#a7460> <http://example.org/ns#a7460> .
+<http://example.org/ns#a7461> <http://example.org/ns#a7461> <http://example.org/ns#a7461> .
+<http://example.org/ns#a7462> <http://example.org/ns#a7462> <http://example.org/ns#a7462> .
+<http://example.org/ns#a7463> <http://example.org/ns#a7463> <http://example.org/ns#a7463> .
+<http://example.org/ns#a7464> <http://example.org/ns#a7464> <http://example.org/ns#a7464> .
+<http://example.org/ns#a7465> <http://example.org/ns#a7465> <http://example.org/ns#a7465> .
+<http://example.org/ns#a7466> <http://example.org/ns#a7466> <http://example.org/ns#a7466> .
+<http://example.org/ns#a7467> <http://example.org/ns#a7467> <http://example.org/ns#a7467> .
+<http://example.org/ns#a7468> <http://example.org/ns#a7468> <http://example.org/ns#a7468> .
+<http://example.org/ns#a7469> <http://example.org/ns#a7469> <http://example.org/ns#a7469> .
+<http://example.org/ns#a7470> <http://example.org/ns#a7470> <http://example.org/ns#a7470> .
+<http://example.org/ns#a7471> <http://example.org/ns#a7471> <http://example.org/ns#a7471> .
+<http://example.org/ns#a7472> <http://example.org/ns#a7472> <http://example.org/ns#a7472> .
+<http://example.org/ns#a7473> <http://example.org/ns#a7473> <http://example.org/ns#a7473> .
+<http://example.org/ns#a7474> <http://example.org/ns#a7474> <http://example.org/ns#a7474> .
+<http://example.org/ns#a7475> <http://example.org/ns#a7475> <http://example.org/ns#a7475> .
+<http://example.org/ns#a7476> <http://example.org/ns#a7476> <http://example.org/ns#a7476> .
+<http://example.org/ns#a7477> <http://example.org/ns#a7477> <http://example.org/ns#a7477> .
+<http://example.org/ns#a7478> <http://example.org/ns#a7478> <http://example.org/ns#a7478> .
+<http://example.org/ns#a7479> <http://example.org/ns#a7479> <http://example.org/ns#a7479> .
+<http://example.org/ns#a7480> <http://example.org/ns#a7480> <http://example.org/ns#a7480> .
+<http://example.org/ns#a7481> <http://example.org/ns#a7481> <http://example.org/ns#a7481> .
+<http://example.org/ns#a7482> <http://example.org/ns#a7482> <http://example.org/ns#a7482> .
+<http://example.org/ns#a7483> <http://example.org/ns#a7483> <http://example.org/ns#a7483> .
+<http://example.org/ns#a7484> <http://example.org/ns#a7484> <http://example.org/ns#a7484> .
+<http://example.org/ns#a7485> <http://example.org/ns#a7485> <http://example.org/ns#a7485> .
+<http://example.org/ns#a7486> <http://example.org/ns#a7486> <http://example.org/ns#a7486> .
+<http://example.org/ns#a7487> <http://example.org/ns#a7487> <http://example.org/ns#a7487> .
+<http://example.org/ns#a7488> <http://example.org/ns#a7488> <http://example.org/ns#a7488> .
+<http://example.org/ns#a7489> <http://example.org/ns#a7489> <http://example.org/ns#a7489> .
+<http://example.org/ns#a7490> <http://example.org/ns#a7490> <http://example.org/ns#a7490> .
+<http://example.org/ns#a7491> <http://example.org/ns#a7491> <http://example.org/ns#a7491> .
+<http://example.org/ns#a7492> <http://example.org/ns#a7492> <http://example.org/ns#a7492> .
+<http://example.org/ns#a7493> <http://example.org/ns#a7493> <http://example.org/ns#a7493> .
+<http://example.org/ns#a7494> <http://example.org/ns#a7494> <http://example.org/ns#a7494> .
+<http://example.org/ns#a7495> <http://example.org/ns#a7495> <http://example.org/ns#a7495> .
+<http://example.org/ns#a7496> <http://example.org/ns#a7496> <http://example.org/ns#a7496> .
+<http://example.org/ns#a7497> <http://example.org/ns#a7497> <http://example.org/ns#a7497> .
+<http://example.org/ns#a7498> <http://example.org/ns#a7498> <http://example.org/ns#a7498> .
+<http://example.org/ns#a7499> <http://example.org/ns#a7499> <http://example.org/ns#a7499> .
+<http://example.org/ns#a7500> <http://example.org/ns#a7500> <http://example.org/ns#a7500> .
+<http://example.org/ns#a7501> <http://example.org/ns#a7501> <http://example.org/ns#a7501> .
+<http://example.org/ns#a7502> <http://example.org/ns#a7502> <http://example.org/ns#a7502> .
+<http://example.org/ns#a7503> <http://example.org/ns#a7503> <http://example.org/ns#a7503> .
+<http://example.org/ns#a7504> <http://example.org/ns#a7504> <http://example.org/ns#a7504> .
+<http://example.org/ns#a7505> <http://example.org/ns#a7505> <http://example.org/ns#a7505> .
+<http://example.org/ns#a7506> <http://example.org/ns#a7506> <http://example.org/ns#a7506> .
+<http://example.org/ns#a7507> <http://example.org/ns#a7507> <http://example.org/ns#a7507> .
+<http://example.org/ns#a7508> <http://example.org/ns#a7508> <http://example.org/ns#a7508> .
+<http://example.org/ns#a7509> <http://example.org/ns#a7509> <http://example.org/ns#a7509> .
+<http://example.org/ns#a7510> <http://example.org/ns#a7510> <http://example.org/ns#a7510> .
+<http://example.org/ns#a7511> <http://example.org/ns#a7511> <http://example.org/ns#a7511> .
+<http://example.org/ns#a7512> <http://example.org/ns#a7512> <http://example.org/ns#a7512> .
+<http://example.org/ns#a7513> <http://example.org/ns#a7513> <http://example.org/ns#a7513> .
+<http://example.org/ns#a7514> <http://example.org/ns#a7514> <http://example.org/ns#a7514> .
+<http://example.org/ns#a7515> <http://example.org/ns#a7515> <http://example.org/ns#a7515> .
+<http://example.org/ns#a7516> <http://example.org/ns#a7516> <http://example.org/ns#a7516> .
+<http://example.org/ns#a7517> <http://example.org/ns#a7517> <http://example.org/ns#a7517> .
+<http://example.org/ns#a7518> <http://example.org/ns#a7518> <http://example.org/ns#a7518> .
+<http://example.org/ns#a7519> <http://example.org/ns#a7519> <http://example.org/ns#a7519> .
+<http://example.org/ns#a7520> <http://example.org/ns#a7520> <http://example.org/ns#a7520> .
+<http://example.org/ns#a7521> <http://example.org/ns#a7521> <http://example.org/ns#a7521> .
+<http://example.org/ns#a7522> <http://example.org/ns#a7522> <http://example.org/ns#a7522> .
+<http://example.org/ns#a7523> <http://example.org/ns#a7523> <http://example.org/ns#a7523> .
+<http://example.org/ns#a7524> <http://example.org/ns#a7524> <http://example.org/ns#a7524> .
+<http://example.org/ns#a7525> <http://example.org/ns#a7525> <http://example.org/ns#a7525> .
+<http://example.org/ns#a7526> <http://example.org/ns#a7526> <http://example.org/ns#a7526> .
+<http://example.org/ns#a7527> <http://example.org/ns#a7527> <http://example.org/ns#a7527> .
+<http://example.org/ns#a7528> <http://example.org/ns#a7528> <http://example.org/ns#a7528> .
+<http://example.org/ns#a7529> <http://example.org/ns#a7529> <http://example.org/ns#a7529> .
+<http://example.org/ns#a7530> <http://example.org/ns#a7530> <http://example.org/ns#a7530> .
+<http://example.org/ns#a7531> <http://example.org/ns#a7531> <http://example.org/ns#a7531> .
+<http://example.org/ns#a7532> <http://example.org/ns#a7532> <http://example.org/ns#a7532> .
+<http://example.org/ns#a7533> <http://example.org/ns#a7533> <http://example.org/ns#a7533> .
+<http://example.org/ns#a7534> <http://example.org/ns#a7534> <http://example.org/ns#a7534> .
+<http://example.org/ns#a7535> <http://example.org/ns#a7535> <http://example.org/ns#a7535> .
+<http://example.org/ns#a7536> <http://example.org/ns#a7536> <http://example.org/ns#a7536> .
+<http://example.org/ns#a7537> <http://example.org/ns#a7537> <http://example.org/ns#a7537> .
+<http://example.org/ns#a7538> <http://example.org/ns#a7538> <http://example.org/ns#a7538> .
+<http://example.org/ns#a7539> <http://example.org/ns#a7539> <http://example.org/ns#a7539> .
+<http://example.org/ns#a7540> <http://example.org/ns#a7540> <http://example.org/ns#a7540> .
+<http://example.org/ns#a7541> <http://example.org/ns#a7541> <http://example.org/ns#a7541> .
+<http://example.org/ns#a7542> <http://example.org/ns#a7542> <http://example.org/ns#a7542> .
+<http://example.org/ns#a7543> <http://example.org/ns#a7543> <http://example.org/ns#a7543> .
+<http://example.org/ns#a7544> <http://example.org/ns#a7544> <http://example.org/ns#a7544> .
+<http://example.org/ns#a7545> <http://example.org/ns#a7545> <http://example.org/ns#a7545> .
+<http://example.org/ns#a7546> <http://example.org/ns#a7546> <http://example.org/ns#a7546> .
+<http://example.org/ns#a7547> <http://example.org/ns#a7547> <http://example.org/ns#a7547> .
+<http://example.org/ns#a7548> <http://example.org/ns#a7548> <http://example.org/ns#a7548> .
+<http://example.org/ns#a7549> <http://example.org/ns#a7549> <http://example.org/ns#a7549> .
+<http://example.org/ns#a7550> <http://example.org/ns#a7550> <http://example.org/ns#a7550> .
+<http://example.org/ns#a7551> <http://example.org/ns#a7551> <http://example.org/ns#a7551> .
+<http://example.org/ns#a7552> <http://example.org/ns#a7552> <http://example.org/ns#a7552> .
+<http://example.org/ns#a7553> <http://example.org/ns#a7553> <http://example.org/ns#a7553> .
+<http://example.org/ns#a7554> <http://example.org/ns#a7554> <http://example.org/ns#a7554> .
+<http://example.org/ns#a7555> <http://example.org/ns#a7555> <http://example.org/ns#a7555> .
+<http://example.org/ns#a7556> <http://example.org/ns#a7556> <http://example.org/ns#a7556> .
+<http://example.org/ns#a7557> <http://example.org/ns#a7557> <http://example.org/ns#a7557> .
+<http://example.org/ns#a7558> <http://example.org/ns#a7558> <http://example.org/ns#a7558> .
+<http://example.org/ns#a7559> <http://example.org/ns#a7559> <http://example.org/ns#a7559> .
+<http://example.org/ns#a7560> <http://example.org/ns#a7560> <http://example.org/ns#a7560> .
+<http://example.org/ns#a7561> <http://example.org/ns#a7561> <http://example.org/ns#a7561> .
+<http://example.org/ns#a7562> <http://example.org/ns#a7562> <http://example.org/ns#a7562> .
+<http://example.org/ns#a7563> <http://example.org/ns#a7563> <http://example.org/ns#a7563> .
+<http://example.org/ns#a7564> <http://example.org/ns#a7564> <http://example.org/ns#a7564> .
+<http://example.org/ns#a7565> <http://example.org/ns#a7565> <http://example.org/ns#a7565> .
+<http://example.org/ns#a7566> <http://example.org/ns#a7566> <http://example.org/ns#a7566> .
+<http://example.org/ns#a7567> <http://example.org/ns#a7567> <http://example.org/ns#a7567> .
+<http://example.org/ns#a7568> <http://example.org/ns#a7568> <http://example.org/ns#a7568> .
+<http://example.org/ns#a7569> <http://example.org/ns#a7569> <http://example.org/ns#a7569> .
+<http://example.org/ns#a7570> <http://example.org/ns#a7570> <http://example.org/ns#a7570> .
+<http://example.org/ns#a7571> <http://example.org/ns#a7571> <http://example.org/ns#a7571> .
+<http://example.org/ns#a7572> <http://example.org/ns#a7572> <http://example.org/ns#a7572> .
+<http://example.org/ns#a7573> <http://example.org/ns#a7573> <http://example.org/ns#a7573> .
+<http://example.org/ns#a7574> <http://example.org/ns#a7574> <http://example.org/ns#a7574> .
+<http://example.org/ns#a7575> <http://example.org/ns#a7575> <http://example.org/ns#a7575> .
+<http://example.org/ns#a7576> <http://example.org/ns#a7576> <http://example.org/ns#a7576> .
+<http://example.org/ns#a7577> <http://example.org/ns#a7577> <http://example.org/ns#a7577> .
+<http://example.org/ns#a7578> <http://example.org/ns#a7578> <http://example.org/ns#a7578> .
+<http://example.org/ns#a7579> <http://example.org/ns#a7579> <http://example.org/ns#a7579> .
+<http://example.org/ns#a7580> <http://example.org/ns#a7580> <http://example.org/ns#a7580> .
+<http://example.org/ns#a7581> <http://example.org/ns#a7581> <http://example.org/ns#a7581> .
+<http://example.org/ns#a7582> <http://example.org/ns#a7582> <http://example.org/ns#a7582> .
+<http://example.org/ns#a7583> <http://example.org/ns#a7583> <http://example.org/ns#a7583> .
+<http://example.org/ns#a7584> <http://example.org/ns#a7584> <http://example.org/ns#a7584> .
+<http://example.org/ns#a7585> <http://example.org/ns#a7585> <http://example.org/ns#a7585> .
+<http://example.org/ns#a7586> <http://example.org/ns#a7586> <http://example.org/ns#a7586> .
+<http://example.org/ns#a7587> <http://example.org/ns#a7587> <http://example.org/ns#a7587> .
+<http://example.org/ns#a7588> <http://example.org/ns#a7588> <http://example.org/ns#a7588> .
+<http://example.org/ns#a7589> <http://example.org/ns#a7589> <http://example.org/ns#a7589> .
+<http://example.org/ns#a7590> <http://example.org/ns#a7590> <http://example.org/ns#a7590> .
+<http://example.org/ns#a7591> <http://example.org/ns#a7591> <http://example.org/ns#a7591> .
+<http://example.org/ns#a7592> <http://example.org/ns#a7592> <http://example.org/ns#a7592> .
+<http://example.org/ns#a7593> <http://example.org/ns#a7593> <http://example.org/ns#a7593> .
+<http://example.org/ns#a7594> <http://example.org/ns#a7594> <http://example.org/ns#a7594> .
+<http://example.org/ns#a7595> <http://example.org/ns#a7595> <http://example.org/ns#a7595> .
+<http://example.org/ns#a7596> <http://example.org/ns#a7596> <http://example.org/ns#a7596> .
+<http://example.org/ns#a7597> <http://example.org/ns#a7597> <http://example.org/ns#a7597> .
+<http://example.org/ns#a7598> <http://example.org/ns#a7598> <http://example.org/ns#a7598> .
+<http://example.org/ns#a7599> <http://example.org/ns#a7599> <http://example.org/ns#a7599> .
+<http://example.org/ns#a7600> <http://example.org/ns#a7600> <http://example.org/ns#a7600> .
+<http://example.org/ns#a7601> <http://example.org/ns#a7601> <http://example.org/ns#a7601> .
+<http://example.org/ns#a7602> <http://example.org/ns#a7602> <http://example.org/ns#a7602> .
+<http://example.org/ns#a7603> <http://example.org/ns#a7603> <http://example.org/ns#a7603> .
+<http://example.org/ns#a7604> <http://example.org/ns#a7604> <http://example.org/ns#a7604> .
+<http://example.org/ns#a7605> <http://example.org/ns#a7605> <http://example.org/ns#a7605> .
+<http://example.org/ns#a7606> <http://example.org/ns#a7606> <http://example.org/ns#a7606> .
+<http://example.org/ns#a7607> <http://example.org/ns#a7607> <http://example.org/ns#a7607> .
+<http://example.org/ns#a7608> <http://example.org/ns#a7608> <http://example.org/ns#a7608> .
+<http://example.org/ns#a7609> <http://example.org/ns#a7609> <http://example.org/ns#a7609> .
+<http://example.org/ns#a7610> <http://example.org/ns#a7610> <http://example.org/ns#a7610> .
+<http://example.org/ns#a7611> <http://example.org/ns#a7611> <http://example.org/ns#a7611> .
+<http://example.org/ns#a7612> <http://example.org/ns#a7612> <http://example.org/ns#a7612> .
+<http://example.org/ns#a7613> <http://example.org/ns#a7613> <http://example.org/ns#a7613> .
+<http://example.org/ns#a7614> <http://example.org/ns#a7614> <http://example.org/ns#a7614> .
+<http://example.org/ns#a7615> <http://example.org/ns#a7615> <http://example.org/ns#a7615> .
+<http://example.org/ns#a7616> <http://example.org/ns#a7616> <http://example.org/ns#a7616> .
+<http://example.org/ns#a7617> <http://example.org/ns#a7617> <http://example.org/ns#a7617> .
+<http://example.org/ns#a7618> <http://example.org/ns#a7618> <http://example.org/ns#a7618> .
+<http://example.org/ns#a7619> <http://example.org/ns#a7619> <http://example.org/ns#a7619> .
+<http://example.org/ns#a7620> <http://example.org/ns#a7620> <http://example.org/ns#a7620> .
+<http://example.org/ns#a7621> <http://example.org/ns#a7621> <http://example.org/ns#a7621> .
+<http://example.org/ns#a7622> <http://example.org/ns#a7622> <http://example.org/ns#a7622> .
+<http://example.org/ns#a7623> <http://example.org/ns#a7623> <http://example.org/ns#a7623> .
+<http://example.org/ns#a7624> <http://example.org/ns#a7624> <http://example.org/ns#a7624> .
+<http://example.org/ns#a7625> <http://example.org/ns#a7625> <http://example.org/ns#a7625> .
+<http://example.org/ns#a7626> <http://example.org/ns#a7626> <http://example.org/ns#a7626> .
+<http://example.org/ns#a7627> <http://example.org/ns#a7627> <http://example.org/ns#a7627> .
+<http://example.org/ns#a7628> <http://example.org/ns#a7628> <http://example.org/ns#a7628> .
+<http://example.org/ns#a7629> <http://example.org/ns#a7629> <http://example.org/ns#a7629> .
+<http://example.org/ns#a7630> <http://example.org/ns#a7630> <http://example.org/ns#a7630> .
+<http://example.org/ns#a7631> <http://example.org/ns#a7631> <http://example.org/ns#a7631> .
+<http://example.org/ns#a7632> <http://example.org/ns#a7632> <http://example.org/ns#a7632> .
+<http://example.org/ns#a7633> <http://example.org/ns#a7633> <http://example.org/ns#a7633> .
+<http://example.org/ns#a7634> <http://example.org/ns#a7634> <http://example.org/ns#a7634> .
+<http://example.org/ns#a7635> <http://example.org/ns#a7635> <http://example.org/ns#a7635> .
+<http://example.org/ns#a7636> <http://example.org/ns#a7636> <http://example.org/ns#a7636> .
+<http://example.org/ns#a7637> <http://example.org/ns#a7637> <http://example.org/ns#a7637> .
+<http://example.org/ns#a7638> <http://example.org/ns#a7638> <http://example.org/ns#a7638> .
+<http://example.org/ns#a7639> <http://example.org/ns#a7639> <http://example.org/ns#a7639> .
+<http://example.org/ns#a7640> <http://example.org/ns#a7640> <http://example.org/ns#a7640> .
+<http://example.org/ns#a7641> <http://example.org/ns#a7641> <http://example.org/ns#a7641> .
+<http://example.org/ns#a7642> <http://example.org/ns#a7642> <http://example.org/ns#a7642> .
+<http://example.org/ns#a7643> <http://example.org/ns#a7643> <http://example.org/ns#a7643> .
+<http://example.org/ns#a7644> <http://example.org/ns#a7644> <http://example.org/ns#a7644> .
+<http://example.org/ns#a7645> <http://example.org/ns#a7645> <http://example.org/ns#a7645> .
+<http://example.org/ns#a7646> <http://example.org/ns#a7646> <http://example.org/ns#a7646> .
+<http://example.org/ns#a7647> <http://example.org/ns#a7647> <http://example.org/ns#a7647> .
+<http://example.org/ns#a7648> <http://example.org/ns#a7648> <http://example.org/ns#a7648> .
+<http://example.org/ns#a7649> <http://example.org/ns#a7649> <http://example.org/ns#a7649> .
+<http://example.org/ns#a7650> <http://example.org/ns#a7650> <http://example.org/ns#a7650> .
+<http://example.org/ns#a7651> <http://example.org/ns#a7651> <http://example.org/ns#a7651> .
+<http://example.org/ns#a7652> <http://example.org/ns#a7652> <http://example.org/ns#a7652> .
+<http://example.org/ns#a7653> <http://example.org/ns#a7653> <http://example.org/ns#a7653> .
+<http://example.org/ns#a7654> <http://example.org/ns#a7654> <http://example.org/ns#a7654> .
+<http://example.org/ns#a7655> <http://example.org/ns#a7655> <http://example.org/ns#a7655> .
+<http://example.org/ns#a7656> <http://example.org/ns#a7656> <http://example.org/ns#a7656> .
+<http://example.org/ns#a7657> <http://example.org/ns#a7657> <http://example.org/ns#a7657> .
+<http://example.org/ns#a7658> <http://example.org/ns#a7658> <http://example.org/ns#a7658> .
+<http://example.org/ns#a7659> <http://example.org/ns#a7659> <http://example.org/ns#a7659> .
+<http://example.org/ns#a7660> <http://example.org/ns#a7660> <http://example.org/ns#a7660> .
+<http://example.org/ns#a7661> <http://example.org/ns#a7661> <http://example.org/ns#a7661> .
+<http://example.org/ns#a7662> <http://example.org/ns#a7662> <http://example.org/ns#a7662> .
+<http://example.org/ns#a7663> <http://example.org/ns#a7663> <http://example.org/ns#a7663> .
+<http://example.org/ns#a7664> <http://example.org/ns#a7664> <http://example.org/ns#a7664> .
+<http://example.org/ns#a7665> <http://example.org/ns#a7665> <http://example.org/ns#a7665> .
+<http://example.org/ns#a7666> <http://example.org/ns#a7666> <http://example.org/ns#a7666> .
+<http://example.org/ns#a7667> <http://example.org/ns#a7667> <http://example.org/ns#a7667> .
+<http://example.org/ns#a7668> <http://example.org/ns#a7668> <http://example.org/ns#a7668> .
+<http://example.org/ns#a7669> <http://example.org/ns#a7669> <http://example.org/ns#a7669> .
+<http://example.org/ns#a7670> <http://example.org/ns#a7670> <http://example.org/ns#a7670> .
+<http://example.org/ns#a7671> <http://example.org/ns#a7671> <http://example.org/ns#a7671> .
+<http://example.org/ns#a7672> <http://example.org/ns#a7672> <http://example.org/ns#a7672> .
+<http://example.org/ns#a7673> <http://example.org/ns#a7673> <http://example.org/ns#a7673> .
+<http://example.org/ns#a7674> <http://example.org/ns#a7674> <http://example.org/ns#a7674> .
+<http://example.org/ns#a7675> <http://example.org/ns#a7675> <http://example.org/ns#a7675> .
+<http://example.org/ns#a7676> <http://example.org/ns#a7676> <http://example.org/ns#a7676> .
+<http://example.org/ns#a7677> <http://example.org/ns#a7677> <http://example.org/ns#a7677> .
+<http://example.org/ns#a7678> <http://example.org/ns#a7678> <http://example.org/ns#a7678> .
+<http://example.org/ns#a7679> <http://example.org/ns#a7679> <http://example.org/ns#a7679> .
+<http://example.org/ns#a7680> <http://example.org/ns#a7680> <http://example.org/ns#a7680> .
+<http://example.org/ns#a7681> <http://example.org/ns#a7681> <http://example.org/ns#a7681> .
+<http://example.org/ns#a7682> <http://example.org/ns#a7682> <http://example.org/ns#a7682> .
+<http://example.org/ns#a7683> <http://example.org/ns#a7683> <http://example.org/ns#a7683> .
+<http://example.org/ns#a7684> <http://example.org/ns#a7684> <http://example.org/ns#a7684> .
+<http://example.org/ns#a7685> <http://example.org/ns#a7685> <http://example.org/ns#a7685> .
+<http://example.org/ns#a7686> <http://example.org/ns#a7686> <http://example.org/ns#a7686> .
+<http://example.org/ns#a7687> <http://example.org/ns#a7687> <http://example.org/ns#a7687> .
+<http://example.org/ns#a7688> <http://example.org/ns#a7688> <http://example.org/ns#a7688> .
+<http://example.org/ns#a7689> <http://example.org/ns#a7689> <http://example.org/ns#a7689> .
+<http://example.org/ns#a7690> <http://example.org/ns#a7690> <http://example.org/ns#a7690> .
+<http://example.org/ns#a7691> <http://example.org/ns#a7691> <http://example.org/ns#a7691> .
+<http://example.org/ns#a7692> <http://example.org/ns#a7692> <http://example.org/ns#a7692> .
+<http://example.org/ns#a7693> <http://example.org/ns#a7693> <http://example.org/ns#a7693> .
+<http://example.org/ns#a7694> <http://example.org/ns#a7694> <http://example.org/ns#a7694> .
+<http://example.org/ns#a7695> <http://example.org/ns#a7695> <http://example.org/ns#a7695> .
+<http://example.org/ns#a7696> <http://example.org/ns#a7696> <http://example.org/ns#a7696> .
+<http://example.org/ns#a7697> <http://example.org/ns#a7697> <http://example.org/ns#a7697> .
+<http://example.org/ns#a7698> <http://example.org/ns#a7698> <http://example.org/ns#a7698> .
+<http://example.org/ns#a7699> <http://example.org/ns#a7699> <http://example.org/ns#a7699> .
+<http://example.org/ns#a7700> <http://example.org/ns#a7700> <http://example.org/ns#a7700> .
+<http://example.org/ns#a7701> <http://example.org/ns#a7701> <http://example.org/ns#a7701> .
+<http://example.org/ns#a7702> <http://example.org/ns#a7702> <http://example.org/ns#a7702> .
+<http://example.org/ns#a7703> <http://example.org/ns#a7703> <http://example.org/ns#a7703> .
+<http://example.org/ns#a7704> <http://example.org/ns#a7704> <http://example.org/ns#a7704> .
+<http://example.org/ns#a7705> <http://example.org/ns#a7705> <http://example.org/ns#a7705> .
+<http://example.org/ns#a7706> <http://example.org/ns#a7706> <http://example.org/ns#a7706> .
+<http://example.org/ns#a7707> <http://example.org/ns#a7707> <http://example.org/ns#a7707> .
+<http://example.org/ns#a7708> <http://example.org/ns#a7708> <http://example.org/ns#a7708> .
+<http://example.org/ns#a7709> <http://example.org/ns#a7709> <http://example.org/ns#a7709> .
+<http://example.org/ns#a7710> <http://example.org/ns#a7710> <http://example.org/ns#a7710> .
+<http://example.org/ns#a7711> <http://example.org/ns#a7711> <http://example.org/ns#a7711> .
+<http://example.org/ns#a7712> <http://example.org/ns#a7712> <http://example.org/ns#a7712> .
+<http://example.org/ns#a7713> <http://example.org/ns#a7713> <http://example.org/ns#a7713> .
+<http://example.org/ns#a7714> <http://example.org/ns#a7714> <http://example.org/ns#a7714> .
+<http://example.org/ns#a7715> <http://example.org/ns#a7715> <http://example.org/ns#a7715> .
+<http://example.org/ns#a7716> <http://example.org/ns#a7716> <http://example.org/ns#a7716> .
+<http://example.org/ns#a7717> <http://example.org/ns#a7717> <http://example.org/ns#a7717> .
+<http://example.org/ns#a7718> <http://example.org/ns#a7718> <http://example.org/ns#a7718> .
+<http://example.org/ns#a7719> <http://example.org/ns#a7719> <http://example.org/ns#a7719> .
+<http://example.org/ns#a7720> <http://example.org/ns#a7720> <http://example.org/ns#a7720> .
+<http://example.org/ns#a7721> <http://example.org/ns#a7721> <http://example.org/ns#a7721> .
+<http://example.org/ns#a7722> <http://example.org/ns#a7722> <http://example.org/ns#a7722> .
+<http://example.org/ns#a7723> <http://example.org/ns#a7723> <http://example.org/ns#a7723> .
+<http://example.org/ns#a7724> <http://example.org/ns#a7724> <http://example.org/ns#a7724> .
+<http://example.org/ns#a7725> <http://example.org/ns#a7725> <http://example.org/ns#a7725> .
+<http://example.org/ns#a7726> <http://example.org/ns#a7726> <http://example.org/ns#a7726> .
+<http://example.org/ns#a7727> <http://example.org/ns#a7727> <http://example.org/ns#a7727> .
+<http://example.org/ns#a7728> <http://example.org/ns#a7728> <http://example.org/ns#a7728> .
+<http://example.org/ns#a7729> <http://example.org/ns#a7729> <http://example.org/ns#a7729> .
+<http://example.org/ns#a7730> <http://example.org/ns#a7730> <http://example.org/ns#a7730> .
+<http://example.org/ns#a7731> <http://example.org/ns#a7731> <http://example.org/ns#a7731> .
+<http://example.org/ns#a7732> <http://example.org/ns#a7732> <http://example.org/ns#a7732> .
+<http://example.org/ns#a7733> <http://example.org/ns#a7733> <http://example.org/ns#a7733> .
+<http://example.org/ns#a7734> <http://example.org/ns#a7734> <http://example.org/ns#a7734> .
+<http://example.org/ns#a7735> <http://example.org/ns#a7735> <http://example.org/ns#a7735> .
+<http://example.org/ns#a7736> <http://example.org/ns#a7736> <http://example.org/ns#a7736> .
+<http://example.org/ns#a7737> <http://example.org/ns#a7737> <http://example.org/ns#a7737> .
+<http://example.org/ns#a7738> <http://example.org/ns#a7738> <http://example.org/ns#a7738> .
+<http://example.org/ns#a7739> <http://example.org/ns#a7739> <http://example.org/ns#a7739> .
+<http://example.org/ns#a7740> <http://example.org/ns#a7740> <http://example.org/ns#a7740> .
+<http://example.org/ns#a7741> <http://example.org/ns#a7741> <http://example.org/ns#a7741> .
+<http://example.org/ns#a7742> <http://example.org/ns#a7742> <http://example.org/ns#a7742> .
+<http://example.org/ns#a7743> <http://example.org/ns#a7743> <http://example.org/ns#a7743> .
+<http://example.org/ns#a7744> <http://example.org/ns#a7744> <http://example.org/ns#a7744> .
+<http://example.org/ns#a7745> <http://example.org/ns#a7745> <http://example.org/ns#a7745> .
+<http://example.org/ns#a7746> <http://example.org/ns#a7746> <http://example.org/ns#a7746> .
+<http://example.org/ns#a7747> <http://example.org/ns#a7747> <http://example.org/ns#a7747> .
+<http://example.org/ns#a7748> <http://example.org/ns#a7748> <http://example.org/ns#a7748> .
+<http://example.org/ns#a7749> <http://example.org/ns#a7749> <http://example.org/ns#a7749> .
+<http://example.org/ns#a7750> <http://example.org/ns#a7750> <http://example.org/ns#a7750> .
+<http://example.org/ns#a7751> <http://example.org/ns#a7751> <http://example.org/ns#a7751> .
+<http://example.org/ns#a7752> <http://example.org/ns#a7752> <http://example.org/ns#a7752> .
+<http://example.org/ns#a7753> <http://example.org/ns#a7753> <http://example.org/ns#a7753> .
+<http://example.org/ns#a7754> <http://example.org/ns#a7754> <http://example.org/ns#a7754> .
+<http://example.org/ns#a7755> <http://example.org/ns#a7755> <http://example.org/ns#a7755> .
+<http://example.org/ns#a7756> <http://example.org/ns#a7756> <http://example.org/ns#a7756> .
+<http://example.org/ns#a7757> <http://example.org/ns#a7757> <http://example.org/ns#a7757> .
+<http://example.org/ns#a7758> <http://example.org/ns#a7758> <http://example.org/ns#a7758> .
+<http://example.org/ns#a7759> <http://example.org/ns#a7759> <http://example.org/ns#a7759> .
+<http://example.org/ns#a7760> <http://example.org/ns#a7760> <http://example.org/ns#a7760> .
+<http://example.org/ns#a7761> <http://example.org/ns#a7761> <http://example.org/ns#a7761> .
+<http://example.org/ns#a7762> <http://example.org/ns#a7762> <http://example.org/ns#a7762> .
+<http://example.org/ns#a7763> <http://example.org/ns#a7763> <http://example.org/ns#a7763> .
+<http://example.org/ns#a7764> <http://example.org/ns#a7764> <http://example.org/ns#a7764> .
+<http://example.org/ns#a7765> <http://example.org/ns#a7765> <http://example.org/ns#a7765> .
+<http://example.org/ns#a7766> <http://example.org/ns#a7766> <http://example.org/ns#a7766> .
+<http://example.org/ns#a7767> <http://example.org/ns#a7767> <http://example.org/ns#a7767> .
+<http://example.org/ns#a7768> <http://example.org/ns#a7768> <http://example.org/ns#a7768> .
+<http://example.org/ns#a7769> <http://example.org/ns#a7769> <http://example.org/ns#a7769> .
+<http://example.org/ns#a7770> <http://example.org/ns#a7770> <http://example.org/ns#a7770> .
+<http://example.org/ns#a7771> <http://example.org/ns#a7771> <http://example.org/ns#a7771> .
+<http://example.org/ns#a7772> <http://example.org/ns#a7772> <http://example.org/ns#a7772> .
+<http://example.org/ns#a7773> <http://example.org/ns#a7773> <http://example.org/ns#a7773> .
+<http://example.org/ns#a7774> <http://example.org/ns#a7774> <http://example.org/ns#a7774> .
+<http://example.org/ns#a7775> <http://example.org/ns#a7775> <http://example.org/ns#a7775> .
+<http://example.org/ns#a7776> <http://example.org/ns#a7776> <http://example.org/ns#a7776> .
+<http://example.org/ns#a7777> <http://example.org/ns#a7777> <http://example.org/ns#a7777> .
+<http://example.org/ns#a7778> <http://example.org/ns#a7778> <http://example.org/ns#a7778> .
+<http://example.org/ns#a7779> <http://example.org/ns#a7779> <http://example.org/ns#a7779> .
+<http://example.org/ns#a7780> <http://example.org/ns#a7780> <http://example.org/ns#a7780> .
+<http://example.org/ns#a7781> <http://example.org/ns#a7781> <http://example.org/ns#a7781> .
+<http://example.org/ns#a7782> <http://example.org/ns#a7782> <http://example.org/ns#a7782> .
+<http://example.org/ns#a7783> <http://example.org/ns#a7783> <http://example.org/ns#a7783> .
+<http://example.org/ns#a7784> <http://example.org/ns#a7784> <http://example.org/ns#a7784> .
+<http://example.org/ns#a7785> <http://example.org/ns#a7785> <http://example.org/ns#a7785> .
+<http://example.org/ns#a7786> <http://example.org/ns#a7786> <http://example.org/ns#a7786> .
+<http://example.org/ns#a7787> <http://example.org/ns#a7787> <http://example.org/ns#a7787> .
+<http://example.org/ns#a7788> <http://example.org/ns#a7788> <http://example.org/ns#a7788> .
+<http://example.org/ns#a7789> <http://example.org/ns#a7789> <http://example.org/ns#a7789> .
+<http://example.org/ns#a7790> <http://example.org/ns#a7790> <http://example.org/ns#a7790> .
+<http://example.org/ns#a7791> <http://example.org/ns#a7791> <http://example.org/ns#a7791> .
+<http://example.org/ns#a7792> <http://example.org/ns#a7792> <http://example.org/ns#a7792> .
+<http://example.org/ns#a7793> <http://example.org/ns#a7793> <http://example.org/ns#a7793> .
+<http://example.org/ns#a7794> <http://example.org/ns#a7794> <http://example.org/ns#a7794> .
+<http://example.org/ns#a7795> <http://example.org/ns#a7795> <http://example.org/ns#a7795> .
+<http://example.org/ns#a7796> <http://example.org/ns#a7796> <http://example.org/ns#a7796> .
+<http://example.org/ns#a7797> <http://example.org/ns#a7797> <http://example.org/ns#a7797> .
+<http://example.org/ns#a7798> <http://example.org/ns#a7798> <http://example.org/ns#a7798> .
+<http://example.org/ns#a7799> <http://example.org/ns#a7799> <http://example.org/ns#a7799> .
+<http://example.org/ns#a7800> <http://example.org/ns#a7800> <http://example.org/ns#a7800> .
+<http://example.org/ns#a7801> <http://example.org/ns#a7801> <http://example.org/ns#a7801> .
+<http://example.org/ns#a7802> <http://example.org/ns#a7802> <http://example.org/ns#a7802> .
+<http://example.org/ns#a7803> <http://example.org/ns#a7803> <http://example.org/ns#a7803> .
+<http://example.org/ns#a7804> <http://example.org/ns#a7804> <http://example.org/ns#a7804> .
+<http://example.org/ns#a7805> <http://example.org/ns#a7805> <http://example.org/ns#a7805> .
+<http://example.org/ns#a7806> <http://example.org/ns#a7806> <http://example.org/ns#a7806> .
+<http://example.org/ns#a7807> <http://example.org/ns#a7807> <http://example.org/ns#a7807> .
+<http://example.org/ns#a7808> <http://example.org/ns#a7808> <http://example.org/ns#a7808> .
+<http://example.org/ns#a7809> <http://example.org/ns#a7809> <http://example.org/ns#a7809> .
+<http://example.org/ns#a7810> <http://example.org/ns#a7810> <http://example.org/ns#a7810> .
+<http://example.org/ns#a7811> <http://example.org/ns#a7811> <http://example.org/ns#a7811> .
+<http://example.org/ns#a7812> <http://example.org/ns#a7812> <http://example.org/ns#a7812> .
+<http://example.org/ns#a7813> <http://example.org/ns#a7813> <http://example.org/ns#a7813> .
+<http://example.org/ns#a7814> <http://example.org/ns#a7814> <http://example.org/ns#a7814> .
+<http://example.org/ns#a7815> <http://example.org/ns#a7815> <http://example.org/ns#a7815> .
+<http://example.org/ns#a7816> <http://example.org/ns#a7816> <http://example.org/ns#a7816> .
+<http://example.org/ns#a7817> <http://example.org/ns#a7817> <http://example.org/ns#a7817> .
+<http://example.org/ns#a7818> <http://example.org/ns#a7818> <http://example.org/ns#a7818> .
+<http://example.org/ns#a7819> <http://example.org/ns#a7819> <http://example.org/ns#a7819> .
+<http://example.org/ns#a7820> <http://example.org/ns#a7820> <http://example.org/ns#a7820> .
+<http://example.org/ns#a7821> <http://example.org/ns#a7821> <http://example.org/ns#a7821> .
+<http://example.org/ns#a7822> <http://example.org/ns#a7822> <http://example.org/ns#a7822> .
+<http://example.org/ns#a7823> <http://example.org/ns#a7823> <http://example.org/ns#a7823> .
+<http://example.org/ns#a7824> <http://example.org/ns#a7824> <http://example.org/ns#a7824> .
+<http://example.org/ns#a7825> <http://example.org/ns#a7825> <http://example.org/ns#a7825> .
+<http://example.org/ns#a7826> <http://example.org/ns#a7826> <http://example.org/ns#a7826> .
+<http://example.org/ns#a7827> <http://example.org/ns#a7827> <http://example.org/ns#a7827> .
+<http://example.org/ns#a7828> <http://example.org/ns#a7828> <http://example.org/ns#a7828> .
+<http://example.org/ns#a7829> <http://example.org/ns#a7829> <http://example.org/ns#a7829> .
+<http://example.org/ns#a7830> <http://example.org/ns#a7830> <http://example.org/ns#a7830> .
+<http://example.org/ns#a7831> <http://example.org/ns#a7831> <http://example.org/ns#a7831> .
+<http://example.org/ns#a7832> <http://example.org/ns#a7832> <http://example.org/ns#a7832> .
+<http://example.org/ns#a7833> <http://example.org/ns#a7833> <http://example.org/ns#a7833> .
+<http://example.org/ns#a7834> <http://example.org/ns#a7834> <http://example.org/ns#a7834> .
+<http://example.org/ns#a7835> <http://example.org/ns#a7835> <http://example.org/ns#a7835> .
+<http://example.org/ns#a7836> <http://example.org/ns#a7836> <http://example.org/ns#a7836> .
+<http://example.org/ns#a7837> <http://example.org/ns#a7837> <http://example.org/ns#a7837> .
+<http://example.org/ns#a7838> <http://example.org/ns#a7838> <http://example.org/ns#a7838> .
+<http://example.org/ns#a7839> <http://example.org/ns#a7839> <http://example.org/ns#a7839> .
+<http://example.org/ns#a7840> <http://example.org/ns#a7840> <http://example.org/ns#a7840> .
+<http://example.org/ns#a7841> <http://example.org/ns#a7841> <http://example.org/ns#a7841> .
+<http://example.org/ns#a7842> <http://example.org/ns#a7842> <http://example.org/ns#a7842> .
+<http://example.org/ns#a7843> <http://example.org/ns#a7843> <http://example.org/ns#a7843> .
+<http://example.org/ns#a7844> <http://example.org/ns#a7844> <http://example.org/ns#a7844> .
+<http://example.org/ns#a7845> <http://example.org/ns#a7845> <http://example.org/ns#a7845> .
+<http://example.org/ns#a7846> <http://example.org/ns#a7846> <http://example.org/ns#a7846> .
+<http://example.org/ns#a7847> <http://example.org/ns#a7847> <http://example.org/ns#a7847> .
+<http://example.org/ns#a7848> <http://example.org/ns#a7848> <http://example.org/ns#a7848> .
+<http://example.org/ns#a7849> <http://example.org/ns#a7849> <http://example.org/ns#a7849> .
+<http://example.org/ns#a7850> <http://example.org/ns#a7850> <http://example.org/ns#a7850> .
+<http://example.org/ns#a7851> <http://example.org/ns#a7851> <http://example.org/ns#a7851> .
+<http://example.org/ns#a7852> <http://example.org/ns#a7852> <http://example.org/ns#a7852> .
+<http://example.org/ns#a7853> <http://example.org/ns#a7853> <http://example.org/ns#a7853> .
+<http://example.org/ns#a7854> <http://example.org/ns#a7854> <http://example.org/ns#a7854> .
+<http://example.org/ns#a7855> <http://example.org/ns#a7855> <http://example.org/ns#a7855> .
+<http://example.org/ns#a7856> <http://example.org/ns#a7856> <http://example.org/ns#a7856> .
+<http://example.org/ns#a7857> <http://example.org/ns#a7857> <http://example.org/ns#a7857> .
+<http://example.org/ns#a7858> <http://example.org/ns#a7858> <http://example.org/ns#a7858> .
+<http://example.org/ns#a7859> <http://example.org/ns#a7859> <http://example.org/ns#a7859> .
+<http://example.org/ns#a7860> <http://example.org/ns#a7860> <http://example.org/ns#a7860> .
+<http://example.org/ns#a7861> <http://example.org/ns#a7861> <http://example.org/ns#a7861> .
+<http://example.org/ns#a7862> <http://example.org/ns#a7862> <http://example.org/ns#a7862> .
+<http://example.org/ns#a7863> <http://example.org/ns#a7863> <http://example.org/ns#a7863> .
+<http://example.org/ns#a7864> <http://example.org/ns#a7864> <http://example.org/ns#a7864> .
+<http://example.org/ns#a7865> <http://example.org/ns#a7865> <http://example.org/ns#a7865> .
+<http://example.org/ns#a7866> <http://example.org/ns#a7866> <http://example.org/ns#a7866> .
+<http://example.org/ns#a7867> <http://example.org/ns#a7867> <http://example.org/ns#a7867> .
+<http://example.org/ns#a7868> <http://example.org/ns#a7868> <http://example.org/ns#a7868> .
+<http://example.org/ns#a7869> <http://example.org/ns#a7869> <http://example.org/ns#a7869> .
+<http://example.org/ns#a7870> <http://example.org/ns#a7870> <http://example.org/ns#a7870> .
+<http://example.org/ns#a7871> <http://example.org/ns#a7871> <http://example.org/ns#a7871> .
+<http://example.org/ns#a7872> <http://example.org/ns#a7872> <http://example.org/ns#a7872> .
+<http://example.org/ns#a7873> <http://example.org/ns#a7873> <http://example.org/ns#a7873> .
+<http://example.org/ns#a7874> <http://example.org/ns#a7874> <http://example.org/ns#a7874> .
+<http://example.org/ns#a7875> <http://example.org/ns#a7875> <http://example.org/ns#a7875> .
+<http://example.org/ns#a7876> <http://example.org/ns#a7876> <http://example.org/ns#a7876> .
+<http://example.org/ns#a7877> <http://example.org/ns#a7877> <http://example.org/ns#a7877> .
+<http://example.org/ns#a7878> <http://example.org/ns#a7878> <http://example.org/ns#a7878> .
+<http://example.org/ns#a7879> <http://example.org/ns#a7879> <http://example.org/ns#a7879> .
+<http://example.org/ns#a7880> <http://example.org/ns#a7880> <http://example.org/ns#a7880> .
+<http://example.org/ns#a7881> <http://example.org/ns#a7881> <http://example.org/ns#a7881> .
+<http://example.org/ns#a7882> <http://example.org/ns#a7882> <http://example.org/ns#a7882> .
+<http://example.org/ns#a7883> <http://example.org/ns#a7883> <http://example.org/ns#a7883> .
+<http://example.org/ns#a7884> <http://example.org/ns#a7884> <http://example.org/ns#a7884> .
+<http://example.org/ns#a7885> <http://example.org/ns#a7885> <http://example.org/ns#a7885> .
+<http://example.org/ns#a7886> <http://example.org/ns#a7886> <http://example.org/ns#a7886> .
+<http://example.org/ns#a7887> <http://example.org/ns#a7887> <http://example.org/ns#a7887> .
+<http://example.org/ns#a7888> <http://example.org/ns#a7888> <http://example.org/ns#a7888> .
+<http://example.org/ns#a7889> <http://example.org/ns#a7889> <http://example.org/ns#a7889> .
+<http://example.org/ns#a7890> <http://example.org/ns#a7890> <http://example.org/ns#a7890> .
+<http://example.org/ns#a7891> <http://example.org/ns#a7891> <http://example.org/ns#a7891> .
+<http://example.org/ns#a7892> <http://example.org/ns#a7892> <http://example.org/ns#a7892> .
+<http://example.org/ns#a7893> <http://example.org/ns#a7893> <http://example.org/ns#a7893> .
+<http://example.org/ns#a7894> <http://example.org/ns#a7894> <http://example.org/ns#a7894> .
+<http://example.org/ns#a7895> <http://example.org/ns#a7895> <http://example.org/ns#a7895> .
+<http://example.org/ns#a7896> <http://example.org/ns#a7896> <http://example.org/ns#a7896> .
+<http://example.org/ns#a7897> <http://example.org/ns#a7897> <http://example.org/ns#a7897> .
+<http://example.org/ns#a7898> <http://example.org/ns#a7898> <http://example.org/ns#a7898> .
+<http://example.org/ns#a7899> <http://example.org/ns#a7899> <http://example.org/ns#a7899> .
+<http://example.org/ns#a7900> <http://example.org/ns#a7900> <http://example.org/ns#a7900> .
+<http://example.org/ns#a7901> <http://example.org/ns#a7901> <http://example.org/ns#a7901> .
+<http://example.org/ns#a7902> <http://example.org/ns#a7902> <http://example.org/ns#a7902> .
+<http://example.org/ns#a7903> <http://example.org/ns#a7903> <http://example.org/ns#a7903> .
+<http://example.org/ns#a7904> <http://example.org/ns#a7904> <http://example.org/ns#a7904> .
+<http://example.org/ns#a7905> <http://example.org/ns#a7905> <http://example.org/ns#a7905> .
+<http://example.org/ns#a7906> <http://example.org/ns#a7906> <http://example.org/ns#a7906> .
+<http://example.org/ns#a7907> <http://example.org/ns#a7907> <http://example.org/ns#a7907> .
+<http://example.org/ns#a7908> <http://example.org/ns#a7908> <http://example.org/ns#a7908> .
+<http://example.org/ns#a7909> <http://example.org/ns#a7909> <http://example.org/ns#a7909> .
+<http://example.org/ns#a7910> <http://example.org/ns#a7910> <http://example.org/ns#a7910> .
+<http://example.org/ns#a7911> <http://example.org/ns#a7911> <http://example.org/ns#a7911> .
+<http://example.org/ns#a7912> <http://example.org/ns#a7912> <http://example.org/ns#a7912> .
+<http://example.org/ns#a7913> <http://example.org/ns#a7913> <http://example.org/ns#a7913> .
+<http://example.org/ns#a7914> <http://example.org/ns#a7914> <http://example.org/ns#a7914> .
+<http://example.org/ns#a7915> <http://example.org/ns#a7915> <http://example.org/ns#a7915> .
+<http://example.org/ns#a7916> <http://example.org/ns#a7916> <http://example.org/ns#a7916> .
+<http://example.org/ns#a7917> <http://example.org/ns#a7917> <http://example.org/ns#a7917> .
+<http://example.org/ns#a7918> <http://example.org/ns#a7918> <http://example.org/ns#a7918> .
+<http://example.org/ns#a7919> <http://example.org/ns#a7919> <http://example.org/ns#a7919> .
+<http://example.org/ns#a7920> <http://example.org/ns#a7920> <http://example.org/ns#a7920> .
+<http://example.org/ns#a7921> <http://example.org/ns#a7921> <http://example.org/ns#a7921> .
+<http://example.org/ns#a7922> <http://example.org/ns#a7922> <http://example.org/ns#a7922> .
+<http://example.org/ns#a7923> <http://example.org/ns#a7923> <http://example.org/ns#a7923> .
+<http://example.org/ns#a7924> <http://example.org/ns#a7924> <http://example.org/ns#a7924> .
+<http://example.org/ns#a7925> <http://example.org/ns#a7925> <http://example.org/ns#a7925> .
+<http://example.org/ns#a7926> <http://example.org/ns#a7926> <http://example.org/ns#a7926> .
+<http://example.org/ns#a7927> <http://example.org/ns#a7927> <http://example.org/ns#a7927> .
+<http://example.org/ns#a7928> <http://example.org/ns#a7928> <http://example.org/ns#a7928> .
+<http://example.org/ns#a7929> <http://example.org/ns#a7929> <http://example.org/ns#a7929> .
+<http://example.org/ns#a7930> <http://example.org/ns#a7930> <http://example.org/ns#a7930> .
+<http://example.org/ns#a7931> <http://example.org/ns#a7931> <http://example.org/ns#a7931> .
+<http://example.org/ns#a7932> <http://example.org/ns#a7932> <http://example.org/ns#a7932> .
+<http://example.org/ns#a7933> <http://example.org/ns#a7933> <http://example.org/ns#a7933> .
+<http://example.org/ns#a7934> <http://example.org/ns#a7934> <http://example.org/ns#a7934> .
+<http://example.org/ns#a7935> <http://example.org/ns#a7935> <http://example.org/ns#a7935> .
+<http://example.org/ns#a7936> <http://example.org/ns#a7936> <http://example.org/ns#a7936> .
+<http://example.org/ns#a7937> <http://example.org/ns#a7937> <http://example.org/ns#a7937> .
+<http://example.org/ns#a7938> <http://example.org/ns#a7938> <http://example.org/ns#a7938> .
+<http://example.org/ns#a7939> <http://example.org/ns#a7939> <http://example.org/ns#a7939> .
+<http://example.org/ns#a7940> <http://example.org/ns#a7940> <http://example.org/ns#a7940> .
+<http://example.org/ns#a7941> <http://example.org/ns#a7941> <http://example.org/ns#a7941> .
+<http://example.org/ns#a7942> <http://example.org/ns#a7942> <http://example.org/ns#a7942> .
+<http://example.org/ns#a7943> <http://example.org/ns#a7943> <http://example.org/ns#a7943> .
+<http://example.org/ns#a7944> <http://example.org/ns#a7944> <http://example.org/ns#a7944> .
+<http://example.org/ns#a7945> <http://example.org/ns#a7945> <http://example.org/ns#a7945> .
+<http://example.org/ns#a7946> <http://example.org/ns#a7946> <http://example.org/ns#a7946> .
+<http://example.org/ns#a7947> <http://example.org/ns#a7947> <http://example.org/ns#a7947> .
+<http://example.org/ns#a7948> <http://example.org/ns#a7948> <http://example.org/ns#a7948> .
+<http://example.org/ns#a7949> <http://example.org/ns#a7949> <http://example.org/ns#a7949> .
+<http://example.org/ns#a7950> <http://example.org/ns#a7950> <http://example.org/ns#a7950> .
+<http://example.org/ns#a7951> <http://example.org/ns#a7951> <http://example.org/ns#a7951> .
+<http://example.org/ns#a7952> <http://example.org/ns#a7952> <http://example.org/ns#a7952> .
+<http://example.org/ns#a7953> <http://example.org/ns#a7953> <http://example.org/ns#a7953> .
+<http://example.org/ns#a7954> <http://example.org/ns#a7954> <http://example.org/ns#a7954> .
+<http://example.org/ns#a7955> <http://example.org/ns#a7955> <http://example.org/ns#a7955> .
+<http://example.org/ns#a7956> <http://example.org/ns#a7956> <http://example.org/ns#a7956> .
+<http://example.org/ns#a7957> <http://example.org/ns#a7957> <http://example.org/ns#a7957> .
+<http://example.org/ns#a7958> <http://example.org/ns#a7958> <http://example.org/ns#a7958> .
+<http://example.org/ns#a7959> <http://example.org/ns#a7959> <http://example.org/ns#a7959> .
+<http://example.org/ns#a7960> <http://example.org/ns#a7960> <http://example.org/ns#a7960> .
+<http://example.org/ns#a7961> <http://example.org/ns#a7961> <http://example.org/ns#a7961> .
+<http://example.org/ns#a7962> <http://example.org/ns#a7962> <http://example.org/ns#a7962> .
+<http://example.org/ns#a7963> <http://example.org/ns#a7963> <http://example.org/ns#a7963> .
+<http://example.org/ns#a7964> <http://example.org/ns#a7964> <http://example.org/ns#a7964> .
+<http://example.org/ns#a7965> <http://example.org/ns#a7965> <http://example.org/ns#a7965> .
+<http://example.org/ns#a7966> <http://example.org/ns#a7966> <http://example.org/ns#a7966> .
+<http://example.org/ns#a7967> <http://example.org/ns#a7967> <http://example.org/ns#a7967> .
+<http://example.org/ns#a7968> <http://example.org/ns#a7968> <http://example.org/ns#a7968> .
+<http://example.org/ns#a7969> <http://example.org/ns#a7969> <http://example.org/ns#a7969> .
+<http://example.org/ns#a7970> <http://example.org/ns#a7970> <http://example.org/ns#a7970> .
+<http://example.org/ns#a7971> <http://example.org/ns#a7971> <http://example.org/ns#a7971> .
+<http://example.org/ns#a7972> <http://example.org/ns#a7972> <http://example.org/ns#a7972> .
+<http://example.org/ns#a7973> <http://example.org/ns#a7973> <http://example.org/ns#a7973> .
+<http://example.org/ns#a7974> <http://example.org/ns#a7974> <http://example.org/ns#a7974> .
+<http://example.org/ns#a7975> <http://example.org/ns#a7975> <http://example.org/ns#a7975> .
+<http://example.org/ns#a7976> <http://example.org/ns#a7976> <http://example.org/ns#a7976> .
+<http://example.org/ns#a7977> <http://example.org/ns#a7977> <http://example.org/ns#a7977> .
+<http://example.org/ns#a7978> <http://example.org/ns#a7978> <http://example.org/ns#a7978> .
+<http://example.org/ns#a7979> <http://example.org/ns#a7979> <http://example.org/ns#a7979> .
+<http://example.org/ns#a7980> <http://example.org/ns#a7980> <http://example.org/ns#a7980> .
+<http://example.org/ns#a7981> <http://example.org/ns#a7981> <http://example.org/ns#a7981> .
+<http://example.org/ns#a7982> <http://example.org/ns#a7982> <http://example.org/ns#a7982> .
+<http://example.org/ns#a7983> <http://example.org/ns#a7983> <http://example.org/ns#a7983> .
+<http://example.org/ns#a7984> <http://example.org/ns#a7984> <http://example.org/ns#a7984> .
+<http://example.org/ns#a7985> <http://example.org/ns#a7985> <http://example.org/ns#a7985> .
+<http://example.org/ns#a7986> <http://example.org/ns#a7986> <http://example.org/ns#a7986> .
+<http://example.org/ns#a7987> <http://example.org/ns#a7987> <http://example.org/ns#a7987> .
+<http://example.org/ns#a7988> <http://example.org/ns#a7988> <http://example.org/ns#a7988> .
+<http://example.org/ns#a7989> <http://example.org/ns#a7989> <http://example.org/ns#a7989> .
+<http://example.org/ns#a7990> <http://example.org/ns#a7990> <http://example.org/ns#a7990> .
+<http://example.org/ns#a7991> <http://example.org/ns#a7991> <http://example.org/ns#a7991> .
+<http://example.org/ns#a7992> <http://example.org/ns#a7992> <http://example.org/ns#a7992> .
+<http://example.org/ns#a7993> <http://example.org/ns#a7993> <http://example.org/ns#a7993> .
+<http://example.org/ns#a7994> <http://example.org/ns#a7994> <http://example.org/ns#a7994> .
+<http://example.org/ns#a7995> <http://example.org/ns#a7995> <http://example.org/ns#a7995> .
+<http://example.org/ns#a7996> <http://example.org/ns#a7996> <http://example.org/ns#a7996> .
+<http://example.org/ns#a7997> <http://example.org/ns#a7997> <http://example.org/ns#a7997> .
+<http://example.org/ns#a7998> <http://example.org/ns#a7998> <http://example.org/ns#a7998> .
+<http://example.org/ns#a7999> <http://example.org/ns#a7999> <http://example.org/ns#a7999> .
+<http://example.org/ns#a8000> <http://example.org/ns#a8000> <http://example.org/ns#a8000> .
+<http://example.org/ns#a8001> <http://example.org/ns#a8001> <http://example.org/ns#a8001> .
+<http://example.org/ns#a8002> <http://example.org/ns#a8002> <http://example.org/ns#a8002> .
+<http://example.org/ns#a8003> <http://example.org/ns#a8003> <http://example.org/ns#a8003> .
+<http://example.org/ns#a8004> <http://example.org/ns#a8004> <http://example.org/ns#a8004> .
+<http://example.org/ns#a8005> <http://example.org/ns#a8005> <http://example.org/ns#a8005> .
+<http://example.org/ns#a8006> <http://example.org/ns#a8006> <http://example.org/ns#a8006> .
+<http://example.org/ns#a8007> <http://example.org/ns#a8007> <http://example.org/ns#a8007> .
+<http://example.org/ns#a8008> <http://example.org/ns#a8008> <http://example.org/ns#a8008> .
+<http://example.org/ns#a8009> <http://example.org/ns#a8009> <http://example.org/ns#a8009> .
+<http://example.org/ns#a8010> <http://example.org/ns#a8010> <http://example.org/ns#a8010> .
+<http://example.org/ns#a8011> <http://example.org/ns#a8011> <http://example.org/ns#a8011> .
+<http://example.org/ns#a8012> <http://example.org/ns#a8012> <http://example.org/ns#a8012> .
+<http://example.org/ns#a8013> <http://example.org/ns#a8013> <http://example.org/ns#a8013> .
+<http://example.org/ns#a8014> <http://example.org/ns#a8014> <http://example.org/ns#a8014> .
+<http://example.org/ns#a8015> <http://example.org/ns#a8015> <http://example.org/ns#a8015> .
+<http://example.org/ns#a8016> <http://example.org/ns#a8016> <http://example.org/ns#a8016> .
+<http://example.org/ns#a8017> <http://example.org/ns#a8017> <http://example.org/ns#a8017> .
+<http://example.org/ns#a8018> <http://example.org/ns#a8018> <http://example.org/ns#a8018> .
+<http://example.org/ns#a8019> <http://example.org/ns#a8019> <http://example.org/ns#a8019> .
+<http://example.org/ns#a8020> <http://example.org/ns#a8020> <http://example.org/ns#a8020> .
+<http://example.org/ns#a8021> <http://example.org/ns#a8021> <http://example.org/ns#a8021> .
+<http://example.org/ns#a8022> <http://example.org/ns#a8022> <http://example.org/ns#a8022> .
+<http://example.org/ns#a8023> <http://example.org/ns#a8023> <http://example.org/ns#a8023> .
+<http://example.org/ns#a8024> <http://example.org/ns#a8024> <http://example.org/ns#a8024> .
+<http://example.org/ns#a8025> <http://example.org/ns#a8025> <http://example.org/ns#a8025> .
+<http://example.org/ns#a8026> <http://example.org/ns#a8026> <http://example.org/ns#a8026> .
+<http://example.org/ns#a8027> <http://example.org/ns#a8027> <http://example.org/ns#a8027> .
+<http://example.org/ns#a8028> <http://example.org/ns#a8028> <http://example.org/ns#a8028> .
+<http://example.org/ns#a8029> <http://example.org/ns#a8029> <http://example.org/ns#a8029> .
+<http://example.org/ns#a8030> <http://example.org/ns#a8030> <http://example.org/ns#a8030> .
+<http://example.org/ns#a8031> <http://example.org/ns#a8031> <http://example.org/ns#a8031> .
+<http://example.org/ns#a8032> <http://example.org/ns#a8032> <http://example.org/ns#a8032> .
+<http://example.org/ns#a8033> <http://example.org/ns#a8033> <http://example.org/ns#a8033> .
+<http://example.org/ns#a8034> <http://example.org/ns#a8034> <http://example.org/ns#a8034> .
+<http://example.org/ns#a8035> <http://example.org/ns#a8035> <http://example.org/ns#a8035> .
+<http://example.org/ns#a8036> <http://example.org/ns#a8036> <http://example.org/ns#a8036> .
+<http://example.org/ns#a8037> <http://example.org/ns#a8037> <http://example.org/ns#a8037> .
+<http://example.org/ns#a8038> <http://example.org/ns#a8038> <http://example.org/ns#a8038> .
+<http://example.org/ns#a8039> <http://example.org/ns#a8039> <http://example.org/ns#a8039> .
+<http://example.org/ns#a8040> <http://example.org/ns#a8040> <http://example.org/ns#a8040> .
+<http://example.org/ns#a8041> <http://example.org/ns#a8041> <http://example.org/ns#a8041> .
+<http://example.org/ns#a8042> <http://example.org/ns#a8042> <http://example.org/ns#a8042> .
+<http://example.org/ns#a8043> <http://example.org/ns#a8043> <http://example.org/ns#a8043> .
+<http://example.org/ns#a8044> <http://example.org/ns#a8044> <http://example.org/ns#a8044> .
+<http://example.org/ns#a8045> <http://example.org/ns#a8045> <http://example.org/ns#a8045> .
+<http://example.org/ns#a8046> <http://example.org/ns#a8046> <http://example.org/ns#a8046> .
+<http://example.org/ns#a8047> <http://example.org/ns#a8047> <http://example.org/ns#a8047> .
+<http://example.org/ns#a8048> <http://example.org/ns#a8048> <http://example.org/ns#a8048> .
+<http://example.org/ns#a8049> <http://example.org/ns#a8049> <http://example.org/ns#a8049> .
+<http://example.org/ns#a8050> <http://example.org/ns#a8050> <http://example.org/ns#a8050> .
+<http://example.org/ns#a8051> <http://example.org/ns#a8051> <http://example.org/ns#a8051> .
+<http://example.org/ns#a8052> <http://example.org/ns#a8052> <http://example.org/ns#a8052> .
+<http://example.org/ns#a8053> <http://example.org/ns#a8053> <http://example.org/ns#a8053> .
+<http://example.org/ns#a8054> <http://example.org/ns#a8054> <http://example.org/ns#a8054> .
+<http://example.org/ns#a8055> <http://example.org/ns#a8055> <http://example.org/ns#a8055> .
+<http://example.org/ns#a8056> <http://example.org/ns#a8056> <http://example.org/ns#a8056> .
+<http://example.org/ns#a8057> <http://example.org/ns#a8057> <http://example.org/ns#a8057> .
+<http://example.org/ns#a8058> <http://example.org/ns#a8058> <http://example.org/ns#a8058> .
+<http://example.org/ns#a8059> <http://example.org/ns#a8059> <http://example.org/ns#a8059> .
+<http://example.org/ns#a8060> <http://example.org/ns#a8060> <http://example.org/ns#a8060> .
+<http://example.org/ns#a8061> <http://example.org/ns#a8061> <http://example.org/ns#a8061> .
+<http://example.org/ns#a8062> <http://example.org/ns#a8062> <http://example.org/ns#a8062> .
+<http://example.org/ns#a8063> <http://example.org/ns#a8063> <http://example.org/ns#a8063> .
+<http://example.org/ns#a8064> <http://example.org/ns#a8064> <http://example.org/ns#a8064> .
+<http://example.org/ns#a8065> <http://example.org/ns#a8065> <http://example.org/ns#a8065> .
+<http://example.org/ns#a8066> <http://example.org/ns#a8066> <http://example.org/ns#a8066> .
+<http://example.org/ns#a8067> <http://example.org/ns#a8067> <http://example.org/ns#a8067> .
+<http://example.org/ns#a8068> <http://example.org/ns#a8068> <http://example.org/ns#a8068> .
+<http://example.org/ns#a8069> <http://example.org/ns#a8069> <http://example.org/ns#a8069> .
+<http://example.org/ns#a8070> <http://example.org/ns#a8070> <http://example.org/ns#a8070> .
+<http://example.org/ns#a8071> <http://example.org/ns#a8071> <http://example.org/ns#a8071> .
+<http://example.org/ns#a8072> <http://example.org/ns#a8072> <http://example.org/ns#a8072> .
+<http://example.org/ns#a8073> <http://example.org/ns#a8073> <http://example.org/ns#a8073> .
+<http://example.org/ns#a8074> <http://example.org/ns#a8074> <http://example.org/ns#a8074> .
+<http://example.org/ns#a8075> <http://example.org/ns#a8075> <http://example.org/ns#a8075> .
+<http://example.org/ns#a8076> <http://example.org/ns#a8076> <http://example.org/ns#a8076> .
+<http://example.org/ns#a8077> <http://example.org/ns#a8077> <http://example.org/ns#a8077> .
+<http://example.org/ns#a8078> <http://example.org/ns#a8078> <http://example.org/ns#a8078> .
+<http://example.org/ns#a8079> <http://example.org/ns#a8079> <http://example.org/ns#a8079> .
+<http://example.org/ns#a8080> <http://example.org/ns#a8080> <http://example.org/ns#a8080> .
+<http://example.org/ns#a8081> <http://example.org/ns#a8081> <http://example.org/ns#a8081> .
+<http://example.org/ns#a8082> <http://example.org/ns#a8082> <http://example.org/ns#a8082> .
+<http://example.org/ns#a8083> <http://example.org/ns#a8083> <http://example.org/ns#a8083> .
+<http://example.org/ns#a8084> <http://example.org/ns#a8084> <http://example.org/ns#a8084> .
+<http://example.org/ns#a8085> <http://example.org/ns#a8085> <http://example.org/ns#a8085> .
+<http://example.org/ns#a8086> <http://example.org/ns#a8086> <http://example.org/ns#a8086> .
+<http://example.org/ns#a8087> <http://example.org/ns#a8087> <http://example.org/ns#a8087> .
+<http://example.org/ns#a8088> <http://example.org/ns#a8088> <http://example.org/ns#a8088> .
+<http://example.org/ns#a8089> <http://example.org/ns#a8089> <http://example.org/ns#a8089> .
+<http://example.org/ns#a8090> <http://example.org/ns#a8090> <http://example.org/ns#a8090> .
+<http://example.org/ns#a8091> <http://example.org/ns#a8091> <http://example.org/ns#a8091> .
+<http://example.org/ns#a8092> <http://example.org/ns#a8092> <http://example.org/ns#a8092> .
+<http://example.org/ns#a8093> <http://example.org/ns#a8093> <http://example.org/ns#a8093> .
+<http://example.org/ns#a8094> <http://example.org/ns#a8094> <http://example.org/ns#a8094> .
+<http://example.org/ns#a8095> <http://example.org/ns#a8095> <http://example.org/ns#a8095> .
+<http://example.org/ns#a8096> <http://example.org/ns#a8096> <http://example.org/ns#a8096> .
+<http://example.org/ns#a8097> <http://example.org/ns#a8097> <http://example.org/ns#a8097> .
+<http://example.org/ns#a8098> <http://example.org/ns#a8098> <http://example.org/ns#a8098> .
+<http://example.org/ns#a8099> <http://example.org/ns#a8099> <http://example.org/ns#a8099> .
+<http://example.org/ns#a8100> <http://example.org/ns#a8100> <http://example.org/ns#a8100> .
+<http://example.org/ns#a8101> <http://example.org/ns#a8101> <http://example.org/ns#a8101> .
+<http://example.org/ns#a8102> <http://example.org/ns#a8102> <http://example.org/ns#a8102> .
+<http://example.org/ns#a8103> <http://example.org/ns#a8103> <http://example.org/ns#a8103> .
+<http://example.org/ns#a8104> <http://example.org/ns#a8104> <http://example.org/ns#a8104> .
+<http://example.org/ns#a8105> <http://example.org/ns#a8105> <http://example.org/ns#a8105> .
+<http://example.org/ns#a8106> <http://example.org/ns#a8106> <http://example.org/ns#a8106> .
+<http://example.org/ns#a8107> <http://example.org/ns#a8107> <http://example.org/ns#a8107> .
+<http://example.org/ns#a8108> <http://example.org/ns#a8108> <http://example.org/ns#a8108> .
+<http://example.org/ns#a8109> <http://example.org/ns#a8109> <http://example.org/ns#a8109> .
+<http://example.org/ns#a8110> <http://example.org/ns#a8110> <http://example.org/ns#a8110> .
+<http://example.org/ns#a8111> <http://example.org/ns#a8111> <http://example.org/ns#a8111> .
+<http://example.org/ns#a8112> <http://example.org/ns#a8112> <http://example.org/ns#a8112> .
+<http://example.org/ns#a8113> <http://example.org/ns#a8113> <http://example.org/ns#a8113> .
+<http://example.org/ns#a8114> <http://example.org/ns#a8114> <http://example.org/ns#a8114> .
+<http://example.org/ns#a8115> <http://example.org/ns#a8115> <http://example.org/ns#a8115> .
+<http://example.org/ns#a8116> <http://example.org/ns#a8116> <http://example.org/ns#a8116> .
+<http://example.org/ns#a8117> <http://example.org/ns#a8117> <http://example.org/ns#a8117> .
+<http://example.org/ns#a8118> <http://example.org/ns#a8118> <http://example.org/ns#a8118> .
+<http://example.org/ns#a8119> <http://example.org/ns#a8119> <http://example.org/ns#a8119> .
+<http://example.org/ns#a8120> <http://example.org/ns#a8120> <http://example.org/ns#a8120> .
+<http://example.org/ns#a8121> <http://example.org/ns#a8121> <http://example.org/ns#a8121> .
+<http://example.org/ns#a8122> <http://example.org/ns#a8122> <http://example.org/ns#a8122> .
+<http://example.org/ns#a8123> <http://example.org/ns#a8123> <http://example.org/ns#a8123> .
+<http://example.org/ns#a8124> <http://example.org/ns#a8124> <http://example.org/ns#a8124> .
+<http://example.org/ns#a8125> <http://example.org/ns#a8125> <http://example.org/ns#a8125> .
+<http://example.org/ns#a8126> <http://example.org/ns#a8126> <http://example.org/ns#a8126> .
+<http://example.org/ns#a8127> <http://example.org/ns#a8127> <http://example.org/ns#a8127> .
+<http://example.org/ns#a8128> <http://example.org/ns#a8128> <http://example.org/ns#a8128> .
+<http://example.org/ns#a8129> <http://example.org/ns#a8129> <http://example.org/ns#a8129> .
+<http://example.org/ns#a8130> <http://example.org/ns#a8130> <http://example.org/ns#a8130> .
+<http://example.org/ns#a8131> <http://example.org/ns#a8131> <http://example.org/ns#a8131> .
+<http://example.org/ns#a8132> <http://example.org/ns#a8132> <http://example.org/ns#a8132> .
+<http://example.org/ns#a8133> <http://example.org/ns#a8133> <http://example.org/ns#a8133> .
+<http://example.org/ns#a8134> <http://example.org/ns#a8134> <http://example.org/ns#a8134> .
+<http://example.org/ns#a8135> <http://example.org/ns#a8135> <http://example.org/ns#a8135> .
+<http://example.org/ns#a8136> <http://example.org/ns#a8136> <http://example.org/ns#a8136> .
+<http://example.org/ns#a8137> <http://example.org/ns#a8137> <http://example.org/ns#a8137> .
+<http://example.org/ns#a8138> <http://example.org/ns#a8138> <http://example.org/ns#a8138> .
+<http://example.org/ns#a8139> <http://example.org/ns#a8139> <http://example.org/ns#a8139> .
+<http://example.org/ns#a8140> <http://example.org/ns#a8140> <http://example.org/ns#a8140> .
+<http://example.org/ns#a8141> <http://example.org/ns#a8141> <http://example.org/ns#a8141> .
+<http://example.org/ns#a8142> <http://example.org/ns#a8142> <http://example.org/ns#a8142> .
+<http://example.org/ns#a8143> <http://example.org/ns#a8143> <http://example.org/ns#a8143> .
+<http://example.org/ns#a8144> <http://example.org/ns#a8144> <http://example.org/ns#a8144> .
+<http://example.org/ns#a8145> <http://example.org/ns#a8145> <http://example.org/ns#a8145> .
+<http://example.org/ns#a8146> <http://example.org/ns#a8146> <http://example.org/ns#a8146> .
+<http://example.org/ns#a8147> <http://example.org/ns#a8147> <http://example.org/ns#a8147> .
+<http://example.org/ns#a8148> <http://example.org/ns#a8148> <http://example.org/ns#a8148> .
+<http://example.org/ns#a8149> <http://example.org/ns#a8149> <http://example.org/ns#a8149> .
+<http://example.org/ns#a8150> <http://example.org/ns#a8150> <http://example.org/ns#a8150> .
+<http://example.org/ns#a8151> <http://example.org/ns#a8151> <http://example.org/ns#a8151> .
+<http://example.org/ns#a8152> <http://example.org/ns#a8152> <http://example.org/ns#a8152> .
+<http://example.org/ns#a8153> <http://example.org/ns#a8153> <http://example.org/ns#a8153> .
+<http://example.org/ns#a8154> <http://example.org/ns#a8154> <http://example.org/ns#a8154> .
+<http://example.org/ns#a8155> <http://example.org/ns#a8155> <http://example.org/ns#a8155> .
+<http://example.org/ns#a8156> <http://example.org/ns#a8156> <http://example.org/ns#a8156> .
+<http://example.org/ns#a8157> <http://example.org/ns#a8157> <http://example.org/ns#a8157> .
+<http://example.org/ns#a8158> <http://example.org/ns#a8158> <http://example.org/ns#a8158> .
+<http://example.org/ns#a8159> <http://example.org/ns#a8159> <http://example.org/ns#a8159> .
+<http://example.org/ns#a8160> <http://example.org/ns#a8160> <http://example.org/ns#a8160> .
+<http://example.org/ns#a8161> <http://example.org/ns#a8161> <http://example.org/ns#a8161> .
+<http://example.org/ns#a8162> <http://example.org/ns#a8162> <http://example.org/ns#a8162> .
+<http://example.org/ns#a8163> <http://example.org/ns#a8163> <http://example.org/ns#a8163> .
+<http://example.org/ns#a8164> <http://example.org/ns#a8164> <http://example.org/ns#a8164> .
+<http://example.org/ns#a8165> <http://example.org/ns#a8165> <http://example.org/ns#a8165> .
+<http://example.org/ns#a8166> <http://example.org/ns#a8166> <http://example.org/ns#a8166> .
+<http://example.org/ns#a8167> <http://example.org/ns#a8167> <http://example.org/ns#a8167> .
+<http://example.org/ns#a8168> <http://example.org/ns#a8168> <http://example.org/ns#a8168> .
+<http://example.org/ns#a8169> <http://example.org/ns#a8169> <http://example.org/ns#a8169> .
+<http://example.org/ns#a8170> <http://example.org/ns#a8170> <http://example.org/ns#a8170> .
+<http://example.org/ns#a8171> <http://example.org/ns#a8171> <http://example.org/ns#a8171> .
+<http://example.org/ns#a8172> <http://example.org/ns#a8172> <http://example.org/ns#a8172> .
+<http://example.org/ns#a8173> <http://example.org/ns#a8173> <http://example.org/ns#a8173> .
+<http://example.org/ns#a8174> <http://example.org/ns#a8174> <http://example.org/ns#a8174> .
+<http://example.org/ns#a8175> <http://example.org/ns#a8175> <http://example.org/ns#a8175> .
+<http://example.org/ns#a8176> <http://example.org/ns#a8176> <http://example.org/ns#a8176> .
+<http://example.org/ns#a8177> <http://example.org/ns#a8177> <http://example.org/ns#a8177> .
+<http://example.org/ns#a8178> <http://example.org/ns#a8178> <http://example.org/ns#a8178> .
+<http://example.org/ns#a8179> <http://example.org/ns#a8179> <http://example.org/ns#a8179> .
+<http://example.org/ns#a8180> <http://example.org/ns#a8180> <http://example.org/ns#a8180> .
+<http://example.org/ns#a8181> <http://example.org/ns#a8181> <http://example.org/ns#a8181> .
+<http://example.org/ns#a8182> <http://example.org/ns#a8182> <http://example.org/ns#a8182> .
+<http://example.org/ns#a8183> <http://example.org/ns#a8183> <http://example.org/ns#a8183> .
+<http://example.org/ns#a8184> <http://example.org/ns#a8184> <http://example.org/ns#a8184> .
+<http://example.org/ns#a8185> <http://example.org/ns#a8185> <http://example.org/ns#a8185> .
+<http://example.org/ns#a8186> <http://example.org/ns#a8186> <http://example.org/ns#a8186> .
+<http://example.org/ns#a8187> <http://example.org/ns#a8187> <http://example.org/ns#a8187> .
+<http://example.org/ns#a8188> <http://example.org/ns#a8188> <http://example.org/ns#a8188> .
+<http://example.org/ns#a8189> <http://example.org/ns#a8189> <http://example.org/ns#a8189> .
+<http://example.org/ns#a8190> <http://example.org/ns#a8190> <http://example.org/ns#a8190> .
+<http://example.org/ns#a8191> <http://example.org/ns#a8191> <http://example.org/ns#a8191> .
+<http://example.org/ns#a8192> <http://example.org/ns#a8192> <http://example.org/ns#a8192> .
+<http://example.org/ns#a8193> <http://example.org/ns#a8193> <http://example.org/ns#a8193> .
+<http://example.org/ns#a8194> <http://example.org/ns#a8194> <http://example.org/ns#a8194> .
+<http://example.org/ns#a8195> <http://example.org/ns#a8195> <http://example.org/ns#a8195> .
+<http://example.org/ns#a8196> <http://example.org/ns#a8196> <http://example.org/ns#a8196> .
+<http://example.org/ns#a8197> <http://example.org/ns#a8197> <http://example.org/ns#a8197> .
+<http://example.org/ns#a8198> <http://example.org/ns#a8198> <http://example.org/ns#a8198> .
+<http://example.org/ns#a8199> <http://example.org/ns#a8199> <http://example.org/ns#a8199> .
+<http://example.org/ns#a8200> <http://example.org/ns#a8200> <http://example.org/ns#a8200> .
+<http://example.org/ns#a8201> <http://example.org/ns#a8201> <http://example.org/ns#a8201> .
+<http://example.org/ns#a8202> <http://example.org/ns#a8202> <http://example.org/ns#a8202> .
+<http://example.org/ns#a8203> <http://example.org/ns#a8203> <http://example.org/ns#a8203> .
+<http://example.org/ns#a8204> <http://example.org/ns#a8204> <http://example.org/ns#a8204> .
+<http://example.org/ns#a8205> <http://example.org/ns#a8205> <http://example.org/ns#a8205> .
+<http://example.org/ns#a8206> <http://example.org/ns#a8206> <http://example.org/ns#a8206> .
+<http://example.org/ns#a8207> <http://example.org/ns#a8207> <http://example.org/ns#a8207> .
+<http://example.org/ns#a8208> <http://example.org/ns#a8208> <http://example.org/ns#a8208> .
+<http://example.org/ns#a8209> <http://example.org/ns#a8209> <http://example.org/ns#a8209> .
+<http://example.org/ns#a8210> <http://example.org/ns#a8210> <http://example.org/ns#a8210> .
+<http://example.org/ns#a8211> <http://example.org/ns#a8211> <http://example.org/ns#a8211> .
+<http://example.org/ns#a8212> <http://example.org/ns#a8212> <http://example.org/ns#a8212> .
+<http://example.org/ns#a8213> <http://example.org/ns#a8213> <http://example.org/ns#a8213> .
+<http://example.org/ns#a8214> <http://example.org/ns#a8214> <http://example.org/ns#a8214> .
+<http://example.org/ns#a8215> <http://example.org/ns#a8215> <http://example.org/ns#a8215> .
+<http://example.org/ns#a8216> <http://example.org/ns#a8216> <http://example.org/ns#a8216> .
+<http://example.org/ns#a8217> <http://example.org/ns#a8217> <http://example.org/ns#a8217> .
+<http://example.org/ns#a8218> <http://example.org/ns#a8218> <http://example.org/ns#a8218> .
+<http://example.org/ns#a8219> <http://example.org/ns#a8219> <http://example.org/ns#a8219> .
+<http://example.org/ns#a8220> <http://example.org/ns#a8220> <http://example.org/ns#a8220> .
+<http://example.org/ns#a8221> <http://example.org/ns#a8221> <http://example.org/ns#a8221> .
+<http://example.org/ns#a8222> <http://example.org/ns#a8222> <http://example.org/ns#a8222> .
+<http://example.org/ns#a8223> <http://example.org/ns#a8223> <http://example.org/ns#a8223> .
+<http://example.org/ns#a8224> <http://example.org/ns#a8224> <http://example.org/ns#a8224> .
+<http://example.org/ns#a8225> <http://example.org/ns#a8225> <http://example.org/ns#a8225> .
+<http://example.org/ns#a8226> <http://example.org/ns#a8226> <http://example.org/ns#a8226> .
+<http://example.org/ns#a8227> <http://example.org/ns#a8227> <http://example.org/ns#a8227> .
+<http://example.org/ns#a8228> <http://example.org/ns#a8228> <http://example.org/ns#a8228> .
+<http://example.org/ns#a8229> <http://example.org/ns#a8229> <http://example.org/ns#a8229> .
+<http://example.org/ns#a8230> <http://example.org/ns#a8230> <http://example.org/ns#a8230> .
+<http://example.org/ns#a8231> <http://example.org/ns#a8231> <http://example.org/ns#a8231> .
+<http://example.org/ns#a8232> <http://example.org/ns#a8232> <http://example.org/ns#a8232> .
+<http://example.org/ns#a8233> <http://example.org/ns#a8233> <http://example.org/ns#a8233> .
+<http://example.org/ns#a8234> <http://example.org/ns#a8234> <http://example.org/ns#a8234> .
+<http://example.org/ns#a8235> <http://example.org/ns#a8235> <http://example.org/ns#a8235> .
+<http://example.org/ns#a8236> <http://example.org/ns#a8236> <http://example.org/ns#a8236> .
+<http://example.org/ns#a8237> <http://example.org/ns#a8237> <http://example.org/ns#a8237> .
+<http://example.org/ns#a8238> <http://example.org/ns#a8238> <http://example.org/ns#a8238> .
+<http://example.org/ns#a8239> <http://example.org/ns#a8239> <http://example.org/ns#a8239> .
+<http://example.org/ns#a8240> <http://example.org/ns#a8240> <http://example.org/ns#a8240> .
+<http://example.org/ns#a8241> <http://example.org/ns#a8241> <http://example.org/ns#a8241> .
+<http://example.org/ns#a8242> <http://example.org/ns#a8242> <http://example.org/ns#a8242> .
+<http://example.org/ns#a8243> <http://example.org/ns#a8243> <http://example.org/ns#a8243> .
+<http://example.org/ns#a8244> <http://example.org/ns#a8244> <http://example.org/ns#a8244> .
+<http://example.org/ns#a8245> <http://example.org/ns#a8245> <http://example.org/ns#a8245> .
+<http://example.org/ns#a8246> <http://example.org/ns#a8246> <http://example.org/ns#a8246> .
+<http://example.org/ns#a8247> <http://example.org/ns#a8247> <http://example.org/ns#a8247> .
+<http://example.org/ns#a8248> <http://example.org/ns#a8248> <http://example.org/ns#a8248> .
+<http://example.org/ns#a8249> <http://example.org/ns#a8249> <http://example.org/ns#a8249> .
+<http://example.org/ns#a8250> <http://example.org/ns#a8250> <http://example.org/ns#a8250> .
+<http://example.org/ns#a8251> <http://example.org/ns#a8251> <http://example.org/ns#a8251> .
+<http://example.org/ns#a8252> <http://example.org/ns#a8252> <http://example.org/ns#a8252> .
+<http://example.org/ns#a8253> <http://example.org/ns#a8253> <http://example.org/ns#a8253> .
+<http://example.org/ns#a8254> <http://example.org/ns#a8254> <http://example.org/ns#a8254> .
+<http://example.org/ns#a8255> <http://example.org/ns#a8255> <http://example.org/ns#a8255> .
+<http://example.org/ns#a8256> <http://example.org/ns#a8256> <http://example.org/ns#a8256> .
+<http://example.org/ns#a8257> <http://example.org/ns#a8257> <http://example.org/ns#a8257> .
+<http://example.org/ns#a8258> <http://example.org/ns#a8258> <http://example.org/ns#a8258> .
+<http://example.org/ns#a8259> <http://example.org/ns#a8259> <http://example.org/ns#a8259> .
+<http://example.org/ns#a8260> <http://example.org/ns#a8260> <http://example.org/ns#a8260> .
+<http://example.org/ns#a8261> <http://example.org/ns#a8261> <http://example.org/ns#a8261> .
+<http://example.org/ns#a8262> <http://example.org/ns#a8262> <http://example.org/ns#a8262> .
+<http://example.org/ns#a8263> <http://example.org/ns#a8263> <http://example.org/ns#a8263> .
+<http://example.org/ns#a8264> <http://example.org/ns#a8264> <http://example.org/ns#a8264> .
+<http://example.org/ns#a8265> <http://example.org/ns#a8265> <http://example.org/ns#a8265> .
+<http://example.org/ns#a8266> <http://example.org/ns#a8266> <http://example.org/ns#a8266> .
+<http://example.org/ns#a8267> <http://example.org/ns#a8267> <http://example.org/ns#a8267> .
+<http://example.org/ns#a8268> <http://example.org/ns#a8268> <http://example.org/ns#a8268> .
+<http://example.org/ns#a8269> <http://example.org/ns#a8269> <http://example.org/ns#a8269> .
+<http://example.org/ns#a8270> <http://example.org/ns#a8270> <http://example.org/ns#a8270> .
+<http://example.org/ns#a8271> <http://example.org/ns#a8271> <http://example.org/ns#a8271> .
+<http://example.org/ns#a8272> <http://example.org/ns#a8272> <http://example.org/ns#a8272> .
+<http://example.org/ns#a8273> <http://example.org/ns#a8273> <http://example.org/ns#a8273> .
+<http://example.org/ns#a8274> <http://example.org/ns#a8274> <http://example.org/ns#a8274> .
+<http://example.org/ns#a8275> <http://example.org/ns#a8275> <http://example.org/ns#a8275> .
+<http://example.org/ns#a8276> <http://example.org/ns#a8276> <http://example.org/ns#a8276> .
+<http://example.org/ns#a8277> <http://example.org/ns#a8277> <http://example.org/ns#a8277> .
+<http://example.org/ns#a8278> <http://example.org/ns#a8278> <http://example.org/ns#a8278> .
+<http://example.org/ns#a8279> <http://example.org/ns#a8279> <http://example.org/ns#a8279> .
+<http://example.org/ns#a8280> <http://example.org/ns#a8280> <http://example.org/ns#a8280> .
+<http://example.org/ns#a8281> <http://example.org/ns#a8281> <http://example.org/ns#a8281> .
+<http://example.org/ns#a8282> <http://example.org/ns#a8282> <http://example.org/ns#a8282> .
+<http://example.org/ns#a8283> <http://example.org/ns#a8283> <http://example.org/ns#a8283> .
+<http://example.org/ns#a8284> <http://example.org/ns#a8284> <http://example.org/ns#a8284> .
+<http://example.org/ns#a8285> <http://example.org/ns#a8285> <http://example.org/ns#a8285> .
+<http://example.org/ns#a8286> <http://example.org/ns#a8286> <http://example.org/ns#a8286> .
+<http://example.org/ns#a8287> <http://example.org/ns#a8287> <http://example.org/ns#a8287> .
+<http://example.org/ns#a8288> <http://example.org/ns#a8288> <http://example.org/ns#a8288> .
+<http://example.org/ns#a8289> <http://example.org/ns#a8289> <http://example.org/ns#a8289> .
+<http://example.org/ns#a8290> <http://example.org/ns#a8290> <http://example.org/ns#a8290> .
+<http://example.org/ns#a8291> <http://example.org/ns#a8291> <http://example.org/ns#a8291> .
+<http://example.org/ns#a8292> <http://example.org/ns#a8292> <http://example.org/ns#a8292> .
+<http://example.org/ns#a8293> <http://example.org/ns#a8293> <http://example.org/ns#a8293> .
+<http://example.org/ns#a8294> <http://example.org/ns#a8294> <http://example.org/ns#a8294> .
+<http://example.org/ns#a8295> <http://example.org/ns#a8295> <http://example.org/ns#a8295> .
+<http://example.org/ns#a8296> <http://example.org/ns#a8296> <http://example.org/ns#a8296> .
+<http://example.org/ns#a8297> <http://example.org/ns#a8297> <http://example.org/ns#a8297> .
+<http://example.org/ns#a8298> <http://example.org/ns#a8298> <http://example.org/ns#a8298> .
+<http://example.org/ns#a8299> <http://example.org/ns#a8299> <http://example.org/ns#a8299> .
+<http://example.org/ns#a8300> <http://example.org/ns#a8300> <http://example.org/ns#a8300> .
+<http://example.org/ns#a8301> <http://example.org/ns#a8301> <http://example.org/ns#a8301> .
+<http://example.org/ns#a8302> <http://example.org/ns#a8302> <http://example.org/ns#a8302> .
+<http://example.org/ns#a8303> <http://example.org/ns#a8303> <http://example.org/ns#a8303> .
+<http://example.org/ns#a8304> <http://example.org/ns#a8304> <http://example.org/ns#a8304> .
+<http://example.org/ns#a8305> <http://example.org/ns#a8305> <http://example.org/ns#a8305> .
+<http://example.org/ns#a8306> <http://example.org/ns#a8306> <http://example.org/ns#a8306> .
+<http://example.org/ns#a8307> <http://example.org/ns#a8307> <http://example.org/ns#a8307> .
+<http://example.org/ns#a8308> <http://example.org/ns#a8308> <http://example.org/ns#a8308> .
+<http://example.org/ns#a8309> <http://example.org/ns#a8309> <http://example.org/ns#a8309> .
+<http://example.org/ns#a8310> <http://example.org/ns#a8310> <http://example.org/ns#a8310> .
+<http://example.org/ns#a8311> <http://example.org/ns#a8311> <http://example.org/ns#a8311> .
+<http://example.org/ns#a8312> <http://example.org/ns#a8312> <http://example.org/ns#a8312> .
+<http://example.org/ns#a8313> <http://example.org/ns#a8313> <http://example.org/ns#a8313> .
+<http://example.org/ns#a8314> <http://example.org/ns#a8314> <http://example.org/ns#a8314> .
+<http://example.org/ns#a8315> <http://example.org/ns#a8315> <http://example.org/ns#a8315> .
+<http://example.org/ns#a8316> <http://example.org/ns#a8316> <http://example.org/ns#a8316> .
+<http://example.org/ns#a8317> <http://example.org/ns#a8317> <http://example.org/ns#a8317> .
+<http://example.org/ns#a8318> <http://example.org/ns#a8318> <http://example.org/ns#a8318> .
+<http://example.org/ns#a8319> <http://example.org/ns#a8319> <http://example.org/ns#a8319> .
+<http://example.org/ns#a8320> <http://example.org/ns#a8320> <http://example.org/ns#a8320> .
+<http://example.org/ns#a8321> <http://example.org/ns#a8321> <http://example.org/ns#a8321> .
+<http://example.org/ns#a8322> <http://example.org/ns#a8322> <http://example.org/ns#a8322> .
+<http://example.org/ns#a8323> <http://example.org/ns#a8323> <http://example.org/ns#a8323> .
+<http://example.org/ns#a8324> <http://example.org/ns#a8324> <http://example.org/ns#a8324> .
+<http://example.org/ns#a8325> <http://example.org/ns#a8325> <http://example.org/ns#a8325> .
+<http://example.org/ns#a8326> <http://example.org/ns#a8326> <http://example.org/ns#a8326> .
+<http://example.org/ns#a8327> <http://example.org/ns#a8327> <http://example.org/ns#a8327> .
+<http://example.org/ns#a8328> <http://example.org/ns#a8328> <http://example.org/ns#a8328> .
+<http://example.org/ns#a8329> <http://example.org/ns#a8329> <http://example.org/ns#a8329> .
+<http://example.org/ns#a8330> <http://example.org/ns#a8330> <http://example.org/ns#a8330> .
+<http://example.org/ns#a8331> <http://example.org/ns#a8331> <http://example.org/ns#a8331> .
+<http://example.org/ns#a8332> <http://example.org/ns#a8332> <http://example.org/ns#a8332> .
+<http://example.org/ns#a8333> <http://example.org/ns#a8333> <http://example.org/ns#a8333> .
+<http://example.org/ns#a8334> <http://example.org/ns#a8334> <http://example.org/ns#a8334> .
+<http://example.org/ns#a8335> <http://example.org/ns#a8335> <http://example.org/ns#a8335> .
+<http://example.org/ns#a8336> <http://example.org/ns#a8336> <http://example.org/ns#a8336> .
+<http://example.org/ns#a8337> <http://example.org/ns#a8337> <http://example.org/ns#a8337> .
+<http://example.org/ns#a8338> <http://example.org/ns#a8338> <http://example.org/ns#a8338> .
+<http://example.org/ns#a8339> <http://example.org/ns#a8339> <http://example.org/ns#a8339> .
+<http://example.org/ns#a8340> <http://example.org/ns#a8340> <http://example.org/ns#a8340> .
+<http://example.org/ns#a8341> <http://example.org/ns#a8341> <http://example.org/ns#a8341> .
+<http://example.org/ns#a8342> <http://example.org/ns#a8342> <http://example.org/ns#a8342> .
+<http://example.org/ns#a8343> <http://example.org/ns#a8343> <http://example.org/ns#a8343> .
+<http://example.org/ns#a8344> <http://example.org/ns#a8344> <http://example.org/ns#a8344> .
+<http://example.org/ns#a8345> <http://example.org/ns#a8345> <http://example.org/ns#a8345> .
+<http://example.org/ns#a8346> <http://example.org/ns#a8346> <http://example.org/ns#a8346> .
+<http://example.org/ns#a8347> <http://example.org/ns#a8347> <http://example.org/ns#a8347> .
+<http://example.org/ns#a8348> <http://example.org/ns#a8348> <http://example.org/ns#a8348> .
+<http://example.org/ns#a8349> <http://example.org/ns#a8349> <http://example.org/ns#a8349> .
+<http://example.org/ns#a8350> <http://example.org/ns#a8350> <http://example.org/ns#a8350> .
+<http://example.org/ns#a8351> <http://example.org/ns#a8351> <http://example.org/ns#a8351> .
+<http://example.org/ns#a8352> <http://example.org/ns#a8352> <http://example.org/ns#a8352> .
+<http://example.org/ns#a8353> <http://example.org/ns#a8353> <http://example.org/ns#a8353> .
+<http://example.org/ns#a8354> <http://example.org/ns#a8354> <http://example.org/ns#a8354> .
+<http://example.org/ns#a8355> <http://example.org/ns#a8355> <http://example.org/ns#a8355> .
+<http://example.org/ns#a8356> <http://example.org/ns#a8356> <http://example.org/ns#a8356> .
+<http://example.org/ns#a8357> <http://example.org/ns#a8357> <http://example.org/ns#a8357> .
+<http://example.org/ns#a8358> <http://example.org/ns#a8358> <http://example.org/ns#a8358> .
+<http://example.org/ns#a8359> <http://example.org/ns#a8359> <http://example.org/ns#a8359> .
+<http://example.org/ns#a8360> <http://example.org/ns#a8360> <http://example.org/ns#a8360> .
+<http://example.org/ns#a8361> <http://example.org/ns#a8361> <http://example.org/ns#a8361> .
+<http://example.org/ns#a8362> <http://example.org/ns#a8362> <http://example.org/ns#a8362> .
+<http://example.org/ns#a8363> <http://example.org/ns#a8363> <http://example.org/ns#a8363> .
+<http://example.org/ns#a8364> <http://example.org/ns#a8364> <http://example.org/ns#a8364> .
+<http://example.org/ns#a8365> <http://example.org/ns#a8365> <http://example.org/ns#a8365> .
+<http://example.org/ns#a8366> <http://example.org/ns#a8366> <http://example.org/ns#a8366> .
+<http://example.org/ns#a8367> <http://example.org/ns#a8367> <http://example.org/ns#a8367> .
+<http://example.org/ns#a8368> <http://example.org/ns#a8368> <http://example.org/ns#a8368> .
+<http://example.org/ns#a8369> <http://example.org/ns#a8369> <http://example.org/ns#a8369> .
+<http://example.org/ns#a8370> <http://example.org/ns#a8370> <http://example.org/ns#a8370> .
+<http://example.org/ns#a8371> <http://example.org/ns#a8371> <http://example.org/ns#a8371> .
+<http://example.org/ns#a8372> <http://example.org/ns#a8372> <http://example.org/ns#a8372> .
+<http://example.org/ns#a8373> <http://example.org/ns#a8373> <http://example.org/ns#a8373> .
+<http://example.org/ns#a8374> <http://example.org/ns#a8374> <http://example.org/ns#a8374> .
+<http://example.org/ns#a8375> <http://example.org/ns#a8375> <http://example.org/ns#a8375> .
+<http://example.org/ns#a8376> <http://example.org/ns#a8376> <http://example.org/ns#a8376> .
+<http://example.org/ns#a8377> <http://example.org/ns#a8377> <http://example.org/ns#a8377> .
+<http://example.org/ns#a8378> <http://example.org/ns#a8378> <http://example.org/ns#a8378> .
+<http://example.org/ns#a8379> <http://example.org/ns#a8379> <http://example.org/ns#a8379> .
+<http://example.org/ns#a8380> <http://example.org/ns#a8380> <http://example.org/ns#a8380> .
+<http://example.org/ns#a8381> <http://example.org/ns#a8381> <http://example.org/ns#a8381> .
+<http://example.org/ns#a8382> <http://example.org/ns#a8382> <http://example.org/ns#a8382> .
+<http://example.org/ns#a8383> <http://example.org/ns#a8383> <http://example.org/ns#a8383> .
+<http://example.org/ns#a8384> <http://example.org/ns#a8384> <http://example.org/ns#a8384> .
+<http://example.org/ns#a8385> <http://example.org/ns#a8385> <http://example.org/ns#a8385> .
+<http://example.org/ns#a8386> <http://example.org/ns#a8386> <http://example.org/ns#a8386> .
+<http://example.org/ns#a8387> <http://example.org/ns#a8387> <http://example.org/ns#a8387> .
+<http://example.org/ns#a8388> <http://example.org/ns#a8388> <http://example.org/ns#a8388> .
+<http://example.org/ns#a8389> <http://example.org/ns#a8389> <http://example.org/ns#a8389> .
+<http://example.org/ns#a8390> <http://example.org/ns#a8390> <http://example.org/ns#a8390> .
+<http://example.org/ns#a8391> <http://example.org/ns#a8391> <http://example.org/ns#a8391> .
+<http://example.org/ns#a8392> <http://example.org/ns#a8392> <http://example.org/ns#a8392> .
+<http://example.org/ns#a8393> <http://example.org/ns#a8393> <http://example.org/ns#a8393> .
+<http://example.org/ns#a8394> <http://example.org/ns#a8394> <http://example.org/ns#a8394> .
+<http://example.org/ns#a8395> <http://example.org/ns#a8395> <http://example.org/ns#a8395> .
+<http://example.org/ns#a8396> <http://example.org/ns#a8396> <http://example.org/ns#a8396> .
+<http://example.org/ns#a8397> <http://example.org/ns#a8397> <http://example.org/ns#a8397> .
+<http://example.org/ns#a8398> <http://example.org/ns#a8398> <http://example.org/ns#a8398> .
+<http://example.org/ns#a8399> <http://example.org/ns#a8399> <http://example.org/ns#a8399> .
+<http://example.org/ns#a8400> <http://example.org/ns#a8400> <http://example.org/ns#a8400> .
+<http://example.org/ns#a8401> <http://example.org/ns#a8401> <http://example.org/ns#a8401> .
+<http://example.org/ns#a8402> <http://example.org/ns#a8402> <http://example.org/ns#a8402> .
+<http://example.org/ns#a8403> <http://example.org/ns#a8403> <http://example.org/ns#a8403> .
+<http://example.org/ns#a8404> <http://example.org/ns#a8404> <http://example.org/ns#a8404> .
+<http://example.org/ns#a8405> <http://example.org/ns#a8405> <http://example.org/ns#a8405> .
+<http://example.org/ns#a8406> <http://example.org/ns#a8406> <http://example.org/ns#a8406> .
+<http://example.org/ns#a8407> <http://example.org/ns#a8407> <http://example.org/ns#a8407> .
+<http://example.org/ns#a8408> <http://example.org/ns#a8408> <http://example.org/ns#a8408> .
+<http://example.org/ns#a8409> <http://example.org/ns#a8409> <http://example.org/ns#a8409> .
+<http://example.org/ns#a8410> <http://example.org/ns#a8410> <http://example.org/ns#a8410> .
+<http://example.org/ns#a8411> <http://example.org/ns#a8411> <http://example.org/ns#a8411> .
+<http://example.org/ns#a8412> <http://example.org/ns#a8412> <http://example.org/ns#a8412> .
+<http://example.org/ns#a8413> <http://example.org/ns#a8413> <http://example.org/ns#a8413> .
+<http://example.org/ns#a8414> <http://example.org/ns#a8414> <http://example.org/ns#a8414> .
+<http://example.org/ns#a8415> <http://example.org/ns#a8415> <http://example.org/ns#a8415> .
+<http://example.org/ns#a8416> <http://example.org/ns#a8416> <http://example.org/ns#a8416> .
+<http://example.org/ns#a8417> <http://example.org/ns#a8417> <http://example.org/ns#a8417> .
+<http://example.org/ns#a8418> <http://example.org/ns#a8418> <http://example.org/ns#a8418> .
+<http://example.org/ns#a8419> <http://example.org/ns#a8419> <http://example.org/ns#a8419> .
+<http://example.org/ns#a8420> <http://example.org/ns#a8420> <http://example.org/ns#a8420> .
+<http://example.org/ns#a8421> <http://example.org/ns#a8421> <http://example.org/ns#a8421> .
+<http://example.org/ns#a8422> <http://example.org/ns#a8422> <http://example.org/ns#a8422> .
+<http://example.org/ns#a8423> <http://example.org/ns#a8423> <http://example.org/ns#a8423> .
+<http://example.org/ns#a8424> <http://example.org/ns#a8424> <http://example.org/ns#a8424> .
+<http://example.org/ns#a8425> <http://example.org/ns#a8425> <http://example.org/ns#a8425> .
+<http://example.org/ns#a8426> <http://example.org/ns#a8426> <http://example.org/ns#a8426> .
+<http://example.org/ns#a8427> <http://example.org/ns#a8427> <http://example.org/ns#a8427> .
+<http://example.org/ns#a8428> <http://example.org/ns#a8428> <http://example.org/ns#a8428> .
+<http://example.org/ns#a8429> <http://example.org/ns#a8429> <http://example.org/ns#a8429> .
+<http://example.org/ns#a8430> <http://example.org/ns#a8430> <http://example.org/ns#a8430> .
+<http://example.org/ns#a8431> <http://example.org/ns#a8431> <http://example.org/ns#a8431> .
+<http://example.org/ns#a8432> <http://example.org/ns#a8432> <http://example.org/ns#a8432> .
+<http://example.org/ns#a8433> <http://example.org/ns#a8433> <http://example.org/ns#a8433> .
+<http://example.org/ns#a8434> <http://example.org/ns#a8434> <http://example.org/ns#a8434> .
+<http://example.org/ns#a8435> <http://example.org/ns#a8435> <http://example.org/ns#a8435> .
+<http://example.org/ns#a8436> <http://example.org/ns#a8436> <http://example.org/ns#a8436> .
+<http://example.org/ns#a8437> <http://example.org/ns#a8437> <http://example.org/ns#a8437> .
+<http://example.org/ns#a8438> <http://example.org/ns#a8438> <http://example.org/ns#a8438> .
+<http://example.org/ns#a8439> <http://example.org/ns#a8439> <http://example.org/ns#a8439> .
+<http://example.org/ns#a8440> <http://example.org/ns#a8440> <http://example.org/ns#a8440> .
+<http://example.org/ns#a8441> <http://example.org/ns#a8441> <http://example.org/ns#a8441> .
+<http://example.org/ns#a8442> <http://example.org/ns#a8442> <http://example.org/ns#a8442> .
+<http://example.org/ns#a8443> <http://example.org/ns#a8443> <http://example.org/ns#a8443> .
+<http://example.org/ns#a8444> <http://example.org/ns#a8444> <http://example.org/ns#a8444> .
+<http://example.org/ns#a8445> <http://example.org/ns#a8445> <http://example.org/ns#a8445> .
+<http://example.org/ns#a8446> <http://example.org/ns#a8446> <http://example.org/ns#a8446> .
+<http://example.org/ns#a8447> <http://example.org/ns#a8447> <http://example.org/ns#a8447> .
+<http://example.org/ns#a8448> <http://example.org/ns#a8448> <http://example.org/ns#a8448> .
+<http://example.org/ns#a8449> <http://example.org/ns#a8449> <http://example.org/ns#a8449> .
+<http://example.org/ns#a8450> <http://example.org/ns#a8450> <http://example.org/ns#a8450> .
+<http://example.org/ns#a8451> <http://example.org/ns#a8451> <http://example.org/ns#a8451> .
+<http://example.org/ns#a8452> <http://example.org/ns#a8452> <http://example.org/ns#a8452> .
+<http://example.org/ns#a8453> <http://example.org/ns#a8453> <http://example.org/ns#a8453> .
+<http://example.org/ns#a8454> <http://example.org/ns#a8454> <http://example.org/ns#a8454> .
+<http://example.org/ns#a8455> <http://example.org/ns#a8455> <http://example.org/ns#a8455> .
+<http://example.org/ns#a8456> <http://example.org/ns#a8456> <http://example.org/ns#a8456> .
+<http://example.org/ns#a8457> <http://example.org/ns#a8457> <http://example.org/ns#a8457> .
+<http://example.org/ns#a8458> <http://example.org/ns#a8458> <http://example.org/ns#a8458> .
+<http://example.org/ns#a8459> <http://example.org/ns#a8459> <http://example.org/ns#a8459> .
+<http://example.org/ns#a8460> <http://example.org/ns#a8460> <http://example.org/ns#a8460> .
+<http://example.org/ns#a8461> <http://example.org/ns#a8461> <http://example.org/ns#a8461> .
+<http://example.org/ns#a8462> <http://example.org/ns#a8462> <http://example.org/ns#a8462> .
+<http://example.org/ns#a8463> <http://example.org/ns#a8463> <http://example.org/ns#a8463> .
+<http://example.org/ns#a8464> <http://example.org/ns#a8464> <http://example.org/ns#a8464> .
+<http://example.org/ns#a8465> <http://example.org/ns#a8465> <http://example.org/ns#a8465> .
+<http://example.org/ns#a8466> <http://example.org/ns#a8466> <http://example.org/ns#a8466> .
+<http://example.org/ns#a8467> <http://example.org/ns#a8467> <http://example.org/ns#a8467> .
+<http://example.org/ns#a8468> <http://example.org/ns#a8468> <http://example.org/ns#a8468> .
+<http://example.org/ns#a8469> <http://example.org/ns#a8469> <http://example.org/ns#a8469> .
+<http://example.org/ns#a8470> <http://example.org/ns#a8470> <http://example.org/ns#a8470> .
+<http://example.org/ns#a8471> <http://example.org/ns#a8471> <http://example.org/ns#a8471> .
+<http://example.org/ns#a8472> <http://example.org/ns#a8472> <http://example.org/ns#a8472> .
+<http://example.org/ns#a8473> <http://example.org/ns#a8473> <http://example.org/ns#a8473> .
+<http://example.org/ns#a8474> <http://example.org/ns#a8474> <http://example.org/ns#a8474> .
+<http://example.org/ns#a8475> <http://example.org/ns#a8475> <http://example.org/ns#a8475> .
+<http://example.org/ns#a8476> <http://example.org/ns#a8476> <http://example.org/ns#a8476> .
+<http://example.org/ns#a8477> <http://example.org/ns#a8477> <http://example.org/ns#a8477> .
+<http://example.org/ns#a8478> <http://example.org/ns#a8478> <http://example.org/ns#a8478> .
+<http://example.org/ns#a8479> <http://example.org/ns#a8479> <http://example.org/ns#a8479> .
+<http://example.org/ns#a8480> <http://example.org/ns#a8480> <http://example.org/ns#a8480> .
+<http://example.org/ns#a8481> <http://example.org/ns#a8481> <http://example.org/ns#a8481> .
+<http://example.org/ns#a8482> <http://example.org/ns#a8482> <http://example.org/ns#a8482> .
+<http://example.org/ns#a8483> <http://example.org/ns#a8483> <http://example.org/ns#a8483> .
+<http://example.org/ns#a8484> <http://example.org/ns#a8484> <http://example.org/ns#a8484> .
+<http://example.org/ns#a8485> <http://example.org/ns#a8485> <http://example.org/ns#a8485> .
+<http://example.org/ns#a8486> <http://example.org/ns#a8486> <http://example.org/ns#a8486> .
+<http://example.org/ns#a8487> <http://example.org/ns#a8487> <http://example.org/ns#a8487> .
+<http://example.org/ns#a8488> <http://example.org/ns#a8488> <http://example.org/ns#a8488> .
+<http://example.org/ns#a8489> <http://example.org/ns#a8489> <http://example.org/ns#a8489> .
+<http://example.org/ns#a8490> <http://example.org/ns#a8490> <http://example.org/ns#a8490> .
+<http://example.org/ns#a8491> <http://example.org/ns#a8491> <http://example.org/ns#a8491> .
+<http://example.org/ns#a8492> <http://example.org/ns#a8492> <http://example.org/ns#a8492> .
+<http://example.org/ns#a8493> <http://example.org/ns#a8493> <http://example.org/ns#a8493> .
+<http://example.org/ns#a8494> <http://example.org/ns#a8494> <http://example.org/ns#a8494> .
+<http://example.org/ns#a8495> <http://example.org/ns#a8495> <http://example.org/ns#a8495> .
+<http://example.org/ns#a8496> <http://example.org/ns#a8496> <http://example.org/ns#a8496> .
+<http://example.org/ns#a8497> <http://example.org/ns#a8497> <http://example.org/ns#a8497> .
+<http://example.org/ns#a8498> <http://example.org/ns#a8498> <http://example.org/ns#a8498> .
+<http://example.org/ns#a8499> <http://example.org/ns#a8499> <http://example.org/ns#a8499> .
+<http://example.org/ns#a8500> <http://example.org/ns#a8500> <http://example.org/ns#a8500> .
+<http://example.org/ns#a8501> <http://example.org/ns#a8501> <http://example.org/ns#a8501> .
+<http://example.org/ns#a8502> <http://example.org/ns#a8502> <http://example.org/ns#a8502> .
+<http://example.org/ns#a8503> <http://example.org/ns#a8503> <http://example.org/ns#a8503> .
+<http://example.org/ns#a8504> <http://example.org/ns#a8504> <http://example.org/ns#a8504> .
+<http://example.org/ns#a8505> <http://example.org/ns#a8505> <http://example.org/ns#a8505> .
+<http://example.org/ns#a8506> <http://example.org/ns#a8506> <http://example.org/ns#a8506> .
+<http://example.org/ns#a8507> <http://example.org/ns#a8507> <http://example.org/ns#a8507> .
+<http://example.org/ns#a8508> <http://example.org/ns#a8508> <http://example.org/ns#a8508> .
+<http://example.org/ns#a8509> <http://example.org/ns#a8509> <http://example.org/ns#a8509> .
+<http://example.org/ns#a8510> <http://example.org/ns#a8510> <http://example.org/ns#a8510> .
+<http://example.org/ns#a8511> <http://example.org/ns#a8511> <http://example.org/ns#a8511> .
+<http://example.org/ns#a8512> <http://example.org/ns#a8512> <http://example.org/ns#a8512> .
+<http://example.org/ns#a8513> <http://example.org/ns#a8513> <http://example.org/ns#a8513> .
+<http://example.org/ns#a8514> <http://example.org/ns#a8514> <http://example.org/ns#a8514> .
+<http://example.org/ns#a8515> <http://example.org/ns#a8515> <http://example.org/ns#a8515> .
+<http://example.org/ns#a8516> <http://example.org/ns#a8516> <http://example.org/ns#a8516> .
+<http://example.org/ns#a8517> <http://example.org/ns#a8517> <http://example.org/ns#a8517> .
+<http://example.org/ns#a8518> <http://example.org/ns#a8518> <http://example.org/ns#a8518> .
+<http://example.org/ns#a8519> <http://example.org/ns#a8519> <http://example.org/ns#a8519> .
+<http://example.org/ns#a8520> <http://example.org/ns#a8520> <http://example.org/ns#a8520> .
+<http://example.org/ns#a8521> <http://example.org/ns#a8521> <http://example.org/ns#a8521> .
+<http://example.org/ns#a8522> <http://example.org/ns#a8522> <http://example.org/ns#a8522> .
+<http://example.org/ns#a8523> <http://example.org/ns#a8523> <http://example.org/ns#a8523> .
+<http://example.org/ns#a8524> <http://example.org/ns#a8524> <http://example.org/ns#a8524> .
+<http://example.org/ns#a8525> <http://example.org/ns#a8525> <http://example.org/ns#a8525> .
+<http://example.org/ns#a8526> <http://example.org/ns#a8526> <http://example.org/ns#a8526> .
+<http://example.org/ns#a8527> <http://example.org/ns#a8527> <http://example.org/ns#a8527> .
+<http://example.org/ns#a8528> <http://example.org/ns#a8528> <http://example.org/ns#a8528> .
+<http://example.org/ns#a8529> <http://example.org/ns#a8529> <http://example.org/ns#a8529> .
+<http://example.org/ns#a8530> <http://example.org/ns#a8530> <http://example.org/ns#a8530> .
+<http://example.org/ns#a8531> <http://example.org/ns#a8531> <http://example.org/ns#a8531> .
+<http://example.org/ns#a8532> <http://example.org/ns#a8532> <http://example.org/ns#a8532> .
+<http://example.org/ns#a8533> <http://example.org/ns#a8533> <http://example.org/ns#a8533> .
+<http://example.org/ns#a8534> <http://example.org/ns#a8534> <http://example.org/ns#a8534> .
+<http://example.org/ns#a8535> <http://example.org/ns#a8535> <http://example.org/ns#a8535> .
+<http://example.org/ns#a8536> <http://example.org/ns#a8536> <http://example.org/ns#a8536> .
+<http://example.org/ns#a8537> <http://example.org/ns#a8537> <http://example.org/ns#a8537> .
+<http://example.org/ns#a8538> <http://example.org/ns#a8538> <http://example.org/ns#a8538> .
+<http://example.org/ns#a8539> <http://example.org/ns#a8539> <http://example.org/ns#a8539> .
+<http://example.org/ns#a8540> <http://example.org/ns#a8540> <http://example.org/ns#a8540> .
+<http://example.org/ns#a8541> <http://example.org/ns#a8541> <http://example.org/ns#a8541> .
+<http://example.org/ns#a8542> <http://example.org/ns#a8542> <http://example.org/ns#a8542> .
+<http://example.org/ns#a8543> <http://example.org/ns#a8543> <http://example.org/ns#a8543> .
+<http://example.org/ns#a8544> <http://example.org/ns#a8544> <http://example.org/ns#a8544> .
+<http://example.org/ns#a8545> <http://example.org/ns#a8545> <http://example.org/ns#a8545> .
+<http://example.org/ns#a8546> <http://example.org/ns#a8546> <http://example.org/ns#a8546> .
+<http://example.org/ns#a8547> <http://example.org/ns#a8547> <http://example.org/ns#a8547> .
+<http://example.org/ns#a8548> <http://example.org/ns#a8548> <http://example.org/ns#a8548> .
+<http://example.org/ns#a8549> <http://example.org/ns#a8549> <http://example.org/ns#a8549> .
+<http://example.org/ns#a8550> <http://example.org/ns#a8550> <http://example.org/ns#a8550> .
+<http://example.org/ns#a8551> <http://example.org/ns#a8551> <http://example.org/ns#a8551> .
+<http://example.org/ns#a8552> <http://example.org/ns#a8552> <http://example.org/ns#a8552> .
+<http://example.org/ns#a8553> <http://example.org/ns#a8553> <http://example.org/ns#a8553> .
+<http://example.org/ns#a8554> <http://example.org/ns#a8554> <http://example.org/ns#a8554> .
+<http://example.org/ns#a8555> <http://example.org/ns#a8555> <http://example.org/ns#a8555> .
+<http://example.org/ns#a8556> <http://example.org/ns#a8556> <http://example.org/ns#a8556> .
+<http://example.org/ns#a8557> <http://example.org/ns#a8557> <http://example.org/ns#a8557> .
+<http://example.org/ns#a8558> <http://example.org/ns#a8558> <http://example.org/ns#a8558> .
+<http://example.org/ns#a8559> <http://example.org/ns#a8559> <http://example.org/ns#a8559> .
+<http://example.org/ns#a8560> <http://example.org/ns#a8560> <http://example.org/ns#a8560> .
+<http://example.org/ns#a8561> <http://example.org/ns#a8561> <http://example.org/ns#a8561> .
+<http://example.org/ns#a8562> <http://example.org/ns#a8562> <http://example.org/ns#a8562> .
+<http://example.org/ns#a8563> <http://example.org/ns#a8563> <http://example.org/ns#a8563> .
+<http://example.org/ns#a8564> <http://example.org/ns#a8564> <http://example.org/ns#a8564> .
+<http://example.org/ns#a8565> <http://example.org/ns#a8565> <http://example.org/ns#a8565> .
+<http://example.org/ns#a8566> <http://example.org/ns#a8566> <http://example.org/ns#a8566> .
+<http://example.org/ns#a8567> <http://example.org/ns#a8567> <http://example.org/ns#a8567> .
+<http://example.org/ns#a8568> <http://example.org/ns#a8568> <http://example.org/ns#a8568> .
+<http://example.org/ns#a8569> <http://example.org/ns#a8569> <http://example.org/ns#a8569> .
+<http://example.org/ns#a8570> <http://example.org/ns#a8570> <http://example.org/ns#a8570> .
+<http://example.org/ns#a8571> <http://example.org/ns#a8571> <http://example.org/ns#a8571> .
+<http://example.org/ns#a8572> <http://example.org/ns#a8572> <http://example.org/ns#a8572> .
+<http://example.org/ns#a8573> <http://example.org/ns#a8573> <http://example.org/ns#a8573> .
+<http://example.org/ns#a8574> <http://example.org/ns#a8574> <http://example.org/ns#a8574> .
+<http://example.org/ns#a8575> <http://example.org/ns#a8575> <http://example.org/ns#a8575> .
+<http://example.org/ns#a8576> <http://example.org/ns#a8576> <http://example.org/ns#a8576> .
+<http://example.org/ns#a8577> <http://example.org/ns#a8577> <http://example.org/ns#a8577> .
+<http://example.org/ns#a8578> <http://example.org/ns#a8578> <http://example.org/ns#a8578> .
+<http://example.org/ns#a8579> <http://example.org/ns#a8579> <http://example.org/ns#a8579> .
+<http://example.org/ns#a8580> <http://example.org/ns#a8580> <http://example.org/ns#a8580> .
+<http://example.org/ns#a8581> <http://example.org/ns#a8581> <http://example.org/ns#a8581> .
+<http://example.org/ns#a8582> <http://example.org/ns#a8582> <http://example.org/ns#a8582> .
+<http://example.org/ns#a8583> <http://example.org/ns#a8583> <http://example.org/ns#a8583> .
+<http://example.org/ns#a8584> <http://example.org/ns#a8584> <http://example.org/ns#a8584> .
+<http://example.org/ns#a8585> <http://example.org/ns#a8585> <http://example.org/ns#a8585> .
+<http://example.org/ns#a8586> <http://example.org/ns#a8586> <http://example.org/ns#a8586> .
+<http://example.org/ns#a8587> <http://example.org/ns#a8587> <http://example.org/ns#a8587> .
+<http://example.org/ns#a8588> <http://example.org/ns#a8588> <http://example.org/ns#a8588> .
+<http://example.org/ns#a8589> <http://example.org/ns#a8589> <http://example.org/ns#a8589> .
+<http://example.org/ns#a8590> <http://example.org/ns#a8590> <http://example.org/ns#a8590> .
+<http://example.org/ns#a8591> <http://example.org/ns#a8591> <http://example.org/ns#a8591> .
+<http://example.org/ns#a8592> <http://example.org/ns#a8592> <http://example.org/ns#a8592> .
+<http://example.org/ns#a8593> <http://example.org/ns#a8593> <http://example.org/ns#a8593> .
+<http://example.org/ns#a8594> <http://example.org/ns#a8594> <http://example.org/ns#a8594> .
+<http://example.org/ns#a8595> <http://example.org/ns#a8595> <http://example.org/ns#a8595> .
+<http://example.org/ns#a8596> <http://example.org/ns#a8596> <http://example.org/ns#a8596> .
+<http://example.org/ns#a8597> <http://example.org/ns#a8597> <http://example.org/ns#a8597> .
+<http://example.org/ns#a8598> <http://example.org/ns#a8598> <http://example.org/ns#a8598> .
+<http://example.org/ns#a8599> <http://example.org/ns#a8599> <http://example.org/ns#a8599> .
+<http://example.org/ns#a8600> <http://example.org/ns#a8600> <http://example.org/ns#a8600> .
+<http://example.org/ns#a8601> <http://example.org/ns#a8601> <http://example.org/ns#a8601> .
+<http://example.org/ns#a8602> <http://example.org/ns#a8602> <http://example.org/ns#a8602> .
+<http://example.org/ns#a8603> <http://example.org/ns#a8603> <http://example.org/ns#a8603> .
+<http://example.org/ns#a8604> <http://example.org/ns#a8604> <http://example.org/ns#a8604> .
+<http://example.org/ns#a8605> <http://example.org/ns#a8605> <http://example.org/ns#a8605> .
+<http://example.org/ns#a8606> <http://example.org/ns#a8606> <http://example.org/ns#a8606> .
+<http://example.org/ns#a8607> <http://example.org/ns#a8607> <http://example.org/ns#a8607> .
+<http://example.org/ns#a8608> <http://example.org/ns#a8608> <http://example.org/ns#a8608> .
+<http://example.org/ns#a8609> <http://example.org/ns#a8609> <http://example.org/ns#a8609> .
+<http://example.org/ns#a8610> <http://example.org/ns#a8610> <http://example.org/ns#a8610> .
+<http://example.org/ns#a8611> <http://example.org/ns#a8611> <http://example.org/ns#a8611> .
+<http://example.org/ns#a8612> <http://example.org/ns#a8612> <http://example.org/ns#a8612> .
+<http://example.org/ns#a8613> <http://example.org/ns#a8613> <http://example.org/ns#a8613> .
+<http://example.org/ns#a8614> <http://example.org/ns#a8614> <http://example.org/ns#a8614> .
+<http://example.org/ns#a8615> <http://example.org/ns#a8615> <http://example.org/ns#a8615> .
+<http://example.org/ns#a8616> <http://example.org/ns#a8616> <http://example.org/ns#a8616> .
+<http://example.org/ns#a8617> <http://example.org/ns#a8617> <http://example.org/ns#a8617> .
+<http://example.org/ns#a8618> <http://example.org/ns#a8618> <http://example.org/ns#a8618> .
+<http://example.org/ns#a8619> <http://example.org/ns#a8619> <http://example.org/ns#a8619> .
+<http://example.org/ns#a8620> <http://example.org/ns#a8620> <http://example.org/ns#a8620> .
+<http://example.org/ns#a8621> <http://example.org/ns#a8621> <http://example.org/ns#a8621> .
+<http://example.org/ns#a8622> <http://example.org/ns#a8622> <http://example.org/ns#a8622> .
+<http://example.org/ns#a8623> <http://example.org/ns#a8623> <http://example.org/ns#a8623> .
+<http://example.org/ns#a8624> <http://example.org/ns#a8624> <http://example.org/ns#a8624> .
+<http://example.org/ns#a8625> <http://example.org/ns#a8625> <http://example.org/ns#a8625> .
+<http://example.org/ns#a8626> <http://example.org/ns#a8626> <http://example.org/ns#a8626> .
+<http://example.org/ns#a8627> <http://example.org/ns#a8627> <http://example.org/ns#a8627> .
+<http://example.org/ns#a8628> <http://example.org/ns#a8628> <http://example.org/ns#a8628> .
+<http://example.org/ns#a8629> <http://example.org/ns#a8629> <http://example.org/ns#a8629> .
+<http://example.org/ns#a8630> <http://example.org/ns#a8630> <http://example.org/ns#a8630> .
+<http://example.org/ns#a8631> <http://example.org/ns#a8631> <http://example.org/ns#a8631> .
+<http://example.org/ns#a8632> <http://example.org/ns#a8632> <http://example.org/ns#a8632> .
+<http://example.org/ns#a8633> <http://example.org/ns#a8633> <http://example.org/ns#a8633> .
+<http://example.org/ns#a8634> <http://example.org/ns#a8634> <http://example.org/ns#a8634> .
+<http://example.org/ns#a8635> <http://example.org/ns#a8635> <http://example.org/ns#a8635> .
+<http://example.org/ns#a8636> <http://example.org/ns#a8636> <http://example.org/ns#a8636> .
+<http://example.org/ns#a8637> <http://example.org/ns#a8637> <http://example.org/ns#a8637> .
+<http://example.org/ns#a8638> <http://example.org/ns#a8638> <http://example.org/ns#a8638> .
+<http://example.org/ns#a8639> <http://example.org/ns#a8639> <http://example.org/ns#a8639> .
+<http://example.org/ns#a8640> <http://example.org/ns#a8640> <http://example.org/ns#a8640> .
+<http://example.org/ns#a8641> <http://example.org/ns#a8641> <http://example.org/ns#a8641> .
+<http://example.org/ns#a8642> <http://example.org/ns#a8642> <http://example.org/ns#a8642> .
+<http://example.org/ns#a8643> <http://example.org/ns#a8643> <http://example.org/ns#a8643> .
+<http://example.org/ns#a8644> <http://example.org/ns#a8644> <http://example.org/ns#a8644> .
+<http://example.org/ns#a8645> <http://example.org/ns#a8645> <http://example.org/ns#a8645> .
+<http://example.org/ns#a8646> <http://example.org/ns#a8646> <http://example.org/ns#a8646> .
+<http://example.org/ns#a8647> <http://example.org/ns#a8647> <http://example.org/ns#a8647> .
+<http://example.org/ns#a8648> <http://example.org/ns#a8648> <http://example.org/ns#a8648> .
+<http://example.org/ns#a8649> <http://example.org/ns#a8649> <http://example.org/ns#a8649> .
+<http://example.org/ns#a8650> <http://example.org/ns#a8650> <http://example.org/ns#a8650> .
+<http://example.org/ns#a8651> <http://example.org/ns#a8651> <http://example.org/ns#a8651> .
+<http://example.org/ns#a8652> <http://example.org/ns#a8652> <http://example.org/ns#a8652> .
+<http://example.org/ns#a8653> <http://example.org/ns#a8653> <http://example.org/ns#a8653> .
+<http://example.org/ns#a8654> <http://example.org/ns#a8654> <http://example.org/ns#a8654> .
+<http://example.org/ns#a8655> <http://example.org/ns#a8655> <http://example.org/ns#a8655> .
+<http://example.org/ns#a8656> <http://example.org/ns#a8656> <http://example.org/ns#a8656> .
+<http://example.org/ns#a8657> <http://example.org/ns#a8657> <http://example.org/ns#a8657> .
+<http://example.org/ns#a8658> <http://example.org/ns#a8658> <http://example.org/ns#a8658> .
+<http://example.org/ns#a8659> <http://example.org/ns#a8659> <http://example.org/ns#a8659> .
+<http://example.org/ns#a8660> <http://example.org/ns#a8660> <http://example.org/ns#a8660> .
+<http://example.org/ns#a8661> <http://example.org/ns#a8661> <http://example.org/ns#a8661> .
+<http://example.org/ns#a8662> <http://example.org/ns#a8662> <http://example.org/ns#a8662> .
+<http://example.org/ns#a8663> <http://example.org/ns#a8663> <http://example.org/ns#a8663> .
+<http://example.org/ns#a8664> <http://example.org/ns#a8664> <http://example.org/ns#a8664> .
+<http://example.org/ns#a8665> <http://example.org/ns#a8665> <http://example.org/ns#a8665> .
+<http://example.org/ns#a8666> <http://example.org/ns#a8666> <http://example.org/ns#a8666> .
+<http://example.org/ns#a8667> <http://example.org/ns#a8667> <http://example.org/ns#a8667> .
+<http://example.org/ns#a8668> <http://example.org/ns#a8668> <http://example.org/ns#a8668> .
+<http://example.org/ns#a8669> <http://example.org/ns#a8669> <http://example.org/ns#a8669> .
+<http://example.org/ns#a8670> <http://example.org/ns#a8670> <http://example.org/ns#a8670> .
+<http://example.org/ns#a8671> <http://example.org/ns#a8671> <http://example.org/ns#a8671> .
+<http://example.org/ns#a8672> <http://example.org/ns#a8672> <http://example.org/ns#a8672> .
+<http://example.org/ns#a8673> <http://example.org/ns#a8673> <http://example.org/ns#a8673> .
+<http://example.org/ns#a8674> <http://example.org/ns#a8674> <http://example.org/ns#a8674> .
+<http://example.org/ns#a8675> <http://example.org/ns#a8675> <http://example.org/ns#a8675> .
+<http://example.org/ns#a8676> <http://example.org/ns#a8676> <http://example.org/ns#a8676> .
+<http://example.org/ns#a8677> <http://example.org/ns#a8677> <http://example.org/ns#a8677> .
+<http://example.org/ns#a8678> <http://example.org/ns#a8678> <http://example.org/ns#a8678> .
+<http://example.org/ns#a8679> <http://example.org/ns#a8679> <http://example.org/ns#a8679> .
+<http://example.org/ns#a8680> <http://example.org/ns#a8680> <http://example.org/ns#a8680> .
+<http://example.org/ns#a8681> <http://example.org/ns#a8681> <http://example.org/ns#a8681> .
+<http://example.org/ns#a8682> <http://example.org/ns#a8682> <http://example.org/ns#a8682> .
+<http://example.org/ns#a8683> <http://example.org/ns#a8683> <http://example.org/ns#a8683> .
+<http://example.org/ns#a8684> <http://example.org/ns#a8684> <http://example.org/ns#a8684> .
+<http://example.org/ns#a8685> <http://example.org/ns#a8685> <http://example.org/ns#a8685> .
+<http://example.org/ns#a8686> <http://example.org/ns#a8686> <http://example.org/ns#a8686> .
+<http://example.org/ns#a8687> <http://example.org/ns#a8687> <http://example.org/ns#a8687> .
+<http://example.org/ns#a8688> <http://example.org/ns#a8688> <http://example.org/ns#a8688> .
+<http://example.org/ns#a8689> <http://example.org/ns#a8689> <http://example.org/ns#a8689> .
+<http://example.org/ns#a8690> <http://example.org/ns#a8690> <http://example.org/ns#a8690> .
+<http://example.org/ns#a8691> <http://example.org/ns#a8691> <http://example.org/ns#a8691> .
+<http://example.org/ns#a8692> <http://example.org/ns#a8692> <http://example.org/ns#a8692> .
+<http://example.org/ns#a8693> <http://example.org/ns#a8693> <http://example.org/ns#a8693> .
+<http://example.org/ns#a8694> <http://example.org/ns#a8694> <http://example.org/ns#a8694> .
+<http://example.org/ns#a8695> <http://example.org/ns#a8695> <http://example.org/ns#a8695> .
+<http://example.org/ns#a8696> <http://example.org/ns#a8696> <http://example.org/ns#a8696> .
+<http://example.org/ns#a8697> <http://example.org/ns#a8697> <http://example.org/ns#a8697> .
+<http://example.org/ns#a8698> <http://example.org/ns#a8698> <http://example.org/ns#a8698> .
+<http://example.org/ns#a8699> <http://example.org/ns#a8699> <http://example.org/ns#a8699> .
+<http://example.org/ns#a8700> <http://example.org/ns#a8700> <http://example.org/ns#a8700> .
+<http://example.org/ns#a8701> <http://example.org/ns#a8701> <http://example.org/ns#a8701> .
+<http://example.org/ns#a8702> <http://example.org/ns#a8702> <http://example.org/ns#a8702> .
+<http://example.org/ns#a8703> <http://example.org/ns#a8703> <http://example.org/ns#a8703> .
+<http://example.org/ns#a8704> <http://example.org/ns#a8704> <http://example.org/ns#a8704> .
+<http://example.org/ns#a8705> <http://example.org/ns#a8705> <http://example.org/ns#a8705> .
+<http://example.org/ns#a8706> <http://example.org/ns#a8706> <http://example.org/ns#a8706> .
+<http://example.org/ns#a8707> <http://example.org/ns#a8707> <http://example.org/ns#a8707> .
+<http://example.org/ns#a8708> <http://example.org/ns#a8708> <http://example.org/ns#a8708> .
+<http://example.org/ns#a8709> <http://example.org/ns#a8709> <http://example.org/ns#a8709> .
+<http://example.org/ns#a8710> <http://example.org/ns#a8710> <http://example.org/ns#a8710> .
+<http://example.org/ns#a8711> <http://example.org/ns#a8711> <http://example.org/ns#a8711> .
+<http://example.org/ns#a8712> <http://example.org/ns#a8712> <http://example.org/ns#a8712> .
+<http://example.org/ns#a8713> <http://example.org/ns#a8713> <http://example.org/ns#a8713> .
+<http://example.org/ns#a8714> <http://example.org/ns#a8714> <http://example.org/ns#a8714> .
+<http://example.org/ns#a8715> <http://example.org/ns#a8715> <http://example.org/ns#a8715> .
+<http://example.org/ns#a8716> <http://example.org/ns#a8716> <http://example.org/ns#a8716> .
+<http://example.org/ns#a8717> <http://example.org/ns#a8717> <http://example.org/ns#a8717> .
+<http://example.org/ns#a8718> <http://example.org/ns#a8718> <http://example.org/ns#a8718> .
+<http://example.org/ns#a8719> <http://example.org/ns#a8719> <http://example.org/ns#a8719> .
+<http://example.org/ns#a8720> <http://example.org/ns#a8720> <http://example.org/ns#a8720> .
+<http://example.org/ns#a8721> <http://example.org/ns#a8721> <http://example.org/ns#a8721> .
+<http://example.org/ns#a8722> <http://example.org/ns#a8722> <http://example.org/ns#a8722> .
+<http://example.org/ns#a8723> <http://example.org/ns#a8723> <http://example.org/ns#a8723> .
+<http://example.org/ns#a8724> <http://example.org/ns#a8724> <http://example.org/ns#a8724> .
+<http://example.org/ns#a8725> <http://example.org/ns#a8725> <http://example.org/ns#a8725> .
+<http://example.org/ns#a8726> <http://example.org/ns#a8726> <http://example.org/ns#a8726> .
+<http://example.org/ns#a8727> <http://example.org/ns#a8727> <http://example.org/ns#a8727> .
+<http://example.org/ns#a8728> <http://example.org/ns#a8728> <http://example.org/ns#a8728> .
+<http://example.org/ns#a8729> <http://example.org/ns#a8729> <http://example.org/ns#a8729> .
+<http://example.org/ns#a8730> <http://example.org/ns#a8730> <http://example.org/ns#a8730> .
+<http://example.org/ns#a8731> <http://example.org/ns#a8731> <http://example.org/ns#a8731> .
+<http://example.org/ns#a8732> <http://example.org/ns#a8732> <http://example.org/ns#a8732> .
+<http://example.org/ns#a8733> <http://example.org/ns#a8733> <http://example.org/ns#a8733> .
+<http://example.org/ns#a8734> <http://example.org/ns#a8734> <http://example.org/ns#a8734> .
+<http://example.org/ns#a8735> <http://example.org/ns#a8735> <http://example.org/ns#a8735> .
+<http://example.org/ns#a8736> <http://example.org/ns#a8736> <http://example.org/ns#a8736> .
+<http://example.org/ns#a8737> <http://example.org/ns#a8737> <http://example.org/ns#a8737> .
+<http://example.org/ns#a8738> <http://example.org/ns#a8738> <http://example.org/ns#a8738> .
+<http://example.org/ns#a8739> <http://example.org/ns#a8739> <http://example.org/ns#a8739> .
+<http://example.org/ns#a8740> <http://example.org/ns#a8740> <http://example.org/ns#a8740> .
+<http://example.org/ns#a8741> <http://example.org/ns#a8741> <http://example.org/ns#a8741> .
+<http://example.org/ns#a8742> <http://example.org/ns#a8742> <http://example.org/ns#a8742> .
+<http://example.org/ns#a8743> <http://example.org/ns#a8743> <http://example.org/ns#a8743> .
+<http://example.org/ns#a8744> <http://example.org/ns#a8744> <http://example.org/ns#a8744> .
+<http://example.org/ns#a8745> <http://example.org/ns#a8745> <http://example.org/ns#a8745> .
+<http://example.org/ns#a8746> <http://example.org/ns#a8746> <http://example.org/ns#a8746> .
+<http://example.org/ns#a8747> <http://example.org/ns#a8747> <http://example.org/ns#a8747> .
+<http://example.org/ns#a8748> <http://example.org/ns#a8748> <http://example.org/ns#a8748> .
+<http://example.org/ns#a8749> <http://example.org/ns#a8749> <http://example.org/ns#a8749> .
+<http://example.org/ns#a8750> <http://example.org/ns#a8750> <http://example.org/ns#a8750> .
+<http://example.org/ns#a8751> <http://example.org/ns#a8751> <http://example.org/ns#a8751> .
+<http://example.org/ns#a8752> <http://example.org/ns#a8752> <http://example.org/ns#a8752> .
+<http://example.org/ns#a8753> <http://example.org/ns#a8753> <http://example.org/ns#a8753> .
+<http://example.org/ns#a8754> <http://example.org/ns#a8754> <http://example.org/ns#a8754> .
+<http://example.org/ns#a8755> <http://example.org/ns#a8755> <http://example.org/ns#a8755> .
+<http://example.org/ns#a8756> <http://example.org/ns#a8756> <http://example.org/ns#a8756> .
+<http://example.org/ns#a8757> <http://example.org/ns#a8757> <http://example.org/ns#a8757> .
+<http://example.org/ns#a8758> <http://example.org/ns#a8758> <http://example.org/ns#a8758> .
+<http://example.org/ns#a8759> <http://example.org/ns#a8759> <http://example.org/ns#a8759> .
+<http://example.org/ns#a8760> <http://example.org/ns#a8760> <http://example.org/ns#a8760> .
+<http://example.org/ns#a8761> <http://example.org/ns#a8761> <http://example.org/ns#a8761> .
+<http://example.org/ns#a8762> <http://example.org/ns#a8762> <http://example.org/ns#a8762> .
+<http://example.org/ns#a8763> <http://example.org/ns#a8763> <http://example.org/ns#a8763> .
+<http://example.org/ns#a8764> <http://example.org/ns#a8764> <http://example.org/ns#a8764> .
+<http://example.org/ns#a8765> <http://example.org/ns#a8765> <http://example.org/ns#a8765> .
+<http://example.org/ns#a8766> <http://example.org/ns#a8766> <http://example.org/ns#a8766> .
+<http://example.org/ns#a8767> <http://example.org/ns#a8767> <http://example.org/ns#a8767> .
+<http://example.org/ns#a8768> <http://example.org/ns#a8768> <http://example.org/ns#a8768> .
+<http://example.org/ns#a8769> <http://example.org/ns#a8769> <http://example.org/ns#a8769> .
+<http://example.org/ns#a8770> <http://example.org/ns#a8770> <http://example.org/ns#a8770> .
+<http://example.org/ns#a8771> <http://example.org/ns#a8771> <http://example.org/ns#a8771> .
+<http://example.org/ns#a8772> <http://example.org/ns#a8772> <http://example.org/ns#a8772> .
+<http://example.org/ns#a8773> <http://example.org/ns#a8773> <http://example.org/ns#a8773> .
+<http://example.org/ns#a8774> <http://example.org/ns#a8774> <http://example.org/ns#a8774> .
+<http://example.org/ns#a8775> <http://example.org/ns#a8775> <http://example.org/ns#a8775> .
+<http://example.org/ns#a8776> <http://example.org/ns#a8776> <http://example.org/ns#a8776> .
+<http://example.org/ns#a8777> <http://example.org/ns#a8777> <http://example.org/ns#a8777> .
+<http://example.org/ns#a8778> <http://example.org/ns#a8778> <http://example.org/ns#a8778> .
+<http://example.org/ns#a8779> <http://example.org/ns#a8779> <http://example.org/ns#a8779> .
+<http://example.org/ns#a8780> <http://example.org/ns#a8780> <http://example.org/ns#a8780> .
+<http://example.org/ns#a8781> <http://example.org/ns#a8781> <http://example.org/ns#a8781> .
+<http://example.org/ns#a8782> <http://example.org/ns#a8782> <http://example.org/ns#a8782> .
+<http://example.org/ns#a8783> <http://example.org/ns#a8783> <http://example.org/ns#a8783> .
+<http://example.org/ns#a8784> <http://example.org/ns#a8784> <http://example.org/ns#a8784> .
+<http://example.org/ns#a8785> <http://example.org/ns#a8785> <http://example.org/ns#a8785> .
+<http://example.org/ns#a8786> <http://example.org/ns#a8786> <http://example.org/ns#a8786> .
+<http://example.org/ns#a8787> <http://example.org/ns#a8787> <http://example.org/ns#a8787> .
+<http://example.org/ns#a8788> <http://example.org/ns#a8788> <http://example.org/ns#a8788> .
+<http://example.org/ns#a8789> <http://example.org/ns#a8789> <http://example.org/ns#a8789> .
+<http://example.org/ns#a8790> <http://example.org/ns#a8790> <http://example.org/ns#a8790> .
+<http://example.org/ns#a8791> <http://example.org/ns#a8791> <http://example.org/ns#a8791> .
+<http://example.org/ns#a8792> <http://example.org/ns#a8792> <http://example.org/ns#a8792> .
+<http://example.org/ns#a8793> <http://example.org/ns#a8793> <http://example.org/ns#a8793> .
+<http://example.org/ns#a8794> <http://example.org/ns#a8794> <http://example.org/ns#a8794> .
+<http://example.org/ns#a8795> <http://example.org/ns#a8795> <http://example.org/ns#a8795> .
+<http://example.org/ns#a8796> <http://example.org/ns#a8796> <http://example.org/ns#a8796> .
+<http://example.org/ns#a8797> <http://example.org/ns#a8797> <http://example.org/ns#a8797> .
+<http://example.org/ns#a8798> <http://example.org/ns#a8798> <http://example.org/ns#a8798> .
+<http://example.org/ns#a8799> <http://example.org/ns#a8799> <http://example.org/ns#a8799> .
+<http://example.org/ns#a8800> <http://example.org/ns#a8800> <http://example.org/ns#a8800> .
+<http://example.org/ns#a8801> <http://example.org/ns#a8801> <http://example.org/ns#a8801> .
+<http://example.org/ns#a8802> <http://example.org/ns#a8802> <http://example.org/ns#a8802> .
+<http://example.org/ns#a8803> <http://example.org/ns#a8803> <http://example.org/ns#a8803> .
+<http://example.org/ns#a8804> <http://example.org/ns#a8804> <http://example.org/ns#a8804> .
+<http://example.org/ns#a8805> <http://example.org/ns#a8805> <http://example.org/ns#a8805> .
+<http://example.org/ns#a8806> <http://example.org/ns#a8806> <http://example.org/ns#a8806> .
+<http://example.org/ns#a8807> <http://example.org/ns#a8807> <http://example.org/ns#a8807> .
+<http://example.org/ns#a8808> <http://example.org/ns#a8808> <http://example.org/ns#a8808> .
+<http://example.org/ns#a8809> <http://example.org/ns#a8809> <http://example.org/ns#a8809> .
+<http://example.org/ns#a8810> <http://example.org/ns#a8810> <http://example.org/ns#a8810> .
+<http://example.org/ns#a8811> <http://example.org/ns#a8811> <http://example.org/ns#a8811> .
+<http://example.org/ns#a8812> <http://example.org/ns#a8812> <http://example.org/ns#a8812> .
+<http://example.org/ns#a8813> <http://example.org/ns#a8813> <http://example.org/ns#a8813> .
+<http://example.org/ns#a8814> <http://example.org/ns#a8814> <http://example.org/ns#a8814> .
+<http://example.org/ns#a8815> <http://example.org/ns#a8815> <http://example.org/ns#a8815> .
+<http://example.org/ns#a8816> <http://example.org/ns#a8816> <http://example.org/ns#a8816> .
+<http://example.org/ns#a8817> <http://example.org/ns#a8817> <http://example.org/ns#a8817> .
+<http://example.org/ns#a8818> <http://example.org/ns#a8818> <http://example.org/ns#a8818> .
+<http://example.org/ns#a8819> <http://example.org/ns#a8819> <http://example.org/ns#a8819> .
+<http://example.org/ns#a8820> <http://example.org/ns#a8820> <http://example.org/ns#a8820> .
+<http://example.org/ns#a8821> <http://example.org/ns#a8821> <http://example.org/ns#a8821> .
+<http://example.org/ns#a8822> <http://example.org/ns#a8822> <http://example.org/ns#a8822> .
+<http://example.org/ns#a8823> <http://example.org/ns#a8823> <http://example.org/ns#a8823> .
+<http://example.org/ns#a8824> <http://example.org/ns#a8824> <http://example.org/ns#a8824> .
+<http://example.org/ns#a8825> <http://example.org/ns#a8825> <http://example.org/ns#a8825> .
+<http://example.org/ns#a8826> <http://example.org/ns#a8826> <http://example.org/ns#a8826> .
+<http://example.org/ns#a8827> <http://example.org/ns#a8827> <http://example.org/ns#a8827> .
+<http://example.org/ns#a8828> <http://example.org/ns#a8828> <http://example.org/ns#a8828> .
+<http://example.org/ns#a8829> <http://example.org/ns#a8829> <http://example.org/ns#a8829> .
+<http://example.org/ns#a8830> <http://example.org/ns#a8830> <http://example.org/ns#a8830> .
+<http://example.org/ns#a8831> <http://example.org/ns#a8831> <http://example.org/ns#a8831> .
+<http://example.org/ns#a8832> <http://example.org/ns#a8832> <http://example.org/ns#a8832> .
+<http://example.org/ns#a8833> <http://example.org/ns#a8833> <http://example.org/ns#a8833> .
+<http://example.org/ns#a8834> <http://example.org/ns#a8834> <http://example.org/ns#a8834> .
+<http://example.org/ns#a8835> <http://example.org/ns#a8835> <http://example.org/ns#a8835> .
+<http://example.org/ns#a8836> <http://example.org/ns#a8836> <http://example.org/ns#a8836> .
+<http://example.org/ns#a8837> <http://example.org/ns#a8837> <http://example.org/ns#a8837> .
+<http://example.org/ns#a8838> <http://example.org/ns#a8838> <http://example.org/ns#a8838> .
+<http://example.org/ns#a8839> <http://example.org/ns#a8839> <http://example.org/ns#a8839> .
+<http://example.org/ns#a8840> <http://example.org/ns#a8840> <http://example.org/ns#a8840> .
+<http://example.org/ns#a8841> <http://example.org/ns#a8841> <http://example.org/ns#a8841> .
+<http://example.org/ns#a8842> <http://example.org/ns#a8842> <http://example.org/ns#a8842> .
+<http://example.org/ns#a8843> <http://example.org/ns#a8843> <http://example.org/ns#a8843> .
+<http://example.org/ns#a8844> <http://example.org/ns#a8844> <http://example.org/ns#a8844> .
+<http://example.org/ns#a8845> <http://example.org/ns#a8845> <http://example.org/ns#a8845> .
+<http://example.org/ns#a8846> <http://example.org/ns#a8846> <http://example.org/ns#a8846> .
+<http://example.org/ns#a8847> <http://example.org/ns#a8847> <http://example.org/ns#a8847> .
+<http://example.org/ns#a8848> <http://example.org/ns#a8848> <http://example.org/ns#a8848> .
+<http://example.org/ns#a8849> <http://example.org/ns#a8849> <http://example.org/ns#a8849> .
+<http://example.org/ns#a8850> <http://example.org/ns#a8850> <http://example.org/ns#a8850> .
+<http://example.org/ns#a8851> <http://example.org/ns#a8851> <http://example.org/ns#a8851> .
+<http://example.org/ns#a8852> <http://example.org/ns#a8852> <http://example.org/ns#a8852> .
+<http://example.org/ns#a8853> <http://example.org/ns#a8853> <http://example.org/ns#a8853> .
+<http://example.org/ns#a8854> <http://example.org/ns#a8854> <http://example.org/ns#a8854> .
+<http://example.org/ns#a8855> <http://example.org/ns#a8855> <http://example.org/ns#a8855> .
+<http://example.org/ns#a8856> <http://example.org/ns#a8856> <http://example.org/ns#a8856> .
+<http://example.org/ns#a8857> <http://example.org/ns#a8857> <http://example.org/ns#a8857> .
+<http://example.org/ns#a8858> <http://example.org/ns#a8858> <http://example.org/ns#a8858> .
+<http://example.org/ns#a8859> <http://example.org/ns#a8859> <http://example.org/ns#a8859> .
+<http://example.org/ns#a8860> <http://example.org/ns#a8860> <http://example.org/ns#a8860> .
+<http://example.org/ns#a8861> <http://example.org/ns#a8861> <http://example.org/ns#a8861> .
+<http://example.org/ns#a8862> <http://example.org/ns#a8862> <http://example.org/ns#a8862> .
+<http://example.org/ns#a8863> <http://example.org/ns#a8863> <http://example.org/ns#a8863> .
+<http://example.org/ns#a8864> <http://example.org/ns#a8864> <http://example.org/ns#a8864> .
+<http://example.org/ns#a8865> <http://example.org/ns#a8865> <http://example.org/ns#a8865> .
+<http://example.org/ns#a8866> <http://example.org/ns#a8866> <http://example.org/ns#a8866> .
+<http://example.org/ns#a8867> <http://example.org/ns#a8867> <http://example.org/ns#a8867> .
+<http://example.org/ns#a8868> <http://example.org/ns#a8868> <http://example.org/ns#a8868> .
+<http://example.org/ns#a8869> <http://example.org/ns#a8869> <http://example.org/ns#a8869> .
+<http://example.org/ns#a8870> <http://example.org/ns#a8870> <http://example.org/ns#a8870> .
+<http://example.org/ns#a8871> <http://example.org/ns#a8871> <http://example.org/ns#a8871> .
+<http://example.org/ns#a8872> <http://example.org/ns#a8872> <http://example.org/ns#a8872> .
+<http://example.org/ns#a8873> <http://example.org/ns#a8873> <http://example.org/ns#a8873> .
+<http://example.org/ns#a8874> <http://example.org/ns#a8874> <http://example.org/ns#a8874> .
+<http://example.org/ns#a8875> <http://example.org/ns#a8875> <http://example.org/ns#a8875> .
+<http://example.org/ns#a8876> <http://example.org/ns#a8876> <http://example.org/ns#a8876> .
+<http://example.org/ns#a8877> <http://example.org/ns#a8877> <http://example.org/ns#a8877> .
+<http://example.org/ns#a8878> <http://example.org/ns#a8878> <http://example.org/ns#a8878> .
+<http://example.org/ns#a8879> <http://example.org/ns#a8879> <http://example.org/ns#a8879> .
+<http://example.org/ns#a8880> <http://example.org/ns#a8880> <http://example.org/ns#a8880> .
+<http://example.org/ns#a8881> <http://example.org/ns#a8881> <http://example.org/ns#a8881> .
+<http://example.org/ns#a8882> <http://example.org/ns#a8882> <http://example.org/ns#a8882> .
+<http://example.org/ns#a8883> <http://example.org/ns#a8883> <http://example.org/ns#a8883> .
+<http://example.org/ns#a8884> <http://example.org/ns#a8884> <http://example.org/ns#a8884> .
+<http://example.org/ns#a8885> <http://example.org/ns#a8885> <http://example.org/ns#a8885> .
+<http://example.org/ns#a8886> <http://example.org/ns#a8886> <http://example.org/ns#a8886> .
+<http://example.org/ns#a8887> <http://example.org/ns#a8887> <http://example.org/ns#a8887> .
+<http://example.org/ns#a8888> <http://example.org/ns#a8888> <http://example.org/ns#a8888> .
+<http://example.org/ns#a8889> <http://example.org/ns#a8889> <http://example.org/ns#a8889> .
+<http://example.org/ns#a8890> <http://example.org/ns#a8890> <http://example.org/ns#a8890> .
+<http://example.org/ns#a8891> <http://example.org/ns#a8891> <http://example.org/ns#a8891> .
+<http://example.org/ns#a8892> <http://example.org/ns#a8892> <http://example.org/ns#a8892> .
+<http://example.org/ns#a8893> <http://example.org/ns#a8893> <http://example.org/ns#a8893> .
+<http://example.org/ns#a8894> <http://example.org/ns#a8894> <http://example.org/ns#a8894> .
+<http://example.org/ns#a8895> <http://example.org/ns#a8895> <http://example.org/ns#a8895> .
+<http://example.org/ns#a8896> <http://example.org/ns#a8896> <http://example.org/ns#a8896> .
+<http://example.org/ns#a8897> <http://example.org/ns#a8897> <http://example.org/ns#a8897> .
+<http://example.org/ns#a8898> <http://example.org/ns#a8898> <http://example.org/ns#a8898> .
+<http://example.org/ns#a8899> <http://example.org/ns#a8899> <http://example.org/ns#a8899> .
+<http://example.org/ns#a8900> <http://example.org/ns#a8900> <http://example.org/ns#a8900> .
+<http://example.org/ns#a8901> <http://example.org/ns#a8901> <http://example.org/ns#a8901> .
+<http://example.org/ns#a8902> <http://example.org/ns#a8902> <http://example.org/ns#a8902> .
+<http://example.org/ns#a8903> <http://example.org/ns#a8903> <http://example.org/ns#a8903> .
+<http://example.org/ns#a8904> <http://example.org/ns#a8904> <http://example.org/ns#a8904> .
+<http://example.org/ns#a8905> <http://example.org/ns#a8905> <http://example.org/ns#a8905> .
+<http://example.org/ns#a8906> <http://example.org/ns#a8906> <http://example.org/ns#a8906> .
+<http://example.org/ns#a8907> <http://example.org/ns#a8907> <http://example.org/ns#a8907> .
+<http://example.org/ns#a8908> <http://example.org/ns#a8908> <http://example.org/ns#a8908> .
+<http://example.org/ns#a8909> <http://example.org/ns#a8909> <http://example.org/ns#a8909> .
+<http://example.org/ns#a8910> <http://example.org/ns#a8910> <http://example.org/ns#a8910> .
+<http://example.org/ns#a8911> <http://example.org/ns#a8911> <http://example.org/ns#a8911> .
+<http://example.org/ns#a8912> <http://example.org/ns#a8912> <http://example.org/ns#a8912> .
+<http://example.org/ns#a8913> <http://example.org/ns#a8913> <http://example.org/ns#a8913> .
+<http://example.org/ns#a8914> <http://example.org/ns#a8914> <http://example.org/ns#a8914> .
+<http://example.org/ns#a8915> <http://example.org/ns#a8915> <http://example.org/ns#a8915> .
+<http://example.org/ns#a8916> <http://example.org/ns#a8916> <http://example.org/ns#a8916> .
+<http://example.org/ns#a8917> <http://example.org/ns#a8917> <http://example.org/ns#a8917> .
+<http://example.org/ns#a8918> <http://example.org/ns#a8918> <http://example.org/ns#a8918> .
+<http://example.org/ns#a8919> <http://example.org/ns#a8919> <http://example.org/ns#a8919> .
+<http://example.org/ns#a8920> <http://example.org/ns#a8920> <http://example.org/ns#a8920> .
+<http://example.org/ns#a8921> <http://example.org/ns#a8921> <http://example.org/ns#a8921> .
+<http://example.org/ns#a8922> <http://example.org/ns#a8922> <http://example.org/ns#a8922> .
+<http://example.org/ns#a8923> <http://example.org/ns#a8923> <http://example.org/ns#a8923> .
+<http://example.org/ns#a8924> <http://example.org/ns#a8924> <http://example.org/ns#a8924> .
+<http://example.org/ns#a8925> <http://example.org/ns#a8925> <http://example.org/ns#a8925> .
+<http://example.org/ns#a8926> <http://example.org/ns#a8926> <http://example.org/ns#a8926> .
+<http://example.org/ns#a8927> <http://example.org/ns#a8927> <http://example.org/ns#a8927> .
+<http://example.org/ns#a8928> <http://example.org/ns#a8928> <http://example.org/ns#a8928> .
+<http://example.org/ns#a8929> <http://example.org/ns#a8929> <http://example.org/ns#a8929> .
+<http://example.org/ns#a8930> <http://example.org/ns#a8930> <http://example.org/ns#a8930> .
+<http://example.org/ns#a8931> <http://example.org/ns#a8931> <http://example.org/ns#a8931> .
+<http://example.org/ns#a8932> <http://example.org/ns#a8932> <http://example.org/ns#a8932> .
+<http://example.org/ns#a8933> <http://example.org/ns#a8933> <http://example.org/ns#a8933> .
+<http://example.org/ns#a8934> <http://example.org/ns#a8934> <http://example.org/ns#a8934> .
+<http://example.org/ns#a8935> <http://example.org/ns#a8935> <http://example.org/ns#a8935> .
+<http://example.org/ns#a8936> <http://example.org/ns#a8936> <http://example.org/ns#a8936> .
+<http://example.org/ns#a8937> <http://example.org/ns#a8937> <http://example.org/ns#a8937> .
+<http://example.org/ns#a8938> <http://example.org/ns#a8938> <http://example.org/ns#a8938> .
+<http://example.org/ns#a8939> <http://example.org/ns#a8939> <http://example.org/ns#a8939> .
+<http://example.org/ns#a8940> <http://example.org/ns#a8940> <http://example.org/ns#a8940> .
+<http://example.org/ns#a8941> <http://example.org/ns#a8941> <http://example.org/ns#a8941> .
+<http://example.org/ns#a8942> <http://example.org/ns#a8942> <http://example.org/ns#a8942> .
+<http://example.org/ns#a8943> <http://example.org/ns#a8943> <http://example.org/ns#a8943> .
+<http://example.org/ns#a8944> <http://example.org/ns#a8944> <http://example.org/ns#a8944> .
+<http://example.org/ns#a8945> <http://example.org/ns#a8945> <http://example.org/ns#a8945> .
+<http://example.org/ns#a8946> <http://example.org/ns#a8946> <http://example.org/ns#a8946> .
+<http://example.org/ns#a8947> <http://example.org/ns#a8947> <http://example.org/ns#a8947> .
+<http://example.org/ns#a8948> <http://example.org/ns#a8948> <http://example.org/ns#a8948> .
+<http://example.org/ns#a8949> <http://example.org/ns#a8949> <http://example.org/ns#a8949> .
+<http://example.org/ns#a8950> <http://example.org/ns#a8950> <http://example.org/ns#a8950> .
+<http://example.org/ns#a8951> <http://example.org/ns#a8951> <http://example.org/ns#a8951> .
+<http://example.org/ns#a8952> <http://example.org/ns#a8952> <http://example.org/ns#a8952> .
+<http://example.org/ns#a8953> <http://example.org/ns#a8953> <http://example.org/ns#a8953> .
+<http://example.org/ns#a8954> <http://example.org/ns#a8954> <http://example.org/ns#a8954> .
+<http://example.org/ns#a8955> <http://example.org/ns#a8955> <http://example.org/ns#a8955> .
+<http://example.org/ns#a8956> <http://example.org/ns#a8956> <http://example.org/ns#a8956> .
+<http://example.org/ns#a8957> <http://example.org/ns#a8957> <http://example.org/ns#a8957> .
+<http://example.org/ns#a8958> <http://example.org/ns#a8958> <http://example.org/ns#a8958> .
+<http://example.org/ns#a8959> <http://example.org/ns#a8959> <http://example.org/ns#a8959> .
+<http://example.org/ns#a8960> <http://example.org/ns#a8960> <http://example.org/ns#a8960> .
+<http://example.org/ns#a8961> <http://example.org/ns#a8961> <http://example.org/ns#a8961> .
+<http://example.org/ns#a8962> <http://example.org/ns#a8962> <http://example.org/ns#a8962> .
+<http://example.org/ns#a8963> <http://example.org/ns#a8963> <http://example.org/ns#a8963> .
+<http://example.org/ns#a8964> <http://example.org/ns#a8964> <http://example.org/ns#a8964> .
+<http://example.org/ns#a8965> <http://example.org/ns#a8965> <http://example.org/ns#a8965> .
+<http://example.org/ns#a8966> <http://example.org/ns#a8966> <http://example.org/ns#a8966> .
+<http://example.org/ns#a8967> <http://example.org/ns#a8967> <http://example.org/ns#a8967> .
+<http://example.org/ns#a8968> <http://example.org/ns#a8968> <http://example.org/ns#a8968> .
+<http://example.org/ns#a8969> <http://example.org/ns#a8969> <http://example.org/ns#a8969> .
+<http://example.org/ns#a8970> <http://example.org/ns#a8970> <http://example.org/ns#a8970> .
+<http://example.org/ns#a8971> <http://example.org/ns#a8971> <http://example.org/ns#a8971> .
+<http://example.org/ns#a8972> <http://example.org/ns#a8972> <http://example.org/ns#a8972> .
+<http://example.org/ns#a8973> <http://example.org/ns#a8973> <http://example.org/ns#a8973> .
+<http://example.org/ns#a8974> <http://example.org/ns#a8974> <http://example.org/ns#a8974> .
+<http://example.org/ns#a8975> <http://example.org/ns#a8975> <http://example.org/ns#a8975> .
+<http://example.org/ns#a8976> <http://example.org/ns#a8976> <http://example.org/ns#a8976> .
+<http://example.org/ns#a8977> <http://example.org/ns#a8977> <http://example.org/ns#a8977> .
+<http://example.org/ns#a8978> <http://example.org/ns#a8978> <http://example.org/ns#a8978> .
+<http://example.org/ns#a8979> <http://example.org/ns#a8979> <http://example.org/ns#a8979> .
+<http://example.org/ns#a8980> <http://example.org/ns#a8980> <http://example.org/ns#a8980> .
+<http://example.org/ns#a8981> <http://example.org/ns#a8981> <http://example.org/ns#a8981> .
+<http://example.org/ns#a8982> <http://example.org/ns#a8982> <http://example.org/ns#a8982> .
+<http://example.org/ns#a8983> <http://example.org/ns#a8983> <http://example.org/ns#a8983> .
+<http://example.org/ns#a8984> <http://example.org/ns#a8984> <http://example.org/ns#a8984> .
+<http://example.org/ns#a8985> <http://example.org/ns#a8985> <http://example.org/ns#a8985> .
+<http://example.org/ns#a8986> <http://example.org/ns#a8986> <http://example.org/ns#a8986> .
+<http://example.org/ns#a8987> <http://example.org/ns#a8987> <http://example.org/ns#a8987> .
+<http://example.org/ns#a8988> <http://example.org/ns#a8988> <http://example.org/ns#a8988> .
+<http://example.org/ns#a8989> <http://example.org/ns#a8989> <http://example.org/ns#a8989> .
+<http://example.org/ns#a8990> <http://example.org/ns#a8990> <http://example.org/ns#a8990> .
+<http://example.org/ns#a8991> <http://example.org/ns#a8991> <http://example.org/ns#a8991> .
+<http://example.org/ns#a8992> <http://example.org/ns#a8992> <http://example.org/ns#a8992> .
+<http://example.org/ns#a8993> <http://example.org/ns#a8993> <http://example.org/ns#a8993> .
+<http://example.org/ns#a8994> <http://example.org/ns#a8994> <http://example.org/ns#a8994> .
+<http://example.org/ns#a8995> <http://example.org/ns#a8995> <http://example.org/ns#a8995> .
+<http://example.org/ns#a8996> <http://example.org/ns#a8996> <http://example.org/ns#a8996> .
+<http://example.org/ns#a8997> <http://example.org/ns#a8997> <http://example.org/ns#a8997> .
+<http://example.org/ns#a8998> <http://example.org/ns#a8998> <http://example.org/ns#a8998> .
+<http://example.org/ns#a8999> <http://example.org/ns#a8999> <http://example.org/ns#a8999> .
+<http://example.org/ns#a9000> <http://example.org/ns#a9000> <http://example.org/ns#a9000> .
+<http://example.org/ns#a9001> <http://example.org/ns#a9001> <http://example.org/ns#a9001> .
+<http://example.org/ns#a9002> <http://example.org/ns#a9002> <http://example.org/ns#a9002> .
+<http://example.org/ns#a9003> <http://example.org/ns#a9003> <http://example.org/ns#a9003> .
+<http://example.org/ns#a9004> <http://example.org/ns#a9004> <http://example.org/ns#a9004> .
+<http://example.org/ns#a9005> <http://example.org/ns#a9005> <http://example.org/ns#a9005> .
+<http://example.org/ns#a9006> <http://example.org/ns#a9006> <http://example.org/ns#a9006> .
+<http://example.org/ns#a9007> <http://example.org/ns#a9007> <http://example.org/ns#a9007> .
+<http://example.org/ns#a9008> <http://example.org/ns#a9008> <http://example.org/ns#a9008> .
+<http://example.org/ns#a9009> <http://example.org/ns#a9009> <http://example.org/ns#a9009> .
+<http://example.org/ns#a9010> <http://example.org/ns#a9010> <http://example.org/ns#a9010> .
+<http://example.org/ns#a9011> <http://example.org/ns#a9011> <http://example.org/ns#a9011> .
+<http://example.org/ns#a9012> <http://example.org/ns#a9012> <http://example.org/ns#a9012> .
+<http://example.org/ns#a9013> <http://example.org/ns#a9013> <http://example.org/ns#a9013> .
+<http://example.org/ns#a9014> <http://example.org/ns#a9014> <http://example.org/ns#a9014> .
+<http://example.org/ns#a9015> <http://example.org/ns#a9015> <http://example.org/ns#a9015> .
+<http://example.org/ns#a9016> <http://example.org/ns#a9016> <http://example.org/ns#a9016> .
+<http://example.org/ns#a9017> <http://example.org/ns#a9017> <http://example.org/ns#a9017> .
+<http://example.org/ns#a9018> <http://example.org/ns#a9018> <http://example.org/ns#a9018> .
+<http://example.org/ns#a9019> <http://example.org/ns#a9019> <http://example.org/ns#a9019> .
+<http://example.org/ns#a9020> <http://example.org/ns#a9020> <http://example.org/ns#a9020> .
+<http://example.org/ns#a9021> <http://example.org/ns#a9021> <http://example.org/ns#a9021> .
+<http://example.org/ns#a9022> <http://example.org/ns#a9022> <http://example.org/ns#a9022> .
+<http://example.org/ns#a9023> <http://example.org/ns#a9023> <http://example.org/ns#a9023> .
+<http://example.org/ns#a9024> <http://example.org/ns#a9024> <http://example.org/ns#a9024> .
+<http://example.org/ns#a9025> <http://example.org/ns#a9025> <http://example.org/ns#a9025> .
+<http://example.org/ns#a9026> <http://example.org/ns#a9026> <http://example.org/ns#a9026> .
+<http://example.org/ns#a9027> <http://example.org/ns#a9027> <http://example.org/ns#a9027> .
+<http://example.org/ns#a9028> <http://example.org/ns#a9028> <http://example.org/ns#a9028> .
+<http://example.org/ns#a9029> <http://example.org/ns#a9029> <http://example.org/ns#a9029> .
+<http://example.org/ns#a9030> <http://example.org/ns#a9030> <http://example.org/ns#a9030> .
+<http://example.org/ns#a9031> <http://example.org/ns#a9031> <http://example.org/ns#a9031> .
+<http://example.org/ns#a9032> <http://example.org/ns#a9032> <http://example.org/ns#a9032> .
+<http://example.org/ns#a9033> <http://example.org/ns#a9033> <http://example.org/ns#a9033> .
+<http://example.org/ns#a9034> <http://example.org/ns#a9034> <http://example.org/ns#a9034> .
+<http://example.org/ns#a9035> <http://example.org/ns#a9035> <http://example.org/ns#a9035> .
+<http://example.org/ns#a9036> <http://example.org/ns#a9036> <http://example.org/ns#a9036> .
+<http://example.org/ns#a9037> <http://example.org/ns#a9037> <http://example.org/ns#a9037> .
+<http://example.org/ns#a9038> <http://example.org/ns#a9038> <http://example.org/ns#a9038> .
+<http://example.org/ns#a9039> <http://example.org/ns#a9039> <http://example.org/ns#a9039> .
+<http://example.org/ns#a9040> <http://example.org/ns#a9040> <http://example.org/ns#a9040> .
+<http://example.org/ns#a9041> <http://example.org/ns#a9041> <http://example.org/ns#a9041> .
+<http://example.org/ns#a9042> <http://example.org/ns#a9042> <http://example.org/ns#a9042> .
+<http://example.org/ns#a9043> <http://example.org/ns#a9043> <http://example.org/ns#a9043> .
+<http://example.org/ns#a9044> <http://example.org/ns#a9044> <http://example.org/ns#a9044> .
+<http://example.org/ns#a9045> <http://example.org/ns#a9045> <http://example.org/ns#a9045> .
+<http://example.org/ns#a9046> <http://example.org/ns#a9046> <http://example.org/ns#a9046> .
+<http://example.org/ns#a9047> <http://example.org/ns#a9047> <http://example.org/ns#a9047> .
+<http://example.org/ns#a9048> <http://example.org/ns#a9048> <http://example.org/ns#a9048> .
+<http://example.org/ns#a9049> <http://example.org/ns#a9049> <http://example.org/ns#a9049> .
+<http://example.org/ns#a9050> <http://example.org/ns#a9050> <http://example.org/ns#a9050> .
+<http://example.org/ns#a9051> <http://example.org/ns#a9051> <http://example.org/ns#a9051> .
+<http://example.org/ns#a9052> <http://example.org/ns#a9052> <http://example.org/ns#a9052> .
+<http://example.org/ns#a9053> <http://example.org/ns#a9053> <http://example.org/ns#a9053> .
+<http://example.org/ns#a9054> <http://example.org/ns#a9054> <http://example.org/ns#a9054> .
+<http://example.org/ns#a9055> <http://example.org/ns#a9055> <http://example.org/ns#a9055> .
+<http://example.org/ns#a9056> <http://example.org/ns#a9056> <http://example.org/ns#a9056> .
+<http://example.org/ns#a9057> <http://example.org/ns#a9057> <http://example.org/ns#a9057> .
+<http://example.org/ns#a9058> <http://example.org/ns#a9058> <http://example.org/ns#a9058> .
+<http://example.org/ns#a9059> <http://example.org/ns#a9059> <http://example.org/ns#a9059> .
+<http://example.org/ns#a9060> <http://example.org/ns#a9060> <http://example.org/ns#a9060> .
+<http://example.org/ns#a9061> <http://example.org/ns#a9061> <http://example.org/ns#a9061> .
+<http://example.org/ns#a9062> <http://example.org/ns#a9062> <http://example.org/ns#a9062> .
+<http://example.org/ns#a9063> <http://example.org/ns#a9063> <http://example.org/ns#a9063> .
+<http://example.org/ns#a9064> <http://example.org/ns#a9064> <http://example.org/ns#a9064> .
+<http://example.org/ns#a9065> <http://example.org/ns#a9065> <http://example.org/ns#a9065> .
+<http://example.org/ns#a9066> <http://example.org/ns#a9066> <http://example.org/ns#a9066> .
+<http://example.org/ns#a9067> <http://example.org/ns#a9067> <http://example.org/ns#a9067> .
+<http://example.org/ns#a9068> <http://example.org/ns#a9068> <http://example.org/ns#a9068> .
+<http://example.org/ns#a9069> <http://example.org/ns#a9069> <http://example.org/ns#a9069> .
+<http://example.org/ns#a9070> <http://example.org/ns#a9070> <http://example.org/ns#a9070> .
+<http://example.org/ns#a9071> <http://example.org/ns#a9071> <http://example.org/ns#a9071> .
+<http://example.org/ns#a9072> <http://example.org/ns#a9072> <http://example.org/ns#a9072> .
+<http://example.org/ns#a9073> <http://example.org/ns#a9073> <http://example.org/ns#a9073> .
+<http://example.org/ns#a9074> <http://example.org/ns#a9074> <http://example.org/ns#a9074> .
+<http://example.org/ns#a9075> <http://example.org/ns#a9075> <http://example.org/ns#a9075> .
+<http://example.org/ns#a9076> <http://example.org/ns#a9076> <http://example.org/ns#a9076> .
+<http://example.org/ns#a9077> <http://example.org/ns#a9077> <http://example.org/ns#a9077> .
+<http://example.org/ns#a9078> <http://example.org/ns#a9078> <http://example.org/ns#a9078> .
+<http://example.org/ns#a9079> <http://example.org/ns#a9079> <http://example.org/ns#a9079> .
+<http://example.org/ns#a9080> <http://example.org/ns#a9080> <http://example.org/ns#a9080> .
+<http://example.org/ns#a9081> <http://example.org/ns#a9081> <http://example.org/ns#a9081> .
+<http://example.org/ns#a9082> <http://example.org/ns#a9082> <http://example.org/ns#a9082> .
+<http://example.org/ns#a9083> <http://example.org/ns#a9083> <http://example.org/ns#a9083> .
+<http://example.org/ns#a9084> <http://example.org/ns#a9084> <http://example.org/ns#a9084> .
+<http://example.org/ns#a9085> <http://example.org/ns#a9085> <http://example.org/ns#a9085> .
+<http://example.org/ns#a9086> <http://example.org/ns#a9086> <http://example.org/ns#a9086> .
+<http://example.org/ns#a9087> <http://example.org/ns#a9087> <http://example.org/ns#a9087> .
+<http://example.org/ns#a9088> <http://example.org/ns#a9088> <http://example.org/ns#a9088> .
+<http://example.org/ns#a9089> <http://example.org/ns#a9089> <http://example.org/ns#a9089> .
+<http://example.org/ns#a9090> <http://example.org/ns#a9090> <http://example.org/ns#a9090> .
+<http://example.org/ns#a9091> <http://example.org/ns#a9091> <http://example.org/ns#a9091> .
+<http://example.org/ns#a9092> <http://example.org/ns#a9092> <http://example.org/ns#a9092> .
+<http://example.org/ns#a9093> <http://example.org/ns#a9093> <http://example.org/ns#a9093> .
+<http://example.org/ns#a9094> <http://example.org/ns#a9094> <http://example.org/ns#a9094> .
+<http://example.org/ns#a9095> <http://example.org/ns#a9095> <http://example.org/ns#a9095> .
+<http://example.org/ns#a9096> <http://example.org/ns#a9096> <http://example.org/ns#a9096> .
+<http://example.org/ns#a9097> <http://example.org/ns#a9097> <http://example.org/ns#a9097> .
+<http://example.org/ns#a9098> <http://example.org/ns#a9098> <http://example.org/ns#a9098> .
+<http://example.org/ns#a9099> <http://example.org/ns#a9099> <http://example.org/ns#a9099> .
+<http://example.org/ns#a9100> <http://example.org/ns#a9100> <http://example.org/ns#a9100> .
+<http://example.org/ns#a9101> <http://example.org/ns#a9101> <http://example.org/ns#a9101> .
+<http://example.org/ns#a9102> <http://example.org/ns#a9102> <http://example.org/ns#a9102> .
+<http://example.org/ns#a9103> <http://example.org/ns#a9103> <http://example.org/ns#a9103> .
+<http://example.org/ns#a9104> <http://example.org/ns#a9104> <http://example.org/ns#a9104> .
+<http://example.org/ns#a9105> <http://example.org/ns#a9105> <http://example.org/ns#a9105> .
+<http://example.org/ns#a9106> <http://example.org/ns#a9106> <http://example.org/ns#a9106> .
+<http://example.org/ns#a9107> <http://example.org/ns#a9107> <http://example.org/ns#a9107> .
+<http://example.org/ns#a9108> <http://example.org/ns#a9108> <http://example.org/ns#a9108> .
+<http://example.org/ns#a9109> <http://example.org/ns#a9109> <http://example.org/ns#a9109> .
+<http://example.org/ns#a9110> <http://example.org/ns#a9110> <http://example.org/ns#a9110> .
+<http://example.org/ns#a9111> <http://example.org/ns#a9111> <http://example.org/ns#a9111> .
+<http://example.org/ns#a9112> <http://example.org/ns#a9112> <http://example.org/ns#a9112> .
+<http://example.org/ns#a9113> <http://example.org/ns#a9113> <http://example.org/ns#a9113> .
+<http://example.org/ns#a9114> <http://example.org/ns#a9114> <http://example.org/ns#a9114> .
+<http://example.org/ns#a9115> <http://example.org/ns#a9115> <http://example.org/ns#a9115> .
+<http://example.org/ns#a9116> <http://example.org/ns#a9116> <http://example.org/ns#a9116> .
+<http://example.org/ns#a9117> <http://example.org/ns#a9117> <http://example.org/ns#a9117> .
+<http://example.org/ns#a9118> <http://example.org/ns#a9118> <http://example.org/ns#a9118> .
+<http://example.org/ns#a9119> <http://example.org/ns#a9119> <http://example.org/ns#a9119> .
+<http://example.org/ns#a9120> <http://example.org/ns#a9120> <http://example.org/ns#a9120> .
+<http://example.org/ns#a9121> <http://example.org/ns#a9121> <http://example.org/ns#a9121> .
+<http://example.org/ns#a9122> <http://example.org/ns#a9122> <http://example.org/ns#a9122> .
+<http://example.org/ns#a9123> <http://example.org/ns#a9123> <http://example.org/ns#a9123> .
+<http://example.org/ns#a9124> <http://example.org/ns#a9124> <http://example.org/ns#a9124> .
+<http://example.org/ns#a9125> <http://example.org/ns#a9125> <http://example.org/ns#a9125> .
+<http://example.org/ns#a9126> <http://example.org/ns#a9126> <http://example.org/ns#a9126> .
+<http://example.org/ns#a9127> <http://example.org/ns#a9127> <http://example.org/ns#a9127> .
+<http://example.org/ns#a9128> <http://example.org/ns#a9128> <http://example.org/ns#a9128> .
+<http://example.org/ns#a9129> <http://example.org/ns#a9129> <http://example.org/ns#a9129> .
+<http://example.org/ns#a9130> <http://example.org/ns#a9130> <http://example.org/ns#a9130> .
+<http://example.org/ns#a9131> <http://example.org/ns#a9131> <http://example.org/ns#a9131> .
+<http://example.org/ns#a9132> <http://example.org/ns#a9132> <http://example.org/ns#a9132> .
+<http://example.org/ns#a9133> <http://example.org/ns#a9133> <http://example.org/ns#a9133> .
+<http://example.org/ns#a9134> <http://example.org/ns#a9134> <http://example.org/ns#a9134> .
+<http://example.org/ns#a9135> <http://example.org/ns#a9135> <http://example.org/ns#a9135> .
+<http://example.org/ns#a9136> <http://example.org/ns#a9136> <http://example.org/ns#a9136> .
+<http://example.org/ns#a9137> <http://example.org/ns#a9137> <http://example.org/ns#a9137> .
+<http://example.org/ns#a9138> <http://example.org/ns#a9138> <http://example.org/ns#a9138> .
+<http://example.org/ns#a9139> <http://example.org/ns#a9139> <http://example.org/ns#a9139> .
+<http://example.org/ns#a9140> <http://example.org/ns#a9140> <http://example.org/ns#a9140> .
+<http://example.org/ns#a9141> <http://example.org/ns#a9141> <http://example.org/ns#a9141> .
+<http://example.org/ns#a9142> <http://example.org/ns#a9142> <http://example.org/ns#a9142> .
+<http://example.org/ns#a9143> <http://example.org/ns#a9143> <http://example.org/ns#a9143> .
+<http://example.org/ns#a9144> <http://example.org/ns#a9144> <http://example.org/ns#a9144> .
+<http://example.org/ns#a9145> <http://example.org/ns#a9145> <http://example.org/ns#a9145> .
+<http://example.org/ns#a9146> <http://example.org/ns#a9146> <http://example.org/ns#a9146> .
+<http://example.org/ns#a9147> <http://example.org/ns#a9147> <http://example.org/ns#a9147> .
+<http://example.org/ns#a9148> <http://example.org/ns#a9148> <http://example.org/ns#a9148> .
+<http://example.org/ns#a9149> <http://example.org/ns#a9149> <http://example.org/ns#a9149> .
+<http://example.org/ns#a9150> <http://example.org/ns#a9150> <http://example.org/ns#a9150> .
+<http://example.org/ns#a9151> <http://example.org/ns#a9151> <http://example.org/ns#a9151> .
+<http://example.org/ns#a9152> <http://example.org/ns#a9152> <http://example.org/ns#a9152> .
+<http://example.org/ns#a9153> <http://example.org/ns#a9153> <http://example.org/ns#a9153> .
+<http://example.org/ns#a9154> <http://example.org/ns#a9154> <http://example.org/ns#a9154> .
+<http://example.org/ns#a9155> <http://example.org/ns#a9155> <http://example.org/ns#a9155> .
+<http://example.org/ns#a9156> <http://example.org/ns#a9156> <http://example.org/ns#a9156> .
+<http://example.org/ns#a9157> <http://example.org/ns#a9157> <http://example.org/ns#a9157> .
+<http://example.org/ns#a9158> <http://example.org/ns#a9158> <http://example.org/ns#a9158> .
+<http://example.org/ns#a9159> <http://example.org/ns#a9159> <http://example.org/ns#a9159> .
+<http://example.org/ns#a9160> <http://example.org/ns#a9160> <http://example.org/ns#a9160> .
+<http://example.org/ns#a9161> <http://example.org/ns#a9161> <http://example.org/ns#a9161> .
+<http://example.org/ns#a9162> <http://example.org/ns#a9162> <http://example.org/ns#a9162> .
+<http://example.org/ns#a9163> <http://example.org/ns#a9163> <http://example.org/ns#a9163> .
+<http://example.org/ns#a9164> <http://example.org/ns#a9164> <http://example.org/ns#a9164> .
+<http://example.org/ns#a9165> <http://example.org/ns#a9165> <http://example.org/ns#a9165> .
+<http://example.org/ns#a9166> <http://example.org/ns#a9166> <http://example.org/ns#a9166> .
+<http://example.org/ns#a9167> <http://example.org/ns#a9167> <http://example.org/ns#a9167> .
+<http://example.org/ns#a9168> <http://example.org/ns#a9168> <http://example.org/ns#a9168> .
+<http://example.org/ns#a9169> <http://example.org/ns#a9169> <http://example.org/ns#a9169> .
+<http://example.org/ns#a9170> <http://example.org/ns#a9170> <http://example.org/ns#a9170> .
+<http://example.org/ns#a9171> <http://example.org/ns#a9171> <http://example.org/ns#a9171> .
+<http://example.org/ns#a9172> <http://example.org/ns#a9172> <http://example.org/ns#a9172> .
+<http://example.org/ns#a9173> <http://example.org/ns#a9173> <http://example.org/ns#a9173> .
+<http://example.org/ns#a9174> <http://example.org/ns#a9174> <http://example.org/ns#a9174> .
+<http://example.org/ns#a9175> <http://example.org/ns#a9175> <http://example.org/ns#a9175> .
+<http://example.org/ns#a9176> <http://example.org/ns#a9176> <http://example.org/ns#a9176> .
+<http://example.org/ns#a9177> <http://example.org/ns#a9177> <http://example.org/ns#a9177> .
+<http://example.org/ns#a9178> <http://example.org/ns#a9178> <http://example.org/ns#a9178> .
+<http://example.org/ns#a9179> <http://example.org/ns#a9179> <http://example.org/ns#a9179> .
+<http://example.org/ns#a9180> <http://example.org/ns#a9180> <http://example.org/ns#a9180> .
+<http://example.org/ns#a9181> <http://example.org/ns#a9181> <http://example.org/ns#a9181> .
+<http://example.org/ns#a9182> <http://example.org/ns#a9182> <http://example.org/ns#a9182> .
+<http://example.org/ns#a9183> <http://example.org/ns#a9183> <http://example.org/ns#a9183> .
+<http://example.org/ns#a9184> <http://example.org/ns#a9184> <http://example.org/ns#a9184> .
+<http://example.org/ns#a9185> <http://example.org/ns#a9185> <http://example.org/ns#a9185> .
+<http://example.org/ns#a9186> <http://example.org/ns#a9186> <http://example.org/ns#a9186> .
+<http://example.org/ns#a9187> <http://example.org/ns#a9187> <http://example.org/ns#a9187> .
+<http://example.org/ns#a9188> <http://example.org/ns#a9188> <http://example.org/ns#a9188> .
+<http://example.org/ns#a9189> <http://example.org/ns#a9189> <http://example.org/ns#a9189> .
+<http://example.org/ns#a9190> <http://example.org/ns#a9190> <http://example.org/ns#a9190> .
+<http://example.org/ns#a9191> <http://example.org/ns#a9191> <http://example.org/ns#a9191> .
+<http://example.org/ns#a9192> <http://example.org/ns#a9192> <http://example.org/ns#a9192> .
+<http://example.org/ns#a9193> <http://example.org/ns#a9193> <http://example.org/ns#a9193> .
+<http://example.org/ns#a9194> <http://example.org/ns#a9194> <http://example.org/ns#a9194> .
+<http://example.org/ns#a9195> <http://example.org/ns#a9195> <http://example.org/ns#a9195> .
+<http://example.org/ns#a9196> <http://example.org/ns#a9196> <http://example.org/ns#a9196> .
+<http://example.org/ns#a9197> <http://example.org/ns#a9197> <http://example.org/ns#a9197> .
+<http://example.org/ns#a9198> <http://example.org/ns#a9198> <http://example.org/ns#a9198> .
+<http://example.org/ns#a9199> <http://example.org/ns#a9199> <http://example.org/ns#a9199> .
+<http://example.org/ns#a9200> <http://example.org/ns#a9200> <http://example.org/ns#a9200> .
+<http://example.org/ns#a9201> <http://example.org/ns#a9201> <http://example.org/ns#a9201> .
+<http://example.org/ns#a9202> <http://example.org/ns#a9202> <http://example.org/ns#a9202> .
+<http://example.org/ns#a9203> <http://example.org/ns#a9203> <http://example.org/ns#a9203> .
+<http://example.org/ns#a9204> <http://example.org/ns#a9204> <http://example.org/ns#a9204> .
+<http://example.org/ns#a9205> <http://example.org/ns#a9205> <http://example.org/ns#a9205> .
+<http://example.org/ns#a9206> <http://example.org/ns#a9206> <http://example.org/ns#a9206> .
+<http://example.org/ns#a9207> <http://example.org/ns#a9207> <http://example.org/ns#a9207> .
+<http://example.org/ns#a9208> <http://example.org/ns#a9208> <http://example.org/ns#a9208> .
+<http://example.org/ns#a9209> <http://example.org/ns#a9209> <http://example.org/ns#a9209> .
+<http://example.org/ns#a9210> <http://example.org/ns#a9210> <http://example.org/ns#a9210> .
+<http://example.org/ns#a9211> <http://example.org/ns#a9211> <http://example.org/ns#a9211> .
+<http://example.org/ns#a9212> <http://example.org/ns#a9212> <http://example.org/ns#a9212> .
+<http://example.org/ns#a9213> <http://example.org/ns#a9213> <http://example.org/ns#a9213> .
+<http://example.org/ns#a9214> <http://example.org/ns#a9214> <http://example.org/ns#a9214> .
+<http://example.org/ns#a9215> <http://example.org/ns#a9215> <http://example.org/ns#a9215> .
+<http://example.org/ns#a9216> <http://example.org/ns#a9216> <http://example.org/ns#a9216> .
+<http://example.org/ns#a9217> <http://example.org/ns#a9217> <http://example.org/ns#a9217> .
+<http://example.org/ns#a9218> <http://example.org/ns#a9218> <http://example.org/ns#a9218> .
+<http://example.org/ns#a9219> <http://example.org/ns#a9219> <http://example.org/ns#a9219> .
+<http://example.org/ns#a9220> <http://example.org/ns#a9220> <http://example.org/ns#a9220> .
+<http://example.org/ns#a9221> <http://example.org/ns#a9221> <http://example.org/ns#a9221> .
+<http://example.org/ns#a9222> <http://example.org/ns#a9222> <http://example.org/ns#a9222> .
+<http://example.org/ns#a9223> <http://example.org/ns#a9223> <http://example.org/ns#a9223> .
+<http://example.org/ns#a9224> <http://example.org/ns#a9224> <http://example.org/ns#a9224> .
+<http://example.org/ns#a9225> <http://example.org/ns#a9225> <http://example.org/ns#a9225> .
+<http://example.org/ns#a9226> <http://example.org/ns#a9226> <http://example.org/ns#a9226> .
+<http://example.org/ns#a9227> <http://example.org/ns#a9227> <http://example.org/ns#a9227> .
+<http://example.org/ns#a9228> <http://example.org/ns#a9228> <http://example.org/ns#a9228> .
+<http://example.org/ns#a9229> <http://example.org/ns#a9229> <http://example.org/ns#a9229> .
+<http://example.org/ns#a9230> <http://example.org/ns#a9230> <http://example.org/ns#a9230> .
+<http://example.org/ns#a9231> <http://example.org/ns#a9231> <http://example.org/ns#a9231> .
+<http://example.org/ns#a9232> <http://example.org/ns#a9232> <http://example.org/ns#a9232> .
+<http://example.org/ns#a9233> <http://example.org/ns#a9233> <http://example.org/ns#a9233> .
+<http://example.org/ns#a9234> <http://example.org/ns#a9234> <http://example.org/ns#a9234> .
+<http://example.org/ns#a9235> <http://example.org/ns#a9235> <http://example.org/ns#a9235> .
+<http://example.org/ns#a9236> <http://example.org/ns#a9236> <http://example.org/ns#a9236> .
+<http://example.org/ns#a9237> <http://example.org/ns#a9237> <http://example.org/ns#a9237> .
+<http://example.org/ns#a9238> <http://example.org/ns#a9238> <http://example.org/ns#a9238> .
+<http://example.org/ns#a9239> <http://example.org/ns#a9239> <http://example.org/ns#a9239> .
+<http://example.org/ns#a9240> <http://example.org/ns#a9240> <http://example.org/ns#a9240> .
+<http://example.org/ns#a9241> <http://example.org/ns#a9241> <http://example.org/ns#a9241> .
+<http://example.org/ns#a9242> <http://example.org/ns#a9242> <http://example.org/ns#a9242> .
+<http://example.org/ns#a9243> <http://example.org/ns#a9243> <http://example.org/ns#a9243> .
+<http://example.org/ns#a9244> <http://example.org/ns#a9244> <http://example.org/ns#a9244> .
+<http://example.org/ns#a9245> <http://example.org/ns#a9245> <http://example.org/ns#a9245> .
+<http://example.org/ns#a9246> <http://example.org/ns#a9246> <http://example.org/ns#a9246> .
+<http://example.org/ns#a9247> <http://example.org/ns#a9247> <http://example.org/ns#a9247> .
+<http://example.org/ns#a9248> <http://example.org/ns#a9248> <http://example.org/ns#a9248> .
+<http://example.org/ns#a9249> <http://example.org/ns#a9249> <http://example.org/ns#a9249> .
+<http://example.org/ns#a9250> <http://example.org/ns#a9250> <http://example.org/ns#a9250> .
+<http://example.org/ns#a9251> <http://example.org/ns#a9251> <http://example.org/ns#a9251> .
+<http://example.org/ns#a9252> <http://example.org/ns#a9252> <http://example.org/ns#a9252> .
+<http://example.org/ns#a9253> <http://example.org/ns#a9253> <http://example.org/ns#a9253> .
+<http://example.org/ns#a9254> <http://example.org/ns#a9254> <http://example.org/ns#a9254> .
+<http://example.org/ns#a9255> <http://example.org/ns#a9255> <http://example.org/ns#a9255> .
+<http://example.org/ns#a9256> <http://example.org/ns#a9256> <http://example.org/ns#a9256> .
+<http://example.org/ns#a9257> <http://example.org/ns#a9257> <http://example.org/ns#a9257> .
+<http://example.org/ns#a9258> <http://example.org/ns#a9258> <http://example.org/ns#a9258> .
+<http://example.org/ns#a9259> <http://example.org/ns#a9259> <http://example.org/ns#a9259> .
+<http://example.org/ns#a9260> <http://example.org/ns#a9260> <http://example.org/ns#a9260> .
+<http://example.org/ns#a9261> <http://example.org/ns#a9261> <http://example.org/ns#a9261> .
+<http://example.org/ns#a9262> <http://example.org/ns#a9262> <http://example.org/ns#a9262> .
+<http://example.org/ns#a9263> <http://example.org/ns#a9263> <http://example.org/ns#a9263> .
+<http://example.org/ns#a9264> <http://example.org/ns#a9264> <http://example.org/ns#a9264> .
+<http://example.org/ns#a9265> <http://example.org/ns#a9265> <http://example.org/ns#a9265> .
+<http://example.org/ns#a9266> <http://example.org/ns#a9266> <http://example.org/ns#a9266> .
+<http://example.org/ns#a9267> <http://example.org/ns#a9267> <http://example.org/ns#a9267> .
+<http://example.org/ns#a9268> <http://example.org/ns#a9268> <http://example.org/ns#a9268> .
+<http://example.org/ns#a9269> <http://example.org/ns#a9269> <http://example.org/ns#a9269> .
+<http://example.org/ns#a9270> <http://example.org/ns#a9270> <http://example.org/ns#a9270> .
+<http://example.org/ns#a9271> <http://example.org/ns#a9271> <http://example.org/ns#a9271> .
+<http://example.org/ns#a9272> <http://example.org/ns#a9272> <http://example.org/ns#a9272> .
+<http://example.org/ns#a9273> <http://example.org/ns#a9273> <http://example.org/ns#a9273> .
+<http://example.org/ns#a9274> <http://example.org/ns#a9274> <http://example.org/ns#a9274> .
+<http://example.org/ns#a9275> <http://example.org/ns#a9275> <http://example.org/ns#a9275> .
+<http://example.org/ns#a9276> <http://example.org/ns#a9276> <http://example.org/ns#a9276> .
+<http://example.org/ns#a9277> <http://example.org/ns#a9277> <http://example.org/ns#a9277> .
+<http://example.org/ns#a9278> <http://example.org/ns#a9278> <http://example.org/ns#a9278> .
+<http://example.org/ns#a9279> <http://example.org/ns#a9279> <http://example.org/ns#a9279> .
+<http://example.org/ns#a9280> <http://example.org/ns#a9280> <http://example.org/ns#a9280> .
+<http://example.org/ns#a9281> <http://example.org/ns#a9281> <http://example.org/ns#a9281> .
+<http://example.org/ns#a9282> <http://example.org/ns#a9282> <http://example.org/ns#a9282> .
+<http://example.org/ns#a9283> <http://example.org/ns#a9283> <http://example.org/ns#a9283> .
+<http://example.org/ns#a9284> <http://example.org/ns#a9284> <http://example.org/ns#a9284> .
+<http://example.org/ns#a9285> <http://example.org/ns#a9285> <http://example.org/ns#a9285> .
+<http://example.org/ns#a9286> <http://example.org/ns#a9286> <http://example.org/ns#a9286> .
+<http://example.org/ns#a9287> <http://example.org/ns#a9287> <http://example.org/ns#a9287> .
+<http://example.org/ns#a9288> <http://example.org/ns#a9288> <http://example.org/ns#a9288> .
+<http://example.org/ns#a9289> <http://example.org/ns#a9289> <http://example.org/ns#a9289> .
+<http://example.org/ns#a9290> <http://example.org/ns#a9290> <http://example.org/ns#a9290> .
+<http://example.org/ns#a9291> <http://example.org/ns#a9291> <http://example.org/ns#a9291> .
+<http://example.org/ns#a9292> <http://example.org/ns#a9292> <http://example.org/ns#a9292> .
+<http://example.org/ns#a9293> <http://example.org/ns#a9293> <http://example.org/ns#a9293> .
+<http://example.org/ns#a9294> <http://example.org/ns#a9294> <http://example.org/ns#a9294> .
+<http://example.org/ns#a9295> <http://example.org/ns#a9295> <http://example.org/ns#a9295> .
+<http://example.org/ns#a9296> <http://example.org/ns#a9296> <http://example.org/ns#a9296> .
+<http://example.org/ns#a9297> <http://example.org/ns#a9297> <http://example.org/ns#a9297> .
+<http://example.org/ns#a9298> <http://example.org/ns#a9298> <http://example.org/ns#a9298> .
+<http://example.org/ns#a9299> <http://example.org/ns#a9299> <http://example.org/ns#a9299> .
+<http://example.org/ns#a9300> <http://example.org/ns#a9300> <http://example.org/ns#a9300> .
+<http://example.org/ns#a9301> <http://example.org/ns#a9301> <http://example.org/ns#a9301> .
+<http://example.org/ns#a9302> <http://example.org/ns#a9302> <http://example.org/ns#a9302> .
+<http://example.org/ns#a9303> <http://example.org/ns#a9303> <http://example.org/ns#a9303> .
+<http://example.org/ns#a9304> <http://example.org/ns#a9304> <http://example.org/ns#a9304> .
+<http://example.org/ns#a9305> <http://example.org/ns#a9305> <http://example.org/ns#a9305> .
+<http://example.org/ns#a9306> <http://example.org/ns#a9306> <http://example.org/ns#a9306> .
+<http://example.org/ns#a9307> <http://example.org/ns#a9307> <http://example.org/ns#a9307> .
+<http://example.org/ns#a9308> <http://example.org/ns#a9308> <http://example.org/ns#a9308> .
+<http://example.org/ns#a9309> <http://example.org/ns#a9309> <http://example.org/ns#a9309> .
+<http://example.org/ns#a9310> <http://example.org/ns#a9310> <http://example.org/ns#a9310> .
+<http://example.org/ns#a9311> <http://example.org/ns#a9311> <http://example.org/ns#a9311> .
+<http://example.org/ns#a9312> <http://example.org/ns#a9312> <http://example.org/ns#a9312> .
+<http://example.org/ns#a9313> <http://example.org/ns#a9313> <http://example.org/ns#a9313> .
+<http://example.org/ns#a9314> <http://example.org/ns#a9314> <http://example.org/ns#a9314> .
+<http://example.org/ns#a9315> <http://example.org/ns#a9315> <http://example.org/ns#a9315> .
+<http://example.org/ns#a9316> <http://example.org/ns#a9316> <http://example.org/ns#a9316> .
+<http://example.org/ns#a9317> <http://example.org/ns#a9317> <http://example.org/ns#a9317> .
+<http://example.org/ns#a9318> <http://example.org/ns#a9318> <http://example.org/ns#a9318> .
+<http://example.org/ns#a9319> <http://example.org/ns#a9319> <http://example.org/ns#a9319> .
+<http://example.org/ns#a9320> <http://example.org/ns#a9320> <http://example.org/ns#a9320> .
+<http://example.org/ns#a9321> <http://example.org/ns#a9321> <http://example.org/ns#a9321> .
+<http://example.org/ns#a9322> <http://example.org/ns#a9322> <http://example.org/ns#a9322> .
+<http://example.org/ns#a9323> <http://example.org/ns#a9323> <http://example.org/ns#a9323> .
+<http://example.org/ns#a9324> <http://example.org/ns#a9324> <http://example.org/ns#a9324> .
+<http://example.org/ns#a9325> <http://example.org/ns#a9325> <http://example.org/ns#a9325> .
+<http://example.org/ns#a9326> <http://example.org/ns#a9326> <http://example.org/ns#a9326> .
+<http://example.org/ns#a9327> <http://example.org/ns#a9327> <http://example.org/ns#a9327> .
+<http://example.org/ns#a9328> <http://example.org/ns#a9328> <http://example.org/ns#a9328> .
+<http://example.org/ns#a9329> <http://example.org/ns#a9329> <http://example.org/ns#a9329> .
+<http://example.org/ns#a9330> <http://example.org/ns#a9330> <http://example.org/ns#a9330> .
+<http://example.org/ns#a9331> <http://example.org/ns#a9331> <http://example.org/ns#a9331> .
+<http://example.org/ns#a9332> <http://example.org/ns#a9332> <http://example.org/ns#a9332> .
+<http://example.org/ns#a9333> <http://example.org/ns#a9333> <http://example.org/ns#a9333> .
+<http://example.org/ns#a9334> <http://example.org/ns#a9334> <http://example.org/ns#a9334> .
+<http://example.org/ns#a9335> <http://example.org/ns#a9335> <http://example.org/ns#a9335> .
+<http://example.org/ns#a9336> <http://example.org/ns#a9336> <http://example.org/ns#a9336> .
+<http://example.org/ns#a9337> <http://example.org/ns#a9337> <http://example.org/ns#a9337> .
+<http://example.org/ns#a9338> <http://example.org/ns#a9338> <http://example.org/ns#a9338> .
+<http://example.org/ns#a9339> <http://example.org/ns#a9339> <http://example.org/ns#a9339> .
+<http://example.org/ns#a9340> <http://example.org/ns#a9340> <http://example.org/ns#a9340> .
+<http://example.org/ns#a9341> <http://example.org/ns#a9341> <http://example.org/ns#a9341> .
+<http://example.org/ns#a9342> <http://example.org/ns#a9342> <http://example.org/ns#a9342> .
+<http://example.org/ns#a9343> <http://example.org/ns#a9343> <http://example.org/ns#a9343> .
+<http://example.org/ns#a9344> <http://example.org/ns#a9344> <http://example.org/ns#a9344> .
+<http://example.org/ns#a9345> <http://example.org/ns#a9345> <http://example.org/ns#a9345> .
+<http://example.org/ns#a9346> <http://example.org/ns#a9346> <http://example.org/ns#a9346> .
+<http://example.org/ns#a9347> <http://example.org/ns#a9347> <http://example.org/ns#a9347> .
+<http://example.org/ns#a9348> <http://example.org/ns#a9348> <http://example.org/ns#a9348> .
+<http://example.org/ns#a9349> <http://example.org/ns#a9349> <http://example.org/ns#a9349> .
+<http://example.org/ns#a9350> <http://example.org/ns#a9350> <http://example.org/ns#a9350> .
+<http://example.org/ns#a9351> <http://example.org/ns#a9351> <http://example.org/ns#a9351> .
+<http://example.org/ns#a9352> <http://example.org/ns#a9352> <http://example.org/ns#a9352> .
+<http://example.org/ns#a9353> <http://example.org/ns#a9353> <http://example.org/ns#a9353> .
+<http://example.org/ns#a9354> <http://example.org/ns#a9354> <http://example.org/ns#a9354> .
+<http://example.org/ns#a9355> <http://example.org/ns#a9355> <http://example.org/ns#a9355> .
+<http://example.org/ns#a9356> <http://example.org/ns#a9356> <http://example.org/ns#a9356> .
+<http://example.org/ns#a9357> <http://example.org/ns#a9357> <http://example.org/ns#a9357> .
+<http://example.org/ns#a9358> <http://example.org/ns#a9358> <http://example.org/ns#a9358> .
+<http://example.org/ns#a9359> <http://example.org/ns#a9359> <http://example.org/ns#a9359> .
+<http://example.org/ns#a9360> <http://example.org/ns#a9360> <http://example.org/ns#a9360> .
+<http://example.org/ns#a9361> <http://example.org/ns#a9361> <http://example.org/ns#a9361> .
+<http://example.org/ns#a9362> <http://example.org/ns#a9362> <http://example.org/ns#a9362> .
+<http://example.org/ns#a9363> <http://example.org/ns#a9363> <http://example.org/ns#a9363> .
+<http://example.org/ns#a9364> <http://example.org/ns#a9364> <http://example.org/ns#a9364> .
+<http://example.org/ns#a9365> <http://example.org/ns#a9365> <http://example.org/ns#a9365> .
+<http://example.org/ns#a9366> <http://example.org/ns#a9366> <http://example.org/ns#a9366> .
+<http://example.org/ns#a9367> <http://example.org/ns#a9367> <http://example.org/ns#a9367> .
+<http://example.org/ns#a9368> <http://example.org/ns#a9368> <http://example.org/ns#a9368> .
+<http://example.org/ns#a9369> <http://example.org/ns#a9369> <http://example.org/ns#a9369> .
+<http://example.org/ns#a9370> <http://example.org/ns#a9370> <http://example.org/ns#a9370> .
+<http://example.org/ns#a9371> <http://example.org/ns#a9371> <http://example.org/ns#a9371> .
+<http://example.org/ns#a9372> <http://example.org/ns#a9372> <http://example.org/ns#a9372> .
+<http://example.org/ns#a9373> <http://example.org/ns#a9373> <http://example.org/ns#a9373> .
+<http://example.org/ns#a9374> <http://example.org/ns#a9374> <http://example.org/ns#a9374> .
+<http://example.org/ns#a9375> <http://example.org/ns#a9375> <http://example.org/ns#a9375> .
+<http://example.org/ns#a9376> <http://example.org/ns#a9376> <http://example.org/ns#a9376> .
+<http://example.org/ns#a9377> <http://example.org/ns#a9377> <http://example.org/ns#a9377> .
+<http://example.org/ns#a9378> <http://example.org/ns#a9378> <http://example.org/ns#a9378> .
+<http://example.org/ns#a9379> <http://example.org/ns#a9379> <http://example.org/ns#a9379> .
+<http://example.org/ns#a9380> <http://example.org/ns#a9380> <http://example.org/ns#a9380> .
+<http://example.org/ns#a9381> <http://example.org/ns#a9381> <http://example.org/ns#a9381> .
+<http://example.org/ns#a9382> <http://example.org/ns#a9382> <http://example.org/ns#a9382> .
+<http://example.org/ns#a9383> <http://example.org/ns#a9383> <http://example.org/ns#a9383> .
+<http://example.org/ns#a9384> <http://example.org/ns#a9384> <http://example.org/ns#a9384> .
+<http://example.org/ns#a9385> <http://example.org/ns#a9385> <http://example.org/ns#a9385> .
+<http://example.org/ns#a9386> <http://example.org/ns#a9386> <http://example.org/ns#a9386> .
+<http://example.org/ns#a9387> <http://example.org/ns#a9387> <http://example.org/ns#a9387> .
+<http://example.org/ns#a9388> <http://example.org/ns#a9388> <http://example.org/ns#a9388> .
+<http://example.org/ns#a9389> <http://example.org/ns#a9389> <http://example.org/ns#a9389> .
+<http://example.org/ns#a9390> <http://example.org/ns#a9390> <http://example.org/ns#a9390> .
+<http://example.org/ns#a9391> <http://example.org/ns#a9391> <http://example.org/ns#a9391> .
+<http://example.org/ns#a9392> <http://example.org/ns#a9392> <http://example.org/ns#a9392> .
+<http://example.org/ns#a9393> <http://example.org/ns#a9393> <http://example.org/ns#a9393> .
+<http://example.org/ns#a9394> <http://example.org/ns#a9394> <http://example.org/ns#a9394> .
+<http://example.org/ns#a9395> <http://example.org/ns#a9395> <http://example.org/ns#a9395> .
+<http://example.org/ns#a9396> <http://example.org/ns#a9396> <http://example.org/ns#a9396> .
+<http://example.org/ns#a9397> <http://example.org/ns#a9397> <http://example.org/ns#a9397> .
+<http://example.org/ns#a9398> <http://example.org/ns#a9398> <http://example.org/ns#a9398> .
+<http://example.org/ns#a9399> <http://example.org/ns#a9399> <http://example.org/ns#a9399> .
+<http://example.org/ns#a9400> <http://example.org/ns#a9400> <http://example.org/ns#a9400> .
+<http://example.org/ns#a9401> <http://example.org/ns#a9401> <http://example.org/ns#a9401> .
+<http://example.org/ns#a9402> <http://example.org/ns#a9402> <http://example.org/ns#a9402> .
+<http://example.org/ns#a9403> <http://example.org/ns#a9403> <http://example.org/ns#a9403> .
+<http://example.org/ns#a9404> <http://example.org/ns#a9404> <http://example.org/ns#a9404> .
+<http://example.org/ns#a9405> <http://example.org/ns#a9405> <http://example.org/ns#a9405> .
+<http://example.org/ns#a9406> <http://example.org/ns#a9406> <http://example.org/ns#a9406> .
+<http://example.org/ns#a9407> <http://example.org/ns#a9407> <http://example.org/ns#a9407> .
+<http://example.org/ns#a9408> <http://example.org/ns#a9408> <http://example.org/ns#a9408> .
+<http://example.org/ns#a9409> <http://example.org/ns#a9409> <http://example.org/ns#a9409> .
+<http://example.org/ns#a9410> <http://example.org/ns#a9410> <http://example.org/ns#a9410> .
+<http://example.org/ns#a9411> <http://example.org/ns#a9411> <http://example.org/ns#a9411> .
+<http://example.org/ns#a9412> <http://example.org/ns#a9412> <http://example.org/ns#a9412> .
+<http://example.org/ns#a9413> <http://example.org/ns#a9413> <http://example.org/ns#a9413> .
+<http://example.org/ns#a9414> <http://example.org/ns#a9414> <http://example.org/ns#a9414> .
+<http://example.org/ns#a9415> <http://example.org/ns#a9415> <http://example.org/ns#a9415> .
+<http://example.org/ns#a9416> <http://example.org/ns#a9416> <http://example.org/ns#a9416> .
+<http://example.org/ns#a9417> <http://example.org/ns#a9417> <http://example.org/ns#a9417> .
+<http://example.org/ns#a9418> <http://example.org/ns#a9418> <http://example.org/ns#a9418> .
+<http://example.org/ns#a9419> <http://example.org/ns#a9419> <http://example.org/ns#a9419> .
+<http://example.org/ns#a9420> <http://example.org/ns#a9420> <http://example.org/ns#a9420> .
+<http://example.org/ns#a9421> <http://example.org/ns#a9421> <http://example.org/ns#a9421> .
+<http://example.org/ns#a9422> <http://example.org/ns#a9422> <http://example.org/ns#a9422> .
+<http://example.org/ns#a9423> <http://example.org/ns#a9423> <http://example.org/ns#a9423> .
+<http://example.org/ns#a9424> <http://example.org/ns#a9424> <http://example.org/ns#a9424> .
+<http://example.org/ns#a9425> <http://example.org/ns#a9425> <http://example.org/ns#a9425> .
+<http://example.org/ns#a9426> <http://example.org/ns#a9426> <http://example.org/ns#a9426> .
+<http://example.org/ns#a9427> <http://example.org/ns#a9427> <http://example.org/ns#a9427> .
+<http://example.org/ns#a9428> <http://example.org/ns#a9428> <http://example.org/ns#a9428> .
+<http://example.org/ns#a9429> <http://example.org/ns#a9429> <http://example.org/ns#a9429> .
+<http://example.org/ns#a9430> <http://example.org/ns#a9430> <http://example.org/ns#a9430> .
+<http://example.org/ns#a9431> <http://example.org/ns#a9431> <http://example.org/ns#a9431> .
+<http://example.org/ns#a9432> <http://example.org/ns#a9432> <http://example.org/ns#a9432> .
+<http://example.org/ns#a9433> <http://example.org/ns#a9433> <http://example.org/ns#a9433> .
+<http://example.org/ns#a9434> <http://example.org/ns#a9434> <http://example.org/ns#a9434> .
+<http://example.org/ns#a9435> <http://example.org/ns#a9435> <http://example.org/ns#a9435> .
+<http://example.org/ns#a9436> <http://example.org/ns#a9436> <http://example.org/ns#a9436> .
+<http://example.org/ns#a9437> <http://example.org/ns#a9437> <http://example.org/ns#a9437> .
+<http://example.org/ns#a9438> <http://example.org/ns#a9438> <http://example.org/ns#a9438> .
+<http://example.org/ns#a9439> <http://example.org/ns#a9439> <http://example.org/ns#a9439> .
+<http://example.org/ns#a9440> <http://example.org/ns#a9440> <http://example.org/ns#a9440> .
+<http://example.org/ns#a9441> <http://example.org/ns#a9441> <http://example.org/ns#a9441> .
+<http://example.org/ns#a9442> <http://example.org/ns#a9442> <http://example.org/ns#a9442> .
+<http://example.org/ns#a9443> <http://example.org/ns#a9443> <http://example.org/ns#a9443> .
+<http://example.org/ns#a9444> <http://example.org/ns#a9444> <http://example.org/ns#a9444> .
+<http://example.org/ns#a9445> <http://example.org/ns#a9445> <http://example.org/ns#a9445> .
+<http://example.org/ns#a9446> <http://example.org/ns#a9446> <http://example.org/ns#a9446> .
+<http://example.org/ns#a9447> <http://example.org/ns#a9447> <http://example.org/ns#a9447> .
+<http://example.org/ns#a9448> <http://example.org/ns#a9448> <http://example.org/ns#a9448> .
+<http://example.org/ns#a9449> <http://example.org/ns#a9449> <http://example.org/ns#a9449> .
+<http://example.org/ns#a9450> <http://example.org/ns#a9450> <http://example.org/ns#a9450> .
+<http://example.org/ns#a9451> <http://example.org/ns#a9451> <http://example.org/ns#a9451> .
+<http://example.org/ns#a9452> <http://example.org/ns#a9452> <http://example.org/ns#a9452> .
+<http://example.org/ns#a9453> <http://example.org/ns#a9453> <http://example.org/ns#a9453> .
+<http://example.org/ns#a9454> <http://example.org/ns#a9454> <http://example.org/ns#a9454> .
+<http://example.org/ns#a9455> <http://example.org/ns#a9455> <http://example.org/ns#a9455> .
+<http://example.org/ns#a9456> <http://example.org/ns#a9456> <http://example.org/ns#a9456> .
+<http://example.org/ns#a9457> <http://example.org/ns#a9457> <http://example.org/ns#a9457> .
+<http://example.org/ns#a9458> <http://example.org/ns#a9458> <http://example.org/ns#a9458> .
+<http://example.org/ns#a9459> <http://example.org/ns#a9459> <http://example.org/ns#a9459> .
+<http://example.org/ns#a9460> <http://example.org/ns#a9460> <http://example.org/ns#a9460> .
+<http://example.org/ns#a9461> <http://example.org/ns#a9461> <http://example.org/ns#a9461> .
+<http://example.org/ns#a9462> <http://example.org/ns#a9462> <http://example.org/ns#a9462> .
+<http://example.org/ns#a9463> <http://example.org/ns#a9463> <http://example.org/ns#a9463> .
+<http://example.org/ns#a9464> <http://example.org/ns#a9464> <http://example.org/ns#a9464> .
+<http://example.org/ns#a9465> <http://example.org/ns#a9465> <http://example.org/ns#a9465> .
+<http://example.org/ns#a9466> <http://example.org/ns#a9466> <http://example.org/ns#a9466> .
+<http://example.org/ns#a9467> <http://example.org/ns#a9467> <http://example.org/ns#a9467> .
+<http://example.org/ns#a9468> <http://example.org/ns#a9468> <http://example.org/ns#a9468> .
+<http://example.org/ns#a9469> <http://example.org/ns#a9469> <http://example.org/ns#a9469> .
+<http://example.org/ns#a9470> <http://example.org/ns#a9470> <http://example.org/ns#a9470> .
+<http://example.org/ns#a9471> <http://example.org/ns#a9471> <http://example.org/ns#a9471> .
+<http://example.org/ns#a9472> <http://example.org/ns#a9472> <http://example.org/ns#a9472> .
+<http://example.org/ns#a9473> <http://example.org/ns#a9473> <http://example.org/ns#a9473> .
+<http://example.org/ns#a9474> <http://example.org/ns#a9474> <http://example.org/ns#a9474> .
+<http://example.org/ns#a9475> <http://example.org/ns#a9475> <http://example.org/ns#a9475> .
+<http://example.org/ns#a9476> <http://example.org/ns#a9476> <http://example.org/ns#a9476> .
+<http://example.org/ns#a9477> <http://example.org/ns#a9477> <http://example.org/ns#a9477> .
+<http://example.org/ns#a9478> <http://example.org/ns#a9478> <http://example.org/ns#a9478> .
+<http://example.org/ns#a9479> <http://example.org/ns#a9479> <http://example.org/ns#a9479> .
+<http://example.org/ns#a9480> <http://example.org/ns#a9480> <http://example.org/ns#a9480> .
+<http://example.org/ns#a9481> <http://example.org/ns#a9481> <http://example.org/ns#a9481> .
+<http://example.org/ns#a9482> <http://example.org/ns#a9482> <http://example.org/ns#a9482> .
+<http://example.org/ns#a9483> <http://example.org/ns#a9483> <http://example.org/ns#a9483> .
+<http://example.org/ns#a9484> <http://example.org/ns#a9484> <http://example.org/ns#a9484> .
+<http://example.org/ns#a9485> <http://example.org/ns#a9485> <http://example.org/ns#a9485> .
+<http://example.org/ns#a9486> <http://example.org/ns#a9486> <http://example.org/ns#a9486> .
+<http://example.org/ns#a9487> <http://example.org/ns#a9487> <http://example.org/ns#a9487> .
+<http://example.org/ns#a9488> <http://example.org/ns#a9488> <http://example.org/ns#a9488> .
+<http://example.org/ns#a9489> <http://example.org/ns#a9489> <http://example.org/ns#a9489> .
+<http://example.org/ns#a9490> <http://example.org/ns#a9490> <http://example.org/ns#a9490> .
+<http://example.org/ns#a9491> <http://example.org/ns#a9491> <http://example.org/ns#a9491> .
+<http://example.org/ns#a9492> <http://example.org/ns#a9492> <http://example.org/ns#a9492> .
+<http://example.org/ns#a9493> <http://example.org/ns#a9493> <http://example.org/ns#a9493> .
+<http://example.org/ns#a9494> <http://example.org/ns#a9494> <http://example.org/ns#a9494> .
+<http://example.org/ns#a9495> <http://example.org/ns#a9495> <http://example.org/ns#a9495> .
+<http://example.org/ns#a9496> <http://example.org/ns#a9496> <http://example.org/ns#a9496> .
+<http://example.org/ns#a9497> <http://example.org/ns#a9497> <http://example.org/ns#a9497> .
+<http://example.org/ns#a9498> <http://example.org/ns#a9498> <http://example.org/ns#a9498> .
+<http://example.org/ns#a9499> <http://example.org/ns#a9499> <http://example.org/ns#a9499> .
+<http://example.org/ns#a9500> <http://example.org/ns#a9500> <http://example.org/ns#a9500> .
+<http://example.org/ns#a9501> <http://example.org/ns#a9501> <http://example.org/ns#a9501> .
+<http://example.org/ns#a9502> <http://example.org/ns#a9502> <http://example.org/ns#a9502> .
+<http://example.org/ns#a9503> <http://example.org/ns#a9503> <http://example.org/ns#a9503> .
+<http://example.org/ns#a9504> <http://example.org/ns#a9504> <http://example.org/ns#a9504> .
+<http://example.org/ns#a9505> <http://example.org/ns#a9505> <http://example.org/ns#a9505> .
+<http://example.org/ns#a9506> <http://example.org/ns#a9506> <http://example.org/ns#a9506> .
+<http://example.org/ns#a9507> <http://example.org/ns#a9507> <http://example.org/ns#a9507> .
+<http://example.org/ns#a9508> <http://example.org/ns#a9508> <http://example.org/ns#a9508> .
+<http://example.org/ns#a9509> <http://example.org/ns#a9509> <http://example.org/ns#a9509> .
+<http://example.org/ns#a9510> <http://example.org/ns#a9510> <http://example.org/ns#a9510> .
+<http://example.org/ns#a9511> <http://example.org/ns#a9511> <http://example.org/ns#a9511> .
+<http://example.org/ns#a9512> <http://example.org/ns#a9512> <http://example.org/ns#a9512> .
+<http://example.org/ns#a9513> <http://example.org/ns#a9513> <http://example.org/ns#a9513> .
+<http://example.org/ns#a9514> <http://example.org/ns#a9514> <http://example.org/ns#a9514> .
+<http://example.org/ns#a9515> <http://example.org/ns#a9515> <http://example.org/ns#a9515> .
+<http://example.org/ns#a9516> <http://example.org/ns#a9516> <http://example.org/ns#a9516> .
+<http://example.org/ns#a9517> <http://example.org/ns#a9517> <http://example.org/ns#a9517> .
+<http://example.org/ns#a9518> <http://example.org/ns#a9518> <http://example.org/ns#a9518> .
+<http://example.org/ns#a9519> <http://example.org/ns#a9519> <http://example.org/ns#a9519> .
+<http://example.org/ns#a9520> <http://example.org/ns#a9520> <http://example.org/ns#a9520> .
+<http://example.org/ns#a9521> <http://example.org/ns#a9521> <http://example.org/ns#a9521> .
+<http://example.org/ns#a9522> <http://example.org/ns#a9522> <http://example.org/ns#a9522> .
+<http://example.org/ns#a9523> <http://example.org/ns#a9523> <http://example.org/ns#a9523> .
+<http://example.org/ns#a9524> <http://example.org/ns#a9524> <http://example.org/ns#a9524> .
+<http://example.org/ns#a9525> <http://example.org/ns#a9525> <http://example.org/ns#a9525> .
+<http://example.org/ns#a9526> <http://example.org/ns#a9526> <http://example.org/ns#a9526> .
+<http://example.org/ns#a9527> <http://example.org/ns#a9527> <http://example.org/ns#a9527> .
+<http://example.org/ns#a9528> <http://example.org/ns#a9528> <http://example.org/ns#a9528> .
+<http://example.org/ns#a9529> <http://example.org/ns#a9529> <http://example.org/ns#a9529> .
+<http://example.org/ns#a9530> <http://example.org/ns#a9530> <http://example.org/ns#a9530> .
+<http://example.org/ns#a9531> <http://example.org/ns#a9531> <http://example.org/ns#a9531> .
+<http://example.org/ns#a9532> <http://example.org/ns#a9532> <http://example.org/ns#a9532> .
+<http://example.org/ns#a9533> <http://example.org/ns#a9533> <http://example.org/ns#a9533> .
+<http://example.org/ns#a9534> <http://example.org/ns#a9534> <http://example.org/ns#a9534> .
+<http://example.org/ns#a9535> <http://example.org/ns#a9535> <http://example.org/ns#a9535> .
+<http://example.org/ns#a9536> <http://example.org/ns#a9536> <http://example.org/ns#a9536> .
+<http://example.org/ns#a9537> <http://example.org/ns#a9537> <http://example.org/ns#a9537> .
+<http://example.org/ns#a9538> <http://example.org/ns#a9538> <http://example.org/ns#a9538> .
+<http://example.org/ns#a9539> <http://example.org/ns#a9539> <http://example.org/ns#a9539> .
+<http://example.org/ns#a9540> <http://example.org/ns#a9540> <http://example.org/ns#a9540> .
+<http://example.org/ns#a9541> <http://example.org/ns#a9541> <http://example.org/ns#a9541> .
+<http://example.org/ns#a9542> <http://example.org/ns#a9542> <http://example.org/ns#a9542> .
+<http://example.org/ns#a9543> <http://example.org/ns#a9543> <http://example.org/ns#a9543> .
+<http://example.org/ns#a9544> <http://example.org/ns#a9544> <http://example.org/ns#a9544> .
+<http://example.org/ns#a9545> <http://example.org/ns#a9545> <http://example.org/ns#a9545> .
+<http://example.org/ns#a9546> <http://example.org/ns#a9546> <http://example.org/ns#a9546> .
+<http://example.org/ns#a9547> <http://example.org/ns#a9547> <http://example.org/ns#a9547> .
+<http://example.org/ns#a9548> <http://example.org/ns#a9548> <http://example.org/ns#a9548> .
+<http://example.org/ns#a9549> <http://example.org/ns#a9549> <http://example.org/ns#a9549> .
+<http://example.org/ns#a9550> <http://example.org/ns#a9550> <http://example.org/ns#a9550> .
+<http://example.org/ns#a9551> <http://example.org/ns#a9551> <http://example.org/ns#a9551> .
+<http://example.org/ns#a9552> <http://example.org/ns#a9552> <http://example.org/ns#a9552> .
+<http://example.org/ns#a9553> <http://example.org/ns#a9553> <http://example.org/ns#a9553> .
+<http://example.org/ns#a9554> <http://example.org/ns#a9554> <http://example.org/ns#a9554> .
+<http://example.org/ns#a9555> <http://example.org/ns#a9555> <http://example.org/ns#a9555> .
+<http://example.org/ns#a9556> <http://example.org/ns#a9556> <http://example.org/ns#a9556> .
+<http://example.org/ns#a9557> <http://example.org/ns#a9557> <http://example.org/ns#a9557> .
+<http://example.org/ns#a9558> <http://example.org/ns#a9558> <http://example.org/ns#a9558> .
+<http://example.org/ns#a9559> <http://example.org/ns#a9559> <http://example.org/ns#a9559> .
+<http://example.org/ns#a9560> <http://example.org/ns#a9560> <http://example.org/ns#a9560> .
+<http://example.org/ns#a9561> <http://example.org/ns#a9561> <http://example.org/ns#a9561> .
+<http://example.org/ns#a9562> <http://example.org/ns#a9562> <http://example.org/ns#a9562> .
+<http://example.org/ns#a9563> <http://example.org/ns#a9563> <http://example.org/ns#a9563> .
+<http://example.org/ns#a9564> <http://example.org/ns#a9564> <http://example.org/ns#a9564> .
+<http://example.org/ns#a9565> <http://example.org/ns#a9565> <http://example.org/ns#a9565> .
+<http://example.org/ns#a9566> <http://example.org/ns#a9566> <http://example.org/ns#a9566> .
+<http://example.org/ns#a9567> <http://example.org/ns#a9567> <http://example.org/ns#a9567> .
+<http://example.org/ns#a9568> <http://example.org/ns#a9568> <http://example.org/ns#a9568> .
+<http://example.org/ns#a9569> <http://example.org/ns#a9569> <http://example.org/ns#a9569> .
+<http://example.org/ns#a9570> <http://example.org/ns#a9570> <http://example.org/ns#a9570> .
+<http://example.org/ns#a9571> <http://example.org/ns#a9571> <http://example.org/ns#a9571> .
+<http://example.org/ns#a9572> <http://example.org/ns#a9572> <http://example.org/ns#a9572> .
+<http://example.org/ns#a9573> <http://example.org/ns#a9573> <http://example.org/ns#a9573> .
+<http://example.org/ns#a9574> <http://example.org/ns#a9574> <http://example.org/ns#a9574> .
+<http://example.org/ns#a9575> <http://example.org/ns#a9575> <http://example.org/ns#a9575> .
+<http://example.org/ns#a9576> <http://example.org/ns#a9576> <http://example.org/ns#a9576> .
+<http://example.org/ns#a9577> <http://example.org/ns#a9577> <http://example.org/ns#a9577> .
+<http://example.org/ns#a9578> <http://example.org/ns#a9578> <http://example.org/ns#a9578> .
+<http://example.org/ns#a9579> <http://example.org/ns#a9579> <http://example.org/ns#a9579> .
+<http://example.org/ns#a9580> <http://example.org/ns#a9580> <http://example.org/ns#a9580> .
+<http://example.org/ns#a9581> <http://example.org/ns#a9581> <http://example.org/ns#a9581> .
+<http://example.org/ns#a9582> <http://example.org/ns#a9582> <http://example.org/ns#a9582> .
+<http://example.org/ns#a9583> <http://example.org/ns#a9583> <http://example.org/ns#a9583> .
+<http://example.org/ns#a9584> <http://example.org/ns#a9584> <http://example.org/ns#a9584> .
+<http://example.org/ns#a9585> <http://example.org/ns#a9585> <http://example.org/ns#a9585> .
+<http://example.org/ns#a9586> <http://example.org/ns#a9586> <http://example.org/ns#a9586> .
+<http://example.org/ns#a9587> <http://example.org/ns#a9587> <http://example.org/ns#a9587> .
+<http://example.org/ns#a9588> <http://example.org/ns#a9588> <http://example.org/ns#a9588> .
+<http://example.org/ns#a9589> <http://example.org/ns#a9589> <http://example.org/ns#a9589> .
+<http://example.org/ns#a9590> <http://example.org/ns#a9590> <http://example.org/ns#a9590> .
+<http://example.org/ns#a9591> <http://example.org/ns#a9591> <http://example.org/ns#a9591> .
+<http://example.org/ns#a9592> <http://example.org/ns#a9592> <http://example.org/ns#a9592> .
+<http://example.org/ns#a9593> <http://example.org/ns#a9593> <http://example.org/ns#a9593> .
+<http://example.org/ns#a9594> <http://example.org/ns#a9594> <http://example.org/ns#a9594> .
+<http://example.org/ns#a9595> <http://example.org/ns#a9595> <http://example.org/ns#a9595> .
+<http://example.org/ns#a9596> <http://example.org/ns#a9596> <http://example.org/ns#a9596> .
+<http://example.org/ns#a9597> <http://example.org/ns#a9597> <http://example.org/ns#a9597> .
+<http://example.org/ns#a9598> <http://example.org/ns#a9598> <http://example.org/ns#a9598> .
+<http://example.org/ns#a9599> <http://example.org/ns#a9599> <http://example.org/ns#a9599> .
+<http://example.org/ns#a9600> <http://example.org/ns#a9600> <http://example.org/ns#a9600> .
+<http://example.org/ns#a9601> <http://example.org/ns#a9601> <http://example.org/ns#a9601> .
+<http://example.org/ns#a9602> <http://example.org/ns#a9602> <http://example.org/ns#a9602> .
+<http://example.org/ns#a9603> <http://example.org/ns#a9603> <http://example.org/ns#a9603> .
+<http://example.org/ns#a9604> <http://example.org/ns#a9604> <http://example.org/ns#a9604> .
+<http://example.org/ns#a9605> <http://example.org/ns#a9605> <http://example.org/ns#a9605> .
+<http://example.org/ns#a9606> <http://example.org/ns#a9606> <http://example.org/ns#a9606> .
+<http://example.org/ns#a9607> <http://example.org/ns#a9607> <http://example.org/ns#a9607> .
+<http://example.org/ns#a9608> <http://example.org/ns#a9608> <http://example.org/ns#a9608> .
+<http://example.org/ns#a9609> <http://example.org/ns#a9609> <http://example.org/ns#a9609> .
+<http://example.org/ns#a9610> <http://example.org/ns#a9610> <http://example.org/ns#a9610> .
+<http://example.org/ns#a9611> <http://example.org/ns#a9611> <http://example.org/ns#a9611> .
+<http://example.org/ns#a9612> <http://example.org/ns#a9612> <http://example.org/ns#a9612> .
+<http://example.org/ns#a9613> <http://example.org/ns#a9613> <http://example.org/ns#a9613> .
+<http://example.org/ns#a9614> <http://example.org/ns#a9614> <http://example.org/ns#a9614> .
+<http://example.org/ns#a9615> <http://example.org/ns#a9615> <http://example.org/ns#a9615> .
+<http://example.org/ns#a9616> <http://example.org/ns#a9616> <http://example.org/ns#a9616> .
+<http://example.org/ns#a9617> <http://example.org/ns#a9617> <http://example.org/ns#a9617> .
+<http://example.org/ns#a9618> <http://example.org/ns#a9618> <http://example.org/ns#a9618> .
+<http://example.org/ns#a9619> <http://example.org/ns#a9619> <http://example.org/ns#a9619> .
+<http://example.org/ns#a9620> <http://example.org/ns#a9620> <http://example.org/ns#a9620> .
+<http://example.org/ns#a9621> <http://example.org/ns#a9621> <http://example.org/ns#a9621> .
+<http://example.org/ns#a9622> <http://example.org/ns#a9622> <http://example.org/ns#a9622> .
+<http://example.org/ns#a9623> <http://example.org/ns#a9623> <http://example.org/ns#a9623> .
+<http://example.org/ns#a9624> <http://example.org/ns#a9624> <http://example.org/ns#a9624> .
+<http://example.org/ns#a9625> <http://example.org/ns#a9625> <http://example.org/ns#a9625> .
+<http://example.org/ns#a9626> <http://example.org/ns#a9626> <http://example.org/ns#a9626> .
+<http://example.org/ns#a9627> <http://example.org/ns#a9627> <http://example.org/ns#a9627> .
+<http://example.org/ns#a9628> <http://example.org/ns#a9628> <http://example.org/ns#a9628> .
+<http://example.org/ns#a9629> <http://example.org/ns#a9629> <http://example.org/ns#a9629> .
+<http://example.org/ns#a9630> <http://example.org/ns#a9630> <http://example.org/ns#a9630> .
+<http://example.org/ns#a9631> <http://example.org/ns#a9631> <http://example.org/ns#a9631> .
+<http://example.org/ns#a9632> <http://example.org/ns#a9632> <http://example.org/ns#a9632> .
+<http://example.org/ns#a9633> <http://example.org/ns#a9633> <http://example.org/ns#a9633> .
+<http://example.org/ns#a9634> <http://example.org/ns#a9634> <http://example.org/ns#a9634> .
+<http://example.org/ns#a9635> <http://example.org/ns#a9635> <http://example.org/ns#a9635> .
+<http://example.org/ns#a9636> <http://example.org/ns#a9636> <http://example.org/ns#a9636> .
+<http://example.org/ns#a9637> <http://example.org/ns#a9637> <http://example.org/ns#a9637> .
+<http://example.org/ns#a9638> <http://example.org/ns#a9638> <http://example.org/ns#a9638> .
+<http://example.org/ns#a9639> <http://example.org/ns#a9639> <http://example.org/ns#a9639> .
+<http://example.org/ns#a9640> <http://example.org/ns#a9640> <http://example.org/ns#a9640> .
+<http://example.org/ns#a9641> <http://example.org/ns#a9641> <http://example.org/ns#a9641> .
+<http://example.org/ns#a9642> <http://example.org/ns#a9642> <http://example.org/ns#a9642> .
+<http://example.org/ns#a9643> <http://example.org/ns#a9643> <http://example.org/ns#a9643> .
+<http://example.org/ns#a9644> <http://example.org/ns#a9644> <http://example.org/ns#a9644> .
+<http://example.org/ns#a9645> <http://example.org/ns#a9645> <http://example.org/ns#a9645> .
+<http://example.org/ns#a9646> <http://example.org/ns#a9646> <http://example.org/ns#a9646> .
+<http://example.org/ns#a9647> <http://example.org/ns#a9647> <http://example.org/ns#a9647> .
+<http://example.org/ns#a9648> <http://example.org/ns#a9648> <http://example.org/ns#a9648> .
+<http://example.org/ns#a9649> <http://example.org/ns#a9649> <http://example.org/ns#a9649> .
+<http://example.org/ns#a9650> <http://example.org/ns#a9650> <http://example.org/ns#a9650> .
+<http://example.org/ns#a9651> <http://example.org/ns#a9651> <http://example.org/ns#a9651> .
+<http://example.org/ns#a9652> <http://example.org/ns#a9652> <http://example.org/ns#a9652> .
+<http://example.org/ns#a9653> <http://example.org/ns#a9653> <http://example.org/ns#a9653> .
+<http://example.org/ns#a9654> <http://example.org/ns#a9654> <http://example.org/ns#a9654> .
+<http://example.org/ns#a9655> <http://example.org/ns#a9655> <http://example.org/ns#a9655> .
+<http://example.org/ns#a9656> <http://example.org/ns#a9656> <http://example.org/ns#a9656> .
+<http://example.org/ns#a9657> <http://example.org/ns#a9657> <http://example.org/ns#a9657> .
+<http://example.org/ns#a9658> <http://example.org/ns#a9658> <http://example.org/ns#a9658> .
+<http://example.org/ns#a9659> <http://example.org/ns#a9659> <http://example.org/ns#a9659> .
+<http://example.org/ns#a9660> <http://example.org/ns#a9660> <http://example.org/ns#a9660> .
+<http://example.org/ns#a9661> <http://example.org/ns#a9661> <http://example.org/ns#a9661> .
+<http://example.org/ns#a9662> <http://example.org/ns#a9662> <http://example.org/ns#a9662> .
+<http://example.org/ns#a9663> <http://example.org/ns#a9663> <http://example.org/ns#a9663> .
+<http://example.org/ns#a9664> <http://example.org/ns#a9664> <http://example.org/ns#a9664> .
+<http://example.org/ns#a9665> <http://example.org/ns#a9665> <http://example.org/ns#a9665> .
+<http://example.org/ns#a9666> <http://example.org/ns#a9666> <http://example.org/ns#a9666> .
+<http://example.org/ns#a9667> <http://example.org/ns#a9667> <http://example.org/ns#a9667> .
+<http://example.org/ns#a9668> <http://example.org/ns#a9668> <http://example.org/ns#a9668> .
+<http://example.org/ns#a9669> <http://example.org/ns#a9669> <http://example.org/ns#a9669> .
+<http://example.org/ns#a9670> <http://example.org/ns#a9670> <http://example.org/ns#a9670> .
+<http://example.org/ns#a9671> <http://example.org/ns#a9671> <http://example.org/ns#a9671> .
+<http://example.org/ns#a9672> <http://example.org/ns#a9672> <http://example.org/ns#a9672> .
+<http://example.org/ns#a9673> <http://example.org/ns#a9673> <http://example.org/ns#a9673> .
+<http://example.org/ns#a9674> <http://example.org/ns#a9674> <http://example.org/ns#a9674> .
+<http://example.org/ns#a9675> <http://example.org/ns#a9675> <http://example.org/ns#a9675> .
+<http://example.org/ns#a9676> <http://example.org/ns#a9676> <http://example.org/ns#a9676> .
+<http://example.org/ns#a9677> <http://example.org/ns#a9677> <http://example.org/ns#a9677> .
+<http://example.org/ns#a9678> <http://example.org/ns#a9678> <http://example.org/ns#a9678> .
+<http://example.org/ns#a9679> <http://example.org/ns#a9679> <http://example.org/ns#a9679> .
+<http://example.org/ns#a9680> <http://example.org/ns#a9680> <http://example.org/ns#a9680> .
+<http://example.org/ns#a9681> <http://example.org/ns#a9681> <http://example.org/ns#a9681> .
+<http://example.org/ns#a9682> <http://example.org/ns#a9682> <http://example.org/ns#a9682> .
+<http://example.org/ns#a9683> <http://example.org/ns#a9683> <http://example.org/ns#a9683> .
+<http://example.org/ns#a9684> <http://example.org/ns#a9684> <http://example.org/ns#a9684> .
+<http://example.org/ns#a9685> <http://example.org/ns#a9685> <http://example.org/ns#a9685> .
+<http://example.org/ns#a9686> <http://example.org/ns#a9686> <http://example.org/ns#a9686> .
+<http://example.org/ns#a9687> <http://example.org/ns#a9687> <http://example.org/ns#a9687> .
+<http://example.org/ns#a9688> <http://example.org/ns#a9688> <http://example.org/ns#a9688> .
+<http://example.org/ns#a9689> <http://example.org/ns#a9689> <http://example.org/ns#a9689> .
+<http://example.org/ns#a9690> <http://example.org/ns#a9690> <http://example.org/ns#a9690> .
+<http://example.org/ns#a9691> <http://example.org/ns#a9691> <http://example.org/ns#a9691> .
+<http://example.org/ns#a9692> <http://example.org/ns#a9692> <http://example.org/ns#a9692> .
+<http://example.org/ns#a9693> <http://example.org/ns#a9693> <http://example.org/ns#a9693> .
+<http://example.org/ns#a9694> <http://example.org/ns#a9694> <http://example.org/ns#a9694> .
+<http://example.org/ns#a9695> <http://example.org/ns#a9695> <http://example.org/ns#a9695> .
+<http://example.org/ns#a9696> <http://example.org/ns#a9696> <http://example.org/ns#a9696> .
+<http://example.org/ns#a9697> <http://example.org/ns#a9697> <http://example.org/ns#a9697> .
+<http://example.org/ns#a9698> <http://example.org/ns#a9698> <http://example.org/ns#a9698> .
+<http://example.org/ns#a9699> <http://example.org/ns#a9699> <http://example.org/ns#a9699> .
+<http://example.org/ns#a9700> <http://example.org/ns#a9700> <http://example.org/ns#a9700> .
+<http://example.org/ns#a9701> <http://example.org/ns#a9701> <http://example.org/ns#a9701> .
+<http://example.org/ns#a9702> <http://example.org/ns#a9702> <http://example.org/ns#a9702> .
+<http://example.org/ns#a9703> <http://example.org/ns#a9703> <http://example.org/ns#a9703> .
+<http://example.org/ns#a9704> <http://example.org/ns#a9704> <http://example.org/ns#a9704> .
+<http://example.org/ns#a9705> <http://example.org/ns#a9705> <http://example.org/ns#a9705> .
+<http://example.org/ns#a9706> <http://example.org/ns#a9706> <http://example.org/ns#a9706> .
+<http://example.org/ns#a9707> <http://example.org/ns#a9707> <http://example.org/ns#a9707> .
+<http://example.org/ns#a9708> <http://example.org/ns#a9708> <http://example.org/ns#a9708> .
+<http://example.org/ns#a9709> <http://example.org/ns#a9709> <http://example.org/ns#a9709> .
+<http://example.org/ns#a9710> <http://example.org/ns#a9710> <http://example.org/ns#a9710> .
+<http://example.org/ns#a9711> <http://example.org/ns#a9711> <http://example.org/ns#a9711> .
+<http://example.org/ns#a9712> <http://example.org/ns#a9712> <http://example.org/ns#a9712> .
+<http://example.org/ns#a9713> <http://example.org/ns#a9713> <http://example.org/ns#a9713> .
+<http://example.org/ns#a9714> <http://example.org/ns#a9714> <http://example.org/ns#a9714> .
+<http://example.org/ns#a9715> <http://example.org/ns#a9715> <http://example.org/ns#a9715> .
+<http://example.org/ns#a9716> <http://example.org/ns#a9716> <http://example.org/ns#a9716> .
+<http://example.org/ns#a9717> <http://example.org/ns#a9717> <http://example.org/ns#a9717> .
+<http://example.org/ns#a9718> <http://example.org/ns#a9718> <http://example.org/ns#a9718> .
+<http://example.org/ns#a9719> <http://example.org/ns#a9719> <http://example.org/ns#a9719> .
+<http://example.org/ns#a9720> <http://example.org/ns#a9720> <http://example.org/ns#a9720> .
+<http://example.org/ns#a9721> <http://example.org/ns#a9721> <http://example.org/ns#a9721> .
+<http://example.org/ns#a9722> <http://example.org/ns#a9722> <http://example.org/ns#a9722> .
+<http://example.org/ns#a9723> <http://example.org/ns#a9723> <http://example.org/ns#a9723> .
+<http://example.org/ns#a9724> <http://example.org/ns#a9724> <http://example.org/ns#a9724> .
+<http://example.org/ns#a9725> <http://example.org/ns#a9725> <http://example.org/ns#a9725> .
+<http://example.org/ns#a9726> <http://example.org/ns#a9726> <http://example.org/ns#a9726> .
+<http://example.org/ns#a9727> <http://example.org/ns#a9727> <http://example.org/ns#a9727> .
+<http://example.org/ns#a9728> <http://example.org/ns#a9728> <http://example.org/ns#a9728> .
+<http://example.org/ns#a9729> <http://example.org/ns#a9729> <http://example.org/ns#a9729> .
+<http://example.org/ns#a9730> <http://example.org/ns#a9730> <http://example.org/ns#a9730> .
+<http://example.org/ns#a9731> <http://example.org/ns#a9731> <http://example.org/ns#a9731> .
+<http://example.org/ns#a9732> <http://example.org/ns#a9732> <http://example.org/ns#a9732> .
+<http://example.org/ns#a9733> <http://example.org/ns#a9733> <http://example.org/ns#a9733> .
+<http://example.org/ns#a9734> <http://example.org/ns#a9734> <http://example.org/ns#a9734> .
+<http://example.org/ns#a9735> <http://example.org/ns#a9735> <http://example.org/ns#a9735> .
+<http://example.org/ns#a9736> <http://example.org/ns#a9736> <http://example.org/ns#a9736> .
+<http://example.org/ns#a9737> <http://example.org/ns#a9737> <http://example.org/ns#a9737> .
+<http://example.org/ns#a9738> <http://example.org/ns#a9738> <http://example.org/ns#a9738> .
+<http://example.org/ns#a9739> <http://example.org/ns#a9739> <http://example.org/ns#a9739> .
+<http://example.org/ns#a9740> <http://example.org/ns#a9740> <http://example.org/ns#a9740> .
+<http://example.org/ns#a9741> <http://example.org/ns#a9741> <http://example.org/ns#a9741> .
+<http://example.org/ns#a9742> <http://example.org/ns#a9742> <http://example.org/ns#a9742> .
+<http://example.org/ns#a9743> <http://example.org/ns#a9743> <http://example.org/ns#a9743> .
+<http://example.org/ns#a9744> <http://example.org/ns#a9744> <http://example.org/ns#a9744> .
+<http://example.org/ns#a9745> <http://example.org/ns#a9745> <http://example.org/ns#a9745> .
+<http://example.org/ns#a9746> <http://example.org/ns#a9746> <http://example.org/ns#a9746> .
+<http://example.org/ns#a9747> <http://example.org/ns#a9747> <http://example.org/ns#a9747> .
+<http://example.org/ns#a9748> <http://example.org/ns#a9748> <http://example.org/ns#a9748> .
+<http://example.org/ns#a9749> <http://example.org/ns#a9749> <http://example.org/ns#a9749> .
+<http://example.org/ns#a9750> <http://example.org/ns#a9750> <http://example.org/ns#a9750> .
+<http://example.org/ns#a9751> <http://example.org/ns#a9751> <http://example.org/ns#a9751> .
+<http://example.org/ns#a9752> <http://example.org/ns#a9752> <http://example.org/ns#a9752> .
+<http://example.org/ns#a9753> <http://example.org/ns#a9753> <http://example.org/ns#a9753> .
+<http://example.org/ns#a9754> <http://example.org/ns#a9754> <http://example.org/ns#a9754> .
+<http://example.org/ns#a9755> <http://example.org/ns#a9755> <http://example.org/ns#a9755> .
+<http://example.org/ns#a9756> <http://example.org/ns#a9756> <http://example.org/ns#a9756> .
+<http://example.org/ns#a9757> <http://example.org/ns#a9757> <http://example.org/ns#a9757> .
+<http://example.org/ns#a9758> <http://example.org/ns#a9758> <http://example.org/ns#a9758> .
+<http://example.org/ns#a9759> <http://example.org/ns#a9759> <http://example.org/ns#a9759> .
+<http://example.org/ns#a9760> <http://example.org/ns#a9760> <http://example.org/ns#a9760> .
+<http://example.org/ns#a9761> <http://example.org/ns#a9761> <http://example.org/ns#a9761> .
+<http://example.org/ns#a9762> <http://example.org/ns#a9762> <http://example.org/ns#a9762> .
+<http://example.org/ns#a9763> <http://example.org/ns#a9763> <http://example.org/ns#a9763> .
+<http://example.org/ns#a9764> <http://example.org/ns#a9764> <http://example.org/ns#a9764> .
+<http://example.org/ns#a9765> <http://example.org/ns#a9765> <http://example.org/ns#a9765> .
+<http://example.org/ns#a9766> <http://example.org/ns#a9766> <http://example.org/ns#a9766> .
+<http://example.org/ns#a9767> <http://example.org/ns#a9767> <http://example.org/ns#a9767> .
+<http://example.org/ns#a9768> <http://example.org/ns#a9768> <http://example.org/ns#a9768> .
+<http://example.org/ns#a9769> <http://example.org/ns#a9769> <http://example.org/ns#a9769> .
+<http://example.org/ns#a9770> <http://example.org/ns#a9770> <http://example.org/ns#a9770> .
+<http://example.org/ns#a9771> <http://example.org/ns#a9771> <http://example.org/ns#a9771> .
+<http://example.org/ns#a9772> <http://example.org/ns#a9772> <http://example.org/ns#a9772> .
+<http://example.org/ns#a9773> <http://example.org/ns#a9773> <http://example.org/ns#a9773> .
+<http://example.org/ns#a9774> <http://example.org/ns#a9774> <http://example.org/ns#a9774> .
+<http://example.org/ns#a9775> <http://example.org/ns#a9775> <http://example.org/ns#a9775> .
+<http://example.org/ns#a9776> <http://example.org/ns#a9776> <http://example.org/ns#a9776> .
+<http://example.org/ns#a9777> <http://example.org/ns#a9777> <http://example.org/ns#a9777> .
+<http://example.org/ns#a9778> <http://example.org/ns#a9778> <http://example.org/ns#a9778> .
+<http://example.org/ns#a9779> <http://example.org/ns#a9779> <http://example.org/ns#a9779> .
+<http://example.org/ns#a9780> <http://example.org/ns#a9780> <http://example.org/ns#a9780> .
+<http://example.org/ns#a9781> <http://example.org/ns#a9781> <http://example.org/ns#a9781> .
+<http://example.org/ns#a9782> <http://example.org/ns#a9782> <http://example.org/ns#a9782> .
+<http://example.org/ns#a9783> <http://example.org/ns#a9783> <http://example.org/ns#a9783> .
+<http://example.org/ns#a9784> <http://example.org/ns#a9784> <http://example.org/ns#a9784> .
+<http://example.org/ns#a9785> <http://example.org/ns#a9785> <http://example.org/ns#a9785> .
+<http://example.org/ns#a9786> <http://example.org/ns#a9786> <http://example.org/ns#a9786> .
+<http://example.org/ns#a9787> <http://example.org/ns#a9787> <http://example.org/ns#a9787> .
+<http://example.org/ns#a9788> <http://example.org/ns#a9788> <http://example.org/ns#a9788> .
+<http://example.org/ns#a9789> <http://example.org/ns#a9789> <http://example.org/ns#a9789> .
+<http://example.org/ns#a9790> <http://example.org/ns#a9790> <http://example.org/ns#a9790> .
+<http://example.org/ns#a9791> <http://example.org/ns#a9791> <http://example.org/ns#a9791> .
+<http://example.org/ns#a9792> <http://example.org/ns#a9792> <http://example.org/ns#a9792> .
+<http://example.org/ns#a9793> <http://example.org/ns#a9793> <http://example.org/ns#a9793> .
+<http://example.org/ns#a9794> <http://example.org/ns#a9794> <http://example.org/ns#a9794> .
+<http://example.org/ns#a9795> <http://example.org/ns#a9795> <http://example.org/ns#a9795> .
+<http://example.org/ns#a9796> <http://example.org/ns#a9796> <http://example.org/ns#a9796> .
+<http://example.org/ns#a9797> <http://example.org/ns#a9797> <http://example.org/ns#a9797> .
+<http://example.org/ns#a9798> <http://example.org/ns#a9798> <http://example.org/ns#a9798> .
+<http://example.org/ns#a9799> <http://example.org/ns#a9799> <http://example.org/ns#a9799> .
+<http://example.org/ns#a9800> <http://example.org/ns#a9800> <http://example.org/ns#a9800> .
+<http://example.org/ns#a9801> <http://example.org/ns#a9801> <http://example.org/ns#a9801> .
+<http://example.org/ns#a9802> <http://example.org/ns#a9802> <http://example.org/ns#a9802> .
+<http://example.org/ns#a9803> <http://example.org/ns#a9803> <http://example.org/ns#a9803> .
+<http://example.org/ns#a9804> <http://example.org/ns#a9804> <http://example.org/ns#a9804> .
+<http://example.org/ns#a9805> <http://example.org/ns#a9805> <http://example.org/ns#a9805> .
+<http://example.org/ns#a9806> <http://example.org/ns#a9806> <http://example.org/ns#a9806> .
+<http://example.org/ns#a9807> <http://example.org/ns#a9807> <http://example.org/ns#a9807> .
+<http://example.org/ns#a9808> <http://example.org/ns#a9808> <http://example.org/ns#a9808> .
+<http://example.org/ns#a9809> <http://example.org/ns#a9809> <http://example.org/ns#a9809> .
+<http://example.org/ns#a9810> <http://example.org/ns#a9810> <http://example.org/ns#a9810> .
+<http://example.org/ns#a9811> <http://example.org/ns#a9811> <http://example.org/ns#a9811> .
+<http://example.org/ns#a9812> <http://example.org/ns#a9812> <http://example.org/ns#a9812> .
+<http://example.org/ns#a9813> <http://example.org/ns#a9813> <http://example.org/ns#a9813> .
+<http://example.org/ns#a9814> <http://example.org/ns#a9814> <http://example.org/ns#a9814> .
+<http://example.org/ns#a9815> <http://example.org/ns#a9815> <http://example.org/ns#a9815> .
+<http://example.org/ns#a9816> <http://example.org/ns#a9816> <http://example.org/ns#a9816> .
+<http://example.org/ns#a9817> <http://example.org/ns#a9817> <http://example.org/ns#a9817> .
+<http://example.org/ns#a9818> <http://example.org/ns#a9818> <http://example.org/ns#a9818> .
+<http://example.org/ns#a9819> <http://example.org/ns#a9819> <http://example.org/ns#a9819> .
+<http://example.org/ns#a9820> <http://example.org/ns#a9820> <http://example.org/ns#a9820> .
+<http://example.org/ns#a9821> <http://example.org/ns#a9821> <http://example.org/ns#a9821> .
+<http://example.org/ns#a9822> <http://example.org/ns#a9822> <http://example.org/ns#a9822> .
+<http://example.org/ns#a9823> <http://example.org/ns#a9823> <http://example.org/ns#a9823> .
+<http://example.org/ns#a9824> <http://example.org/ns#a9824> <http://example.org/ns#a9824> .
+<http://example.org/ns#a9825> <http://example.org/ns#a9825> <http://example.org/ns#a9825> .
+<http://example.org/ns#a9826> <http://example.org/ns#a9826> <http://example.org/ns#a9826> .
+<http://example.org/ns#a9827> <http://example.org/ns#a9827> <http://example.org/ns#a9827> .
+<http://example.org/ns#a9828> <http://example.org/ns#a9828> <http://example.org/ns#a9828> .
+<http://example.org/ns#a9829> <http://example.org/ns#a9829> <http://example.org/ns#a9829> .
+<http://example.org/ns#a9830> <http://example.org/ns#a9830> <http://example.org/ns#a9830> .
+<http://example.org/ns#a9831> <http://example.org/ns#a9831> <http://example.org/ns#a9831> .
+<http://example.org/ns#a9832> <http://example.org/ns#a9832> <http://example.org/ns#a9832> .
+<http://example.org/ns#a9833> <http://example.org/ns#a9833> <http://example.org/ns#a9833> .
+<http://example.org/ns#a9834> <http://example.org/ns#a9834> <http://example.org/ns#a9834> .
+<http://example.org/ns#a9835> <http://example.org/ns#a9835> <http://example.org/ns#a9835> .
+<http://example.org/ns#a9836> <http://example.org/ns#a9836> <http://example.org/ns#a9836> .
+<http://example.org/ns#a9837> <http://example.org/ns#a9837> <http://example.org/ns#a9837> .
+<http://example.org/ns#a9838> <http://example.org/ns#a9838> <http://example.org/ns#a9838> .
+<http://example.org/ns#a9839> <http://example.org/ns#a9839> <http://example.org/ns#a9839> .
+<http://example.org/ns#a9840> <http://example.org/ns#a9840> <http://example.org/ns#a9840> .
+<http://example.org/ns#a9841> <http://example.org/ns#a9841> <http://example.org/ns#a9841> .
+<http://example.org/ns#a9842> <http://example.org/ns#a9842> <http://example.org/ns#a9842> .
+<http://example.org/ns#a9843> <http://example.org/ns#a9843> <http://example.org/ns#a9843> .
+<http://example.org/ns#a9844> <http://example.org/ns#a9844> <http://example.org/ns#a9844> .
+<http://example.org/ns#a9845> <http://example.org/ns#a9845> <http://example.org/ns#a9845> .
+<http://example.org/ns#a9846> <http://example.org/ns#a9846> <http://example.org/ns#a9846> .
+<http://example.org/ns#a9847> <http://example.org/ns#a9847> <http://example.org/ns#a9847> .
+<http://example.org/ns#a9848> <http://example.org/ns#a9848> <http://example.org/ns#a9848> .
+<http://example.org/ns#a9849> <http://example.org/ns#a9849> <http://example.org/ns#a9849> .
+<http://example.org/ns#a9850> <http://example.org/ns#a9850> <http://example.org/ns#a9850> .
+<http://example.org/ns#a9851> <http://example.org/ns#a9851> <http://example.org/ns#a9851> .
+<http://example.org/ns#a9852> <http://example.org/ns#a9852> <http://example.org/ns#a9852> .
+<http://example.org/ns#a9853> <http://example.org/ns#a9853> <http://example.org/ns#a9853> .
+<http://example.org/ns#a9854> <http://example.org/ns#a9854> <http://example.org/ns#a9854> .
+<http://example.org/ns#a9855> <http://example.org/ns#a9855> <http://example.org/ns#a9855> .
+<http://example.org/ns#a9856> <http://example.org/ns#a9856> <http://example.org/ns#a9856> .
+<http://example.org/ns#a9857> <http://example.org/ns#a9857> <http://example.org/ns#a9857> .
+<http://example.org/ns#a9858> <http://example.org/ns#a9858> <http://example.org/ns#a9858> .
+<http://example.org/ns#a9859> <http://example.org/ns#a9859> <http://example.org/ns#a9859> .
+<http://example.org/ns#a9860> <http://example.org/ns#a9860> <http://example.org/ns#a9860> .
+<http://example.org/ns#a9861> <http://example.org/ns#a9861> <http://example.org/ns#a9861> .
+<http://example.org/ns#a9862> <http://example.org/ns#a9862> <http://example.org/ns#a9862> .
+<http://example.org/ns#a9863> <http://example.org/ns#a9863> <http://example.org/ns#a9863> .
+<http://example.org/ns#a9864> <http://example.org/ns#a9864> <http://example.org/ns#a9864> .
+<http://example.org/ns#a9865> <http://example.org/ns#a9865> <http://example.org/ns#a9865> .
+<http://example.org/ns#a9866> <http://example.org/ns#a9866> <http://example.org/ns#a9866> .
+<http://example.org/ns#a9867> <http://example.org/ns#a9867> <http://example.org/ns#a9867> .
+<http://example.org/ns#a9868> <http://example.org/ns#a9868> <http://example.org/ns#a9868> .
+<http://example.org/ns#a9869> <http://example.org/ns#a9869> <http://example.org/ns#a9869> .
+<http://example.org/ns#a9870> <http://example.org/ns#a9870> <http://example.org/ns#a9870> .
+<http://example.org/ns#a9871> <http://example.org/ns#a9871> <http://example.org/ns#a9871> .
+<http://example.org/ns#a9872> <http://example.org/ns#a9872> <http://example.org/ns#a9872> .
+<http://example.org/ns#a9873> <http://example.org/ns#a9873> <http://example.org/ns#a9873> .
+<http://example.org/ns#a9874> <http://example.org/ns#a9874> <http://example.org/ns#a9874> .
+<http://example.org/ns#a9875> <http://example.org/ns#a9875> <http://example.org/ns#a9875> .
+<http://example.org/ns#a9876> <http://example.org/ns#a9876> <http://example.org/ns#a9876> .
+<http://example.org/ns#a9877> <http://example.org/ns#a9877> <http://example.org/ns#a9877> .
+<http://example.org/ns#a9878> <http://example.org/ns#a9878> <http://example.org/ns#a9878> .
+<http://example.org/ns#a9879> <http://example.org/ns#a9879> <http://example.org/ns#a9879> .
+<http://example.org/ns#a9880> <http://example.org/ns#a9880> <http://example.org/ns#a9880> .
+<http://example.org/ns#a9881> <http://example.org/ns#a9881> <http://example.org/ns#a9881> .
+<http://example.org/ns#a9882> <http://example.org/ns#a9882> <http://example.org/ns#a9882> .
+<http://example.org/ns#a9883> <http://example.org/ns#a9883> <http://example.org/ns#a9883> .
+<http://example.org/ns#a9884> <http://example.org/ns#a9884> <http://example.org/ns#a9884> .
+<http://example.org/ns#a9885> <http://example.org/ns#a9885> <http://example.org/ns#a9885> .
+<http://example.org/ns#a9886> <http://example.org/ns#a9886> <http://example.org/ns#a9886> .
+<http://example.org/ns#a9887> <http://example.org/ns#a9887> <http://example.org/ns#a9887> .
+<http://example.org/ns#a9888> <http://example.org/ns#a9888> <http://example.org/ns#a9888> .
+<http://example.org/ns#a9889> <http://example.org/ns#a9889> <http://example.org/ns#a9889> .
+<http://example.org/ns#a9890> <http://example.org/ns#a9890> <http://example.org/ns#a9890> .
+<http://example.org/ns#a9891> <http://example.org/ns#a9891> <http://example.org/ns#a9891> .
+<http://example.org/ns#a9892> <http://example.org/ns#a9892> <http://example.org/ns#a9892> .
+<http://example.org/ns#a9893> <http://example.org/ns#a9893> <http://example.org/ns#a9893> .
+<http://example.org/ns#a9894> <http://example.org/ns#a9894> <http://example.org/ns#a9894> .
+<http://example.org/ns#a9895> <http://example.org/ns#a9895> <http://example.org/ns#a9895> .
+<http://example.org/ns#a9896> <http://example.org/ns#a9896> <http://example.org/ns#a9896> .
+<http://example.org/ns#a9897> <http://example.org/ns#a9897> <http://example.org/ns#a9897> .
+<http://example.org/ns#a9898> <http://example.org/ns#a9898> <http://example.org/ns#a9898> .
+<http://example.org/ns#a9899> <http://example.org/ns#a9899> <http://example.org/ns#a9899> .
+<http://example.org/ns#a9900> <http://example.org/ns#a9900> <http://example.org/ns#a9900> .
+<http://example.org/ns#a9901> <http://example.org/ns#a9901> <http://example.org/ns#a9901> .
+<http://example.org/ns#a9902> <http://example.org/ns#a9902> <http://example.org/ns#a9902> .
+<http://example.org/ns#a9903> <http://example.org/ns#a9903> <http://example.org/ns#a9903> .
+<http://example.org/ns#a9904> <http://example.org/ns#a9904> <http://example.org/ns#a9904> .
+<http://example.org/ns#a9905> <http://example.org/ns#a9905> <http://example.org/ns#a9905> .
+<http://example.org/ns#a9906> <http://example.org/ns#a9906> <http://example.org/ns#a9906> .
+<http://example.org/ns#a9907> <http://example.org/ns#a9907> <http://example.org/ns#a9907> .
+<http://example.org/ns#a9908> <http://example.org/ns#a9908> <http://example.org/ns#a9908> .
+<http://example.org/ns#a9909> <http://example.org/ns#a9909> <http://example.org/ns#a9909> .
+<http://example.org/ns#a9910> <http://example.org/ns#a9910> <http://example.org/ns#a9910> .
+<http://example.org/ns#a9911> <http://example.org/ns#a9911> <http://example.org/ns#a9911> .
+<http://example.org/ns#a9912> <http://example.org/ns#a9912> <http://example.org/ns#a9912> .
+<http://example.org/ns#a9913> <http://example.org/ns#a9913> <http://example.org/ns#a9913> .
+<http://example.org/ns#a9914> <http://example.org/ns#a9914> <http://example.org/ns#a9914> .
+<http://example.org/ns#a9915> <http://example.org/ns#a9915> <http://example.org/ns#a9915> .
+<http://example.org/ns#a9916> <http://example.org/ns#a9916> <http://example.org/ns#a9916> .
+<http://example.org/ns#a9917> <http://example.org/ns#a9917> <http://example.org/ns#a9917> .
+<http://example.org/ns#a9918> <http://example.org/ns#a9918> <http://example.org/ns#a9918> .
+<http://example.org/ns#a9919> <http://example.org/ns#a9919> <http://example.org/ns#a9919> .
+<http://example.org/ns#a9920> <http://example.org/ns#a9920> <http://example.org/ns#a9920> .
+<http://example.org/ns#a9921> <http://example.org/ns#a9921> <http://example.org/ns#a9921> .
+<http://example.org/ns#a9922> <http://example.org/ns#a9922> <http://example.org/ns#a9922> .
+<http://example.org/ns#a9923> <http://example.org/ns#a9923> <http://example.org/ns#a9923> .
+<http://example.org/ns#a9924> <http://example.org/ns#a9924> <http://example.org/ns#a9924> .
+<http://example.org/ns#a9925> <http://example.org/ns#a9925> <http://example.org/ns#a9925> .
+<http://example.org/ns#a9926> <http://example.org/ns#a9926> <http://example.org/ns#a9926> .
+<http://example.org/ns#a9927> <http://example.org/ns#a9927> <http://example.org/ns#a9927> .
+<http://example.org/ns#a9928> <http://example.org/ns#a9928> <http://example.org/ns#a9928> .
+<http://example.org/ns#a9929> <http://example.org/ns#a9929> <http://example.org/ns#a9929> .
+<http://example.org/ns#a9930> <http://example.org/ns#a9930> <http://example.org/ns#a9930> .
+<http://example.org/ns#a9931> <http://example.org/ns#a9931> <http://example.org/ns#a9931> .
+<http://example.org/ns#a9932> <http://example.org/ns#a9932> <http://example.org/ns#a9932> .
+<http://example.org/ns#a9933> <http://example.org/ns#a9933> <http://example.org/ns#a9933> .
+<http://example.org/ns#a9934> <http://example.org/ns#a9934> <http://example.org/ns#a9934> .
+<http://example.org/ns#a9935> <http://example.org/ns#a9935> <http://example.org/ns#a9935> .
+<http://example.org/ns#a9936> <http://example.org/ns#a9936> <http://example.org/ns#a9936> .
+<http://example.org/ns#a9937> <http://example.org/ns#a9937> <http://example.org/ns#a9937> .
+<http://example.org/ns#a9938> <http://example.org/ns#a9938> <http://example.org/ns#a9938> .
+<http://example.org/ns#a9939> <http://example.org/ns#a9939> <http://example.org/ns#a9939> .
+<http://example.org/ns#a9940> <http://example.org/ns#a9940> <http://example.org/ns#a9940> .
+<http://example.org/ns#a9941> <http://example.org/ns#a9941> <http://example.org/ns#a9941> .
+<http://example.org/ns#a9942> <http://example.org/ns#a9942> <http://example.org/ns#a9942> .
+<http://example.org/ns#a9943> <http://example.org/ns#a9943> <http://example.org/ns#a9943> .
+<http://example.org/ns#a9944> <http://example.org/ns#a9944> <http://example.org/ns#a9944> .
+<http://example.org/ns#a9945> <http://example.org/ns#a9945> <http://example.org/ns#a9945> .
+<http://example.org/ns#a9946> <http://example.org/ns#a9946> <http://example.org/ns#a9946> .
+<http://example.org/ns#a9947> <http://example.org/ns#a9947> <http://example.org/ns#a9947> .
+<http://example.org/ns#a9948> <http://example.org/ns#a9948> <http://example.org/ns#a9948> .
+<http://example.org/ns#a9949> <http://example.org/ns#a9949> <http://example.org/ns#a9949> .
+<http://example.org/ns#a9950> <http://example.org/ns#a9950> <http://example.org/ns#a9950> .
+<http://example.org/ns#a9951> <http://example.org/ns#a9951> <http://example.org/ns#a9951> .
+<http://example.org/ns#a9952> <http://example.org/ns#a9952> <http://example.org/ns#a9952> .
+<http://example.org/ns#a9953> <http://example.org/ns#a9953> <http://example.org/ns#a9953> .
+<http://example.org/ns#a9954> <http://example.org/ns#a9954> <http://example.org/ns#a9954> .
+<http://example.org/ns#a9955> <http://example.org/ns#a9955> <http://example.org/ns#a9955> .
+<http://example.org/ns#a9956> <http://example.org/ns#a9956> <http://example.org/ns#a9956> .
+<http://example.org/ns#a9957> <http://example.org/ns#a9957> <http://example.org/ns#a9957> .
+<http://example.org/ns#a9958> <http://example.org/ns#a9958> <http://example.org/ns#a9958> .
+<http://example.org/ns#a9959> <http://example.org/ns#a9959> <http://example.org/ns#a9959> .
+<http://example.org/ns#a9960> <http://example.org/ns#a9960> <http://example.org/ns#a9960> .
+<http://example.org/ns#a9961> <http://example.org/ns#a9961> <http://example.org/ns#a9961> .
+<http://example.org/ns#a9962> <http://example.org/ns#a9962> <http://example.org/ns#a9962> .
+<http://example.org/ns#a9963> <http://example.org/ns#a9963> <http://example.org/ns#a9963> .
+<http://example.org/ns#a9964> <http://example.org/ns#a9964> <http://example.org/ns#a9964> .
+<http://example.org/ns#a9965> <http://example.org/ns#a9965> <http://example.org/ns#a9965> .
+<http://example.org/ns#a9966> <http://example.org/ns#a9966> <http://example.org/ns#a9966> .
+<http://example.org/ns#a9967> <http://example.org/ns#a9967> <http://example.org/ns#a9967> .
+<http://example.org/ns#a9968> <http://example.org/ns#a9968> <http://example.org/ns#a9968> .
+<http://example.org/ns#a9969> <http://example.org/ns#a9969> <http://example.org/ns#a9969> .
+<http://example.org/ns#a9970> <http://example.org/ns#a9970> <http://example.org/ns#a9970> .
+<http://example.org/ns#a9971> <http://example.org/ns#a9971> <http://example.org/ns#a9971> .
+<http://example.org/ns#a9972> <http://example.org/ns#a9972> <http://example.org/ns#a9972> .
+<http://example.org/ns#a9973> <http://example.org/ns#a9973> <http://example.org/ns#a9973> .
+<http://example.org/ns#a9974> <http://example.org/ns#a9974> <http://example.org/ns#a9974> .
+<http://example.org/ns#a9975> <http://example.org/ns#a9975> <http://example.org/ns#a9975> .
+<http://example.org/ns#a9976> <http://example.org/ns#a9976> <http://example.org/ns#a9976> .
+<http://example.org/ns#a9977> <http://example.org/ns#a9977> <http://example.org/ns#a9977> .
+<http://example.org/ns#a9978> <http://example.org/ns#a9978> <http://example.org/ns#a9978> .
+<http://example.org/ns#a9979> <http://example.org/ns#a9979> <http://example.org/ns#a9979> .
+<http://example.org/ns#a9980> <http://example.org/ns#a9980> <http://example.org/ns#a9980> .
+<http://example.org/ns#a9981> <http://example.org/ns#a9981> <http://example.org/ns#a9981> .
+<http://example.org/ns#a9982> <http://example.org/ns#a9982> <http://example.org/ns#a9982> .
+<http://example.org/ns#a9983> <http://example.org/ns#a9983> <http://example.org/ns#a9983> .
+<http://example.org/ns#a9984> <http://example.org/ns#a9984> <http://example.org/ns#a9984> .
+<http://example.org/ns#a9985> <http://example.org/ns#a9985> <http://example.org/ns#a9985> .
+<http://example.org/ns#a9986> <http://example.org/ns#a9986> <http://example.org/ns#a9986> .
+<http://example.org/ns#a9987> <http://example.org/ns#a9987> <http://example.org/ns#a9987> .
+<http://example.org/ns#a9988> <http://example.org/ns#a9988> <http://example.org/ns#a9988> .
+<http://example.org/ns#a9989> <http://example.org/ns#a9989> <http://example.org/ns#a9989> .
+<http://example.org/ns#a9990> <http://example.org/ns#a9990> <http://example.org/ns#a9990> .
+<http://example.org/ns#a9991> <http://example.org/ns#a9991> <http://example.org/ns#a9991> .
+<http://example.org/ns#a9992> <http://example.org/ns#a9992> <http://example.org/ns#a9992> .
+<http://example.org/ns#a9993> <http://example.org/ns#a9993> <http://example.org/ns#a9993> .
+<http://example.org/ns#a9994> <http://example.org/ns#a9994> <http://example.org/ns#a9994> .
+<http://example.org/ns#a9995> <http://example.org/ns#a9995> <http://example.org/ns#a9995> .
+<http://example.org/ns#a9996> <http://example.org/ns#a9996> <http://example.org/ns#a9996> .
+<http://example.org/ns#a9997> <http://example.org/ns#a9997> <http://example.org/ns#a9997> .
+<http://example.org/ns#a9998> <http://example.org/ns#a9998> <http://example.org/ns#a9998> .
+<http://example.org/ns#a9999> <http://example.org/ns#a9999> <http://example.org/ns#a9999> .
+<http://example.org/ns#a10000> <http://example.org/ns#a10000> <http://example.org/ns#a10000> .
diff --git a/tests/turtle/test-14.ttl b/tests/turtle/test-14.ttl
new file mode 100644
index 0000000..ad9dbde
--- /dev/null
+++ b/tests/turtle/test-14.ttl
@@ -0,0 +1,10002 @@
+# 10000 triples, more than the default Bison stack size
+@prefix : <http://example.org/ns#> .
+:a1 :a1 :a1.
+:a2 :a2 :a2.
+:a3 :a3 :a3.
+:a4 :a4 :a4.
+:a5 :a5 :a5.
+:a6 :a6 :a6.
+:a7 :a7 :a7.
+:a8 :a8 :a8.
+:a9 :a9 :a9.
+:a10 :a10 :a10.
+:a11 :a11 :a11.
+:a12 :a12 :a12.
+:a13 :a13 :a13.
+:a14 :a14 :a14.
+:a15 :a15 :a15.
+:a16 :a16 :a16.
+:a17 :a17 :a17.
+:a18 :a18 :a18.
+:a19 :a19 :a19.
+:a20 :a20 :a20.
+:a21 :a21 :a21.
+:a22 :a22 :a22.
+:a23 :a23 :a23.
+:a24 :a24 :a24.
+:a25 :a25 :a25.
+:a26 :a26 :a26.
+:a27 :a27 :a27.
+:a28 :a28 :a28.
+:a29 :a29 :a29.
+:a30 :a30 :a30.
+:a31 :a31 :a31.
+:a32 :a32 :a32.
+:a33 :a33 :a33.
+:a34 :a34 :a34.
+:a35 :a35 :a35.
+:a36 :a36 :a36.
+:a37 :a37 :a37.
+:a38 :a38 :a38.
+:a39 :a39 :a39.
+:a40 :a40 :a40.
+:a41 :a41 :a41.
+:a42 :a42 :a42.
+:a43 :a43 :a43.
+:a44 :a44 :a44.
+:a45 :a45 :a45.
+:a46 :a46 :a46.
+:a47 :a47 :a47.
+:a48 :a48 :a48.
+:a49 :a49 :a49.
+:a50 :a50 :a50.
+:a51 :a51 :a51.
+:a52 :a52 :a52.
+:a53 :a53 :a53.
+:a54 :a54 :a54.
+:a55 :a55 :a55.
+:a56 :a56 :a56.
+:a57 :a57 :a57.
+:a58 :a58 :a58.
+:a59 :a59 :a59.
+:a60 :a60 :a60.
+:a61 :a61 :a61.
+:a62 :a62 :a62.
+:a63 :a63 :a63.
+:a64 :a64 :a64.
+:a65 :a65 :a65.
+:a66 :a66 :a66.
+:a67 :a67 :a67.
+:a68 :a68 :a68.
+:a69 :a69 :a69.
+:a70 :a70 :a70.
+:a71 :a71 :a71.
+:a72 :a72 :a72.
+:a73 :a73 :a73.
+:a74 :a74 :a74.
+:a75 :a75 :a75.
+:a76 :a76 :a76.
+:a77 :a77 :a77.
+:a78 :a78 :a78.
+:a79 :a79 :a79.
+:a80 :a80 :a80.
+:a81 :a81 :a81.
+:a82 :a82 :a82.
+:a83 :a83 :a83.
+:a84 :a84 :a84.
+:a85 :a85 :a85.
+:a86 :a86 :a86.
+:a87 :a87 :a87.
+:a88 :a88 :a88.
+:a89 :a89 :a89.
+:a90 :a90 :a90.
+:a91 :a91 :a91.
+:a92 :a92 :a92.
+:a93 :a93 :a93.
+:a94 :a94 :a94.
+:a95 :a95 :a95.
+:a96 :a96 :a96.
+:a97 :a97 :a97.
+:a98 :a98 :a98.
+:a99 :a99 :a99.
+:a100 :a100 :a100.
+:a101 :a101 :a101.
+:a102 :a102 :a102.
+:a103 :a103 :a103.
+:a104 :a104 :a104.
+:a105 :a105 :a105.
+:a106 :a106 :a106.
+:a107 :a107 :a107.
+:a108 :a108 :a108.
+:a109 :a109 :a109.
+:a110 :a110 :a110.
+:a111 :a111 :a111.
+:a112 :a112 :a112.
+:a113 :a113 :a113.
+:a114 :a114 :a114.
+:a115 :a115 :a115.
+:a116 :a116 :a116.
+:a117 :a117 :a117.
+:a118 :a118 :a118.
+:a119 :a119 :a119.
+:a120 :a120 :a120.
+:a121 :a121 :a121.
+:a122 :a122 :a122.
+:a123 :a123 :a123.
+:a124 :a124 :a124.
+:a125 :a125 :a125.
+:a126 :a126 :a126.
+:a127 :a127 :a127.
+:a128 :a128 :a128.
+:a129 :a129 :a129.
+:a130 :a130 :a130.
+:a131 :a131 :a131.
+:a132 :a132 :a132.
+:a133 :a133 :a133.
+:a134 :a134 :a134.
+:a135 :a135 :a135.
+:a136 :a136 :a136.
+:a137 :a137 :a137.
+:a138 :a138 :a138.
+:a139 :a139 :a139.
+:a140 :a140 :a140.
+:a141 :a141 :a141.
+:a142 :a142 :a142.
+:a143 :a143 :a143.
+:a144 :a144 :a144.
+:a145 :a145 :a145.
+:a146 :a146 :a146.
+:a147 :a147 :a147.
+:a148 :a148 :a148.
+:a149 :a149 :a149.
+:a150 :a150 :a150.
+:a151 :a151 :a151.
+:a152 :a152 :a152.
+:a153 :a153 :a153.
+:a154 :a154 :a154.
+:a155 :a155 :a155.
+:a156 :a156 :a156.
+:a157 :a157 :a157.
+:a158 :a158 :a158.
+:a159 :a159 :a159.
+:a160 :a160 :a160.
+:a161 :a161 :a161.
+:a162 :a162 :a162.
+:a163 :a163 :a163.
+:a164 :a164 :a164.
+:a165 :a165 :a165.
+:a166 :a166 :a166.
+:a167 :a167 :a167.
+:a168 :a168 :a168.
+:a169 :a169 :a169.
+:a170 :a170 :a170.
+:a171 :a171 :a171.
+:a172 :a172 :a172.
+:a173 :a173 :a173.
+:a174 :a174 :a174.
+:a175 :a175 :a175.
+:a176 :a176 :a176.
+:a177 :a177 :a177.
+:a178 :a178 :a178.
+:a179 :a179 :a179.
+:a180 :a180 :a180.
+:a181 :a181 :a181.
+:a182 :a182 :a182.
+:a183 :a183 :a183.
+:a184 :a184 :a184.
+:a185 :a185 :a185.
+:a186 :a186 :a186.
+:a187 :a187 :a187.
+:a188 :a188 :a188.
+:a189 :a189 :a189.
+:a190 :a190 :a190.
+:a191 :a191 :a191.
+:a192 :a192 :a192.
+:a193 :a193 :a193.
+:a194 :a194 :a194.
+:a195 :a195 :a195.
+:a196 :a196 :a196.
+:a197 :a197 :a197.
+:a198 :a198 :a198.
+:a199 :a199 :a199.
+:a200 :a200 :a200.
+:a201 :a201 :a201.
+:a202 :a202 :a202.
+:a203 :a203 :a203.
+:a204 :a204 :a204.
+:a205 :a205 :a205.
+:a206 :a206 :a206.
+:a207 :a207 :a207.
+:a208 :a208 :a208.
+:a209 :a209 :a209.
+:a210 :a210 :a210.
+:a211 :a211 :a211.
+:a212 :a212 :a212.
+:a213 :a213 :a213.
+:a214 :a214 :a214.
+:a215 :a215 :a215.
+:a216 :a216 :a216.
+:a217 :a217 :a217.
+:a218 :a218 :a218.
+:a219 :a219 :a219.
+:a220 :a220 :a220.
+:a221 :a221 :a221.
+:a222 :a222 :a222.
+:a223 :a223 :a223.
+:a224 :a224 :a224.
+:a225 :a225 :a225.
+:a226 :a226 :a226.
+:a227 :a227 :a227.
+:a228 :a228 :a228.
+:a229 :a229 :a229.
+:a230 :a230 :a230.
+:a231 :a231 :a231.
+:a232 :a232 :a232.
+:a233 :a233 :a233.
+:a234 :a234 :a234.
+:a235 :a235 :a235.
+:a236 :a236 :a236.
+:a237 :a237 :a237.
+:a238 :a238 :a238.
+:a239 :a239 :a239.
+:a240 :a240 :a240.
+:a241 :a241 :a241.
+:a242 :a242 :a242.
+:a243 :a243 :a243.
+:a244 :a244 :a244.
+:a245 :a245 :a245.
+:a246 :a246 :a246.
+:a247 :a247 :a247.
+:a248 :a248 :a248.
+:a249 :a249 :a249.
+:a250 :a250 :a250.
+:a251 :a251 :a251.
+:a252 :a252 :a252.
+:a253 :a253 :a253.
+:a254 :a254 :a254.
+:a255 :a255 :a255.
+:a256 :a256 :a256.
+:a257 :a257 :a257.
+:a258 :a258 :a258.
+:a259 :a259 :a259.
+:a260 :a260 :a260.
+:a261 :a261 :a261.
+:a262 :a262 :a262.
+:a263 :a263 :a263.
+:a264 :a264 :a264.
+:a265 :a265 :a265.
+:a266 :a266 :a266.
+:a267 :a267 :a267.
+:a268 :a268 :a268.
+:a269 :a269 :a269.
+:a270 :a270 :a270.
+:a271 :a271 :a271.
+:a272 :a272 :a272.
+:a273 :a273 :a273.
+:a274 :a274 :a274.
+:a275 :a275 :a275.
+:a276 :a276 :a276.
+:a277 :a277 :a277.
+:a278 :a278 :a278.
+:a279 :a279 :a279.
+:a280 :a280 :a280.
+:a281 :a281 :a281.
+:a282 :a282 :a282.
+:a283 :a283 :a283.
+:a284 :a284 :a284.
+:a285 :a285 :a285.
+:a286 :a286 :a286.
+:a287 :a287 :a287.
+:a288 :a288 :a288.
+:a289 :a289 :a289.
+:a290 :a290 :a290.
+:a291 :a291 :a291.
+:a292 :a292 :a292.
+:a293 :a293 :a293.
+:a294 :a294 :a294.
+:a295 :a295 :a295.
+:a296 :a296 :a296.
+:a297 :a297 :a297.
+:a298 :a298 :a298.
+:a299 :a299 :a299.
+:a300 :a300 :a300.
+:a301 :a301 :a301.
+:a302 :a302 :a302.
+:a303 :a303 :a303.
+:a304 :a304 :a304.
+:a305 :a305 :a305.
+:a306 :a306 :a306.
+:a307 :a307 :a307.
+:a308 :a308 :a308.
+:a309 :a309 :a309.
+:a310 :a310 :a310.
+:a311 :a311 :a311.
+:a312 :a312 :a312.
+:a313 :a313 :a313.
+:a314 :a314 :a314.
+:a315 :a315 :a315.
+:a316 :a316 :a316.
+:a317 :a317 :a317.
+:a318 :a318 :a318.
+:a319 :a319 :a319.
+:a320 :a320 :a320.
+:a321 :a321 :a321.
+:a322 :a322 :a322.
+:a323 :a323 :a323.
+:a324 :a324 :a324.
+:a325 :a325 :a325.
+:a326 :a326 :a326.
+:a327 :a327 :a327.
+:a328 :a328 :a328.
+:a329 :a329 :a329.
+:a330 :a330 :a330.
+:a331 :a331 :a331.
+:a332 :a332 :a332.
+:a333 :a333 :a333.
+:a334 :a334 :a334.
+:a335 :a335 :a335.
+:a336 :a336 :a336.
+:a337 :a337 :a337.
+:a338 :a338 :a338.
+:a339 :a339 :a339.
+:a340 :a340 :a340.
+:a341 :a341 :a341.
+:a342 :a342 :a342.
+:a343 :a343 :a343.
+:a344 :a344 :a344.
+:a345 :a345 :a345.
+:a346 :a346 :a346.
+:a347 :a347 :a347.
+:a348 :a348 :a348.
+:a349 :a349 :a349.
+:a350 :a350 :a350.
+:a351 :a351 :a351.
+:a352 :a352 :a352.
+:a353 :a353 :a353.
+:a354 :a354 :a354.
+:a355 :a355 :a355.
+:a356 :a356 :a356.
+:a357 :a357 :a357.
+:a358 :a358 :a358.
+:a359 :a359 :a359.
+:a360 :a360 :a360.
+:a361 :a361 :a361.
+:a362 :a362 :a362.
+:a363 :a363 :a363.
+:a364 :a364 :a364.
+:a365 :a365 :a365.
+:a366 :a366 :a366.
+:a367 :a367 :a367.
+:a368 :a368 :a368.
+:a369 :a369 :a369.
+:a370 :a370 :a370.
+:a371 :a371 :a371.
+:a372 :a372 :a372.
+:a373 :a373 :a373.
+:a374 :a374 :a374.
+:a375 :a375 :a375.
+:a376 :a376 :a376.
+:a377 :a377 :a377.
+:a378 :a378 :a378.
+:a379 :a379 :a379.
+:a380 :a380 :a380.
+:a381 :a381 :a381.
+:a382 :a382 :a382.
+:a383 :a383 :a383.
+:a384 :a384 :a384.
+:a385 :a385 :a385.
+:a386 :a386 :a386.
+:a387 :a387 :a387.
+:a388 :a388 :a388.
+:a389 :a389 :a389.
+:a390 :a390 :a390.
+:a391 :a391 :a391.
+:a392 :a392 :a392.
+:a393 :a393 :a393.
+:a394 :a394 :a394.
+:a395 :a395 :a395.
+:a396 :a396 :a396.
+:a397 :a397 :a397.
+:a398 :a398 :a398.
+:a399 :a399 :a399.
+:a400 :a400 :a400.
+:a401 :a401 :a401.
+:a402 :a402 :a402.
+:a403 :a403 :a403.
+:a404 :a404 :a404.
+:a405 :a405 :a405.
+:a406 :a406 :a406.
+:a407 :a407 :a407.
+:a408 :a408 :a408.
+:a409 :a409 :a409.
+:a410 :a410 :a410.
+:a411 :a411 :a411.
+:a412 :a412 :a412.
+:a413 :a413 :a413.
+:a414 :a414 :a414.
+:a415 :a415 :a415.
+:a416 :a416 :a416.
+:a417 :a417 :a417.
+:a418 :a418 :a418.
+:a419 :a419 :a419.
+:a420 :a420 :a420.
+:a421 :a421 :a421.
+:a422 :a422 :a422.
+:a423 :a423 :a423.
+:a424 :a424 :a424.
+:a425 :a425 :a425.
+:a426 :a426 :a426.
+:a427 :a427 :a427.
+:a428 :a428 :a428.
+:a429 :a429 :a429.
+:a430 :a430 :a430.
+:a431 :a431 :a431.
+:a432 :a432 :a432.
+:a433 :a433 :a433.
+:a434 :a434 :a434.
+:a435 :a435 :a435.
+:a436 :a436 :a436.
+:a437 :a437 :a437.
+:a438 :a438 :a438.
+:a439 :a439 :a439.
+:a440 :a440 :a440.
+:a441 :a441 :a441.
+:a442 :a442 :a442.
+:a443 :a443 :a443.
+:a444 :a444 :a444.
+:a445 :a445 :a445.
+:a446 :a446 :a446.
+:a447 :a447 :a447.
+:a448 :a448 :a448.
+:a449 :a449 :a449.
+:a450 :a450 :a450.
+:a451 :a451 :a451.
+:a452 :a452 :a452.
+:a453 :a453 :a453.
+:a454 :a454 :a454.
+:a455 :a455 :a455.
+:a456 :a456 :a456.
+:a457 :a457 :a457.
+:a458 :a458 :a458.
+:a459 :a459 :a459.
+:a460 :a460 :a460.
+:a461 :a461 :a461.
+:a462 :a462 :a462.
+:a463 :a463 :a463.
+:a464 :a464 :a464.
+:a465 :a465 :a465.
+:a466 :a466 :a466.
+:a467 :a467 :a467.
+:a468 :a468 :a468.
+:a469 :a469 :a469.
+:a470 :a470 :a470.
+:a471 :a471 :a471.
+:a472 :a472 :a472.
+:a473 :a473 :a473.
+:a474 :a474 :a474.
+:a475 :a475 :a475.
+:a476 :a476 :a476.
+:a477 :a477 :a477.
+:a478 :a478 :a478.
+:a479 :a479 :a479.
+:a480 :a480 :a480.
+:a481 :a481 :a481.
+:a482 :a482 :a482.
+:a483 :a483 :a483.
+:a484 :a484 :a484.
+:a485 :a485 :a485.
+:a486 :a486 :a486.
+:a487 :a487 :a487.
+:a488 :a488 :a488.
+:a489 :a489 :a489.
+:a490 :a490 :a490.
+:a491 :a491 :a491.
+:a492 :a492 :a492.
+:a493 :a493 :a493.
+:a494 :a494 :a494.
+:a495 :a495 :a495.
+:a496 :a496 :a496.
+:a497 :a497 :a497.
+:a498 :a498 :a498.
+:a499 :a499 :a499.
+:a500 :a500 :a500.
+:a501 :a501 :a501.
+:a502 :a502 :a502.
+:a503 :a503 :a503.
+:a504 :a504 :a504.
+:a505 :a505 :a505.
+:a506 :a506 :a506.
+:a507 :a507 :a507.
+:a508 :a508 :a508.
+:a509 :a509 :a509.
+:a510 :a510 :a510.
+:a511 :a511 :a511.
+:a512 :a512 :a512.
+:a513 :a513 :a513.
+:a514 :a514 :a514.
+:a515 :a515 :a515.
+:a516 :a516 :a516.
+:a517 :a517 :a517.
+:a518 :a518 :a518.
+:a519 :a519 :a519.
+:a520 :a520 :a520.
+:a521 :a521 :a521.
+:a522 :a522 :a522.
+:a523 :a523 :a523.
+:a524 :a524 :a524.
+:a525 :a525 :a525.
+:a526 :a526 :a526.
+:a527 :a527 :a527.
+:a528 :a528 :a528.
+:a529 :a529 :a529.
+:a530 :a530 :a530.
+:a531 :a531 :a531.
+:a532 :a532 :a532.
+:a533 :a533 :a533.
+:a534 :a534 :a534.
+:a535 :a535 :a535.
+:a536 :a536 :a536.
+:a537 :a537 :a537.
+:a538 :a538 :a538.
+:a539 :a539 :a539.
+:a540 :a540 :a540.
+:a541 :a541 :a541.
+:a542 :a542 :a542.
+:a543 :a543 :a543.
+:a544 :a544 :a544.
+:a545 :a545 :a545.
+:a546 :a546 :a546.
+:a547 :a547 :a547.
+:a548 :a548 :a548.
+:a549 :a549 :a549.
+:a550 :a550 :a550.
+:a551 :a551 :a551.
+:a552 :a552 :a552.
+:a553 :a553 :a553.
+:a554 :a554 :a554.
+:a555 :a555 :a555.
+:a556 :a556 :a556.
+:a557 :a557 :a557.
+:a558 :a558 :a558.
+:a559 :a559 :a559.
+:a560 :a560 :a560.
+:a561 :a561 :a561.
+:a562 :a562 :a562.
+:a563 :a563 :a563.
+:a564 :a564 :a564.
+:a565 :a565 :a565.
+:a566 :a566 :a566.
+:a567 :a567 :a567.
+:a568 :a568 :a568.
+:a569 :a569 :a569.
+:a570 :a570 :a570.
+:a571 :a571 :a571.
+:a572 :a572 :a572.
+:a573 :a573 :a573.
+:a574 :a574 :a574.
+:a575 :a575 :a575.
+:a576 :a576 :a576.
+:a577 :a577 :a577.
+:a578 :a578 :a578.
+:a579 :a579 :a579.
+:a580 :a580 :a580.
+:a581 :a581 :a581.
+:a582 :a582 :a582.
+:a583 :a583 :a583.
+:a584 :a584 :a584.
+:a585 :a585 :a585.
+:a586 :a586 :a586.
+:a587 :a587 :a587.
+:a588 :a588 :a588.
+:a589 :a589 :a589.
+:a590 :a590 :a590.
+:a591 :a591 :a591.
+:a592 :a592 :a592.
+:a593 :a593 :a593.
+:a594 :a594 :a594.
+:a595 :a595 :a595.
+:a596 :a596 :a596.
+:a597 :a597 :a597.
+:a598 :a598 :a598.
+:a599 :a599 :a599.
+:a600 :a600 :a600.
+:a601 :a601 :a601.
+:a602 :a602 :a602.
+:a603 :a603 :a603.
+:a604 :a604 :a604.
+:a605 :a605 :a605.
+:a606 :a606 :a606.
+:a607 :a607 :a607.
+:a608 :a608 :a608.
+:a609 :a609 :a609.
+:a610 :a610 :a610.
+:a611 :a611 :a611.
+:a612 :a612 :a612.
+:a613 :a613 :a613.
+:a614 :a614 :a614.
+:a615 :a615 :a615.
+:a616 :a616 :a616.
+:a617 :a617 :a617.
+:a618 :a618 :a618.
+:a619 :a619 :a619.
+:a620 :a620 :a620.
+:a621 :a621 :a621.
+:a622 :a622 :a622.
+:a623 :a623 :a623.
+:a624 :a624 :a624.
+:a625 :a625 :a625.
+:a626 :a626 :a626.
+:a627 :a627 :a627.
+:a628 :a628 :a628.
+:a629 :a629 :a629.
+:a630 :a630 :a630.
+:a631 :a631 :a631.
+:a632 :a632 :a632.
+:a633 :a633 :a633.
+:a634 :a634 :a634.
+:a635 :a635 :a635.
+:a636 :a636 :a636.
+:a637 :a637 :a637.
+:a638 :a638 :a638.
+:a639 :a639 :a639.
+:a640 :a640 :a640.
+:a641 :a641 :a641.
+:a642 :a642 :a642.
+:a643 :a643 :a643.
+:a644 :a644 :a644.
+:a645 :a645 :a645.
+:a646 :a646 :a646.
+:a647 :a647 :a647.
+:a648 :a648 :a648.
+:a649 :a649 :a649.
+:a650 :a650 :a650.
+:a651 :a651 :a651.
+:a652 :a652 :a652.
+:a653 :a653 :a653.
+:a654 :a654 :a654.
+:a655 :a655 :a655.
+:a656 :a656 :a656.
+:a657 :a657 :a657.
+:a658 :a658 :a658.
+:a659 :a659 :a659.
+:a660 :a660 :a660.
+:a661 :a661 :a661.
+:a662 :a662 :a662.
+:a663 :a663 :a663.
+:a664 :a664 :a664.
+:a665 :a665 :a665.
+:a666 :a666 :a666.
+:a667 :a667 :a667.
+:a668 :a668 :a668.
+:a669 :a669 :a669.
+:a670 :a670 :a670.
+:a671 :a671 :a671.
+:a672 :a672 :a672.
+:a673 :a673 :a673.
+:a674 :a674 :a674.
+:a675 :a675 :a675.
+:a676 :a676 :a676.
+:a677 :a677 :a677.
+:a678 :a678 :a678.
+:a679 :a679 :a679.
+:a680 :a680 :a680.
+:a681 :a681 :a681.
+:a682 :a682 :a682.
+:a683 :a683 :a683.
+:a684 :a684 :a684.
+:a685 :a685 :a685.
+:a686 :a686 :a686.
+:a687 :a687 :a687.
+:a688 :a688 :a688.
+:a689 :a689 :a689.
+:a690 :a690 :a690.
+:a691 :a691 :a691.
+:a692 :a692 :a692.
+:a693 :a693 :a693.
+:a694 :a694 :a694.
+:a695 :a695 :a695.
+:a696 :a696 :a696.
+:a697 :a697 :a697.
+:a698 :a698 :a698.
+:a699 :a699 :a699.
+:a700 :a700 :a700.
+:a701 :a701 :a701.
+:a702 :a702 :a702.
+:a703 :a703 :a703.
+:a704 :a704 :a704.
+:a705 :a705 :a705.
+:a706 :a706 :a706.
+:a707 :a707 :a707.
+:a708 :a708 :a708.
+:a709 :a709 :a709.
+:a710 :a710 :a710.
+:a711 :a711 :a711.
+:a712 :a712 :a712.
+:a713 :a713 :a713.
+:a714 :a714 :a714.
+:a715 :a715 :a715.
+:a716 :a716 :a716.
+:a717 :a717 :a717.
+:a718 :a718 :a718.
+:a719 :a719 :a719.
+:a720 :a720 :a720.
+:a721 :a721 :a721.
+:a722 :a722 :a722.
+:a723 :a723 :a723.
+:a724 :a724 :a724.
+:a725 :a725 :a725.
+:a726 :a726 :a726.
+:a727 :a727 :a727.
+:a728 :a728 :a728.
+:a729 :a729 :a729.
+:a730 :a730 :a730.
+:a731 :a731 :a731.
+:a732 :a732 :a732.
+:a733 :a733 :a733.
+:a734 :a734 :a734.
+:a735 :a735 :a735.
+:a736 :a736 :a736.
+:a737 :a737 :a737.
+:a738 :a738 :a738.
+:a739 :a739 :a739.
+:a740 :a740 :a740.
+:a741 :a741 :a741.
+:a742 :a742 :a742.
+:a743 :a743 :a743.
+:a744 :a744 :a744.
+:a745 :a745 :a745.
+:a746 :a746 :a746.
+:a747 :a747 :a747.
+:a748 :a748 :a748.
+:a749 :a749 :a749.
+:a750 :a750 :a750.
+:a751 :a751 :a751.
+:a752 :a752 :a752.
+:a753 :a753 :a753.
+:a754 :a754 :a754.
+:a755 :a755 :a755.
+:a756 :a756 :a756.
+:a757 :a757 :a757.
+:a758 :a758 :a758.
+:a759 :a759 :a759.
+:a760 :a760 :a760.
+:a761 :a761 :a761.
+:a762 :a762 :a762.
+:a763 :a763 :a763.
+:a764 :a764 :a764.
+:a765 :a765 :a765.
+:a766 :a766 :a766.
+:a767 :a767 :a767.
+:a768 :a768 :a768.
+:a769 :a769 :a769.
+:a770 :a770 :a770.
+:a771 :a771 :a771.
+:a772 :a772 :a772.
+:a773 :a773 :a773.
+:a774 :a774 :a774.
+:a775 :a775 :a775.
+:a776 :a776 :a776.
+:a777 :a777 :a777.
+:a778 :a778 :a778.
+:a779 :a779 :a779.
+:a780 :a780 :a780.
+:a781 :a781 :a781.
+:a782 :a782 :a782.
+:a783 :a783 :a783.
+:a784 :a784 :a784.
+:a785 :a785 :a785.
+:a786 :a786 :a786.
+:a787 :a787 :a787.
+:a788 :a788 :a788.
+:a789 :a789 :a789.
+:a790 :a790 :a790.
+:a791 :a791 :a791.
+:a792 :a792 :a792.
+:a793 :a793 :a793.
+:a794 :a794 :a794.
+:a795 :a795 :a795.
+:a796 :a796 :a796.
+:a797 :a797 :a797.
+:a798 :a798 :a798.
+:a799 :a799 :a799.
+:a800 :a800 :a800.
+:a801 :a801 :a801.
+:a802 :a802 :a802.
+:a803 :a803 :a803.
+:a804 :a804 :a804.
+:a805 :a805 :a805.
+:a806 :a806 :a806.
+:a807 :a807 :a807.
+:a808 :a808 :a808.
+:a809 :a809 :a809.
+:a810 :a810 :a810.
+:a811 :a811 :a811.
+:a812 :a812 :a812.
+:a813 :a813 :a813.
+:a814 :a814 :a814.
+:a815 :a815 :a815.
+:a816 :a816 :a816.
+:a817 :a817 :a817.
+:a818 :a818 :a818.
+:a819 :a819 :a819.
+:a820 :a820 :a820.
+:a821 :a821 :a821.
+:a822 :a822 :a822.
+:a823 :a823 :a823.
+:a824 :a824 :a824.
+:a825 :a825 :a825.
+:a826 :a826 :a826.
+:a827 :a827 :a827.
+:a828 :a828 :a828.
+:a829 :a829 :a829.
+:a830 :a830 :a830.
+:a831 :a831 :a831.
+:a832 :a832 :a832.
+:a833 :a833 :a833.
+:a834 :a834 :a834.
+:a835 :a835 :a835.
+:a836 :a836 :a836.
+:a837 :a837 :a837.
+:a838 :a838 :a838.
+:a839 :a839 :a839.
+:a840 :a840 :a840.
+:a841 :a841 :a841.
+:a842 :a842 :a842.
+:a843 :a843 :a843.
+:a844 :a844 :a844.
+:a845 :a845 :a845.
+:a846 :a846 :a846.
+:a847 :a847 :a847.
+:a848 :a848 :a848.
+:a849 :a849 :a849.
+:a850 :a850 :a850.
+:a851 :a851 :a851.
+:a852 :a852 :a852.
+:a853 :a853 :a853.
+:a854 :a854 :a854.
+:a855 :a855 :a855.
+:a856 :a856 :a856.
+:a857 :a857 :a857.
+:a858 :a858 :a858.
+:a859 :a859 :a859.
+:a860 :a860 :a860.
+:a861 :a861 :a861.
+:a862 :a862 :a862.
+:a863 :a863 :a863.
+:a864 :a864 :a864.
+:a865 :a865 :a865.
+:a866 :a866 :a866.
+:a867 :a867 :a867.
+:a868 :a868 :a868.
+:a869 :a869 :a869.
+:a870 :a870 :a870.
+:a871 :a871 :a871.
+:a872 :a872 :a872.
+:a873 :a873 :a873.
+:a874 :a874 :a874.
+:a875 :a875 :a875.
+:a876 :a876 :a876.
+:a877 :a877 :a877.
+:a878 :a878 :a878.
+:a879 :a879 :a879.
+:a880 :a880 :a880.
+:a881 :a881 :a881.
+:a882 :a882 :a882.
+:a883 :a883 :a883.
+:a884 :a884 :a884.
+:a885 :a885 :a885.
+:a886 :a886 :a886.
+:a887 :a887 :a887.
+:a888 :a888 :a888.
+:a889 :a889 :a889.
+:a890 :a890 :a890.
+:a891 :a891 :a891.
+:a892 :a892 :a892.
+:a893 :a893 :a893.
+:a894 :a894 :a894.
+:a895 :a895 :a895.
+:a896 :a896 :a896.
+:a897 :a897 :a897.
+:a898 :a898 :a898.
+:a899 :a899 :a899.
+:a900 :a900 :a900.
+:a901 :a901 :a901.
+:a902 :a902 :a902.
+:a903 :a903 :a903.
+:a904 :a904 :a904.
+:a905 :a905 :a905.
+:a906 :a906 :a906.
+:a907 :a907 :a907.
+:a908 :a908 :a908.
+:a909 :a909 :a909.
+:a910 :a910 :a910.
+:a911 :a911 :a911.
+:a912 :a912 :a912.
+:a913 :a913 :a913.
+:a914 :a914 :a914.
+:a915 :a915 :a915.
+:a916 :a916 :a916.
+:a917 :a917 :a917.
+:a918 :a918 :a918.
+:a919 :a919 :a919.
+:a920 :a920 :a920.
+:a921 :a921 :a921.
+:a922 :a922 :a922.
+:a923 :a923 :a923.
+:a924 :a924 :a924.
+:a925 :a925 :a925.
+:a926 :a926 :a926.
+:a927 :a927 :a927.
+:a928 :a928 :a928.
+:a929 :a929 :a929.
+:a930 :a930 :a930.
+:a931 :a931 :a931.
+:a932 :a932 :a932.
+:a933 :a933 :a933.
+:a934 :a934 :a934.
+:a935 :a935 :a935.
+:a936 :a936 :a936.
+:a937 :a937 :a937.
+:a938 :a938 :a938.
+:a939 :a939 :a939.
+:a940 :a940 :a940.
+:a941 :a941 :a941.
+:a942 :a942 :a942.
+:a943 :a943 :a943.
+:a944 :a944 :a944.
+:a945 :a945 :a945.
+:a946 :a946 :a946.
+:a947 :a947 :a947.
+:a948 :a948 :a948.
+:a949 :a949 :a949.
+:a950 :a950 :a950.
+:a951 :a951 :a951.
+:a952 :a952 :a952.
+:a953 :a953 :a953.
+:a954 :a954 :a954.
+:a955 :a955 :a955.
+:a956 :a956 :a956.
+:a957 :a957 :a957.
+:a958 :a958 :a958.
+:a959 :a959 :a959.
+:a960 :a960 :a960.
+:a961 :a961 :a961.
+:a962 :a962 :a962.
+:a963 :a963 :a963.
+:a964 :a964 :a964.
+:a965 :a965 :a965.
+:a966 :a966 :a966.
+:a967 :a967 :a967.
+:a968 :a968 :a968.
+:a969 :a969 :a969.
+:a970 :a970 :a970.
+:a971 :a971 :a971.
+:a972 :a972 :a972.
+:a973 :a973 :a973.
+:a974 :a974 :a974.
+:a975 :a975 :a975.
+:a976 :a976 :a976.
+:a977 :a977 :a977.
+:a978 :a978 :a978.
+:a979 :a979 :a979.
+:a980 :a980 :a980.
+:a981 :a981 :a981.
+:a982 :a982 :a982.
+:a983 :a983 :a983.
+:a984 :a984 :a984.
+:a985 :a985 :a985.
+:a986 :a986 :a986.
+:a987 :a987 :a987.
+:a988 :a988 :a988.
+:a989 :a989 :a989.
+:a990 :a990 :a990.
+:a991 :a991 :a991.
+:a992 :a992 :a992.
+:a993 :a993 :a993.
+:a994 :a994 :a994.
+:a995 :a995 :a995.
+:a996 :a996 :a996.
+:a997 :a997 :a997.
+:a998 :a998 :a998.
+:a999 :a999 :a999.
+:a1000 :a1000 :a1000.
+:a1001 :a1001 :a1001.
+:a1002 :a1002 :a1002.
+:a1003 :a1003 :a1003.
+:a1004 :a1004 :a1004.
+:a1005 :a1005 :a1005.
+:a1006 :a1006 :a1006.
+:a1007 :a1007 :a1007.
+:a1008 :a1008 :a1008.
+:a1009 :a1009 :a1009.
+:a1010 :a1010 :a1010.
+:a1011 :a1011 :a1011.
+:a1012 :a1012 :a1012.
+:a1013 :a1013 :a1013.
+:a1014 :a1014 :a1014.
+:a1015 :a1015 :a1015.
+:a1016 :a1016 :a1016.
+:a1017 :a1017 :a1017.
+:a1018 :a1018 :a1018.
+:a1019 :a1019 :a1019.
+:a1020 :a1020 :a1020.
+:a1021 :a1021 :a1021.
+:a1022 :a1022 :a1022.
+:a1023 :a1023 :a1023.
+:a1024 :a1024 :a1024.
+:a1025 :a1025 :a1025.
+:a1026 :a1026 :a1026.
+:a1027 :a1027 :a1027.
+:a1028 :a1028 :a1028.
+:a1029 :a1029 :a1029.
+:a1030 :a1030 :a1030.
+:a1031 :a1031 :a1031.
+:a1032 :a1032 :a1032.
+:a1033 :a1033 :a1033.
+:a1034 :a1034 :a1034.
+:a1035 :a1035 :a1035.
+:a1036 :a1036 :a1036.
+:a1037 :a1037 :a1037.
+:a1038 :a1038 :a1038.
+:a1039 :a1039 :a1039.
+:a1040 :a1040 :a1040.
+:a1041 :a1041 :a1041.
+:a1042 :a1042 :a1042.
+:a1043 :a1043 :a1043.
+:a1044 :a1044 :a1044.
+:a1045 :a1045 :a1045.
+:a1046 :a1046 :a1046.
+:a1047 :a1047 :a1047.
+:a1048 :a1048 :a1048.
+:a1049 :a1049 :a1049.
+:a1050 :a1050 :a1050.
+:a1051 :a1051 :a1051.
+:a1052 :a1052 :a1052.
+:a1053 :a1053 :a1053.
+:a1054 :a1054 :a1054.
+:a1055 :a1055 :a1055.
+:a1056 :a1056 :a1056.
+:a1057 :a1057 :a1057.
+:a1058 :a1058 :a1058.
+:a1059 :a1059 :a1059.
+:a1060 :a1060 :a1060.
+:a1061 :a1061 :a1061.
+:a1062 :a1062 :a1062.
+:a1063 :a1063 :a1063.
+:a1064 :a1064 :a1064.
+:a1065 :a1065 :a1065.
+:a1066 :a1066 :a1066.
+:a1067 :a1067 :a1067.
+:a1068 :a1068 :a1068.
+:a1069 :a1069 :a1069.
+:a1070 :a1070 :a1070.
+:a1071 :a1071 :a1071.
+:a1072 :a1072 :a1072.
+:a1073 :a1073 :a1073.
+:a1074 :a1074 :a1074.
+:a1075 :a1075 :a1075.
+:a1076 :a1076 :a1076.
+:a1077 :a1077 :a1077.
+:a1078 :a1078 :a1078.
+:a1079 :a1079 :a1079.
+:a1080 :a1080 :a1080.
+:a1081 :a1081 :a1081.
+:a1082 :a1082 :a1082.
+:a1083 :a1083 :a1083.
+:a1084 :a1084 :a1084.
+:a1085 :a1085 :a1085.
+:a1086 :a1086 :a1086.
+:a1087 :a1087 :a1087.
+:a1088 :a1088 :a1088.
+:a1089 :a1089 :a1089.
+:a1090 :a1090 :a1090.
+:a1091 :a1091 :a1091.
+:a1092 :a1092 :a1092.
+:a1093 :a1093 :a1093.
+:a1094 :a1094 :a1094.
+:a1095 :a1095 :a1095.
+:a1096 :a1096 :a1096.
+:a1097 :a1097 :a1097.
+:a1098 :a1098 :a1098.
+:a1099 :a1099 :a1099.
+:a1100 :a1100 :a1100.
+:a1101 :a1101 :a1101.
+:a1102 :a1102 :a1102.
+:a1103 :a1103 :a1103.
+:a1104 :a1104 :a1104.
+:a1105 :a1105 :a1105.
+:a1106 :a1106 :a1106.
+:a1107 :a1107 :a1107.
+:a1108 :a1108 :a1108.
+:a1109 :a1109 :a1109.
+:a1110 :a1110 :a1110.
+:a1111 :a1111 :a1111.
+:a1112 :a1112 :a1112.
+:a1113 :a1113 :a1113.
+:a1114 :a1114 :a1114.
+:a1115 :a1115 :a1115.
+:a1116 :a1116 :a1116.
+:a1117 :a1117 :a1117.
+:a1118 :a1118 :a1118.
+:a1119 :a1119 :a1119.
+:a1120 :a1120 :a1120.
+:a1121 :a1121 :a1121.
+:a1122 :a1122 :a1122.
+:a1123 :a1123 :a1123.
+:a1124 :a1124 :a1124.
+:a1125 :a1125 :a1125.
+:a1126 :a1126 :a1126.
+:a1127 :a1127 :a1127.
+:a1128 :a1128 :a1128.
+:a1129 :a1129 :a1129.
+:a1130 :a1130 :a1130.
+:a1131 :a1131 :a1131.
+:a1132 :a1132 :a1132.
+:a1133 :a1133 :a1133.
+:a1134 :a1134 :a1134.
+:a1135 :a1135 :a1135.
+:a1136 :a1136 :a1136.
+:a1137 :a1137 :a1137.
+:a1138 :a1138 :a1138.
+:a1139 :a1139 :a1139.
+:a1140 :a1140 :a1140.
+:a1141 :a1141 :a1141.
+:a1142 :a1142 :a1142.
+:a1143 :a1143 :a1143.
+:a1144 :a1144 :a1144.
+:a1145 :a1145 :a1145.
+:a1146 :a1146 :a1146.
+:a1147 :a1147 :a1147.
+:a1148 :a1148 :a1148.
+:a1149 :a1149 :a1149.
+:a1150 :a1150 :a1150.
+:a1151 :a1151 :a1151.
+:a1152 :a1152 :a1152.
+:a1153 :a1153 :a1153.
+:a1154 :a1154 :a1154.
+:a1155 :a1155 :a1155.
+:a1156 :a1156 :a1156.
+:a1157 :a1157 :a1157.
+:a1158 :a1158 :a1158.
+:a1159 :a1159 :a1159.
+:a1160 :a1160 :a1160.
+:a1161 :a1161 :a1161.
+:a1162 :a1162 :a1162.
+:a1163 :a1163 :a1163.
+:a1164 :a1164 :a1164.
+:a1165 :a1165 :a1165.
+:a1166 :a1166 :a1166.
+:a1167 :a1167 :a1167.
+:a1168 :a1168 :a1168.
+:a1169 :a1169 :a1169.
+:a1170 :a1170 :a1170.
+:a1171 :a1171 :a1171.
+:a1172 :a1172 :a1172.
+:a1173 :a1173 :a1173.
+:a1174 :a1174 :a1174.
+:a1175 :a1175 :a1175.
+:a1176 :a1176 :a1176.
+:a1177 :a1177 :a1177.
+:a1178 :a1178 :a1178.
+:a1179 :a1179 :a1179.
+:a1180 :a1180 :a1180.
+:a1181 :a1181 :a1181.
+:a1182 :a1182 :a1182.
+:a1183 :a1183 :a1183.
+:a1184 :a1184 :a1184.
+:a1185 :a1185 :a1185.
+:a1186 :a1186 :a1186.
+:a1187 :a1187 :a1187.
+:a1188 :a1188 :a1188.
+:a1189 :a1189 :a1189.
+:a1190 :a1190 :a1190.
+:a1191 :a1191 :a1191.
+:a1192 :a1192 :a1192.
+:a1193 :a1193 :a1193.
+:a1194 :a1194 :a1194.
+:a1195 :a1195 :a1195.
+:a1196 :a1196 :a1196.
+:a1197 :a1197 :a1197.
+:a1198 :a1198 :a1198.
+:a1199 :a1199 :a1199.
+:a1200 :a1200 :a1200.
+:a1201 :a1201 :a1201.
+:a1202 :a1202 :a1202.
+:a1203 :a1203 :a1203.
+:a1204 :a1204 :a1204.
+:a1205 :a1205 :a1205.
+:a1206 :a1206 :a1206.
+:a1207 :a1207 :a1207.
+:a1208 :a1208 :a1208.
+:a1209 :a1209 :a1209.
+:a1210 :a1210 :a1210.
+:a1211 :a1211 :a1211.
+:a1212 :a1212 :a1212.
+:a1213 :a1213 :a1213.
+:a1214 :a1214 :a1214.
+:a1215 :a1215 :a1215.
+:a1216 :a1216 :a1216.
+:a1217 :a1217 :a1217.
+:a1218 :a1218 :a1218.
+:a1219 :a1219 :a1219.
+:a1220 :a1220 :a1220.
+:a1221 :a1221 :a1221.
+:a1222 :a1222 :a1222.
+:a1223 :a1223 :a1223.
+:a1224 :a1224 :a1224.
+:a1225 :a1225 :a1225.
+:a1226 :a1226 :a1226.
+:a1227 :a1227 :a1227.
+:a1228 :a1228 :a1228.
+:a1229 :a1229 :a1229.
+:a1230 :a1230 :a1230.
+:a1231 :a1231 :a1231.
+:a1232 :a1232 :a1232.
+:a1233 :a1233 :a1233.
+:a1234 :a1234 :a1234.
+:a1235 :a1235 :a1235.
+:a1236 :a1236 :a1236.
+:a1237 :a1237 :a1237.
+:a1238 :a1238 :a1238.
+:a1239 :a1239 :a1239.
+:a1240 :a1240 :a1240.
+:a1241 :a1241 :a1241.
+:a1242 :a1242 :a1242.
+:a1243 :a1243 :a1243.
+:a1244 :a1244 :a1244.
+:a1245 :a1245 :a1245.
+:a1246 :a1246 :a1246.
+:a1247 :a1247 :a1247.
+:a1248 :a1248 :a1248.
+:a1249 :a1249 :a1249.
+:a1250 :a1250 :a1250.
+:a1251 :a1251 :a1251.
+:a1252 :a1252 :a1252.
+:a1253 :a1253 :a1253.
+:a1254 :a1254 :a1254.
+:a1255 :a1255 :a1255.
+:a1256 :a1256 :a1256.
+:a1257 :a1257 :a1257.
+:a1258 :a1258 :a1258.
+:a1259 :a1259 :a1259.
+:a1260 :a1260 :a1260.
+:a1261 :a1261 :a1261.
+:a1262 :a1262 :a1262.
+:a1263 :a1263 :a1263.
+:a1264 :a1264 :a1264.
+:a1265 :a1265 :a1265.
+:a1266 :a1266 :a1266.
+:a1267 :a1267 :a1267.
+:a1268 :a1268 :a1268.
+:a1269 :a1269 :a1269.
+:a1270 :a1270 :a1270.
+:a1271 :a1271 :a1271.
+:a1272 :a1272 :a1272.
+:a1273 :a1273 :a1273.
+:a1274 :a1274 :a1274.
+:a1275 :a1275 :a1275.
+:a1276 :a1276 :a1276.
+:a1277 :a1277 :a1277.
+:a1278 :a1278 :a1278.
+:a1279 :a1279 :a1279.
+:a1280 :a1280 :a1280.
+:a1281 :a1281 :a1281.
+:a1282 :a1282 :a1282.
+:a1283 :a1283 :a1283.
+:a1284 :a1284 :a1284.
+:a1285 :a1285 :a1285.
+:a1286 :a1286 :a1286.
+:a1287 :a1287 :a1287.
+:a1288 :a1288 :a1288.
+:a1289 :a1289 :a1289.
+:a1290 :a1290 :a1290.
+:a1291 :a1291 :a1291.
+:a1292 :a1292 :a1292.
+:a1293 :a1293 :a1293.
+:a1294 :a1294 :a1294.
+:a1295 :a1295 :a1295.
+:a1296 :a1296 :a1296.
+:a1297 :a1297 :a1297.
+:a1298 :a1298 :a1298.
+:a1299 :a1299 :a1299.
+:a1300 :a1300 :a1300.
+:a1301 :a1301 :a1301.
+:a1302 :a1302 :a1302.
+:a1303 :a1303 :a1303.
+:a1304 :a1304 :a1304.
+:a1305 :a1305 :a1305.
+:a1306 :a1306 :a1306.
+:a1307 :a1307 :a1307.
+:a1308 :a1308 :a1308.
+:a1309 :a1309 :a1309.
+:a1310 :a1310 :a1310.
+:a1311 :a1311 :a1311.
+:a1312 :a1312 :a1312.
+:a1313 :a1313 :a1313.
+:a1314 :a1314 :a1314.
+:a1315 :a1315 :a1315.
+:a1316 :a1316 :a1316.
+:a1317 :a1317 :a1317.
+:a1318 :a1318 :a1318.
+:a1319 :a1319 :a1319.
+:a1320 :a1320 :a1320.
+:a1321 :a1321 :a1321.
+:a1322 :a1322 :a1322.
+:a1323 :a1323 :a1323.
+:a1324 :a1324 :a1324.
+:a1325 :a1325 :a1325.
+:a1326 :a1326 :a1326.
+:a1327 :a1327 :a1327.
+:a1328 :a1328 :a1328.
+:a1329 :a1329 :a1329.
+:a1330 :a1330 :a1330.
+:a1331 :a1331 :a1331.
+:a1332 :a1332 :a1332.
+:a1333 :a1333 :a1333.
+:a1334 :a1334 :a1334.
+:a1335 :a1335 :a1335.
+:a1336 :a1336 :a1336.
+:a1337 :a1337 :a1337.
+:a1338 :a1338 :a1338.
+:a1339 :a1339 :a1339.
+:a1340 :a1340 :a1340.
+:a1341 :a1341 :a1341.
+:a1342 :a1342 :a1342.
+:a1343 :a1343 :a1343.
+:a1344 :a1344 :a1344.
+:a1345 :a1345 :a1345.
+:a1346 :a1346 :a1346.
+:a1347 :a1347 :a1347.
+:a1348 :a1348 :a1348.
+:a1349 :a1349 :a1349.
+:a1350 :a1350 :a1350.
+:a1351 :a1351 :a1351.
+:a1352 :a1352 :a1352.
+:a1353 :a1353 :a1353.
+:a1354 :a1354 :a1354.
+:a1355 :a1355 :a1355.
+:a1356 :a1356 :a1356.
+:a1357 :a1357 :a1357.
+:a1358 :a1358 :a1358.
+:a1359 :a1359 :a1359.
+:a1360 :a1360 :a1360.
+:a1361 :a1361 :a1361.
+:a1362 :a1362 :a1362.
+:a1363 :a1363 :a1363.
+:a1364 :a1364 :a1364.
+:a1365 :a1365 :a1365.
+:a1366 :a1366 :a1366.
+:a1367 :a1367 :a1367.
+:a1368 :a1368 :a1368.
+:a1369 :a1369 :a1369.
+:a1370 :a1370 :a1370.
+:a1371 :a1371 :a1371.
+:a1372 :a1372 :a1372.
+:a1373 :a1373 :a1373.
+:a1374 :a1374 :a1374.
+:a1375 :a1375 :a1375.
+:a1376 :a1376 :a1376.
+:a1377 :a1377 :a1377.
+:a1378 :a1378 :a1378.
+:a1379 :a1379 :a1379.
+:a1380 :a1380 :a1380.
+:a1381 :a1381 :a1381.
+:a1382 :a1382 :a1382.
+:a1383 :a1383 :a1383.
+:a1384 :a1384 :a1384.
+:a1385 :a1385 :a1385.
+:a1386 :a1386 :a1386.
+:a1387 :a1387 :a1387.
+:a1388 :a1388 :a1388.
+:a1389 :a1389 :a1389.
+:a1390 :a1390 :a1390.
+:a1391 :a1391 :a1391.
+:a1392 :a1392 :a1392.
+:a1393 :a1393 :a1393.
+:a1394 :a1394 :a1394.
+:a1395 :a1395 :a1395.
+:a1396 :a1396 :a1396.
+:a1397 :a1397 :a1397.
+:a1398 :a1398 :a1398.
+:a1399 :a1399 :a1399.
+:a1400 :a1400 :a1400.
+:a1401 :a1401 :a1401.
+:a1402 :a1402 :a1402.
+:a1403 :a1403 :a1403.
+:a1404 :a1404 :a1404.
+:a1405 :a1405 :a1405.
+:a1406 :a1406 :a1406.
+:a1407 :a1407 :a1407.
+:a1408 :a1408 :a1408.
+:a1409 :a1409 :a1409.
+:a1410 :a1410 :a1410.
+:a1411 :a1411 :a1411.
+:a1412 :a1412 :a1412.
+:a1413 :a1413 :a1413.
+:a1414 :a1414 :a1414.
+:a1415 :a1415 :a1415.
+:a1416 :a1416 :a1416.
+:a1417 :a1417 :a1417.
+:a1418 :a1418 :a1418.
+:a1419 :a1419 :a1419.
+:a1420 :a1420 :a1420.
+:a1421 :a1421 :a1421.
+:a1422 :a1422 :a1422.
+:a1423 :a1423 :a1423.
+:a1424 :a1424 :a1424.
+:a1425 :a1425 :a1425.
+:a1426 :a1426 :a1426.
+:a1427 :a1427 :a1427.
+:a1428 :a1428 :a1428.
+:a1429 :a1429 :a1429.
+:a1430 :a1430 :a1430.
+:a1431 :a1431 :a1431.
+:a1432 :a1432 :a1432.
+:a1433 :a1433 :a1433.
+:a1434 :a1434 :a1434.
+:a1435 :a1435 :a1435.
+:a1436 :a1436 :a1436.
+:a1437 :a1437 :a1437.
+:a1438 :a1438 :a1438.
+:a1439 :a1439 :a1439.
+:a1440 :a1440 :a1440.
+:a1441 :a1441 :a1441.
+:a1442 :a1442 :a1442.
+:a1443 :a1443 :a1443.
+:a1444 :a1444 :a1444.
+:a1445 :a1445 :a1445.
+:a1446 :a1446 :a1446.
+:a1447 :a1447 :a1447.
+:a1448 :a1448 :a1448.
+:a1449 :a1449 :a1449.
+:a1450 :a1450 :a1450.
+:a1451 :a1451 :a1451.
+:a1452 :a1452 :a1452.
+:a1453 :a1453 :a1453.
+:a1454 :a1454 :a1454.
+:a1455 :a1455 :a1455.
+:a1456 :a1456 :a1456.
+:a1457 :a1457 :a1457.
+:a1458 :a1458 :a1458.
+:a1459 :a1459 :a1459.
+:a1460 :a1460 :a1460.
+:a1461 :a1461 :a1461.
+:a1462 :a1462 :a1462.
+:a1463 :a1463 :a1463.
+:a1464 :a1464 :a1464.
+:a1465 :a1465 :a1465.
+:a1466 :a1466 :a1466.
+:a1467 :a1467 :a1467.
+:a1468 :a1468 :a1468.
+:a1469 :a1469 :a1469.
+:a1470 :a1470 :a1470.
+:a1471 :a1471 :a1471.
+:a1472 :a1472 :a1472.
+:a1473 :a1473 :a1473.
+:a1474 :a1474 :a1474.
+:a1475 :a1475 :a1475.
+:a1476 :a1476 :a1476.
+:a1477 :a1477 :a1477.
+:a1478 :a1478 :a1478.
+:a1479 :a1479 :a1479.
+:a1480 :a1480 :a1480.
+:a1481 :a1481 :a1481.
+:a1482 :a1482 :a1482.
+:a1483 :a1483 :a1483.
+:a1484 :a1484 :a1484.
+:a1485 :a1485 :a1485.
+:a1486 :a1486 :a1486.
+:a1487 :a1487 :a1487.
+:a1488 :a1488 :a1488.
+:a1489 :a1489 :a1489.
+:a1490 :a1490 :a1490.
+:a1491 :a1491 :a1491.
+:a1492 :a1492 :a1492.
+:a1493 :a1493 :a1493.
+:a1494 :a1494 :a1494.
+:a1495 :a1495 :a1495.
+:a1496 :a1496 :a1496.
+:a1497 :a1497 :a1497.
+:a1498 :a1498 :a1498.
+:a1499 :a1499 :a1499.
+:a1500 :a1500 :a1500.
+:a1501 :a1501 :a1501.
+:a1502 :a1502 :a1502.
+:a1503 :a1503 :a1503.
+:a1504 :a1504 :a1504.
+:a1505 :a1505 :a1505.
+:a1506 :a1506 :a1506.
+:a1507 :a1507 :a1507.
+:a1508 :a1508 :a1508.
+:a1509 :a1509 :a1509.
+:a1510 :a1510 :a1510.
+:a1511 :a1511 :a1511.
+:a1512 :a1512 :a1512.
+:a1513 :a1513 :a1513.
+:a1514 :a1514 :a1514.
+:a1515 :a1515 :a1515.
+:a1516 :a1516 :a1516.
+:a1517 :a1517 :a1517.
+:a1518 :a1518 :a1518.
+:a1519 :a1519 :a1519.
+:a1520 :a1520 :a1520.
+:a1521 :a1521 :a1521.
+:a1522 :a1522 :a1522.
+:a1523 :a1523 :a1523.
+:a1524 :a1524 :a1524.
+:a1525 :a1525 :a1525.
+:a1526 :a1526 :a1526.
+:a1527 :a1527 :a1527.
+:a1528 :a1528 :a1528.
+:a1529 :a1529 :a1529.
+:a1530 :a1530 :a1530.
+:a1531 :a1531 :a1531.
+:a1532 :a1532 :a1532.
+:a1533 :a1533 :a1533.
+:a1534 :a1534 :a1534.
+:a1535 :a1535 :a1535.
+:a1536 :a1536 :a1536.
+:a1537 :a1537 :a1537.
+:a1538 :a1538 :a1538.
+:a1539 :a1539 :a1539.
+:a1540 :a1540 :a1540.
+:a1541 :a1541 :a1541.
+:a1542 :a1542 :a1542.
+:a1543 :a1543 :a1543.
+:a1544 :a1544 :a1544.
+:a1545 :a1545 :a1545.
+:a1546 :a1546 :a1546.
+:a1547 :a1547 :a1547.
+:a1548 :a1548 :a1548.
+:a1549 :a1549 :a1549.
+:a1550 :a1550 :a1550.
+:a1551 :a1551 :a1551.
+:a1552 :a1552 :a1552.
+:a1553 :a1553 :a1553.
+:a1554 :a1554 :a1554.
+:a1555 :a1555 :a1555.
+:a1556 :a1556 :a1556.
+:a1557 :a1557 :a1557.
+:a1558 :a1558 :a1558.
+:a1559 :a1559 :a1559.
+:a1560 :a1560 :a1560.
+:a1561 :a1561 :a1561.
+:a1562 :a1562 :a1562.
+:a1563 :a1563 :a1563.
+:a1564 :a1564 :a1564.
+:a1565 :a1565 :a1565.
+:a1566 :a1566 :a1566.
+:a1567 :a1567 :a1567.
+:a1568 :a1568 :a1568.
+:a1569 :a1569 :a1569.
+:a1570 :a1570 :a1570.
+:a1571 :a1571 :a1571.
+:a1572 :a1572 :a1572.
+:a1573 :a1573 :a1573.
+:a1574 :a1574 :a1574.
+:a1575 :a1575 :a1575.
+:a1576 :a1576 :a1576.
+:a1577 :a1577 :a1577.
+:a1578 :a1578 :a1578.
+:a1579 :a1579 :a1579.
+:a1580 :a1580 :a1580.
+:a1581 :a1581 :a1581.
+:a1582 :a1582 :a1582.
+:a1583 :a1583 :a1583.
+:a1584 :a1584 :a1584.
+:a1585 :a1585 :a1585.
+:a1586 :a1586 :a1586.
+:a1587 :a1587 :a1587.
+:a1588 :a1588 :a1588.
+:a1589 :a1589 :a1589.
+:a1590 :a1590 :a1590.
+:a1591 :a1591 :a1591.
+:a1592 :a1592 :a1592.
+:a1593 :a1593 :a1593.
+:a1594 :a1594 :a1594.
+:a1595 :a1595 :a1595.
+:a1596 :a1596 :a1596.
+:a1597 :a1597 :a1597.
+:a1598 :a1598 :a1598.
+:a1599 :a1599 :a1599.
+:a1600 :a1600 :a1600.
+:a1601 :a1601 :a1601.
+:a1602 :a1602 :a1602.
+:a1603 :a1603 :a1603.
+:a1604 :a1604 :a1604.
+:a1605 :a1605 :a1605.
+:a1606 :a1606 :a1606.
+:a1607 :a1607 :a1607.
+:a1608 :a1608 :a1608.
+:a1609 :a1609 :a1609.
+:a1610 :a1610 :a1610.
+:a1611 :a1611 :a1611.
+:a1612 :a1612 :a1612.
+:a1613 :a1613 :a1613.
+:a1614 :a1614 :a1614.
+:a1615 :a1615 :a1615.
+:a1616 :a1616 :a1616.
+:a1617 :a1617 :a1617.
+:a1618 :a1618 :a1618.
+:a1619 :a1619 :a1619.
+:a1620 :a1620 :a1620.
+:a1621 :a1621 :a1621.
+:a1622 :a1622 :a1622.
+:a1623 :a1623 :a1623.
+:a1624 :a1624 :a1624.
+:a1625 :a1625 :a1625.
+:a1626 :a1626 :a1626.
+:a1627 :a1627 :a1627.
+:a1628 :a1628 :a1628.
+:a1629 :a1629 :a1629.
+:a1630 :a1630 :a1630.
+:a1631 :a1631 :a1631.
+:a1632 :a1632 :a1632.
+:a1633 :a1633 :a1633.
+:a1634 :a1634 :a1634.
+:a1635 :a1635 :a1635.
+:a1636 :a1636 :a1636.
+:a1637 :a1637 :a1637.
+:a1638 :a1638 :a1638.
+:a1639 :a1639 :a1639.
+:a1640 :a1640 :a1640.
+:a1641 :a1641 :a1641.
+:a1642 :a1642 :a1642.
+:a1643 :a1643 :a1643.
+:a1644 :a1644 :a1644.
+:a1645 :a1645 :a1645.
+:a1646 :a1646 :a1646.
+:a1647 :a1647 :a1647.
+:a1648 :a1648 :a1648.
+:a1649 :a1649 :a1649.
+:a1650 :a1650 :a1650.
+:a1651 :a1651 :a1651.
+:a1652 :a1652 :a1652.
+:a1653 :a1653 :a1653.
+:a1654 :a1654 :a1654.
+:a1655 :a1655 :a1655.
+:a1656 :a1656 :a1656.
+:a1657 :a1657 :a1657.
+:a1658 :a1658 :a1658.
+:a1659 :a1659 :a1659.
+:a1660 :a1660 :a1660.
+:a1661 :a1661 :a1661.
+:a1662 :a1662 :a1662.
+:a1663 :a1663 :a1663.
+:a1664 :a1664 :a1664.
+:a1665 :a1665 :a1665.
+:a1666 :a1666 :a1666.
+:a1667 :a1667 :a1667.
+:a1668 :a1668 :a1668.
+:a1669 :a1669 :a1669.
+:a1670 :a1670 :a1670.
+:a1671 :a1671 :a1671.
+:a1672 :a1672 :a1672.
+:a1673 :a1673 :a1673.
+:a1674 :a1674 :a1674.
+:a1675 :a1675 :a1675.
+:a1676 :a1676 :a1676.
+:a1677 :a1677 :a1677.
+:a1678 :a1678 :a1678.
+:a1679 :a1679 :a1679.
+:a1680 :a1680 :a1680.
+:a1681 :a1681 :a1681.
+:a1682 :a1682 :a1682.
+:a1683 :a1683 :a1683.
+:a1684 :a1684 :a1684.
+:a1685 :a1685 :a1685.
+:a1686 :a1686 :a1686.
+:a1687 :a1687 :a1687.
+:a1688 :a1688 :a1688.
+:a1689 :a1689 :a1689.
+:a1690 :a1690 :a1690.
+:a1691 :a1691 :a1691.
+:a1692 :a1692 :a1692.
+:a1693 :a1693 :a1693.
+:a1694 :a1694 :a1694.
+:a1695 :a1695 :a1695.
+:a1696 :a1696 :a1696.
+:a1697 :a1697 :a1697.
+:a1698 :a1698 :a1698.
+:a1699 :a1699 :a1699.
+:a1700 :a1700 :a1700.
+:a1701 :a1701 :a1701.
+:a1702 :a1702 :a1702.
+:a1703 :a1703 :a1703.
+:a1704 :a1704 :a1704.
+:a1705 :a1705 :a1705.
+:a1706 :a1706 :a1706.
+:a1707 :a1707 :a1707.
+:a1708 :a1708 :a1708.
+:a1709 :a1709 :a1709.
+:a1710 :a1710 :a1710.
+:a1711 :a1711 :a1711.
+:a1712 :a1712 :a1712.
+:a1713 :a1713 :a1713.
+:a1714 :a1714 :a1714.
+:a1715 :a1715 :a1715.
+:a1716 :a1716 :a1716.
+:a1717 :a1717 :a1717.
+:a1718 :a1718 :a1718.
+:a1719 :a1719 :a1719.
+:a1720 :a1720 :a1720.
+:a1721 :a1721 :a1721.
+:a1722 :a1722 :a1722.
+:a1723 :a1723 :a1723.
+:a1724 :a1724 :a1724.
+:a1725 :a1725 :a1725.
+:a1726 :a1726 :a1726.
+:a1727 :a1727 :a1727.
+:a1728 :a1728 :a1728.
+:a1729 :a1729 :a1729.
+:a1730 :a1730 :a1730.
+:a1731 :a1731 :a1731.
+:a1732 :a1732 :a1732.
+:a1733 :a1733 :a1733.
+:a1734 :a1734 :a1734.
+:a1735 :a1735 :a1735.
+:a1736 :a1736 :a1736.
+:a1737 :a1737 :a1737.
+:a1738 :a1738 :a1738.
+:a1739 :a1739 :a1739.
+:a1740 :a1740 :a1740.
+:a1741 :a1741 :a1741.
+:a1742 :a1742 :a1742.
+:a1743 :a1743 :a1743.
+:a1744 :a1744 :a1744.
+:a1745 :a1745 :a1745.
+:a1746 :a1746 :a1746.
+:a1747 :a1747 :a1747.
+:a1748 :a1748 :a1748.
+:a1749 :a1749 :a1749.
+:a1750 :a1750 :a1750.
+:a1751 :a1751 :a1751.
+:a1752 :a1752 :a1752.
+:a1753 :a1753 :a1753.
+:a1754 :a1754 :a1754.
+:a1755 :a1755 :a1755.
+:a1756 :a1756 :a1756.
+:a1757 :a1757 :a1757.
+:a1758 :a1758 :a1758.
+:a1759 :a1759 :a1759.
+:a1760 :a1760 :a1760.
+:a1761 :a1761 :a1761.
+:a1762 :a1762 :a1762.
+:a1763 :a1763 :a1763.
+:a1764 :a1764 :a1764.
+:a1765 :a1765 :a1765.
+:a1766 :a1766 :a1766.
+:a1767 :a1767 :a1767.
+:a1768 :a1768 :a1768.
+:a1769 :a1769 :a1769.
+:a1770 :a1770 :a1770.
+:a1771 :a1771 :a1771.
+:a1772 :a1772 :a1772.
+:a1773 :a1773 :a1773.
+:a1774 :a1774 :a1774.
+:a1775 :a1775 :a1775.
+:a1776 :a1776 :a1776.
+:a1777 :a1777 :a1777.
+:a1778 :a1778 :a1778.
+:a1779 :a1779 :a1779.
+:a1780 :a1780 :a1780.
+:a1781 :a1781 :a1781.
+:a1782 :a1782 :a1782.
+:a1783 :a1783 :a1783.
+:a1784 :a1784 :a1784.
+:a1785 :a1785 :a1785.
+:a1786 :a1786 :a1786.
+:a1787 :a1787 :a1787.
+:a1788 :a1788 :a1788.
+:a1789 :a1789 :a1789.
+:a1790 :a1790 :a1790.
+:a1791 :a1791 :a1791.
+:a1792 :a1792 :a1792.
+:a1793 :a1793 :a1793.
+:a1794 :a1794 :a1794.
+:a1795 :a1795 :a1795.
+:a1796 :a1796 :a1796.
+:a1797 :a1797 :a1797.
+:a1798 :a1798 :a1798.
+:a1799 :a1799 :a1799.
+:a1800 :a1800 :a1800.
+:a1801 :a1801 :a1801.
+:a1802 :a1802 :a1802.
+:a1803 :a1803 :a1803.
+:a1804 :a1804 :a1804.
+:a1805 :a1805 :a1805.
+:a1806 :a1806 :a1806.
+:a1807 :a1807 :a1807.
+:a1808 :a1808 :a1808.
+:a1809 :a1809 :a1809.
+:a1810 :a1810 :a1810.
+:a1811 :a1811 :a1811.
+:a1812 :a1812 :a1812.
+:a1813 :a1813 :a1813.
+:a1814 :a1814 :a1814.
+:a1815 :a1815 :a1815.
+:a1816 :a1816 :a1816.
+:a1817 :a1817 :a1817.
+:a1818 :a1818 :a1818.
+:a1819 :a1819 :a1819.
+:a1820 :a1820 :a1820.
+:a1821 :a1821 :a1821.
+:a1822 :a1822 :a1822.
+:a1823 :a1823 :a1823.
+:a1824 :a1824 :a1824.
+:a1825 :a1825 :a1825.
+:a1826 :a1826 :a1826.
+:a1827 :a1827 :a1827.
+:a1828 :a1828 :a1828.
+:a1829 :a1829 :a1829.
+:a1830 :a1830 :a1830.
+:a1831 :a1831 :a1831.
+:a1832 :a1832 :a1832.
+:a1833 :a1833 :a1833.
+:a1834 :a1834 :a1834.
+:a1835 :a1835 :a1835.
+:a1836 :a1836 :a1836.
+:a1837 :a1837 :a1837.
+:a1838 :a1838 :a1838.
+:a1839 :a1839 :a1839.
+:a1840 :a1840 :a1840.
+:a1841 :a1841 :a1841.
+:a1842 :a1842 :a1842.
+:a1843 :a1843 :a1843.
+:a1844 :a1844 :a1844.
+:a1845 :a1845 :a1845.
+:a1846 :a1846 :a1846.
+:a1847 :a1847 :a1847.
+:a1848 :a1848 :a1848.
+:a1849 :a1849 :a1849.
+:a1850 :a1850 :a1850.
+:a1851 :a1851 :a1851.
+:a1852 :a1852 :a1852.
+:a1853 :a1853 :a1853.
+:a1854 :a1854 :a1854.
+:a1855 :a1855 :a1855.
+:a1856 :a1856 :a1856.
+:a1857 :a1857 :a1857.
+:a1858 :a1858 :a1858.
+:a1859 :a1859 :a1859.
+:a1860 :a1860 :a1860.
+:a1861 :a1861 :a1861.
+:a1862 :a1862 :a1862.
+:a1863 :a1863 :a1863.
+:a1864 :a1864 :a1864.
+:a1865 :a1865 :a1865.
+:a1866 :a1866 :a1866.
+:a1867 :a1867 :a1867.
+:a1868 :a1868 :a1868.
+:a1869 :a1869 :a1869.
+:a1870 :a1870 :a1870.
+:a1871 :a1871 :a1871.
+:a1872 :a1872 :a1872.
+:a1873 :a1873 :a1873.
+:a1874 :a1874 :a1874.
+:a1875 :a1875 :a1875.
+:a1876 :a1876 :a1876.
+:a1877 :a1877 :a1877.
+:a1878 :a1878 :a1878.
+:a1879 :a1879 :a1879.
+:a1880 :a1880 :a1880.
+:a1881 :a1881 :a1881.
+:a1882 :a1882 :a1882.
+:a1883 :a1883 :a1883.
+:a1884 :a1884 :a1884.
+:a1885 :a1885 :a1885.
+:a1886 :a1886 :a1886.
+:a1887 :a1887 :a1887.
+:a1888 :a1888 :a1888.
+:a1889 :a1889 :a1889.
+:a1890 :a1890 :a1890.
+:a1891 :a1891 :a1891.
+:a1892 :a1892 :a1892.
+:a1893 :a1893 :a1893.
+:a1894 :a1894 :a1894.
+:a1895 :a1895 :a1895.
+:a1896 :a1896 :a1896.
+:a1897 :a1897 :a1897.
+:a1898 :a1898 :a1898.
+:a1899 :a1899 :a1899.
+:a1900 :a1900 :a1900.
+:a1901 :a1901 :a1901.
+:a1902 :a1902 :a1902.
+:a1903 :a1903 :a1903.
+:a1904 :a1904 :a1904.
+:a1905 :a1905 :a1905.
+:a1906 :a1906 :a1906.
+:a1907 :a1907 :a1907.
+:a1908 :a1908 :a1908.
+:a1909 :a1909 :a1909.
+:a1910 :a1910 :a1910.
+:a1911 :a1911 :a1911.
+:a1912 :a1912 :a1912.
+:a1913 :a1913 :a1913.
+:a1914 :a1914 :a1914.
+:a1915 :a1915 :a1915.
+:a1916 :a1916 :a1916.
+:a1917 :a1917 :a1917.
+:a1918 :a1918 :a1918.
+:a1919 :a1919 :a1919.
+:a1920 :a1920 :a1920.
+:a1921 :a1921 :a1921.
+:a1922 :a1922 :a1922.
+:a1923 :a1923 :a1923.
+:a1924 :a1924 :a1924.
+:a1925 :a1925 :a1925.
+:a1926 :a1926 :a1926.
+:a1927 :a1927 :a1927.
+:a1928 :a1928 :a1928.
+:a1929 :a1929 :a1929.
+:a1930 :a1930 :a1930.
+:a1931 :a1931 :a1931.
+:a1932 :a1932 :a1932.
+:a1933 :a1933 :a1933.
+:a1934 :a1934 :a1934.
+:a1935 :a1935 :a1935.
+:a1936 :a1936 :a1936.
+:a1937 :a1937 :a1937.
+:a1938 :a1938 :a1938.
+:a1939 :a1939 :a1939.
+:a1940 :a1940 :a1940.
+:a1941 :a1941 :a1941.
+:a1942 :a1942 :a1942.
+:a1943 :a1943 :a1943.
+:a1944 :a1944 :a1944.
+:a1945 :a1945 :a1945.
+:a1946 :a1946 :a1946.
+:a1947 :a1947 :a1947.
+:a1948 :a1948 :a1948.
+:a1949 :a1949 :a1949.
+:a1950 :a1950 :a1950.
+:a1951 :a1951 :a1951.
+:a1952 :a1952 :a1952.
+:a1953 :a1953 :a1953.
+:a1954 :a1954 :a1954.
+:a1955 :a1955 :a1955.
+:a1956 :a1956 :a1956.
+:a1957 :a1957 :a1957.
+:a1958 :a1958 :a1958.
+:a1959 :a1959 :a1959.
+:a1960 :a1960 :a1960.
+:a1961 :a1961 :a1961.
+:a1962 :a1962 :a1962.
+:a1963 :a1963 :a1963.
+:a1964 :a1964 :a1964.
+:a1965 :a1965 :a1965.
+:a1966 :a1966 :a1966.
+:a1967 :a1967 :a1967.
+:a1968 :a1968 :a1968.
+:a1969 :a1969 :a1969.
+:a1970 :a1970 :a1970.
+:a1971 :a1971 :a1971.
+:a1972 :a1972 :a1972.
+:a1973 :a1973 :a1973.
+:a1974 :a1974 :a1974.
+:a1975 :a1975 :a1975.
+:a1976 :a1976 :a1976.
+:a1977 :a1977 :a1977.
+:a1978 :a1978 :a1978.
+:a1979 :a1979 :a1979.
+:a1980 :a1980 :a1980.
+:a1981 :a1981 :a1981.
+:a1982 :a1982 :a1982.
+:a1983 :a1983 :a1983.
+:a1984 :a1984 :a1984.
+:a1985 :a1985 :a1985.
+:a1986 :a1986 :a1986.
+:a1987 :a1987 :a1987.
+:a1988 :a1988 :a1988.
+:a1989 :a1989 :a1989.
+:a1990 :a1990 :a1990.
+:a1991 :a1991 :a1991.
+:a1992 :a1992 :a1992.
+:a1993 :a1993 :a1993.
+:a1994 :a1994 :a1994.
+:a1995 :a1995 :a1995.
+:a1996 :a1996 :a1996.
+:a1997 :a1997 :a1997.
+:a1998 :a1998 :a1998.
+:a1999 :a1999 :a1999.
+:a2000 :a2000 :a2000.
+:a2001 :a2001 :a2001.
+:a2002 :a2002 :a2002.
+:a2003 :a2003 :a2003.
+:a2004 :a2004 :a2004.
+:a2005 :a2005 :a2005.
+:a2006 :a2006 :a2006.
+:a2007 :a2007 :a2007.
+:a2008 :a2008 :a2008.
+:a2009 :a2009 :a2009.
+:a2010 :a2010 :a2010.
+:a2011 :a2011 :a2011.
+:a2012 :a2012 :a2012.
+:a2013 :a2013 :a2013.
+:a2014 :a2014 :a2014.
+:a2015 :a2015 :a2015.
+:a2016 :a2016 :a2016.
+:a2017 :a2017 :a2017.
+:a2018 :a2018 :a2018.
+:a2019 :a2019 :a2019.
+:a2020 :a2020 :a2020.
+:a2021 :a2021 :a2021.
+:a2022 :a2022 :a2022.
+:a2023 :a2023 :a2023.
+:a2024 :a2024 :a2024.
+:a2025 :a2025 :a2025.
+:a2026 :a2026 :a2026.
+:a2027 :a2027 :a2027.
+:a2028 :a2028 :a2028.
+:a2029 :a2029 :a2029.
+:a2030 :a2030 :a2030.
+:a2031 :a2031 :a2031.
+:a2032 :a2032 :a2032.
+:a2033 :a2033 :a2033.
+:a2034 :a2034 :a2034.
+:a2035 :a2035 :a2035.
+:a2036 :a2036 :a2036.
+:a2037 :a2037 :a2037.
+:a2038 :a2038 :a2038.
+:a2039 :a2039 :a2039.
+:a2040 :a2040 :a2040.
+:a2041 :a2041 :a2041.
+:a2042 :a2042 :a2042.
+:a2043 :a2043 :a2043.
+:a2044 :a2044 :a2044.
+:a2045 :a2045 :a2045.
+:a2046 :a2046 :a2046.
+:a2047 :a2047 :a2047.
+:a2048 :a2048 :a2048.
+:a2049 :a2049 :a2049.
+:a2050 :a2050 :a2050.
+:a2051 :a2051 :a2051.
+:a2052 :a2052 :a2052.
+:a2053 :a2053 :a2053.
+:a2054 :a2054 :a2054.
+:a2055 :a2055 :a2055.
+:a2056 :a2056 :a2056.
+:a2057 :a2057 :a2057.
+:a2058 :a2058 :a2058.
+:a2059 :a2059 :a2059.
+:a2060 :a2060 :a2060.
+:a2061 :a2061 :a2061.
+:a2062 :a2062 :a2062.
+:a2063 :a2063 :a2063.
+:a2064 :a2064 :a2064.
+:a2065 :a2065 :a2065.
+:a2066 :a2066 :a2066.
+:a2067 :a2067 :a2067.
+:a2068 :a2068 :a2068.
+:a2069 :a2069 :a2069.
+:a2070 :a2070 :a2070.
+:a2071 :a2071 :a2071.
+:a2072 :a2072 :a2072.
+:a2073 :a2073 :a2073.
+:a2074 :a2074 :a2074.
+:a2075 :a2075 :a2075.
+:a2076 :a2076 :a2076.
+:a2077 :a2077 :a2077.
+:a2078 :a2078 :a2078.
+:a2079 :a2079 :a2079.
+:a2080 :a2080 :a2080.
+:a2081 :a2081 :a2081.
+:a2082 :a2082 :a2082.
+:a2083 :a2083 :a2083.
+:a2084 :a2084 :a2084.
+:a2085 :a2085 :a2085.
+:a2086 :a2086 :a2086.
+:a2087 :a2087 :a2087.
+:a2088 :a2088 :a2088.
+:a2089 :a2089 :a2089.
+:a2090 :a2090 :a2090.
+:a2091 :a2091 :a2091.
+:a2092 :a2092 :a2092.
+:a2093 :a2093 :a2093.
+:a2094 :a2094 :a2094.
+:a2095 :a2095 :a2095.
+:a2096 :a2096 :a2096.
+:a2097 :a2097 :a2097.
+:a2098 :a2098 :a2098.
+:a2099 :a2099 :a2099.
+:a2100 :a2100 :a2100.
+:a2101 :a2101 :a2101.
+:a2102 :a2102 :a2102.
+:a2103 :a2103 :a2103.
+:a2104 :a2104 :a2104.
+:a2105 :a2105 :a2105.
+:a2106 :a2106 :a2106.
+:a2107 :a2107 :a2107.
+:a2108 :a2108 :a2108.
+:a2109 :a2109 :a2109.
+:a2110 :a2110 :a2110.
+:a2111 :a2111 :a2111.
+:a2112 :a2112 :a2112.
+:a2113 :a2113 :a2113.
+:a2114 :a2114 :a2114.
+:a2115 :a2115 :a2115.
+:a2116 :a2116 :a2116.
+:a2117 :a2117 :a2117.
+:a2118 :a2118 :a2118.
+:a2119 :a2119 :a2119.
+:a2120 :a2120 :a2120.
+:a2121 :a2121 :a2121.
+:a2122 :a2122 :a2122.
+:a2123 :a2123 :a2123.
+:a2124 :a2124 :a2124.
+:a2125 :a2125 :a2125.
+:a2126 :a2126 :a2126.
+:a2127 :a2127 :a2127.
+:a2128 :a2128 :a2128.
+:a2129 :a2129 :a2129.
+:a2130 :a2130 :a2130.
+:a2131 :a2131 :a2131.
+:a2132 :a2132 :a2132.
+:a2133 :a2133 :a2133.
+:a2134 :a2134 :a2134.
+:a2135 :a2135 :a2135.
+:a2136 :a2136 :a2136.
+:a2137 :a2137 :a2137.
+:a2138 :a2138 :a2138.
+:a2139 :a2139 :a2139.
+:a2140 :a2140 :a2140.
+:a2141 :a2141 :a2141.
+:a2142 :a2142 :a2142.
+:a2143 :a2143 :a2143.
+:a2144 :a2144 :a2144.
+:a2145 :a2145 :a2145.
+:a2146 :a2146 :a2146.
+:a2147 :a2147 :a2147.
+:a2148 :a2148 :a2148.
+:a2149 :a2149 :a2149.
+:a2150 :a2150 :a2150.
+:a2151 :a2151 :a2151.
+:a2152 :a2152 :a2152.
+:a2153 :a2153 :a2153.
+:a2154 :a2154 :a2154.
+:a2155 :a2155 :a2155.
+:a2156 :a2156 :a2156.
+:a2157 :a2157 :a2157.
+:a2158 :a2158 :a2158.
+:a2159 :a2159 :a2159.
+:a2160 :a2160 :a2160.
+:a2161 :a2161 :a2161.
+:a2162 :a2162 :a2162.
+:a2163 :a2163 :a2163.
+:a2164 :a2164 :a2164.
+:a2165 :a2165 :a2165.
+:a2166 :a2166 :a2166.
+:a2167 :a2167 :a2167.
+:a2168 :a2168 :a2168.
+:a2169 :a2169 :a2169.
+:a2170 :a2170 :a2170.
+:a2171 :a2171 :a2171.
+:a2172 :a2172 :a2172.
+:a2173 :a2173 :a2173.
+:a2174 :a2174 :a2174.
+:a2175 :a2175 :a2175.
+:a2176 :a2176 :a2176.
+:a2177 :a2177 :a2177.
+:a2178 :a2178 :a2178.
+:a2179 :a2179 :a2179.
+:a2180 :a2180 :a2180.
+:a2181 :a2181 :a2181.
+:a2182 :a2182 :a2182.
+:a2183 :a2183 :a2183.
+:a2184 :a2184 :a2184.
+:a2185 :a2185 :a2185.
+:a2186 :a2186 :a2186.
+:a2187 :a2187 :a2187.
+:a2188 :a2188 :a2188.
+:a2189 :a2189 :a2189.
+:a2190 :a2190 :a2190.
+:a2191 :a2191 :a2191.
+:a2192 :a2192 :a2192.
+:a2193 :a2193 :a2193.
+:a2194 :a2194 :a2194.
+:a2195 :a2195 :a2195.
+:a2196 :a2196 :a2196.
+:a2197 :a2197 :a2197.
+:a2198 :a2198 :a2198.
+:a2199 :a2199 :a2199.
+:a2200 :a2200 :a2200.
+:a2201 :a2201 :a2201.
+:a2202 :a2202 :a2202.
+:a2203 :a2203 :a2203.
+:a2204 :a2204 :a2204.
+:a2205 :a2205 :a2205.
+:a2206 :a2206 :a2206.
+:a2207 :a2207 :a2207.
+:a2208 :a2208 :a2208.
+:a2209 :a2209 :a2209.
+:a2210 :a2210 :a2210.
+:a2211 :a2211 :a2211.
+:a2212 :a2212 :a2212.
+:a2213 :a2213 :a2213.
+:a2214 :a2214 :a2214.
+:a2215 :a2215 :a2215.
+:a2216 :a2216 :a2216.
+:a2217 :a2217 :a2217.
+:a2218 :a2218 :a2218.
+:a2219 :a2219 :a2219.
+:a2220 :a2220 :a2220.
+:a2221 :a2221 :a2221.
+:a2222 :a2222 :a2222.
+:a2223 :a2223 :a2223.
+:a2224 :a2224 :a2224.
+:a2225 :a2225 :a2225.
+:a2226 :a2226 :a2226.
+:a2227 :a2227 :a2227.
+:a2228 :a2228 :a2228.
+:a2229 :a2229 :a2229.
+:a2230 :a2230 :a2230.
+:a2231 :a2231 :a2231.
+:a2232 :a2232 :a2232.
+:a2233 :a2233 :a2233.
+:a2234 :a2234 :a2234.
+:a2235 :a2235 :a2235.
+:a2236 :a2236 :a2236.
+:a2237 :a2237 :a2237.
+:a2238 :a2238 :a2238.
+:a2239 :a2239 :a2239.
+:a2240 :a2240 :a2240.
+:a2241 :a2241 :a2241.
+:a2242 :a2242 :a2242.
+:a2243 :a2243 :a2243.
+:a2244 :a2244 :a2244.
+:a2245 :a2245 :a2245.
+:a2246 :a2246 :a2246.
+:a2247 :a2247 :a2247.
+:a2248 :a2248 :a2248.
+:a2249 :a2249 :a2249.
+:a2250 :a2250 :a2250.
+:a2251 :a2251 :a2251.
+:a2252 :a2252 :a2252.
+:a2253 :a2253 :a2253.
+:a2254 :a2254 :a2254.
+:a2255 :a2255 :a2255.
+:a2256 :a2256 :a2256.
+:a2257 :a2257 :a2257.
+:a2258 :a2258 :a2258.
+:a2259 :a2259 :a2259.
+:a2260 :a2260 :a2260.
+:a2261 :a2261 :a2261.
+:a2262 :a2262 :a2262.
+:a2263 :a2263 :a2263.
+:a2264 :a2264 :a2264.
+:a2265 :a2265 :a2265.
+:a2266 :a2266 :a2266.
+:a2267 :a2267 :a2267.
+:a2268 :a2268 :a2268.
+:a2269 :a2269 :a2269.
+:a2270 :a2270 :a2270.
+:a2271 :a2271 :a2271.
+:a2272 :a2272 :a2272.
+:a2273 :a2273 :a2273.
+:a2274 :a2274 :a2274.
+:a2275 :a2275 :a2275.
+:a2276 :a2276 :a2276.
+:a2277 :a2277 :a2277.
+:a2278 :a2278 :a2278.
+:a2279 :a2279 :a2279.
+:a2280 :a2280 :a2280.
+:a2281 :a2281 :a2281.
+:a2282 :a2282 :a2282.
+:a2283 :a2283 :a2283.
+:a2284 :a2284 :a2284.
+:a2285 :a2285 :a2285.
+:a2286 :a2286 :a2286.
+:a2287 :a2287 :a2287.
+:a2288 :a2288 :a2288.
+:a2289 :a2289 :a2289.
+:a2290 :a2290 :a2290.
+:a2291 :a2291 :a2291.
+:a2292 :a2292 :a2292.
+:a2293 :a2293 :a2293.
+:a2294 :a2294 :a2294.
+:a2295 :a2295 :a2295.
+:a2296 :a2296 :a2296.
+:a2297 :a2297 :a2297.
+:a2298 :a2298 :a2298.
+:a2299 :a2299 :a2299.
+:a2300 :a2300 :a2300.
+:a2301 :a2301 :a2301.
+:a2302 :a2302 :a2302.
+:a2303 :a2303 :a2303.
+:a2304 :a2304 :a2304.
+:a2305 :a2305 :a2305.
+:a2306 :a2306 :a2306.
+:a2307 :a2307 :a2307.
+:a2308 :a2308 :a2308.
+:a2309 :a2309 :a2309.
+:a2310 :a2310 :a2310.
+:a2311 :a2311 :a2311.
+:a2312 :a2312 :a2312.
+:a2313 :a2313 :a2313.
+:a2314 :a2314 :a2314.
+:a2315 :a2315 :a2315.
+:a2316 :a2316 :a2316.
+:a2317 :a2317 :a2317.
+:a2318 :a2318 :a2318.
+:a2319 :a2319 :a2319.
+:a2320 :a2320 :a2320.
+:a2321 :a2321 :a2321.
+:a2322 :a2322 :a2322.
+:a2323 :a2323 :a2323.
+:a2324 :a2324 :a2324.
+:a2325 :a2325 :a2325.
+:a2326 :a2326 :a2326.
+:a2327 :a2327 :a2327.
+:a2328 :a2328 :a2328.
+:a2329 :a2329 :a2329.
+:a2330 :a2330 :a2330.
+:a2331 :a2331 :a2331.
+:a2332 :a2332 :a2332.
+:a2333 :a2333 :a2333.
+:a2334 :a2334 :a2334.
+:a2335 :a2335 :a2335.
+:a2336 :a2336 :a2336.
+:a2337 :a2337 :a2337.
+:a2338 :a2338 :a2338.
+:a2339 :a2339 :a2339.
+:a2340 :a2340 :a2340.
+:a2341 :a2341 :a2341.
+:a2342 :a2342 :a2342.
+:a2343 :a2343 :a2343.
+:a2344 :a2344 :a2344.
+:a2345 :a2345 :a2345.
+:a2346 :a2346 :a2346.
+:a2347 :a2347 :a2347.
+:a2348 :a2348 :a2348.
+:a2349 :a2349 :a2349.
+:a2350 :a2350 :a2350.
+:a2351 :a2351 :a2351.
+:a2352 :a2352 :a2352.
+:a2353 :a2353 :a2353.
+:a2354 :a2354 :a2354.
+:a2355 :a2355 :a2355.
+:a2356 :a2356 :a2356.
+:a2357 :a2357 :a2357.
+:a2358 :a2358 :a2358.
+:a2359 :a2359 :a2359.
+:a2360 :a2360 :a2360.
+:a2361 :a2361 :a2361.
+:a2362 :a2362 :a2362.
+:a2363 :a2363 :a2363.
+:a2364 :a2364 :a2364.
+:a2365 :a2365 :a2365.
+:a2366 :a2366 :a2366.
+:a2367 :a2367 :a2367.
+:a2368 :a2368 :a2368.
+:a2369 :a2369 :a2369.
+:a2370 :a2370 :a2370.
+:a2371 :a2371 :a2371.
+:a2372 :a2372 :a2372.
+:a2373 :a2373 :a2373.
+:a2374 :a2374 :a2374.
+:a2375 :a2375 :a2375.
+:a2376 :a2376 :a2376.
+:a2377 :a2377 :a2377.
+:a2378 :a2378 :a2378.
+:a2379 :a2379 :a2379.
+:a2380 :a2380 :a2380.
+:a2381 :a2381 :a2381.
+:a2382 :a2382 :a2382.
+:a2383 :a2383 :a2383.
+:a2384 :a2384 :a2384.
+:a2385 :a2385 :a2385.
+:a2386 :a2386 :a2386.
+:a2387 :a2387 :a2387.
+:a2388 :a2388 :a2388.
+:a2389 :a2389 :a2389.
+:a2390 :a2390 :a2390.
+:a2391 :a2391 :a2391.
+:a2392 :a2392 :a2392.
+:a2393 :a2393 :a2393.
+:a2394 :a2394 :a2394.
+:a2395 :a2395 :a2395.
+:a2396 :a2396 :a2396.
+:a2397 :a2397 :a2397.
+:a2398 :a2398 :a2398.
+:a2399 :a2399 :a2399.
+:a2400 :a2400 :a2400.
+:a2401 :a2401 :a2401.
+:a2402 :a2402 :a2402.
+:a2403 :a2403 :a2403.
+:a2404 :a2404 :a2404.
+:a2405 :a2405 :a2405.
+:a2406 :a2406 :a2406.
+:a2407 :a2407 :a2407.
+:a2408 :a2408 :a2408.
+:a2409 :a2409 :a2409.
+:a2410 :a2410 :a2410.
+:a2411 :a2411 :a2411.
+:a2412 :a2412 :a2412.
+:a2413 :a2413 :a2413.
+:a2414 :a2414 :a2414.
+:a2415 :a2415 :a2415.
+:a2416 :a2416 :a2416.
+:a2417 :a2417 :a2417.
+:a2418 :a2418 :a2418.
+:a2419 :a2419 :a2419.
+:a2420 :a2420 :a2420.
+:a2421 :a2421 :a2421.
+:a2422 :a2422 :a2422.
+:a2423 :a2423 :a2423.
+:a2424 :a2424 :a2424.
+:a2425 :a2425 :a2425.
+:a2426 :a2426 :a2426.
+:a2427 :a2427 :a2427.
+:a2428 :a2428 :a2428.
+:a2429 :a2429 :a2429.
+:a2430 :a2430 :a2430.
+:a2431 :a2431 :a2431.
+:a2432 :a2432 :a2432.
+:a2433 :a2433 :a2433.
+:a2434 :a2434 :a2434.
+:a2435 :a2435 :a2435.
+:a2436 :a2436 :a2436.
+:a2437 :a2437 :a2437.
+:a2438 :a2438 :a2438.
+:a2439 :a2439 :a2439.
+:a2440 :a2440 :a2440.
+:a2441 :a2441 :a2441.
+:a2442 :a2442 :a2442.
+:a2443 :a2443 :a2443.
+:a2444 :a2444 :a2444.
+:a2445 :a2445 :a2445.
+:a2446 :a2446 :a2446.
+:a2447 :a2447 :a2447.
+:a2448 :a2448 :a2448.
+:a2449 :a2449 :a2449.
+:a2450 :a2450 :a2450.
+:a2451 :a2451 :a2451.
+:a2452 :a2452 :a2452.
+:a2453 :a2453 :a2453.
+:a2454 :a2454 :a2454.
+:a2455 :a2455 :a2455.
+:a2456 :a2456 :a2456.
+:a2457 :a2457 :a2457.
+:a2458 :a2458 :a2458.
+:a2459 :a2459 :a2459.
+:a2460 :a2460 :a2460.
+:a2461 :a2461 :a2461.
+:a2462 :a2462 :a2462.
+:a2463 :a2463 :a2463.
+:a2464 :a2464 :a2464.
+:a2465 :a2465 :a2465.
+:a2466 :a2466 :a2466.
+:a2467 :a2467 :a2467.
+:a2468 :a2468 :a2468.
+:a2469 :a2469 :a2469.
+:a2470 :a2470 :a2470.
+:a2471 :a2471 :a2471.
+:a2472 :a2472 :a2472.
+:a2473 :a2473 :a2473.
+:a2474 :a2474 :a2474.
+:a2475 :a2475 :a2475.
+:a2476 :a2476 :a2476.
+:a2477 :a2477 :a2477.
+:a2478 :a2478 :a2478.
+:a2479 :a2479 :a2479.
+:a2480 :a2480 :a2480.
+:a2481 :a2481 :a2481.
+:a2482 :a2482 :a2482.
+:a2483 :a2483 :a2483.
+:a2484 :a2484 :a2484.
+:a2485 :a2485 :a2485.
+:a2486 :a2486 :a2486.
+:a2487 :a2487 :a2487.
+:a2488 :a2488 :a2488.
+:a2489 :a2489 :a2489.
+:a2490 :a2490 :a2490.
+:a2491 :a2491 :a2491.
+:a2492 :a2492 :a2492.
+:a2493 :a2493 :a2493.
+:a2494 :a2494 :a2494.
+:a2495 :a2495 :a2495.
+:a2496 :a2496 :a2496.
+:a2497 :a2497 :a2497.
+:a2498 :a2498 :a2498.
+:a2499 :a2499 :a2499.
+:a2500 :a2500 :a2500.
+:a2501 :a2501 :a2501.
+:a2502 :a2502 :a2502.
+:a2503 :a2503 :a2503.
+:a2504 :a2504 :a2504.
+:a2505 :a2505 :a2505.
+:a2506 :a2506 :a2506.
+:a2507 :a2507 :a2507.
+:a2508 :a2508 :a2508.
+:a2509 :a2509 :a2509.
+:a2510 :a2510 :a2510.
+:a2511 :a2511 :a2511.
+:a2512 :a2512 :a2512.
+:a2513 :a2513 :a2513.
+:a2514 :a2514 :a2514.
+:a2515 :a2515 :a2515.
+:a2516 :a2516 :a2516.
+:a2517 :a2517 :a2517.
+:a2518 :a2518 :a2518.
+:a2519 :a2519 :a2519.
+:a2520 :a2520 :a2520.
+:a2521 :a2521 :a2521.
+:a2522 :a2522 :a2522.
+:a2523 :a2523 :a2523.
+:a2524 :a2524 :a2524.
+:a2525 :a2525 :a2525.
+:a2526 :a2526 :a2526.
+:a2527 :a2527 :a2527.
+:a2528 :a2528 :a2528.
+:a2529 :a2529 :a2529.
+:a2530 :a2530 :a2530.
+:a2531 :a2531 :a2531.
+:a2532 :a2532 :a2532.
+:a2533 :a2533 :a2533.
+:a2534 :a2534 :a2534.
+:a2535 :a2535 :a2535.
+:a2536 :a2536 :a2536.
+:a2537 :a2537 :a2537.
+:a2538 :a2538 :a2538.
+:a2539 :a2539 :a2539.
+:a2540 :a2540 :a2540.
+:a2541 :a2541 :a2541.
+:a2542 :a2542 :a2542.
+:a2543 :a2543 :a2543.
+:a2544 :a2544 :a2544.
+:a2545 :a2545 :a2545.
+:a2546 :a2546 :a2546.
+:a2547 :a2547 :a2547.
+:a2548 :a2548 :a2548.
+:a2549 :a2549 :a2549.
+:a2550 :a2550 :a2550.
+:a2551 :a2551 :a2551.
+:a2552 :a2552 :a2552.
+:a2553 :a2553 :a2553.
+:a2554 :a2554 :a2554.
+:a2555 :a2555 :a2555.
+:a2556 :a2556 :a2556.
+:a2557 :a2557 :a2557.
+:a2558 :a2558 :a2558.
+:a2559 :a2559 :a2559.
+:a2560 :a2560 :a2560.
+:a2561 :a2561 :a2561.
+:a2562 :a2562 :a2562.
+:a2563 :a2563 :a2563.
+:a2564 :a2564 :a2564.
+:a2565 :a2565 :a2565.
+:a2566 :a2566 :a2566.
+:a2567 :a2567 :a2567.
+:a2568 :a2568 :a2568.
+:a2569 :a2569 :a2569.
+:a2570 :a2570 :a2570.
+:a2571 :a2571 :a2571.
+:a2572 :a2572 :a2572.
+:a2573 :a2573 :a2573.
+:a2574 :a2574 :a2574.
+:a2575 :a2575 :a2575.
+:a2576 :a2576 :a2576.
+:a2577 :a2577 :a2577.
+:a2578 :a2578 :a2578.
+:a2579 :a2579 :a2579.
+:a2580 :a2580 :a2580.
+:a2581 :a2581 :a2581.
+:a2582 :a2582 :a2582.
+:a2583 :a2583 :a2583.
+:a2584 :a2584 :a2584.
+:a2585 :a2585 :a2585.
+:a2586 :a2586 :a2586.
+:a2587 :a2587 :a2587.
+:a2588 :a2588 :a2588.
+:a2589 :a2589 :a2589.
+:a2590 :a2590 :a2590.
+:a2591 :a2591 :a2591.
+:a2592 :a2592 :a2592.
+:a2593 :a2593 :a2593.
+:a2594 :a2594 :a2594.
+:a2595 :a2595 :a2595.
+:a2596 :a2596 :a2596.
+:a2597 :a2597 :a2597.
+:a2598 :a2598 :a2598.
+:a2599 :a2599 :a2599.
+:a2600 :a2600 :a2600.
+:a2601 :a2601 :a2601.
+:a2602 :a2602 :a2602.
+:a2603 :a2603 :a2603.
+:a2604 :a2604 :a2604.
+:a2605 :a2605 :a2605.
+:a2606 :a2606 :a2606.
+:a2607 :a2607 :a2607.
+:a2608 :a2608 :a2608.
+:a2609 :a2609 :a2609.
+:a2610 :a2610 :a2610.
+:a2611 :a2611 :a2611.
+:a2612 :a2612 :a2612.
+:a2613 :a2613 :a2613.
+:a2614 :a2614 :a2614.
+:a2615 :a2615 :a2615.
+:a2616 :a2616 :a2616.
+:a2617 :a2617 :a2617.
+:a2618 :a2618 :a2618.
+:a2619 :a2619 :a2619.
+:a2620 :a2620 :a2620.
+:a2621 :a2621 :a2621.
+:a2622 :a2622 :a2622.
+:a2623 :a2623 :a2623.
+:a2624 :a2624 :a2624.
+:a2625 :a2625 :a2625.
+:a2626 :a2626 :a2626.
+:a2627 :a2627 :a2627.
+:a2628 :a2628 :a2628.
+:a2629 :a2629 :a2629.
+:a2630 :a2630 :a2630.
+:a2631 :a2631 :a2631.
+:a2632 :a2632 :a2632.
+:a2633 :a2633 :a2633.
+:a2634 :a2634 :a2634.
+:a2635 :a2635 :a2635.
+:a2636 :a2636 :a2636.
+:a2637 :a2637 :a2637.
+:a2638 :a2638 :a2638.
+:a2639 :a2639 :a2639.
+:a2640 :a2640 :a2640.
+:a2641 :a2641 :a2641.
+:a2642 :a2642 :a2642.
+:a2643 :a2643 :a2643.
+:a2644 :a2644 :a2644.
+:a2645 :a2645 :a2645.
+:a2646 :a2646 :a2646.
+:a2647 :a2647 :a2647.
+:a2648 :a2648 :a2648.
+:a2649 :a2649 :a2649.
+:a2650 :a2650 :a2650.
+:a2651 :a2651 :a2651.
+:a2652 :a2652 :a2652.
+:a2653 :a2653 :a2653.
+:a2654 :a2654 :a2654.
+:a2655 :a2655 :a2655.
+:a2656 :a2656 :a2656.
+:a2657 :a2657 :a2657.
+:a2658 :a2658 :a2658.
+:a2659 :a2659 :a2659.
+:a2660 :a2660 :a2660.
+:a2661 :a2661 :a2661.
+:a2662 :a2662 :a2662.
+:a2663 :a2663 :a2663.
+:a2664 :a2664 :a2664.
+:a2665 :a2665 :a2665.
+:a2666 :a2666 :a2666.
+:a2667 :a2667 :a2667.
+:a2668 :a2668 :a2668.
+:a2669 :a2669 :a2669.
+:a2670 :a2670 :a2670.
+:a2671 :a2671 :a2671.
+:a2672 :a2672 :a2672.
+:a2673 :a2673 :a2673.
+:a2674 :a2674 :a2674.
+:a2675 :a2675 :a2675.
+:a2676 :a2676 :a2676.
+:a2677 :a2677 :a2677.
+:a2678 :a2678 :a2678.
+:a2679 :a2679 :a2679.
+:a2680 :a2680 :a2680.
+:a2681 :a2681 :a2681.
+:a2682 :a2682 :a2682.
+:a2683 :a2683 :a2683.
+:a2684 :a2684 :a2684.
+:a2685 :a2685 :a2685.
+:a2686 :a2686 :a2686.
+:a2687 :a2687 :a2687.
+:a2688 :a2688 :a2688.
+:a2689 :a2689 :a2689.
+:a2690 :a2690 :a2690.
+:a2691 :a2691 :a2691.
+:a2692 :a2692 :a2692.
+:a2693 :a2693 :a2693.
+:a2694 :a2694 :a2694.
+:a2695 :a2695 :a2695.
+:a2696 :a2696 :a2696.
+:a2697 :a2697 :a2697.
+:a2698 :a2698 :a2698.
+:a2699 :a2699 :a2699.
+:a2700 :a2700 :a2700.
+:a2701 :a2701 :a2701.
+:a2702 :a2702 :a2702.
+:a2703 :a2703 :a2703.
+:a2704 :a2704 :a2704.
+:a2705 :a2705 :a2705.
+:a2706 :a2706 :a2706.
+:a2707 :a2707 :a2707.
+:a2708 :a2708 :a2708.
+:a2709 :a2709 :a2709.
+:a2710 :a2710 :a2710.
+:a2711 :a2711 :a2711.
+:a2712 :a2712 :a2712.
+:a2713 :a2713 :a2713.
+:a2714 :a2714 :a2714.
+:a2715 :a2715 :a2715.
+:a2716 :a2716 :a2716.
+:a2717 :a2717 :a2717.
+:a2718 :a2718 :a2718.
+:a2719 :a2719 :a2719.
+:a2720 :a2720 :a2720.
+:a2721 :a2721 :a2721.
+:a2722 :a2722 :a2722.
+:a2723 :a2723 :a2723.
+:a2724 :a2724 :a2724.
+:a2725 :a2725 :a2725.
+:a2726 :a2726 :a2726.
+:a2727 :a2727 :a2727.
+:a2728 :a2728 :a2728.
+:a2729 :a2729 :a2729.
+:a2730 :a2730 :a2730.
+:a2731 :a2731 :a2731.
+:a2732 :a2732 :a2732.
+:a2733 :a2733 :a2733.
+:a2734 :a2734 :a2734.
+:a2735 :a2735 :a2735.
+:a2736 :a2736 :a2736.
+:a2737 :a2737 :a2737.
+:a2738 :a2738 :a2738.
+:a2739 :a2739 :a2739.
+:a2740 :a2740 :a2740.
+:a2741 :a2741 :a2741.
+:a2742 :a2742 :a2742.
+:a2743 :a2743 :a2743.
+:a2744 :a2744 :a2744.
+:a2745 :a2745 :a2745.
+:a2746 :a2746 :a2746.
+:a2747 :a2747 :a2747.
+:a2748 :a2748 :a2748.
+:a2749 :a2749 :a2749.
+:a2750 :a2750 :a2750.
+:a2751 :a2751 :a2751.
+:a2752 :a2752 :a2752.
+:a2753 :a2753 :a2753.
+:a2754 :a2754 :a2754.
+:a2755 :a2755 :a2755.
+:a2756 :a2756 :a2756.
+:a2757 :a2757 :a2757.
+:a2758 :a2758 :a2758.
+:a2759 :a2759 :a2759.
+:a2760 :a2760 :a2760.
+:a2761 :a2761 :a2761.
+:a2762 :a2762 :a2762.
+:a2763 :a2763 :a2763.
+:a2764 :a2764 :a2764.
+:a2765 :a2765 :a2765.
+:a2766 :a2766 :a2766.
+:a2767 :a2767 :a2767.
+:a2768 :a2768 :a2768.
+:a2769 :a2769 :a2769.
+:a2770 :a2770 :a2770.
+:a2771 :a2771 :a2771.
+:a2772 :a2772 :a2772.
+:a2773 :a2773 :a2773.
+:a2774 :a2774 :a2774.
+:a2775 :a2775 :a2775.
+:a2776 :a2776 :a2776.
+:a2777 :a2777 :a2777.
+:a2778 :a2778 :a2778.
+:a2779 :a2779 :a2779.
+:a2780 :a2780 :a2780.
+:a2781 :a2781 :a2781.
+:a2782 :a2782 :a2782.
+:a2783 :a2783 :a2783.
+:a2784 :a2784 :a2784.
+:a2785 :a2785 :a2785.
+:a2786 :a2786 :a2786.
+:a2787 :a2787 :a2787.
+:a2788 :a2788 :a2788.
+:a2789 :a2789 :a2789.
+:a2790 :a2790 :a2790.
+:a2791 :a2791 :a2791.
+:a2792 :a2792 :a2792.
+:a2793 :a2793 :a2793.
+:a2794 :a2794 :a2794.
+:a2795 :a2795 :a2795.
+:a2796 :a2796 :a2796.
+:a2797 :a2797 :a2797.
+:a2798 :a2798 :a2798.
+:a2799 :a2799 :a2799.
+:a2800 :a2800 :a2800.
+:a2801 :a2801 :a2801.
+:a2802 :a2802 :a2802.
+:a2803 :a2803 :a2803.
+:a2804 :a2804 :a2804.
+:a2805 :a2805 :a2805.
+:a2806 :a2806 :a2806.
+:a2807 :a2807 :a2807.
+:a2808 :a2808 :a2808.
+:a2809 :a2809 :a2809.
+:a2810 :a2810 :a2810.
+:a2811 :a2811 :a2811.
+:a2812 :a2812 :a2812.
+:a2813 :a2813 :a2813.
+:a2814 :a2814 :a2814.
+:a2815 :a2815 :a2815.
+:a2816 :a2816 :a2816.
+:a2817 :a2817 :a2817.
+:a2818 :a2818 :a2818.
+:a2819 :a2819 :a2819.
+:a2820 :a2820 :a2820.
+:a2821 :a2821 :a2821.
+:a2822 :a2822 :a2822.
+:a2823 :a2823 :a2823.
+:a2824 :a2824 :a2824.
+:a2825 :a2825 :a2825.
+:a2826 :a2826 :a2826.
+:a2827 :a2827 :a2827.
+:a2828 :a2828 :a2828.
+:a2829 :a2829 :a2829.
+:a2830 :a2830 :a2830.
+:a2831 :a2831 :a2831.
+:a2832 :a2832 :a2832.
+:a2833 :a2833 :a2833.
+:a2834 :a2834 :a2834.
+:a2835 :a2835 :a2835.
+:a2836 :a2836 :a2836.
+:a2837 :a2837 :a2837.
+:a2838 :a2838 :a2838.
+:a2839 :a2839 :a2839.
+:a2840 :a2840 :a2840.
+:a2841 :a2841 :a2841.
+:a2842 :a2842 :a2842.
+:a2843 :a2843 :a2843.
+:a2844 :a2844 :a2844.
+:a2845 :a2845 :a2845.
+:a2846 :a2846 :a2846.
+:a2847 :a2847 :a2847.
+:a2848 :a2848 :a2848.
+:a2849 :a2849 :a2849.
+:a2850 :a2850 :a2850.
+:a2851 :a2851 :a2851.
+:a2852 :a2852 :a2852.
+:a2853 :a2853 :a2853.
+:a2854 :a2854 :a2854.
+:a2855 :a2855 :a2855.
+:a2856 :a2856 :a2856.
+:a2857 :a2857 :a2857.
+:a2858 :a2858 :a2858.
+:a2859 :a2859 :a2859.
+:a2860 :a2860 :a2860.
+:a2861 :a2861 :a2861.
+:a2862 :a2862 :a2862.
+:a2863 :a2863 :a2863.
+:a2864 :a2864 :a2864.
+:a2865 :a2865 :a2865.
+:a2866 :a2866 :a2866.
+:a2867 :a2867 :a2867.
+:a2868 :a2868 :a2868.
+:a2869 :a2869 :a2869.
+:a2870 :a2870 :a2870.
+:a2871 :a2871 :a2871.
+:a2872 :a2872 :a2872.
+:a2873 :a2873 :a2873.
+:a2874 :a2874 :a2874.
+:a2875 :a2875 :a2875.
+:a2876 :a2876 :a2876.
+:a2877 :a2877 :a2877.
+:a2878 :a2878 :a2878.
+:a2879 :a2879 :a2879.
+:a2880 :a2880 :a2880.
+:a2881 :a2881 :a2881.
+:a2882 :a2882 :a2882.
+:a2883 :a2883 :a2883.
+:a2884 :a2884 :a2884.
+:a2885 :a2885 :a2885.
+:a2886 :a2886 :a2886.
+:a2887 :a2887 :a2887.
+:a2888 :a2888 :a2888.
+:a2889 :a2889 :a2889.
+:a2890 :a2890 :a2890.
+:a2891 :a2891 :a2891.
+:a2892 :a2892 :a2892.
+:a2893 :a2893 :a2893.
+:a2894 :a2894 :a2894.
+:a2895 :a2895 :a2895.
+:a2896 :a2896 :a2896.
+:a2897 :a2897 :a2897.
+:a2898 :a2898 :a2898.
+:a2899 :a2899 :a2899.
+:a2900 :a2900 :a2900.
+:a2901 :a2901 :a2901.
+:a2902 :a2902 :a2902.
+:a2903 :a2903 :a2903.
+:a2904 :a2904 :a2904.
+:a2905 :a2905 :a2905.
+:a2906 :a2906 :a2906.
+:a2907 :a2907 :a2907.
+:a2908 :a2908 :a2908.
+:a2909 :a2909 :a2909.
+:a2910 :a2910 :a2910.
+:a2911 :a2911 :a2911.
+:a2912 :a2912 :a2912.
+:a2913 :a2913 :a2913.
+:a2914 :a2914 :a2914.
+:a2915 :a2915 :a2915.
+:a2916 :a2916 :a2916.
+:a2917 :a2917 :a2917.
+:a2918 :a2918 :a2918.
+:a2919 :a2919 :a2919.
+:a2920 :a2920 :a2920.
+:a2921 :a2921 :a2921.
+:a2922 :a2922 :a2922.
+:a2923 :a2923 :a2923.
+:a2924 :a2924 :a2924.
+:a2925 :a2925 :a2925.
+:a2926 :a2926 :a2926.
+:a2927 :a2927 :a2927.
+:a2928 :a2928 :a2928.
+:a2929 :a2929 :a2929.
+:a2930 :a2930 :a2930.
+:a2931 :a2931 :a2931.
+:a2932 :a2932 :a2932.
+:a2933 :a2933 :a2933.
+:a2934 :a2934 :a2934.
+:a2935 :a2935 :a2935.
+:a2936 :a2936 :a2936.
+:a2937 :a2937 :a2937.
+:a2938 :a2938 :a2938.
+:a2939 :a2939 :a2939.
+:a2940 :a2940 :a2940.
+:a2941 :a2941 :a2941.
+:a2942 :a2942 :a2942.
+:a2943 :a2943 :a2943.
+:a2944 :a2944 :a2944.
+:a2945 :a2945 :a2945.
+:a2946 :a2946 :a2946.
+:a2947 :a2947 :a2947.
+:a2948 :a2948 :a2948.
+:a2949 :a2949 :a2949.
+:a2950 :a2950 :a2950.
+:a2951 :a2951 :a2951.
+:a2952 :a2952 :a2952.
+:a2953 :a2953 :a2953.
+:a2954 :a2954 :a2954.
+:a2955 :a2955 :a2955.
+:a2956 :a2956 :a2956.
+:a2957 :a2957 :a2957.
+:a2958 :a2958 :a2958.
+:a2959 :a2959 :a2959.
+:a2960 :a2960 :a2960.
+:a2961 :a2961 :a2961.
+:a2962 :a2962 :a2962.
+:a2963 :a2963 :a2963.
+:a2964 :a2964 :a2964.
+:a2965 :a2965 :a2965.
+:a2966 :a2966 :a2966.
+:a2967 :a2967 :a2967.
+:a2968 :a2968 :a2968.
+:a2969 :a2969 :a2969.
+:a2970 :a2970 :a2970.
+:a2971 :a2971 :a2971.
+:a2972 :a2972 :a2972.
+:a2973 :a2973 :a2973.
+:a2974 :a2974 :a2974.
+:a2975 :a2975 :a2975.
+:a2976 :a2976 :a2976.
+:a2977 :a2977 :a2977.
+:a2978 :a2978 :a2978.
+:a2979 :a2979 :a2979.
+:a2980 :a2980 :a2980.
+:a2981 :a2981 :a2981.
+:a2982 :a2982 :a2982.
+:a2983 :a2983 :a2983.
+:a2984 :a2984 :a2984.
+:a2985 :a2985 :a2985.
+:a2986 :a2986 :a2986.
+:a2987 :a2987 :a2987.
+:a2988 :a2988 :a2988.
+:a2989 :a2989 :a2989.
+:a2990 :a2990 :a2990.
+:a2991 :a2991 :a2991.
+:a2992 :a2992 :a2992.
+:a2993 :a2993 :a2993.
+:a2994 :a2994 :a2994.
+:a2995 :a2995 :a2995.
+:a2996 :a2996 :a2996.
+:a2997 :a2997 :a2997.
+:a2998 :a2998 :a2998.
+:a2999 :a2999 :a2999.
+:a3000 :a3000 :a3000.
+:a3001 :a3001 :a3001.
+:a3002 :a3002 :a3002.
+:a3003 :a3003 :a3003.
+:a3004 :a3004 :a3004.
+:a3005 :a3005 :a3005.
+:a3006 :a3006 :a3006.
+:a3007 :a3007 :a3007.
+:a3008 :a3008 :a3008.
+:a3009 :a3009 :a3009.
+:a3010 :a3010 :a3010.
+:a3011 :a3011 :a3011.
+:a3012 :a3012 :a3012.
+:a3013 :a3013 :a3013.
+:a3014 :a3014 :a3014.
+:a3015 :a3015 :a3015.
+:a3016 :a3016 :a3016.
+:a3017 :a3017 :a3017.
+:a3018 :a3018 :a3018.
+:a3019 :a3019 :a3019.
+:a3020 :a3020 :a3020.
+:a3021 :a3021 :a3021.
+:a3022 :a3022 :a3022.
+:a3023 :a3023 :a3023.
+:a3024 :a3024 :a3024.
+:a3025 :a3025 :a3025.
+:a3026 :a3026 :a3026.
+:a3027 :a3027 :a3027.
+:a3028 :a3028 :a3028.
+:a3029 :a3029 :a3029.
+:a3030 :a3030 :a3030.
+:a3031 :a3031 :a3031.
+:a3032 :a3032 :a3032.
+:a3033 :a3033 :a3033.
+:a3034 :a3034 :a3034.
+:a3035 :a3035 :a3035.
+:a3036 :a3036 :a3036.
+:a3037 :a3037 :a3037.
+:a3038 :a3038 :a3038.
+:a3039 :a3039 :a3039.
+:a3040 :a3040 :a3040.
+:a3041 :a3041 :a3041.
+:a3042 :a3042 :a3042.
+:a3043 :a3043 :a3043.
+:a3044 :a3044 :a3044.
+:a3045 :a3045 :a3045.
+:a3046 :a3046 :a3046.
+:a3047 :a3047 :a3047.
+:a3048 :a3048 :a3048.
+:a3049 :a3049 :a3049.
+:a3050 :a3050 :a3050.
+:a3051 :a3051 :a3051.
+:a3052 :a3052 :a3052.
+:a3053 :a3053 :a3053.
+:a3054 :a3054 :a3054.
+:a3055 :a3055 :a3055.
+:a3056 :a3056 :a3056.
+:a3057 :a3057 :a3057.
+:a3058 :a3058 :a3058.
+:a3059 :a3059 :a3059.
+:a3060 :a3060 :a3060.
+:a3061 :a3061 :a3061.
+:a3062 :a3062 :a3062.
+:a3063 :a3063 :a3063.
+:a3064 :a3064 :a3064.
+:a3065 :a3065 :a3065.
+:a3066 :a3066 :a3066.
+:a3067 :a3067 :a3067.
+:a3068 :a3068 :a3068.
+:a3069 :a3069 :a3069.
+:a3070 :a3070 :a3070.
+:a3071 :a3071 :a3071.
+:a3072 :a3072 :a3072.
+:a3073 :a3073 :a3073.
+:a3074 :a3074 :a3074.
+:a3075 :a3075 :a3075.
+:a3076 :a3076 :a3076.
+:a3077 :a3077 :a3077.
+:a3078 :a3078 :a3078.
+:a3079 :a3079 :a3079.
+:a3080 :a3080 :a3080.
+:a3081 :a3081 :a3081.
+:a3082 :a3082 :a3082.
+:a3083 :a3083 :a3083.
+:a3084 :a3084 :a3084.
+:a3085 :a3085 :a3085.
+:a3086 :a3086 :a3086.
+:a3087 :a3087 :a3087.
+:a3088 :a3088 :a3088.
+:a3089 :a3089 :a3089.
+:a3090 :a3090 :a3090.
+:a3091 :a3091 :a3091.
+:a3092 :a3092 :a3092.
+:a3093 :a3093 :a3093.
+:a3094 :a3094 :a3094.
+:a3095 :a3095 :a3095.
+:a3096 :a3096 :a3096.
+:a3097 :a3097 :a3097.
+:a3098 :a3098 :a3098.
+:a3099 :a3099 :a3099.
+:a3100 :a3100 :a3100.
+:a3101 :a3101 :a3101.
+:a3102 :a3102 :a3102.
+:a3103 :a3103 :a3103.
+:a3104 :a3104 :a3104.
+:a3105 :a3105 :a3105.
+:a3106 :a3106 :a3106.
+:a3107 :a3107 :a3107.
+:a3108 :a3108 :a3108.
+:a3109 :a3109 :a3109.
+:a3110 :a3110 :a3110.
+:a3111 :a3111 :a3111.
+:a3112 :a3112 :a3112.
+:a3113 :a3113 :a3113.
+:a3114 :a3114 :a3114.
+:a3115 :a3115 :a3115.
+:a3116 :a3116 :a3116.
+:a3117 :a3117 :a3117.
+:a3118 :a3118 :a3118.
+:a3119 :a3119 :a3119.
+:a3120 :a3120 :a3120.
+:a3121 :a3121 :a3121.
+:a3122 :a3122 :a3122.
+:a3123 :a3123 :a3123.
+:a3124 :a3124 :a3124.
+:a3125 :a3125 :a3125.
+:a3126 :a3126 :a3126.
+:a3127 :a3127 :a3127.
+:a3128 :a3128 :a3128.
+:a3129 :a3129 :a3129.
+:a3130 :a3130 :a3130.
+:a3131 :a3131 :a3131.
+:a3132 :a3132 :a3132.
+:a3133 :a3133 :a3133.
+:a3134 :a3134 :a3134.
+:a3135 :a3135 :a3135.
+:a3136 :a3136 :a3136.
+:a3137 :a3137 :a3137.
+:a3138 :a3138 :a3138.
+:a3139 :a3139 :a3139.
+:a3140 :a3140 :a3140.
+:a3141 :a3141 :a3141.
+:a3142 :a3142 :a3142.
+:a3143 :a3143 :a3143.
+:a3144 :a3144 :a3144.
+:a3145 :a3145 :a3145.
+:a3146 :a3146 :a3146.
+:a3147 :a3147 :a3147.
+:a3148 :a3148 :a3148.
+:a3149 :a3149 :a3149.
+:a3150 :a3150 :a3150.
+:a3151 :a3151 :a3151.
+:a3152 :a3152 :a3152.
+:a3153 :a3153 :a3153.
+:a3154 :a3154 :a3154.
+:a3155 :a3155 :a3155.
+:a3156 :a3156 :a3156.
+:a3157 :a3157 :a3157.
+:a3158 :a3158 :a3158.
+:a3159 :a3159 :a3159.
+:a3160 :a3160 :a3160.
+:a3161 :a3161 :a3161.
+:a3162 :a3162 :a3162.
+:a3163 :a3163 :a3163.
+:a3164 :a3164 :a3164.
+:a3165 :a3165 :a3165.
+:a3166 :a3166 :a3166.
+:a3167 :a3167 :a3167.
+:a3168 :a3168 :a3168.
+:a3169 :a3169 :a3169.
+:a3170 :a3170 :a3170.
+:a3171 :a3171 :a3171.
+:a3172 :a3172 :a3172.
+:a3173 :a3173 :a3173.
+:a3174 :a3174 :a3174.
+:a3175 :a3175 :a3175.
+:a3176 :a3176 :a3176.
+:a3177 :a3177 :a3177.
+:a3178 :a3178 :a3178.
+:a3179 :a3179 :a3179.
+:a3180 :a3180 :a3180.
+:a3181 :a3181 :a3181.
+:a3182 :a3182 :a3182.
+:a3183 :a3183 :a3183.
+:a3184 :a3184 :a3184.
+:a3185 :a3185 :a3185.
+:a3186 :a3186 :a3186.
+:a3187 :a3187 :a3187.
+:a3188 :a3188 :a3188.
+:a3189 :a3189 :a3189.
+:a3190 :a3190 :a3190.
+:a3191 :a3191 :a3191.
+:a3192 :a3192 :a3192.
+:a3193 :a3193 :a3193.
+:a3194 :a3194 :a3194.
+:a3195 :a3195 :a3195.
+:a3196 :a3196 :a3196.
+:a3197 :a3197 :a3197.
+:a3198 :a3198 :a3198.
+:a3199 :a3199 :a3199.
+:a3200 :a3200 :a3200.
+:a3201 :a3201 :a3201.
+:a3202 :a3202 :a3202.
+:a3203 :a3203 :a3203.
+:a3204 :a3204 :a3204.
+:a3205 :a3205 :a3205.
+:a3206 :a3206 :a3206.
+:a3207 :a3207 :a3207.
+:a3208 :a3208 :a3208.
+:a3209 :a3209 :a3209.
+:a3210 :a3210 :a3210.
+:a3211 :a3211 :a3211.
+:a3212 :a3212 :a3212.
+:a3213 :a3213 :a3213.
+:a3214 :a3214 :a3214.
+:a3215 :a3215 :a3215.
+:a3216 :a3216 :a3216.
+:a3217 :a3217 :a3217.
+:a3218 :a3218 :a3218.
+:a3219 :a3219 :a3219.
+:a3220 :a3220 :a3220.
+:a3221 :a3221 :a3221.
+:a3222 :a3222 :a3222.
+:a3223 :a3223 :a3223.
+:a3224 :a3224 :a3224.
+:a3225 :a3225 :a3225.
+:a3226 :a3226 :a3226.
+:a3227 :a3227 :a3227.
+:a3228 :a3228 :a3228.
+:a3229 :a3229 :a3229.
+:a3230 :a3230 :a3230.
+:a3231 :a3231 :a3231.
+:a3232 :a3232 :a3232.
+:a3233 :a3233 :a3233.
+:a3234 :a3234 :a3234.
+:a3235 :a3235 :a3235.
+:a3236 :a3236 :a3236.
+:a3237 :a3237 :a3237.
+:a3238 :a3238 :a3238.
+:a3239 :a3239 :a3239.
+:a3240 :a3240 :a3240.
+:a3241 :a3241 :a3241.
+:a3242 :a3242 :a3242.
+:a3243 :a3243 :a3243.
+:a3244 :a3244 :a3244.
+:a3245 :a3245 :a3245.
+:a3246 :a3246 :a3246.
+:a3247 :a3247 :a3247.
+:a3248 :a3248 :a3248.
+:a3249 :a3249 :a3249.
+:a3250 :a3250 :a3250.
+:a3251 :a3251 :a3251.
+:a3252 :a3252 :a3252.
+:a3253 :a3253 :a3253.
+:a3254 :a3254 :a3254.
+:a3255 :a3255 :a3255.
+:a3256 :a3256 :a3256.
+:a3257 :a3257 :a3257.
+:a3258 :a3258 :a3258.
+:a3259 :a3259 :a3259.
+:a3260 :a3260 :a3260.
+:a3261 :a3261 :a3261.
+:a3262 :a3262 :a3262.
+:a3263 :a3263 :a3263.
+:a3264 :a3264 :a3264.
+:a3265 :a3265 :a3265.
+:a3266 :a3266 :a3266.
+:a3267 :a3267 :a3267.
+:a3268 :a3268 :a3268.
+:a3269 :a3269 :a3269.
+:a3270 :a3270 :a3270.
+:a3271 :a3271 :a3271.
+:a3272 :a3272 :a3272.
+:a3273 :a3273 :a3273.
+:a3274 :a3274 :a3274.
+:a3275 :a3275 :a3275.
+:a3276 :a3276 :a3276.
+:a3277 :a3277 :a3277.
+:a3278 :a3278 :a3278.
+:a3279 :a3279 :a3279.
+:a3280 :a3280 :a3280.
+:a3281 :a3281 :a3281.
+:a3282 :a3282 :a3282.
+:a3283 :a3283 :a3283.
+:a3284 :a3284 :a3284.
+:a3285 :a3285 :a3285.
+:a3286 :a3286 :a3286.
+:a3287 :a3287 :a3287.
+:a3288 :a3288 :a3288.
+:a3289 :a3289 :a3289.
+:a3290 :a3290 :a3290.
+:a3291 :a3291 :a3291.
+:a3292 :a3292 :a3292.
+:a3293 :a3293 :a3293.
+:a3294 :a3294 :a3294.
+:a3295 :a3295 :a3295.
+:a3296 :a3296 :a3296.
+:a3297 :a3297 :a3297.
+:a3298 :a3298 :a3298.
+:a3299 :a3299 :a3299.
+:a3300 :a3300 :a3300.
+:a3301 :a3301 :a3301.
+:a3302 :a3302 :a3302.
+:a3303 :a3303 :a3303.
+:a3304 :a3304 :a3304.
+:a3305 :a3305 :a3305.
+:a3306 :a3306 :a3306.
+:a3307 :a3307 :a3307.
+:a3308 :a3308 :a3308.
+:a3309 :a3309 :a3309.
+:a3310 :a3310 :a3310.
+:a3311 :a3311 :a3311.
+:a3312 :a3312 :a3312.
+:a3313 :a3313 :a3313.
+:a3314 :a3314 :a3314.
+:a3315 :a3315 :a3315.
+:a3316 :a3316 :a3316.
+:a3317 :a3317 :a3317.
+:a3318 :a3318 :a3318.
+:a3319 :a3319 :a3319.
+:a3320 :a3320 :a3320.
+:a3321 :a3321 :a3321.
+:a3322 :a3322 :a3322.
+:a3323 :a3323 :a3323.
+:a3324 :a3324 :a3324.
+:a3325 :a3325 :a3325.
+:a3326 :a3326 :a3326.
+:a3327 :a3327 :a3327.
+:a3328 :a3328 :a3328.
+:a3329 :a3329 :a3329.
+:a3330 :a3330 :a3330.
+:a3331 :a3331 :a3331.
+:a3332 :a3332 :a3332.
+:a3333 :a3333 :a3333.
+:a3334 :a3334 :a3334.
+:a3335 :a3335 :a3335.
+:a3336 :a3336 :a3336.
+:a3337 :a3337 :a3337.
+:a3338 :a3338 :a3338.
+:a3339 :a3339 :a3339.
+:a3340 :a3340 :a3340.
+:a3341 :a3341 :a3341.
+:a3342 :a3342 :a3342.
+:a3343 :a3343 :a3343.
+:a3344 :a3344 :a3344.
+:a3345 :a3345 :a3345.
+:a3346 :a3346 :a3346.
+:a3347 :a3347 :a3347.
+:a3348 :a3348 :a3348.
+:a3349 :a3349 :a3349.
+:a3350 :a3350 :a3350.
+:a3351 :a3351 :a3351.
+:a3352 :a3352 :a3352.
+:a3353 :a3353 :a3353.
+:a3354 :a3354 :a3354.
+:a3355 :a3355 :a3355.
+:a3356 :a3356 :a3356.
+:a3357 :a3357 :a3357.
+:a3358 :a3358 :a3358.
+:a3359 :a3359 :a3359.
+:a3360 :a3360 :a3360.
+:a3361 :a3361 :a3361.
+:a3362 :a3362 :a3362.
+:a3363 :a3363 :a3363.
+:a3364 :a3364 :a3364.
+:a3365 :a3365 :a3365.
+:a3366 :a3366 :a3366.
+:a3367 :a3367 :a3367.
+:a3368 :a3368 :a3368.
+:a3369 :a3369 :a3369.
+:a3370 :a3370 :a3370.
+:a3371 :a3371 :a3371.
+:a3372 :a3372 :a3372.
+:a3373 :a3373 :a3373.
+:a3374 :a3374 :a3374.
+:a3375 :a3375 :a3375.
+:a3376 :a3376 :a3376.
+:a3377 :a3377 :a3377.
+:a3378 :a3378 :a3378.
+:a3379 :a3379 :a3379.
+:a3380 :a3380 :a3380.
+:a3381 :a3381 :a3381.
+:a3382 :a3382 :a3382.
+:a3383 :a3383 :a3383.
+:a3384 :a3384 :a3384.
+:a3385 :a3385 :a3385.
+:a3386 :a3386 :a3386.
+:a3387 :a3387 :a3387.
+:a3388 :a3388 :a3388.
+:a3389 :a3389 :a3389.
+:a3390 :a3390 :a3390.
+:a3391 :a3391 :a3391.
+:a3392 :a3392 :a3392.
+:a3393 :a3393 :a3393.
+:a3394 :a3394 :a3394.
+:a3395 :a3395 :a3395.
+:a3396 :a3396 :a3396.
+:a3397 :a3397 :a3397.
+:a3398 :a3398 :a3398.
+:a3399 :a3399 :a3399.
+:a3400 :a3400 :a3400.
+:a3401 :a3401 :a3401.
+:a3402 :a3402 :a3402.
+:a3403 :a3403 :a3403.
+:a3404 :a3404 :a3404.
+:a3405 :a3405 :a3405.
+:a3406 :a3406 :a3406.
+:a3407 :a3407 :a3407.
+:a3408 :a3408 :a3408.
+:a3409 :a3409 :a3409.
+:a3410 :a3410 :a3410.
+:a3411 :a3411 :a3411.
+:a3412 :a3412 :a3412.
+:a3413 :a3413 :a3413.
+:a3414 :a3414 :a3414.
+:a3415 :a3415 :a3415.
+:a3416 :a3416 :a3416.
+:a3417 :a3417 :a3417.
+:a3418 :a3418 :a3418.
+:a3419 :a3419 :a3419.
+:a3420 :a3420 :a3420.
+:a3421 :a3421 :a3421.
+:a3422 :a3422 :a3422.
+:a3423 :a3423 :a3423.
+:a3424 :a3424 :a3424.
+:a3425 :a3425 :a3425.
+:a3426 :a3426 :a3426.
+:a3427 :a3427 :a3427.
+:a3428 :a3428 :a3428.
+:a3429 :a3429 :a3429.
+:a3430 :a3430 :a3430.
+:a3431 :a3431 :a3431.
+:a3432 :a3432 :a3432.
+:a3433 :a3433 :a3433.
+:a3434 :a3434 :a3434.
+:a3435 :a3435 :a3435.
+:a3436 :a3436 :a3436.
+:a3437 :a3437 :a3437.
+:a3438 :a3438 :a3438.
+:a3439 :a3439 :a3439.
+:a3440 :a3440 :a3440.
+:a3441 :a3441 :a3441.
+:a3442 :a3442 :a3442.
+:a3443 :a3443 :a3443.
+:a3444 :a3444 :a3444.
+:a3445 :a3445 :a3445.
+:a3446 :a3446 :a3446.
+:a3447 :a3447 :a3447.
+:a3448 :a3448 :a3448.
+:a3449 :a3449 :a3449.
+:a3450 :a3450 :a3450.
+:a3451 :a3451 :a3451.
+:a3452 :a3452 :a3452.
+:a3453 :a3453 :a3453.
+:a3454 :a3454 :a3454.
+:a3455 :a3455 :a3455.
+:a3456 :a3456 :a3456.
+:a3457 :a3457 :a3457.
+:a3458 :a3458 :a3458.
+:a3459 :a3459 :a3459.
+:a3460 :a3460 :a3460.
+:a3461 :a3461 :a3461.
+:a3462 :a3462 :a3462.
+:a3463 :a3463 :a3463.
+:a3464 :a3464 :a3464.
+:a3465 :a3465 :a3465.
+:a3466 :a3466 :a3466.
+:a3467 :a3467 :a3467.
+:a3468 :a3468 :a3468.
+:a3469 :a3469 :a3469.
+:a3470 :a3470 :a3470.
+:a3471 :a3471 :a3471.
+:a3472 :a3472 :a3472.
+:a3473 :a3473 :a3473.
+:a3474 :a3474 :a3474.
+:a3475 :a3475 :a3475.
+:a3476 :a3476 :a3476.
+:a3477 :a3477 :a3477.
+:a3478 :a3478 :a3478.
+:a3479 :a3479 :a3479.
+:a3480 :a3480 :a3480.
+:a3481 :a3481 :a3481.
+:a3482 :a3482 :a3482.
+:a3483 :a3483 :a3483.
+:a3484 :a3484 :a3484.
+:a3485 :a3485 :a3485.
+:a3486 :a3486 :a3486.
+:a3487 :a3487 :a3487.
+:a3488 :a3488 :a3488.
+:a3489 :a3489 :a3489.
+:a3490 :a3490 :a3490.
+:a3491 :a3491 :a3491.
+:a3492 :a3492 :a3492.
+:a3493 :a3493 :a3493.
+:a3494 :a3494 :a3494.
+:a3495 :a3495 :a3495.
+:a3496 :a3496 :a3496.
+:a3497 :a3497 :a3497.
+:a3498 :a3498 :a3498.
+:a3499 :a3499 :a3499.
+:a3500 :a3500 :a3500.
+:a3501 :a3501 :a3501.
+:a3502 :a3502 :a3502.
+:a3503 :a3503 :a3503.
+:a3504 :a3504 :a3504.
+:a3505 :a3505 :a3505.
+:a3506 :a3506 :a3506.
+:a3507 :a3507 :a3507.
+:a3508 :a3508 :a3508.
+:a3509 :a3509 :a3509.
+:a3510 :a3510 :a3510.
+:a3511 :a3511 :a3511.
+:a3512 :a3512 :a3512.
+:a3513 :a3513 :a3513.
+:a3514 :a3514 :a3514.
+:a3515 :a3515 :a3515.
+:a3516 :a3516 :a3516.
+:a3517 :a3517 :a3517.
+:a3518 :a3518 :a3518.
+:a3519 :a3519 :a3519.
+:a3520 :a3520 :a3520.
+:a3521 :a3521 :a3521.
+:a3522 :a3522 :a3522.
+:a3523 :a3523 :a3523.
+:a3524 :a3524 :a3524.
+:a3525 :a3525 :a3525.
+:a3526 :a3526 :a3526.
+:a3527 :a3527 :a3527.
+:a3528 :a3528 :a3528.
+:a3529 :a3529 :a3529.
+:a3530 :a3530 :a3530.
+:a3531 :a3531 :a3531.
+:a3532 :a3532 :a3532.
+:a3533 :a3533 :a3533.
+:a3534 :a3534 :a3534.
+:a3535 :a3535 :a3535.
+:a3536 :a3536 :a3536.
+:a3537 :a3537 :a3537.
+:a3538 :a3538 :a3538.
+:a3539 :a3539 :a3539.
+:a3540 :a3540 :a3540.
+:a3541 :a3541 :a3541.
+:a3542 :a3542 :a3542.
+:a3543 :a3543 :a3543.
+:a3544 :a3544 :a3544.
+:a3545 :a3545 :a3545.
+:a3546 :a3546 :a3546.
+:a3547 :a3547 :a3547.
+:a3548 :a3548 :a3548.
+:a3549 :a3549 :a3549.
+:a3550 :a3550 :a3550.
+:a3551 :a3551 :a3551.
+:a3552 :a3552 :a3552.
+:a3553 :a3553 :a3553.
+:a3554 :a3554 :a3554.
+:a3555 :a3555 :a3555.
+:a3556 :a3556 :a3556.
+:a3557 :a3557 :a3557.
+:a3558 :a3558 :a3558.
+:a3559 :a3559 :a3559.
+:a3560 :a3560 :a3560.
+:a3561 :a3561 :a3561.
+:a3562 :a3562 :a3562.
+:a3563 :a3563 :a3563.
+:a3564 :a3564 :a3564.
+:a3565 :a3565 :a3565.
+:a3566 :a3566 :a3566.
+:a3567 :a3567 :a3567.
+:a3568 :a3568 :a3568.
+:a3569 :a3569 :a3569.
+:a3570 :a3570 :a3570.
+:a3571 :a3571 :a3571.
+:a3572 :a3572 :a3572.
+:a3573 :a3573 :a3573.
+:a3574 :a3574 :a3574.
+:a3575 :a3575 :a3575.
+:a3576 :a3576 :a3576.
+:a3577 :a3577 :a3577.
+:a3578 :a3578 :a3578.
+:a3579 :a3579 :a3579.
+:a3580 :a3580 :a3580.
+:a3581 :a3581 :a3581.
+:a3582 :a3582 :a3582.
+:a3583 :a3583 :a3583.
+:a3584 :a3584 :a3584.
+:a3585 :a3585 :a3585.
+:a3586 :a3586 :a3586.
+:a3587 :a3587 :a3587.
+:a3588 :a3588 :a3588.
+:a3589 :a3589 :a3589.
+:a3590 :a3590 :a3590.
+:a3591 :a3591 :a3591.
+:a3592 :a3592 :a3592.
+:a3593 :a3593 :a3593.
+:a3594 :a3594 :a3594.
+:a3595 :a3595 :a3595.
+:a3596 :a3596 :a3596.
+:a3597 :a3597 :a3597.
+:a3598 :a3598 :a3598.
+:a3599 :a3599 :a3599.
+:a3600 :a3600 :a3600.
+:a3601 :a3601 :a3601.
+:a3602 :a3602 :a3602.
+:a3603 :a3603 :a3603.
+:a3604 :a3604 :a3604.
+:a3605 :a3605 :a3605.
+:a3606 :a3606 :a3606.
+:a3607 :a3607 :a3607.
+:a3608 :a3608 :a3608.
+:a3609 :a3609 :a3609.
+:a3610 :a3610 :a3610.
+:a3611 :a3611 :a3611.
+:a3612 :a3612 :a3612.
+:a3613 :a3613 :a3613.
+:a3614 :a3614 :a3614.
+:a3615 :a3615 :a3615.
+:a3616 :a3616 :a3616.
+:a3617 :a3617 :a3617.
+:a3618 :a3618 :a3618.
+:a3619 :a3619 :a3619.
+:a3620 :a3620 :a3620.
+:a3621 :a3621 :a3621.
+:a3622 :a3622 :a3622.
+:a3623 :a3623 :a3623.
+:a3624 :a3624 :a3624.
+:a3625 :a3625 :a3625.
+:a3626 :a3626 :a3626.
+:a3627 :a3627 :a3627.
+:a3628 :a3628 :a3628.
+:a3629 :a3629 :a3629.
+:a3630 :a3630 :a3630.
+:a3631 :a3631 :a3631.
+:a3632 :a3632 :a3632.
+:a3633 :a3633 :a3633.
+:a3634 :a3634 :a3634.
+:a3635 :a3635 :a3635.
+:a3636 :a3636 :a3636.
+:a3637 :a3637 :a3637.
+:a3638 :a3638 :a3638.
+:a3639 :a3639 :a3639.
+:a3640 :a3640 :a3640.
+:a3641 :a3641 :a3641.
+:a3642 :a3642 :a3642.
+:a3643 :a3643 :a3643.
+:a3644 :a3644 :a3644.
+:a3645 :a3645 :a3645.
+:a3646 :a3646 :a3646.
+:a3647 :a3647 :a3647.
+:a3648 :a3648 :a3648.
+:a3649 :a3649 :a3649.
+:a3650 :a3650 :a3650.
+:a3651 :a3651 :a3651.
+:a3652 :a3652 :a3652.
+:a3653 :a3653 :a3653.
+:a3654 :a3654 :a3654.
+:a3655 :a3655 :a3655.
+:a3656 :a3656 :a3656.
+:a3657 :a3657 :a3657.
+:a3658 :a3658 :a3658.
+:a3659 :a3659 :a3659.
+:a3660 :a3660 :a3660.
+:a3661 :a3661 :a3661.
+:a3662 :a3662 :a3662.
+:a3663 :a3663 :a3663.
+:a3664 :a3664 :a3664.
+:a3665 :a3665 :a3665.
+:a3666 :a3666 :a3666.
+:a3667 :a3667 :a3667.
+:a3668 :a3668 :a3668.
+:a3669 :a3669 :a3669.
+:a3670 :a3670 :a3670.
+:a3671 :a3671 :a3671.
+:a3672 :a3672 :a3672.
+:a3673 :a3673 :a3673.
+:a3674 :a3674 :a3674.
+:a3675 :a3675 :a3675.
+:a3676 :a3676 :a3676.
+:a3677 :a3677 :a3677.
+:a3678 :a3678 :a3678.
+:a3679 :a3679 :a3679.
+:a3680 :a3680 :a3680.
+:a3681 :a3681 :a3681.
+:a3682 :a3682 :a3682.
+:a3683 :a3683 :a3683.
+:a3684 :a3684 :a3684.
+:a3685 :a3685 :a3685.
+:a3686 :a3686 :a3686.
+:a3687 :a3687 :a3687.
+:a3688 :a3688 :a3688.
+:a3689 :a3689 :a3689.
+:a3690 :a3690 :a3690.
+:a3691 :a3691 :a3691.
+:a3692 :a3692 :a3692.
+:a3693 :a3693 :a3693.
+:a3694 :a3694 :a3694.
+:a3695 :a3695 :a3695.
+:a3696 :a3696 :a3696.
+:a3697 :a3697 :a3697.
+:a3698 :a3698 :a3698.
+:a3699 :a3699 :a3699.
+:a3700 :a3700 :a3700.
+:a3701 :a3701 :a3701.
+:a3702 :a3702 :a3702.
+:a3703 :a3703 :a3703.
+:a3704 :a3704 :a3704.
+:a3705 :a3705 :a3705.
+:a3706 :a3706 :a3706.
+:a3707 :a3707 :a3707.
+:a3708 :a3708 :a3708.
+:a3709 :a3709 :a3709.
+:a3710 :a3710 :a3710.
+:a3711 :a3711 :a3711.
+:a3712 :a3712 :a3712.
+:a3713 :a3713 :a3713.
+:a3714 :a3714 :a3714.
+:a3715 :a3715 :a3715.
+:a3716 :a3716 :a3716.
+:a3717 :a3717 :a3717.
+:a3718 :a3718 :a3718.
+:a3719 :a3719 :a3719.
+:a3720 :a3720 :a3720.
+:a3721 :a3721 :a3721.
+:a3722 :a3722 :a3722.
+:a3723 :a3723 :a3723.
+:a3724 :a3724 :a3724.
+:a3725 :a3725 :a3725.
+:a3726 :a3726 :a3726.
+:a3727 :a3727 :a3727.
+:a3728 :a3728 :a3728.
+:a3729 :a3729 :a3729.
+:a3730 :a3730 :a3730.
+:a3731 :a3731 :a3731.
+:a3732 :a3732 :a3732.
+:a3733 :a3733 :a3733.
+:a3734 :a3734 :a3734.
+:a3735 :a3735 :a3735.
+:a3736 :a3736 :a3736.
+:a3737 :a3737 :a3737.
+:a3738 :a3738 :a3738.
+:a3739 :a3739 :a3739.
+:a3740 :a3740 :a3740.
+:a3741 :a3741 :a3741.
+:a3742 :a3742 :a3742.
+:a3743 :a3743 :a3743.
+:a3744 :a3744 :a3744.
+:a3745 :a3745 :a3745.
+:a3746 :a3746 :a3746.
+:a3747 :a3747 :a3747.
+:a3748 :a3748 :a3748.
+:a3749 :a3749 :a3749.
+:a3750 :a3750 :a3750.
+:a3751 :a3751 :a3751.
+:a3752 :a3752 :a3752.
+:a3753 :a3753 :a3753.
+:a3754 :a3754 :a3754.
+:a3755 :a3755 :a3755.
+:a3756 :a3756 :a3756.
+:a3757 :a3757 :a3757.
+:a3758 :a3758 :a3758.
+:a3759 :a3759 :a3759.
+:a3760 :a3760 :a3760.
+:a3761 :a3761 :a3761.
+:a3762 :a3762 :a3762.
+:a3763 :a3763 :a3763.
+:a3764 :a3764 :a3764.
+:a3765 :a3765 :a3765.
+:a3766 :a3766 :a3766.
+:a3767 :a3767 :a3767.
+:a3768 :a3768 :a3768.
+:a3769 :a3769 :a3769.
+:a3770 :a3770 :a3770.
+:a3771 :a3771 :a3771.
+:a3772 :a3772 :a3772.
+:a3773 :a3773 :a3773.
+:a3774 :a3774 :a3774.
+:a3775 :a3775 :a3775.
+:a3776 :a3776 :a3776.
+:a3777 :a3777 :a3777.
+:a3778 :a3778 :a3778.
+:a3779 :a3779 :a3779.
+:a3780 :a3780 :a3780.
+:a3781 :a3781 :a3781.
+:a3782 :a3782 :a3782.
+:a3783 :a3783 :a3783.
+:a3784 :a3784 :a3784.
+:a3785 :a3785 :a3785.
+:a3786 :a3786 :a3786.
+:a3787 :a3787 :a3787.
+:a3788 :a3788 :a3788.
+:a3789 :a3789 :a3789.
+:a3790 :a3790 :a3790.
+:a3791 :a3791 :a3791.
+:a3792 :a3792 :a3792.
+:a3793 :a3793 :a3793.
+:a3794 :a3794 :a3794.
+:a3795 :a3795 :a3795.
+:a3796 :a3796 :a3796.
+:a3797 :a3797 :a3797.
+:a3798 :a3798 :a3798.
+:a3799 :a3799 :a3799.
+:a3800 :a3800 :a3800.
+:a3801 :a3801 :a3801.
+:a3802 :a3802 :a3802.
+:a3803 :a3803 :a3803.
+:a3804 :a3804 :a3804.
+:a3805 :a3805 :a3805.
+:a3806 :a3806 :a3806.
+:a3807 :a3807 :a3807.
+:a3808 :a3808 :a3808.
+:a3809 :a3809 :a3809.
+:a3810 :a3810 :a3810.
+:a3811 :a3811 :a3811.
+:a3812 :a3812 :a3812.
+:a3813 :a3813 :a3813.
+:a3814 :a3814 :a3814.
+:a3815 :a3815 :a3815.
+:a3816 :a3816 :a3816.
+:a3817 :a3817 :a3817.
+:a3818 :a3818 :a3818.
+:a3819 :a3819 :a3819.
+:a3820 :a3820 :a3820.
+:a3821 :a3821 :a3821.
+:a3822 :a3822 :a3822.
+:a3823 :a3823 :a3823.
+:a3824 :a3824 :a3824.
+:a3825 :a3825 :a3825.
+:a3826 :a3826 :a3826.
+:a3827 :a3827 :a3827.
+:a3828 :a3828 :a3828.
+:a3829 :a3829 :a3829.
+:a3830 :a3830 :a3830.
+:a3831 :a3831 :a3831.
+:a3832 :a3832 :a3832.
+:a3833 :a3833 :a3833.
+:a3834 :a3834 :a3834.
+:a3835 :a3835 :a3835.
+:a3836 :a3836 :a3836.
+:a3837 :a3837 :a3837.
+:a3838 :a3838 :a3838.
+:a3839 :a3839 :a3839.
+:a3840 :a3840 :a3840.
+:a3841 :a3841 :a3841.
+:a3842 :a3842 :a3842.
+:a3843 :a3843 :a3843.
+:a3844 :a3844 :a3844.
+:a3845 :a3845 :a3845.
+:a3846 :a3846 :a3846.
+:a3847 :a3847 :a3847.
+:a3848 :a3848 :a3848.
+:a3849 :a3849 :a3849.
+:a3850 :a3850 :a3850.
+:a3851 :a3851 :a3851.
+:a3852 :a3852 :a3852.
+:a3853 :a3853 :a3853.
+:a3854 :a3854 :a3854.
+:a3855 :a3855 :a3855.
+:a3856 :a3856 :a3856.
+:a3857 :a3857 :a3857.
+:a3858 :a3858 :a3858.
+:a3859 :a3859 :a3859.
+:a3860 :a3860 :a3860.
+:a3861 :a3861 :a3861.
+:a3862 :a3862 :a3862.
+:a3863 :a3863 :a3863.
+:a3864 :a3864 :a3864.
+:a3865 :a3865 :a3865.
+:a3866 :a3866 :a3866.
+:a3867 :a3867 :a3867.
+:a3868 :a3868 :a3868.
+:a3869 :a3869 :a3869.
+:a3870 :a3870 :a3870.
+:a3871 :a3871 :a3871.
+:a3872 :a3872 :a3872.
+:a3873 :a3873 :a3873.
+:a3874 :a3874 :a3874.
+:a3875 :a3875 :a3875.
+:a3876 :a3876 :a3876.
+:a3877 :a3877 :a3877.
+:a3878 :a3878 :a3878.
+:a3879 :a3879 :a3879.
+:a3880 :a3880 :a3880.
+:a3881 :a3881 :a3881.
+:a3882 :a3882 :a3882.
+:a3883 :a3883 :a3883.
+:a3884 :a3884 :a3884.
+:a3885 :a3885 :a3885.
+:a3886 :a3886 :a3886.
+:a3887 :a3887 :a3887.
+:a3888 :a3888 :a3888.
+:a3889 :a3889 :a3889.
+:a3890 :a3890 :a3890.
+:a3891 :a3891 :a3891.
+:a3892 :a3892 :a3892.
+:a3893 :a3893 :a3893.
+:a3894 :a3894 :a3894.
+:a3895 :a3895 :a3895.
+:a3896 :a3896 :a3896.
+:a3897 :a3897 :a3897.
+:a3898 :a3898 :a3898.
+:a3899 :a3899 :a3899.
+:a3900 :a3900 :a3900.
+:a3901 :a3901 :a3901.
+:a3902 :a3902 :a3902.
+:a3903 :a3903 :a3903.
+:a3904 :a3904 :a3904.
+:a3905 :a3905 :a3905.
+:a3906 :a3906 :a3906.
+:a3907 :a3907 :a3907.
+:a3908 :a3908 :a3908.
+:a3909 :a3909 :a3909.
+:a3910 :a3910 :a3910.
+:a3911 :a3911 :a3911.
+:a3912 :a3912 :a3912.
+:a3913 :a3913 :a3913.
+:a3914 :a3914 :a3914.
+:a3915 :a3915 :a3915.
+:a3916 :a3916 :a3916.
+:a3917 :a3917 :a3917.
+:a3918 :a3918 :a3918.
+:a3919 :a3919 :a3919.
+:a3920 :a3920 :a3920.
+:a3921 :a3921 :a3921.
+:a3922 :a3922 :a3922.
+:a3923 :a3923 :a3923.
+:a3924 :a3924 :a3924.
+:a3925 :a3925 :a3925.
+:a3926 :a3926 :a3926.
+:a3927 :a3927 :a3927.
+:a3928 :a3928 :a3928.
+:a3929 :a3929 :a3929.
+:a3930 :a3930 :a3930.
+:a3931 :a3931 :a3931.
+:a3932 :a3932 :a3932.
+:a3933 :a3933 :a3933.
+:a3934 :a3934 :a3934.
+:a3935 :a3935 :a3935.
+:a3936 :a3936 :a3936.
+:a3937 :a3937 :a3937.
+:a3938 :a3938 :a3938.
+:a3939 :a3939 :a3939.
+:a3940 :a3940 :a3940.
+:a3941 :a3941 :a3941.
+:a3942 :a3942 :a3942.
+:a3943 :a3943 :a3943.
+:a3944 :a3944 :a3944.
+:a3945 :a3945 :a3945.
+:a3946 :a3946 :a3946.
+:a3947 :a3947 :a3947.
+:a3948 :a3948 :a3948.
+:a3949 :a3949 :a3949.
+:a3950 :a3950 :a3950.
+:a3951 :a3951 :a3951.
+:a3952 :a3952 :a3952.
+:a3953 :a3953 :a3953.
+:a3954 :a3954 :a3954.
+:a3955 :a3955 :a3955.
+:a3956 :a3956 :a3956.
+:a3957 :a3957 :a3957.
+:a3958 :a3958 :a3958.
+:a3959 :a3959 :a3959.
+:a3960 :a3960 :a3960.
+:a3961 :a3961 :a3961.
+:a3962 :a3962 :a3962.
+:a3963 :a3963 :a3963.
+:a3964 :a3964 :a3964.
+:a3965 :a3965 :a3965.
+:a3966 :a3966 :a3966.
+:a3967 :a3967 :a3967.
+:a3968 :a3968 :a3968.
+:a3969 :a3969 :a3969.
+:a3970 :a3970 :a3970.
+:a3971 :a3971 :a3971.
+:a3972 :a3972 :a3972.
+:a3973 :a3973 :a3973.
+:a3974 :a3974 :a3974.
+:a3975 :a3975 :a3975.
+:a3976 :a3976 :a3976.
+:a3977 :a3977 :a3977.
+:a3978 :a3978 :a3978.
+:a3979 :a3979 :a3979.
+:a3980 :a3980 :a3980.
+:a3981 :a3981 :a3981.
+:a3982 :a3982 :a3982.
+:a3983 :a3983 :a3983.
+:a3984 :a3984 :a3984.
+:a3985 :a3985 :a3985.
+:a3986 :a3986 :a3986.
+:a3987 :a3987 :a3987.
+:a3988 :a3988 :a3988.
+:a3989 :a3989 :a3989.
+:a3990 :a3990 :a3990.
+:a3991 :a3991 :a3991.
+:a3992 :a3992 :a3992.
+:a3993 :a3993 :a3993.
+:a3994 :a3994 :a3994.
+:a3995 :a3995 :a3995.
+:a3996 :a3996 :a3996.
+:a3997 :a3997 :a3997.
+:a3998 :a3998 :a3998.
+:a3999 :a3999 :a3999.
+:a4000 :a4000 :a4000.
+:a4001 :a4001 :a4001.
+:a4002 :a4002 :a4002.
+:a4003 :a4003 :a4003.
+:a4004 :a4004 :a4004.
+:a4005 :a4005 :a4005.
+:a4006 :a4006 :a4006.
+:a4007 :a4007 :a4007.
+:a4008 :a4008 :a4008.
+:a4009 :a4009 :a4009.
+:a4010 :a4010 :a4010.
+:a4011 :a4011 :a4011.
+:a4012 :a4012 :a4012.
+:a4013 :a4013 :a4013.
+:a4014 :a4014 :a4014.
+:a4015 :a4015 :a4015.
+:a4016 :a4016 :a4016.
+:a4017 :a4017 :a4017.
+:a4018 :a4018 :a4018.
+:a4019 :a4019 :a4019.
+:a4020 :a4020 :a4020.
+:a4021 :a4021 :a4021.
+:a4022 :a4022 :a4022.
+:a4023 :a4023 :a4023.
+:a4024 :a4024 :a4024.
+:a4025 :a4025 :a4025.
+:a4026 :a4026 :a4026.
+:a4027 :a4027 :a4027.
+:a4028 :a4028 :a4028.
+:a4029 :a4029 :a4029.
+:a4030 :a4030 :a4030.
+:a4031 :a4031 :a4031.
+:a4032 :a4032 :a4032.
+:a4033 :a4033 :a4033.
+:a4034 :a4034 :a4034.
+:a4035 :a4035 :a4035.
+:a4036 :a4036 :a4036.
+:a4037 :a4037 :a4037.
+:a4038 :a4038 :a4038.
+:a4039 :a4039 :a4039.
+:a4040 :a4040 :a4040.
+:a4041 :a4041 :a4041.
+:a4042 :a4042 :a4042.
+:a4043 :a4043 :a4043.
+:a4044 :a4044 :a4044.
+:a4045 :a4045 :a4045.
+:a4046 :a4046 :a4046.
+:a4047 :a4047 :a4047.
+:a4048 :a4048 :a4048.
+:a4049 :a4049 :a4049.
+:a4050 :a4050 :a4050.
+:a4051 :a4051 :a4051.
+:a4052 :a4052 :a4052.
+:a4053 :a4053 :a4053.
+:a4054 :a4054 :a4054.
+:a4055 :a4055 :a4055.
+:a4056 :a4056 :a4056.
+:a4057 :a4057 :a4057.
+:a4058 :a4058 :a4058.
+:a4059 :a4059 :a4059.
+:a4060 :a4060 :a4060.
+:a4061 :a4061 :a4061.
+:a4062 :a4062 :a4062.
+:a4063 :a4063 :a4063.
+:a4064 :a4064 :a4064.
+:a4065 :a4065 :a4065.
+:a4066 :a4066 :a4066.
+:a4067 :a4067 :a4067.
+:a4068 :a4068 :a4068.
+:a4069 :a4069 :a4069.
+:a4070 :a4070 :a4070.
+:a4071 :a4071 :a4071.
+:a4072 :a4072 :a4072.
+:a4073 :a4073 :a4073.
+:a4074 :a4074 :a4074.
+:a4075 :a4075 :a4075.
+:a4076 :a4076 :a4076.
+:a4077 :a4077 :a4077.
+:a4078 :a4078 :a4078.
+:a4079 :a4079 :a4079.
+:a4080 :a4080 :a4080.
+:a4081 :a4081 :a4081.
+:a4082 :a4082 :a4082.
+:a4083 :a4083 :a4083.
+:a4084 :a4084 :a4084.
+:a4085 :a4085 :a4085.
+:a4086 :a4086 :a4086.
+:a4087 :a4087 :a4087.
+:a4088 :a4088 :a4088.
+:a4089 :a4089 :a4089.
+:a4090 :a4090 :a4090.
+:a4091 :a4091 :a4091.
+:a4092 :a4092 :a4092.
+:a4093 :a4093 :a4093.
+:a4094 :a4094 :a4094.
+:a4095 :a4095 :a4095.
+:a4096 :a4096 :a4096.
+:a4097 :a4097 :a4097.
+:a4098 :a4098 :a4098.
+:a4099 :a4099 :a4099.
+:a4100 :a4100 :a4100.
+:a4101 :a4101 :a4101.
+:a4102 :a4102 :a4102.
+:a4103 :a4103 :a4103.
+:a4104 :a4104 :a4104.
+:a4105 :a4105 :a4105.
+:a4106 :a4106 :a4106.
+:a4107 :a4107 :a4107.
+:a4108 :a4108 :a4108.
+:a4109 :a4109 :a4109.
+:a4110 :a4110 :a4110.
+:a4111 :a4111 :a4111.
+:a4112 :a4112 :a4112.
+:a4113 :a4113 :a4113.
+:a4114 :a4114 :a4114.
+:a4115 :a4115 :a4115.
+:a4116 :a4116 :a4116.
+:a4117 :a4117 :a4117.
+:a4118 :a4118 :a4118.
+:a4119 :a4119 :a4119.
+:a4120 :a4120 :a4120.
+:a4121 :a4121 :a4121.
+:a4122 :a4122 :a4122.
+:a4123 :a4123 :a4123.
+:a4124 :a4124 :a4124.
+:a4125 :a4125 :a4125.
+:a4126 :a4126 :a4126.
+:a4127 :a4127 :a4127.
+:a4128 :a4128 :a4128.
+:a4129 :a4129 :a4129.
+:a4130 :a4130 :a4130.
+:a4131 :a4131 :a4131.
+:a4132 :a4132 :a4132.
+:a4133 :a4133 :a4133.
+:a4134 :a4134 :a4134.
+:a4135 :a4135 :a4135.
+:a4136 :a4136 :a4136.
+:a4137 :a4137 :a4137.
+:a4138 :a4138 :a4138.
+:a4139 :a4139 :a4139.
+:a4140 :a4140 :a4140.
+:a4141 :a4141 :a4141.
+:a4142 :a4142 :a4142.
+:a4143 :a4143 :a4143.
+:a4144 :a4144 :a4144.
+:a4145 :a4145 :a4145.
+:a4146 :a4146 :a4146.
+:a4147 :a4147 :a4147.
+:a4148 :a4148 :a4148.
+:a4149 :a4149 :a4149.
+:a4150 :a4150 :a4150.
+:a4151 :a4151 :a4151.
+:a4152 :a4152 :a4152.
+:a4153 :a4153 :a4153.
+:a4154 :a4154 :a4154.
+:a4155 :a4155 :a4155.
+:a4156 :a4156 :a4156.
+:a4157 :a4157 :a4157.
+:a4158 :a4158 :a4158.
+:a4159 :a4159 :a4159.
+:a4160 :a4160 :a4160.
+:a4161 :a4161 :a4161.
+:a4162 :a4162 :a4162.
+:a4163 :a4163 :a4163.
+:a4164 :a4164 :a4164.
+:a4165 :a4165 :a4165.
+:a4166 :a4166 :a4166.
+:a4167 :a4167 :a4167.
+:a4168 :a4168 :a4168.
+:a4169 :a4169 :a4169.
+:a4170 :a4170 :a4170.
+:a4171 :a4171 :a4171.
+:a4172 :a4172 :a4172.
+:a4173 :a4173 :a4173.
+:a4174 :a4174 :a4174.
+:a4175 :a4175 :a4175.
+:a4176 :a4176 :a4176.
+:a4177 :a4177 :a4177.
+:a4178 :a4178 :a4178.
+:a4179 :a4179 :a4179.
+:a4180 :a4180 :a4180.
+:a4181 :a4181 :a4181.
+:a4182 :a4182 :a4182.
+:a4183 :a4183 :a4183.
+:a4184 :a4184 :a4184.
+:a4185 :a4185 :a4185.
+:a4186 :a4186 :a4186.
+:a4187 :a4187 :a4187.
+:a4188 :a4188 :a4188.
+:a4189 :a4189 :a4189.
+:a4190 :a4190 :a4190.
+:a4191 :a4191 :a4191.
+:a4192 :a4192 :a4192.
+:a4193 :a4193 :a4193.
+:a4194 :a4194 :a4194.
+:a4195 :a4195 :a4195.
+:a4196 :a4196 :a4196.
+:a4197 :a4197 :a4197.
+:a4198 :a4198 :a4198.
+:a4199 :a4199 :a4199.
+:a4200 :a4200 :a4200.
+:a4201 :a4201 :a4201.
+:a4202 :a4202 :a4202.
+:a4203 :a4203 :a4203.
+:a4204 :a4204 :a4204.
+:a4205 :a4205 :a4205.
+:a4206 :a4206 :a4206.
+:a4207 :a4207 :a4207.
+:a4208 :a4208 :a4208.
+:a4209 :a4209 :a4209.
+:a4210 :a4210 :a4210.
+:a4211 :a4211 :a4211.
+:a4212 :a4212 :a4212.
+:a4213 :a4213 :a4213.
+:a4214 :a4214 :a4214.
+:a4215 :a4215 :a4215.
+:a4216 :a4216 :a4216.
+:a4217 :a4217 :a4217.
+:a4218 :a4218 :a4218.
+:a4219 :a4219 :a4219.
+:a4220 :a4220 :a4220.
+:a4221 :a4221 :a4221.
+:a4222 :a4222 :a4222.
+:a4223 :a4223 :a4223.
+:a4224 :a4224 :a4224.
+:a4225 :a4225 :a4225.
+:a4226 :a4226 :a4226.
+:a4227 :a4227 :a4227.
+:a4228 :a4228 :a4228.
+:a4229 :a4229 :a4229.
+:a4230 :a4230 :a4230.
+:a4231 :a4231 :a4231.
+:a4232 :a4232 :a4232.
+:a4233 :a4233 :a4233.
+:a4234 :a4234 :a4234.
+:a4235 :a4235 :a4235.
+:a4236 :a4236 :a4236.
+:a4237 :a4237 :a4237.
+:a4238 :a4238 :a4238.
+:a4239 :a4239 :a4239.
+:a4240 :a4240 :a4240.
+:a4241 :a4241 :a4241.
+:a4242 :a4242 :a4242.
+:a4243 :a4243 :a4243.
+:a4244 :a4244 :a4244.
+:a4245 :a4245 :a4245.
+:a4246 :a4246 :a4246.
+:a4247 :a4247 :a4247.
+:a4248 :a4248 :a4248.
+:a4249 :a4249 :a4249.
+:a4250 :a4250 :a4250.
+:a4251 :a4251 :a4251.
+:a4252 :a4252 :a4252.
+:a4253 :a4253 :a4253.
+:a4254 :a4254 :a4254.
+:a4255 :a4255 :a4255.
+:a4256 :a4256 :a4256.
+:a4257 :a4257 :a4257.
+:a4258 :a4258 :a4258.
+:a4259 :a4259 :a4259.
+:a4260 :a4260 :a4260.
+:a4261 :a4261 :a4261.
+:a4262 :a4262 :a4262.
+:a4263 :a4263 :a4263.
+:a4264 :a4264 :a4264.
+:a4265 :a4265 :a4265.
+:a4266 :a4266 :a4266.
+:a4267 :a4267 :a4267.
+:a4268 :a4268 :a4268.
+:a4269 :a4269 :a4269.
+:a4270 :a4270 :a4270.
+:a4271 :a4271 :a4271.
+:a4272 :a4272 :a4272.
+:a4273 :a4273 :a4273.
+:a4274 :a4274 :a4274.
+:a4275 :a4275 :a4275.
+:a4276 :a4276 :a4276.
+:a4277 :a4277 :a4277.
+:a4278 :a4278 :a4278.
+:a4279 :a4279 :a4279.
+:a4280 :a4280 :a4280.
+:a4281 :a4281 :a4281.
+:a4282 :a4282 :a4282.
+:a4283 :a4283 :a4283.
+:a4284 :a4284 :a4284.
+:a4285 :a4285 :a4285.
+:a4286 :a4286 :a4286.
+:a4287 :a4287 :a4287.
+:a4288 :a4288 :a4288.
+:a4289 :a4289 :a4289.
+:a4290 :a4290 :a4290.
+:a4291 :a4291 :a4291.
+:a4292 :a4292 :a4292.
+:a4293 :a4293 :a4293.
+:a4294 :a4294 :a4294.
+:a4295 :a4295 :a4295.
+:a4296 :a4296 :a4296.
+:a4297 :a4297 :a4297.
+:a4298 :a4298 :a4298.
+:a4299 :a4299 :a4299.
+:a4300 :a4300 :a4300.
+:a4301 :a4301 :a4301.
+:a4302 :a4302 :a4302.
+:a4303 :a4303 :a4303.
+:a4304 :a4304 :a4304.
+:a4305 :a4305 :a4305.
+:a4306 :a4306 :a4306.
+:a4307 :a4307 :a4307.
+:a4308 :a4308 :a4308.
+:a4309 :a4309 :a4309.
+:a4310 :a4310 :a4310.
+:a4311 :a4311 :a4311.
+:a4312 :a4312 :a4312.
+:a4313 :a4313 :a4313.
+:a4314 :a4314 :a4314.
+:a4315 :a4315 :a4315.
+:a4316 :a4316 :a4316.
+:a4317 :a4317 :a4317.
+:a4318 :a4318 :a4318.
+:a4319 :a4319 :a4319.
+:a4320 :a4320 :a4320.
+:a4321 :a4321 :a4321.
+:a4322 :a4322 :a4322.
+:a4323 :a4323 :a4323.
+:a4324 :a4324 :a4324.
+:a4325 :a4325 :a4325.
+:a4326 :a4326 :a4326.
+:a4327 :a4327 :a4327.
+:a4328 :a4328 :a4328.
+:a4329 :a4329 :a4329.
+:a4330 :a4330 :a4330.
+:a4331 :a4331 :a4331.
+:a4332 :a4332 :a4332.
+:a4333 :a4333 :a4333.
+:a4334 :a4334 :a4334.
+:a4335 :a4335 :a4335.
+:a4336 :a4336 :a4336.
+:a4337 :a4337 :a4337.
+:a4338 :a4338 :a4338.
+:a4339 :a4339 :a4339.
+:a4340 :a4340 :a4340.
+:a4341 :a4341 :a4341.
+:a4342 :a4342 :a4342.
+:a4343 :a4343 :a4343.
+:a4344 :a4344 :a4344.
+:a4345 :a4345 :a4345.
+:a4346 :a4346 :a4346.
+:a4347 :a4347 :a4347.
+:a4348 :a4348 :a4348.
+:a4349 :a4349 :a4349.
+:a4350 :a4350 :a4350.
+:a4351 :a4351 :a4351.
+:a4352 :a4352 :a4352.
+:a4353 :a4353 :a4353.
+:a4354 :a4354 :a4354.
+:a4355 :a4355 :a4355.
+:a4356 :a4356 :a4356.
+:a4357 :a4357 :a4357.
+:a4358 :a4358 :a4358.
+:a4359 :a4359 :a4359.
+:a4360 :a4360 :a4360.
+:a4361 :a4361 :a4361.
+:a4362 :a4362 :a4362.
+:a4363 :a4363 :a4363.
+:a4364 :a4364 :a4364.
+:a4365 :a4365 :a4365.
+:a4366 :a4366 :a4366.
+:a4367 :a4367 :a4367.
+:a4368 :a4368 :a4368.
+:a4369 :a4369 :a4369.
+:a4370 :a4370 :a4370.
+:a4371 :a4371 :a4371.
+:a4372 :a4372 :a4372.
+:a4373 :a4373 :a4373.
+:a4374 :a4374 :a4374.
+:a4375 :a4375 :a4375.
+:a4376 :a4376 :a4376.
+:a4377 :a4377 :a4377.
+:a4378 :a4378 :a4378.
+:a4379 :a4379 :a4379.
+:a4380 :a4380 :a4380.
+:a4381 :a4381 :a4381.
+:a4382 :a4382 :a4382.
+:a4383 :a4383 :a4383.
+:a4384 :a4384 :a4384.
+:a4385 :a4385 :a4385.
+:a4386 :a4386 :a4386.
+:a4387 :a4387 :a4387.
+:a4388 :a4388 :a4388.
+:a4389 :a4389 :a4389.
+:a4390 :a4390 :a4390.
+:a4391 :a4391 :a4391.
+:a4392 :a4392 :a4392.
+:a4393 :a4393 :a4393.
+:a4394 :a4394 :a4394.
+:a4395 :a4395 :a4395.
+:a4396 :a4396 :a4396.
+:a4397 :a4397 :a4397.
+:a4398 :a4398 :a4398.
+:a4399 :a4399 :a4399.
+:a4400 :a4400 :a4400.
+:a4401 :a4401 :a4401.
+:a4402 :a4402 :a4402.
+:a4403 :a4403 :a4403.
+:a4404 :a4404 :a4404.
+:a4405 :a4405 :a4405.
+:a4406 :a4406 :a4406.
+:a4407 :a4407 :a4407.
+:a4408 :a4408 :a4408.
+:a4409 :a4409 :a4409.
+:a4410 :a4410 :a4410.
+:a4411 :a4411 :a4411.
+:a4412 :a4412 :a4412.
+:a4413 :a4413 :a4413.
+:a4414 :a4414 :a4414.
+:a4415 :a4415 :a4415.
+:a4416 :a4416 :a4416.
+:a4417 :a4417 :a4417.
+:a4418 :a4418 :a4418.
+:a4419 :a4419 :a4419.
+:a4420 :a4420 :a4420.
+:a4421 :a4421 :a4421.
+:a4422 :a4422 :a4422.
+:a4423 :a4423 :a4423.
+:a4424 :a4424 :a4424.
+:a4425 :a4425 :a4425.
+:a4426 :a4426 :a4426.
+:a4427 :a4427 :a4427.
+:a4428 :a4428 :a4428.
+:a4429 :a4429 :a4429.
+:a4430 :a4430 :a4430.
+:a4431 :a4431 :a4431.
+:a4432 :a4432 :a4432.
+:a4433 :a4433 :a4433.
+:a4434 :a4434 :a4434.
+:a4435 :a4435 :a4435.
+:a4436 :a4436 :a4436.
+:a4437 :a4437 :a4437.
+:a4438 :a4438 :a4438.
+:a4439 :a4439 :a4439.
+:a4440 :a4440 :a4440.
+:a4441 :a4441 :a4441.
+:a4442 :a4442 :a4442.
+:a4443 :a4443 :a4443.
+:a4444 :a4444 :a4444.
+:a4445 :a4445 :a4445.
+:a4446 :a4446 :a4446.
+:a4447 :a4447 :a4447.
+:a4448 :a4448 :a4448.
+:a4449 :a4449 :a4449.
+:a4450 :a4450 :a4450.
+:a4451 :a4451 :a4451.
+:a4452 :a4452 :a4452.
+:a4453 :a4453 :a4453.
+:a4454 :a4454 :a4454.
+:a4455 :a4455 :a4455.
+:a4456 :a4456 :a4456.
+:a4457 :a4457 :a4457.
+:a4458 :a4458 :a4458.
+:a4459 :a4459 :a4459.
+:a4460 :a4460 :a4460.
+:a4461 :a4461 :a4461.
+:a4462 :a4462 :a4462.
+:a4463 :a4463 :a4463.
+:a4464 :a4464 :a4464.
+:a4465 :a4465 :a4465.
+:a4466 :a4466 :a4466.
+:a4467 :a4467 :a4467.
+:a4468 :a4468 :a4468.
+:a4469 :a4469 :a4469.
+:a4470 :a4470 :a4470.
+:a4471 :a4471 :a4471.
+:a4472 :a4472 :a4472.
+:a4473 :a4473 :a4473.
+:a4474 :a4474 :a4474.
+:a4475 :a4475 :a4475.
+:a4476 :a4476 :a4476.
+:a4477 :a4477 :a4477.
+:a4478 :a4478 :a4478.
+:a4479 :a4479 :a4479.
+:a4480 :a4480 :a4480.
+:a4481 :a4481 :a4481.
+:a4482 :a4482 :a4482.
+:a4483 :a4483 :a4483.
+:a4484 :a4484 :a4484.
+:a4485 :a4485 :a4485.
+:a4486 :a4486 :a4486.
+:a4487 :a4487 :a4487.
+:a4488 :a4488 :a4488.
+:a4489 :a4489 :a4489.
+:a4490 :a4490 :a4490.
+:a4491 :a4491 :a4491.
+:a4492 :a4492 :a4492.
+:a4493 :a4493 :a4493.
+:a4494 :a4494 :a4494.
+:a4495 :a4495 :a4495.
+:a4496 :a4496 :a4496.
+:a4497 :a4497 :a4497.
+:a4498 :a4498 :a4498.
+:a4499 :a4499 :a4499.
+:a4500 :a4500 :a4500.
+:a4501 :a4501 :a4501.
+:a4502 :a4502 :a4502.
+:a4503 :a4503 :a4503.
+:a4504 :a4504 :a4504.
+:a4505 :a4505 :a4505.
+:a4506 :a4506 :a4506.
+:a4507 :a4507 :a4507.
+:a4508 :a4508 :a4508.
+:a4509 :a4509 :a4509.
+:a4510 :a4510 :a4510.
+:a4511 :a4511 :a4511.
+:a4512 :a4512 :a4512.
+:a4513 :a4513 :a4513.
+:a4514 :a4514 :a4514.
+:a4515 :a4515 :a4515.
+:a4516 :a4516 :a4516.
+:a4517 :a4517 :a4517.
+:a4518 :a4518 :a4518.
+:a4519 :a4519 :a4519.
+:a4520 :a4520 :a4520.
+:a4521 :a4521 :a4521.
+:a4522 :a4522 :a4522.
+:a4523 :a4523 :a4523.
+:a4524 :a4524 :a4524.
+:a4525 :a4525 :a4525.
+:a4526 :a4526 :a4526.
+:a4527 :a4527 :a4527.
+:a4528 :a4528 :a4528.
+:a4529 :a4529 :a4529.
+:a4530 :a4530 :a4530.
+:a4531 :a4531 :a4531.
+:a4532 :a4532 :a4532.
+:a4533 :a4533 :a4533.
+:a4534 :a4534 :a4534.
+:a4535 :a4535 :a4535.
+:a4536 :a4536 :a4536.
+:a4537 :a4537 :a4537.
+:a4538 :a4538 :a4538.
+:a4539 :a4539 :a4539.
+:a4540 :a4540 :a4540.
+:a4541 :a4541 :a4541.
+:a4542 :a4542 :a4542.
+:a4543 :a4543 :a4543.
+:a4544 :a4544 :a4544.
+:a4545 :a4545 :a4545.
+:a4546 :a4546 :a4546.
+:a4547 :a4547 :a4547.
+:a4548 :a4548 :a4548.
+:a4549 :a4549 :a4549.
+:a4550 :a4550 :a4550.
+:a4551 :a4551 :a4551.
+:a4552 :a4552 :a4552.
+:a4553 :a4553 :a4553.
+:a4554 :a4554 :a4554.
+:a4555 :a4555 :a4555.
+:a4556 :a4556 :a4556.
+:a4557 :a4557 :a4557.
+:a4558 :a4558 :a4558.
+:a4559 :a4559 :a4559.
+:a4560 :a4560 :a4560.
+:a4561 :a4561 :a4561.
+:a4562 :a4562 :a4562.
+:a4563 :a4563 :a4563.
+:a4564 :a4564 :a4564.
+:a4565 :a4565 :a4565.
+:a4566 :a4566 :a4566.
+:a4567 :a4567 :a4567.
+:a4568 :a4568 :a4568.
+:a4569 :a4569 :a4569.
+:a4570 :a4570 :a4570.
+:a4571 :a4571 :a4571.
+:a4572 :a4572 :a4572.
+:a4573 :a4573 :a4573.
+:a4574 :a4574 :a4574.
+:a4575 :a4575 :a4575.
+:a4576 :a4576 :a4576.
+:a4577 :a4577 :a4577.
+:a4578 :a4578 :a4578.
+:a4579 :a4579 :a4579.
+:a4580 :a4580 :a4580.
+:a4581 :a4581 :a4581.
+:a4582 :a4582 :a4582.
+:a4583 :a4583 :a4583.
+:a4584 :a4584 :a4584.
+:a4585 :a4585 :a4585.
+:a4586 :a4586 :a4586.
+:a4587 :a4587 :a4587.
+:a4588 :a4588 :a4588.
+:a4589 :a4589 :a4589.
+:a4590 :a4590 :a4590.
+:a4591 :a4591 :a4591.
+:a4592 :a4592 :a4592.
+:a4593 :a4593 :a4593.
+:a4594 :a4594 :a4594.
+:a4595 :a4595 :a4595.
+:a4596 :a4596 :a4596.
+:a4597 :a4597 :a4597.
+:a4598 :a4598 :a4598.
+:a4599 :a4599 :a4599.
+:a4600 :a4600 :a4600.
+:a4601 :a4601 :a4601.
+:a4602 :a4602 :a4602.
+:a4603 :a4603 :a4603.
+:a4604 :a4604 :a4604.
+:a4605 :a4605 :a4605.
+:a4606 :a4606 :a4606.
+:a4607 :a4607 :a4607.
+:a4608 :a4608 :a4608.
+:a4609 :a4609 :a4609.
+:a4610 :a4610 :a4610.
+:a4611 :a4611 :a4611.
+:a4612 :a4612 :a4612.
+:a4613 :a4613 :a4613.
+:a4614 :a4614 :a4614.
+:a4615 :a4615 :a4615.
+:a4616 :a4616 :a4616.
+:a4617 :a4617 :a4617.
+:a4618 :a4618 :a4618.
+:a4619 :a4619 :a4619.
+:a4620 :a4620 :a4620.
+:a4621 :a4621 :a4621.
+:a4622 :a4622 :a4622.
+:a4623 :a4623 :a4623.
+:a4624 :a4624 :a4624.
+:a4625 :a4625 :a4625.
+:a4626 :a4626 :a4626.
+:a4627 :a4627 :a4627.
+:a4628 :a4628 :a4628.
+:a4629 :a4629 :a4629.
+:a4630 :a4630 :a4630.
+:a4631 :a4631 :a4631.
+:a4632 :a4632 :a4632.
+:a4633 :a4633 :a4633.
+:a4634 :a4634 :a4634.
+:a4635 :a4635 :a4635.
+:a4636 :a4636 :a4636.
+:a4637 :a4637 :a4637.
+:a4638 :a4638 :a4638.
+:a4639 :a4639 :a4639.
+:a4640 :a4640 :a4640.
+:a4641 :a4641 :a4641.
+:a4642 :a4642 :a4642.
+:a4643 :a4643 :a4643.
+:a4644 :a4644 :a4644.
+:a4645 :a4645 :a4645.
+:a4646 :a4646 :a4646.
+:a4647 :a4647 :a4647.
+:a4648 :a4648 :a4648.
+:a4649 :a4649 :a4649.
+:a4650 :a4650 :a4650.
+:a4651 :a4651 :a4651.
+:a4652 :a4652 :a4652.
+:a4653 :a4653 :a4653.
+:a4654 :a4654 :a4654.
+:a4655 :a4655 :a4655.
+:a4656 :a4656 :a4656.
+:a4657 :a4657 :a4657.
+:a4658 :a4658 :a4658.
+:a4659 :a4659 :a4659.
+:a4660 :a4660 :a4660.
+:a4661 :a4661 :a4661.
+:a4662 :a4662 :a4662.
+:a4663 :a4663 :a4663.
+:a4664 :a4664 :a4664.
+:a4665 :a4665 :a4665.
+:a4666 :a4666 :a4666.
+:a4667 :a4667 :a4667.
+:a4668 :a4668 :a4668.
+:a4669 :a4669 :a4669.
+:a4670 :a4670 :a4670.
+:a4671 :a4671 :a4671.
+:a4672 :a4672 :a4672.
+:a4673 :a4673 :a4673.
+:a4674 :a4674 :a4674.
+:a4675 :a4675 :a4675.
+:a4676 :a4676 :a4676.
+:a4677 :a4677 :a4677.
+:a4678 :a4678 :a4678.
+:a4679 :a4679 :a4679.
+:a4680 :a4680 :a4680.
+:a4681 :a4681 :a4681.
+:a4682 :a4682 :a4682.
+:a4683 :a4683 :a4683.
+:a4684 :a4684 :a4684.
+:a4685 :a4685 :a4685.
+:a4686 :a4686 :a4686.
+:a4687 :a4687 :a4687.
+:a4688 :a4688 :a4688.
+:a4689 :a4689 :a4689.
+:a4690 :a4690 :a4690.
+:a4691 :a4691 :a4691.
+:a4692 :a4692 :a4692.
+:a4693 :a4693 :a4693.
+:a4694 :a4694 :a4694.
+:a4695 :a4695 :a4695.
+:a4696 :a4696 :a4696.
+:a4697 :a4697 :a4697.
+:a4698 :a4698 :a4698.
+:a4699 :a4699 :a4699.
+:a4700 :a4700 :a4700.
+:a4701 :a4701 :a4701.
+:a4702 :a4702 :a4702.
+:a4703 :a4703 :a4703.
+:a4704 :a4704 :a4704.
+:a4705 :a4705 :a4705.
+:a4706 :a4706 :a4706.
+:a4707 :a4707 :a4707.
+:a4708 :a4708 :a4708.
+:a4709 :a4709 :a4709.
+:a4710 :a4710 :a4710.
+:a4711 :a4711 :a4711.
+:a4712 :a4712 :a4712.
+:a4713 :a4713 :a4713.
+:a4714 :a4714 :a4714.
+:a4715 :a4715 :a4715.
+:a4716 :a4716 :a4716.
+:a4717 :a4717 :a4717.
+:a4718 :a4718 :a4718.
+:a4719 :a4719 :a4719.
+:a4720 :a4720 :a4720.
+:a4721 :a4721 :a4721.
+:a4722 :a4722 :a4722.
+:a4723 :a4723 :a4723.
+:a4724 :a4724 :a4724.
+:a4725 :a4725 :a4725.
+:a4726 :a4726 :a4726.
+:a4727 :a4727 :a4727.
+:a4728 :a4728 :a4728.
+:a4729 :a4729 :a4729.
+:a4730 :a4730 :a4730.
+:a4731 :a4731 :a4731.
+:a4732 :a4732 :a4732.
+:a4733 :a4733 :a4733.
+:a4734 :a4734 :a4734.
+:a4735 :a4735 :a4735.
+:a4736 :a4736 :a4736.
+:a4737 :a4737 :a4737.
+:a4738 :a4738 :a4738.
+:a4739 :a4739 :a4739.
+:a4740 :a4740 :a4740.
+:a4741 :a4741 :a4741.
+:a4742 :a4742 :a4742.
+:a4743 :a4743 :a4743.
+:a4744 :a4744 :a4744.
+:a4745 :a4745 :a4745.
+:a4746 :a4746 :a4746.
+:a4747 :a4747 :a4747.
+:a4748 :a4748 :a4748.
+:a4749 :a4749 :a4749.
+:a4750 :a4750 :a4750.
+:a4751 :a4751 :a4751.
+:a4752 :a4752 :a4752.
+:a4753 :a4753 :a4753.
+:a4754 :a4754 :a4754.
+:a4755 :a4755 :a4755.
+:a4756 :a4756 :a4756.
+:a4757 :a4757 :a4757.
+:a4758 :a4758 :a4758.
+:a4759 :a4759 :a4759.
+:a4760 :a4760 :a4760.
+:a4761 :a4761 :a4761.
+:a4762 :a4762 :a4762.
+:a4763 :a4763 :a4763.
+:a4764 :a4764 :a4764.
+:a4765 :a4765 :a4765.
+:a4766 :a4766 :a4766.
+:a4767 :a4767 :a4767.
+:a4768 :a4768 :a4768.
+:a4769 :a4769 :a4769.
+:a4770 :a4770 :a4770.
+:a4771 :a4771 :a4771.
+:a4772 :a4772 :a4772.
+:a4773 :a4773 :a4773.
+:a4774 :a4774 :a4774.
+:a4775 :a4775 :a4775.
+:a4776 :a4776 :a4776.
+:a4777 :a4777 :a4777.
+:a4778 :a4778 :a4778.
+:a4779 :a4779 :a4779.
+:a4780 :a4780 :a4780.
+:a4781 :a4781 :a4781.
+:a4782 :a4782 :a4782.
+:a4783 :a4783 :a4783.
+:a4784 :a4784 :a4784.
+:a4785 :a4785 :a4785.
+:a4786 :a4786 :a4786.
+:a4787 :a4787 :a4787.
+:a4788 :a4788 :a4788.
+:a4789 :a4789 :a4789.
+:a4790 :a4790 :a4790.
+:a4791 :a4791 :a4791.
+:a4792 :a4792 :a4792.
+:a4793 :a4793 :a4793.
+:a4794 :a4794 :a4794.
+:a4795 :a4795 :a4795.
+:a4796 :a4796 :a4796.
+:a4797 :a4797 :a4797.
+:a4798 :a4798 :a4798.
+:a4799 :a4799 :a4799.
+:a4800 :a4800 :a4800.
+:a4801 :a4801 :a4801.
+:a4802 :a4802 :a4802.
+:a4803 :a4803 :a4803.
+:a4804 :a4804 :a4804.
+:a4805 :a4805 :a4805.
+:a4806 :a4806 :a4806.
+:a4807 :a4807 :a4807.
+:a4808 :a4808 :a4808.
+:a4809 :a4809 :a4809.
+:a4810 :a4810 :a4810.
+:a4811 :a4811 :a4811.
+:a4812 :a4812 :a4812.
+:a4813 :a4813 :a4813.
+:a4814 :a4814 :a4814.
+:a4815 :a4815 :a4815.
+:a4816 :a4816 :a4816.
+:a4817 :a4817 :a4817.
+:a4818 :a4818 :a4818.
+:a4819 :a4819 :a4819.
+:a4820 :a4820 :a4820.
+:a4821 :a4821 :a4821.
+:a4822 :a4822 :a4822.
+:a4823 :a4823 :a4823.
+:a4824 :a4824 :a4824.
+:a4825 :a4825 :a4825.
+:a4826 :a4826 :a4826.
+:a4827 :a4827 :a4827.
+:a4828 :a4828 :a4828.
+:a4829 :a4829 :a4829.
+:a4830 :a4830 :a4830.
+:a4831 :a4831 :a4831.
+:a4832 :a4832 :a4832.
+:a4833 :a4833 :a4833.
+:a4834 :a4834 :a4834.
+:a4835 :a4835 :a4835.
+:a4836 :a4836 :a4836.
+:a4837 :a4837 :a4837.
+:a4838 :a4838 :a4838.
+:a4839 :a4839 :a4839.
+:a4840 :a4840 :a4840.
+:a4841 :a4841 :a4841.
+:a4842 :a4842 :a4842.
+:a4843 :a4843 :a4843.
+:a4844 :a4844 :a4844.
+:a4845 :a4845 :a4845.
+:a4846 :a4846 :a4846.
+:a4847 :a4847 :a4847.
+:a4848 :a4848 :a4848.
+:a4849 :a4849 :a4849.
+:a4850 :a4850 :a4850.
+:a4851 :a4851 :a4851.
+:a4852 :a4852 :a4852.
+:a4853 :a4853 :a4853.
+:a4854 :a4854 :a4854.
+:a4855 :a4855 :a4855.
+:a4856 :a4856 :a4856.
+:a4857 :a4857 :a4857.
+:a4858 :a4858 :a4858.
+:a4859 :a4859 :a4859.
+:a4860 :a4860 :a4860.
+:a4861 :a4861 :a4861.
+:a4862 :a4862 :a4862.
+:a4863 :a4863 :a4863.
+:a4864 :a4864 :a4864.
+:a4865 :a4865 :a4865.
+:a4866 :a4866 :a4866.
+:a4867 :a4867 :a4867.
+:a4868 :a4868 :a4868.
+:a4869 :a4869 :a4869.
+:a4870 :a4870 :a4870.
+:a4871 :a4871 :a4871.
+:a4872 :a4872 :a4872.
+:a4873 :a4873 :a4873.
+:a4874 :a4874 :a4874.
+:a4875 :a4875 :a4875.
+:a4876 :a4876 :a4876.
+:a4877 :a4877 :a4877.
+:a4878 :a4878 :a4878.
+:a4879 :a4879 :a4879.
+:a4880 :a4880 :a4880.
+:a4881 :a4881 :a4881.
+:a4882 :a4882 :a4882.
+:a4883 :a4883 :a4883.
+:a4884 :a4884 :a4884.
+:a4885 :a4885 :a4885.
+:a4886 :a4886 :a4886.
+:a4887 :a4887 :a4887.
+:a4888 :a4888 :a4888.
+:a4889 :a4889 :a4889.
+:a4890 :a4890 :a4890.
+:a4891 :a4891 :a4891.
+:a4892 :a4892 :a4892.
+:a4893 :a4893 :a4893.
+:a4894 :a4894 :a4894.
+:a4895 :a4895 :a4895.
+:a4896 :a4896 :a4896.
+:a4897 :a4897 :a4897.
+:a4898 :a4898 :a4898.
+:a4899 :a4899 :a4899.
+:a4900 :a4900 :a4900.
+:a4901 :a4901 :a4901.
+:a4902 :a4902 :a4902.
+:a4903 :a4903 :a4903.
+:a4904 :a4904 :a4904.
+:a4905 :a4905 :a4905.
+:a4906 :a4906 :a4906.
+:a4907 :a4907 :a4907.
+:a4908 :a4908 :a4908.
+:a4909 :a4909 :a4909.
+:a4910 :a4910 :a4910.
+:a4911 :a4911 :a4911.
+:a4912 :a4912 :a4912.
+:a4913 :a4913 :a4913.
+:a4914 :a4914 :a4914.
+:a4915 :a4915 :a4915.
+:a4916 :a4916 :a4916.
+:a4917 :a4917 :a4917.
+:a4918 :a4918 :a4918.
+:a4919 :a4919 :a4919.
+:a4920 :a4920 :a4920.
+:a4921 :a4921 :a4921.
+:a4922 :a4922 :a4922.
+:a4923 :a4923 :a4923.
+:a4924 :a4924 :a4924.
+:a4925 :a4925 :a4925.
+:a4926 :a4926 :a4926.
+:a4927 :a4927 :a4927.
+:a4928 :a4928 :a4928.
+:a4929 :a4929 :a4929.
+:a4930 :a4930 :a4930.
+:a4931 :a4931 :a4931.
+:a4932 :a4932 :a4932.
+:a4933 :a4933 :a4933.
+:a4934 :a4934 :a4934.
+:a4935 :a4935 :a4935.
+:a4936 :a4936 :a4936.
+:a4937 :a4937 :a4937.
+:a4938 :a4938 :a4938.
+:a4939 :a4939 :a4939.
+:a4940 :a4940 :a4940.
+:a4941 :a4941 :a4941.
+:a4942 :a4942 :a4942.
+:a4943 :a4943 :a4943.
+:a4944 :a4944 :a4944.
+:a4945 :a4945 :a4945.
+:a4946 :a4946 :a4946.
+:a4947 :a4947 :a4947.
+:a4948 :a4948 :a4948.
+:a4949 :a4949 :a4949.
+:a4950 :a4950 :a4950.
+:a4951 :a4951 :a4951.
+:a4952 :a4952 :a4952.
+:a4953 :a4953 :a4953.
+:a4954 :a4954 :a4954.
+:a4955 :a4955 :a4955.
+:a4956 :a4956 :a4956.
+:a4957 :a4957 :a4957.
+:a4958 :a4958 :a4958.
+:a4959 :a4959 :a4959.
+:a4960 :a4960 :a4960.
+:a4961 :a4961 :a4961.
+:a4962 :a4962 :a4962.
+:a4963 :a4963 :a4963.
+:a4964 :a4964 :a4964.
+:a4965 :a4965 :a4965.
+:a4966 :a4966 :a4966.
+:a4967 :a4967 :a4967.
+:a4968 :a4968 :a4968.
+:a4969 :a4969 :a4969.
+:a4970 :a4970 :a4970.
+:a4971 :a4971 :a4971.
+:a4972 :a4972 :a4972.
+:a4973 :a4973 :a4973.
+:a4974 :a4974 :a4974.
+:a4975 :a4975 :a4975.
+:a4976 :a4976 :a4976.
+:a4977 :a4977 :a4977.
+:a4978 :a4978 :a4978.
+:a4979 :a4979 :a4979.
+:a4980 :a4980 :a4980.
+:a4981 :a4981 :a4981.
+:a4982 :a4982 :a4982.
+:a4983 :a4983 :a4983.
+:a4984 :a4984 :a4984.
+:a4985 :a4985 :a4985.
+:a4986 :a4986 :a4986.
+:a4987 :a4987 :a4987.
+:a4988 :a4988 :a4988.
+:a4989 :a4989 :a4989.
+:a4990 :a4990 :a4990.
+:a4991 :a4991 :a4991.
+:a4992 :a4992 :a4992.
+:a4993 :a4993 :a4993.
+:a4994 :a4994 :a4994.
+:a4995 :a4995 :a4995.
+:a4996 :a4996 :a4996.
+:a4997 :a4997 :a4997.
+:a4998 :a4998 :a4998.
+:a4999 :a4999 :a4999.
+:a5000 :a5000 :a5000.
+:a5001 :a5001 :a5001.
+:a5002 :a5002 :a5002.
+:a5003 :a5003 :a5003.
+:a5004 :a5004 :a5004.
+:a5005 :a5005 :a5005.
+:a5006 :a5006 :a5006.
+:a5007 :a5007 :a5007.
+:a5008 :a5008 :a5008.
+:a5009 :a5009 :a5009.
+:a5010 :a5010 :a5010.
+:a5011 :a5011 :a5011.
+:a5012 :a5012 :a5012.
+:a5013 :a5013 :a5013.
+:a5014 :a5014 :a5014.
+:a5015 :a5015 :a5015.
+:a5016 :a5016 :a5016.
+:a5017 :a5017 :a5017.
+:a5018 :a5018 :a5018.
+:a5019 :a5019 :a5019.
+:a5020 :a5020 :a5020.
+:a5021 :a5021 :a5021.
+:a5022 :a5022 :a5022.
+:a5023 :a5023 :a5023.
+:a5024 :a5024 :a5024.
+:a5025 :a5025 :a5025.
+:a5026 :a5026 :a5026.
+:a5027 :a5027 :a5027.
+:a5028 :a5028 :a5028.
+:a5029 :a5029 :a5029.
+:a5030 :a5030 :a5030.
+:a5031 :a5031 :a5031.
+:a5032 :a5032 :a5032.
+:a5033 :a5033 :a5033.
+:a5034 :a5034 :a5034.
+:a5035 :a5035 :a5035.
+:a5036 :a5036 :a5036.
+:a5037 :a5037 :a5037.
+:a5038 :a5038 :a5038.
+:a5039 :a5039 :a5039.
+:a5040 :a5040 :a5040.
+:a5041 :a5041 :a5041.
+:a5042 :a5042 :a5042.
+:a5043 :a5043 :a5043.
+:a5044 :a5044 :a5044.
+:a5045 :a5045 :a5045.
+:a5046 :a5046 :a5046.
+:a5047 :a5047 :a5047.
+:a5048 :a5048 :a5048.
+:a5049 :a5049 :a5049.
+:a5050 :a5050 :a5050.
+:a5051 :a5051 :a5051.
+:a5052 :a5052 :a5052.
+:a5053 :a5053 :a5053.
+:a5054 :a5054 :a5054.
+:a5055 :a5055 :a5055.
+:a5056 :a5056 :a5056.
+:a5057 :a5057 :a5057.
+:a5058 :a5058 :a5058.
+:a5059 :a5059 :a5059.
+:a5060 :a5060 :a5060.
+:a5061 :a5061 :a5061.
+:a5062 :a5062 :a5062.
+:a5063 :a5063 :a5063.
+:a5064 :a5064 :a5064.
+:a5065 :a5065 :a5065.
+:a5066 :a5066 :a5066.
+:a5067 :a5067 :a5067.
+:a5068 :a5068 :a5068.
+:a5069 :a5069 :a5069.
+:a5070 :a5070 :a5070.
+:a5071 :a5071 :a5071.
+:a5072 :a5072 :a5072.
+:a5073 :a5073 :a5073.
+:a5074 :a5074 :a5074.
+:a5075 :a5075 :a5075.
+:a5076 :a5076 :a5076.
+:a5077 :a5077 :a5077.
+:a5078 :a5078 :a5078.
+:a5079 :a5079 :a5079.
+:a5080 :a5080 :a5080.
+:a5081 :a5081 :a5081.
+:a5082 :a5082 :a5082.
+:a5083 :a5083 :a5083.
+:a5084 :a5084 :a5084.
+:a5085 :a5085 :a5085.
+:a5086 :a5086 :a5086.
+:a5087 :a5087 :a5087.
+:a5088 :a5088 :a5088.
+:a5089 :a5089 :a5089.
+:a5090 :a5090 :a5090.
+:a5091 :a5091 :a5091.
+:a5092 :a5092 :a5092.
+:a5093 :a5093 :a5093.
+:a5094 :a5094 :a5094.
+:a5095 :a5095 :a5095.
+:a5096 :a5096 :a5096.
+:a5097 :a5097 :a5097.
+:a5098 :a5098 :a5098.
+:a5099 :a5099 :a5099.
+:a5100 :a5100 :a5100.
+:a5101 :a5101 :a5101.
+:a5102 :a5102 :a5102.
+:a5103 :a5103 :a5103.
+:a5104 :a5104 :a5104.
+:a5105 :a5105 :a5105.
+:a5106 :a5106 :a5106.
+:a5107 :a5107 :a5107.
+:a5108 :a5108 :a5108.
+:a5109 :a5109 :a5109.
+:a5110 :a5110 :a5110.
+:a5111 :a5111 :a5111.
+:a5112 :a5112 :a5112.
+:a5113 :a5113 :a5113.
+:a5114 :a5114 :a5114.
+:a5115 :a5115 :a5115.
+:a5116 :a5116 :a5116.
+:a5117 :a5117 :a5117.
+:a5118 :a5118 :a5118.
+:a5119 :a5119 :a5119.
+:a5120 :a5120 :a5120.
+:a5121 :a5121 :a5121.
+:a5122 :a5122 :a5122.
+:a5123 :a5123 :a5123.
+:a5124 :a5124 :a5124.
+:a5125 :a5125 :a5125.
+:a5126 :a5126 :a5126.
+:a5127 :a5127 :a5127.
+:a5128 :a5128 :a5128.
+:a5129 :a5129 :a5129.
+:a5130 :a5130 :a5130.
+:a5131 :a5131 :a5131.
+:a5132 :a5132 :a5132.
+:a5133 :a5133 :a5133.
+:a5134 :a5134 :a5134.
+:a5135 :a5135 :a5135.
+:a5136 :a5136 :a5136.
+:a5137 :a5137 :a5137.
+:a5138 :a5138 :a5138.
+:a5139 :a5139 :a5139.
+:a5140 :a5140 :a5140.
+:a5141 :a5141 :a5141.
+:a5142 :a5142 :a5142.
+:a5143 :a5143 :a5143.
+:a5144 :a5144 :a5144.
+:a5145 :a5145 :a5145.
+:a5146 :a5146 :a5146.
+:a5147 :a5147 :a5147.
+:a5148 :a5148 :a5148.
+:a5149 :a5149 :a5149.
+:a5150 :a5150 :a5150.
+:a5151 :a5151 :a5151.
+:a5152 :a5152 :a5152.
+:a5153 :a5153 :a5153.
+:a5154 :a5154 :a5154.
+:a5155 :a5155 :a5155.
+:a5156 :a5156 :a5156.
+:a5157 :a5157 :a5157.
+:a5158 :a5158 :a5158.
+:a5159 :a5159 :a5159.
+:a5160 :a5160 :a5160.
+:a5161 :a5161 :a5161.
+:a5162 :a5162 :a5162.
+:a5163 :a5163 :a5163.
+:a5164 :a5164 :a5164.
+:a5165 :a5165 :a5165.
+:a5166 :a5166 :a5166.
+:a5167 :a5167 :a5167.
+:a5168 :a5168 :a5168.
+:a5169 :a5169 :a5169.
+:a5170 :a5170 :a5170.
+:a5171 :a5171 :a5171.
+:a5172 :a5172 :a5172.
+:a5173 :a5173 :a5173.
+:a5174 :a5174 :a5174.
+:a5175 :a5175 :a5175.
+:a5176 :a5176 :a5176.
+:a5177 :a5177 :a5177.
+:a5178 :a5178 :a5178.
+:a5179 :a5179 :a5179.
+:a5180 :a5180 :a5180.
+:a5181 :a5181 :a5181.
+:a5182 :a5182 :a5182.
+:a5183 :a5183 :a5183.
+:a5184 :a5184 :a5184.
+:a5185 :a5185 :a5185.
+:a5186 :a5186 :a5186.
+:a5187 :a5187 :a5187.
+:a5188 :a5188 :a5188.
+:a5189 :a5189 :a5189.
+:a5190 :a5190 :a5190.
+:a5191 :a5191 :a5191.
+:a5192 :a5192 :a5192.
+:a5193 :a5193 :a5193.
+:a5194 :a5194 :a5194.
+:a5195 :a5195 :a5195.
+:a5196 :a5196 :a5196.
+:a5197 :a5197 :a5197.
+:a5198 :a5198 :a5198.
+:a5199 :a5199 :a5199.
+:a5200 :a5200 :a5200.
+:a5201 :a5201 :a5201.
+:a5202 :a5202 :a5202.
+:a5203 :a5203 :a5203.
+:a5204 :a5204 :a5204.
+:a5205 :a5205 :a5205.
+:a5206 :a5206 :a5206.
+:a5207 :a5207 :a5207.
+:a5208 :a5208 :a5208.
+:a5209 :a5209 :a5209.
+:a5210 :a5210 :a5210.
+:a5211 :a5211 :a5211.
+:a5212 :a5212 :a5212.
+:a5213 :a5213 :a5213.
+:a5214 :a5214 :a5214.
+:a5215 :a5215 :a5215.
+:a5216 :a5216 :a5216.
+:a5217 :a5217 :a5217.
+:a5218 :a5218 :a5218.
+:a5219 :a5219 :a5219.
+:a5220 :a5220 :a5220.
+:a5221 :a5221 :a5221.
+:a5222 :a5222 :a5222.
+:a5223 :a5223 :a5223.
+:a5224 :a5224 :a5224.
+:a5225 :a5225 :a5225.
+:a5226 :a5226 :a5226.
+:a5227 :a5227 :a5227.
+:a5228 :a5228 :a5228.
+:a5229 :a5229 :a5229.
+:a5230 :a5230 :a5230.
+:a5231 :a5231 :a5231.
+:a5232 :a5232 :a5232.
+:a5233 :a5233 :a5233.
+:a5234 :a5234 :a5234.
+:a5235 :a5235 :a5235.
+:a5236 :a5236 :a5236.
+:a5237 :a5237 :a5237.
+:a5238 :a5238 :a5238.
+:a5239 :a5239 :a5239.
+:a5240 :a5240 :a5240.
+:a5241 :a5241 :a5241.
+:a5242 :a5242 :a5242.
+:a5243 :a5243 :a5243.
+:a5244 :a5244 :a5244.
+:a5245 :a5245 :a5245.
+:a5246 :a5246 :a5246.
+:a5247 :a5247 :a5247.
+:a5248 :a5248 :a5248.
+:a5249 :a5249 :a5249.
+:a5250 :a5250 :a5250.
+:a5251 :a5251 :a5251.
+:a5252 :a5252 :a5252.
+:a5253 :a5253 :a5253.
+:a5254 :a5254 :a5254.
+:a5255 :a5255 :a5255.
+:a5256 :a5256 :a5256.
+:a5257 :a5257 :a5257.
+:a5258 :a5258 :a5258.
+:a5259 :a5259 :a5259.
+:a5260 :a5260 :a5260.
+:a5261 :a5261 :a5261.
+:a5262 :a5262 :a5262.
+:a5263 :a5263 :a5263.
+:a5264 :a5264 :a5264.
+:a5265 :a5265 :a5265.
+:a5266 :a5266 :a5266.
+:a5267 :a5267 :a5267.
+:a5268 :a5268 :a5268.
+:a5269 :a5269 :a5269.
+:a5270 :a5270 :a5270.
+:a5271 :a5271 :a5271.
+:a5272 :a5272 :a5272.
+:a5273 :a5273 :a5273.
+:a5274 :a5274 :a5274.
+:a5275 :a5275 :a5275.
+:a5276 :a5276 :a5276.
+:a5277 :a5277 :a5277.
+:a5278 :a5278 :a5278.
+:a5279 :a5279 :a5279.
+:a5280 :a5280 :a5280.
+:a5281 :a5281 :a5281.
+:a5282 :a5282 :a5282.
+:a5283 :a5283 :a5283.
+:a5284 :a5284 :a5284.
+:a5285 :a5285 :a5285.
+:a5286 :a5286 :a5286.
+:a5287 :a5287 :a5287.
+:a5288 :a5288 :a5288.
+:a5289 :a5289 :a5289.
+:a5290 :a5290 :a5290.
+:a5291 :a5291 :a5291.
+:a5292 :a5292 :a5292.
+:a5293 :a5293 :a5293.
+:a5294 :a5294 :a5294.
+:a5295 :a5295 :a5295.
+:a5296 :a5296 :a5296.
+:a5297 :a5297 :a5297.
+:a5298 :a5298 :a5298.
+:a5299 :a5299 :a5299.
+:a5300 :a5300 :a5300.
+:a5301 :a5301 :a5301.
+:a5302 :a5302 :a5302.
+:a5303 :a5303 :a5303.
+:a5304 :a5304 :a5304.
+:a5305 :a5305 :a5305.
+:a5306 :a5306 :a5306.
+:a5307 :a5307 :a5307.
+:a5308 :a5308 :a5308.
+:a5309 :a5309 :a5309.
+:a5310 :a5310 :a5310.
+:a5311 :a5311 :a5311.
+:a5312 :a5312 :a5312.
+:a5313 :a5313 :a5313.
+:a5314 :a5314 :a5314.
+:a5315 :a5315 :a5315.
+:a5316 :a5316 :a5316.
+:a5317 :a5317 :a5317.
+:a5318 :a5318 :a5318.
+:a5319 :a5319 :a5319.
+:a5320 :a5320 :a5320.
+:a5321 :a5321 :a5321.
+:a5322 :a5322 :a5322.
+:a5323 :a5323 :a5323.
+:a5324 :a5324 :a5324.
+:a5325 :a5325 :a5325.
+:a5326 :a5326 :a5326.
+:a5327 :a5327 :a5327.
+:a5328 :a5328 :a5328.
+:a5329 :a5329 :a5329.
+:a5330 :a5330 :a5330.
+:a5331 :a5331 :a5331.
+:a5332 :a5332 :a5332.
+:a5333 :a5333 :a5333.
+:a5334 :a5334 :a5334.
+:a5335 :a5335 :a5335.
+:a5336 :a5336 :a5336.
+:a5337 :a5337 :a5337.
+:a5338 :a5338 :a5338.
+:a5339 :a5339 :a5339.
+:a5340 :a5340 :a5340.
+:a5341 :a5341 :a5341.
+:a5342 :a5342 :a5342.
+:a5343 :a5343 :a5343.
+:a5344 :a5344 :a5344.
+:a5345 :a5345 :a5345.
+:a5346 :a5346 :a5346.
+:a5347 :a5347 :a5347.
+:a5348 :a5348 :a5348.
+:a5349 :a5349 :a5349.
+:a5350 :a5350 :a5350.
+:a5351 :a5351 :a5351.
+:a5352 :a5352 :a5352.
+:a5353 :a5353 :a5353.
+:a5354 :a5354 :a5354.
+:a5355 :a5355 :a5355.
+:a5356 :a5356 :a5356.
+:a5357 :a5357 :a5357.
+:a5358 :a5358 :a5358.
+:a5359 :a5359 :a5359.
+:a5360 :a5360 :a5360.
+:a5361 :a5361 :a5361.
+:a5362 :a5362 :a5362.
+:a5363 :a5363 :a5363.
+:a5364 :a5364 :a5364.
+:a5365 :a5365 :a5365.
+:a5366 :a5366 :a5366.
+:a5367 :a5367 :a5367.
+:a5368 :a5368 :a5368.
+:a5369 :a5369 :a5369.
+:a5370 :a5370 :a5370.
+:a5371 :a5371 :a5371.
+:a5372 :a5372 :a5372.
+:a5373 :a5373 :a5373.
+:a5374 :a5374 :a5374.
+:a5375 :a5375 :a5375.
+:a5376 :a5376 :a5376.
+:a5377 :a5377 :a5377.
+:a5378 :a5378 :a5378.
+:a5379 :a5379 :a5379.
+:a5380 :a5380 :a5380.
+:a5381 :a5381 :a5381.
+:a5382 :a5382 :a5382.
+:a5383 :a5383 :a5383.
+:a5384 :a5384 :a5384.
+:a5385 :a5385 :a5385.
+:a5386 :a5386 :a5386.
+:a5387 :a5387 :a5387.
+:a5388 :a5388 :a5388.
+:a5389 :a5389 :a5389.
+:a5390 :a5390 :a5390.
+:a5391 :a5391 :a5391.
+:a5392 :a5392 :a5392.
+:a5393 :a5393 :a5393.
+:a5394 :a5394 :a5394.
+:a5395 :a5395 :a5395.
+:a5396 :a5396 :a5396.
+:a5397 :a5397 :a5397.
+:a5398 :a5398 :a5398.
+:a5399 :a5399 :a5399.
+:a5400 :a5400 :a5400.
+:a5401 :a5401 :a5401.
+:a5402 :a5402 :a5402.
+:a5403 :a5403 :a5403.
+:a5404 :a5404 :a5404.
+:a5405 :a5405 :a5405.
+:a5406 :a5406 :a5406.
+:a5407 :a5407 :a5407.
+:a5408 :a5408 :a5408.
+:a5409 :a5409 :a5409.
+:a5410 :a5410 :a5410.
+:a5411 :a5411 :a5411.
+:a5412 :a5412 :a5412.
+:a5413 :a5413 :a5413.
+:a5414 :a5414 :a5414.
+:a5415 :a5415 :a5415.
+:a5416 :a5416 :a5416.
+:a5417 :a5417 :a5417.
+:a5418 :a5418 :a5418.
+:a5419 :a5419 :a5419.
+:a5420 :a5420 :a5420.
+:a5421 :a5421 :a5421.
+:a5422 :a5422 :a5422.
+:a5423 :a5423 :a5423.
+:a5424 :a5424 :a5424.
+:a5425 :a5425 :a5425.
+:a5426 :a5426 :a5426.
+:a5427 :a5427 :a5427.
+:a5428 :a5428 :a5428.
+:a5429 :a5429 :a5429.
+:a5430 :a5430 :a5430.
+:a5431 :a5431 :a5431.
+:a5432 :a5432 :a5432.
+:a5433 :a5433 :a5433.
+:a5434 :a5434 :a5434.
+:a5435 :a5435 :a5435.
+:a5436 :a5436 :a5436.
+:a5437 :a5437 :a5437.
+:a5438 :a5438 :a5438.
+:a5439 :a5439 :a5439.
+:a5440 :a5440 :a5440.
+:a5441 :a5441 :a5441.
+:a5442 :a5442 :a5442.
+:a5443 :a5443 :a5443.
+:a5444 :a5444 :a5444.
+:a5445 :a5445 :a5445.
+:a5446 :a5446 :a5446.
+:a5447 :a5447 :a5447.
+:a5448 :a5448 :a5448.
+:a5449 :a5449 :a5449.
+:a5450 :a5450 :a5450.
+:a5451 :a5451 :a5451.
+:a5452 :a5452 :a5452.
+:a5453 :a5453 :a5453.
+:a5454 :a5454 :a5454.
+:a5455 :a5455 :a5455.
+:a5456 :a5456 :a5456.
+:a5457 :a5457 :a5457.
+:a5458 :a5458 :a5458.
+:a5459 :a5459 :a5459.
+:a5460 :a5460 :a5460.
+:a5461 :a5461 :a5461.
+:a5462 :a5462 :a5462.
+:a5463 :a5463 :a5463.
+:a5464 :a5464 :a5464.
+:a5465 :a5465 :a5465.
+:a5466 :a5466 :a5466.
+:a5467 :a5467 :a5467.
+:a5468 :a5468 :a5468.
+:a5469 :a5469 :a5469.
+:a5470 :a5470 :a5470.
+:a5471 :a5471 :a5471.
+:a5472 :a5472 :a5472.
+:a5473 :a5473 :a5473.
+:a5474 :a5474 :a5474.
+:a5475 :a5475 :a5475.
+:a5476 :a5476 :a5476.
+:a5477 :a5477 :a5477.
+:a5478 :a5478 :a5478.
+:a5479 :a5479 :a5479.
+:a5480 :a5480 :a5480.
+:a5481 :a5481 :a5481.
+:a5482 :a5482 :a5482.
+:a5483 :a5483 :a5483.
+:a5484 :a5484 :a5484.
+:a5485 :a5485 :a5485.
+:a5486 :a5486 :a5486.
+:a5487 :a5487 :a5487.
+:a5488 :a5488 :a5488.
+:a5489 :a5489 :a5489.
+:a5490 :a5490 :a5490.
+:a5491 :a5491 :a5491.
+:a5492 :a5492 :a5492.
+:a5493 :a5493 :a5493.
+:a5494 :a5494 :a5494.
+:a5495 :a5495 :a5495.
+:a5496 :a5496 :a5496.
+:a5497 :a5497 :a5497.
+:a5498 :a5498 :a5498.
+:a5499 :a5499 :a5499.
+:a5500 :a5500 :a5500.
+:a5501 :a5501 :a5501.
+:a5502 :a5502 :a5502.
+:a5503 :a5503 :a5503.
+:a5504 :a5504 :a5504.
+:a5505 :a5505 :a5505.
+:a5506 :a5506 :a5506.
+:a5507 :a5507 :a5507.
+:a5508 :a5508 :a5508.
+:a5509 :a5509 :a5509.
+:a5510 :a5510 :a5510.
+:a5511 :a5511 :a5511.
+:a5512 :a5512 :a5512.
+:a5513 :a5513 :a5513.
+:a5514 :a5514 :a5514.
+:a5515 :a5515 :a5515.
+:a5516 :a5516 :a5516.
+:a5517 :a5517 :a5517.
+:a5518 :a5518 :a5518.
+:a5519 :a5519 :a5519.
+:a5520 :a5520 :a5520.
+:a5521 :a5521 :a5521.
+:a5522 :a5522 :a5522.
+:a5523 :a5523 :a5523.
+:a5524 :a5524 :a5524.
+:a5525 :a5525 :a5525.
+:a5526 :a5526 :a5526.
+:a5527 :a5527 :a5527.
+:a5528 :a5528 :a5528.
+:a5529 :a5529 :a5529.
+:a5530 :a5530 :a5530.
+:a5531 :a5531 :a5531.
+:a5532 :a5532 :a5532.
+:a5533 :a5533 :a5533.
+:a5534 :a5534 :a5534.
+:a5535 :a5535 :a5535.
+:a5536 :a5536 :a5536.
+:a5537 :a5537 :a5537.
+:a5538 :a5538 :a5538.
+:a5539 :a5539 :a5539.
+:a5540 :a5540 :a5540.
+:a5541 :a5541 :a5541.
+:a5542 :a5542 :a5542.
+:a5543 :a5543 :a5543.
+:a5544 :a5544 :a5544.
+:a5545 :a5545 :a5545.
+:a5546 :a5546 :a5546.
+:a5547 :a5547 :a5547.
+:a5548 :a5548 :a5548.
+:a5549 :a5549 :a5549.
+:a5550 :a5550 :a5550.
+:a5551 :a5551 :a5551.
+:a5552 :a5552 :a5552.
+:a5553 :a5553 :a5553.
+:a5554 :a5554 :a5554.
+:a5555 :a5555 :a5555.
+:a5556 :a5556 :a5556.
+:a5557 :a5557 :a5557.
+:a5558 :a5558 :a5558.
+:a5559 :a5559 :a5559.
+:a5560 :a5560 :a5560.
+:a5561 :a5561 :a5561.
+:a5562 :a5562 :a5562.
+:a5563 :a5563 :a5563.
+:a5564 :a5564 :a5564.
+:a5565 :a5565 :a5565.
+:a5566 :a5566 :a5566.
+:a5567 :a5567 :a5567.
+:a5568 :a5568 :a5568.
+:a5569 :a5569 :a5569.
+:a5570 :a5570 :a5570.
+:a5571 :a5571 :a5571.
+:a5572 :a5572 :a5572.
+:a5573 :a5573 :a5573.
+:a5574 :a5574 :a5574.
+:a5575 :a5575 :a5575.
+:a5576 :a5576 :a5576.
+:a5577 :a5577 :a5577.
+:a5578 :a5578 :a5578.
+:a5579 :a5579 :a5579.
+:a5580 :a5580 :a5580.
+:a5581 :a5581 :a5581.
+:a5582 :a5582 :a5582.
+:a5583 :a5583 :a5583.
+:a5584 :a5584 :a5584.
+:a5585 :a5585 :a5585.
+:a5586 :a5586 :a5586.
+:a5587 :a5587 :a5587.
+:a5588 :a5588 :a5588.
+:a5589 :a5589 :a5589.
+:a5590 :a5590 :a5590.
+:a5591 :a5591 :a5591.
+:a5592 :a5592 :a5592.
+:a5593 :a5593 :a5593.
+:a5594 :a5594 :a5594.
+:a5595 :a5595 :a5595.
+:a5596 :a5596 :a5596.
+:a5597 :a5597 :a5597.
+:a5598 :a5598 :a5598.
+:a5599 :a5599 :a5599.
+:a5600 :a5600 :a5600.
+:a5601 :a5601 :a5601.
+:a5602 :a5602 :a5602.
+:a5603 :a5603 :a5603.
+:a5604 :a5604 :a5604.
+:a5605 :a5605 :a5605.
+:a5606 :a5606 :a5606.
+:a5607 :a5607 :a5607.
+:a5608 :a5608 :a5608.
+:a5609 :a5609 :a5609.
+:a5610 :a5610 :a5610.
+:a5611 :a5611 :a5611.
+:a5612 :a5612 :a5612.
+:a5613 :a5613 :a5613.
+:a5614 :a5614 :a5614.
+:a5615 :a5615 :a5615.
+:a5616 :a5616 :a5616.
+:a5617 :a5617 :a5617.
+:a5618 :a5618 :a5618.
+:a5619 :a5619 :a5619.
+:a5620 :a5620 :a5620.
+:a5621 :a5621 :a5621.
+:a5622 :a5622 :a5622.
+:a5623 :a5623 :a5623.
+:a5624 :a5624 :a5624.
+:a5625 :a5625 :a5625.
+:a5626 :a5626 :a5626.
+:a5627 :a5627 :a5627.
+:a5628 :a5628 :a5628.
+:a5629 :a5629 :a5629.
+:a5630 :a5630 :a5630.
+:a5631 :a5631 :a5631.
+:a5632 :a5632 :a5632.
+:a5633 :a5633 :a5633.
+:a5634 :a5634 :a5634.
+:a5635 :a5635 :a5635.
+:a5636 :a5636 :a5636.
+:a5637 :a5637 :a5637.
+:a5638 :a5638 :a5638.
+:a5639 :a5639 :a5639.
+:a5640 :a5640 :a5640.
+:a5641 :a5641 :a5641.
+:a5642 :a5642 :a5642.
+:a5643 :a5643 :a5643.
+:a5644 :a5644 :a5644.
+:a5645 :a5645 :a5645.
+:a5646 :a5646 :a5646.
+:a5647 :a5647 :a5647.
+:a5648 :a5648 :a5648.
+:a5649 :a5649 :a5649.
+:a5650 :a5650 :a5650.
+:a5651 :a5651 :a5651.
+:a5652 :a5652 :a5652.
+:a5653 :a5653 :a5653.
+:a5654 :a5654 :a5654.
+:a5655 :a5655 :a5655.
+:a5656 :a5656 :a5656.
+:a5657 :a5657 :a5657.
+:a5658 :a5658 :a5658.
+:a5659 :a5659 :a5659.
+:a5660 :a5660 :a5660.
+:a5661 :a5661 :a5661.
+:a5662 :a5662 :a5662.
+:a5663 :a5663 :a5663.
+:a5664 :a5664 :a5664.
+:a5665 :a5665 :a5665.
+:a5666 :a5666 :a5666.
+:a5667 :a5667 :a5667.
+:a5668 :a5668 :a5668.
+:a5669 :a5669 :a5669.
+:a5670 :a5670 :a5670.
+:a5671 :a5671 :a5671.
+:a5672 :a5672 :a5672.
+:a5673 :a5673 :a5673.
+:a5674 :a5674 :a5674.
+:a5675 :a5675 :a5675.
+:a5676 :a5676 :a5676.
+:a5677 :a5677 :a5677.
+:a5678 :a5678 :a5678.
+:a5679 :a5679 :a5679.
+:a5680 :a5680 :a5680.
+:a5681 :a5681 :a5681.
+:a5682 :a5682 :a5682.
+:a5683 :a5683 :a5683.
+:a5684 :a5684 :a5684.
+:a5685 :a5685 :a5685.
+:a5686 :a5686 :a5686.
+:a5687 :a5687 :a5687.
+:a5688 :a5688 :a5688.
+:a5689 :a5689 :a5689.
+:a5690 :a5690 :a5690.
+:a5691 :a5691 :a5691.
+:a5692 :a5692 :a5692.
+:a5693 :a5693 :a5693.
+:a5694 :a5694 :a5694.
+:a5695 :a5695 :a5695.
+:a5696 :a5696 :a5696.
+:a5697 :a5697 :a5697.
+:a5698 :a5698 :a5698.
+:a5699 :a5699 :a5699.
+:a5700 :a5700 :a5700.
+:a5701 :a5701 :a5701.
+:a5702 :a5702 :a5702.
+:a5703 :a5703 :a5703.
+:a5704 :a5704 :a5704.
+:a5705 :a5705 :a5705.
+:a5706 :a5706 :a5706.
+:a5707 :a5707 :a5707.
+:a5708 :a5708 :a5708.
+:a5709 :a5709 :a5709.
+:a5710 :a5710 :a5710.
+:a5711 :a5711 :a5711.
+:a5712 :a5712 :a5712.
+:a5713 :a5713 :a5713.
+:a5714 :a5714 :a5714.
+:a5715 :a5715 :a5715.
+:a5716 :a5716 :a5716.
+:a5717 :a5717 :a5717.
+:a5718 :a5718 :a5718.
+:a5719 :a5719 :a5719.
+:a5720 :a5720 :a5720.
+:a5721 :a5721 :a5721.
+:a5722 :a5722 :a5722.
+:a5723 :a5723 :a5723.
+:a5724 :a5724 :a5724.
+:a5725 :a5725 :a5725.
+:a5726 :a5726 :a5726.
+:a5727 :a5727 :a5727.
+:a5728 :a5728 :a5728.
+:a5729 :a5729 :a5729.
+:a5730 :a5730 :a5730.
+:a5731 :a5731 :a5731.
+:a5732 :a5732 :a5732.
+:a5733 :a5733 :a5733.
+:a5734 :a5734 :a5734.
+:a5735 :a5735 :a5735.
+:a5736 :a5736 :a5736.
+:a5737 :a5737 :a5737.
+:a5738 :a5738 :a5738.
+:a5739 :a5739 :a5739.
+:a5740 :a5740 :a5740.
+:a5741 :a5741 :a5741.
+:a5742 :a5742 :a5742.
+:a5743 :a5743 :a5743.
+:a5744 :a5744 :a5744.
+:a5745 :a5745 :a5745.
+:a5746 :a5746 :a5746.
+:a5747 :a5747 :a5747.
+:a5748 :a5748 :a5748.
+:a5749 :a5749 :a5749.
+:a5750 :a5750 :a5750.
+:a5751 :a5751 :a5751.
+:a5752 :a5752 :a5752.
+:a5753 :a5753 :a5753.
+:a5754 :a5754 :a5754.
+:a5755 :a5755 :a5755.
+:a5756 :a5756 :a5756.
+:a5757 :a5757 :a5757.
+:a5758 :a5758 :a5758.
+:a5759 :a5759 :a5759.
+:a5760 :a5760 :a5760.
+:a5761 :a5761 :a5761.
+:a5762 :a5762 :a5762.
+:a5763 :a5763 :a5763.
+:a5764 :a5764 :a5764.
+:a5765 :a5765 :a5765.
+:a5766 :a5766 :a5766.
+:a5767 :a5767 :a5767.
+:a5768 :a5768 :a5768.
+:a5769 :a5769 :a5769.
+:a5770 :a5770 :a5770.
+:a5771 :a5771 :a5771.
+:a5772 :a5772 :a5772.
+:a5773 :a5773 :a5773.
+:a5774 :a5774 :a5774.
+:a5775 :a5775 :a5775.
+:a5776 :a5776 :a5776.
+:a5777 :a5777 :a5777.
+:a5778 :a5778 :a5778.
+:a5779 :a5779 :a5779.
+:a5780 :a5780 :a5780.
+:a5781 :a5781 :a5781.
+:a5782 :a5782 :a5782.
+:a5783 :a5783 :a5783.
+:a5784 :a5784 :a5784.
+:a5785 :a5785 :a5785.
+:a5786 :a5786 :a5786.
+:a5787 :a5787 :a5787.
+:a5788 :a5788 :a5788.
+:a5789 :a5789 :a5789.
+:a5790 :a5790 :a5790.
+:a5791 :a5791 :a5791.
+:a5792 :a5792 :a5792.
+:a5793 :a5793 :a5793.
+:a5794 :a5794 :a5794.
+:a5795 :a5795 :a5795.
+:a5796 :a5796 :a5796.
+:a5797 :a5797 :a5797.
+:a5798 :a5798 :a5798.
+:a5799 :a5799 :a5799.
+:a5800 :a5800 :a5800.
+:a5801 :a5801 :a5801.
+:a5802 :a5802 :a5802.
+:a5803 :a5803 :a5803.
+:a5804 :a5804 :a5804.
+:a5805 :a5805 :a5805.
+:a5806 :a5806 :a5806.
+:a5807 :a5807 :a5807.
+:a5808 :a5808 :a5808.
+:a5809 :a5809 :a5809.
+:a5810 :a5810 :a5810.
+:a5811 :a5811 :a5811.
+:a5812 :a5812 :a5812.
+:a5813 :a5813 :a5813.
+:a5814 :a5814 :a5814.
+:a5815 :a5815 :a5815.
+:a5816 :a5816 :a5816.
+:a5817 :a5817 :a5817.
+:a5818 :a5818 :a5818.
+:a5819 :a5819 :a5819.
+:a5820 :a5820 :a5820.
+:a5821 :a5821 :a5821.
+:a5822 :a5822 :a5822.
+:a5823 :a5823 :a5823.
+:a5824 :a5824 :a5824.
+:a5825 :a5825 :a5825.
+:a5826 :a5826 :a5826.
+:a5827 :a5827 :a5827.
+:a5828 :a5828 :a5828.
+:a5829 :a5829 :a5829.
+:a5830 :a5830 :a5830.
+:a5831 :a5831 :a5831.
+:a5832 :a5832 :a5832.
+:a5833 :a5833 :a5833.
+:a5834 :a5834 :a5834.
+:a5835 :a5835 :a5835.
+:a5836 :a5836 :a5836.
+:a5837 :a5837 :a5837.
+:a5838 :a5838 :a5838.
+:a5839 :a5839 :a5839.
+:a5840 :a5840 :a5840.
+:a5841 :a5841 :a5841.
+:a5842 :a5842 :a5842.
+:a5843 :a5843 :a5843.
+:a5844 :a5844 :a5844.
+:a5845 :a5845 :a5845.
+:a5846 :a5846 :a5846.
+:a5847 :a5847 :a5847.
+:a5848 :a5848 :a5848.
+:a5849 :a5849 :a5849.
+:a5850 :a5850 :a5850.
+:a5851 :a5851 :a5851.
+:a5852 :a5852 :a5852.
+:a5853 :a5853 :a5853.
+:a5854 :a5854 :a5854.
+:a5855 :a5855 :a5855.
+:a5856 :a5856 :a5856.
+:a5857 :a5857 :a5857.
+:a5858 :a5858 :a5858.
+:a5859 :a5859 :a5859.
+:a5860 :a5860 :a5860.
+:a5861 :a5861 :a5861.
+:a5862 :a5862 :a5862.
+:a5863 :a5863 :a5863.
+:a5864 :a5864 :a5864.
+:a5865 :a5865 :a5865.
+:a5866 :a5866 :a5866.
+:a5867 :a5867 :a5867.
+:a5868 :a5868 :a5868.
+:a5869 :a5869 :a5869.
+:a5870 :a5870 :a5870.
+:a5871 :a5871 :a5871.
+:a5872 :a5872 :a5872.
+:a5873 :a5873 :a5873.
+:a5874 :a5874 :a5874.
+:a5875 :a5875 :a5875.
+:a5876 :a5876 :a5876.
+:a5877 :a5877 :a5877.
+:a5878 :a5878 :a5878.
+:a5879 :a5879 :a5879.
+:a5880 :a5880 :a5880.
+:a5881 :a5881 :a5881.
+:a5882 :a5882 :a5882.
+:a5883 :a5883 :a5883.
+:a5884 :a5884 :a5884.
+:a5885 :a5885 :a5885.
+:a5886 :a5886 :a5886.
+:a5887 :a5887 :a5887.
+:a5888 :a5888 :a5888.
+:a5889 :a5889 :a5889.
+:a5890 :a5890 :a5890.
+:a5891 :a5891 :a5891.
+:a5892 :a5892 :a5892.
+:a5893 :a5893 :a5893.
+:a5894 :a5894 :a5894.
+:a5895 :a5895 :a5895.
+:a5896 :a5896 :a5896.
+:a5897 :a5897 :a5897.
+:a5898 :a5898 :a5898.
+:a5899 :a5899 :a5899.
+:a5900 :a5900 :a5900.
+:a5901 :a5901 :a5901.
+:a5902 :a5902 :a5902.
+:a5903 :a5903 :a5903.
+:a5904 :a5904 :a5904.
+:a5905 :a5905 :a5905.
+:a5906 :a5906 :a5906.
+:a5907 :a5907 :a5907.
+:a5908 :a5908 :a5908.
+:a5909 :a5909 :a5909.
+:a5910 :a5910 :a5910.
+:a5911 :a5911 :a5911.
+:a5912 :a5912 :a5912.
+:a5913 :a5913 :a5913.
+:a5914 :a5914 :a5914.
+:a5915 :a5915 :a5915.
+:a5916 :a5916 :a5916.
+:a5917 :a5917 :a5917.
+:a5918 :a5918 :a5918.
+:a5919 :a5919 :a5919.
+:a5920 :a5920 :a5920.
+:a5921 :a5921 :a5921.
+:a5922 :a5922 :a5922.
+:a5923 :a5923 :a5923.
+:a5924 :a5924 :a5924.
+:a5925 :a5925 :a5925.
+:a5926 :a5926 :a5926.
+:a5927 :a5927 :a5927.
+:a5928 :a5928 :a5928.
+:a5929 :a5929 :a5929.
+:a5930 :a5930 :a5930.
+:a5931 :a5931 :a5931.
+:a5932 :a5932 :a5932.
+:a5933 :a5933 :a5933.
+:a5934 :a5934 :a5934.
+:a5935 :a5935 :a5935.
+:a5936 :a5936 :a5936.
+:a5937 :a5937 :a5937.
+:a5938 :a5938 :a5938.
+:a5939 :a5939 :a5939.
+:a5940 :a5940 :a5940.
+:a5941 :a5941 :a5941.
+:a5942 :a5942 :a5942.
+:a5943 :a5943 :a5943.
+:a5944 :a5944 :a5944.
+:a5945 :a5945 :a5945.
+:a5946 :a5946 :a5946.
+:a5947 :a5947 :a5947.
+:a5948 :a5948 :a5948.
+:a5949 :a5949 :a5949.
+:a5950 :a5950 :a5950.
+:a5951 :a5951 :a5951.
+:a5952 :a5952 :a5952.
+:a5953 :a5953 :a5953.
+:a5954 :a5954 :a5954.
+:a5955 :a5955 :a5955.
+:a5956 :a5956 :a5956.
+:a5957 :a5957 :a5957.
+:a5958 :a5958 :a5958.
+:a5959 :a5959 :a5959.
+:a5960 :a5960 :a5960.
+:a5961 :a5961 :a5961.
+:a5962 :a5962 :a5962.
+:a5963 :a5963 :a5963.
+:a5964 :a5964 :a5964.
+:a5965 :a5965 :a5965.
+:a5966 :a5966 :a5966.
+:a5967 :a5967 :a5967.
+:a5968 :a5968 :a5968.
+:a5969 :a5969 :a5969.
+:a5970 :a5970 :a5970.
+:a5971 :a5971 :a5971.
+:a5972 :a5972 :a5972.
+:a5973 :a5973 :a5973.
+:a5974 :a5974 :a5974.
+:a5975 :a5975 :a5975.
+:a5976 :a5976 :a5976.
+:a5977 :a5977 :a5977.
+:a5978 :a5978 :a5978.
+:a5979 :a5979 :a5979.
+:a5980 :a5980 :a5980.
+:a5981 :a5981 :a5981.
+:a5982 :a5982 :a5982.
+:a5983 :a5983 :a5983.
+:a5984 :a5984 :a5984.
+:a5985 :a5985 :a5985.
+:a5986 :a5986 :a5986.
+:a5987 :a5987 :a5987.
+:a5988 :a5988 :a5988.
+:a5989 :a5989 :a5989.
+:a5990 :a5990 :a5990.
+:a5991 :a5991 :a5991.
+:a5992 :a5992 :a5992.
+:a5993 :a5993 :a5993.
+:a5994 :a5994 :a5994.
+:a5995 :a5995 :a5995.
+:a5996 :a5996 :a5996.
+:a5997 :a5997 :a5997.
+:a5998 :a5998 :a5998.
+:a5999 :a5999 :a5999.
+:a6000 :a6000 :a6000.
+:a6001 :a6001 :a6001.
+:a6002 :a6002 :a6002.
+:a6003 :a6003 :a6003.
+:a6004 :a6004 :a6004.
+:a6005 :a6005 :a6005.
+:a6006 :a6006 :a6006.
+:a6007 :a6007 :a6007.
+:a6008 :a6008 :a6008.
+:a6009 :a6009 :a6009.
+:a6010 :a6010 :a6010.
+:a6011 :a6011 :a6011.
+:a6012 :a6012 :a6012.
+:a6013 :a6013 :a6013.
+:a6014 :a6014 :a6014.
+:a6015 :a6015 :a6015.
+:a6016 :a6016 :a6016.
+:a6017 :a6017 :a6017.
+:a6018 :a6018 :a6018.
+:a6019 :a6019 :a6019.
+:a6020 :a6020 :a6020.
+:a6021 :a6021 :a6021.
+:a6022 :a6022 :a6022.
+:a6023 :a6023 :a6023.
+:a6024 :a6024 :a6024.
+:a6025 :a6025 :a6025.
+:a6026 :a6026 :a6026.
+:a6027 :a6027 :a6027.
+:a6028 :a6028 :a6028.
+:a6029 :a6029 :a6029.
+:a6030 :a6030 :a6030.
+:a6031 :a6031 :a6031.
+:a6032 :a6032 :a6032.
+:a6033 :a6033 :a6033.
+:a6034 :a6034 :a6034.
+:a6035 :a6035 :a6035.
+:a6036 :a6036 :a6036.
+:a6037 :a6037 :a6037.
+:a6038 :a6038 :a6038.
+:a6039 :a6039 :a6039.
+:a6040 :a6040 :a6040.
+:a6041 :a6041 :a6041.
+:a6042 :a6042 :a6042.
+:a6043 :a6043 :a6043.
+:a6044 :a6044 :a6044.
+:a6045 :a6045 :a6045.
+:a6046 :a6046 :a6046.
+:a6047 :a6047 :a6047.
+:a6048 :a6048 :a6048.
+:a6049 :a6049 :a6049.
+:a6050 :a6050 :a6050.
+:a6051 :a6051 :a6051.
+:a6052 :a6052 :a6052.
+:a6053 :a6053 :a6053.
+:a6054 :a6054 :a6054.
+:a6055 :a6055 :a6055.
+:a6056 :a6056 :a6056.
+:a6057 :a6057 :a6057.
+:a6058 :a6058 :a6058.
+:a6059 :a6059 :a6059.
+:a6060 :a6060 :a6060.
+:a6061 :a6061 :a6061.
+:a6062 :a6062 :a6062.
+:a6063 :a6063 :a6063.
+:a6064 :a6064 :a6064.
+:a6065 :a6065 :a6065.
+:a6066 :a6066 :a6066.
+:a6067 :a6067 :a6067.
+:a6068 :a6068 :a6068.
+:a6069 :a6069 :a6069.
+:a6070 :a6070 :a6070.
+:a6071 :a6071 :a6071.
+:a6072 :a6072 :a6072.
+:a6073 :a6073 :a6073.
+:a6074 :a6074 :a6074.
+:a6075 :a6075 :a6075.
+:a6076 :a6076 :a6076.
+:a6077 :a6077 :a6077.
+:a6078 :a6078 :a6078.
+:a6079 :a6079 :a6079.
+:a6080 :a6080 :a6080.
+:a6081 :a6081 :a6081.
+:a6082 :a6082 :a6082.
+:a6083 :a6083 :a6083.
+:a6084 :a6084 :a6084.
+:a6085 :a6085 :a6085.
+:a6086 :a6086 :a6086.
+:a6087 :a6087 :a6087.
+:a6088 :a6088 :a6088.
+:a6089 :a6089 :a6089.
+:a6090 :a6090 :a6090.
+:a6091 :a6091 :a6091.
+:a6092 :a6092 :a6092.
+:a6093 :a6093 :a6093.
+:a6094 :a6094 :a6094.
+:a6095 :a6095 :a6095.
+:a6096 :a6096 :a6096.
+:a6097 :a6097 :a6097.
+:a6098 :a6098 :a6098.
+:a6099 :a6099 :a6099.
+:a6100 :a6100 :a6100.
+:a6101 :a6101 :a6101.
+:a6102 :a6102 :a6102.
+:a6103 :a6103 :a6103.
+:a6104 :a6104 :a6104.
+:a6105 :a6105 :a6105.
+:a6106 :a6106 :a6106.
+:a6107 :a6107 :a6107.
+:a6108 :a6108 :a6108.
+:a6109 :a6109 :a6109.
+:a6110 :a6110 :a6110.
+:a6111 :a6111 :a6111.
+:a6112 :a6112 :a6112.
+:a6113 :a6113 :a6113.
+:a6114 :a6114 :a6114.
+:a6115 :a6115 :a6115.
+:a6116 :a6116 :a6116.
+:a6117 :a6117 :a6117.
+:a6118 :a6118 :a6118.
+:a6119 :a6119 :a6119.
+:a6120 :a6120 :a6120.
+:a6121 :a6121 :a6121.
+:a6122 :a6122 :a6122.
+:a6123 :a6123 :a6123.
+:a6124 :a6124 :a6124.
+:a6125 :a6125 :a6125.
+:a6126 :a6126 :a6126.
+:a6127 :a6127 :a6127.
+:a6128 :a6128 :a6128.
+:a6129 :a6129 :a6129.
+:a6130 :a6130 :a6130.
+:a6131 :a6131 :a6131.
+:a6132 :a6132 :a6132.
+:a6133 :a6133 :a6133.
+:a6134 :a6134 :a6134.
+:a6135 :a6135 :a6135.
+:a6136 :a6136 :a6136.
+:a6137 :a6137 :a6137.
+:a6138 :a6138 :a6138.
+:a6139 :a6139 :a6139.
+:a6140 :a6140 :a6140.
+:a6141 :a6141 :a6141.
+:a6142 :a6142 :a6142.
+:a6143 :a6143 :a6143.
+:a6144 :a6144 :a6144.
+:a6145 :a6145 :a6145.
+:a6146 :a6146 :a6146.
+:a6147 :a6147 :a6147.
+:a6148 :a6148 :a6148.
+:a6149 :a6149 :a6149.
+:a6150 :a6150 :a6150.
+:a6151 :a6151 :a6151.
+:a6152 :a6152 :a6152.
+:a6153 :a6153 :a6153.
+:a6154 :a6154 :a6154.
+:a6155 :a6155 :a6155.
+:a6156 :a6156 :a6156.
+:a6157 :a6157 :a6157.
+:a6158 :a6158 :a6158.
+:a6159 :a6159 :a6159.
+:a6160 :a6160 :a6160.
+:a6161 :a6161 :a6161.
+:a6162 :a6162 :a6162.
+:a6163 :a6163 :a6163.
+:a6164 :a6164 :a6164.
+:a6165 :a6165 :a6165.
+:a6166 :a6166 :a6166.
+:a6167 :a6167 :a6167.
+:a6168 :a6168 :a6168.
+:a6169 :a6169 :a6169.
+:a6170 :a6170 :a6170.
+:a6171 :a6171 :a6171.
+:a6172 :a6172 :a6172.
+:a6173 :a6173 :a6173.
+:a6174 :a6174 :a6174.
+:a6175 :a6175 :a6175.
+:a6176 :a6176 :a6176.
+:a6177 :a6177 :a6177.
+:a6178 :a6178 :a6178.
+:a6179 :a6179 :a6179.
+:a6180 :a6180 :a6180.
+:a6181 :a6181 :a6181.
+:a6182 :a6182 :a6182.
+:a6183 :a6183 :a6183.
+:a6184 :a6184 :a6184.
+:a6185 :a6185 :a6185.
+:a6186 :a6186 :a6186.
+:a6187 :a6187 :a6187.
+:a6188 :a6188 :a6188.
+:a6189 :a6189 :a6189.
+:a6190 :a6190 :a6190.
+:a6191 :a6191 :a6191.
+:a6192 :a6192 :a6192.
+:a6193 :a6193 :a6193.
+:a6194 :a6194 :a6194.
+:a6195 :a6195 :a6195.
+:a6196 :a6196 :a6196.
+:a6197 :a6197 :a6197.
+:a6198 :a6198 :a6198.
+:a6199 :a6199 :a6199.
+:a6200 :a6200 :a6200.
+:a6201 :a6201 :a6201.
+:a6202 :a6202 :a6202.
+:a6203 :a6203 :a6203.
+:a6204 :a6204 :a6204.
+:a6205 :a6205 :a6205.
+:a6206 :a6206 :a6206.
+:a6207 :a6207 :a6207.
+:a6208 :a6208 :a6208.
+:a6209 :a6209 :a6209.
+:a6210 :a6210 :a6210.
+:a6211 :a6211 :a6211.
+:a6212 :a6212 :a6212.
+:a6213 :a6213 :a6213.
+:a6214 :a6214 :a6214.
+:a6215 :a6215 :a6215.
+:a6216 :a6216 :a6216.
+:a6217 :a6217 :a6217.
+:a6218 :a6218 :a6218.
+:a6219 :a6219 :a6219.
+:a6220 :a6220 :a6220.
+:a6221 :a6221 :a6221.
+:a6222 :a6222 :a6222.
+:a6223 :a6223 :a6223.
+:a6224 :a6224 :a6224.
+:a6225 :a6225 :a6225.
+:a6226 :a6226 :a6226.
+:a6227 :a6227 :a6227.
+:a6228 :a6228 :a6228.
+:a6229 :a6229 :a6229.
+:a6230 :a6230 :a6230.
+:a6231 :a6231 :a6231.
+:a6232 :a6232 :a6232.
+:a6233 :a6233 :a6233.
+:a6234 :a6234 :a6234.
+:a6235 :a6235 :a6235.
+:a6236 :a6236 :a6236.
+:a6237 :a6237 :a6237.
+:a6238 :a6238 :a6238.
+:a6239 :a6239 :a6239.
+:a6240 :a6240 :a6240.
+:a6241 :a6241 :a6241.
+:a6242 :a6242 :a6242.
+:a6243 :a6243 :a6243.
+:a6244 :a6244 :a6244.
+:a6245 :a6245 :a6245.
+:a6246 :a6246 :a6246.
+:a6247 :a6247 :a6247.
+:a6248 :a6248 :a6248.
+:a6249 :a6249 :a6249.
+:a6250 :a6250 :a6250.
+:a6251 :a6251 :a6251.
+:a6252 :a6252 :a6252.
+:a6253 :a6253 :a6253.
+:a6254 :a6254 :a6254.
+:a6255 :a6255 :a6255.
+:a6256 :a6256 :a6256.
+:a6257 :a6257 :a6257.
+:a6258 :a6258 :a6258.
+:a6259 :a6259 :a6259.
+:a6260 :a6260 :a6260.
+:a6261 :a6261 :a6261.
+:a6262 :a6262 :a6262.
+:a6263 :a6263 :a6263.
+:a6264 :a6264 :a6264.
+:a6265 :a6265 :a6265.
+:a6266 :a6266 :a6266.
+:a6267 :a6267 :a6267.
+:a6268 :a6268 :a6268.
+:a6269 :a6269 :a6269.
+:a6270 :a6270 :a6270.
+:a6271 :a6271 :a6271.
+:a6272 :a6272 :a6272.
+:a6273 :a6273 :a6273.
+:a6274 :a6274 :a6274.
+:a6275 :a6275 :a6275.
+:a6276 :a6276 :a6276.
+:a6277 :a6277 :a6277.
+:a6278 :a6278 :a6278.
+:a6279 :a6279 :a6279.
+:a6280 :a6280 :a6280.
+:a6281 :a6281 :a6281.
+:a6282 :a6282 :a6282.
+:a6283 :a6283 :a6283.
+:a6284 :a6284 :a6284.
+:a6285 :a6285 :a6285.
+:a6286 :a6286 :a6286.
+:a6287 :a6287 :a6287.
+:a6288 :a6288 :a6288.
+:a6289 :a6289 :a6289.
+:a6290 :a6290 :a6290.
+:a6291 :a6291 :a6291.
+:a6292 :a6292 :a6292.
+:a6293 :a6293 :a6293.
+:a6294 :a6294 :a6294.
+:a6295 :a6295 :a6295.
+:a6296 :a6296 :a6296.
+:a6297 :a6297 :a6297.
+:a6298 :a6298 :a6298.
+:a6299 :a6299 :a6299.
+:a6300 :a6300 :a6300.
+:a6301 :a6301 :a6301.
+:a6302 :a6302 :a6302.
+:a6303 :a6303 :a6303.
+:a6304 :a6304 :a6304.
+:a6305 :a6305 :a6305.
+:a6306 :a6306 :a6306.
+:a6307 :a6307 :a6307.
+:a6308 :a6308 :a6308.
+:a6309 :a6309 :a6309.
+:a6310 :a6310 :a6310.
+:a6311 :a6311 :a6311.
+:a6312 :a6312 :a6312.
+:a6313 :a6313 :a6313.
+:a6314 :a6314 :a6314.
+:a6315 :a6315 :a6315.
+:a6316 :a6316 :a6316.
+:a6317 :a6317 :a6317.
+:a6318 :a6318 :a6318.
+:a6319 :a6319 :a6319.
+:a6320 :a6320 :a6320.
+:a6321 :a6321 :a6321.
+:a6322 :a6322 :a6322.
+:a6323 :a6323 :a6323.
+:a6324 :a6324 :a6324.
+:a6325 :a6325 :a6325.
+:a6326 :a6326 :a6326.
+:a6327 :a6327 :a6327.
+:a6328 :a6328 :a6328.
+:a6329 :a6329 :a6329.
+:a6330 :a6330 :a6330.
+:a6331 :a6331 :a6331.
+:a6332 :a6332 :a6332.
+:a6333 :a6333 :a6333.
+:a6334 :a6334 :a6334.
+:a6335 :a6335 :a6335.
+:a6336 :a6336 :a6336.
+:a6337 :a6337 :a6337.
+:a6338 :a6338 :a6338.
+:a6339 :a6339 :a6339.
+:a6340 :a6340 :a6340.
+:a6341 :a6341 :a6341.
+:a6342 :a6342 :a6342.
+:a6343 :a6343 :a6343.
+:a6344 :a6344 :a6344.
+:a6345 :a6345 :a6345.
+:a6346 :a6346 :a6346.
+:a6347 :a6347 :a6347.
+:a6348 :a6348 :a6348.
+:a6349 :a6349 :a6349.
+:a6350 :a6350 :a6350.
+:a6351 :a6351 :a6351.
+:a6352 :a6352 :a6352.
+:a6353 :a6353 :a6353.
+:a6354 :a6354 :a6354.
+:a6355 :a6355 :a6355.
+:a6356 :a6356 :a6356.
+:a6357 :a6357 :a6357.
+:a6358 :a6358 :a6358.
+:a6359 :a6359 :a6359.
+:a6360 :a6360 :a6360.
+:a6361 :a6361 :a6361.
+:a6362 :a6362 :a6362.
+:a6363 :a6363 :a6363.
+:a6364 :a6364 :a6364.
+:a6365 :a6365 :a6365.
+:a6366 :a6366 :a6366.
+:a6367 :a6367 :a6367.
+:a6368 :a6368 :a6368.
+:a6369 :a6369 :a6369.
+:a6370 :a6370 :a6370.
+:a6371 :a6371 :a6371.
+:a6372 :a6372 :a6372.
+:a6373 :a6373 :a6373.
+:a6374 :a6374 :a6374.
+:a6375 :a6375 :a6375.
+:a6376 :a6376 :a6376.
+:a6377 :a6377 :a6377.
+:a6378 :a6378 :a6378.
+:a6379 :a6379 :a6379.
+:a6380 :a6380 :a6380.
+:a6381 :a6381 :a6381.
+:a6382 :a6382 :a6382.
+:a6383 :a6383 :a6383.
+:a6384 :a6384 :a6384.
+:a6385 :a6385 :a6385.
+:a6386 :a6386 :a6386.
+:a6387 :a6387 :a6387.
+:a6388 :a6388 :a6388.
+:a6389 :a6389 :a6389.
+:a6390 :a6390 :a6390.
+:a6391 :a6391 :a6391.
+:a6392 :a6392 :a6392.
+:a6393 :a6393 :a6393.
+:a6394 :a6394 :a6394.
+:a6395 :a6395 :a6395.
+:a6396 :a6396 :a6396.
+:a6397 :a6397 :a6397.
+:a6398 :a6398 :a6398.
+:a6399 :a6399 :a6399.
+:a6400 :a6400 :a6400.
+:a6401 :a6401 :a6401.
+:a6402 :a6402 :a6402.
+:a6403 :a6403 :a6403.
+:a6404 :a6404 :a6404.
+:a6405 :a6405 :a6405.
+:a6406 :a6406 :a6406.
+:a6407 :a6407 :a6407.
+:a6408 :a6408 :a6408.
+:a6409 :a6409 :a6409.
+:a6410 :a6410 :a6410.
+:a6411 :a6411 :a6411.
+:a6412 :a6412 :a6412.
+:a6413 :a6413 :a6413.
+:a6414 :a6414 :a6414.
+:a6415 :a6415 :a6415.
+:a6416 :a6416 :a6416.
+:a6417 :a6417 :a6417.
+:a6418 :a6418 :a6418.
+:a6419 :a6419 :a6419.
+:a6420 :a6420 :a6420.
+:a6421 :a6421 :a6421.
+:a6422 :a6422 :a6422.
+:a6423 :a6423 :a6423.
+:a6424 :a6424 :a6424.
+:a6425 :a6425 :a6425.
+:a6426 :a6426 :a6426.
+:a6427 :a6427 :a6427.
+:a6428 :a6428 :a6428.
+:a6429 :a6429 :a6429.
+:a6430 :a6430 :a6430.
+:a6431 :a6431 :a6431.
+:a6432 :a6432 :a6432.
+:a6433 :a6433 :a6433.
+:a6434 :a6434 :a6434.
+:a6435 :a6435 :a6435.
+:a6436 :a6436 :a6436.
+:a6437 :a6437 :a6437.
+:a6438 :a6438 :a6438.
+:a6439 :a6439 :a6439.
+:a6440 :a6440 :a6440.
+:a6441 :a6441 :a6441.
+:a6442 :a6442 :a6442.
+:a6443 :a6443 :a6443.
+:a6444 :a6444 :a6444.
+:a6445 :a6445 :a6445.
+:a6446 :a6446 :a6446.
+:a6447 :a6447 :a6447.
+:a6448 :a6448 :a6448.
+:a6449 :a6449 :a6449.
+:a6450 :a6450 :a6450.
+:a6451 :a6451 :a6451.
+:a6452 :a6452 :a6452.
+:a6453 :a6453 :a6453.
+:a6454 :a6454 :a6454.
+:a6455 :a6455 :a6455.
+:a6456 :a6456 :a6456.
+:a6457 :a6457 :a6457.
+:a6458 :a6458 :a6458.
+:a6459 :a6459 :a6459.
+:a6460 :a6460 :a6460.
+:a6461 :a6461 :a6461.
+:a6462 :a6462 :a6462.
+:a6463 :a6463 :a6463.
+:a6464 :a6464 :a6464.
+:a6465 :a6465 :a6465.
+:a6466 :a6466 :a6466.
+:a6467 :a6467 :a6467.
+:a6468 :a6468 :a6468.
+:a6469 :a6469 :a6469.
+:a6470 :a6470 :a6470.
+:a6471 :a6471 :a6471.
+:a6472 :a6472 :a6472.
+:a6473 :a6473 :a6473.
+:a6474 :a6474 :a6474.
+:a6475 :a6475 :a6475.
+:a6476 :a6476 :a6476.
+:a6477 :a6477 :a6477.
+:a6478 :a6478 :a6478.
+:a6479 :a6479 :a6479.
+:a6480 :a6480 :a6480.
+:a6481 :a6481 :a6481.
+:a6482 :a6482 :a6482.
+:a6483 :a6483 :a6483.
+:a6484 :a6484 :a6484.
+:a6485 :a6485 :a6485.
+:a6486 :a6486 :a6486.
+:a6487 :a6487 :a6487.
+:a6488 :a6488 :a6488.
+:a6489 :a6489 :a6489.
+:a6490 :a6490 :a6490.
+:a6491 :a6491 :a6491.
+:a6492 :a6492 :a6492.
+:a6493 :a6493 :a6493.
+:a6494 :a6494 :a6494.
+:a6495 :a6495 :a6495.
+:a6496 :a6496 :a6496.
+:a6497 :a6497 :a6497.
+:a6498 :a6498 :a6498.
+:a6499 :a6499 :a6499.
+:a6500 :a6500 :a6500.
+:a6501 :a6501 :a6501.
+:a6502 :a6502 :a6502.
+:a6503 :a6503 :a6503.
+:a6504 :a6504 :a6504.
+:a6505 :a6505 :a6505.
+:a6506 :a6506 :a6506.
+:a6507 :a6507 :a6507.
+:a6508 :a6508 :a6508.
+:a6509 :a6509 :a6509.
+:a6510 :a6510 :a6510.
+:a6511 :a6511 :a6511.
+:a6512 :a6512 :a6512.
+:a6513 :a6513 :a6513.
+:a6514 :a6514 :a6514.
+:a6515 :a6515 :a6515.
+:a6516 :a6516 :a6516.
+:a6517 :a6517 :a6517.
+:a6518 :a6518 :a6518.
+:a6519 :a6519 :a6519.
+:a6520 :a6520 :a6520.
+:a6521 :a6521 :a6521.
+:a6522 :a6522 :a6522.
+:a6523 :a6523 :a6523.
+:a6524 :a6524 :a6524.
+:a6525 :a6525 :a6525.
+:a6526 :a6526 :a6526.
+:a6527 :a6527 :a6527.
+:a6528 :a6528 :a6528.
+:a6529 :a6529 :a6529.
+:a6530 :a6530 :a6530.
+:a6531 :a6531 :a6531.
+:a6532 :a6532 :a6532.
+:a6533 :a6533 :a6533.
+:a6534 :a6534 :a6534.
+:a6535 :a6535 :a6535.
+:a6536 :a6536 :a6536.
+:a6537 :a6537 :a6537.
+:a6538 :a6538 :a6538.
+:a6539 :a6539 :a6539.
+:a6540 :a6540 :a6540.
+:a6541 :a6541 :a6541.
+:a6542 :a6542 :a6542.
+:a6543 :a6543 :a6543.
+:a6544 :a6544 :a6544.
+:a6545 :a6545 :a6545.
+:a6546 :a6546 :a6546.
+:a6547 :a6547 :a6547.
+:a6548 :a6548 :a6548.
+:a6549 :a6549 :a6549.
+:a6550 :a6550 :a6550.
+:a6551 :a6551 :a6551.
+:a6552 :a6552 :a6552.
+:a6553 :a6553 :a6553.
+:a6554 :a6554 :a6554.
+:a6555 :a6555 :a6555.
+:a6556 :a6556 :a6556.
+:a6557 :a6557 :a6557.
+:a6558 :a6558 :a6558.
+:a6559 :a6559 :a6559.
+:a6560 :a6560 :a6560.
+:a6561 :a6561 :a6561.
+:a6562 :a6562 :a6562.
+:a6563 :a6563 :a6563.
+:a6564 :a6564 :a6564.
+:a6565 :a6565 :a6565.
+:a6566 :a6566 :a6566.
+:a6567 :a6567 :a6567.
+:a6568 :a6568 :a6568.
+:a6569 :a6569 :a6569.
+:a6570 :a6570 :a6570.
+:a6571 :a6571 :a6571.
+:a6572 :a6572 :a6572.
+:a6573 :a6573 :a6573.
+:a6574 :a6574 :a6574.
+:a6575 :a6575 :a6575.
+:a6576 :a6576 :a6576.
+:a6577 :a6577 :a6577.
+:a6578 :a6578 :a6578.
+:a6579 :a6579 :a6579.
+:a6580 :a6580 :a6580.
+:a6581 :a6581 :a6581.
+:a6582 :a6582 :a6582.
+:a6583 :a6583 :a6583.
+:a6584 :a6584 :a6584.
+:a6585 :a6585 :a6585.
+:a6586 :a6586 :a6586.
+:a6587 :a6587 :a6587.
+:a6588 :a6588 :a6588.
+:a6589 :a6589 :a6589.
+:a6590 :a6590 :a6590.
+:a6591 :a6591 :a6591.
+:a6592 :a6592 :a6592.
+:a6593 :a6593 :a6593.
+:a6594 :a6594 :a6594.
+:a6595 :a6595 :a6595.
+:a6596 :a6596 :a6596.
+:a6597 :a6597 :a6597.
+:a6598 :a6598 :a6598.
+:a6599 :a6599 :a6599.
+:a6600 :a6600 :a6600.
+:a6601 :a6601 :a6601.
+:a6602 :a6602 :a6602.
+:a6603 :a6603 :a6603.
+:a6604 :a6604 :a6604.
+:a6605 :a6605 :a6605.
+:a6606 :a6606 :a6606.
+:a6607 :a6607 :a6607.
+:a6608 :a6608 :a6608.
+:a6609 :a6609 :a6609.
+:a6610 :a6610 :a6610.
+:a6611 :a6611 :a6611.
+:a6612 :a6612 :a6612.
+:a6613 :a6613 :a6613.
+:a6614 :a6614 :a6614.
+:a6615 :a6615 :a6615.
+:a6616 :a6616 :a6616.
+:a6617 :a6617 :a6617.
+:a6618 :a6618 :a6618.
+:a6619 :a6619 :a6619.
+:a6620 :a6620 :a6620.
+:a6621 :a6621 :a6621.
+:a6622 :a6622 :a6622.
+:a6623 :a6623 :a6623.
+:a6624 :a6624 :a6624.
+:a6625 :a6625 :a6625.
+:a6626 :a6626 :a6626.
+:a6627 :a6627 :a6627.
+:a6628 :a6628 :a6628.
+:a6629 :a6629 :a6629.
+:a6630 :a6630 :a6630.
+:a6631 :a6631 :a6631.
+:a6632 :a6632 :a6632.
+:a6633 :a6633 :a6633.
+:a6634 :a6634 :a6634.
+:a6635 :a6635 :a6635.
+:a6636 :a6636 :a6636.
+:a6637 :a6637 :a6637.
+:a6638 :a6638 :a6638.
+:a6639 :a6639 :a6639.
+:a6640 :a6640 :a6640.
+:a6641 :a6641 :a6641.
+:a6642 :a6642 :a6642.
+:a6643 :a6643 :a6643.
+:a6644 :a6644 :a6644.
+:a6645 :a6645 :a6645.
+:a6646 :a6646 :a6646.
+:a6647 :a6647 :a6647.
+:a6648 :a6648 :a6648.
+:a6649 :a6649 :a6649.
+:a6650 :a6650 :a6650.
+:a6651 :a6651 :a6651.
+:a6652 :a6652 :a6652.
+:a6653 :a6653 :a6653.
+:a6654 :a6654 :a6654.
+:a6655 :a6655 :a6655.
+:a6656 :a6656 :a6656.
+:a6657 :a6657 :a6657.
+:a6658 :a6658 :a6658.
+:a6659 :a6659 :a6659.
+:a6660 :a6660 :a6660.
+:a6661 :a6661 :a6661.
+:a6662 :a6662 :a6662.
+:a6663 :a6663 :a6663.
+:a6664 :a6664 :a6664.
+:a6665 :a6665 :a6665.
+:a6666 :a6666 :a6666.
+:a6667 :a6667 :a6667.
+:a6668 :a6668 :a6668.
+:a6669 :a6669 :a6669.
+:a6670 :a6670 :a6670.
+:a6671 :a6671 :a6671.
+:a6672 :a6672 :a6672.
+:a6673 :a6673 :a6673.
+:a6674 :a6674 :a6674.
+:a6675 :a6675 :a6675.
+:a6676 :a6676 :a6676.
+:a6677 :a6677 :a6677.
+:a6678 :a6678 :a6678.
+:a6679 :a6679 :a6679.
+:a6680 :a6680 :a6680.
+:a6681 :a6681 :a6681.
+:a6682 :a6682 :a6682.
+:a6683 :a6683 :a6683.
+:a6684 :a6684 :a6684.
+:a6685 :a6685 :a6685.
+:a6686 :a6686 :a6686.
+:a6687 :a6687 :a6687.
+:a6688 :a6688 :a6688.
+:a6689 :a6689 :a6689.
+:a6690 :a6690 :a6690.
+:a6691 :a6691 :a6691.
+:a6692 :a6692 :a6692.
+:a6693 :a6693 :a6693.
+:a6694 :a6694 :a6694.
+:a6695 :a6695 :a6695.
+:a6696 :a6696 :a6696.
+:a6697 :a6697 :a6697.
+:a6698 :a6698 :a6698.
+:a6699 :a6699 :a6699.
+:a6700 :a6700 :a6700.
+:a6701 :a6701 :a6701.
+:a6702 :a6702 :a6702.
+:a6703 :a6703 :a6703.
+:a6704 :a6704 :a6704.
+:a6705 :a6705 :a6705.
+:a6706 :a6706 :a6706.
+:a6707 :a6707 :a6707.
+:a6708 :a6708 :a6708.
+:a6709 :a6709 :a6709.
+:a6710 :a6710 :a6710.
+:a6711 :a6711 :a6711.
+:a6712 :a6712 :a6712.
+:a6713 :a6713 :a6713.
+:a6714 :a6714 :a6714.
+:a6715 :a6715 :a6715.
+:a6716 :a6716 :a6716.
+:a6717 :a6717 :a6717.
+:a6718 :a6718 :a6718.
+:a6719 :a6719 :a6719.
+:a6720 :a6720 :a6720.
+:a6721 :a6721 :a6721.
+:a6722 :a6722 :a6722.
+:a6723 :a6723 :a6723.
+:a6724 :a6724 :a6724.
+:a6725 :a6725 :a6725.
+:a6726 :a6726 :a6726.
+:a6727 :a6727 :a6727.
+:a6728 :a6728 :a6728.
+:a6729 :a6729 :a6729.
+:a6730 :a6730 :a6730.
+:a6731 :a6731 :a6731.
+:a6732 :a6732 :a6732.
+:a6733 :a6733 :a6733.
+:a6734 :a6734 :a6734.
+:a6735 :a6735 :a6735.
+:a6736 :a6736 :a6736.
+:a6737 :a6737 :a6737.
+:a6738 :a6738 :a6738.
+:a6739 :a6739 :a6739.
+:a6740 :a6740 :a6740.
+:a6741 :a6741 :a6741.
+:a6742 :a6742 :a6742.
+:a6743 :a6743 :a6743.
+:a6744 :a6744 :a6744.
+:a6745 :a6745 :a6745.
+:a6746 :a6746 :a6746.
+:a6747 :a6747 :a6747.
+:a6748 :a6748 :a6748.
+:a6749 :a6749 :a6749.
+:a6750 :a6750 :a6750.
+:a6751 :a6751 :a6751.
+:a6752 :a6752 :a6752.
+:a6753 :a6753 :a6753.
+:a6754 :a6754 :a6754.
+:a6755 :a6755 :a6755.
+:a6756 :a6756 :a6756.
+:a6757 :a6757 :a6757.
+:a6758 :a6758 :a6758.
+:a6759 :a6759 :a6759.
+:a6760 :a6760 :a6760.
+:a6761 :a6761 :a6761.
+:a6762 :a6762 :a6762.
+:a6763 :a6763 :a6763.
+:a6764 :a6764 :a6764.
+:a6765 :a6765 :a6765.
+:a6766 :a6766 :a6766.
+:a6767 :a6767 :a6767.
+:a6768 :a6768 :a6768.
+:a6769 :a6769 :a6769.
+:a6770 :a6770 :a6770.
+:a6771 :a6771 :a6771.
+:a6772 :a6772 :a6772.
+:a6773 :a6773 :a6773.
+:a6774 :a6774 :a6774.
+:a6775 :a6775 :a6775.
+:a6776 :a6776 :a6776.
+:a6777 :a6777 :a6777.
+:a6778 :a6778 :a6778.
+:a6779 :a6779 :a6779.
+:a6780 :a6780 :a6780.
+:a6781 :a6781 :a6781.
+:a6782 :a6782 :a6782.
+:a6783 :a6783 :a6783.
+:a6784 :a6784 :a6784.
+:a6785 :a6785 :a6785.
+:a6786 :a6786 :a6786.
+:a6787 :a6787 :a6787.
+:a6788 :a6788 :a6788.
+:a6789 :a6789 :a6789.
+:a6790 :a6790 :a6790.
+:a6791 :a6791 :a6791.
+:a6792 :a6792 :a6792.
+:a6793 :a6793 :a6793.
+:a6794 :a6794 :a6794.
+:a6795 :a6795 :a6795.
+:a6796 :a6796 :a6796.
+:a6797 :a6797 :a6797.
+:a6798 :a6798 :a6798.
+:a6799 :a6799 :a6799.
+:a6800 :a6800 :a6800.
+:a6801 :a6801 :a6801.
+:a6802 :a6802 :a6802.
+:a6803 :a6803 :a6803.
+:a6804 :a6804 :a6804.
+:a6805 :a6805 :a6805.
+:a6806 :a6806 :a6806.
+:a6807 :a6807 :a6807.
+:a6808 :a6808 :a6808.
+:a6809 :a6809 :a6809.
+:a6810 :a6810 :a6810.
+:a6811 :a6811 :a6811.
+:a6812 :a6812 :a6812.
+:a6813 :a6813 :a6813.
+:a6814 :a6814 :a6814.
+:a6815 :a6815 :a6815.
+:a6816 :a6816 :a6816.
+:a6817 :a6817 :a6817.
+:a6818 :a6818 :a6818.
+:a6819 :a6819 :a6819.
+:a6820 :a6820 :a6820.
+:a6821 :a6821 :a6821.
+:a6822 :a6822 :a6822.
+:a6823 :a6823 :a6823.
+:a6824 :a6824 :a6824.
+:a6825 :a6825 :a6825.
+:a6826 :a6826 :a6826.
+:a6827 :a6827 :a6827.
+:a6828 :a6828 :a6828.
+:a6829 :a6829 :a6829.
+:a6830 :a6830 :a6830.
+:a6831 :a6831 :a6831.
+:a6832 :a6832 :a6832.
+:a6833 :a6833 :a6833.
+:a6834 :a6834 :a6834.
+:a6835 :a6835 :a6835.
+:a6836 :a6836 :a6836.
+:a6837 :a6837 :a6837.
+:a6838 :a6838 :a6838.
+:a6839 :a6839 :a6839.
+:a6840 :a6840 :a6840.
+:a6841 :a6841 :a6841.
+:a6842 :a6842 :a6842.
+:a6843 :a6843 :a6843.
+:a6844 :a6844 :a6844.
+:a6845 :a6845 :a6845.
+:a6846 :a6846 :a6846.
+:a6847 :a6847 :a6847.
+:a6848 :a6848 :a6848.
+:a6849 :a6849 :a6849.
+:a6850 :a6850 :a6850.
+:a6851 :a6851 :a6851.
+:a6852 :a6852 :a6852.
+:a6853 :a6853 :a6853.
+:a6854 :a6854 :a6854.
+:a6855 :a6855 :a6855.
+:a6856 :a6856 :a6856.
+:a6857 :a6857 :a6857.
+:a6858 :a6858 :a6858.
+:a6859 :a6859 :a6859.
+:a6860 :a6860 :a6860.
+:a6861 :a6861 :a6861.
+:a6862 :a6862 :a6862.
+:a6863 :a6863 :a6863.
+:a6864 :a6864 :a6864.
+:a6865 :a6865 :a6865.
+:a6866 :a6866 :a6866.
+:a6867 :a6867 :a6867.
+:a6868 :a6868 :a6868.
+:a6869 :a6869 :a6869.
+:a6870 :a6870 :a6870.
+:a6871 :a6871 :a6871.
+:a6872 :a6872 :a6872.
+:a6873 :a6873 :a6873.
+:a6874 :a6874 :a6874.
+:a6875 :a6875 :a6875.
+:a6876 :a6876 :a6876.
+:a6877 :a6877 :a6877.
+:a6878 :a6878 :a6878.
+:a6879 :a6879 :a6879.
+:a6880 :a6880 :a6880.
+:a6881 :a6881 :a6881.
+:a6882 :a6882 :a6882.
+:a6883 :a6883 :a6883.
+:a6884 :a6884 :a6884.
+:a6885 :a6885 :a6885.
+:a6886 :a6886 :a6886.
+:a6887 :a6887 :a6887.
+:a6888 :a6888 :a6888.
+:a6889 :a6889 :a6889.
+:a6890 :a6890 :a6890.
+:a6891 :a6891 :a6891.
+:a6892 :a6892 :a6892.
+:a6893 :a6893 :a6893.
+:a6894 :a6894 :a6894.
+:a6895 :a6895 :a6895.
+:a6896 :a6896 :a6896.
+:a6897 :a6897 :a6897.
+:a6898 :a6898 :a6898.
+:a6899 :a6899 :a6899.
+:a6900 :a6900 :a6900.
+:a6901 :a6901 :a6901.
+:a6902 :a6902 :a6902.
+:a6903 :a6903 :a6903.
+:a6904 :a6904 :a6904.
+:a6905 :a6905 :a6905.
+:a6906 :a6906 :a6906.
+:a6907 :a6907 :a6907.
+:a6908 :a6908 :a6908.
+:a6909 :a6909 :a6909.
+:a6910 :a6910 :a6910.
+:a6911 :a6911 :a6911.
+:a6912 :a6912 :a6912.
+:a6913 :a6913 :a6913.
+:a6914 :a6914 :a6914.
+:a6915 :a6915 :a6915.
+:a6916 :a6916 :a6916.
+:a6917 :a6917 :a6917.
+:a6918 :a6918 :a6918.
+:a6919 :a6919 :a6919.
+:a6920 :a6920 :a6920.
+:a6921 :a6921 :a6921.
+:a6922 :a6922 :a6922.
+:a6923 :a6923 :a6923.
+:a6924 :a6924 :a6924.
+:a6925 :a6925 :a6925.
+:a6926 :a6926 :a6926.
+:a6927 :a6927 :a6927.
+:a6928 :a6928 :a6928.
+:a6929 :a6929 :a6929.
+:a6930 :a6930 :a6930.
+:a6931 :a6931 :a6931.
+:a6932 :a6932 :a6932.
+:a6933 :a6933 :a6933.
+:a6934 :a6934 :a6934.
+:a6935 :a6935 :a6935.
+:a6936 :a6936 :a6936.
+:a6937 :a6937 :a6937.
+:a6938 :a6938 :a6938.
+:a6939 :a6939 :a6939.
+:a6940 :a6940 :a6940.
+:a6941 :a6941 :a6941.
+:a6942 :a6942 :a6942.
+:a6943 :a6943 :a6943.
+:a6944 :a6944 :a6944.
+:a6945 :a6945 :a6945.
+:a6946 :a6946 :a6946.
+:a6947 :a6947 :a6947.
+:a6948 :a6948 :a6948.
+:a6949 :a6949 :a6949.
+:a6950 :a6950 :a6950.
+:a6951 :a6951 :a6951.
+:a6952 :a6952 :a6952.
+:a6953 :a6953 :a6953.
+:a6954 :a6954 :a6954.
+:a6955 :a6955 :a6955.
+:a6956 :a6956 :a6956.
+:a6957 :a6957 :a6957.
+:a6958 :a6958 :a6958.
+:a6959 :a6959 :a6959.
+:a6960 :a6960 :a6960.
+:a6961 :a6961 :a6961.
+:a6962 :a6962 :a6962.
+:a6963 :a6963 :a6963.
+:a6964 :a6964 :a6964.
+:a6965 :a6965 :a6965.
+:a6966 :a6966 :a6966.
+:a6967 :a6967 :a6967.
+:a6968 :a6968 :a6968.
+:a6969 :a6969 :a6969.
+:a6970 :a6970 :a6970.
+:a6971 :a6971 :a6971.
+:a6972 :a6972 :a6972.
+:a6973 :a6973 :a6973.
+:a6974 :a6974 :a6974.
+:a6975 :a6975 :a6975.
+:a6976 :a6976 :a6976.
+:a6977 :a6977 :a6977.
+:a6978 :a6978 :a6978.
+:a6979 :a6979 :a6979.
+:a6980 :a6980 :a6980.
+:a6981 :a6981 :a6981.
+:a6982 :a6982 :a6982.
+:a6983 :a6983 :a6983.
+:a6984 :a6984 :a6984.
+:a6985 :a6985 :a6985.
+:a6986 :a6986 :a6986.
+:a6987 :a6987 :a6987.
+:a6988 :a6988 :a6988.
+:a6989 :a6989 :a6989.
+:a6990 :a6990 :a6990.
+:a6991 :a6991 :a6991.
+:a6992 :a6992 :a6992.
+:a6993 :a6993 :a6993.
+:a6994 :a6994 :a6994.
+:a6995 :a6995 :a6995.
+:a6996 :a6996 :a6996.
+:a6997 :a6997 :a6997.
+:a6998 :a6998 :a6998.
+:a6999 :a6999 :a6999.
+:a7000 :a7000 :a7000.
+:a7001 :a7001 :a7001.
+:a7002 :a7002 :a7002.
+:a7003 :a7003 :a7003.
+:a7004 :a7004 :a7004.
+:a7005 :a7005 :a7005.
+:a7006 :a7006 :a7006.
+:a7007 :a7007 :a7007.
+:a7008 :a7008 :a7008.
+:a7009 :a7009 :a7009.
+:a7010 :a7010 :a7010.
+:a7011 :a7011 :a7011.
+:a7012 :a7012 :a7012.
+:a7013 :a7013 :a7013.
+:a7014 :a7014 :a7014.
+:a7015 :a7015 :a7015.
+:a7016 :a7016 :a7016.
+:a7017 :a7017 :a7017.
+:a7018 :a7018 :a7018.
+:a7019 :a7019 :a7019.
+:a7020 :a7020 :a7020.
+:a7021 :a7021 :a7021.
+:a7022 :a7022 :a7022.
+:a7023 :a7023 :a7023.
+:a7024 :a7024 :a7024.
+:a7025 :a7025 :a7025.
+:a7026 :a7026 :a7026.
+:a7027 :a7027 :a7027.
+:a7028 :a7028 :a7028.
+:a7029 :a7029 :a7029.
+:a7030 :a7030 :a7030.
+:a7031 :a7031 :a7031.
+:a7032 :a7032 :a7032.
+:a7033 :a7033 :a7033.
+:a7034 :a7034 :a7034.
+:a7035 :a7035 :a7035.
+:a7036 :a7036 :a7036.
+:a7037 :a7037 :a7037.
+:a7038 :a7038 :a7038.
+:a7039 :a7039 :a7039.
+:a7040 :a7040 :a7040.
+:a7041 :a7041 :a7041.
+:a7042 :a7042 :a7042.
+:a7043 :a7043 :a7043.
+:a7044 :a7044 :a7044.
+:a7045 :a7045 :a7045.
+:a7046 :a7046 :a7046.
+:a7047 :a7047 :a7047.
+:a7048 :a7048 :a7048.
+:a7049 :a7049 :a7049.
+:a7050 :a7050 :a7050.
+:a7051 :a7051 :a7051.
+:a7052 :a7052 :a7052.
+:a7053 :a7053 :a7053.
+:a7054 :a7054 :a7054.
+:a7055 :a7055 :a7055.
+:a7056 :a7056 :a7056.
+:a7057 :a7057 :a7057.
+:a7058 :a7058 :a7058.
+:a7059 :a7059 :a7059.
+:a7060 :a7060 :a7060.
+:a7061 :a7061 :a7061.
+:a7062 :a7062 :a7062.
+:a7063 :a7063 :a7063.
+:a7064 :a7064 :a7064.
+:a7065 :a7065 :a7065.
+:a7066 :a7066 :a7066.
+:a7067 :a7067 :a7067.
+:a7068 :a7068 :a7068.
+:a7069 :a7069 :a7069.
+:a7070 :a7070 :a7070.
+:a7071 :a7071 :a7071.
+:a7072 :a7072 :a7072.
+:a7073 :a7073 :a7073.
+:a7074 :a7074 :a7074.
+:a7075 :a7075 :a7075.
+:a7076 :a7076 :a7076.
+:a7077 :a7077 :a7077.
+:a7078 :a7078 :a7078.
+:a7079 :a7079 :a7079.
+:a7080 :a7080 :a7080.
+:a7081 :a7081 :a7081.
+:a7082 :a7082 :a7082.
+:a7083 :a7083 :a7083.
+:a7084 :a7084 :a7084.
+:a7085 :a7085 :a7085.
+:a7086 :a7086 :a7086.
+:a7087 :a7087 :a7087.
+:a7088 :a7088 :a7088.
+:a7089 :a7089 :a7089.
+:a7090 :a7090 :a7090.
+:a7091 :a7091 :a7091.
+:a7092 :a7092 :a7092.
+:a7093 :a7093 :a7093.
+:a7094 :a7094 :a7094.
+:a7095 :a7095 :a7095.
+:a7096 :a7096 :a7096.
+:a7097 :a7097 :a7097.
+:a7098 :a7098 :a7098.
+:a7099 :a7099 :a7099.
+:a7100 :a7100 :a7100.
+:a7101 :a7101 :a7101.
+:a7102 :a7102 :a7102.
+:a7103 :a7103 :a7103.
+:a7104 :a7104 :a7104.
+:a7105 :a7105 :a7105.
+:a7106 :a7106 :a7106.
+:a7107 :a7107 :a7107.
+:a7108 :a7108 :a7108.
+:a7109 :a7109 :a7109.
+:a7110 :a7110 :a7110.
+:a7111 :a7111 :a7111.
+:a7112 :a7112 :a7112.
+:a7113 :a7113 :a7113.
+:a7114 :a7114 :a7114.
+:a7115 :a7115 :a7115.
+:a7116 :a7116 :a7116.
+:a7117 :a7117 :a7117.
+:a7118 :a7118 :a7118.
+:a7119 :a7119 :a7119.
+:a7120 :a7120 :a7120.
+:a7121 :a7121 :a7121.
+:a7122 :a7122 :a7122.
+:a7123 :a7123 :a7123.
+:a7124 :a7124 :a7124.
+:a7125 :a7125 :a7125.
+:a7126 :a7126 :a7126.
+:a7127 :a7127 :a7127.
+:a7128 :a7128 :a7128.
+:a7129 :a7129 :a7129.
+:a7130 :a7130 :a7130.
+:a7131 :a7131 :a7131.
+:a7132 :a7132 :a7132.
+:a7133 :a7133 :a7133.
+:a7134 :a7134 :a7134.
+:a7135 :a7135 :a7135.
+:a7136 :a7136 :a7136.
+:a7137 :a7137 :a7137.
+:a7138 :a7138 :a7138.
+:a7139 :a7139 :a7139.
+:a7140 :a7140 :a7140.
+:a7141 :a7141 :a7141.
+:a7142 :a7142 :a7142.
+:a7143 :a7143 :a7143.
+:a7144 :a7144 :a7144.
+:a7145 :a7145 :a7145.
+:a7146 :a7146 :a7146.
+:a7147 :a7147 :a7147.
+:a7148 :a7148 :a7148.
+:a7149 :a7149 :a7149.
+:a7150 :a7150 :a7150.
+:a7151 :a7151 :a7151.
+:a7152 :a7152 :a7152.
+:a7153 :a7153 :a7153.
+:a7154 :a7154 :a7154.
+:a7155 :a7155 :a7155.
+:a7156 :a7156 :a7156.
+:a7157 :a7157 :a7157.
+:a7158 :a7158 :a7158.
+:a7159 :a7159 :a7159.
+:a7160 :a7160 :a7160.
+:a7161 :a7161 :a7161.
+:a7162 :a7162 :a7162.
+:a7163 :a7163 :a7163.
+:a7164 :a7164 :a7164.
+:a7165 :a7165 :a7165.
+:a7166 :a7166 :a7166.
+:a7167 :a7167 :a7167.
+:a7168 :a7168 :a7168.
+:a7169 :a7169 :a7169.
+:a7170 :a7170 :a7170.
+:a7171 :a7171 :a7171.
+:a7172 :a7172 :a7172.
+:a7173 :a7173 :a7173.
+:a7174 :a7174 :a7174.
+:a7175 :a7175 :a7175.
+:a7176 :a7176 :a7176.
+:a7177 :a7177 :a7177.
+:a7178 :a7178 :a7178.
+:a7179 :a7179 :a7179.
+:a7180 :a7180 :a7180.
+:a7181 :a7181 :a7181.
+:a7182 :a7182 :a7182.
+:a7183 :a7183 :a7183.
+:a7184 :a7184 :a7184.
+:a7185 :a7185 :a7185.
+:a7186 :a7186 :a7186.
+:a7187 :a7187 :a7187.
+:a7188 :a7188 :a7188.
+:a7189 :a7189 :a7189.
+:a7190 :a7190 :a7190.
+:a7191 :a7191 :a7191.
+:a7192 :a7192 :a7192.
+:a7193 :a7193 :a7193.
+:a7194 :a7194 :a7194.
+:a7195 :a7195 :a7195.
+:a7196 :a7196 :a7196.
+:a7197 :a7197 :a7197.
+:a7198 :a7198 :a7198.
+:a7199 :a7199 :a7199.
+:a7200 :a7200 :a7200.
+:a7201 :a7201 :a7201.
+:a7202 :a7202 :a7202.
+:a7203 :a7203 :a7203.
+:a7204 :a7204 :a7204.
+:a7205 :a7205 :a7205.
+:a7206 :a7206 :a7206.
+:a7207 :a7207 :a7207.
+:a7208 :a7208 :a7208.
+:a7209 :a7209 :a7209.
+:a7210 :a7210 :a7210.
+:a7211 :a7211 :a7211.
+:a7212 :a7212 :a7212.
+:a7213 :a7213 :a7213.
+:a7214 :a7214 :a7214.
+:a7215 :a7215 :a7215.
+:a7216 :a7216 :a7216.
+:a7217 :a7217 :a7217.
+:a7218 :a7218 :a7218.
+:a7219 :a7219 :a7219.
+:a7220 :a7220 :a7220.
+:a7221 :a7221 :a7221.
+:a7222 :a7222 :a7222.
+:a7223 :a7223 :a7223.
+:a7224 :a7224 :a7224.
+:a7225 :a7225 :a7225.
+:a7226 :a7226 :a7226.
+:a7227 :a7227 :a7227.
+:a7228 :a7228 :a7228.
+:a7229 :a7229 :a7229.
+:a7230 :a7230 :a7230.
+:a7231 :a7231 :a7231.
+:a7232 :a7232 :a7232.
+:a7233 :a7233 :a7233.
+:a7234 :a7234 :a7234.
+:a7235 :a7235 :a7235.
+:a7236 :a7236 :a7236.
+:a7237 :a7237 :a7237.
+:a7238 :a7238 :a7238.
+:a7239 :a7239 :a7239.
+:a7240 :a7240 :a7240.
+:a7241 :a7241 :a7241.
+:a7242 :a7242 :a7242.
+:a7243 :a7243 :a7243.
+:a7244 :a7244 :a7244.
+:a7245 :a7245 :a7245.
+:a7246 :a7246 :a7246.
+:a7247 :a7247 :a7247.
+:a7248 :a7248 :a7248.
+:a7249 :a7249 :a7249.
+:a7250 :a7250 :a7250.
+:a7251 :a7251 :a7251.
+:a7252 :a7252 :a7252.
+:a7253 :a7253 :a7253.
+:a7254 :a7254 :a7254.
+:a7255 :a7255 :a7255.
+:a7256 :a7256 :a7256.
+:a7257 :a7257 :a7257.
+:a7258 :a7258 :a7258.
+:a7259 :a7259 :a7259.
+:a7260 :a7260 :a7260.
+:a7261 :a7261 :a7261.
+:a7262 :a7262 :a7262.
+:a7263 :a7263 :a7263.
+:a7264 :a7264 :a7264.
+:a7265 :a7265 :a7265.
+:a7266 :a7266 :a7266.
+:a7267 :a7267 :a7267.
+:a7268 :a7268 :a7268.
+:a7269 :a7269 :a7269.
+:a7270 :a7270 :a7270.
+:a7271 :a7271 :a7271.
+:a7272 :a7272 :a7272.
+:a7273 :a7273 :a7273.
+:a7274 :a7274 :a7274.
+:a7275 :a7275 :a7275.
+:a7276 :a7276 :a7276.
+:a7277 :a7277 :a7277.
+:a7278 :a7278 :a7278.
+:a7279 :a7279 :a7279.
+:a7280 :a7280 :a7280.
+:a7281 :a7281 :a7281.
+:a7282 :a7282 :a7282.
+:a7283 :a7283 :a7283.
+:a7284 :a7284 :a7284.
+:a7285 :a7285 :a7285.
+:a7286 :a7286 :a7286.
+:a7287 :a7287 :a7287.
+:a7288 :a7288 :a7288.
+:a7289 :a7289 :a7289.
+:a7290 :a7290 :a7290.
+:a7291 :a7291 :a7291.
+:a7292 :a7292 :a7292.
+:a7293 :a7293 :a7293.
+:a7294 :a7294 :a7294.
+:a7295 :a7295 :a7295.
+:a7296 :a7296 :a7296.
+:a7297 :a7297 :a7297.
+:a7298 :a7298 :a7298.
+:a7299 :a7299 :a7299.
+:a7300 :a7300 :a7300.
+:a7301 :a7301 :a7301.
+:a7302 :a7302 :a7302.
+:a7303 :a7303 :a7303.
+:a7304 :a7304 :a7304.
+:a7305 :a7305 :a7305.
+:a7306 :a7306 :a7306.
+:a7307 :a7307 :a7307.
+:a7308 :a7308 :a7308.
+:a7309 :a7309 :a7309.
+:a7310 :a7310 :a7310.
+:a7311 :a7311 :a7311.
+:a7312 :a7312 :a7312.
+:a7313 :a7313 :a7313.
+:a7314 :a7314 :a7314.
+:a7315 :a7315 :a7315.
+:a7316 :a7316 :a7316.
+:a7317 :a7317 :a7317.
+:a7318 :a7318 :a7318.
+:a7319 :a7319 :a7319.
+:a7320 :a7320 :a7320.
+:a7321 :a7321 :a7321.
+:a7322 :a7322 :a7322.
+:a7323 :a7323 :a7323.
+:a7324 :a7324 :a7324.
+:a7325 :a7325 :a7325.
+:a7326 :a7326 :a7326.
+:a7327 :a7327 :a7327.
+:a7328 :a7328 :a7328.
+:a7329 :a7329 :a7329.
+:a7330 :a7330 :a7330.
+:a7331 :a7331 :a7331.
+:a7332 :a7332 :a7332.
+:a7333 :a7333 :a7333.
+:a7334 :a7334 :a7334.
+:a7335 :a7335 :a7335.
+:a7336 :a7336 :a7336.
+:a7337 :a7337 :a7337.
+:a7338 :a7338 :a7338.
+:a7339 :a7339 :a7339.
+:a7340 :a7340 :a7340.
+:a7341 :a7341 :a7341.
+:a7342 :a7342 :a7342.
+:a7343 :a7343 :a7343.
+:a7344 :a7344 :a7344.
+:a7345 :a7345 :a7345.
+:a7346 :a7346 :a7346.
+:a7347 :a7347 :a7347.
+:a7348 :a7348 :a7348.
+:a7349 :a7349 :a7349.
+:a7350 :a7350 :a7350.
+:a7351 :a7351 :a7351.
+:a7352 :a7352 :a7352.
+:a7353 :a7353 :a7353.
+:a7354 :a7354 :a7354.
+:a7355 :a7355 :a7355.
+:a7356 :a7356 :a7356.
+:a7357 :a7357 :a7357.
+:a7358 :a7358 :a7358.
+:a7359 :a7359 :a7359.
+:a7360 :a7360 :a7360.
+:a7361 :a7361 :a7361.
+:a7362 :a7362 :a7362.
+:a7363 :a7363 :a7363.
+:a7364 :a7364 :a7364.
+:a7365 :a7365 :a7365.
+:a7366 :a7366 :a7366.
+:a7367 :a7367 :a7367.
+:a7368 :a7368 :a7368.
+:a7369 :a7369 :a7369.
+:a7370 :a7370 :a7370.
+:a7371 :a7371 :a7371.
+:a7372 :a7372 :a7372.
+:a7373 :a7373 :a7373.
+:a7374 :a7374 :a7374.
+:a7375 :a7375 :a7375.
+:a7376 :a7376 :a7376.
+:a7377 :a7377 :a7377.
+:a7378 :a7378 :a7378.
+:a7379 :a7379 :a7379.
+:a7380 :a7380 :a7380.
+:a7381 :a7381 :a7381.
+:a7382 :a7382 :a7382.
+:a7383 :a7383 :a7383.
+:a7384 :a7384 :a7384.
+:a7385 :a7385 :a7385.
+:a7386 :a7386 :a7386.
+:a7387 :a7387 :a7387.
+:a7388 :a7388 :a7388.
+:a7389 :a7389 :a7389.
+:a7390 :a7390 :a7390.
+:a7391 :a7391 :a7391.
+:a7392 :a7392 :a7392.
+:a7393 :a7393 :a7393.
+:a7394 :a7394 :a7394.
+:a7395 :a7395 :a7395.
+:a7396 :a7396 :a7396.
+:a7397 :a7397 :a7397.
+:a7398 :a7398 :a7398.
+:a7399 :a7399 :a7399.
+:a7400 :a7400 :a7400.
+:a7401 :a7401 :a7401.
+:a7402 :a7402 :a7402.
+:a7403 :a7403 :a7403.
+:a7404 :a7404 :a7404.
+:a7405 :a7405 :a7405.
+:a7406 :a7406 :a7406.
+:a7407 :a7407 :a7407.
+:a7408 :a7408 :a7408.
+:a7409 :a7409 :a7409.
+:a7410 :a7410 :a7410.
+:a7411 :a7411 :a7411.
+:a7412 :a7412 :a7412.
+:a7413 :a7413 :a7413.
+:a7414 :a7414 :a7414.
+:a7415 :a7415 :a7415.
+:a7416 :a7416 :a7416.
+:a7417 :a7417 :a7417.
+:a7418 :a7418 :a7418.
+:a7419 :a7419 :a7419.
+:a7420 :a7420 :a7420.
+:a7421 :a7421 :a7421.
+:a7422 :a7422 :a7422.
+:a7423 :a7423 :a7423.
+:a7424 :a7424 :a7424.
+:a7425 :a7425 :a7425.
+:a7426 :a7426 :a7426.
+:a7427 :a7427 :a7427.
+:a7428 :a7428 :a7428.
+:a7429 :a7429 :a7429.
+:a7430 :a7430 :a7430.
+:a7431 :a7431 :a7431.
+:a7432 :a7432 :a7432.
+:a7433 :a7433 :a7433.
+:a7434 :a7434 :a7434.
+:a7435 :a7435 :a7435.
+:a7436 :a7436 :a7436.
+:a7437 :a7437 :a7437.
+:a7438 :a7438 :a7438.
+:a7439 :a7439 :a7439.
+:a7440 :a7440 :a7440.
+:a7441 :a7441 :a7441.
+:a7442 :a7442 :a7442.
+:a7443 :a7443 :a7443.
+:a7444 :a7444 :a7444.
+:a7445 :a7445 :a7445.
+:a7446 :a7446 :a7446.
+:a7447 :a7447 :a7447.
+:a7448 :a7448 :a7448.
+:a7449 :a7449 :a7449.
+:a7450 :a7450 :a7450.
+:a7451 :a7451 :a7451.
+:a7452 :a7452 :a7452.
+:a7453 :a7453 :a7453.
+:a7454 :a7454 :a7454.
+:a7455 :a7455 :a7455.
+:a7456 :a7456 :a7456.
+:a7457 :a7457 :a7457.
+:a7458 :a7458 :a7458.
+:a7459 :a7459 :a7459.
+:a7460 :a7460 :a7460.
+:a7461 :a7461 :a7461.
+:a7462 :a7462 :a7462.
+:a7463 :a7463 :a7463.
+:a7464 :a7464 :a7464.
+:a7465 :a7465 :a7465.
+:a7466 :a7466 :a7466.
+:a7467 :a7467 :a7467.
+:a7468 :a7468 :a7468.
+:a7469 :a7469 :a7469.
+:a7470 :a7470 :a7470.
+:a7471 :a7471 :a7471.
+:a7472 :a7472 :a7472.
+:a7473 :a7473 :a7473.
+:a7474 :a7474 :a7474.
+:a7475 :a7475 :a7475.
+:a7476 :a7476 :a7476.
+:a7477 :a7477 :a7477.
+:a7478 :a7478 :a7478.
+:a7479 :a7479 :a7479.
+:a7480 :a7480 :a7480.
+:a7481 :a7481 :a7481.
+:a7482 :a7482 :a7482.
+:a7483 :a7483 :a7483.
+:a7484 :a7484 :a7484.
+:a7485 :a7485 :a7485.
+:a7486 :a7486 :a7486.
+:a7487 :a7487 :a7487.
+:a7488 :a7488 :a7488.
+:a7489 :a7489 :a7489.
+:a7490 :a7490 :a7490.
+:a7491 :a7491 :a7491.
+:a7492 :a7492 :a7492.
+:a7493 :a7493 :a7493.
+:a7494 :a7494 :a7494.
+:a7495 :a7495 :a7495.
+:a7496 :a7496 :a7496.
+:a7497 :a7497 :a7497.
+:a7498 :a7498 :a7498.
+:a7499 :a7499 :a7499.
+:a7500 :a7500 :a7500.
+:a7501 :a7501 :a7501.
+:a7502 :a7502 :a7502.
+:a7503 :a7503 :a7503.
+:a7504 :a7504 :a7504.
+:a7505 :a7505 :a7505.
+:a7506 :a7506 :a7506.
+:a7507 :a7507 :a7507.
+:a7508 :a7508 :a7508.
+:a7509 :a7509 :a7509.
+:a7510 :a7510 :a7510.
+:a7511 :a7511 :a7511.
+:a7512 :a7512 :a7512.
+:a7513 :a7513 :a7513.
+:a7514 :a7514 :a7514.
+:a7515 :a7515 :a7515.
+:a7516 :a7516 :a7516.
+:a7517 :a7517 :a7517.
+:a7518 :a7518 :a7518.
+:a7519 :a7519 :a7519.
+:a7520 :a7520 :a7520.
+:a7521 :a7521 :a7521.
+:a7522 :a7522 :a7522.
+:a7523 :a7523 :a7523.
+:a7524 :a7524 :a7524.
+:a7525 :a7525 :a7525.
+:a7526 :a7526 :a7526.
+:a7527 :a7527 :a7527.
+:a7528 :a7528 :a7528.
+:a7529 :a7529 :a7529.
+:a7530 :a7530 :a7530.
+:a7531 :a7531 :a7531.
+:a7532 :a7532 :a7532.
+:a7533 :a7533 :a7533.
+:a7534 :a7534 :a7534.
+:a7535 :a7535 :a7535.
+:a7536 :a7536 :a7536.
+:a7537 :a7537 :a7537.
+:a7538 :a7538 :a7538.
+:a7539 :a7539 :a7539.
+:a7540 :a7540 :a7540.
+:a7541 :a7541 :a7541.
+:a7542 :a7542 :a7542.
+:a7543 :a7543 :a7543.
+:a7544 :a7544 :a7544.
+:a7545 :a7545 :a7545.
+:a7546 :a7546 :a7546.
+:a7547 :a7547 :a7547.
+:a7548 :a7548 :a7548.
+:a7549 :a7549 :a7549.
+:a7550 :a7550 :a7550.
+:a7551 :a7551 :a7551.
+:a7552 :a7552 :a7552.
+:a7553 :a7553 :a7553.
+:a7554 :a7554 :a7554.
+:a7555 :a7555 :a7555.
+:a7556 :a7556 :a7556.
+:a7557 :a7557 :a7557.
+:a7558 :a7558 :a7558.
+:a7559 :a7559 :a7559.
+:a7560 :a7560 :a7560.
+:a7561 :a7561 :a7561.
+:a7562 :a7562 :a7562.
+:a7563 :a7563 :a7563.
+:a7564 :a7564 :a7564.
+:a7565 :a7565 :a7565.
+:a7566 :a7566 :a7566.
+:a7567 :a7567 :a7567.
+:a7568 :a7568 :a7568.
+:a7569 :a7569 :a7569.
+:a7570 :a7570 :a7570.
+:a7571 :a7571 :a7571.
+:a7572 :a7572 :a7572.
+:a7573 :a7573 :a7573.
+:a7574 :a7574 :a7574.
+:a7575 :a7575 :a7575.
+:a7576 :a7576 :a7576.
+:a7577 :a7577 :a7577.
+:a7578 :a7578 :a7578.
+:a7579 :a7579 :a7579.
+:a7580 :a7580 :a7580.
+:a7581 :a7581 :a7581.
+:a7582 :a7582 :a7582.
+:a7583 :a7583 :a7583.
+:a7584 :a7584 :a7584.
+:a7585 :a7585 :a7585.
+:a7586 :a7586 :a7586.
+:a7587 :a7587 :a7587.
+:a7588 :a7588 :a7588.
+:a7589 :a7589 :a7589.
+:a7590 :a7590 :a7590.
+:a7591 :a7591 :a7591.
+:a7592 :a7592 :a7592.
+:a7593 :a7593 :a7593.
+:a7594 :a7594 :a7594.
+:a7595 :a7595 :a7595.
+:a7596 :a7596 :a7596.
+:a7597 :a7597 :a7597.
+:a7598 :a7598 :a7598.
+:a7599 :a7599 :a7599.
+:a7600 :a7600 :a7600.
+:a7601 :a7601 :a7601.
+:a7602 :a7602 :a7602.
+:a7603 :a7603 :a7603.
+:a7604 :a7604 :a7604.
+:a7605 :a7605 :a7605.
+:a7606 :a7606 :a7606.
+:a7607 :a7607 :a7607.
+:a7608 :a7608 :a7608.
+:a7609 :a7609 :a7609.
+:a7610 :a7610 :a7610.
+:a7611 :a7611 :a7611.
+:a7612 :a7612 :a7612.
+:a7613 :a7613 :a7613.
+:a7614 :a7614 :a7614.
+:a7615 :a7615 :a7615.
+:a7616 :a7616 :a7616.
+:a7617 :a7617 :a7617.
+:a7618 :a7618 :a7618.
+:a7619 :a7619 :a7619.
+:a7620 :a7620 :a7620.
+:a7621 :a7621 :a7621.
+:a7622 :a7622 :a7622.
+:a7623 :a7623 :a7623.
+:a7624 :a7624 :a7624.
+:a7625 :a7625 :a7625.
+:a7626 :a7626 :a7626.
+:a7627 :a7627 :a7627.
+:a7628 :a7628 :a7628.
+:a7629 :a7629 :a7629.
+:a7630 :a7630 :a7630.
+:a7631 :a7631 :a7631.
+:a7632 :a7632 :a7632.
+:a7633 :a7633 :a7633.
+:a7634 :a7634 :a7634.
+:a7635 :a7635 :a7635.
+:a7636 :a7636 :a7636.
+:a7637 :a7637 :a7637.
+:a7638 :a7638 :a7638.
+:a7639 :a7639 :a7639.
+:a7640 :a7640 :a7640.
+:a7641 :a7641 :a7641.
+:a7642 :a7642 :a7642.
+:a7643 :a7643 :a7643.
+:a7644 :a7644 :a7644.
+:a7645 :a7645 :a7645.
+:a7646 :a7646 :a7646.
+:a7647 :a7647 :a7647.
+:a7648 :a7648 :a7648.
+:a7649 :a7649 :a7649.
+:a7650 :a7650 :a7650.
+:a7651 :a7651 :a7651.
+:a7652 :a7652 :a7652.
+:a7653 :a7653 :a7653.
+:a7654 :a7654 :a7654.
+:a7655 :a7655 :a7655.
+:a7656 :a7656 :a7656.
+:a7657 :a7657 :a7657.
+:a7658 :a7658 :a7658.
+:a7659 :a7659 :a7659.
+:a7660 :a7660 :a7660.
+:a7661 :a7661 :a7661.
+:a7662 :a7662 :a7662.
+:a7663 :a7663 :a7663.
+:a7664 :a7664 :a7664.
+:a7665 :a7665 :a7665.
+:a7666 :a7666 :a7666.
+:a7667 :a7667 :a7667.
+:a7668 :a7668 :a7668.
+:a7669 :a7669 :a7669.
+:a7670 :a7670 :a7670.
+:a7671 :a7671 :a7671.
+:a7672 :a7672 :a7672.
+:a7673 :a7673 :a7673.
+:a7674 :a7674 :a7674.
+:a7675 :a7675 :a7675.
+:a7676 :a7676 :a7676.
+:a7677 :a7677 :a7677.
+:a7678 :a7678 :a7678.
+:a7679 :a7679 :a7679.
+:a7680 :a7680 :a7680.
+:a7681 :a7681 :a7681.
+:a7682 :a7682 :a7682.
+:a7683 :a7683 :a7683.
+:a7684 :a7684 :a7684.
+:a7685 :a7685 :a7685.
+:a7686 :a7686 :a7686.
+:a7687 :a7687 :a7687.
+:a7688 :a7688 :a7688.
+:a7689 :a7689 :a7689.
+:a7690 :a7690 :a7690.
+:a7691 :a7691 :a7691.
+:a7692 :a7692 :a7692.
+:a7693 :a7693 :a7693.
+:a7694 :a7694 :a7694.
+:a7695 :a7695 :a7695.
+:a7696 :a7696 :a7696.
+:a7697 :a7697 :a7697.
+:a7698 :a7698 :a7698.
+:a7699 :a7699 :a7699.
+:a7700 :a7700 :a7700.
+:a7701 :a7701 :a7701.
+:a7702 :a7702 :a7702.
+:a7703 :a7703 :a7703.
+:a7704 :a7704 :a7704.
+:a7705 :a7705 :a7705.
+:a7706 :a7706 :a7706.
+:a7707 :a7707 :a7707.
+:a7708 :a7708 :a7708.
+:a7709 :a7709 :a7709.
+:a7710 :a7710 :a7710.
+:a7711 :a7711 :a7711.
+:a7712 :a7712 :a7712.
+:a7713 :a7713 :a7713.
+:a7714 :a7714 :a7714.
+:a7715 :a7715 :a7715.
+:a7716 :a7716 :a7716.
+:a7717 :a7717 :a7717.
+:a7718 :a7718 :a7718.
+:a7719 :a7719 :a7719.
+:a7720 :a7720 :a7720.
+:a7721 :a7721 :a7721.
+:a7722 :a7722 :a7722.
+:a7723 :a7723 :a7723.
+:a7724 :a7724 :a7724.
+:a7725 :a7725 :a7725.
+:a7726 :a7726 :a7726.
+:a7727 :a7727 :a7727.
+:a7728 :a7728 :a7728.
+:a7729 :a7729 :a7729.
+:a7730 :a7730 :a7730.
+:a7731 :a7731 :a7731.
+:a7732 :a7732 :a7732.
+:a7733 :a7733 :a7733.
+:a7734 :a7734 :a7734.
+:a7735 :a7735 :a7735.
+:a7736 :a7736 :a7736.
+:a7737 :a7737 :a7737.
+:a7738 :a7738 :a7738.
+:a7739 :a7739 :a7739.
+:a7740 :a7740 :a7740.
+:a7741 :a7741 :a7741.
+:a7742 :a7742 :a7742.
+:a7743 :a7743 :a7743.
+:a7744 :a7744 :a7744.
+:a7745 :a7745 :a7745.
+:a7746 :a7746 :a7746.
+:a7747 :a7747 :a7747.
+:a7748 :a7748 :a7748.
+:a7749 :a7749 :a7749.
+:a7750 :a7750 :a7750.
+:a7751 :a7751 :a7751.
+:a7752 :a7752 :a7752.
+:a7753 :a7753 :a7753.
+:a7754 :a7754 :a7754.
+:a7755 :a7755 :a7755.
+:a7756 :a7756 :a7756.
+:a7757 :a7757 :a7757.
+:a7758 :a7758 :a7758.
+:a7759 :a7759 :a7759.
+:a7760 :a7760 :a7760.
+:a7761 :a7761 :a7761.
+:a7762 :a7762 :a7762.
+:a7763 :a7763 :a7763.
+:a7764 :a7764 :a7764.
+:a7765 :a7765 :a7765.
+:a7766 :a7766 :a7766.
+:a7767 :a7767 :a7767.
+:a7768 :a7768 :a7768.
+:a7769 :a7769 :a7769.
+:a7770 :a7770 :a7770.
+:a7771 :a7771 :a7771.
+:a7772 :a7772 :a7772.
+:a7773 :a7773 :a7773.
+:a7774 :a7774 :a7774.
+:a7775 :a7775 :a7775.
+:a7776 :a7776 :a7776.
+:a7777 :a7777 :a7777.
+:a7778 :a7778 :a7778.
+:a7779 :a7779 :a7779.
+:a7780 :a7780 :a7780.
+:a7781 :a7781 :a7781.
+:a7782 :a7782 :a7782.
+:a7783 :a7783 :a7783.
+:a7784 :a7784 :a7784.
+:a7785 :a7785 :a7785.
+:a7786 :a7786 :a7786.
+:a7787 :a7787 :a7787.
+:a7788 :a7788 :a7788.
+:a7789 :a7789 :a7789.
+:a7790 :a7790 :a7790.
+:a7791 :a7791 :a7791.
+:a7792 :a7792 :a7792.
+:a7793 :a7793 :a7793.
+:a7794 :a7794 :a7794.
+:a7795 :a7795 :a7795.
+:a7796 :a7796 :a7796.
+:a7797 :a7797 :a7797.
+:a7798 :a7798 :a7798.
+:a7799 :a7799 :a7799.
+:a7800 :a7800 :a7800.
+:a7801 :a7801 :a7801.
+:a7802 :a7802 :a7802.
+:a7803 :a7803 :a7803.
+:a7804 :a7804 :a7804.
+:a7805 :a7805 :a7805.
+:a7806 :a7806 :a7806.
+:a7807 :a7807 :a7807.
+:a7808 :a7808 :a7808.
+:a7809 :a7809 :a7809.
+:a7810 :a7810 :a7810.
+:a7811 :a7811 :a7811.
+:a7812 :a7812 :a7812.
+:a7813 :a7813 :a7813.
+:a7814 :a7814 :a7814.
+:a7815 :a7815 :a7815.
+:a7816 :a7816 :a7816.
+:a7817 :a7817 :a7817.
+:a7818 :a7818 :a7818.
+:a7819 :a7819 :a7819.
+:a7820 :a7820 :a7820.
+:a7821 :a7821 :a7821.
+:a7822 :a7822 :a7822.
+:a7823 :a7823 :a7823.
+:a7824 :a7824 :a7824.
+:a7825 :a7825 :a7825.
+:a7826 :a7826 :a7826.
+:a7827 :a7827 :a7827.
+:a7828 :a7828 :a7828.
+:a7829 :a7829 :a7829.
+:a7830 :a7830 :a7830.
+:a7831 :a7831 :a7831.
+:a7832 :a7832 :a7832.
+:a7833 :a7833 :a7833.
+:a7834 :a7834 :a7834.
+:a7835 :a7835 :a7835.
+:a7836 :a7836 :a7836.
+:a7837 :a7837 :a7837.
+:a7838 :a7838 :a7838.
+:a7839 :a7839 :a7839.
+:a7840 :a7840 :a7840.
+:a7841 :a7841 :a7841.
+:a7842 :a7842 :a7842.
+:a7843 :a7843 :a7843.
+:a7844 :a7844 :a7844.
+:a7845 :a7845 :a7845.
+:a7846 :a7846 :a7846.
+:a7847 :a7847 :a7847.
+:a7848 :a7848 :a7848.
+:a7849 :a7849 :a7849.
+:a7850 :a7850 :a7850.
+:a7851 :a7851 :a7851.
+:a7852 :a7852 :a7852.
+:a7853 :a7853 :a7853.
+:a7854 :a7854 :a7854.
+:a7855 :a7855 :a7855.
+:a7856 :a7856 :a7856.
+:a7857 :a7857 :a7857.
+:a7858 :a7858 :a7858.
+:a7859 :a7859 :a7859.
+:a7860 :a7860 :a7860.
+:a7861 :a7861 :a7861.
+:a7862 :a7862 :a7862.
+:a7863 :a7863 :a7863.
+:a7864 :a7864 :a7864.
+:a7865 :a7865 :a7865.
+:a7866 :a7866 :a7866.
+:a7867 :a7867 :a7867.
+:a7868 :a7868 :a7868.
+:a7869 :a7869 :a7869.
+:a7870 :a7870 :a7870.
+:a7871 :a7871 :a7871.
+:a7872 :a7872 :a7872.
+:a7873 :a7873 :a7873.
+:a7874 :a7874 :a7874.
+:a7875 :a7875 :a7875.
+:a7876 :a7876 :a7876.
+:a7877 :a7877 :a7877.
+:a7878 :a7878 :a7878.
+:a7879 :a7879 :a7879.
+:a7880 :a7880 :a7880.
+:a7881 :a7881 :a7881.
+:a7882 :a7882 :a7882.
+:a7883 :a7883 :a7883.
+:a7884 :a7884 :a7884.
+:a7885 :a7885 :a7885.
+:a7886 :a7886 :a7886.
+:a7887 :a7887 :a7887.
+:a7888 :a7888 :a7888.
+:a7889 :a7889 :a7889.
+:a7890 :a7890 :a7890.
+:a7891 :a7891 :a7891.
+:a7892 :a7892 :a7892.
+:a7893 :a7893 :a7893.
+:a7894 :a7894 :a7894.
+:a7895 :a7895 :a7895.
+:a7896 :a7896 :a7896.
+:a7897 :a7897 :a7897.
+:a7898 :a7898 :a7898.
+:a7899 :a7899 :a7899.
+:a7900 :a7900 :a7900.
+:a7901 :a7901 :a7901.
+:a7902 :a7902 :a7902.
+:a7903 :a7903 :a7903.
+:a7904 :a7904 :a7904.
+:a7905 :a7905 :a7905.
+:a7906 :a7906 :a7906.
+:a7907 :a7907 :a7907.
+:a7908 :a7908 :a7908.
+:a7909 :a7909 :a7909.
+:a7910 :a7910 :a7910.
+:a7911 :a7911 :a7911.
+:a7912 :a7912 :a7912.
+:a7913 :a7913 :a7913.
+:a7914 :a7914 :a7914.
+:a7915 :a7915 :a7915.
+:a7916 :a7916 :a7916.
+:a7917 :a7917 :a7917.
+:a7918 :a7918 :a7918.
+:a7919 :a7919 :a7919.
+:a7920 :a7920 :a7920.
+:a7921 :a7921 :a7921.
+:a7922 :a7922 :a7922.
+:a7923 :a7923 :a7923.
+:a7924 :a7924 :a7924.
+:a7925 :a7925 :a7925.
+:a7926 :a7926 :a7926.
+:a7927 :a7927 :a7927.
+:a7928 :a7928 :a7928.
+:a7929 :a7929 :a7929.
+:a7930 :a7930 :a7930.
+:a7931 :a7931 :a7931.
+:a7932 :a7932 :a7932.
+:a7933 :a7933 :a7933.
+:a7934 :a7934 :a7934.
+:a7935 :a7935 :a7935.
+:a7936 :a7936 :a7936.
+:a7937 :a7937 :a7937.
+:a7938 :a7938 :a7938.
+:a7939 :a7939 :a7939.
+:a7940 :a7940 :a7940.
+:a7941 :a7941 :a7941.
+:a7942 :a7942 :a7942.
+:a7943 :a7943 :a7943.
+:a7944 :a7944 :a7944.
+:a7945 :a7945 :a7945.
+:a7946 :a7946 :a7946.
+:a7947 :a7947 :a7947.
+:a7948 :a7948 :a7948.
+:a7949 :a7949 :a7949.
+:a7950 :a7950 :a7950.
+:a7951 :a7951 :a7951.
+:a7952 :a7952 :a7952.
+:a7953 :a7953 :a7953.
+:a7954 :a7954 :a7954.
+:a7955 :a7955 :a7955.
+:a7956 :a7956 :a7956.
+:a7957 :a7957 :a7957.
+:a7958 :a7958 :a7958.
+:a7959 :a7959 :a7959.
+:a7960 :a7960 :a7960.
+:a7961 :a7961 :a7961.
+:a7962 :a7962 :a7962.
+:a7963 :a7963 :a7963.
+:a7964 :a7964 :a7964.
+:a7965 :a7965 :a7965.
+:a7966 :a7966 :a7966.
+:a7967 :a7967 :a7967.
+:a7968 :a7968 :a7968.
+:a7969 :a7969 :a7969.
+:a7970 :a7970 :a7970.
+:a7971 :a7971 :a7971.
+:a7972 :a7972 :a7972.
+:a7973 :a7973 :a7973.
+:a7974 :a7974 :a7974.
+:a7975 :a7975 :a7975.
+:a7976 :a7976 :a7976.
+:a7977 :a7977 :a7977.
+:a7978 :a7978 :a7978.
+:a7979 :a7979 :a7979.
+:a7980 :a7980 :a7980.
+:a7981 :a7981 :a7981.
+:a7982 :a7982 :a7982.
+:a7983 :a7983 :a7983.
+:a7984 :a7984 :a7984.
+:a7985 :a7985 :a7985.
+:a7986 :a7986 :a7986.
+:a7987 :a7987 :a7987.
+:a7988 :a7988 :a7988.
+:a7989 :a7989 :a7989.
+:a7990 :a7990 :a7990.
+:a7991 :a7991 :a7991.
+:a7992 :a7992 :a7992.
+:a7993 :a7993 :a7993.
+:a7994 :a7994 :a7994.
+:a7995 :a7995 :a7995.
+:a7996 :a7996 :a7996.
+:a7997 :a7997 :a7997.
+:a7998 :a7998 :a7998.
+:a7999 :a7999 :a7999.
+:a8000 :a8000 :a8000.
+:a8001 :a8001 :a8001.
+:a8002 :a8002 :a8002.
+:a8003 :a8003 :a8003.
+:a8004 :a8004 :a8004.
+:a8005 :a8005 :a8005.
+:a8006 :a8006 :a8006.
+:a8007 :a8007 :a8007.
+:a8008 :a8008 :a8008.
+:a8009 :a8009 :a8009.
+:a8010 :a8010 :a8010.
+:a8011 :a8011 :a8011.
+:a8012 :a8012 :a8012.
+:a8013 :a8013 :a8013.
+:a8014 :a8014 :a8014.
+:a8015 :a8015 :a8015.
+:a8016 :a8016 :a8016.
+:a8017 :a8017 :a8017.
+:a8018 :a8018 :a8018.
+:a8019 :a8019 :a8019.
+:a8020 :a8020 :a8020.
+:a8021 :a8021 :a8021.
+:a8022 :a8022 :a8022.
+:a8023 :a8023 :a8023.
+:a8024 :a8024 :a8024.
+:a8025 :a8025 :a8025.
+:a8026 :a8026 :a8026.
+:a8027 :a8027 :a8027.
+:a8028 :a8028 :a8028.
+:a8029 :a8029 :a8029.
+:a8030 :a8030 :a8030.
+:a8031 :a8031 :a8031.
+:a8032 :a8032 :a8032.
+:a8033 :a8033 :a8033.
+:a8034 :a8034 :a8034.
+:a8035 :a8035 :a8035.
+:a8036 :a8036 :a8036.
+:a8037 :a8037 :a8037.
+:a8038 :a8038 :a8038.
+:a8039 :a8039 :a8039.
+:a8040 :a8040 :a8040.
+:a8041 :a8041 :a8041.
+:a8042 :a8042 :a8042.
+:a8043 :a8043 :a8043.
+:a8044 :a8044 :a8044.
+:a8045 :a8045 :a8045.
+:a8046 :a8046 :a8046.
+:a8047 :a8047 :a8047.
+:a8048 :a8048 :a8048.
+:a8049 :a8049 :a8049.
+:a8050 :a8050 :a8050.
+:a8051 :a8051 :a8051.
+:a8052 :a8052 :a8052.
+:a8053 :a8053 :a8053.
+:a8054 :a8054 :a8054.
+:a8055 :a8055 :a8055.
+:a8056 :a8056 :a8056.
+:a8057 :a8057 :a8057.
+:a8058 :a8058 :a8058.
+:a8059 :a8059 :a8059.
+:a8060 :a8060 :a8060.
+:a8061 :a8061 :a8061.
+:a8062 :a8062 :a8062.
+:a8063 :a8063 :a8063.
+:a8064 :a8064 :a8064.
+:a8065 :a8065 :a8065.
+:a8066 :a8066 :a8066.
+:a8067 :a8067 :a8067.
+:a8068 :a8068 :a8068.
+:a8069 :a8069 :a8069.
+:a8070 :a8070 :a8070.
+:a8071 :a8071 :a8071.
+:a8072 :a8072 :a8072.
+:a8073 :a8073 :a8073.
+:a8074 :a8074 :a8074.
+:a8075 :a8075 :a8075.
+:a8076 :a8076 :a8076.
+:a8077 :a8077 :a8077.
+:a8078 :a8078 :a8078.
+:a8079 :a8079 :a8079.
+:a8080 :a8080 :a8080.
+:a8081 :a8081 :a8081.
+:a8082 :a8082 :a8082.
+:a8083 :a8083 :a8083.
+:a8084 :a8084 :a8084.
+:a8085 :a8085 :a8085.
+:a8086 :a8086 :a8086.
+:a8087 :a8087 :a8087.
+:a8088 :a8088 :a8088.
+:a8089 :a8089 :a8089.
+:a8090 :a8090 :a8090.
+:a8091 :a8091 :a8091.
+:a8092 :a8092 :a8092.
+:a8093 :a8093 :a8093.
+:a8094 :a8094 :a8094.
+:a8095 :a8095 :a8095.
+:a8096 :a8096 :a8096.
+:a8097 :a8097 :a8097.
+:a8098 :a8098 :a8098.
+:a8099 :a8099 :a8099.
+:a8100 :a8100 :a8100.
+:a8101 :a8101 :a8101.
+:a8102 :a8102 :a8102.
+:a8103 :a8103 :a8103.
+:a8104 :a8104 :a8104.
+:a8105 :a8105 :a8105.
+:a8106 :a8106 :a8106.
+:a8107 :a8107 :a8107.
+:a8108 :a8108 :a8108.
+:a8109 :a8109 :a8109.
+:a8110 :a8110 :a8110.
+:a8111 :a8111 :a8111.
+:a8112 :a8112 :a8112.
+:a8113 :a8113 :a8113.
+:a8114 :a8114 :a8114.
+:a8115 :a8115 :a8115.
+:a8116 :a8116 :a8116.
+:a8117 :a8117 :a8117.
+:a8118 :a8118 :a8118.
+:a8119 :a8119 :a8119.
+:a8120 :a8120 :a8120.
+:a8121 :a8121 :a8121.
+:a8122 :a8122 :a8122.
+:a8123 :a8123 :a8123.
+:a8124 :a8124 :a8124.
+:a8125 :a8125 :a8125.
+:a8126 :a8126 :a8126.
+:a8127 :a8127 :a8127.
+:a8128 :a8128 :a8128.
+:a8129 :a8129 :a8129.
+:a8130 :a8130 :a8130.
+:a8131 :a8131 :a8131.
+:a8132 :a8132 :a8132.
+:a8133 :a8133 :a8133.
+:a8134 :a8134 :a8134.
+:a8135 :a8135 :a8135.
+:a8136 :a8136 :a8136.
+:a8137 :a8137 :a8137.
+:a8138 :a8138 :a8138.
+:a8139 :a8139 :a8139.
+:a8140 :a8140 :a8140.
+:a8141 :a8141 :a8141.
+:a8142 :a8142 :a8142.
+:a8143 :a8143 :a8143.
+:a8144 :a8144 :a8144.
+:a8145 :a8145 :a8145.
+:a8146 :a8146 :a8146.
+:a8147 :a8147 :a8147.
+:a8148 :a8148 :a8148.
+:a8149 :a8149 :a8149.
+:a8150 :a8150 :a8150.
+:a8151 :a8151 :a8151.
+:a8152 :a8152 :a8152.
+:a8153 :a8153 :a8153.
+:a8154 :a8154 :a8154.
+:a8155 :a8155 :a8155.
+:a8156 :a8156 :a8156.
+:a8157 :a8157 :a8157.
+:a8158 :a8158 :a8158.
+:a8159 :a8159 :a8159.
+:a8160 :a8160 :a8160.
+:a8161 :a8161 :a8161.
+:a8162 :a8162 :a8162.
+:a8163 :a8163 :a8163.
+:a8164 :a8164 :a8164.
+:a8165 :a8165 :a8165.
+:a8166 :a8166 :a8166.
+:a8167 :a8167 :a8167.
+:a8168 :a8168 :a8168.
+:a8169 :a8169 :a8169.
+:a8170 :a8170 :a8170.
+:a8171 :a8171 :a8171.
+:a8172 :a8172 :a8172.
+:a8173 :a8173 :a8173.
+:a8174 :a8174 :a8174.
+:a8175 :a8175 :a8175.
+:a8176 :a8176 :a8176.
+:a8177 :a8177 :a8177.
+:a8178 :a8178 :a8178.
+:a8179 :a8179 :a8179.
+:a8180 :a8180 :a8180.
+:a8181 :a8181 :a8181.
+:a8182 :a8182 :a8182.
+:a8183 :a8183 :a8183.
+:a8184 :a8184 :a8184.
+:a8185 :a8185 :a8185.
+:a8186 :a8186 :a8186.
+:a8187 :a8187 :a8187.
+:a8188 :a8188 :a8188.
+:a8189 :a8189 :a8189.
+:a8190 :a8190 :a8190.
+:a8191 :a8191 :a8191.
+:a8192 :a8192 :a8192.
+:a8193 :a8193 :a8193.
+:a8194 :a8194 :a8194.
+:a8195 :a8195 :a8195.
+:a8196 :a8196 :a8196.
+:a8197 :a8197 :a8197.
+:a8198 :a8198 :a8198.
+:a8199 :a8199 :a8199.
+:a8200 :a8200 :a8200.
+:a8201 :a8201 :a8201.
+:a8202 :a8202 :a8202.
+:a8203 :a8203 :a8203.
+:a8204 :a8204 :a8204.
+:a8205 :a8205 :a8205.
+:a8206 :a8206 :a8206.
+:a8207 :a8207 :a8207.
+:a8208 :a8208 :a8208.
+:a8209 :a8209 :a8209.
+:a8210 :a8210 :a8210.
+:a8211 :a8211 :a8211.
+:a8212 :a8212 :a8212.
+:a8213 :a8213 :a8213.
+:a8214 :a8214 :a8214.
+:a8215 :a8215 :a8215.
+:a8216 :a8216 :a8216.
+:a8217 :a8217 :a8217.
+:a8218 :a8218 :a8218.
+:a8219 :a8219 :a8219.
+:a8220 :a8220 :a8220.
+:a8221 :a8221 :a8221.
+:a8222 :a8222 :a8222.
+:a8223 :a8223 :a8223.
+:a8224 :a8224 :a8224.
+:a8225 :a8225 :a8225.
+:a8226 :a8226 :a8226.
+:a8227 :a8227 :a8227.
+:a8228 :a8228 :a8228.
+:a8229 :a8229 :a8229.
+:a8230 :a8230 :a8230.
+:a8231 :a8231 :a8231.
+:a8232 :a8232 :a8232.
+:a8233 :a8233 :a8233.
+:a8234 :a8234 :a8234.
+:a8235 :a8235 :a8235.
+:a8236 :a8236 :a8236.
+:a8237 :a8237 :a8237.
+:a8238 :a8238 :a8238.
+:a8239 :a8239 :a8239.
+:a8240 :a8240 :a8240.
+:a8241 :a8241 :a8241.
+:a8242 :a8242 :a8242.
+:a8243 :a8243 :a8243.
+:a8244 :a8244 :a8244.
+:a8245 :a8245 :a8245.
+:a8246 :a8246 :a8246.
+:a8247 :a8247 :a8247.
+:a8248 :a8248 :a8248.
+:a8249 :a8249 :a8249.
+:a8250 :a8250 :a8250.
+:a8251 :a8251 :a8251.
+:a8252 :a8252 :a8252.
+:a8253 :a8253 :a8253.
+:a8254 :a8254 :a8254.
+:a8255 :a8255 :a8255.
+:a8256 :a8256 :a8256.
+:a8257 :a8257 :a8257.
+:a8258 :a8258 :a8258.
+:a8259 :a8259 :a8259.
+:a8260 :a8260 :a8260.
+:a8261 :a8261 :a8261.
+:a8262 :a8262 :a8262.
+:a8263 :a8263 :a8263.
+:a8264 :a8264 :a8264.
+:a8265 :a8265 :a8265.
+:a8266 :a8266 :a8266.
+:a8267 :a8267 :a8267.
+:a8268 :a8268 :a8268.
+:a8269 :a8269 :a8269.
+:a8270 :a8270 :a8270.
+:a8271 :a8271 :a8271.
+:a8272 :a8272 :a8272.
+:a8273 :a8273 :a8273.
+:a8274 :a8274 :a8274.
+:a8275 :a8275 :a8275.
+:a8276 :a8276 :a8276.
+:a8277 :a8277 :a8277.
+:a8278 :a8278 :a8278.
+:a8279 :a8279 :a8279.
+:a8280 :a8280 :a8280.
+:a8281 :a8281 :a8281.
+:a8282 :a8282 :a8282.
+:a8283 :a8283 :a8283.
+:a8284 :a8284 :a8284.
+:a8285 :a8285 :a8285.
+:a8286 :a8286 :a8286.
+:a8287 :a8287 :a8287.
+:a8288 :a8288 :a8288.
+:a8289 :a8289 :a8289.
+:a8290 :a8290 :a8290.
+:a8291 :a8291 :a8291.
+:a8292 :a8292 :a8292.
+:a8293 :a8293 :a8293.
+:a8294 :a8294 :a8294.
+:a8295 :a8295 :a8295.
+:a8296 :a8296 :a8296.
+:a8297 :a8297 :a8297.
+:a8298 :a8298 :a8298.
+:a8299 :a8299 :a8299.
+:a8300 :a8300 :a8300.
+:a8301 :a8301 :a8301.
+:a8302 :a8302 :a8302.
+:a8303 :a8303 :a8303.
+:a8304 :a8304 :a8304.
+:a8305 :a8305 :a8305.
+:a8306 :a8306 :a8306.
+:a8307 :a8307 :a8307.
+:a8308 :a8308 :a8308.
+:a8309 :a8309 :a8309.
+:a8310 :a8310 :a8310.
+:a8311 :a8311 :a8311.
+:a8312 :a8312 :a8312.
+:a8313 :a8313 :a8313.
+:a8314 :a8314 :a8314.
+:a8315 :a8315 :a8315.
+:a8316 :a8316 :a8316.
+:a8317 :a8317 :a8317.
+:a8318 :a8318 :a8318.
+:a8319 :a8319 :a8319.
+:a8320 :a8320 :a8320.
+:a8321 :a8321 :a8321.
+:a8322 :a8322 :a8322.
+:a8323 :a8323 :a8323.
+:a8324 :a8324 :a8324.
+:a8325 :a8325 :a8325.
+:a8326 :a8326 :a8326.
+:a8327 :a8327 :a8327.
+:a8328 :a8328 :a8328.
+:a8329 :a8329 :a8329.
+:a8330 :a8330 :a8330.
+:a8331 :a8331 :a8331.
+:a8332 :a8332 :a8332.
+:a8333 :a8333 :a8333.
+:a8334 :a8334 :a8334.
+:a8335 :a8335 :a8335.
+:a8336 :a8336 :a8336.
+:a8337 :a8337 :a8337.
+:a8338 :a8338 :a8338.
+:a8339 :a8339 :a8339.
+:a8340 :a8340 :a8340.
+:a8341 :a8341 :a8341.
+:a8342 :a8342 :a8342.
+:a8343 :a8343 :a8343.
+:a8344 :a8344 :a8344.
+:a8345 :a8345 :a8345.
+:a8346 :a8346 :a8346.
+:a8347 :a8347 :a8347.
+:a8348 :a8348 :a8348.
+:a8349 :a8349 :a8349.
+:a8350 :a8350 :a8350.
+:a8351 :a8351 :a8351.
+:a8352 :a8352 :a8352.
+:a8353 :a8353 :a8353.
+:a8354 :a8354 :a8354.
+:a8355 :a8355 :a8355.
+:a8356 :a8356 :a8356.
+:a8357 :a8357 :a8357.
+:a8358 :a8358 :a8358.
+:a8359 :a8359 :a8359.
+:a8360 :a8360 :a8360.
+:a8361 :a8361 :a8361.
+:a8362 :a8362 :a8362.
+:a8363 :a8363 :a8363.
+:a8364 :a8364 :a8364.
+:a8365 :a8365 :a8365.
+:a8366 :a8366 :a8366.
+:a8367 :a8367 :a8367.
+:a8368 :a8368 :a8368.
+:a8369 :a8369 :a8369.
+:a8370 :a8370 :a8370.
+:a8371 :a8371 :a8371.
+:a8372 :a8372 :a8372.
+:a8373 :a8373 :a8373.
+:a8374 :a8374 :a8374.
+:a8375 :a8375 :a8375.
+:a8376 :a8376 :a8376.
+:a8377 :a8377 :a8377.
+:a8378 :a8378 :a8378.
+:a8379 :a8379 :a8379.
+:a8380 :a8380 :a8380.
+:a8381 :a8381 :a8381.
+:a8382 :a8382 :a8382.
+:a8383 :a8383 :a8383.
+:a8384 :a8384 :a8384.
+:a8385 :a8385 :a8385.
+:a8386 :a8386 :a8386.
+:a8387 :a8387 :a8387.
+:a8388 :a8388 :a8388.
+:a8389 :a8389 :a8389.
+:a8390 :a8390 :a8390.
+:a8391 :a8391 :a8391.
+:a8392 :a8392 :a8392.
+:a8393 :a8393 :a8393.
+:a8394 :a8394 :a8394.
+:a8395 :a8395 :a8395.
+:a8396 :a8396 :a8396.
+:a8397 :a8397 :a8397.
+:a8398 :a8398 :a8398.
+:a8399 :a8399 :a8399.
+:a8400 :a8400 :a8400.
+:a8401 :a8401 :a8401.
+:a8402 :a8402 :a8402.
+:a8403 :a8403 :a8403.
+:a8404 :a8404 :a8404.
+:a8405 :a8405 :a8405.
+:a8406 :a8406 :a8406.
+:a8407 :a8407 :a8407.
+:a8408 :a8408 :a8408.
+:a8409 :a8409 :a8409.
+:a8410 :a8410 :a8410.
+:a8411 :a8411 :a8411.
+:a8412 :a8412 :a8412.
+:a8413 :a8413 :a8413.
+:a8414 :a8414 :a8414.
+:a8415 :a8415 :a8415.
+:a8416 :a8416 :a8416.
+:a8417 :a8417 :a8417.
+:a8418 :a8418 :a8418.
+:a8419 :a8419 :a8419.
+:a8420 :a8420 :a8420.
+:a8421 :a8421 :a8421.
+:a8422 :a8422 :a8422.
+:a8423 :a8423 :a8423.
+:a8424 :a8424 :a8424.
+:a8425 :a8425 :a8425.
+:a8426 :a8426 :a8426.
+:a8427 :a8427 :a8427.
+:a8428 :a8428 :a8428.
+:a8429 :a8429 :a8429.
+:a8430 :a8430 :a8430.
+:a8431 :a8431 :a8431.
+:a8432 :a8432 :a8432.
+:a8433 :a8433 :a8433.
+:a8434 :a8434 :a8434.
+:a8435 :a8435 :a8435.
+:a8436 :a8436 :a8436.
+:a8437 :a8437 :a8437.
+:a8438 :a8438 :a8438.
+:a8439 :a8439 :a8439.
+:a8440 :a8440 :a8440.
+:a8441 :a8441 :a8441.
+:a8442 :a8442 :a8442.
+:a8443 :a8443 :a8443.
+:a8444 :a8444 :a8444.
+:a8445 :a8445 :a8445.
+:a8446 :a8446 :a8446.
+:a8447 :a8447 :a8447.
+:a8448 :a8448 :a8448.
+:a8449 :a8449 :a8449.
+:a8450 :a8450 :a8450.
+:a8451 :a8451 :a8451.
+:a8452 :a8452 :a8452.
+:a8453 :a8453 :a8453.
+:a8454 :a8454 :a8454.
+:a8455 :a8455 :a8455.
+:a8456 :a8456 :a8456.
+:a8457 :a8457 :a8457.
+:a8458 :a8458 :a8458.
+:a8459 :a8459 :a8459.
+:a8460 :a8460 :a8460.
+:a8461 :a8461 :a8461.
+:a8462 :a8462 :a8462.
+:a8463 :a8463 :a8463.
+:a8464 :a8464 :a8464.
+:a8465 :a8465 :a8465.
+:a8466 :a8466 :a8466.
+:a8467 :a8467 :a8467.
+:a8468 :a8468 :a8468.
+:a8469 :a8469 :a8469.
+:a8470 :a8470 :a8470.
+:a8471 :a8471 :a8471.
+:a8472 :a8472 :a8472.
+:a8473 :a8473 :a8473.
+:a8474 :a8474 :a8474.
+:a8475 :a8475 :a8475.
+:a8476 :a8476 :a8476.
+:a8477 :a8477 :a8477.
+:a8478 :a8478 :a8478.
+:a8479 :a8479 :a8479.
+:a8480 :a8480 :a8480.
+:a8481 :a8481 :a8481.
+:a8482 :a8482 :a8482.
+:a8483 :a8483 :a8483.
+:a8484 :a8484 :a8484.
+:a8485 :a8485 :a8485.
+:a8486 :a8486 :a8486.
+:a8487 :a8487 :a8487.
+:a8488 :a8488 :a8488.
+:a8489 :a8489 :a8489.
+:a8490 :a8490 :a8490.
+:a8491 :a8491 :a8491.
+:a8492 :a8492 :a8492.
+:a8493 :a8493 :a8493.
+:a8494 :a8494 :a8494.
+:a8495 :a8495 :a8495.
+:a8496 :a8496 :a8496.
+:a8497 :a8497 :a8497.
+:a8498 :a8498 :a8498.
+:a8499 :a8499 :a8499.
+:a8500 :a8500 :a8500.
+:a8501 :a8501 :a8501.
+:a8502 :a8502 :a8502.
+:a8503 :a8503 :a8503.
+:a8504 :a8504 :a8504.
+:a8505 :a8505 :a8505.
+:a8506 :a8506 :a8506.
+:a8507 :a8507 :a8507.
+:a8508 :a8508 :a8508.
+:a8509 :a8509 :a8509.
+:a8510 :a8510 :a8510.
+:a8511 :a8511 :a8511.
+:a8512 :a8512 :a8512.
+:a8513 :a8513 :a8513.
+:a8514 :a8514 :a8514.
+:a8515 :a8515 :a8515.
+:a8516 :a8516 :a8516.
+:a8517 :a8517 :a8517.
+:a8518 :a8518 :a8518.
+:a8519 :a8519 :a8519.
+:a8520 :a8520 :a8520.
+:a8521 :a8521 :a8521.
+:a8522 :a8522 :a8522.
+:a8523 :a8523 :a8523.
+:a8524 :a8524 :a8524.
+:a8525 :a8525 :a8525.
+:a8526 :a8526 :a8526.
+:a8527 :a8527 :a8527.
+:a8528 :a8528 :a8528.
+:a8529 :a8529 :a8529.
+:a8530 :a8530 :a8530.
+:a8531 :a8531 :a8531.
+:a8532 :a8532 :a8532.
+:a8533 :a8533 :a8533.
+:a8534 :a8534 :a8534.
+:a8535 :a8535 :a8535.
+:a8536 :a8536 :a8536.
+:a8537 :a8537 :a8537.
+:a8538 :a8538 :a8538.
+:a8539 :a8539 :a8539.
+:a8540 :a8540 :a8540.
+:a8541 :a8541 :a8541.
+:a8542 :a8542 :a8542.
+:a8543 :a8543 :a8543.
+:a8544 :a8544 :a8544.
+:a8545 :a8545 :a8545.
+:a8546 :a8546 :a8546.
+:a8547 :a8547 :a8547.
+:a8548 :a8548 :a8548.
+:a8549 :a8549 :a8549.
+:a8550 :a8550 :a8550.
+:a8551 :a8551 :a8551.
+:a8552 :a8552 :a8552.
+:a8553 :a8553 :a8553.
+:a8554 :a8554 :a8554.
+:a8555 :a8555 :a8555.
+:a8556 :a8556 :a8556.
+:a8557 :a8557 :a8557.
+:a8558 :a8558 :a8558.
+:a8559 :a8559 :a8559.
+:a8560 :a8560 :a8560.
+:a8561 :a8561 :a8561.
+:a8562 :a8562 :a8562.
+:a8563 :a8563 :a8563.
+:a8564 :a8564 :a8564.
+:a8565 :a8565 :a8565.
+:a8566 :a8566 :a8566.
+:a8567 :a8567 :a8567.
+:a8568 :a8568 :a8568.
+:a8569 :a8569 :a8569.
+:a8570 :a8570 :a8570.
+:a8571 :a8571 :a8571.
+:a8572 :a8572 :a8572.
+:a8573 :a8573 :a8573.
+:a8574 :a8574 :a8574.
+:a8575 :a8575 :a8575.
+:a8576 :a8576 :a8576.
+:a8577 :a8577 :a8577.
+:a8578 :a8578 :a8578.
+:a8579 :a8579 :a8579.
+:a8580 :a8580 :a8580.
+:a8581 :a8581 :a8581.
+:a8582 :a8582 :a8582.
+:a8583 :a8583 :a8583.
+:a8584 :a8584 :a8584.
+:a8585 :a8585 :a8585.
+:a8586 :a8586 :a8586.
+:a8587 :a8587 :a8587.
+:a8588 :a8588 :a8588.
+:a8589 :a8589 :a8589.
+:a8590 :a8590 :a8590.
+:a8591 :a8591 :a8591.
+:a8592 :a8592 :a8592.
+:a8593 :a8593 :a8593.
+:a8594 :a8594 :a8594.
+:a8595 :a8595 :a8595.
+:a8596 :a8596 :a8596.
+:a8597 :a8597 :a8597.
+:a8598 :a8598 :a8598.
+:a8599 :a8599 :a8599.
+:a8600 :a8600 :a8600.
+:a8601 :a8601 :a8601.
+:a8602 :a8602 :a8602.
+:a8603 :a8603 :a8603.
+:a8604 :a8604 :a8604.
+:a8605 :a8605 :a8605.
+:a8606 :a8606 :a8606.
+:a8607 :a8607 :a8607.
+:a8608 :a8608 :a8608.
+:a8609 :a8609 :a8609.
+:a8610 :a8610 :a8610.
+:a8611 :a8611 :a8611.
+:a8612 :a8612 :a8612.
+:a8613 :a8613 :a8613.
+:a8614 :a8614 :a8614.
+:a8615 :a8615 :a8615.
+:a8616 :a8616 :a8616.
+:a8617 :a8617 :a8617.
+:a8618 :a8618 :a8618.
+:a8619 :a8619 :a8619.
+:a8620 :a8620 :a8620.
+:a8621 :a8621 :a8621.
+:a8622 :a8622 :a8622.
+:a8623 :a8623 :a8623.
+:a8624 :a8624 :a8624.
+:a8625 :a8625 :a8625.
+:a8626 :a8626 :a8626.
+:a8627 :a8627 :a8627.
+:a8628 :a8628 :a8628.
+:a8629 :a8629 :a8629.
+:a8630 :a8630 :a8630.
+:a8631 :a8631 :a8631.
+:a8632 :a8632 :a8632.
+:a8633 :a8633 :a8633.
+:a8634 :a8634 :a8634.
+:a8635 :a8635 :a8635.
+:a8636 :a8636 :a8636.
+:a8637 :a8637 :a8637.
+:a8638 :a8638 :a8638.
+:a8639 :a8639 :a8639.
+:a8640 :a8640 :a8640.
+:a8641 :a8641 :a8641.
+:a8642 :a8642 :a8642.
+:a8643 :a8643 :a8643.
+:a8644 :a8644 :a8644.
+:a8645 :a8645 :a8645.
+:a8646 :a8646 :a8646.
+:a8647 :a8647 :a8647.
+:a8648 :a8648 :a8648.
+:a8649 :a8649 :a8649.
+:a8650 :a8650 :a8650.
+:a8651 :a8651 :a8651.
+:a8652 :a8652 :a8652.
+:a8653 :a8653 :a8653.
+:a8654 :a8654 :a8654.
+:a8655 :a8655 :a8655.
+:a8656 :a8656 :a8656.
+:a8657 :a8657 :a8657.
+:a8658 :a8658 :a8658.
+:a8659 :a8659 :a8659.
+:a8660 :a8660 :a8660.
+:a8661 :a8661 :a8661.
+:a8662 :a8662 :a8662.
+:a8663 :a8663 :a8663.
+:a8664 :a8664 :a8664.
+:a8665 :a8665 :a8665.
+:a8666 :a8666 :a8666.
+:a8667 :a8667 :a8667.
+:a8668 :a8668 :a8668.
+:a8669 :a8669 :a8669.
+:a8670 :a8670 :a8670.
+:a8671 :a8671 :a8671.
+:a8672 :a8672 :a8672.
+:a8673 :a8673 :a8673.
+:a8674 :a8674 :a8674.
+:a8675 :a8675 :a8675.
+:a8676 :a8676 :a8676.
+:a8677 :a8677 :a8677.
+:a8678 :a8678 :a8678.
+:a8679 :a8679 :a8679.
+:a8680 :a8680 :a8680.
+:a8681 :a8681 :a8681.
+:a8682 :a8682 :a8682.
+:a8683 :a8683 :a8683.
+:a8684 :a8684 :a8684.
+:a8685 :a8685 :a8685.
+:a8686 :a8686 :a8686.
+:a8687 :a8687 :a8687.
+:a8688 :a8688 :a8688.
+:a8689 :a8689 :a8689.
+:a8690 :a8690 :a8690.
+:a8691 :a8691 :a8691.
+:a8692 :a8692 :a8692.
+:a8693 :a8693 :a8693.
+:a8694 :a8694 :a8694.
+:a8695 :a8695 :a8695.
+:a8696 :a8696 :a8696.
+:a8697 :a8697 :a8697.
+:a8698 :a8698 :a8698.
+:a8699 :a8699 :a8699.
+:a8700 :a8700 :a8700.
+:a8701 :a8701 :a8701.
+:a8702 :a8702 :a8702.
+:a8703 :a8703 :a8703.
+:a8704 :a8704 :a8704.
+:a8705 :a8705 :a8705.
+:a8706 :a8706 :a8706.
+:a8707 :a8707 :a8707.
+:a8708 :a8708 :a8708.
+:a8709 :a8709 :a8709.
+:a8710 :a8710 :a8710.
+:a8711 :a8711 :a8711.
+:a8712 :a8712 :a8712.
+:a8713 :a8713 :a8713.
+:a8714 :a8714 :a8714.
+:a8715 :a8715 :a8715.
+:a8716 :a8716 :a8716.
+:a8717 :a8717 :a8717.
+:a8718 :a8718 :a8718.
+:a8719 :a8719 :a8719.
+:a8720 :a8720 :a8720.
+:a8721 :a8721 :a8721.
+:a8722 :a8722 :a8722.
+:a8723 :a8723 :a8723.
+:a8724 :a8724 :a8724.
+:a8725 :a8725 :a8725.
+:a8726 :a8726 :a8726.
+:a8727 :a8727 :a8727.
+:a8728 :a8728 :a8728.
+:a8729 :a8729 :a8729.
+:a8730 :a8730 :a8730.
+:a8731 :a8731 :a8731.
+:a8732 :a8732 :a8732.
+:a8733 :a8733 :a8733.
+:a8734 :a8734 :a8734.
+:a8735 :a8735 :a8735.
+:a8736 :a8736 :a8736.
+:a8737 :a8737 :a8737.
+:a8738 :a8738 :a8738.
+:a8739 :a8739 :a8739.
+:a8740 :a8740 :a8740.
+:a8741 :a8741 :a8741.
+:a8742 :a8742 :a8742.
+:a8743 :a8743 :a8743.
+:a8744 :a8744 :a8744.
+:a8745 :a8745 :a8745.
+:a8746 :a8746 :a8746.
+:a8747 :a8747 :a8747.
+:a8748 :a8748 :a8748.
+:a8749 :a8749 :a8749.
+:a8750 :a8750 :a8750.
+:a8751 :a8751 :a8751.
+:a8752 :a8752 :a8752.
+:a8753 :a8753 :a8753.
+:a8754 :a8754 :a8754.
+:a8755 :a8755 :a8755.
+:a8756 :a8756 :a8756.
+:a8757 :a8757 :a8757.
+:a8758 :a8758 :a8758.
+:a8759 :a8759 :a8759.
+:a8760 :a8760 :a8760.
+:a8761 :a8761 :a8761.
+:a8762 :a8762 :a8762.
+:a8763 :a8763 :a8763.
+:a8764 :a8764 :a8764.
+:a8765 :a8765 :a8765.
+:a8766 :a8766 :a8766.
+:a8767 :a8767 :a8767.
+:a8768 :a8768 :a8768.
+:a8769 :a8769 :a8769.
+:a8770 :a8770 :a8770.
+:a8771 :a8771 :a8771.
+:a8772 :a8772 :a8772.
+:a8773 :a8773 :a8773.
+:a8774 :a8774 :a8774.
+:a8775 :a8775 :a8775.
+:a8776 :a8776 :a8776.
+:a8777 :a8777 :a8777.
+:a8778 :a8778 :a8778.
+:a8779 :a8779 :a8779.
+:a8780 :a8780 :a8780.
+:a8781 :a8781 :a8781.
+:a8782 :a8782 :a8782.
+:a8783 :a8783 :a8783.
+:a8784 :a8784 :a8784.
+:a8785 :a8785 :a8785.
+:a8786 :a8786 :a8786.
+:a8787 :a8787 :a8787.
+:a8788 :a8788 :a8788.
+:a8789 :a8789 :a8789.
+:a8790 :a8790 :a8790.
+:a8791 :a8791 :a8791.
+:a8792 :a8792 :a8792.
+:a8793 :a8793 :a8793.
+:a8794 :a8794 :a8794.
+:a8795 :a8795 :a8795.
+:a8796 :a8796 :a8796.
+:a8797 :a8797 :a8797.
+:a8798 :a8798 :a8798.
+:a8799 :a8799 :a8799.
+:a8800 :a8800 :a8800.
+:a8801 :a8801 :a8801.
+:a8802 :a8802 :a8802.
+:a8803 :a8803 :a8803.
+:a8804 :a8804 :a8804.
+:a8805 :a8805 :a8805.
+:a8806 :a8806 :a8806.
+:a8807 :a8807 :a8807.
+:a8808 :a8808 :a8808.
+:a8809 :a8809 :a8809.
+:a8810 :a8810 :a8810.
+:a8811 :a8811 :a8811.
+:a8812 :a8812 :a8812.
+:a8813 :a8813 :a8813.
+:a8814 :a8814 :a8814.
+:a8815 :a8815 :a8815.
+:a8816 :a8816 :a8816.
+:a8817 :a8817 :a8817.
+:a8818 :a8818 :a8818.
+:a8819 :a8819 :a8819.
+:a8820 :a8820 :a8820.
+:a8821 :a8821 :a8821.
+:a8822 :a8822 :a8822.
+:a8823 :a8823 :a8823.
+:a8824 :a8824 :a8824.
+:a8825 :a8825 :a8825.
+:a8826 :a8826 :a8826.
+:a8827 :a8827 :a8827.
+:a8828 :a8828 :a8828.
+:a8829 :a8829 :a8829.
+:a8830 :a8830 :a8830.
+:a8831 :a8831 :a8831.
+:a8832 :a8832 :a8832.
+:a8833 :a8833 :a8833.
+:a8834 :a8834 :a8834.
+:a8835 :a8835 :a8835.
+:a8836 :a8836 :a8836.
+:a8837 :a8837 :a8837.
+:a8838 :a8838 :a8838.
+:a8839 :a8839 :a8839.
+:a8840 :a8840 :a8840.
+:a8841 :a8841 :a8841.
+:a8842 :a8842 :a8842.
+:a8843 :a8843 :a8843.
+:a8844 :a8844 :a8844.
+:a8845 :a8845 :a8845.
+:a8846 :a8846 :a8846.
+:a8847 :a8847 :a8847.
+:a8848 :a8848 :a8848.
+:a8849 :a8849 :a8849.
+:a8850 :a8850 :a8850.
+:a8851 :a8851 :a8851.
+:a8852 :a8852 :a8852.
+:a8853 :a8853 :a8853.
+:a8854 :a8854 :a8854.
+:a8855 :a8855 :a8855.
+:a8856 :a8856 :a8856.
+:a8857 :a8857 :a8857.
+:a8858 :a8858 :a8858.
+:a8859 :a8859 :a8859.
+:a8860 :a8860 :a8860.
+:a8861 :a8861 :a8861.
+:a8862 :a8862 :a8862.
+:a8863 :a8863 :a8863.
+:a8864 :a8864 :a8864.
+:a8865 :a8865 :a8865.
+:a8866 :a8866 :a8866.
+:a8867 :a8867 :a8867.
+:a8868 :a8868 :a8868.
+:a8869 :a8869 :a8869.
+:a8870 :a8870 :a8870.
+:a8871 :a8871 :a8871.
+:a8872 :a8872 :a8872.
+:a8873 :a8873 :a8873.
+:a8874 :a8874 :a8874.
+:a8875 :a8875 :a8875.
+:a8876 :a8876 :a8876.
+:a8877 :a8877 :a8877.
+:a8878 :a8878 :a8878.
+:a8879 :a8879 :a8879.
+:a8880 :a8880 :a8880.
+:a8881 :a8881 :a8881.
+:a8882 :a8882 :a8882.
+:a8883 :a8883 :a8883.
+:a8884 :a8884 :a8884.
+:a8885 :a8885 :a8885.
+:a8886 :a8886 :a8886.
+:a8887 :a8887 :a8887.
+:a8888 :a8888 :a8888.
+:a8889 :a8889 :a8889.
+:a8890 :a8890 :a8890.
+:a8891 :a8891 :a8891.
+:a8892 :a8892 :a8892.
+:a8893 :a8893 :a8893.
+:a8894 :a8894 :a8894.
+:a8895 :a8895 :a8895.
+:a8896 :a8896 :a8896.
+:a8897 :a8897 :a8897.
+:a8898 :a8898 :a8898.
+:a8899 :a8899 :a8899.
+:a8900 :a8900 :a8900.
+:a8901 :a8901 :a8901.
+:a8902 :a8902 :a8902.
+:a8903 :a8903 :a8903.
+:a8904 :a8904 :a8904.
+:a8905 :a8905 :a8905.
+:a8906 :a8906 :a8906.
+:a8907 :a8907 :a8907.
+:a8908 :a8908 :a8908.
+:a8909 :a8909 :a8909.
+:a8910 :a8910 :a8910.
+:a8911 :a8911 :a8911.
+:a8912 :a8912 :a8912.
+:a8913 :a8913 :a8913.
+:a8914 :a8914 :a8914.
+:a8915 :a8915 :a8915.
+:a8916 :a8916 :a8916.
+:a8917 :a8917 :a8917.
+:a8918 :a8918 :a8918.
+:a8919 :a8919 :a8919.
+:a8920 :a8920 :a8920.
+:a8921 :a8921 :a8921.
+:a8922 :a8922 :a8922.
+:a8923 :a8923 :a8923.
+:a8924 :a8924 :a8924.
+:a8925 :a8925 :a8925.
+:a8926 :a8926 :a8926.
+:a8927 :a8927 :a8927.
+:a8928 :a8928 :a8928.
+:a8929 :a8929 :a8929.
+:a8930 :a8930 :a8930.
+:a8931 :a8931 :a8931.
+:a8932 :a8932 :a8932.
+:a8933 :a8933 :a8933.
+:a8934 :a8934 :a8934.
+:a8935 :a8935 :a8935.
+:a8936 :a8936 :a8936.
+:a8937 :a8937 :a8937.
+:a8938 :a8938 :a8938.
+:a8939 :a8939 :a8939.
+:a8940 :a8940 :a8940.
+:a8941 :a8941 :a8941.
+:a8942 :a8942 :a8942.
+:a8943 :a8943 :a8943.
+:a8944 :a8944 :a8944.
+:a8945 :a8945 :a8945.
+:a8946 :a8946 :a8946.
+:a8947 :a8947 :a8947.
+:a8948 :a8948 :a8948.
+:a8949 :a8949 :a8949.
+:a8950 :a8950 :a8950.
+:a8951 :a8951 :a8951.
+:a8952 :a8952 :a8952.
+:a8953 :a8953 :a8953.
+:a8954 :a8954 :a8954.
+:a8955 :a8955 :a8955.
+:a8956 :a8956 :a8956.
+:a8957 :a8957 :a8957.
+:a8958 :a8958 :a8958.
+:a8959 :a8959 :a8959.
+:a8960 :a8960 :a8960.
+:a8961 :a8961 :a8961.
+:a8962 :a8962 :a8962.
+:a8963 :a8963 :a8963.
+:a8964 :a8964 :a8964.
+:a8965 :a8965 :a8965.
+:a8966 :a8966 :a8966.
+:a8967 :a8967 :a8967.
+:a8968 :a8968 :a8968.
+:a8969 :a8969 :a8969.
+:a8970 :a8970 :a8970.
+:a8971 :a8971 :a8971.
+:a8972 :a8972 :a8972.
+:a8973 :a8973 :a8973.
+:a8974 :a8974 :a8974.
+:a8975 :a8975 :a8975.
+:a8976 :a8976 :a8976.
+:a8977 :a8977 :a8977.
+:a8978 :a8978 :a8978.
+:a8979 :a8979 :a8979.
+:a8980 :a8980 :a8980.
+:a8981 :a8981 :a8981.
+:a8982 :a8982 :a8982.
+:a8983 :a8983 :a8983.
+:a8984 :a8984 :a8984.
+:a8985 :a8985 :a8985.
+:a8986 :a8986 :a8986.
+:a8987 :a8987 :a8987.
+:a8988 :a8988 :a8988.
+:a8989 :a8989 :a8989.
+:a8990 :a8990 :a8990.
+:a8991 :a8991 :a8991.
+:a8992 :a8992 :a8992.
+:a8993 :a8993 :a8993.
+:a8994 :a8994 :a8994.
+:a8995 :a8995 :a8995.
+:a8996 :a8996 :a8996.
+:a8997 :a8997 :a8997.
+:a8998 :a8998 :a8998.
+:a8999 :a8999 :a8999.
+:a9000 :a9000 :a9000.
+:a9001 :a9001 :a9001.
+:a9002 :a9002 :a9002.
+:a9003 :a9003 :a9003.
+:a9004 :a9004 :a9004.
+:a9005 :a9005 :a9005.
+:a9006 :a9006 :a9006.
+:a9007 :a9007 :a9007.
+:a9008 :a9008 :a9008.
+:a9009 :a9009 :a9009.
+:a9010 :a9010 :a9010.
+:a9011 :a9011 :a9011.
+:a9012 :a9012 :a9012.
+:a9013 :a9013 :a9013.
+:a9014 :a9014 :a9014.
+:a9015 :a9015 :a9015.
+:a9016 :a9016 :a9016.
+:a9017 :a9017 :a9017.
+:a9018 :a9018 :a9018.
+:a9019 :a9019 :a9019.
+:a9020 :a9020 :a9020.
+:a9021 :a9021 :a9021.
+:a9022 :a9022 :a9022.
+:a9023 :a9023 :a9023.
+:a9024 :a9024 :a9024.
+:a9025 :a9025 :a9025.
+:a9026 :a9026 :a9026.
+:a9027 :a9027 :a9027.
+:a9028 :a9028 :a9028.
+:a9029 :a9029 :a9029.
+:a9030 :a9030 :a9030.
+:a9031 :a9031 :a9031.
+:a9032 :a9032 :a9032.
+:a9033 :a9033 :a9033.
+:a9034 :a9034 :a9034.
+:a9035 :a9035 :a9035.
+:a9036 :a9036 :a9036.
+:a9037 :a9037 :a9037.
+:a9038 :a9038 :a9038.
+:a9039 :a9039 :a9039.
+:a9040 :a9040 :a9040.
+:a9041 :a9041 :a9041.
+:a9042 :a9042 :a9042.
+:a9043 :a9043 :a9043.
+:a9044 :a9044 :a9044.
+:a9045 :a9045 :a9045.
+:a9046 :a9046 :a9046.
+:a9047 :a9047 :a9047.
+:a9048 :a9048 :a9048.
+:a9049 :a9049 :a9049.
+:a9050 :a9050 :a9050.
+:a9051 :a9051 :a9051.
+:a9052 :a9052 :a9052.
+:a9053 :a9053 :a9053.
+:a9054 :a9054 :a9054.
+:a9055 :a9055 :a9055.
+:a9056 :a9056 :a9056.
+:a9057 :a9057 :a9057.
+:a9058 :a9058 :a9058.
+:a9059 :a9059 :a9059.
+:a9060 :a9060 :a9060.
+:a9061 :a9061 :a9061.
+:a9062 :a9062 :a9062.
+:a9063 :a9063 :a9063.
+:a9064 :a9064 :a9064.
+:a9065 :a9065 :a9065.
+:a9066 :a9066 :a9066.
+:a9067 :a9067 :a9067.
+:a9068 :a9068 :a9068.
+:a9069 :a9069 :a9069.
+:a9070 :a9070 :a9070.
+:a9071 :a9071 :a9071.
+:a9072 :a9072 :a9072.
+:a9073 :a9073 :a9073.
+:a9074 :a9074 :a9074.
+:a9075 :a9075 :a9075.
+:a9076 :a9076 :a9076.
+:a9077 :a9077 :a9077.
+:a9078 :a9078 :a9078.
+:a9079 :a9079 :a9079.
+:a9080 :a9080 :a9080.
+:a9081 :a9081 :a9081.
+:a9082 :a9082 :a9082.
+:a9083 :a9083 :a9083.
+:a9084 :a9084 :a9084.
+:a9085 :a9085 :a9085.
+:a9086 :a9086 :a9086.
+:a9087 :a9087 :a9087.
+:a9088 :a9088 :a9088.
+:a9089 :a9089 :a9089.
+:a9090 :a9090 :a9090.
+:a9091 :a9091 :a9091.
+:a9092 :a9092 :a9092.
+:a9093 :a9093 :a9093.
+:a9094 :a9094 :a9094.
+:a9095 :a9095 :a9095.
+:a9096 :a9096 :a9096.
+:a9097 :a9097 :a9097.
+:a9098 :a9098 :a9098.
+:a9099 :a9099 :a9099.
+:a9100 :a9100 :a9100.
+:a9101 :a9101 :a9101.
+:a9102 :a9102 :a9102.
+:a9103 :a9103 :a9103.
+:a9104 :a9104 :a9104.
+:a9105 :a9105 :a9105.
+:a9106 :a9106 :a9106.
+:a9107 :a9107 :a9107.
+:a9108 :a9108 :a9108.
+:a9109 :a9109 :a9109.
+:a9110 :a9110 :a9110.
+:a9111 :a9111 :a9111.
+:a9112 :a9112 :a9112.
+:a9113 :a9113 :a9113.
+:a9114 :a9114 :a9114.
+:a9115 :a9115 :a9115.
+:a9116 :a9116 :a9116.
+:a9117 :a9117 :a9117.
+:a9118 :a9118 :a9118.
+:a9119 :a9119 :a9119.
+:a9120 :a9120 :a9120.
+:a9121 :a9121 :a9121.
+:a9122 :a9122 :a9122.
+:a9123 :a9123 :a9123.
+:a9124 :a9124 :a9124.
+:a9125 :a9125 :a9125.
+:a9126 :a9126 :a9126.
+:a9127 :a9127 :a9127.
+:a9128 :a9128 :a9128.
+:a9129 :a9129 :a9129.
+:a9130 :a9130 :a9130.
+:a9131 :a9131 :a9131.
+:a9132 :a9132 :a9132.
+:a9133 :a9133 :a9133.
+:a9134 :a9134 :a9134.
+:a9135 :a9135 :a9135.
+:a9136 :a9136 :a9136.
+:a9137 :a9137 :a9137.
+:a9138 :a9138 :a9138.
+:a9139 :a9139 :a9139.
+:a9140 :a9140 :a9140.
+:a9141 :a9141 :a9141.
+:a9142 :a9142 :a9142.
+:a9143 :a9143 :a9143.
+:a9144 :a9144 :a9144.
+:a9145 :a9145 :a9145.
+:a9146 :a9146 :a9146.
+:a9147 :a9147 :a9147.
+:a9148 :a9148 :a9148.
+:a9149 :a9149 :a9149.
+:a9150 :a9150 :a9150.
+:a9151 :a9151 :a9151.
+:a9152 :a9152 :a9152.
+:a9153 :a9153 :a9153.
+:a9154 :a9154 :a9154.
+:a9155 :a9155 :a9155.
+:a9156 :a9156 :a9156.
+:a9157 :a9157 :a9157.
+:a9158 :a9158 :a9158.
+:a9159 :a9159 :a9159.
+:a9160 :a9160 :a9160.
+:a9161 :a9161 :a9161.
+:a9162 :a9162 :a9162.
+:a9163 :a9163 :a9163.
+:a9164 :a9164 :a9164.
+:a9165 :a9165 :a9165.
+:a9166 :a9166 :a9166.
+:a9167 :a9167 :a9167.
+:a9168 :a9168 :a9168.
+:a9169 :a9169 :a9169.
+:a9170 :a9170 :a9170.
+:a9171 :a9171 :a9171.
+:a9172 :a9172 :a9172.
+:a9173 :a9173 :a9173.
+:a9174 :a9174 :a9174.
+:a9175 :a9175 :a9175.
+:a9176 :a9176 :a9176.
+:a9177 :a9177 :a9177.
+:a9178 :a9178 :a9178.
+:a9179 :a9179 :a9179.
+:a9180 :a9180 :a9180.
+:a9181 :a9181 :a9181.
+:a9182 :a9182 :a9182.
+:a9183 :a9183 :a9183.
+:a9184 :a9184 :a9184.
+:a9185 :a9185 :a9185.
+:a9186 :a9186 :a9186.
+:a9187 :a9187 :a9187.
+:a9188 :a9188 :a9188.
+:a9189 :a9189 :a9189.
+:a9190 :a9190 :a9190.
+:a9191 :a9191 :a9191.
+:a9192 :a9192 :a9192.
+:a9193 :a9193 :a9193.
+:a9194 :a9194 :a9194.
+:a9195 :a9195 :a9195.
+:a9196 :a9196 :a9196.
+:a9197 :a9197 :a9197.
+:a9198 :a9198 :a9198.
+:a9199 :a9199 :a9199.
+:a9200 :a9200 :a9200.
+:a9201 :a9201 :a9201.
+:a9202 :a9202 :a9202.
+:a9203 :a9203 :a9203.
+:a9204 :a9204 :a9204.
+:a9205 :a9205 :a9205.
+:a9206 :a9206 :a9206.
+:a9207 :a9207 :a9207.
+:a9208 :a9208 :a9208.
+:a9209 :a9209 :a9209.
+:a9210 :a9210 :a9210.
+:a9211 :a9211 :a9211.
+:a9212 :a9212 :a9212.
+:a9213 :a9213 :a9213.
+:a9214 :a9214 :a9214.
+:a9215 :a9215 :a9215.
+:a9216 :a9216 :a9216.
+:a9217 :a9217 :a9217.
+:a9218 :a9218 :a9218.
+:a9219 :a9219 :a9219.
+:a9220 :a9220 :a9220.
+:a9221 :a9221 :a9221.
+:a9222 :a9222 :a9222.
+:a9223 :a9223 :a9223.
+:a9224 :a9224 :a9224.
+:a9225 :a9225 :a9225.
+:a9226 :a9226 :a9226.
+:a9227 :a9227 :a9227.
+:a9228 :a9228 :a9228.
+:a9229 :a9229 :a9229.
+:a9230 :a9230 :a9230.
+:a9231 :a9231 :a9231.
+:a9232 :a9232 :a9232.
+:a9233 :a9233 :a9233.
+:a9234 :a9234 :a9234.
+:a9235 :a9235 :a9235.
+:a9236 :a9236 :a9236.
+:a9237 :a9237 :a9237.
+:a9238 :a9238 :a9238.
+:a9239 :a9239 :a9239.
+:a9240 :a9240 :a9240.
+:a9241 :a9241 :a9241.
+:a9242 :a9242 :a9242.
+:a9243 :a9243 :a9243.
+:a9244 :a9244 :a9244.
+:a9245 :a9245 :a9245.
+:a9246 :a9246 :a9246.
+:a9247 :a9247 :a9247.
+:a9248 :a9248 :a9248.
+:a9249 :a9249 :a9249.
+:a9250 :a9250 :a9250.
+:a9251 :a9251 :a9251.
+:a9252 :a9252 :a9252.
+:a9253 :a9253 :a9253.
+:a9254 :a9254 :a9254.
+:a9255 :a9255 :a9255.
+:a9256 :a9256 :a9256.
+:a9257 :a9257 :a9257.
+:a9258 :a9258 :a9258.
+:a9259 :a9259 :a9259.
+:a9260 :a9260 :a9260.
+:a9261 :a9261 :a9261.
+:a9262 :a9262 :a9262.
+:a9263 :a9263 :a9263.
+:a9264 :a9264 :a9264.
+:a9265 :a9265 :a9265.
+:a9266 :a9266 :a9266.
+:a9267 :a9267 :a9267.
+:a9268 :a9268 :a9268.
+:a9269 :a9269 :a9269.
+:a9270 :a9270 :a9270.
+:a9271 :a9271 :a9271.
+:a9272 :a9272 :a9272.
+:a9273 :a9273 :a9273.
+:a9274 :a9274 :a9274.
+:a9275 :a9275 :a9275.
+:a9276 :a9276 :a9276.
+:a9277 :a9277 :a9277.
+:a9278 :a9278 :a9278.
+:a9279 :a9279 :a9279.
+:a9280 :a9280 :a9280.
+:a9281 :a9281 :a9281.
+:a9282 :a9282 :a9282.
+:a9283 :a9283 :a9283.
+:a9284 :a9284 :a9284.
+:a9285 :a9285 :a9285.
+:a9286 :a9286 :a9286.
+:a9287 :a9287 :a9287.
+:a9288 :a9288 :a9288.
+:a9289 :a9289 :a9289.
+:a9290 :a9290 :a9290.
+:a9291 :a9291 :a9291.
+:a9292 :a9292 :a9292.
+:a9293 :a9293 :a9293.
+:a9294 :a9294 :a9294.
+:a9295 :a9295 :a9295.
+:a9296 :a9296 :a9296.
+:a9297 :a9297 :a9297.
+:a9298 :a9298 :a9298.
+:a9299 :a9299 :a9299.
+:a9300 :a9300 :a9300.
+:a9301 :a9301 :a9301.
+:a9302 :a9302 :a9302.
+:a9303 :a9303 :a9303.
+:a9304 :a9304 :a9304.
+:a9305 :a9305 :a9305.
+:a9306 :a9306 :a9306.
+:a9307 :a9307 :a9307.
+:a9308 :a9308 :a9308.
+:a9309 :a9309 :a9309.
+:a9310 :a9310 :a9310.
+:a9311 :a9311 :a9311.
+:a9312 :a9312 :a9312.
+:a9313 :a9313 :a9313.
+:a9314 :a9314 :a9314.
+:a9315 :a9315 :a9315.
+:a9316 :a9316 :a9316.
+:a9317 :a9317 :a9317.
+:a9318 :a9318 :a9318.
+:a9319 :a9319 :a9319.
+:a9320 :a9320 :a9320.
+:a9321 :a9321 :a9321.
+:a9322 :a9322 :a9322.
+:a9323 :a9323 :a9323.
+:a9324 :a9324 :a9324.
+:a9325 :a9325 :a9325.
+:a9326 :a9326 :a9326.
+:a9327 :a9327 :a9327.
+:a9328 :a9328 :a9328.
+:a9329 :a9329 :a9329.
+:a9330 :a9330 :a9330.
+:a9331 :a9331 :a9331.
+:a9332 :a9332 :a9332.
+:a9333 :a9333 :a9333.
+:a9334 :a9334 :a9334.
+:a9335 :a9335 :a9335.
+:a9336 :a9336 :a9336.
+:a9337 :a9337 :a9337.
+:a9338 :a9338 :a9338.
+:a9339 :a9339 :a9339.
+:a9340 :a9340 :a9340.
+:a9341 :a9341 :a9341.
+:a9342 :a9342 :a9342.
+:a9343 :a9343 :a9343.
+:a9344 :a9344 :a9344.
+:a9345 :a9345 :a9345.
+:a9346 :a9346 :a9346.
+:a9347 :a9347 :a9347.
+:a9348 :a9348 :a9348.
+:a9349 :a9349 :a9349.
+:a9350 :a9350 :a9350.
+:a9351 :a9351 :a9351.
+:a9352 :a9352 :a9352.
+:a9353 :a9353 :a9353.
+:a9354 :a9354 :a9354.
+:a9355 :a9355 :a9355.
+:a9356 :a9356 :a9356.
+:a9357 :a9357 :a9357.
+:a9358 :a9358 :a9358.
+:a9359 :a9359 :a9359.
+:a9360 :a9360 :a9360.
+:a9361 :a9361 :a9361.
+:a9362 :a9362 :a9362.
+:a9363 :a9363 :a9363.
+:a9364 :a9364 :a9364.
+:a9365 :a9365 :a9365.
+:a9366 :a9366 :a9366.
+:a9367 :a9367 :a9367.
+:a9368 :a9368 :a9368.
+:a9369 :a9369 :a9369.
+:a9370 :a9370 :a9370.
+:a9371 :a9371 :a9371.
+:a9372 :a9372 :a9372.
+:a9373 :a9373 :a9373.
+:a9374 :a9374 :a9374.
+:a9375 :a9375 :a9375.
+:a9376 :a9376 :a9376.
+:a9377 :a9377 :a9377.
+:a9378 :a9378 :a9378.
+:a9379 :a9379 :a9379.
+:a9380 :a9380 :a9380.
+:a9381 :a9381 :a9381.
+:a9382 :a9382 :a9382.
+:a9383 :a9383 :a9383.
+:a9384 :a9384 :a9384.
+:a9385 :a9385 :a9385.
+:a9386 :a9386 :a9386.
+:a9387 :a9387 :a9387.
+:a9388 :a9388 :a9388.
+:a9389 :a9389 :a9389.
+:a9390 :a9390 :a9390.
+:a9391 :a9391 :a9391.
+:a9392 :a9392 :a9392.
+:a9393 :a9393 :a9393.
+:a9394 :a9394 :a9394.
+:a9395 :a9395 :a9395.
+:a9396 :a9396 :a9396.
+:a9397 :a9397 :a9397.
+:a9398 :a9398 :a9398.
+:a9399 :a9399 :a9399.
+:a9400 :a9400 :a9400.
+:a9401 :a9401 :a9401.
+:a9402 :a9402 :a9402.
+:a9403 :a9403 :a9403.
+:a9404 :a9404 :a9404.
+:a9405 :a9405 :a9405.
+:a9406 :a9406 :a9406.
+:a9407 :a9407 :a9407.
+:a9408 :a9408 :a9408.
+:a9409 :a9409 :a9409.
+:a9410 :a9410 :a9410.
+:a9411 :a9411 :a9411.
+:a9412 :a9412 :a9412.
+:a9413 :a9413 :a9413.
+:a9414 :a9414 :a9414.
+:a9415 :a9415 :a9415.
+:a9416 :a9416 :a9416.
+:a9417 :a9417 :a9417.
+:a9418 :a9418 :a9418.
+:a9419 :a9419 :a9419.
+:a9420 :a9420 :a9420.
+:a9421 :a9421 :a9421.
+:a9422 :a9422 :a9422.
+:a9423 :a9423 :a9423.
+:a9424 :a9424 :a9424.
+:a9425 :a9425 :a9425.
+:a9426 :a9426 :a9426.
+:a9427 :a9427 :a9427.
+:a9428 :a9428 :a9428.
+:a9429 :a9429 :a9429.
+:a9430 :a9430 :a9430.
+:a9431 :a9431 :a9431.
+:a9432 :a9432 :a9432.
+:a9433 :a9433 :a9433.
+:a9434 :a9434 :a9434.
+:a9435 :a9435 :a9435.
+:a9436 :a9436 :a9436.
+:a9437 :a9437 :a9437.
+:a9438 :a9438 :a9438.
+:a9439 :a9439 :a9439.
+:a9440 :a9440 :a9440.
+:a9441 :a9441 :a9441.
+:a9442 :a9442 :a9442.
+:a9443 :a9443 :a9443.
+:a9444 :a9444 :a9444.
+:a9445 :a9445 :a9445.
+:a9446 :a9446 :a9446.
+:a9447 :a9447 :a9447.
+:a9448 :a9448 :a9448.
+:a9449 :a9449 :a9449.
+:a9450 :a9450 :a9450.
+:a9451 :a9451 :a9451.
+:a9452 :a9452 :a9452.
+:a9453 :a9453 :a9453.
+:a9454 :a9454 :a9454.
+:a9455 :a9455 :a9455.
+:a9456 :a9456 :a9456.
+:a9457 :a9457 :a9457.
+:a9458 :a9458 :a9458.
+:a9459 :a9459 :a9459.
+:a9460 :a9460 :a9460.
+:a9461 :a9461 :a9461.
+:a9462 :a9462 :a9462.
+:a9463 :a9463 :a9463.
+:a9464 :a9464 :a9464.
+:a9465 :a9465 :a9465.
+:a9466 :a9466 :a9466.
+:a9467 :a9467 :a9467.
+:a9468 :a9468 :a9468.
+:a9469 :a9469 :a9469.
+:a9470 :a9470 :a9470.
+:a9471 :a9471 :a9471.
+:a9472 :a9472 :a9472.
+:a9473 :a9473 :a9473.
+:a9474 :a9474 :a9474.
+:a9475 :a9475 :a9475.
+:a9476 :a9476 :a9476.
+:a9477 :a9477 :a9477.
+:a9478 :a9478 :a9478.
+:a9479 :a9479 :a9479.
+:a9480 :a9480 :a9480.
+:a9481 :a9481 :a9481.
+:a9482 :a9482 :a9482.
+:a9483 :a9483 :a9483.
+:a9484 :a9484 :a9484.
+:a9485 :a9485 :a9485.
+:a9486 :a9486 :a9486.
+:a9487 :a9487 :a9487.
+:a9488 :a9488 :a9488.
+:a9489 :a9489 :a9489.
+:a9490 :a9490 :a9490.
+:a9491 :a9491 :a9491.
+:a9492 :a9492 :a9492.
+:a9493 :a9493 :a9493.
+:a9494 :a9494 :a9494.
+:a9495 :a9495 :a9495.
+:a9496 :a9496 :a9496.
+:a9497 :a9497 :a9497.
+:a9498 :a9498 :a9498.
+:a9499 :a9499 :a9499.
+:a9500 :a9500 :a9500.
+:a9501 :a9501 :a9501.
+:a9502 :a9502 :a9502.
+:a9503 :a9503 :a9503.
+:a9504 :a9504 :a9504.
+:a9505 :a9505 :a9505.
+:a9506 :a9506 :a9506.
+:a9507 :a9507 :a9507.
+:a9508 :a9508 :a9508.
+:a9509 :a9509 :a9509.
+:a9510 :a9510 :a9510.
+:a9511 :a9511 :a9511.
+:a9512 :a9512 :a9512.
+:a9513 :a9513 :a9513.
+:a9514 :a9514 :a9514.
+:a9515 :a9515 :a9515.
+:a9516 :a9516 :a9516.
+:a9517 :a9517 :a9517.
+:a9518 :a9518 :a9518.
+:a9519 :a9519 :a9519.
+:a9520 :a9520 :a9520.
+:a9521 :a9521 :a9521.
+:a9522 :a9522 :a9522.
+:a9523 :a9523 :a9523.
+:a9524 :a9524 :a9524.
+:a9525 :a9525 :a9525.
+:a9526 :a9526 :a9526.
+:a9527 :a9527 :a9527.
+:a9528 :a9528 :a9528.
+:a9529 :a9529 :a9529.
+:a9530 :a9530 :a9530.
+:a9531 :a9531 :a9531.
+:a9532 :a9532 :a9532.
+:a9533 :a9533 :a9533.
+:a9534 :a9534 :a9534.
+:a9535 :a9535 :a9535.
+:a9536 :a9536 :a9536.
+:a9537 :a9537 :a9537.
+:a9538 :a9538 :a9538.
+:a9539 :a9539 :a9539.
+:a9540 :a9540 :a9540.
+:a9541 :a9541 :a9541.
+:a9542 :a9542 :a9542.
+:a9543 :a9543 :a9543.
+:a9544 :a9544 :a9544.
+:a9545 :a9545 :a9545.
+:a9546 :a9546 :a9546.
+:a9547 :a9547 :a9547.
+:a9548 :a9548 :a9548.
+:a9549 :a9549 :a9549.
+:a9550 :a9550 :a9550.
+:a9551 :a9551 :a9551.
+:a9552 :a9552 :a9552.
+:a9553 :a9553 :a9553.
+:a9554 :a9554 :a9554.
+:a9555 :a9555 :a9555.
+:a9556 :a9556 :a9556.
+:a9557 :a9557 :a9557.
+:a9558 :a9558 :a9558.
+:a9559 :a9559 :a9559.
+:a9560 :a9560 :a9560.
+:a9561 :a9561 :a9561.
+:a9562 :a9562 :a9562.
+:a9563 :a9563 :a9563.
+:a9564 :a9564 :a9564.
+:a9565 :a9565 :a9565.
+:a9566 :a9566 :a9566.
+:a9567 :a9567 :a9567.
+:a9568 :a9568 :a9568.
+:a9569 :a9569 :a9569.
+:a9570 :a9570 :a9570.
+:a9571 :a9571 :a9571.
+:a9572 :a9572 :a9572.
+:a9573 :a9573 :a9573.
+:a9574 :a9574 :a9574.
+:a9575 :a9575 :a9575.
+:a9576 :a9576 :a9576.
+:a9577 :a9577 :a9577.
+:a9578 :a9578 :a9578.
+:a9579 :a9579 :a9579.
+:a9580 :a9580 :a9580.
+:a9581 :a9581 :a9581.
+:a9582 :a9582 :a9582.
+:a9583 :a9583 :a9583.
+:a9584 :a9584 :a9584.
+:a9585 :a9585 :a9585.
+:a9586 :a9586 :a9586.
+:a9587 :a9587 :a9587.
+:a9588 :a9588 :a9588.
+:a9589 :a9589 :a9589.
+:a9590 :a9590 :a9590.
+:a9591 :a9591 :a9591.
+:a9592 :a9592 :a9592.
+:a9593 :a9593 :a9593.
+:a9594 :a9594 :a9594.
+:a9595 :a9595 :a9595.
+:a9596 :a9596 :a9596.
+:a9597 :a9597 :a9597.
+:a9598 :a9598 :a9598.
+:a9599 :a9599 :a9599.
+:a9600 :a9600 :a9600.
+:a9601 :a9601 :a9601.
+:a9602 :a9602 :a9602.
+:a9603 :a9603 :a9603.
+:a9604 :a9604 :a9604.
+:a9605 :a9605 :a9605.
+:a9606 :a9606 :a9606.
+:a9607 :a9607 :a9607.
+:a9608 :a9608 :a9608.
+:a9609 :a9609 :a9609.
+:a9610 :a9610 :a9610.
+:a9611 :a9611 :a9611.
+:a9612 :a9612 :a9612.
+:a9613 :a9613 :a9613.
+:a9614 :a9614 :a9614.
+:a9615 :a9615 :a9615.
+:a9616 :a9616 :a9616.
+:a9617 :a9617 :a9617.
+:a9618 :a9618 :a9618.
+:a9619 :a9619 :a9619.
+:a9620 :a9620 :a9620.
+:a9621 :a9621 :a9621.
+:a9622 :a9622 :a9622.
+:a9623 :a9623 :a9623.
+:a9624 :a9624 :a9624.
+:a9625 :a9625 :a9625.
+:a9626 :a9626 :a9626.
+:a9627 :a9627 :a9627.
+:a9628 :a9628 :a9628.
+:a9629 :a9629 :a9629.
+:a9630 :a9630 :a9630.
+:a9631 :a9631 :a9631.
+:a9632 :a9632 :a9632.
+:a9633 :a9633 :a9633.
+:a9634 :a9634 :a9634.
+:a9635 :a9635 :a9635.
+:a9636 :a9636 :a9636.
+:a9637 :a9637 :a9637.
+:a9638 :a9638 :a9638.
+:a9639 :a9639 :a9639.
+:a9640 :a9640 :a9640.
+:a9641 :a9641 :a9641.
+:a9642 :a9642 :a9642.
+:a9643 :a9643 :a9643.
+:a9644 :a9644 :a9644.
+:a9645 :a9645 :a9645.
+:a9646 :a9646 :a9646.
+:a9647 :a9647 :a9647.
+:a9648 :a9648 :a9648.
+:a9649 :a9649 :a9649.
+:a9650 :a9650 :a9650.
+:a9651 :a9651 :a9651.
+:a9652 :a9652 :a9652.
+:a9653 :a9653 :a9653.
+:a9654 :a9654 :a9654.
+:a9655 :a9655 :a9655.
+:a9656 :a9656 :a9656.
+:a9657 :a9657 :a9657.
+:a9658 :a9658 :a9658.
+:a9659 :a9659 :a9659.
+:a9660 :a9660 :a9660.
+:a9661 :a9661 :a9661.
+:a9662 :a9662 :a9662.
+:a9663 :a9663 :a9663.
+:a9664 :a9664 :a9664.
+:a9665 :a9665 :a9665.
+:a9666 :a9666 :a9666.
+:a9667 :a9667 :a9667.
+:a9668 :a9668 :a9668.
+:a9669 :a9669 :a9669.
+:a9670 :a9670 :a9670.
+:a9671 :a9671 :a9671.
+:a9672 :a9672 :a9672.
+:a9673 :a9673 :a9673.
+:a9674 :a9674 :a9674.
+:a9675 :a9675 :a9675.
+:a9676 :a9676 :a9676.
+:a9677 :a9677 :a9677.
+:a9678 :a9678 :a9678.
+:a9679 :a9679 :a9679.
+:a9680 :a9680 :a9680.
+:a9681 :a9681 :a9681.
+:a9682 :a9682 :a9682.
+:a9683 :a9683 :a9683.
+:a9684 :a9684 :a9684.
+:a9685 :a9685 :a9685.
+:a9686 :a9686 :a9686.
+:a9687 :a9687 :a9687.
+:a9688 :a9688 :a9688.
+:a9689 :a9689 :a9689.
+:a9690 :a9690 :a9690.
+:a9691 :a9691 :a9691.
+:a9692 :a9692 :a9692.
+:a9693 :a9693 :a9693.
+:a9694 :a9694 :a9694.
+:a9695 :a9695 :a9695.
+:a9696 :a9696 :a9696.
+:a9697 :a9697 :a9697.
+:a9698 :a9698 :a9698.
+:a9699 :a9699 :a9699.
+:a9700 :a9700 :a9700.
+:a9701 :a9701 :a9701.
+:a9702 :a9702 :a9702.
+:a9703 :a9703 :a9703.
+:a9704 :a9704 :a9704.
+:a9705 :a9705 :a9705.
+:a9706 :a9706 :a9706.
+:a9707 :a9707 :a9707.
+:a9708 :a9708 :a9708.
+:a9709 :a9709 :a9709.
+:a9710 :a9710 :a9710.
+:a9711 :a9711 :a9711.
+:a9712 :a9712 :a9712.
+:a9713 :a9713 :a9713.
+:a9714 :a9714 :a9714.
+:a9715 :a9715 :a9715.
+:a9716 :a9716 :a9716.
+:a9717 :a9717 :a9717.
+:a9718 :a9718 :a9718.
+:a9719 :a9719 :a9719.
+:a9720 :a9720 :a9720.
+:a9721 :a9721 :a9721.
+:a9722 :a9722 :a9722.
+:a9723 :a9723 :a9723.
+:a9724 :a9724 :a9724.
+:a9725 :a9725 :a9725.
+:a9726 :a9726 :a9726.
+:a9727 :a9727 :a9727.
+:a9728 :a9728 :a9728.
+:a9729 :a9729 :a9729.
+:a9730 :a9730 :a9730.
+:a9731 :a9731 :a9731.
+:a9732 :a9732 :a9732.
+:a9733 :a9733 :a9733.
+:a9734 :a9734 :a9734.
+:a9735 :a9735 :a9735.
+:a9736 :a9736 :a9736.
+:a9737 :a9737 :a9737.
+:a9738 :a9738 :a9738.
+:a9739 :a9739 :a9739.
+:a9740 :a9740 :a9740.
+:a9741 :a9741 :a9741.
+:a9742 :a9742 :a9742.
+:a9743 :a9743 :a9743.
+:a9744 :a9744 :a9744.
+:a9745 :a9745 :a9745.
+:a9746 :a9746 :a9746.
+:a9747 :a9747 :a9747.
+:a9748 :a9748 :a9748.
+:a9749 :a9749 :a9749.
+:a9750 :a9750 :a9750.
+:a9751 :a9751 :a9751.
+:a9752 :a9752 :a9752.
+:a9753 :a9753 :a9753.
+:a9754 :a9754 :a9754.
+:a9755 :a9755 :a9755.
+:a9756 :a9756 :a9756.
+:a9757 :a9757 :a9757.
+:a9758 :a9758 :a9758.
+:a9759 :a9759 :a9759.
+:a9760 :a9760 :a9760.
+:a9761 :a9761 :a9761.
+:a9762 :a9762 :a9762.
+:a9763 :a9763 :a9763.
+:a9764 :a9764 :a9764.
+:a9765 :a9765 :a9765.
+:a9766 :a9766 :a9766.
+:a9767 :a9767 :a9767.
+:a9768 :a9768 :a9768.
+:a9769 :a9769 :a9769.
+:a9770 :a9770 :a9770.
+:a9771 :a9771 :a9771.
+:a9772 :a9772 :a9772.
+:a9773 :a9773 :a9773.
+:a9774 :a9774 :a9774.
+:a9775 :a9775 :a9775.
+:a9776 :a9776 :a9776.
+:a9777 :a9777 :a9777.
+:a9778 :a9778 :a9778.
+:a9779 :a9779 :a9779.
+:a9780 :a9780 :a9780.
+:a9781 :a9781 :a9781.
+:a9782 :a9782 :a9782.
+:a9783 :a9783 :a9783.
+:a9784 :a9784 :a9784.
+:a9785 :a9785 :a9785.
+:a9786 :a9786 :a9786.
+:a9787 :a9787 :a9787.
+:a9788 :a9788 :a9788.
+:a9789 :a9789 :a9789.
+:a9790 :a9790 :a9790.
+:a9791 :a9791 :a9791.
+:a9792 :a9792 :a9792.
+:a9793 :a9793 :a9793.
+:a9794 :a9794 :a9794.
+:a9795 :a9795 :a9795.
+:a9796 :a9796 :a9796.
+:a9797 :a9797 :a9797.
+:a9798 :a9798 :a9798.
+:a9799 :a9799 :a9799.
+:a9800 :a9800 :a9800.
+:a9801 :a9801 :a9801.
+:a9802 :a9802 :a9802.
+:a9803 :a9803 :a9803.
+:a9804 :a9804 :a9804.
+:a9805 :a9805 :a9805.
+:a9806 :a9806 :a9806.
+:a9807 :a9807 :a9807.
+:a9808 :a9808 :a9808.
+:a9809 :a9809 :a9809.
+:a9810 :a9810 :a9810.
+:a9811 :a9811 :a9811.
+:a9812 :a9812 :a9812.
+:a9813 :a9813 :a9813.
+:a9814 :a9814 :a9814.
+:a9815 :a9815 :a9815.
+:a9816 :a9816 :a9816.
+:a9817 :a9817 :a9817.
+:a9818 :a9818 :a9818.
+:a9819 :a9819 :a9819.
+:a9820 :a9820 :a9820.
+:a9821 :a9821 :a9821.
+:a9822 :a9822 :a9822.
+:a9823 :a9823 :a9823.
+:a9824 :a9824 :a9824.
+:a9825 :a9825 :a9825.
+:a9826 :a9826 :a9826.
+:a9827 :a9827 :a9827.
+:a9828 :a9828 :a9828.
+:a9829 :a9829 :a9829.
+:a9830 :a9830 :a9830.
+:a9831 :a9831 :a9831.
+:a9832 :a9832 :a9832.
+:a9833 :a9833 :a9833.
+:a9834 :a9834 :a9834.
+:a9835 :a9835 :a9835.
+:a9836 :a9836 :a9836.
+:a9837 :a9837 :a9837.
+:a9838 :a9838 :a9838.
+:a9839 :a9839 :a9839.
+:a9840 :a9840 :a9840.
+:a9841 :a9841 :a9841.
+:a9842 :a9842 :a9842.
+:a9843 :a9843 :a9843.
+:a9844 :a9844 :a9844.
+:a9845 :a9845 :a9845.
+:a9846 :a9846 :a9846.
+:a9847 :a9847 :a9847.
+:a9848 :a9848 :a9848.
+:a9849 :a9849 :a9849.
+:a9850 :a9850 :a9850.
+:a9851 :a9851 :a9851.
+:a9852 :a9852 :a9852.
+:a9853 :a9853 :a9853.
+:a9854 :a9854 :a9854.
+:a9855 :a9855 :a9855.
+:a9856 :a9856 :a9856.
+:a9857 :a9857 :a9857.
+:a9858 :a9858 :a9858.
+:a9859 :a9859 :a9859.
+:a9860 :a9860 :a9860.
+:a9861 :a9861 :a9861.
+:a9862 :a9862 :a9862.
+:a9863 :a9863 :a9863.
+:a9864 :a9864 :a9864.
+:a9865 :a9865 :a9865.
+:a9866 :a9866 :a9866.
+:a9867 :a9867 :a9867.
+:a9868 :a9868 :a9868.
+:a9869 :a9869 :a9869.
+:a9870 :a9870 :a9870.
+:a9871 :a9871 :a9871.
+:a9872 :a9872 :a9872.
+:a9873 :a9873 :a9873.
+:a9874 :a9874 :a9874.
+:a9875 :a9875 :a9875.
+:a9876 :a9876 :a9876.
+:a9877 :a9877 :a9877.
+:a9878 :a9878 :a9878.
+:a9879 :a9879 :a9879.
+:a9880 :a9880 :a9880.
+:a9881 :a9881 :a9881.
+:a9882 :a9882 :a9882.
+:a9883 :a9883 :a9883.
+:a9884 :a9884 :a9884.
+:a9885 :a9885 :a9885.
+:a9886 :a9886 :a9886.
+:a9887 :a9887 :a9887.
+:a9888 :a9888 :a9888.
+:a9889 :a9889 :a9889.
+:a9890 :a9890 :a9890.
+:a9891 :a9891 :a9891.
+:a9892 :a9892 :a9892.
+:a9893 :a9893 :a9893.
+:a9894 :a9894 :a9894.
+:a9895 :a9895 :a9895.
+:a9896 :a9896 :a9896.
+:a9897 :a9897 :a9897.
+:a9898 :a9898 :a9898.
+:a9899 :a9899 :a9899.
+:a9900 :a9900 :a9900.
+:a9901 :a9901 :a9901.
+:a9902 :a9902 :a9902.
+:a9903 :a9903 :a9903.
+:a9904 :a9904 :a9904.
+:a9905 :a9905 :a9905.
+:a9906 :a9906 :a9906.
+:a9907 :a9907 :a9907.
+:a9908 :a9908 :a9908.
+:a9909 :a9909 :a9909.
+:a9910 :a9910 :a9910.
+:a9911 :a9911 :a9911.
+:a9912 :a9912 :a9912.
+:a9913 :a9913 :a9913.
+:a9914 :a9914 :a9914.
+:a9915 :a9915 :a9915.
+:a9916 :a9916 :a9916.
+:a9917 :a9917 :a9917.
+:a9918 :a9918 :a9918.
+:a9919 :a9919 :a9919.
+:a9920 :a9920 :a9920.
+:a9921 :a9921 :a9921.
+:a9922 :a9922 :a9922.
+:a9923 :a9923 :a9923.
+:a9924 :a9924 :a9924.
+:a9925 :a9925 :a9925.
+:a9926 :a9926 :a9926.
+:a9927 :a9927 :a9927.
+:a9928 :a9928 :a9928.
+:a9929 :a9929 :a9929.
+:a9930 :a9930 :a9930.
+:a9931 :a9931 :a9931.
+:a9932 :a9932 :a9932.
+:a9933 :a9933 :a9933.
+:a9934 :a9934 :a9934.
+:a9935 :a9935 :a9935.
+:a9936 :a9936 :a9936.
+:a9937 :a9937 :a9937.
+:a9938 :a9938 :a9938.
+:a9939 :a9939 :a9939.
+:a9940 :a9940 :a9940.
+:a9941 :a9941 :a9941.
+:a9942 :a9942 :a9942.
+:a9943 :a9943 :a9943.
+:a9944 :a9944 :a9944.
+:a9945 :a9945 :a9945.
+:a9946 :a9946 :a9946.
+:a9947 :a9947 :a9947.
+:a9948 :a9948 :a9948.
+:a9949 :a9949 :a9949.
+:a9950 :a9950 :a9950.
+:a9951 :a9951 :a9951.
+:a9952 :a9952 :a9952.
+:a9953 :a9953 :a9953.
+:a9954 :a9954 :a9954.
+:a9955 :a9955 :a9955.
+:a9956 :a9956 :a9956.
+:a9957 :a9957 :a9957.
+:a9958 :a9958 :a9958.
+:a9959 :a9959 :a9959.
+:a9960 :a9960 :a9960.
+:a9961 :a9961 :a9961.
+:a9962 :a9962 :a9962.
+:a9963 :a9963 :a9963.
+:a9964 :a9964 :a9964.
+:a9965 :a9965 :a9965.
+:a9966 :a9966 :a9966.
+:a9967 :a9967 :a9967.
+:a9968 :a9968 :a9968.
+:a9969 :a9969 :a9969.
+:a9970 :a9970 :a9970.
+:a9971 :a9971 :a9971.
+:a9972 :a9972 :a9972.
+:a9973 :a9973 :a9973.
+:a9974 :a9974 :a9974.
+:a9975 :a9975 :a9975.
+:a9976 :a9976 :a9976.
+:a9977 :a9977 :a9977.
+:a9978 :a9978 :a9978.
+:a9979 :a9979 :a9979.
+:a9980 :a9980 :a9980.
+:a9981 :a9981 :a9981.
+:a9982 :a9982 :a9982.
+:a9983 :a9983 :a9983.
+:a9984 :a9984 :a9984.
+:a9985 :a9985 :a9985.
+:a9986 :a9986 :a9986.
+:a9987 :a9987 :a9987.
+:a9988 :a9988 :a9988.
+:a9989 :a9989 :a9989.
+:a9990 :a9990 :a9990.
+:a9991 :a9991 :a9991.
+:a9992 :a9992 :a9992.
+:a9993 :a9993 :a9993.
+:a9994 :a9994 :a9994.
+:a9995 :a9995 :a9995.
+:a9996 :a9996 :a9996.
+:a9997 :a9997 :a9997.
+:a9998 :a9998 :a9998.
+:a9999 :a9999 :a9999.
+:a10000 :a10000 :a10000.
diff --git a/tests/turtle/test-15.out b/tests/turtle/test-15.out
new file mode 100644
index 0000000..c0604b3
--- /dev/null
+++ b/tests/turtle/test-15.out
@@ -0,0 +1,10000 @@
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c10> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c11> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c12> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c13> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c14> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c15> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c16> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c17> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c18> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c19> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c20> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c21> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c22> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c23> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c24> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c25> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c26> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c27> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c28> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c29> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c30> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c31> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c32> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c33> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c34> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c35> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c36> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c37> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c38> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c39> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c40> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c41> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c42> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c43> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c44> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c45> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c46> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c47> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c48> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c49> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c50> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c51> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c52> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c53> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c54> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c55> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c56> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c57> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c58> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c59> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c60> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c61> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c62> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c63> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c64> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c65> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c66> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c67> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c68> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c69> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c70> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c71> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c72> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c73> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c74> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c75> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c76> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c77> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c78> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c79> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c80> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c81> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c82> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c83> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c84> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c85> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c86> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c87> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c88> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c89> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c90> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c91> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c92> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c93> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c94> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c95> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c96> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c97> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c98> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c99> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c10000> .
diff --git a/tests/turtle/test-15.ttl b/tests/turtle/test-15.ttl
new file mode 100644
index 0000000..10df17d
--- /dev/null
+++ b/tests/turtle/test-15.ttl
@@ -0,0 +1,3 @@
+# 10000 triple objects (10000 triples) more than the default Bison stack size
+@prefix : <http://example.org/ns#> .
+:a :b :c1, :c2, :c3, :c4, :c5, :c6, :c7, :c8, :c9, :c10, :c11, :c12, :c13, :c14, :c15, :c16, :c17, :c18, :c19, :c20, :c21, :c22, :c23, :c24, :c25, :c26, :c27, :c28, :c29, :c30, :c31, :c32, :c33, :c34, :c35, :c36, :c37, :c38, :c39, :c40, :c41, :c42, :c43, :c44, :c45, :c46, :c47, :c48, :c49, :c50, :c51, :c52, :c53, :c54, :c55, :c56, :c57, :c58, :c59, :c60, :c61, :c62, :c63, :c64, :c65, :c66, :c67, :c68, :c69, :c70, :c71, :c72, :c73, :c74, :c75, :c76, :c77, :c78, :c79, :c80, :c81, :c82, :c83, :c84, :c85, :c86, :c87, :c88, :c89, :c90, :c91, :c92, :c93, :c94, :c95, :c96, :c97, :c98, :c99, :c100, :c101, :c102, :c103, :c104, :c105, :c106, :c107, :c108, :c109, :c110, :c111, :c112, :c113, :c114, :c115, :c116, :c117, :c118, :c119, :c120, :c121, :c122, :c123, :c124, :c125, :c126, :c127, :c128, :c129, :c130, :c131, :c132, :c133, :c134, :c135, :c136, :c137, :c138, :c139, :c140, :c141, :c142, :c143, :c144, :c145, :c146, :c147, :c148, :c149, :c150, :c151, :c152, :c153, :c154, :c155, :c156, :c157, :c158, :c159, :c160, :c161, :c162, :c163, :c164, :c165, :c166, :c167, :c168, :c169, :c170, :c171, :c172, :c173, :c174, :c175, :c176, :c177, :c178, :c179, :c180, :c181, :c182, :c183, :c184, :c185, :c186, :c187, :c188, :c189, :c190, :c191, :c192, :c193, :c194, :c195, :c196, :c197, :c198, :c199, :c200, :c201, :c202, :c203, :c204, :c205, :c206, :c207, :c208, :c209, :c210, :c211, :c212, :c213, :c214, :c215, :c216, :c217, :c218, :c219, :c220, :c221, :c222, :c223, :c224, :c225, :c226, :c227, :c228, :c229, :c230, :c231, :c232, :c233, :c234, :c235, :c236, :c237, :c238, :c239, :c240, :c241, :c242, :c243, :c244, :c245, :c246, :c247, :c248, :c249, :c250, :c251, :c252, :c253, :c254, :c255, :c256, :c257, :c258, :c259, :c260, :c261, :c262, :c263, :c264, :c265, :c266, :c267, :c268, :c269, :c270, :c271, :c272, :c273, :c274, :c275, :c276, :c277, :c278, :c279, :c280, :c281, :c282, :c283, :c284, :c285, :c286, :c287, :c288, :c289, :c290, :c291, :c292, :c293, :c294, :c295, :c296, :c297, :c298, :c299, :c300, :c301, :c302, :c303, :c304, :c305, :c306, :c307, :c308, :c309, :c310, :c311, :c312, :c313, :c314, :c315, :c316, :c317, :c318, :c319, :c320, :c321, :c322, :c323, :c324, :c325, :c326, :c327, :c328, :c329, :c330, :c331, :c332, :c333, :c334, :c335, :c336, :c337, :c338, :c339, :c340, :c341, :c342, :c343, :c344, :c345, :c346, :c347, :c348, :c349, :c350, :c351, :c352, :c353, :c354, :c355, :c356, :c357, :c358, :c359, :c360, :c361, :c362, :c363, :c364, :c365, :c366, :c367, :c368, :c369, :c370, :c371, :c372, :c373, :c374, :c375, :c376, :c377, :c378, :c379, :c380, :c381, :c382, :c383, :c384, :c385, :c386, :c387, :c388, :c389, :c390, :c391, :c392, :c393, :c394, :c395, :c396, :c397, :c398, :c399, :c400, :c401, :c402, :c403, :c404, :c405, :c406, :c407, :c408, :c409, :c410, :c411, :c412, :c413, :c414, :c415, :c416, :c417, :c418, :c419, :c420, :c421, :c422, :c423, :c424, :c425, :c426, :c427, :c428, :c429, :c430, :c431, :c432, :c433, :c434, :c435, :c436, :c437, :c438, :c439, :c440, :c441, :c442, :c443, :c444, :c445, :c446, :c447, :c448, :c449, :c450, :c451, :c452, :c453, :c454, :c455, :c456, :c457, :c458, :c459, :c460, :c461, :c462, :c463, :c464, :c465, :c466, :c467, :c468, :c469, :c470, :c471, :c472, :c473, :c474, :c475, :c476, :c477, :c478, :c479, :c480, :c481, :c482, :c483, :c484, :c485, :c486, :c487, :c488, :c489, :c490, :c491, :c492, :c493, :c494, :c495, :c496, :c497, :c498, :c499, :c500, :c501, :c502, :c503, :c504, :c505, :c506, :c507, :c508, :c509, :c510, :c511, :c512, :c513, :c514, :c515, :c516, :c517, :c518, :c519, :c520, :c521, :c522, :c523, :c524, :c525, :c526, :c527, :c528, :c529, :c530, :c531, :c532, :c533, :c534, :c535, :c536, :c537, :c538, :c539, :c540, :c541, :c542, :c543, :c544, :c545, :c546, :c547, :c548, :c549, :c550, :c551, :c552, :c553, :c554, :c555, :c556, :c557, :c558, :c559, :c560, :c561, :c562, :c563, :c564, :c565, :c566, :c567, :c568, :c569, :c570, :c571, :c572, :c573, :c574, :c575, :c576, :c577, :c578, :c579, :c580, :c581, :c582, :c583, :c584, :c585, :c586, :c587, :c588, :c589, :c590, :c591, :c592, :c593, :c594, :c595, :c596, :c597, :c598, :c599, :c600, :c601, :c602, :c603, :c604, :c605, :c606, :c607, :c608, :c609, :c610, :c611, :c612, :c613, :c614, :c615, :c616, :c617, :c618, :c619, :c620, :c621, :c622, :c623, :c624, :c625, :c626, :c627, :c628, :c629, :c630, :c631, :c632, :c633, :c634, :c635, :c636, :c637, :c638, :c639, :c640, :c641, :c642, :c643, :c644, :c645, :c646, :c647, :c648, :c649, :c650, :c651, :c652, :c653, :c654, :c655, :c656, :c657, :c658, :c659, :c660, :c661, :c662, :c663, :c664, :c665, :c666, :c667, :c668, :c669, :c670, :c671, :c672, :c673, :c674, :c675, :c676, :c677, :c678, :c679, :c680, :c681, :c682, :c683, :c684, :c685, :c686, :c687, :c688, :c689, :c690, :c691, :c692, :c693, :c694, :c695, :c696, :c697, :c698, :c699, :c700, :c701, :c702, :c703, :c704, :c705, :c706, :c707, :c708, :c709, :c710, :c711, :c712, :c713, :c714, :c715, :c716, :c717, :c718, :c719, :c720, :c721, :c722, :c723, :c724, :c725, :c726, :c727, :c728, :c729, :c730, :c731, :c732, :c733, :c734, :c735, :c736, :c737, :c738, :c739, :c740, :c741, :c742, :c743, :c744, :c745, :c746, :c747, :c748, :c749, :c750, :c751, :c752, :c753, :c754, :c755, :c756, :c757, :c758, :c759, :c760, :c761, :c762, :c763, :c764, :c765, :c766, :c767, :c768, :c769, :c770, :c771, :c772, :c773, :c774, :c775, :c776, :c777, :c778, :c779, :c780, :c781, :c782, :c783, :c784, :c785, :c786, :c787, :c788, :c789, :c790, :c791, :c792, :c793, :c794, :c795, :c796, :c797, :c798, :c799, :c800, :c801, :c802, :c803, :c804, :c805, :c806, :c807, :c808, :c809, :c810, :c811, :c812, :c813, :c814, :c815, :c816, :c817, :c818, :c819, :c820, :c821, :c822, :c823, :c824, :c825, :c826, :c827, :c828, :c829, :c830, :c831, :c832, :c833, :c834, :c835, :c836, :c837, :c838, :c839, :c840, :c841, :c842, :c843, :c844, :c845, :c846, :c847, :c848, :c849, :c850, :c851, :c852, :c853, :c854, :c855, :c856, :c857, :c858, :c859, :c860, :c861, :c862, :c863, :c864, :c865, :c866, :c867, :c868, :c869, :c870, :c871, :c872, :c873, :c874, :c875, :c876, :c877, :c878, :c879, :c880, :c881, :c882, :c883, :c884, :c885, :c886, :c887, :c888, :c889, :c890, :c891, :c892, :c893, :c894, :c895, :c896, :c897, :c898, :c899, :c900, :c901, :c902, :c903, :c904, :c905, :c906, :c907, :c908, :c909, :c910, :c911, :c912, :c913, :c914, :c915, :c916, :c917, :c918, :c919, :c920, :c921, :c922, :c923, :c924, :c925, :c926, :c927, :c928, :c929, :c930, :c931, :c932, :c933, :c934, :c935, :c936, :c937, :c938, :c939, :c940, :c941, :c942, :c943, :c944, :c945, :c946, :c947, :c948, :c949, :c950, :c951, :c952, :c953, :c954, :c955, :c956, :c957, :c958, :c959, :c960, :c961, :c962, :c963, :c964, :c965, :c966, :c967, :c968, :c969, :c970, :c971, :c972, :c973, :c974, :c975, :c976, :c977, :c978, :c979, :c980, :c981, :c982, :c983, :c984, :c985, :c986, :c987, :c988, :c989, :c990, :c991, :c992, :c993, :c994, :c995, :c996, :c997, :c998, :c999, :c1000, :c1001, :c1002, :c1003, :c1004, :c1005, :c1006, :c1007, :c1008, :c1009, :c1010, :c1011, :c1012, :c1013, :c1014, :c1015, :c1016, :c1017, :c1018, :c1019, :c1020, :c1021, :c1022, :c1023, :c1024, :c1025, :c1026, :c1027, :c1028, :c1029, :c1030, :c1031, :c1032, :c1033, :c1034, :c1035, :c1036, :c1037, :c1038, :c1039, :c1040, :c1041, :c1042, :c1043, :c1044, :c1045, :c1046, :c1047, :c1048, :c1049, :c1050, :c1051, :c1052, :c1053, :c1054, :c1055, :c1056, :c1057, :c1058, :c1059, :c1060, :c1061, :c1062, :c1063, :c1064, :c1065, :c1066, :c1067, :c1068, :c1069, :c1070, :c1071, :c1072, :c1073, :c1074, :c1075, :c1076, :c1077, :c1078, :c1079, :c1080, :c1081, :c1082, :c1083, :c1084, :c1085, :c1086, :c1087, :c1088, :c1089, :c1090, :c1091, :c1092, :c1093, :c1094, :c1095, :c1096, :c1097, :c1098, :c1099, :c1100, :c1101, :c1102, :c1103, :c1104, :c1105, :c1106, :c1107, :c1108, :c1109, :c1110, :c1111, :c1112, :c1113, :c1114, :c1115, :c1116, :c1117, :c1118, :c1119, :c1120, :c1121, :c1122, :c1123, :c1124, :c1125, :c1126, :c1127, :c1128, :c1129, :c1130, :c1131, :c1132, :c1133, :c1134, :c1135, :c1136, :c1137, :c1138, :c1139, :c1140, :c1141, :c1142, :c1143, :c1144, :c1145, :c1146, :c1147, :c1148, :c1149, :c1150, :c1151, :c1152, :c1153, :c1154, :c1155, :c1156, :c1157, :c1158, :c1159, :c1160, :c1161, :c1162, :c1163, :c1164, :c1165, :c1166, :c1167, :c1168, :c1169, :c1170, :c1171, :c1172, :c1173, :c1174, :c1175, :c1176, :c1177, :c1178, :c1179, :c1180, :c1181, :c1182, :c1183, :c1184, :c1185, :c1186, :c1187, :c1188, :c1189, :c1190, :c1191, :c1192, :c1193, :c1194, :c1195, :c1196, :c1197, :c1198, :c1199, :c1200, :c1201, :c1202, :c1203, :c1204, :c1205, :c1206, :c1207, :c1208, :c1209, :c1210, :c1211, :c1212, :c1213, :c1214, :c1215, :c1216, :c1217, :c1218, :c1219, :c1220, :c1221, :c1222, :c1223, :c1224, :c1225, :c1226, :c1227, :c1228, :c1229, :c1230, :c1231, :c1232, :c1233, :c1234, :c1235, :c1236, :c1237, :c1238, :c1239, :c1240, :c1241, :c1242, :c1243, :c1244, :c1245, :c1246, :c1247, :c1248, :c1249, :c1250, :c1251, :c1252, :c1253, :c1254, :c1255, :c1256, :c1257, :c1258, :c1259, :c1260, :c1261, :c1262, :c1263, :c1264, :c1265, :c1266, :c1267, :c1268, :c1269, :c1270, :c1271, :c1272, :c1273, :c1274, :c1275, :c1276, :c1277, :c1278, :c1279, :c1280, :c1281, :c1282, :c1283, :c1284, :c1285, :c1286, :c1287, :c1288, :c1289, :c1290, :c1291, :c1292, :c1293, :c1294, :c1295, :c1296, :c1297, :c1298, :c1299, :c1300, :c1301, :c1302, :c1303, :c1304, :c1305, :c1306, :c1307, :c1308, :c1309, :c1310, :c1311, :c1312, :c1313, :c1314, :c1315, :c1316, :c1317, :c1318, :c1319, :c1320, :c1321, :c1322, :c1323, :c1324, :c1325, :c1326, :c1327, :c1328, :c1329, :c1330, :c1331, :c1332, :c1333, :c1334, :c1335, :c1336, :c1337, :c1338, :c1339, :c1340, :c1341, :c1342, :c1343, :c1344, :c1345, :c1346, :c1347, :c1348, :c1349, :c1350, :c1351, :c1352, :c1353, :c1354, :c1355, :c1356, :c1357, :c1358, :c1359, :c1360, :c1361, :c1362, :c1363, :c1364, :c1365, :c1366, :c1367, :c1368, :c1369, :c1370, :c1371, :c1372, :c1373, :c1374, :c1375, :c1376, :c1377, :c1378, :c1379, :c1380, :c1381, :c1382, :c1383, :c1384, :c1385, :c1386, :c1387, :c1388, :c1389, :c1390, :c1391, :c1392, :c1393, :c1394, :c1395, :c1396, :c1397, :c1398, :c1399, :c1400, :c1401, :c1402, :c1403, :c1404, :c1405, :c1406, :c1407, :c1408, :c1409, :c1410, :c1411, :c1412, :c1413, :c1414, :c1415, :c1416, :c1417, :c1418, :c1419, :c1420, :c1421, :c1422, :c1423, :c1424, :c1425, :c1426, :c1427, :c1428, :c1429, :c1430, :c1431, :c1432, :c1433, :c1434, :c1435, :c1436, :c1437, :c1438, :c1439, :c1440, :c1441, :c1442, :c1443, :c1444, :c1445, :c1446, :c1447, :c1448, :c1449, :c1450, :c1451, :c1452, :c1453, :c1454, :c1455, :c1456, :c1457, :c1458, :c1459, :c1460, :c1461, :c1462, :c1463, :c1464, :c1465, :c1466, :c1467, :c1468, :c1469, :c1470, :c1471, :c1472, :c1473, :c1474, :c1475, :c1476, :c1477, :c1478, :c1479, :c1480, :c1481, :c1482, :c1483, :c1484, :c1485, :c1486, :c1487, :c1488, :c1489, :c1490, :c1491, :c1492, :c1493, :c1494, :c1495, :c1496, :c1497, :c1498, :c1499, :c1500, :c1501, :c1502, :c1503, :c1504, :c1505, :c1506, :c1507, :c1508, :c1509, :c1510, :c1511, :c1512, :c1513, :c1514, :c1515, :c1516, :c1517, :c1518, :c1519, :c1520, :c1521, :c1522, :c1523, :c1524, :c1525, :c1526, :c1527, :c1528, :c1529, :c1530, :c1531, :c1532, :c1533, :c1534, :c1535, :c1536, :c1537, :c1538, :c1539, :c1540, :c1541, :c1542, :c1543, :c1544, :c1545, :c1546, :c1547, :c1548, :c1549, :c1550, :c1551, :c1552, :c1553, :c1554, :c1555, :c1556, :c1557, :c1558, :c1559, :c1560, :c1561, :c1562, :c1563, :c1564, :c1565, :c1566, :c1567, :c1568, :c1569, :c1570, :c1571, :c1572, :c1573, :c1574, :c1575, :c1576, :c1577, :c1578, :c1579, :c1580, :c1581, :c1582, :c1583, :c1584, :c1585, :c1586, :c1587, :c1588, :c1589, :c1590, :c1591, :c1592, :c1593, :c1594, :c1595, :c1596, :c1597, :c1598, :c1599, :c1600, :c1601, :c1602, :c1603, :c1604, :c1605, :c1606, :c1607, :c1608, :c1609, :c1610, :c1611, :c1612, :c1613, :c1614, :c1615, :c1616, :c1617, :c1618, :c1619, :c1620, :c1621, :c1622, :c1623, :c1624, :c1625, :c1626, :c1627, :c1628, :c1629, :c1630, :c1631, :c1632, :c1633, :c1634, :c1635, :c1636, :c1637, :c1638, :c1639, :c1640, :c1641, :c1642, :c1643, :c1644, :c1645, :c1646, :c1647, :c1648, :c1649, :c1650, :c1651, :c1652, :c1653, :c1654, :c1655, :c1656, :c1657, :c1658, :c1659, :c1660, :c1661, :c1662, :c1663, :c1664, :c1665, :c1666, :c1667, :c1668, :c1669, :c1670, :c1671, :c1672, :c1673, :c1674, :c1675, :c1676, :c1677, :c1678, :c1679, :c1680, :c1681, :c1682, :c1683, :c1684, :c1685, :c1686, :c1687, :c1688, :c1689, :c1690, :c1691, :c1692, :c1693, :c1694, :c1695, :c1696, :c1697, :c1698, :c1699, :c1700, :c1701, :c1702, :c1703, :c1704, :c1705, :c1706, :c1707, :c1708, :c1709, :c1710, :c1711, :c1712, :c1713, :c1714, :c1715, :c1716, :c1717, :c1718, :c1719, :c1720, :c1721, :c1722, :c1723, :c1724, :c1725, :c1726, :c1727, :c1728, :c1729, :c1730, :c1731, :c1732, :c1733, :c1734, :c1735, :c1736, :c1737, :c1738, :c1739, :c1740, :c1741, :c1742, :c1743, :c1744, :c1745, :c1746, :c1747, :c1748, :c1749, :c1750, :c1751, :c1752, :c1753, :c1754, :c1755, :c1756, :c1757, :c1758, :c1759, :c1760, :c1761, :c1762, :c1763, :c1764, :c1765, :c1766, :c1767, :c1768, :c1769, :c1770, :c1771, :c1772, :c1773, :c1774, :c1775, :c1776, :c1777, :c1778, :c1779, :c1780, :c1781, :c1782, :c1783, :c1784, :c1785, :c1786, :c1787, :c1788, :c1789, :c1790, :c1791, :c1792, :c1793, :c1794, :c1795, :c1796, :c1797, :c1798, :c1799, :c1800, :c1801, :c1802, :c1803, :c1804, :c1805, :c1806, :c1807, :c1808, :c1809, :c1810, :c1811, :c1812, :c1813, :c1814, :c1815, :c1816, :c1817, :c1818, :c1819, :c1820, :c1821, :c1822, :c1823, :c1824, :c1825, :c1826, :c1827, :c1828, :c1829, :c1830, :c1831, :c1832, :c1833, :c1834, :c1835, :c1836, :c1837, :c1838, :c1839, :c1840, :c1841, :c1842, :c1843, :c1844, :c1845, :c1846, :c1847, :c1848, :c1849, :c1850, :c1851, :c1852, :c1853, :c1854, :c1855, :c1856, :c1857, :c1858, :c1859, :c1860, :c1861, :c1862, :c1863, :c1864, :c1865, :c1866, :c1867, :c1868, :c1869, :c1870, :c1871, :c1872, :c1873, :c1874, :c1875, :c1876, :c1877, :c1878, :c1879, :c1880, :c1881, :c1882, :c1883, :c1884, :c1885, :c1886, :c1887, :c1888, :c1889, :c1890, :c1891, :c1892, :c1893, :c1894, :c1895, :c1896, :c1897, :c1898, :c1899, :c1900, :c1901, :c1902, :c1903, :c1904, :c1905, :c1906, :c1907, :c1908, :c1909, :c1910, :c1911, :c1912, :c1913, :c1914, :c1915, :c1916, :c1917, :c1918, :c1919, :c1920, :c1921, :c1922, :c1923, :c1924, :c1925, :c1926, :c1927, :c1928, :c1929, :c1930, :c1931, :c1932, :c1933, :c1934, :c1935, :c1936, :c1937, :c1938, :c1939, :c1940, :c1941, :c1942, :c1943, :c1944, :c1945, :c1946, :c1947, :c1948, :c1949, :c1950, :c1951, :c1952, :c1953, :c1954, :c1955, :c1956, :c1957, :c1958, :c1959, :c1960, :c1961, :c1962, :c1963, :c1964, :c1965, :c1966, :c1967, :c1968, :c1969, :c1970, :c1971, :c1972, :c1973, :c1974, :c1975, :c1976, :c1977, :c1978, :c1979, :c1980, :c1981, :c1982, :c1983, :c1984, :c1985, :c1986, :c1987, :c1988, :c1989, :c1990, :c1991, :c1992, :c1993, :c1994, :c1995, :c1996, :c1997, :c1998, :c1999, :c2000, :c2001, :c2002, :c2003, :c2004, :c2005, :c2006, :c2007, :c2008, :c2009, :c2010, :c2011, :c2012, :c2013, :c2014, :c2015, :c2016, :c2017, :c2018, :c2019, :c2020, :c2021, :c2022, :c2023, :c2024, :c2025, :c2026, :c2027, :c2028, :c2029, :c2030, :c2031, :c2032, :c2033, :c2034, :c2035, :c2036, :c2037, :c2038, :c2039, :c2040, :c2041, :c2042, :c2043, :c2044, :c2045, :c2046, :c2047, :c2048, :c2049, :c2050, :c2051, :c2052, :c2053, :c2054, :c2055, :c2056, :c2057, :c2058, :c2059, :c2060, :c2061, :c2062, :c2063, :c2064, :c2065, :c2066, :c2067, :c2068, :c2069, :c2070, :c2071, :c2072, :c2073, :c2074, :c2075, :c2076, :c2077, :c2078, :c2079, :c2080, :c2081, :c2082, :c2083, :c2084, :c2085, :c2086, :c2087, :c2088, :c2089, :c2090, :c2091, :c2092, :c2093, :c2094, :c2095, :c2096, :c2097, :c2098, :c2099, :c2100, :c2101, :c2102, :c2103, :c2104, :c2105, :c2106, :c2107, :c2108, :c2109, :c2110, :c2111, :c2112, :c2113, :c2114, :c2115, :c2116, :c2117, :c2118, :c2119, :c2120, :c2121, :c2122, :c2123, :c2124, :c2125, :c2126, :c2127, :c2128, :c2129, :c2130, :c2131, :c2132, :c2133, :c2134, :c2135, :c2136, :c2137, :c2138, :c2139, :c2140, :c2141, :c2142, :c2143, :c2144, :c2145, :c2146, :c2147, :c2148, :c2149, :c2150, :c2151, :c2152, :c2153, :c2154, :c2155, :c2156, :c2157, :c2158, :c2159, :c2160, :c2161, :c2162, :c2163, :c2164, :c2165, :c2166, :c2167, :c2168, :c2169, :c2170, :c2171, :c2172, :c2173, :c2174, :c2175, :c2176, :c2177, :c2178, :c2179, :c2180, :c2181, :c2182, :c2183, :c2184, :c2185, :c2186, :c2187, :c2188, :c2189, :c2190, :c2191, :c2192, :c2193, :c2194, :c2195, :c2196, :c2197, :c2198, :c2199, :c2200, :c2201, :c2202, :c2203, :c2204, :c2205, :c2206, :c2207, :c2208, :c2209, :c2210, :c2211, :c2212, :c2213, :c2214, :c2215, :c2216, :c2217, :c2218, :c2219, :c2220, :c2221, :c2222, :c2223, :c2224, :c2225, :c2226, :c2227, :c2228, :c2229, :c2230, :c2231, :c2232, :c2233, :c2234, :c2235, :c2236, :c2237, :c2238, :c2239, :c2240, :c2241, :c2242, :c2243, :c2244, :c2245, :c2246, :c2247, :c2248, :c2249, :c2250, :c2251, :c2252, :c2253, :c2254, :c2255, :c2256, :c2257, :c2258, :c2259, :c2260, :c2261, :c2262, :c2263, :c2264, :c2265, :c2266, :c2267, :c2268, :c2269, :c2270, :c2271, :c2272, :c2273, :c2274, :c2275, :c2276, :c2277, :c2278, :c2279, :c2280, :c2281, :c2282, :c2283, :c2284, :c2285, :c2286, :c2287, :c2288, :c2289, :c2290, :c2291, :c2292, :c2293, :c2294, :c2295, :c2296, :c2297, :c2298, :c2299, :c2300, :c2301, :c2302, :c2303, :c2304, :c2305, :c2306, :c2307, :c2308, :c2309, :c2310, :c2311, :c2312, :c2313, :c2314, :c2315, :c2316, :c2317, :c2318, :c2319, :c2320, :c2321, :c2322, :c2323, :c2324, :c2325, :c2326, :c2327, :c2328, :c2329, :c2330, :c2331, :c2332, :c2333, :c2334, :c2335, :c2336, :c2337, :c2338, :c2339, :c2340, :c2341, :c2342, :c2343, :c2344, :c2345, :c2346, :c2347, :c2348, :c2349, :c2350, :c2351, :c2352, :c2353, :c2354, :c2355, :c2356, :c2357, :c2358, :c2359, :c2360, :c2361, :c2362, :c2363, :c2364, :c2365, :c2366, :c2367, :c2368, :c2369, :c2370, :c2371, :c2372, :c2373, :c2374, :c2375, :c2376, :c2377, :c2378, :c2379, :c2380, :c2381, :c2382, :c2383, :c2384, :c2385, :c2386, :c2387, :c2388, :c2389, :c2390, :c2391, :c2392, :c2393, :c2394, :c2395, :c2396, :c2397, :c2398, :c2399, :c2400, :c2401, :c2402, :c2403, :c2404, :c2405, :c2406, :c2407, :c2408, :c2409, :c2410, :c2411, :c2412, :c2413, :c2414, :c2415, :c2416, :c2417, :c2418, :c2419, :c2420, :c2421, :c2422, :c2423, :c2424, :c2425, :c2426, :c2427, :c2428, :c2429, :c2430, :c2431, :c2432, :c2433, :c2434, :c2435, :c2436, :c2437, :c2438, :c2439, :c2440, :c2441, :c2442, :c2443, :c2444, :c2445, :c2446, :c2447, :c2448, :c2449, :c2450, :c2451, :c2452, :c2453, :c2454, :c2455, :c2456, :c2457, :c2458, :c2459, :c2460, :c2461, :c2462, :c2463, :c2464, :c2465, :c2466, :c2467, :c2468, :c2469, :c2470, :c2471, :c2472, :c2473, :c2474, :c2475, :c2476, :c2477, :c2478, :c2479, :c2480, :c2481, :c2482, :c2483, :c2484, :c2485, :c2486, :c2487, :c2488, :c2489, :c2490, :c2491, :c2492, :c2493, :c2494, :c2495, :c2496, :c2497, :c2498, :c2499, :c2500, :c2501, :c2502, :c2503, :c2504, :c2505, :c2506, :c2507, :c2508, :c2509, :c2510, :c2511, :c2512, :c2513, :c2514, :c2515, :c2516, :c2517, :c2518, :c2519, :c2520, :c2521, :c2522, :c2523, :c2524, :c2525, :c2526, :c2527, :c2528, :c2529, :c2530, :c2531, :c2532, :c2533, :c2534, :c2535, :c2536, :c2537, :c2538, :c2539, :c2540, :c2541, :c2542, :c2543, :c2544, :c2545, :c2546, :c2547, :c2548, :c2549, :c2550, :c2551, :c2552, :c2553, :c2554, :c2555, :c2556, :c2557, :c2558, :c2559, :c2560, :c2561, :c2562, :c2563, :c2564, :c2565, :c2566, :c2567, :c2568, :c2569, :c2570, :c2571, :c2572, :c2573, :c2574, :c2575, :c2576, :c2577, :c2578, :c2579, :c2580, :c2581, :c2582, :c2583, :c2584, :c2585, :c2586, :c2587, :c2588, :c2589, :c2590, :c2591, :c2592, :c2593, :c2594, :c2595, :c2596, :c2597, :c2598, :c2599, :c2600, :c2601, :c2602, :c2603, :c2604, :c2605, :c2606, :c2607, :c2608, :c2609, :c2610, :c2611, :c2612, :c2613, :c2614, :c2615, :c2616, :c2617, :c2618, :c2619, :c2620, :c2621, :c2622, :c2623, :c2624, :c2625, :c2626, :c2627, :c2628, :c2629, :c2630, :c2631, :c2632, :c2633, :c2634, :c2635, :c2636, :c2637, :c2638, :c2639, :c2640, :c2641, :c2642, :c2643, :c2644, :c2645, :c2646, :c2647, :c2648, :c2649, :c2650, :c2651, :c2652, :c2653, :c2654, :c2655, :c2656, :c2657, :c2658, :c2659, :c2660, :c2661, :c2662, :c2663, :c2664, :c2665, :c2666, :c2667, :c2668, :c2669, :c2670, :c2671, :c2672, :c2673, :c2674, :c2675, :c2676, :c2677, :c2678, :c2679, :c2680, :c2681, :c2682, :c2683, :c2684, :c2685, :c2686, :c2687, :c2688, :c2689, :c2690, :c2691, :c2692, :c2693, :c2694, :c2695, :c2696, :c2697, :c2698, :c2699, :c2700, :c2701, :c2702, :c2703, :c2704, :c2705, :c2706, :c2707, :c2708, :c2709, :c2710, :c2711, :c2712, :c2713, :c2714, :c2715, :c2716, :c2717, :c2718, :c2719, :c2720, :c2721, :c2722, :c2723, :c2724, :c2725, :c2726, :c2727, :c2728, :c2729, :c2730, :c2731, :c2732, :c2733, :c2734, :c2735, :c2736, :c2737, :c2738, :c2739, :c2740, :c2741, :c2742, :c2743, :c2744, :c2745, :c2746, :c2747, :c2748, :c2749, :c2750, :c2751, :c2752, :c2753, :c2754, :c2755, :c2756, :c2757, :c2758, :c2759, :c2760, :c2761, :c2762, :c2763, :c2764, :c2765, :c2766, :c2767, :c2768, :c2769, :c2770, :c2771, :c2772, :c2773, :c2774, :c2775, :c2776, :c2777, :c2778, :c2779, :c2780, :c2781, :c2782, :c2783, :c2784, :c2785, :c2786, :c2787, :c2788, :c2789, :c2790, :c2791, :c2792, :c2793, :c2794, :c2795, :c2796, :c2797, :c2798, :c2799, :c2800, :c2801, :c2802, :c2803, :c2804, :c2805, :c2806, :c2807, :c2808, :c2809, :c2810, :c2811, :c2812, :c2813, :c2814, :c2815, :c2816, :c2817, :c2818, :c2819, :c2820, :c2821, :c2822, :c2823, :c2824, :c2825, :c2826, :c2827, :c2828, :c2829, :c2830, :c2831, :c2832, :c2833, :c2834, :c2835, :c2836, :c2837, :c2838, :c2839, :c2840, :c2841, :c2842, :c2843, :c2844, :c2845, :c2846, :c2847, :c2848, :c2849, :c2850, :c2851, :c2852, :c2853, :c2854, :c2855, :c2856, :c2857, :c2858, :c2859, :c2860, :c2861, :c2862, :c2863, :c2864, :c2865, :c2866, :c2867, :c2868, :c2869, :c2870, :c2871, :c2872, :c2873, :c2874, :c2875, :c2876, :c2877, :c2878, :c2879, :c2880, :c2881, :c2882, :c2883, :c2884, :c2885, :c2886, :c2887, :c2888, :c2889, :c2890, :c2891, :c2892, :c2893, :c2894, :c2895, :c2896, :c2897, :c2898, :c2899, :c2900, :c2901, :c2902, :c2903, :c2904, :c2905, :c2906, :c2907, :c2908, :c2909, :c2910, :c2911, :c2912, :c2913, :c2914, :c2915, :c2916, :c2917, :c2918, :c2919, :c2920, :c2921, :c2922, :c2923, :c2924, :c2925, :c2926, :c2927, :c2928, :c2929, :c2930, :c2931, :c2932, :c2933, :c2934, :c2935, :c2936, :c2937, :c2938, :c2939, :c2940, :c2941, :c2942, :c2943, :c2944, :c2945, :c2946, :c2947, :c2948, :c2949, :c2950, :c2951, :c2952, :c2953, :c2954, :c2955, :c2956, :c2957, :c2958, :c2959, :c2960, :c2961, :c2962, :c2963, :c2964, :c2965, :c2966, :c2967, :c2968, :c2969, :c2970, :c2971, :c2972, :c2973, :c2974, :c2975, :c2976, :c2977, :c2978, :c2979, :c2980, :c2981, :c2982, :c2983, :c2984, :c2985, :c2986, :c2987, :c2988, :c2989, :c2990, :c2991, :c2992, :c2993, :c2994, :c2995, :c2996, :c2997, :c2998, :c2999, :c3000, :c3001, :c3002, :c3003, :c3004, :c3005, :c3006, :c3007, :c3008, :c3009, :c3010, :c3011, :c3012, :c3013, :c3014, :c3015, :c3016, :c3017, :c3018, :c3019, :c3020, :c3021, :c3022, :c3023, :c3024, :c3025, :c3026, :c3027, :c3028, :c3029, :c3030, :c3031, :c3032, :c3033, :c3034, :c3035, :c3036, :c3037, :c3038, :c3039, :c3040, :c3041, :c3042, :c3043, :c3044, :c3045, :c3046, :c3047, :c3048, :c3049, :c3050, :c3051, :c3052, :c3053, :c3054, :c3055, :c3056, :c3057, :c3058, :c3059, :c3060, :c3061, :c3062, :c3063, :c3064, :c3065, :c3066, :c3067, :c3068, :c3069, :c3070, :c3071, :c3072, :c3073, :c3074, :c3075, :c3076, :c3077, :c3078, :c3079, :c3080, :c3081, :c3082, :c3083, :c3084, :c3085, :c3086, :c3087, :c3088, :c3089, :c3090, :c3091, :c3092, :c3093, :c3094, :c3095, :c3096, :c3097, :c3098, :c3099, :c3100, :c3101, :c3102, :c3103, :c3104, :c3105, :c3106, :c3107, :c3108, :c3109, :c3110, :c3111, :c3112, :c3113, :c3114, :c3115, :c3116, :c3117, :c3118, :c3119, :c3120, :c3121, :c3122, :c3123, :c3124, :c3125, :c3126, :c3127, :c3128, :c3129, :c3130, :c3131, :c3132, :c3133, :c3134, :c3135, :c3136, :c3137, :c3138, :c3139, :c3140, :c3141, :c3142, :c3143, :c3144, :c3145, :c3146, :c3147, :c3148, :c3149, :c3150, :c3151, :c3152, :c3153, :c3154, :c3155, :c3156, :c3157, :c3158, :c3159, :c3160, :c3161, :c3162, :c3163, :c3164, :c3165, :c3166, :c3167, :c3168, :c3169, :c3170, :c3171, :c3172, :c3173, :c3174, :c3175, :c3176, :c3177, :c3178, :c3179, :c3180, :c3181, :c3182, :c3183, :c3184, :c3185, :c3186, :c3187, :c3188, :c3189, :c3190, :c3191, :c3192, :c3193, :c3194, :c3195, :c3196, :c3197, :c3198, :c3199, :c3200, :c3201, :c3202, :c3203, :c3204, :c3205, :c3206, :c3207, :c3208, :c3209, :c3210, :c3211, :c3212, :c3213, :c3214, :c3215, :c3216, :c3217, :c3218, :c3219, :c3220, :c3221, :c3222, :c3223, :c3224, :c3225, :c3226, :c3227, :c3228, :c3229, :c3230, :c3231, :c3232, :c3233, :c3234, :c3235, :c3236, :c3237, :c3238, :c3239, :c3240, :c3241, :c3242, :c3243, :c3244, :c3245, :c3246, :c3247, :c3248, :c3249, :c3250, :c3251, :c3252, :c3253, :c3254, :c3255, :c3256, :c3257, :c3258, :c3259, :c3260, :c3261, :c3262, :c3263, :c3264, :c3265, :c3266, :c3267, :c3268, :c3269, :c3270, :c3271, :c3272, :c3273, :c3274, :c3275, :c3276, :c3277, :c3278, :c3279, :c3280, :c3281, :c3282, :c3283, :c3284, :c3285, :c3286, :c3287, :c3288, :c3289, :c3290, :c3291, :c3292, :c3293, :c3294, :c3295, :c3296, :c3297, :c3298, :c3299, :c3300, :c3301, :c3302, :c3303, :c3304, :c3305, :c3306, :c3307, :c3308, :c3309, :c3310, :c3311, :c3312, :c3313, :c3314, :c3315, :c3316, :c3317, :c3318, :c3319, :c3320, :c3321, :c3322, :c3323, :c3324, :c3325, :c3326, :c3327, :c3328, :c3329, :c3330, :c3331, :c3332, :c3333, :c3334, :c3335, :c3336, :c3337, :c3338, :c3339, :c3340, :c3341, :c3342, :c3343, :c3344, :c3345, :c3346, :c3347, :c3348, :c3349, :c3350, :c3351, :c3352, :c3353, :c3354, :c3355, :c3356, :c3357, :c3358, :c3359, :c3360, :c3361, :c3362, :c3363, :c3364, :c3365, :c3366, :c3367, :c3368, :c3369, :c3370, :c3371, :c3372, :c3373, :c3374, :c3375, :c3376, :c3377, :c3378, :c3379, :c3380, :c3381, :c3382, :c3383, :c3384, :c3385, :c3386, :c3387, :c3388, :c3389, :c3390, :c3391, :c3392, :c3393, :c3394, :c3395, :c3396, :c3397, :c3398, :c3399, :c3400, :c3401, :c3402, :c3403, :c3404, :c3405, :c3406, :c3407, :c3408, :c3409, :c3410, :c3411, :c3412, :c3413, :c3414, :c3415, :c3416, :c3417, :c3418, :c3419, :c3420, :c3421, :c3422, :c3423, :c3424, :c3425, :c3426, :c3427, :c3428, :c3429, :c3430, :c3431, :c3432, :c3433, :c3434, :c3435, :c3436, :c3437, :c3438, :c3439, :c3440, :c3441, :c3442, :c3443, :c3444, :c3445, :c3446, :c3447, :c3448, :c3449, :c3450, :c3451, :c3452, :c3453, :c3454, :c3455, :c3456, :c3457, :c3458, :c3459, :c3460, :c3461, :c3462, :c3463, :c3464, :c3465, :c3466, :c3467, :c3468, :c3469, :c3470, :c3471, :c3472, :c3473, :c3474, :c3475, :c3476, :c3477, :c3478, :c3479, :c3480, :c3481, :c3482, :c3483, :c3484, :c3485, :c3486, :c3487, :c3488, :c3489, :c3490, :c3491, :c3492, :c3493, :c3494, :c3495, :c3496, :c3497, :c3498, :c3499, :c3500, :c3501, :c3502, :c3503, :c3504, :c3505, :c3506, :c3507, :c3508, :c3509, :c3510, :c3511, :c3512, :c3513, :c3514, :c3515, :c3516, :c3517, :c3518, :c3519, :c3520, :c3521, :c3522, :c3523, :c3524, :c3525, :c3526, :c3527, :c3528, :c3529, :c3530, :c3531, :c3532, :c3533, :c3534, :c3535, :c3536, :c3537, :c3538, :c3539, :c3540, :c3541, :c3542, :c3543, :c3544, :c3545, :c3546, :c3547, :c3548, :c3549, :c3550, :c3551, :c3552, :c3553, :c3554, :c3555, :c3556, :c3557, :c3558, :c3559, :c3560, :c3561, :c3562, :c3563, :c3564, :c3565, :c3566, :c3567, :c3568, :c3569, :c3570, :c3571, :c3572, :c3573, :c3574, :c3575, :c3576, :c3577, :c3578, :c3579, :c3580, :c3581, :c3582, :c3583, :c3584, :c3585, :c3586, :c3587, :c3588, :c3589, :c3590, :c3591, :c3592, :c3593, :c3594, :c3595, :c3596, :c3597, :c3598, :c3599, :c3600, :c3601, :c3602, :c3603, :c3604, :c3605, :c3606, :c3607, :c3608, :c3609, :c3610, :c3611, :c3612, :c3613, :c3614, :c3615, :c3616, :c3617, :c3618, :c3619, :c3620, :c3621, :c3622, :c3623, :c3624, :c3625, :c3626, :c3627, :c3628, :c3629, :c3630, :c3631, :c3632, :c3633, :c3634, :c3635, :c3636, :c3637, :c3638, :c3639, :c3640, :c3641, :c3642, :c3643, :c3644, :c3645, :c3646, :c3647, :c3648, :c3649, :c3650, :c3651, :c3652, :c3653, :c3654, :c3655, :c3656, :c3657, :c3658, :c3659, :c3660, :c3661, :c3662, :c3663, :c3664, :c3665, :c3666, :c3667, :c3668, :c3669, :c3670, :c3671, :c3672, :c3673, :c3674, :c3675, :c3676, :c3677, :c3678, :c3679, :c3680, :c3681, :c3682, :c3683, :c3684, :c3685, :c3686, :c3687, :c3688, :c3689, :c3690, :c3691, :c3692, :c3693, :c3694, :c3695, :c3696, :c3697, :c3698, :c3699, :c3700, :c3701, :c3702, :c3703, :c3704, :c3705, :c3706, :c3707, :c3708, :c3709, :c3710, :c3711, :c3712, :c3713, :c3714, :c3715, :c3716, :c3717, :c3718, :c3719, :c3720, :c3721, :c3722, :c3723, :c3724, :c3725, :c3726, :c3727, :c3728, :c3729, :c3730, :c3731, :c3732, :c3733, :c3734, :c3735, :c3736, :c3737, :c3738, :c3739, :c3740, :c3741, :c3742, :c3743, :c3744, :c3745, :c3746, :c3747, :c3748, :c3749, :c3750, :c3751, :c3752, :c3753, :c3754, :c3755, :c3756, :c3757, :c3758, :c3759, :c3760, :c3761, :c3762, :c3763, :c3764, :c3765, :c3766, :c3767, :c3768, :c3769, :c3770, :c3771, :c3772, :c3773, :c3774, :c3775, :c3776, :c3777, :c3778, :c3779, :c3780, :c3781, :c3782, :c3783, :c3784, :c3785, :c3786, :c3787, :c3788, :c3789, :c3790, :c3791, :c3792, :c3793, :c3794, :c3795, :c3796, :c3797, :c3798, :c3799, :c3800, :c3801, :c3802, :c3803, :c3804, :c3805, :c3806, :c3807, :c3808, :c3809, :c3810, :c3811, :c3812, :c3813, :c3814, :c3815, :c3816, :c3817, :c3818, :c3819, :c3820, :c3821, :c3822, :c3823, :c3824, :c3825, :c3826, :c3827, :c3828, :c3829, :c3830, :c3831, :c3832, :c3833, :c3834, :c3835, :c3836, :c3837, :c3838, :c3839, :c3840, :c3841, :c3842, :c3843, :c3844, :c3845, :c3846, :c3847, :c3848, :c3849, :c3850, :c3851, :c3852, :c3853, :c3854, :c3855, :c3856, :c3857, :c3858, :c3859, :c3860, :c3861, :c3862, :c3863, :c3864, :c3865, :c3866, :c3867, :c3868, :c3869, :c3870, :c3871, :c3872, :c3873, :c3874, :c3875, :c3876, :c3877, :c3878, :c3879, :c3880, :c3881, :c3882, :c3883, :c3884, :c3885, :c3886, :c3887, :c3888, :c3889, :c3890, :c3891, :c3892, :c3893, :c3894, :c3895, :c3896, :c3897, :c3898, :c3899, :c3900, :c3901, :c3902, :c3903, :c3904, :c3905, :c3906, :c3907, :c3908, :c3909, :c3910, :c3911, :c3912, :c3913, :c3914, :c3915, :c3916, :c3917, :c3918, :c3919, :c3920, :c3921, :c3922, :c3923, :c3924, :c3925, :c3926, :c3927, :c3928, :c3929, :c3930, :c3931, :c3932, :c3933, :c3934, :c3935, :c3936, :c3937, :c3938, :c3939, :c3940, :c3941, :c3942, :c3943, :c3944, :c3945, :c3946, :c3947, :c3948, :c3949, :c3950, :c3951, :c3952, :c3953, :c3954, :c3955, :c3956, :c3957, :c3958, :c3959, :c3960, :c3961, :c3962, :c3963, :c3964, :c3965, :c3966, :c3967, :c3968, :c3969, :c3970, :c3971, :c3972, :c3973, :c3974, :c3975, :c3976, :c3977, :c3978, :c3979, :c3980, :c3981, :c3982, :c3983, :c3984, :c3985, :c3986, :c3987, :c3988, :c3989, :c3990, :c3991, :c3992, :c3993, :c3994, :c3995, :c3996, :c3997, :c3998, :c3999, :c4000, :c4001, :c4002, :c4003, :c4004, :c4005, :c4006, :c4007, :c4008, :c4009, :c4010, :c4011, :c4012, :c4013, :c4014, :c4015, :c4016, :c4017, :c4018, :c4019, :c4020, :c4021, :c4022, :c4023, :c4024, :c4025, :c4026, :c4027, :c4028, :c4029, :c4030, :c4031, :c4032, :c4033, :c4034, :c4035, :c4036, :c4037, :c4038, :c4039, :c4040, :c4041, :c4042, :c4043, :c4044, :c4045, :c4046, :c4047, :c4048, :c4049, :c4050, :c4051, :c4052, :c4053, :c4054, :c4055, :c4056, :c4057, :c4058, :c4059, :c4060, :c4061, :c4062, :c4063, :c4064, :c4065, :c4066, :c4067, :c4068, :c4069, :c4070, :c4071, :c4072, :c4073, :c4074, :c4075, :c4076, :c4077, :c4078, :c4079, :c4080, :c4081, :c4082, :c4083, :c4084, :c4085, :c4086, :c4087, :c4088, :c4089, :c4090, :c4091, :c4092, :c4093, :c4094, :c4095, :c4096, :c4097, :c4098, :c4099, :c4100, :c4101, :c4102, :c4103, :c4104, :c4105, :c4106, :c4107, :c4108, :c4109, :c4110, :c4111, :c4112, :c4113, :c4114, :c4115, :c4116, :c4117, :c4118, :c4119, :c4120, :c4121, :c4122, :c4123, :c4124, :c4125, :c4126, :c4127, :c4128, :c4129, :c4130, :c4131, :c4132, :c4133, :c4134, :c4135, :c4136, :c4137, :c4138, :c4139, :c4140, :c4141, :c4142, :c4143, :c4144, :c4145, :c4146, :c4147, :c4148, :c4149, :c4150, :c4151, :c4152, :c4153, :c4154, :c4155, :c4156, :c4157, :c4158, :c4159, :c4160, :c4161, :c4162, :c4163, :c4164, :c4165, :c4166, :c4167, :c4168, :c4169, :c4170, :c4171, :c4172, :c4173, :c4174, :c4175, :c4176, :c4177, :c4178, :c4179, :c4180, :c4181, :c4182, :c4183, :c4184, :c4185, :c4186, :c4187, :c4188, :c4189, :c4190, :c4191, :c4192, :c4193, :c4194, :c4195, :c4196, :c4197, :c4198, :c4199, :c4200, :c4201, :c4202, :c4203, :c4204, :c4205, :c4206, :c4207, :c4208, :c4209, :c4210, :c4211, :c4212, :c4213, :c4214, :c4215, :c4216, :c4217, :c4218, :c4219, :c4220, :c4221, :c4222, :c4223, :c4224, :c4225, :c4226, :c4227, :c4228, :c4229, :c4230, :c4231, :c4232, :c4233, :c4234, :c4235, :c4236, :c4237, :c4238, :c4239, :c4240, :c4241, :c4242, :c4243, :c4244, :c4245, :c4246, :c4247, :c4248, :c4249, :c4250, :c4251, :c4252, :c4253, :c4254, :c4255, :c4256, :c4257, :c4258, :c4259, :c4260, :c4261, :c4262, :c4263, :c4264, :c4265, :c4266, :c4267, :c4268, :c4269, :c4270, :c4271, :c4272, :c4273, :c4274, :c4275, :c4276, :c4277, :c4278, :c4279, :c4280, :c4281, :c4282, :c4283, :c4284, :c4285, :c4286, :c4287, :c4288, :c4289, :c4290, :c4291, :c4292, :c4293, :c4294, :c4295, :c4296, :c4297, :c4298, :c4299, :c4300, :c4301, :c4302, :c4303, :c4304, :c4305, :c4306, :c4307, :c4308, :c4309, :c4310, :c4311, :c4312, :c4313, :c4314, :c4315, :c4316, :c4317, :c4318, :c4319, :c4320, :c4321, :c4322, :c4323, :c4324, :c4325, :c4326, :c4327, :c4328, :c4329, :c4330, :c4331, :c4332, :c4333, :c4334, :c4335, :c4336, :c4337, :c4338, :c4339, :c4340, :c4341, :c4342, :c4343, :c4344, :c4345, :c4346, :c4347, :c4348, :c4349, :c4350, :c4351, :c4352, :c4353, :c4354, :c4355, :c4356, :c4357, :c4358, :c4359, :c4360, :c4361, :c4362, :c4363, :c4364, :c4365, :c4366, :c4367, :c4368, :c4369, :c4370, :c4371, :c4372, :c4373, :c4374, :c4375, :c4376, :c4377, :c4378, :c4379, :c4380, :c4381, :c4382, :c4383, :c4384, :c4385, :c4386, :c4387, :c4388, :c4389, :c4390, :c4391, :c4392, :c4393, :c4394, :c4395, :c4396, :c4397, :c4398, :c4399, :c4400, :c4401, :c4402, :c4403, :c4404, :c4405, :c4406, :c4407, :c4408, :c4409, :c4410, :c4411, :c4412, :c4413, :c4414, :c4415, :c4416, :c4417, :c4418, :c4419, :c4420, :c4421, :c4422, :c4423, :c4424, :c4425, :c4426, :c4427, :c4428, :c4429, :c4430, :c4431, :c4432, :c4433, :c4434, :c4435, :c4436, :c4437, :c4438, :c4439, :c4440, :c4441, :c4442, :c4443, :c4444, :c4445, :c4446, :c4447, :c4448, :c4449, :c4450, :c4451, :c4452, :c4453, :c4454, :c4455, :c4456, :c4457, :c4458, :c4459, :c4460, :c4461, :c4462, :c4463, :c4464, :c4465, :c4466, :c4467, :c4468, :c4469, :c4470, :c4471, :c4472, :c4473, :c4474, :c4475, :c4476, :c4477, :c4478, :c4479, :c4480, :c4481, :c4482, :c4483, :c4484, :c4485, :c4486, :c4487, :c4488, :c4489, :c4490, :c4491, :c4492, :c4493, :c4494, :c4495, :c4496, :c4497, :c4498, :c4499, :c4500, :c4501, :c4502, :c4503, :c4504, :c4505, :c4506, :c4507, :c4508, :c4509, :c4510, :c4511, :c4512, :c4513, :c4514, :c4515, :c4516, :c4517, :c4518, :c4519, :c4520, :c4521, :c4522, :c4523, :c4524, :c4525, :c4526, :c4527, :c4528, :c4529, :c4530, :c4531, :c4532, :c4533, :c4534, :c4535, :c4536, :c4537, :c4538, :c4539, :c4540, :c4541, :c4542, :c4543, :c4544, :c4545, :c4546, :c4547, :c4548, :c4549, :c4550, :c4551, :c4552, :c4553, :c4554, :c4555, :c4556, :c4557, :c4558, :c4559, :c4560, :c4561, :c4562, :c4563, :c4564, :c4565, :c4566, :c4567, :c4568, :c4569, :c4570, :c4571, :c4572, :c4573, :c4574, :c4575, :c4576, :c4577, :c4578, :c4579, :c4580, :c4581, :c4582, :c4583, :c4584, :c4585, :c4586, :c4587, :c4588, :c4589, :c4590, :c4591, :c4592, :c4593, :c4594, :c4595, :c4596, :c4597, :c4598, :c4599, :c4600, :c4601, :c4602, :c4603, :c4604, :c4605, :c4606, :c4607, :c4608, :c4609, :c4610, :c4611, :c4612, :c4613, :c4614, :c4615, :c4616, :c4617, :c4618, :c4619, :c4620, :c4621, :c4622, :c4623, :c4624, :c4625, :c4626, :c4627, :c4628, :c4629, :c4630, :c4631, :c4632, :c4633, :c4634, :c4635, :c4636, :c4637, :c4638, :c4639, :c4640, :c4641, :c4642, :c4643, :c4644, :c4645, :c4646, :c4647, :c4648, :c4649, :c4650, :c4651, :c4652, :c4653, :c4654, :c4655, :c4656, :c4657, :c4658, :c4659, :c4660, :c4661, :c4662, :c4663, :c4664, :c4665, :c4666, :c4667, :c4668, :c4669, :c4670, :c4671, :c4672, :c4673, :c4674, :c4675, :c4676, :c4677, :c4678, :c4679, :c4680, :c4681, :c4682, :c4683, :c4684, :c4685, :c4686, :c4687, :c4688, :c4689, :c4690, :c4691, :c4692, :c4693, :c4694, :c4695, :c4696, :c4697, :c4698, :c4699, :c4700, :c4701, :c4702, :c4703, :c4704, :c4705, :c4706, :c4707, :c4708, :c4709, :c4710, :c4711, :c4712, :c4713, :c4714, :c4715, :c4716, :c4717, :c4718, :c4719, :c4720, :c4721, :c4722, :c4723, :c4724, :c4725, :c4726, :c4727, :c4728, :c4729, :c4730, :c4731, :c4732, :c4733, :c4734, :c4735, :c4736, :c4737, :c4738, :c4739, :c4740, :c4741, :c4742, :c4743, :c4744, :c4745, :c4746, :c4747, :c4748, :c4749, :c4750, :c4751, :c4752, :c4753, :c4754, :c4755, :c4756, :c4757, :c4758, :c4759, :c4760, :c4761, :c4762, :c4763, :c4764, :c4765, :c4766, :c4767, :c4768, :c4769, :c4770, :c4771, :c4772, :c4773, :c4774, :c4775, :c4776, :c4777, :c4778, :c4779, :c4780, :c4781, :c4782, :c4783, :c4784, :c4785, :c4786, :c4787, :c4788, :c4789, :c4790, :c4791, :c4792, :c4793, :c4794, :c4795, :c4796, :c4797, :c4798, :c4799, :c4800, :c4801, :c4802, :c4803, :c4804, :c4805, :c4806, :c4807, :c4808, :c4809, :c4810, :c4811, :c4812, :c4813, :c4814, :c4815, :c4816, :c4817, :c4818, :c4819, :c4820, :c4821, :c4822, :c4823, :c4824, :c4825, :c4826, :c4827, :c4828, :c4829, :c4830, :c4831, :c4832, :c4833, :c4834, :c4835, :c4836, :c4837, :c4838, :c4839, :c4840, :c4841, :c4842, :c4843, :c4844, :c4845, :c4846, :c4847, :c4848, :c4849, :c4850, :c4851, :c4852, :c4853, :c4854, :c4855, :c4856, :c4857, :c4858, :c4859, :c4860, :c4861, :c4862, :c4863, :c4864, :c4865, :c4866, :c4867, :c4868, :c4869, :c4870, :c4871, :c4872, :c4873, :c4874, :c4875, :c4876, :c4877, :c4878, :c4879, :c4880, :c4881, :c4882, :c4883, :c4884, :c4885, :c4886, :c4887, :c4888, :c4889, :c4890, :c4891, :c4892, :c4893, :c4894, :c4895, :c4896, :c4897, :c4898, :c4899, :c4900, :c4901, :c4902, :c4903, :c4904, :c4905, :c4906, :c4907, :c4908, :c4909, :c4910, :c4911, :c4912, :c4913, :c4914, :c4915, :c4916, :c4917, :c4918, :c4919, :c4920, :c4921, :c4922, :c4923, :c4924, :c4925, :c4926, :c4927, :c4928, :c4929, :c4930, :c4931, :c4932, :c4933, :c4934, :c4935, :c4936, :c4937, :c4938, :c4939, :c4940, :c4941, :c4942, :c4943, :c4944, :c4945, :c4946, :c4947, :c4948, :c4949, :c4950, :c4951, :c4952, :c4953, :c4954, :c4955, :c4956, :c4957, :c4958, :c4959, :c4960, :c4961, :c4962, :c4963, :c4964, :c4965, :c4966, :c4967, :c4968, :c4969, :c4970, :c4971, :c4972, :c4973, :c4974, :c4975, :c4976, :c4977, :c4978, :c4979, :c4980, :c4981, :c4982, :c4983, :c4984, :c4985, :c4986, :c4987, :c4988, :c4989, :c4990, :c4991, :c4992, :c4993, :c4994, :c4995, :c4996, :c4997, :c4998, :c4999, :c5000, :c5001, :c5002, :c5003, :c5004, :c5005, :c5006, :c5007, :c5008, :c5009, :c5010, :c5011, :c5012, :c5013, :c5014, :c5015, :c5016, :c5017, :c5018, :c5019, :c5020, :c5021, :c5022, :c5023, :c5024, :c5025, :c5026, :c5027, :c5028, :c5029, :c5030, :c5031, :c5032, :c5033, :c5034, :c5035, :c5036, :c5037, :c5038, :c5039, :c5040, :c5041, :c5042, :c5043, :c5044, :c5045, :c5046, :c5047, :c5048, :c5049, :c5050, :c5051, :c5052, :c5053, :c5054, :c5055, :c5056, :c5057, :c5058, :c5059, :c5060, :c5061, :c5062, :c5063, :c5064, :c5065, :c5066, :c5067, :c5068, :c5069, :c5070, :c5071, :c5072, :c5073, :c5074, :c5075, :c5076, :c5077, :c5078, :c5079, :c5080, :c5081, :c5082, :c5083, :c5084, :c5085, :c5086, :c5087, :c5088, :c5089, :c5090, :c5091, :c5092, :c5093, :c5094, :c5095, :c5096, :c5097, :c5098, :c5099, :c5100, :c5101, :c5102, :c5103, :c5104, :c5105, :c5106, :c5107, :c5108, :c5109, :c5110, :c5111, :c5112, :c5113, :c5114, :c5115, :c5116, :c5117, :c5118, :c5119, :c5120, :c5121, :c5122, :c5123, :c5124, :c5125, :c5126, :c5127, :c5128, :c5129, :c5130, :c5131, :c5132, :c5133, :c5134, :c5135, :c5136, :c5137, :c5138, :c5139, :c5140, :c5141, :c5142, :c5143, :c5144, :c5145, :c5146, :c5147, :c5148, :c5149, :c5150, :c5151, :c5152, :c5153, :c5154, :c5155, :c5156, :c5157, :c5158, :c5159, :c5160, :c5161, :c5162, :c5163, :c5164, :c5165, :c5166, :c5167, :c5168, :c5169, :c5170, :c5171, :c5172, :c5173, :c5174, :c5175, :c5176, :c5177, :c5178, :c5179, :c5180, :c5181, :c5182, :c5183, :c5184, :c5185, :c5186, :c5187, :c5188, :c5189, :c5190, :c5191, :c5192, :c5193, :c5194, :c5195, :c5196, :c5197, :c5198, :c5199, :c5200, :c5201, :c5202, :c5203, :c5204, :c5205, :c5206, :c5207, :c5208, :c5209, :c5210, :c5211, :c5212, :c5213, :c5214, :c5215, :c5216, :c5217, :c5218, :c5219, :c5220, :c5221, :c5222, :c5223, :c5224, :c5225, :c5226, :c5227, :c5228, :c5229, :c5230, :c5231, :c5232, :c5233, :c5234, :c5235, :c5236, :c5237, :c5238, :c5239, :c5240, :c5241, :c5242, :c5243, :c5244, :c5245, :c5246, :c5247, :c5248, :c5249, :c5250, :c5251, :c5252, :c5253, :c5254, :c5255, :c5256, :c5257, :c5258, :c5259, :c5260, :c5261, :c5262, :c5263, :c5264, :c5265, :c5266, :c5267, :c5268, :c5269, :c5270, :c5271, :c5272, :c5273, :c5274, :c5275, :c5276, :c5277, :c5278, :c5279, :c5280, :c5281, :c5282, :c5283, :c5284, :c5285, :c5286, :c5287, :c5288, :c5289, :c5290, :c5291, :c5292, :c5293, :c5294, :c5295, :c5296, :c5297, :c5298, :c5299, :c5300, :c5301, :c5302, :c5303, :c5304, :c5305, :c5306, :c5307, :c5308, :c5309, :c5310, :c5311, :c5312, :c5313, :c5314, :c5315, :c5316, :c5317, :c5318, :c5319, :c5320, :c5321, :c5322, :c5323, :c5324, :c5325, :c5326, :c5327, :c5328, :c5329, :c5330, :c5331, :c5332, :c5333, :c5334, :c5335, :c5336, :c5337, :c5338, :c5339, :c5340, :c5341, :c5342, :c5343, :c5344, :c5345, :c5346, :c5347, :c5348, :c5349, :c5350, :c5351, :c5352, :c5353, :c5354, :c5355, :c5356, :c5357, :c5358, :c5359, :c5360, :c5361, :c5362, :c5363, :c5364, :c5365, :c5366, :c5367, :c5368, :c5369, :c5370, :c5371, :c5372, :c5373, :c5374, :c5375, :c5376, :c5377, :c5378, :c5379, :c5380, :c5381, :c5382, :c5383, :c5384, :c5385, :c5386, :c5387, :c5388, :c5389, :c5390, :c5391, :c5392, :c5393, :c5394, :c5395, :c5396, :c5397, :c5398, :c5399, :c5400, :c5401, :c5402, :c5403, :c5404, :c5405, :c5406, :c5407, :c5408, :c5409, :c5410, :c5411, :c5412, :c5413, :c5414, :c5415, :c5416, :c5417, :c5418, :c5419, :c5420, :c5421, :c5422, :c5423, :c5424, :c5425, :c5426, :c5427, :c5428, :c5429, :c5430, :c5431, :c5432, :c5433, :c5434, :c5435, :c5436, :c5437, :c5438, :c5439, :c5440, :c5441, :c5442, :c5443, :c5444, :c5445, :c5446, :c5447, :c5448, :c5449, :c5450, :c5451, :c5452, :c5453, :c5454, :c5455, :c5456, :c5457, :c5458, :c5459, :c5460, :c5461, :c5462, :c5463, :c5464, :c5465, :c5466, :c5467, :c5468, :c5469, :c5470, :c5471, :c5472, :c5473, :c5474, :c5475, :c5476, :c5477, :c5478, :c5479, :c5480, :c5481, :c5482, :c5483, :c5484, :c5485, :c5486, :c5487, :c5488, :c5489, :c5490, :c5491, :c5492, :c5493, :c5494, :c5495, :c5496, :c5497, :c5498, :c5499, :c5500, :c5501, :c5502, :c5503, :c5504, :c5505, :c5506, :c5507, :c5508, :c5509, :c5510, :c5511, :c5512, :c5513, :c5514, :c5515, :c5516, :c5517, :c5518, :c5519, :c5520, :c5521, :c5522, :c5523, :c5524, :c5525, :c5526, :c5527, :c5528, :c5529, :c5530, :c5531, :c5532, :c5533, :c5534, :c5535, :c5536, :c5537, :c5538, :c5539, :c5540, :c5541, :c5542, :c5543, :c5544, :c5545, :c5546, :c5547, :c5548, :c5549, :c5550, :c5551, :c5552, :c5553, :c5554, :c5555, :c5556, :c5557, :c5558, :c5559, :c5560, :c5561, :c5562, :c5563, :c5564, :c5565, :c5566, :c5567, :c5568, :c5569, :c5570, :c5571, :c5572, :c5573, :c5574, :c5575, :c5576, :c5577, :c5578, :c5579, :c5580, :c5581, :c5582, :c5583, :c5584, :c5585, :c5586, :c5587, :c5588, :c5589, :c5590, :c5591, :c5592, :c5593, :c5594, :c5595, :c5596, :c5597, :c5598, :c5599, :c5600, :c5601, :c5602, :c5603, :c5604, :c5605, :c5606, :c5607, :c5608, :c5609, :c5610, :c5611, :c5612, :c5613, :c5614, :c5615, :c5616, :c5617, :c5618, :c5619, :c5620, :c5621, :c5622, :c5623, :c5624, :c5625, :c5626, :c5627, :c5628, :c5629, :c5630, :c5631, :c5632, :c5633, :c5634, :c5635, :c5636, :c5637, :c5638, :c5639, :c5640, :c5641, :c5642, :c5643, :c5644, :c5645, :c5646, :c5647, :c5648, :c5649, :c5650, :c5651, :c5652, :c5653, :c5654, :c5655, :c5656, :c5657, :c5658, :c5659, :c5660, :c5661, :c5662, :c5663, :c5664, :c5665, :c5666, :c5667, :c5668, :c5669, :c5670, :c5671, :c5672, :c5673, :c5674, :c5675, :c5676, :c5677, :c5678, :c5679, :c5680, :c5681, :c5682, :c5683, :c5684, :c5685, :c5686, :c5687, :c5688, :c5689, :c5690, :c5691, :c5692, :c5693, :c5694, :c5695, :c5696, :c5697, :c5698, :c5699, :c5700, :c5701, :c5702, :c5703, :c5704, :c5705, :c5706, :c5707, :c5708, :c5709, :c5710, :c5711, :c5712, :c5713, :c5714, :c5715, :c5716, :c5717, :c5718, :c5719, :c5720, :c5721, :c5722, :c5723, :c5724, :c5725, :c5726, :c5727, :c5728, :c5729, :c5730, :c5731, :c5732, :c5733, :c5734, :c5735, :c5736, :c5737, :c5738, :c5739, :c5740, :c5741, :c5742, :c5743, :c5744, :c5745, :c5746, :c5747, :c5748, :c5749, :c5750, :c5751, :c5752, :c5753, :c5754, :c5755, :c5756, :c5757, :c5758, :c5759, :c5760, :c5761, :c5762, :c5763, :c5764, :c5765, :c5766, :c5767, :c5768, :c5769, :c5770, :c5771, :c5772, :c5773, :c5774, :c5775, :c5776, :c5777, :c5778, :c5779, :c5780, :c5781, :c5782, :c5783, :c5784, :c5785, :c5786, :c5787, :c5788, :c5789, :c5790, :c5791, :c5792, :c5793, :c5794, :c5795, :c5796, :c5797, :c5798, :c5799, :c5800, :c5801, :c5802, :c5803, :c5804, :c5805, :c5806, :c5807, :c5808, :c5809, :c5810, :c5811, :c5812, :c5813, :c5814, :c5815, :c5816, :c5817, :c5818, :c5819, :c5820, :c5821, :c5822, :c5823, :c5824, :c5825, :c5826, :c5827, :c5828, :c5829, :c5830, :c5831, :c5832, :c5833, :c5834, :c5835, :c5836, :c5837, :c5838, :c5839, :c5840, :c5841, :c5842, :c5843, :c5844, :c5845, :c5846, :c5847, :c5848, :c5849, :c5850, :c5851, :c5852, :c5853, :c5854, :c5855, :c5856, :c5857, :c5858, :c5859, :c5860, :c5861, :c5862, :c5863, :c5864, :c5865, :c5866, :c5867, :c5868, :c5869, :c5870, :c5871, :c5872, :c5873, :c5874, :c5875, :c5876, :c5877, :c5878, :c5879, :c5880, :c5881, :c5882, :c5883, :c5884, :c5885, :c5886, :c5887, :c5888, :c5889, :c5890, :c5891, :c5892, :c5893, :c5894, :c5895, :c5896, :c5897, :c5898, :c5899, :c5900, :c5901, :c5902, :c5903, :c5904, :c5905, :c5906, :c5907, :c5908, :c5909, :c5910, :c5911, :c5912, :c5913, :c5914, :c5915, :c5916, :c5917, :c5918, :c5919, :c5920, :c5921, :c5922, :c5923, :c5924, :c5925, :c5926, :c5927, :c5928, :c5929, :c5930, :c5931, :c5932, :c5933, :c5934, :c5935, :c5936, :c5937, :c5938, :c5939, :c5940, :c5941, :c5942, :c5943, :c5944, :c5945, :c5946, :c5947, :c5948, :c5949, :c5950, :c5951, :c5952, :c5953, :c5954, :c5955, :c5956, :c5957, :c5958, :c5959, :c5960, :c5961, :c5962, :c5963, :c5964, :c5965, :c5966, :c5967, :c5968, :c5969, :c5970, :c5971, :c5972, :c5973, :c5974, :c5975, :c5976, :c5977, :c5978, :c5979, :c5980, :c5981, :c5982, :c5983, :c5984, :c5985, :c5986, :c5987, :c5988, :c5989, :c5990, :c5991, :c5992, :c5993, :c5994, :c5995, :c5996, :c5997, :c5998, :c5999, :c6000, :c6001, :c6002, :c6003, :c6004, :c6005, :c6006, :c6007, :c6008, :c6009, :c6010, :c6011, :c6012, :c6013, :c6014, :c6015, :c6016, :c6017, :c6018, :c6019, :c6020, :c6021, :c6022, :c6023, :c6024, :c6025, :c6026, :c6027, :c6028, :c6029, :c6030, :c6031, :c6032, :c6033, :c6034, :c6035, :c6036, :c6037, :c6038, :c6039, :c6040, :c6041, :c6042, :c6043, :c6044, :c6045, :c6046, :c6047, :c6048, :c6049, :c6050, :c6051, :c6052, :c6053, :c6054, :c6055, :c6056, :c6057, :c6058, :c6059, :c6060, :c6061, :c6062, :c6063, :c6064, :c6065, :c6066, :c6067, :c6068, :c6069, :c6070, :c6071, :c6072, :c6073, :c6074, :c6075, :c6076, :c6077, :c6078, :c6079, :c6080, :c6081, :c6082, :c6083, :c6084, :c6085, :c6086, :c6087, :c6088, :c6089, :c6090, :c6091, :c6092, :c6093, :c6094, :c6095, :c6096, :c6097, :c6098, :c6099, :c6100, :c6101, :c6102, :c6103, :c6104, :c6105, :c6106, :c6107, :c6108, :c6109, :c6110, :c6111, :c6112, :c6113, :c6114, :c6115, :c6116, :c6117, :c6118, :c6119, :c6120, :c6121, :c6122, :c6123, :c6124, :c6125, :c6126, :c6127, :c6128, :c6129, :c6130, :c6131, :c6132, :c6133, :c6134, :c6135, :c6136, :c6137, :c6138, :c6139, :c6140, :c6141, :c6142, :c6143, :c6144, :c6145, :c6146, :c6147, :c6148, :c6149, :c6150, :c6151, :c6152, :c6153, :c6154, :c6155, :c6156, :c6157, :c6158, :c6159, :c6160, :c6161, :c6162, :c6163, :c6164, :c6165, :c6166, :c6167, :c6168, :c6169, :c6170, :c6171, :c6172, :c6173, :c6174, :c6175, :c6176, :c6177, :c6178, :c6179, :c6180, :c6181, :c6182, :c6183, :c6184, :c6185, :c6186, :c6187, :c6188, :c6189, :c6190, :c6191, :c6192, :c6193, :c6194, :c6195, :c6196, :c6197, :c6198, :c6199, :c6200, :c6201, :c6202, :c6203, :c6204, :c6205, :c6206, :c6207, :c6208, :c6209, :c6210, :c6211, :c6212, :c6213, :c6214, :c6215, :c6216, :c6217, :c6218, :c6219, :c6220, :c6221, :c6222, :c6223, :c6224, :c6225, :c6226, :c6227, :c6228, :c6229, :c6230, :c6231, :c6232, :c6233, :c6234, :c6235, :c6236, :c6237, :c6238, :c6239, :c6240, :c6241, :c6242, :c6243, :c6244, :c6245, :c6246, :c6247, :c6248, :c6249, :c6250, :c6251, :c6252, :c6253, :c6254, :c6255, :c6256, :c6257, :c6258, :c6259, :c6260, :c6261, :c6262, :c6263, :c6264, :c6265, :c6266, :c6267, :c6268, :c6269, :c6270, :c6271, :c6272, :c6273, :c6274, :c6275, :c6276, :c6277, :c6278, :c6279, :c6280, :c6281, :c6282, :c6283, :c6284, :c6285, :c6286, :c6287, :c6288, :c6289, :c6290, :c6291, :c6292, :c6293, :c6294, :c6295, :c6296, :c6297, :c6298, :c6299, :c6300, :c6301, :c6302, :c6303, :c6304, :c6305, :c6306, :c6307, :c6308, :c6309, :c6310, :c6311, :c6312, :c6313, :c6314, :c6315, :c6316, :c6317, :c6318, :c6319, :c6320, :c6321, :c6322, :c6323, :c6324, :c6325, :c6326, :c6327, :c6328, :c6329, :c6330, :c6331, :c6332, :c6333, :c6334, :c6335, :c6336, :c6337, :c6338, :c6339, :c6340, :c6341, :c6342, :c6343, :c6344, :c6345, :c6346, :c6347, :c6348, :c6349, :c6350, :c6351, :c6352, :c6353, :c6354, :c6355, :c6356, :c6357, :c6358, :c6359, :c6360, :c6361, :c6362, :c6363, :c6364, :c6365, :c6366, :c6367, :c6368, :c6369, :c6370, :c6371, :c6372, :c6373, :c6374, :c6375, :c6376, :c6377, :c6378, :c6379, :c6380, :c6381, :c6382, :c6383, :c6384, :c6385, :c6386, :c6387, :c6388, :c6389, :c6390, :c6391, :c6392, :c6393, :c6394, :c6395, :c6396, :c6397, :c6398, :c6399, :c6400, :c6401, :c6402, :c6403, :c6404, :c6405, :c6406, :c6407, :c6408, :c6409, :c6410, :c6411, :c6412, :c6413, :c6414, :c6415, :c6416, :c6417, :c6418, :c6419, :c6420, :c6421, :c6422, :c6423, :c6424, :c6425, :c6426, :c6427, :c6428, :c6429, :c6430, :c6431, :c6432, :c6433, :c6434, :c6435, :c6436, :c6437, :c6438, :c6439, :c6440, :c6441, :c6442, :c6443, :c6444, :c6445, :c6446, :c6447, :c6448, :c6449, :c6450, :c6451, :c6452, :c6453, :c6454, :c6455, :c6456, :c6457, :c6458, :c6459, :c6460, :c6461, :c6462, :c6463, :c6464, :c6465, :c6466, :c6467, :c6468, :c6469, :c6470, :c6471, :c6472, :c6473, :c6474, :c6475, :c6476, :c6477, :c6478, :c6479, :c6480, :c6481, :c6482, :c6483, :c6484, :c6485, :c6486, :c6487, :c6488, :c6489, :c6490, :c6491, :c6492, :c6493, :c6494, :c6495, :c6496, :c6497, :c6498, :c6499, :c6500, :c6501, :c6502, :c6503, :c6504, :c6505, :c6506, :c6507, :c6508, :c6509, :c6510, :c6511, :c6512, :c6513, :c6514, :c6515, :c6516, :c6517, :c6518, :c6519, :c6520, :c6521, :c6522, :c6523, :c6524, :c6525, :c6526, :c6527, :c6528, :c6529, :c6530, :c6531, :c6532, :c6533, :c6534, :c6535, :c6536, :c6537, :c6538, :c6539, :c6540, :c6541, :c6542, :c6543, :c6544, :c6545, :c6546, :c6547, :c6548, :c6549, :c6550, :c6551, :c6552, :c6553, :c6554, :c6555, :c6556, :c6557, :c6558, :c6559, :c6560, :c6561, :c6562, :c6563, :c6564, :c6565, :c6566, :c6567, :c6568, :c6569, :c6570, :c6571, :c6572, :c6573, :c6574, :c6575, :c6576, :c6577, :c6578, :c6579, :c6580, :c6581, :c6582, :c6583, :c6584, :c6585, :c6586, :c6587, :c6588, :c6589, :c6590, :c6591, :c6592, :c6593, :c6594, :c6595, :c6596, :c6597, :c6598, :c6599, :c6600, :c6601, :c6602, :c6603, :c6604, :c6605, :c6606, :c6607, :c6608, :c6609, :c6610, :c6611, :c6612, :c6613, :c6614, :c6615, :c6616, :c6617, :c6618, :c6619, :c6620, :c6621, :c6622, :c6623, :c6624, :c6625, :c6626, :c6627, :c6628, :c6629, :c6630, :c6631, :c6632, :c6633, :c6634, :c6635, :c6636, :c6637, :c6638, :c6639, :c6640, :c6641, :c6642, :c6643, :c6644, :c6645, :c6646, :c6647, :c6648, :c6649, :c6650, :c6651, :c6652, :c6653, :c6654, :c6655, :c6656, :c6657, :c6658, :c6659, :c6660, :c6661, :c6662, :c6663, :c6664, :c6665, :c6666, :c6667, :c6668, :c6669, :c6670, :c6671, :c6672, :c6673, :c6674, :c6675, :c6676, :c6677, :c6678, :c6679, :c6680, :c6681, :c6682, :c6683, :c6684, :c6685, :c6686, :c6687, :c6688, :c6689, :c6690, :c6691, :c6692, :c6693, :c6694, :c6695, :c6696, :c6697, :c6698, :c6699, :c6700, :c6701, :c6702, :c6703, :c6704, :c6705, :c6706, :c6707, :c6708, :c6709, :c6710, :c6711, :c6712, :c6713, :c6714, :c6715, :c6716, :c6717, :c6718, :c6719, :c6720, :c6721, :c6722, :c6723, :c6724, :c6725, :c6726, :c6727, :c6728, :c6729, :c6730, :c6731, :c6732, :c6733, :c6734, :c6735, :c6736, :c6737, :c6738, :c6739, :c6740, :c6741, :c6742, :c6743, :c6744, :c6745, :c6746, :c6747, :c6748, :c6749, :c6750, :c6751, :c6752, :c6753, :c6754, :c6755, :c6756, :c6757, :c6758, :c6759, :c6760, :c6761, :c6762, :c6763, :c6764, :c6765, :c6766, :c6767, :c6768, :c6769, :c6770, :c6771, :c6772, :c6773, :c6774, :c6775, :c6776, :c6777, :c6778, :c6779, :c6780, :c6781, :c6782, :c6783, :c6784, :c6785, :c6786, :c6787, :c6788, :c6789, :c6790, :c6791, :c6792, :c6793, :c6794, :c6795, :c6796, :c6797, :c6798, :c6799, :c6800, :c6801, :c6802, :c6803, :c6804, :c6805, :c6806, :c6807, :c6808, :c6809, :c6810, :c6811, :c6812, :c6813, :c6814, :c6815, :c6816, :c6817, :c6818, :c6819, :c6820, :c6821, :c6822, :c6823, :c6824, :c6825, :c6826, :c6827, :c6828, :c6829, :c6830, :c6831, :c6832, :c6833, :c6834, :c6835, :c6836, :c6837, :c6838, :c6839, :c6840, :c6841, :c6842, :c6843, :c6844, :c6845, :c6846, :c6847, :c6848, :c6849, :c6850, :c6851, :c6852, :c6853, :c6854, :c6855, :c6856, :c6857, :c6858, :c6859, :c6860, :c6861, :c6862, :c6863, :c6864, :c6865, :c6866, :c6867, :c6868, :c6869, :c6870, :c6871, :c6872, :c6873, :c6874, :c6875, :c6876, :c6877, :c6878, :c6879, :c6880, :c6881, :c6882, :c6883, :c6884, :c6885, :c6886, :c6887, :c6888, :c6889, :c6890, :c6891, :c6892, :c6893, :c6894, :c6895, :c6896, :c6897, :c6898, :c6899, :c6900, :c6901, :c6902, :c6903, :c6904, :c6905, :c6906, :c6907, :c6908, :c6909, :c6910, :c6911, :c6912, :c6913, :c6914, :c6915, :c6916, :c6917, :c6918, :c6919, :c6920, :c6921, :c6922, :c6923, :c6924, :c6925, :c6926, :c6927, :c6928, :c6929, :c6930, :c6931, :c6932, :c6933, :c6934, :c6935, :c6936, :c6937, :c6938, :c6939, :c6940, :c6941, :c6942, :c6943, :c6944, :c6945, :c6946, :c6947, :c6948, :c6949, :c6950, :c6951, :c6952, :c6953, :c6954, :c6955, :c6956, :c6957, :c6958, :c6959, :c6960, :c6961, :c6962, :c6963, :c6964, :c6965, :c6966, :c6967, :c6968, :c6969, :c6970, :c6971, :c6972, :c6973, :c6974, :c6975, :c6976, :c6977, :c6978, :c6979, :c6980, :c6981, :c6982, :c6983, :c6984, :c6985, :c6986, :c6987, :c6988, :c6989, :c6990, :c6991, :c6992, :c6993, :c6994, :c6995, :c6996, :c6997, :c6998, :c6999, :c7000, :c7001, :c7002, :c7003, :c7004, :c7005, :c7006, :c7007, :c7008, :c7009, :c7010, :c7011, :c7012, :c7013, :c7014, :c7015, :c7016, :c7017, :c7018, :c7019, :c7020, :c7021, :c7022, :c7023, :c7024, :c7025, :c7026, :c7027, :c7028, :c7029, :c7030, :c7031, :c7032, :c7033, :c7034, :c7035, :c7036, :c7037, :c7038, :c7039, :c7040, :c7041, :c7042, :c7043, :c7044, :c7045, :c7046, :c7047, :c7048, :c7049, :c7050, :c7051, :c7052, :c7053, :c7054, :c7055, :c7056, :c7057, :c7058, :c7059, :c7060, :c7061, :c7062, :c7063, :c7064, :c7065, :c7066, :c7067, :c7068, :c7069, :c7070, :c7071, :c7072, :c7073, :c7074, :c7075, :c7076, :c7077, :c7078, :c7079, :c7080, :c7081, :c7082, :c7083, :c7084, :c7085, :c7086, :c7087, :c7088, :c7089, :c7090, :c7091, :c7092, :c7093, :c7094, :c7095, :c7096, :c7097, :c7098, :c7099, :c7100, :c7101, :c7102, :c7103, :c7104, :c7105, :c7106, :c7107, :c7108, :c7109, :c7110, :c7111, :c7112, :c7113, :c7114, :c7115, :c7116, :c7117, :c7118, :c7119, :c7120, :c7121, :c7122, :c7123, :c7124, :c7125, :c7126, :c7127, :c7128, :c7129, :c7130, :c7131, :c7132, :c7133, :c7134, :c7135, :c7136, :c7137, :c7138, :c7139, :c7140, :c7141, :c7142, :c7143, :c7144, :c7145, :c7146, :c7147, :c7148, :c7149, :c7150, :c7151, :c7152, :c7153, :c7154, :c7155, :c7156, :c7157, :c7158, :c7159, :c7160, :c7161, :c7162, :c7163, :c7164, :c7165, :c7166, :c7167, :c7168, :c7169, :c7170, :c7171, :c7172, :c7173, :c7174, :c7175, :c7176, :c7177, :c7178, :c7179, :c7180, :c7181, :c7182, :c7183, :c7184, :c7185, :c7186, :c7187, :c7188, :c7189, :c7190, :c7191, :c7192, :c7193, :c7194, :c7195, :c7196, :c7197, :c7198, :c7199, :c7200, :c7201, :c7202, :c7203, :c7204, :c7205, :c7206, :c7207, :c7208, :c7209, :c7210, :c7211, :c7212, :c7213, :c7214, :c7215, :c7216, :c7217, :c7218, :c7219, :c7220, :c7221, :c7222, :c7223, :c7224, :c7225, :c7226, :c7227, :c7228, :c7229, :c7230, :c7231, :c7232, :c7233, :c7234, :c7235, :c7236, :c7237, :c7238, :c7239, :c7240, :c7241, :c7242, :c7243, :c7244, :c7245, :c7246, :c7247, :c7248, :c7249, :c7250, :c7251, :c7252, :c7253, :c7254, :c7255, :c7256, :c7257, :c7258, :c7259, :c7260, :c7261, :c7262, :c7263, :c7264, :c7265, :c7266, :c7267, :c7268, :c7269, :c7270, :c7271, :c7272, :c7273, :c7274, :c7275, :c7276, :c7277, :c7278, :c7279, :c7280, :c7281, :c7282, :c7283, :c7284, :c7285, :c7286, :c7287, :c7288, :c7289, :c7290, :c7291, :c7292, :c7293, :c7294, :c7295, :c7296, :c7297, :c7298, :c7299, :c7300, :c7301, :c7302, :c7303, :c7304, :c7305, :c7306, :c7307, :c7308, :c7309, :c7310, :c7311, :c7312, :c7313, :c7314, :c7315, :c7316, :c7317, :c7318, :c7319, :c7320, :c7321, :c7322, :c7323, :c7324, :c7325, :c7326, :c7327, :c7328, :c7329, :c7330, :c7331, :c7332, :c7333, :c7334, :c7335, :c7336, :c7337, :c7338, :c7339, :c7340, :c7341, :c7342, :c7343, :c7344, :c7345, :c7346, :c7347, :c7348, :c7349, :c7350, :c7351, :c7352, :c7353, :c7354, :c7355, :c7356, :c7357, :c7358, :c7359, :c7360, :c7361, :c7362, :c7363, :c7364, :c7365, :c7366, :c7367, :c7368, :c7369, :c7370, :c7371, :c7372, :c7373, :c7374, :c7375, :c7376, :c7377, :c7378, :c7379, :c7380, :c7381, :c7382, :c7383, :c7384, :c7385, :c7386, :c7387, :c7388, :c7389, :c7390, :c7391, :c7392, :c7393, :c7394, :c7395, :c7396, :c7397, :c7398, :c7399, :c7400, :c7401, :c7402, :c7403, :c7404, :c7405, :c7406, :c7407, :c7408, :c7409, :c7410, :c7411, :c7412, :c7413, :c7414, :c7415, :c7416, :c7417, :c7418, :c7419, :c7420, :c7421, :c7422, :c7423, :c7424, :c7425, :c7426, :c7427, :c7428, :c7429, :c7430, :c7431, :c7432, :c7433, :c7434, :c7435, :c7436, :c7437, :c7438, :c7439, :c7440, :c7441, :c7442, :c7443, :c7444, :c7445, :c7446, :c7447, :c7448, :c7449, :c7450, :c7451, :c7452, :c7453, :c7454, :c7455, :c7456, :c7457, :c7458, :c7459, :c7460, :c7461, :c7462, :c7463, :c7464, :c7465, :c7466, :c7467, :c7468, :c7469, :c7470, :c7471, :c7472, :c7473, :c7474, :c7475, :c7476, :c7477, :c7478, :c7479, :c7480, :c7481, :c7482, :c7483, :c7484, :c7485, :c7486, :c7487, :c7488, :c7489, :c7490, :c7491, :c7492, :c7493, :c7494, :c7495, :c7496, :c7497, :c7498, :c7499, :c7500, :c7501, :c7502, :c7503, :c7504, :c7505, :c7506, :c7507, :c7508, :c7509, :c7510, :c7511, :c7512, :c7513, :c7514, :c7515, :c7516, :c7517, :c7518, :c7519, :c7520, :c7521, :c7522, :c7523, :c7524, :c7525, :c7526, :c7527, :c7528, :c7529, :c7530, :c7531, :c7532, :c7533, :c7534, :c7535, :c7536, :c7537, :c7538, :c7539, :c7540, :c7541, :c7542, :c7543, :c7544, :c7545, :c7546, :c7547, :c7548, :c7549, :c7550, :c7551, :c7552, :c7553, :c7554, :c7555, :c7556, :c7557, :c7558, :c7559, :c7560, :c7561, :c7562, :c7563, :c7564, :c7565, :c7566, :c7567, :c7568, :c7569, :c7570, :c7571, :c7572, :c7573, :c7574, :c7575, :c7576, :c7577, :c7578, :c7579, :c7580, :c7581, :c7582, :c7583, :c7584, :c7585, :c7586, :c7587, :c7588, :c7589, :c7590, :c7591, :c7592, :c7593, :c7594, :c7595, :c7596, :c7597, :c7598, :c7599, :c7600, :c7601, :c7602, :c7603, :c7604, :c7605, :c7606, :c7607, :c7608, :c7609, :c7610, :c7611, :c7612, :c7613, :c7614, :c7615, :c7616, :c7617, :c7618, :c7619, :c7620, :c7621, :c7622, :c7623, :c7624, :c7625, :c7626, :c7627, :c7628, :c7629, :c7630, :c7631, :c7632, :c7633, :c7634, :c7635, :c7636, :c7637, :c7638, :c7639, :c7640, :c7641, :c7642, :c7643, :c7644, :c7645, :c7646, :c7647, :c7648, :c7649, :c7650, :c7651, :c7652, :c7653, :c7654, :c7655, :c7656, :c7657, :c7658, :c7659, :c7660, :c7661, :c7662, :c7663, :c7664, :c7665, :c7666, :c7667, :c7668, :c7669, :c7670, :c7671, :c7672, :c7673, :c7674, :c7675, :c7676, :c7677, :c7678, :c7679, :c7680, :c7681, :c7682, :c7683, :c7684, :c7685, :c7686, :c7687, :c7688, :c7689, :c7690, :c7691, :c7692, :c7693, :c7694, :c7695, :c7696, :c7697, :c7698, :c7699, :c7700, :c7701, :c7702, :c7703, :c7704, :c7705, :c7706, :c7707, :c7708, :c7709, :c7710, :c7711, :c7712, :c7713, :c7714, :c7715, :c7716, :c7717, :c7718, :c7719, :c7720, :c7721, :c7722, :c7723, :c7724, :c7725, :c7726, :c7727, :c7728, :c7729, :c7730, :c7731, :c7732, :c7733, :c7734, :c7735, :c7736, :c7737, :c7738, :c7739, :c7740, :c7741, :c7742, :c7743, :c7744, :c7745, :c7746, :c7747, :c7748, :c7749, :c7750, :c7751, :c7752, :c7753, :c7754, :c7755, :c7756, :c7757, :c7758, :c7759, :c7760, :c7761, :c7762, :c7763, :c7764, :c7765, :c7766, :c7767, :c7768, :c7769, :c7770, :c7771, :c7772, :c7773, :c7774, :c7775, :c7776, :c7777, :c7778, :c7779, :c7780, :c7781, :c7782, :c7783, :c7784, :c7785, :c7786, :c7787, :c7788, :c7789, :c7790, :c7791, :c7792, :c7793, :c7794, :c7795, :c7796, :c7797, :c7798, :c7799, :c7800, :c7801, :c7802, :c7803, :c7804, :c7805, :c7806, :c7807, :c7808, :c7809, :c7810, :c7811, :c7812, :c7813, :c7814, :c7815, :c7816, :c7817, :c7818, :c7819, :c7820, :c7821, :c7822, :c7823, :c7824, :c7825, :c7826, :c7827, :c7828, :c7829, :c7830, :c7831, :c7832, :c7833, :c7834, :c7835, :c7836, :c7837, :c7838, :c7839, :c7840, :c7841, :c7842, :c7843, :c7844, :c7845, :c7846, :c7847, :c7848, :c7849, :c7850, :c7851, :c7852, :c7853, :c7854, :c7855, :c7856, :c7857, :c7858, :c7859, :c7860, :c7861, :c7862, :c7863, :c7864, :c7865, :c7866, :c7867, :c7868, :c7869, :c7870, :c7871, :c7872, :c7873, :c7874, :c7875, :c7876, :c7877, :c7878, :c7879, :c7880, :c7881, :c7882, :c7883, :c7884, :c7885, :c7886, :c7887, :c7888, :c7889, :c7890, :c7891, :c7892, :c7893, :c7894, :c7895, :c7896, :c7897, :c7898, :c7899, :c7900, :c7901, :c7902, :c7903, :c7904, :c7905, :c7906, :c7907, :c7908, :c7909, :c7910, :c7911, :c7912, :c7913, :c7914, :c7915, :c7916, :c7917, :c7918, :c7919, :c7920, :c7921, :c7922, :c7923, :c7924, :c7925, :c7926, :c7927, :c7928, :c7929, :c7930, :c7931, :c7932, :c7933, :c7934, :c7935, :c7936, :c7937, :c7938, :c7939, :c7940, :c7941, :c7942, :c7943, :c7944, :c7945, :c7946, :c7947, :c7948, :c7949, :c7950, :c7951, :c7952, :c7953, :c7954, :c7955, :c7956, :c7957, :c7958, :c7959, :c7960, :c7961, :c7962, :c7963, :c7964, :c7965, :c7966, :c7967, :c7968, :c7969, :c7970, :c7971, :c7972, :c7973, :c7974, :c7975, :c7976, :c7977, :c7978, :c7979, :c7980, :c7981, :c7982, :c7983, :c7984, :c7985, :c7986, :c7987, :c7988, :c7989, :c7990, :c7991, :c7992, :c7993, :c7994, :c7995, :c7996, :c7997, :c7998, :c7999, :c8000, :c8001, :c8002, :c8003, :c8004, :c8005, :c8006, :c8007, :c8008, :c8009, :c8010, :c8011, :c8012, :c8013, :c8014, :c8015, :c8016, :c8017, :c8018, :c8019, :c8020, :c8021, :c8022, :c8023, :c8024, :c8025, :c8026, :c8027, :c8028, :c8029, :c8030, :c8031, :c8032, :c8033, :c8034, :c8035, :c8036, :c8037, :c8038, :c8039, :c8040, :c8041, :c8042, :c8043, :c8044, :c8045, :c8046, :c8047, :c8048, :c8049, :c8050, :c8051, :c8052, :c8053, :c8054, :c8055, :c8056, :c8057, :c8058, :c8059, :c8060, :c8061, :c8062, :c8063, :c8064, :c8065, :c8066, :c8067, :c8068, :c8069, :c8070, :c8071, :c8072, :c8073, :c8074, :c8075, :c8076, :c8077, :c8078, :c8079, :c8080, :c8081, :c8082, :c8083, :c8084, :c8085, :c8086, :c8087, :c8088, :c8089, :c8090, :c8091, :c8092, :c8093, :c8094, :c8095, :c8096, :c8097, :c8098, :c8099, :c8100, :c8101, :c8102, :c8103, :c8104, :c8105, :c8106, :c8107, :c8108, :c8109, :c8110, :c8111, :c8112, :c8113, :c8114, :c8115, :c8116, :c8117, :c8118, :c8119, :c8120, :c8121, :c8122, :c8123, :c8124, :c8125, :c8126, :c8127, :c8128, :c8129, :c8130, :c8131, :c8132, :c8133, :c8134, :c8135, :c8136, :c8137, :c8138, :c8139, :c8140, :c8141, :c8142, :c8143, :c8144, :c8145, :c8146, :c8147, :c8148, :c8149, :c8150, :c8151, :c8152, :c8153, :c8154, :c8155, :c8156, :c8157, :c8158, :c8159, :c8160, :c8161, :c8162, :c8163, :c8164, :c8165, :c8166, :c8167, :c8168, :c8169, :c8170, :c8171, :c8172, :c8173, :c8174, :c8175, :c8176, :c8177, :c8178, :c8179, :c8180, :c8181, :c8182, :c8183, :c8184, :c8185, :c8186, :c8187, :c8188, :c8189, :c8190, :c8191, :c8192, :c8193, :c8194, :c8195, :c8196, :c8197, :c8198, :c8199, :c8200, :c8201, :c8202, :c8203, :c8204, :c8205, :c8206, :c8207, :c8208, :c8209, :c8210, :c8211, :c8212, :c8213, :c8214, :c8215, :c8216, :c8217, :c8218, :c8219, :c8220, :c8221, :c8222, :c8223, :c8224, :c8225, :c8226, :c8227, :c8228, :c8229, :c8230, :c8231, :c8232, :c8233, :c8234, :c8235, :c8236, :c8237, :c8238, :c8239, :c8240, :c8241, :c8242, :c8243, :c8244, :c8245, :c8246, :c8247, :c8248, :c8249, :c8250, :c8251, :c8252, :c8253, :c8254, :c8255, :c8256, :c8257, :c8258, :c8259, :c8260, :c8261, :c8262, :c8263, :c8264, :c8265, :c8266, :c8267, :c8268, :c8269, :c8270, :c8271, :c8272, :c8273, :c8274, :c8275, :c8276, :c8277, :c8278, :c8279, :c8280, :c8281, :c8282, :c8283, :c8284, :c8285, :c8286, :c8287, :c8288, :c8289, :c8290, :c8291, :c8292, :c8293, :c8294, :c8295, :c8296, :c8297, :c8298, :c8299, :c8300, :c8301, :c8302, :c8303, :c8304, :c8305, :c8306, :c8307, :c8308, :c8309, :c8310, :c8311, :c8312, :c8313, :c8314, :c8315, :c8316, :c8317, :c8318, :c8319, :c8320, :c8321, :c8322, :c8323, :c8324, :c8325, :c8326, :c8327, :c8328, :c8329, :c8330, :c8331, :c8332, :c8333, :c8334, :c8335, :c8336, :c8337, :c8338, :c8339, :c8340, :c8341, :c8342, :c8343, :c8344, :c8345, :c8346, :c8347, :c8348, :c8349, :c8350, :c8351, :c8352, :c8353, :c8354, :c8355, :c8356, :c8357, :c8358, :c8359, :c8360, :c8361, :c8362, :c8363, :c8364, :c8365, :c8366, :c8367, :c8368, :c8369, :c8370, :c8371, :c8372, :c8373, :c8374, :c8375, :c8376, :c8377, :c8378, :c8379, :c8380, :c8381, :c8382, :c8383, :c8384, :c8385, :c8386, :c8387, :c8388, :c8389, :c8390, :c8391, :c8392, :c8393, :c8394, :c8395, :c8396, :c8397, :c8398, :c8399, :c8400, :c8401, :c8402, :c8403, :c8404, :c8405, :c8406, :c8407, :c8408, :c8409, :c8410, :c8411, :c8412, :c8413, :c8414, :c8415, :c8416, :c8417, :c8418, :c8419, :c8420, :c8421, :c8422, :c8423, :c8424, :c8425, :c8426, :c8427, :c8428, :c8429, :c8430, :c8431, :c8432, :c8433, :c8434, :c8435, :c8436, :c8437, :c8438, :c8439, :c8440, :c8441, :c8442, :c8443, :c8444, :c8445, :c8446, :c8447, :c8448, :c8449, :c8450, :c8451, :c8452, :c8453, :c8454, :c8455, :c8456, :c8457, :c8458, :c8459, :c8460, :c8461, :c8462, :c8463, :c8464, :c8465, :c8466, :c8467, :c8468, :c8469, :c8470, :c8471, :c8472, :c8473, :c8474, :c8475, :c8476, :c8477, :c8478, :c8479, :c8480, :c8481, :c8482, :c8483, :c8484, :c8485, :c8486, :c8487, :c8488, :c8489, :c8490, :c8491, :c8492, :c8493, :c8494, :c8495, :c8496, :c8497, :c8498, :c8499, :c8500, :c8501, :c8502, :c8503, :c8504, :c8505, :c8506, :c8507, :c8508, :c8509, :c8510, :c8511, :c8512, :c8513, :c8514, :c8515, :c8516, :c8517, :c8518, :c8519, :c8520, :c8521, :c8522, :c8523, :c8524, :c8525, :c8526, :c8527, :c8528, :c8529, :c8530, :c8531, :c8532, :c8533, :c8534, :c8535, :c8536, :c8537, :c8538, :c8539, :c8540, :c8541, :c8542, :c8543, :c8544, :c8545, :c8546, :c8547, :c8548, :c8549, :c8550, :c8551, :c8552, :c8553, :c8554, :c8555, :c8556, :c8557, :c8558, :c8559, :c8560, :c8561, :c8562, :c8563, :c8564, :c8565, :c8566, :c8567, :c8568, :c8569, :c8570, :c8571, :c8572, :c8573, :c8574, :c8575, :c8576, :c8577, :c8578, :c8579, :c8580, :c8581, :c8582, :c8583, :c8584, :c8585, :c8586, :c8587, :c8588, :c8589, :c8590, :c8591, :c8592, :c8593, :c8594, :c8595, :c8596, :c8597, :c8598, :c8599, :c8600, :c8601, :c8602, :c8603, :c8604, :c8605, :c8606, :c8607, :c8608, :c8609, :c8610, :c8611, :c8612, :c8613, :c8614, :c8615, :c8616, :c8617, :c8618, :c8619, :c8620, :c8621, :c8622, :c8623, :c8624, :c8625, :c8626, :c8627, :c8628, :c8629, :c8630, :c8631, :c8632, :c8633, :c8634, :c8635, :c8636, :c8637, :c8638, :c8639, :c8640, :c8641, :c8642, :c8643, :c8644, :c8645, :c8646, :c8647, :c8648, :c8649, :c8650, :c8651, :c8652, :c8653, :c8654, :c8655, :c8656, :c8657, :c8658, :c8659, :c8660, :c8661, :c8662, :c8663, :c8664, :c8665, :c8666, :c8667, :c8668, :c8669, :c8670, :c8671, :c8672, :c8673, :c8674, :c8675, :c8676, :c8677, :c8678, :c8679, :c8680, :c8681, :c8682, :c8683, :c8684, :c8685, :c8686, :c8687, :c8688, :c8689, :c8690, :c8691, :c8692, :c8693, :c8694, :c8695, :c8696, :c8697, :c8698, :c8699, :c8700, :c8701, :c8702, :c8703, :c8704, :c8705, :c8706, :c8707, :c8708, :c8709, :c8710, :c8711, :c8712, :c8713, :c8714, :c8715, :c8716, :c8717, :c8718, :c8719, :c8720, :c8721, :c8722, :c8723, :c8724, :c8725, :c8726, :c8727, :c8728, :c8729, :c8730, :c8731, :c8732, :c8733, :c8734, :c8735, :c8736, :c8737, :c8738, :c8739, :c8740, :c8741, :c8742, :c8743, :c8744, :c8745, :c8746, :c8747, :c8748, :c8749, :c8750, :c8751, :c8752, :c8753, :c8754, :c8755, :c8756, :c8757, :c8758, :c8759, :c8760, :c8761, :c8762, :c8763, :c8764, :c8765, :c8766, :c8767, :c8768, :c8769, :c8770, :c8771, :c8772, :c8773, :c8774, :c8775, :c8776, :c8777, :c8778, :c8779, :c8780, :c8781, :c8782, :c8783, :c8784, :c8785, :c8786, :c8787, :c8788, :c8789, :c8790, :c8791, :c8792, :c8793, :c8794, :c8795, :c8796, :c8797, :c8798, :c8799, :c8800, :c8801, :c8802, :c8803, :c8804, :c8805, :c8806, :c8807, :c8808, :c8809, :c8810, :c8811, :c8812, :c8813, :c8814, :c8815, :c8816, :c8817, :c8818, :c8819, :c8820, :c8821, :c8822, :c8823, :c8824, :c8825, :c8826, :c8827, :c8828, :c8829, :c8830, :c8831, :c8832, :c8833, :c8834, :c8835, :c8836, :c8837, :c8838, :c8839, :c8840, :c8841, :c8842, :c8843, :c8844, :c8845, :c8846, :c8847, :c8848, :c8849, :c8850, :c8851, :c8852, :c8853, :c8854, :c8855, :c8856, :c8857, :c8858, :c8859, :c8860, :c8861, :c8862, :c8863, :c8864, :c8865, :c8866, :c8867, :c8868, :c8869, :c8870, :c8871, :c8872, :c8873, :c8874, :c8875, :c8876, :c8877, :c8878, :c8879, :c8880, :c8881, :c8882, :c8883, :c8884, :c8885, :c8886, :c8887, :c8888, :c8889, :c8890, :c8891, :c8892, :c8893, :c8894, :c8895, :c8896, :c8897, :c8898, :c8899, :c8900, :c8901, :c8902, :c8903, :c8904, :c8905, :c8906, :c8907, :c8908, :c8909, :c8910, :c8911, :c8912, :c8913, :c8914, :c8915, :c8916, :c8917, :c8918, :c8919, :c8920, :c8921, :c8922, :c8923, :c8924, :c8925, :c8926, :c8927, :c8928, :c8929, :c8930, :c8931, :c8932, :c8933, :c8934, :c8935, :c8936, :c8937, :c8938, :c8939, :c8940, :c8941, :c8942, :c8943, :c8944, :c8945, :c8946, :c8947, :c8948, :c8949, :c8950, :c8951, :c8952, :c8953, :c8954, :c8955, :c8956, :c8957, :c8958, :c8959, :c8960, :c8961, :c8962, :c8963, :c8964, :c8965, :c8966, :c8967, :c8968, :c8969, :c8970, :c8971, :c8972, :c8973, :c8974, :c8975, :c8976, :c8977, :c8978, :c8979, :c8980, :c8981, :c8982, :c8983, :c8984, :c8985, :c8986, :c8987, :c8988, :c8989, :c8990, :c8991, :c8992, :c8993, :c8994, :c8995, :c8996, :c8997, :c8998, :c8999, :c9000, :c9001, :c9002, :c9003, :c9004, :c9005, :c9006, :c9007, :c9008, :c9009, :c9010, :c9011, :c9012, :c9013, :c9014, :c9015, :c9016, :c9017, :c9018, :c9019, :c9020, :c9021, :c9022, :c9023, :c9024, :c9025, :c9026, :c9027, :c9028, :c9029, :c9030, :c9031, :c9032, :c9033, :c9034, :c9035, :c9036, :c9037, :c9038, :c9039, :c9040, :c9041, :c9042, :c9043, :c9044, :c9045, :c9046, :c9047, :c9048, :c9049, :c9050, :c9051, :c9052, :c9053, :c9054, :c9055, :c9056, :c9057, :c9058, :c9059, :c9060, :c9061, :c9062, :c9063, :c9064, :c9065, :c9066, :c9067, :c9068, :c9069, :c9070, :c9071, :c9072, :c9073, :c9074, :c9075, :c9076, :c9077, :c9078, :c9079, :c9080, :c9081, :c9082, :c9083, :c9084, :c9085, :c9086, :c9087, :c9088, :c9089, :c9090, :c9091, :c9092, :c9093, :c9094, :c9095, :c9096, :c9097, :c9098, :c9099, :c9100, :c9101, :c9102, :c9103, :c9104, :c9105, :c9106, :c9107, :c9108, :c9109, :c9110, :c9111, :c9112, :c9113, :c9114, :c9115, :c9116, :c9117, :c9118, :c9119, :c9120, :c9121, :c9122, :c9123, :c9124, :c9125, :c9126, :c9127, :c9128, :c9129, :c9130, :c9131, :c9132, :c9133, :c9134, :c9135, :c9136, :c9137, :c9138, :c9139, :c9140, :c9141, :c9142, :c9143, :c9144, :c9145, :c9146, :c9147, :c9148, :c9149, :c9150, :c9151, :c9152, :c9153, :c9154, :c9155, :c9156, :c9157, :c9158, :c9159, :c9160, :c9161, :c9162, :c9163, :c9164, :c9165, :c9166, :c9167, :c9168, :c9169, :c9170, :c9171, :c9172, :c9173, :c9174, :c9175, :c9176, :c9177, :c9178, :c9179, :c9180, :c9181, :c9182, :c9183, :c9184, :c9185, :c9186, :c9187, :c9188, :c9189, :c9190, :c9191, :c9192, :c9193, :c9194, :c9195, :c9196, :c9197, :c9198, :c9199, :c9200, :c9201, :c9202, :c9203, :c9204, :c9205, :c9206, :c9207, :c9208, :c9209, :c9210, :c9211, :c9212, :c9213, :c9214, :c9215, :c9216, :c9217, :c9218, :c9219, :c9220, :c9221, :c9222, :c9223, :c9224, :c9225, :c9226, :c9227, :c9228, :c9229, :c9230, :c9231, :c9232, :c9233, :c9234, :c9235, :c9236, :c9237, :c9238, :c9239, :c9240, :c9241, :c9242, :c9243, :c9244, :c9245, :c9246, :c9247, :c9248, :c9249, :c9250, :c9251, :c9252, :c9253, :c9254, :c9255, :c9256, :c9257, :c9258, :c9259, :c9260, :c9261, :c9262, :c9263, :c9264, :c9265, :c9266, :c9267, :c9268, :c9269, :c9270, :c9271, :c9272, :c9273, :c9274, :c9275, :c9276, :c9277, :c9278, :c9279, :c9280, :c9281, :c9282, :c9283, :c9284, :c9285, :c9286, :c9287, :c9288, :c9289, :c9290, :c9291, :c9292, :c9293, :c9294, :c9295, :c9296, :c9297, :c9298, :c9299, :c9300, :c9301, :c9302, :c9303, :c9304, :c9305, :c9306, :c9307, :c9308, :c9309, :c9310, :c9311, :c9312, :c9313, :c9314, :c9315, :c9316, :c9317, :c9318, :c9319, :c9320, :c9321, :c9322, :c9323, :c9324, :c9325, :c9326, :c9327, :c9328, :c9329, :c9330, :c9331, :c9332, :c9333, :c9334, :c9335, :c9336, :c9337, :c9338, :c9339, :c9340, :c9341, :c9342, :c9343, :c9344, :c9345, :c9346, :c9347, :c9348, :c9349, :c9350, :c9351, :c9352, :c9353, :c9354, :c9355, :c9356, :c9357, :c9358, :c9359, :c9360, :c9361, :c9362, :c9363, :c9364, :c9365, :c9366, :c9367, :c9368, :c9369, :c9370, :c9371, :c9372, :c9373, :c9374, :c9375, :c9376, :c9377, :c9378, :c9379, :c9380, :c9381, :c9382, :c9383, :c9384, :c9385, :c9386, :c9387, :c9388, :c9389, :c9390, :c9391, :c9392, :c9393, :c9394, :c9395, :c9396, :c9397, :c9398, :c9399, :c9400, :c9401, :c9402, :c9403, :c9404, :c9405, :c9406, :c9407, :c9408, :c9409, :c9410, :c9411, :c9412, :c9413, :c9414, :c9415, :c9416, :c9417, :c9418, :c9419, :c9420, :c9421, :c9422, :c9423, :c9424, :c9425, :c9426, :c9427, :c9428, :c9429, :c9430, :c9431, :c9432, :c9433, :c9434, :c9435, :c9436, :c9437, :c9438, :c9439, :c9440, :c9441, :c9442, :c9443, :c9444, :c9445, :c9446, :c9447, :c9448, :c9449, :c9450, :c9451, :c9452, :c9453, :c9454, :c9455, :c9456, :c9457, :c9458, :c9459, :c9460, :c9461, :c9462, :c9463, :c9464, :c9465, :c9466, :c9467, :c9468, :c9469, :c9470, :c9471, :c9472, :c9473, :c9474, :c9475, :c9476, :c9477, :c9478, :c9479, :c9480, :c9481, :c9482, :c9483, :c9484, :c9485, :c9486, :c9487, :c9488, :c9489, :c9490, :c9491, :c9492, :c9493, :c9494, :c9495, :c9496, :c9497, :c9498, :c9499, :c9500, :c9501, :c9502, :c9503, :c9504, :c9505, :c9506, :c9507, :c9508, :c9509, :c9510, :c9511, :c9512, :c9513, :c9514, :c9515, :c9516, :c9517, :c9518, :c9519, :c9520, :c9521, :c9522, :c9523, :c9524, :c9525, :c9526, :c9527, :c9528, :c9529, :c9530, :c9531, :c9532, :c9533, :c9534, :c9535, :c9536, :c9537, :c9538, :c9539, :c9540, :c9541, :c9542, :c9543, :c9544, :c9545, :c9546, :c9547, :c9548, :c9549, :c9550, :c9551, :c9552, :c9553, :c9554, :c9555, :c9556, :c9557, :c9558, :c9559, :c9560, :c9561, :c9562, :c9563, :c9564, :c9565, :c9566, :c9567, :c9568, :c9569, :c9570, :c9571, :c9572, :c9573, :c9574, :c9575, :c9576, :c9577, :c9578, :c9579, :c9580, :c9581, :c9582, :c9583, :c9584, :c9585, :c9586, :c9587, :c9588, :c9589, :c9590, :c9591, :c9592, :c9593, :c9594, :c9595, :c9596, :c9597, :c9598, :c9599, :c9600, :c9601, :c9602, :c9603, :c9604, :c9605, :c9606, :c9607, :c9608, :c9609, :c9610, :c9611, :c9612, :c9613, :c9614, :c9615, :c9616, :c9617, :c9618, :c9619, :c9620, :c9621, :c9622, :c9623, :c9624, :c9625, :c9626, :c9627, :c9628, :c9629, :c9630, :c9631, :c9632, :c9633, :c9634, :c9635, :c9636, :c9637, :c9638, :c9639, :c9640, :c9641, :c9642, :c9643, :c9644, :c9645, :c9646, :c9647, :c9648, :c9649, :c9650, :c9651, :c9652, :c9653, :c9654, :c9655, :c9656, :c9657, :c9658, :c9659, :c9660, :c9661, :c9662, :c9663, :c9664, :c9665, :c9666, :c9667, :c9668, :c9669, :c9670, :c9671, :c9672, :c9673, :c9674, :c9675, :c9676, :c9677, :c9678, :c9679, :c9680, :c9681, :c9682, :c9683, :c9684, :c9685, :c9686, :c9687, :c9688, :c9689, :c9690, :c9691, :c9692, :c9693, :c9694, :c9695, :c9696, :c9697, :c9698, :c9699, :c9700, :c9701, :c9702, :c9703, :c9704, :c9705, :c9706, :c9707, :c9708, :c9709, :c9710, :c9711, :c9712, :c9713, :c9714, :c9715, :c9716, :c9717, :c9718, :c9719, :c9720, :c9721, :c9722, :c9723, :c9724, :c9725, :c9726, :c9727, :c9728, :c9729, :c9730, :c9731, :c9732, :c9733, :c9734, :c9735, :c9736, :c9737, :c9738, :c9739, :c9740, :c9741, :c9742, :c9743, :c9744, :c9745, :c9746, :c9747, :c9748, :c9749, :c9750, :c9751, :c9752, :c9753, :c9754, :c9755, :c9756, :c9757, :c9758, :c9759, :c9760, :c9761, :c9762, :c9763, :c9764, :c9765, :c9766, :c9767, :c9768, :c9769, :c9770, :c9771, :c9772, :c9773, :c9774, :c9775, :c9776, :c9777, :c9778, :c9779, :c9780, :c9781, :c9782, :c9783, :c9784, :c9785, :c9786, :c9787, :c9788, :c9789, :c9790, :c9791, :c9792, :c9793, :c9794, :c9795, :c9796, :c9797, :c9798, :c9799, :c9800, :c9801, :c9802, :c9803, :c9804, :c9805, :c9806, :c9807, :c9808, :c9809, :c9810, :c9811, :c9812, :c9813, :c9814, :c9815, :c9816, :c9817, :c9818, :c9819, :c9820, :c9821, :c9822, :c9823, :c9824, :c9825, :c9826, :c9827, :c9828, :c9829, :c9830, :c9831, :c9832, :c9833, :c9834, :c9835, :c9836, :c9837, :c9838, :c9839, :c9840, :c9841, :c9842, :c9843, :c9844, :c9845, :c9846, :c9847, :c9848, :c9849, :c9850, :c9851, :c9852, :c9853, :c9854, :c9855, :c9856, :c9857, :c9858, :c9859, :c9860, :c9861, :c9862, :c9863, :c9864, :c9865, :c9866, :c9867, :c9868, :c9869, :c9870, :c9871, :c9872, :c9873, :c9874, :c9875, :c9876, :c9877, :c9878, :c9879, :c9880, :c9881, :c9882, :c9883, :c9884, :c9885, :c9886, :c9887, :c9888, :c9889, :c9890, :c9891, :c9892, :c9893, :c9894, :c9895, :c9896, :c9897, :c9898, :c9899, :c9900, :c9901, :c9902, :c9903, :c9904, :c9905, :c9906, :c9907, :c9908, :c9909, :c9910, :c9911, :c9912, :c9913, :c9914, :c9915, :c9916, :c9917, :c9918, :c9919, :c9920, :c9921, :c9922, :c9923, :c9924, :c9925, :c9926, :c9927, :c9928, :c9929, :c9930, :c9931, :c9932, :c9933, :c9934, :c9935, :c9936, :c9937, :c9938, :c9939, :c9940, :c9941, :c9942, :c9943, :c9944, :c9945, :c9946, :c9947, :c9948, :c9949, :c9950, :c9951, :c9952, :c9953, :c9954, :c9955, :c9956, :c9957, :c9958, :c9959, :c9960, :c9961, :c9962, :c9963, :c9964, :c9965, :c9966, :c9967, :c9968, :c9969, :c9970, :c9971, :c9972, :c9973, :c9974, :c9975, :c9976, :c9977, :c9978, :c9979, :c9980, :c9981, :c9982, :c9983, :c9984, :c9985, :c9986, :c9987, :c9988, :c9989, :c9990, :c9991, :c9992, :c9993, :c9994, :c9995, :c9996, :c9997, :c9998, :c9999, :c10000 .
diff --git a/tests/turtle/test-16.out b/tests/turtle/test-16.out
new file mode 100644
index 0000000..c0604b3
--- /dev/null
+++ b/tests/turtle/test-16.out
@@ -0,0 +1,10000 @@
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c10> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c11> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c12> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c13> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c14> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c15> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c16> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c17> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c18> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c19> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c20> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c21> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c22> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c23> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c24> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c25> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c26> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c27> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c28> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c29> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c30> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c31> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c32> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c33> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c34> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c35> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c36> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c37> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c38> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c39> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c40> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c41> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c42> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c43> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c44> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c45> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c46> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c47> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c48> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c49> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c50> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c51> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c52> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c53> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c54> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c55> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c56> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c57> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c58> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c59> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c60> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c61> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c62> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c63> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c64> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c65> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c66> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c67> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c68> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c69> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c70> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c71> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c72> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c73> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c74> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c75> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c76> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c77> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c78> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c79> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c80> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c81> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c82> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c83> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c84> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c85> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c86> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c87> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c88> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c89> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c90> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c91> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c92> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c93> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c94> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c95> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c96> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c97> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c98> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c99> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c1999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c2999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c3999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c4999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c5999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c6999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c7999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c8999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9000> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9001> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9002> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9003> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9004> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9005> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9006> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9007> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9008> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9009> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9010> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9011> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9012> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9013> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9014> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9015> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9016> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9017> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9018> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9019> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9020> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9021> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9022> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9023> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9024> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9025> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9026> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9027> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9028> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9029> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9030> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9031> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9032> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9033> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9034> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9035> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9036> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9037> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9038> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9039> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9040> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9041> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9042> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9043> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9044> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9045> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9046> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9047> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9048> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9049> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9050> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9051> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9052> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9053> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9054> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9055> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9056> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9057> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9058> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9059> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9060> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9061> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9062> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9063> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9064> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9065> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9066> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9067> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9068> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9069> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9070> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9071> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9072> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9073> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9074> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9075> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9076> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9077> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9078> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9079> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9080> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9081> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9082> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9083> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9084> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9085> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9086> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9087> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9088> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9089> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9090> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9091> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9092> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9093> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9094> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9095> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9096> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9097> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9098> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9099> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9100> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9101> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9102> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9103> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9104> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9105> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9106> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9107> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9108> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9109> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9110> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9111> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9112> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9113> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9114> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9115> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9116> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9117> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9118> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9119> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9120> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9121> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9122> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9123> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9124> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9125> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9126> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9127> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9128> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9129> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9130> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9131> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9132> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9133> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9134> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9135> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9136> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9137> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9138> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9139> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9140> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9141> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9142> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9143> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9144> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9145> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9146> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9147> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9148> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9149> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9150> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9151> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9152> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9153> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9154> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9155> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9156> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9157> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9158> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9159> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9160> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9161> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9162> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9163> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9164> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9165> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9166> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9167> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9168> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9169> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9170> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9171> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9172> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9173> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9174> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9175> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9176> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9177> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9178> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9179> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9180> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9181> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9182> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9183> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9184> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9185> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9186> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9187> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9188> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9189> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9190> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9191> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9192> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9193> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9194> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9195> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9196> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9197> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9198> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9199> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9200> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9201> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9202> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9203> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9204> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9205> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9206> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9207> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9208> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9209> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9210> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9211> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9212> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9213> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9214> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9215> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9216> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9217> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9218> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9219> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9220> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9221> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9222> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9223> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9224> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9225> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9226> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9227> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9228> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9229> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9230> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9231> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9232> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9233> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9234> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9235> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9236> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9237> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9238> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9239> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9240> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9241> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9242> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9243> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9244> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9245> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9246> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9247> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9248> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9249> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9250> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9251> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9252> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9253> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9254> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9255> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9256> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9257> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9258> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9259> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9260> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9261> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9262> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9263> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9264> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9265> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9266> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9267> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9268> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9269> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9270> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9271> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9272> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9273> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9274> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9275> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9276> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9277> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9278> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9279> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9280> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9281> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9282> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9283> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9284> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9285> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9286> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9287> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9288> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9289> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9290> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9291> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9292> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9293> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9294> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9295> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9296> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9297> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9298> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9299> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9300> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9301> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9302> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9303> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9304> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9305> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9306> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9307> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9308> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9309> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9310> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9311> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9312> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9313> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9314> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9315> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9316> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9317> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9318> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9319> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9320> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9321> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9322> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9323> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9324> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9325> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9326> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9327> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9328> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9329> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9330> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9331> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9332> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9333> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9334> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9335> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9336> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9337> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9338> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9339> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9340> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9341> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9342> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9343> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9344> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9345> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9346> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9347> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9348> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9349> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9350> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9351> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9352> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9353> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9354> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9355> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9356> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9357> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9358> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9359> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9360> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9361> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9362> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9363> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9364> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9365> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9366> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9367> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9368> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9369> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9370> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9371> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9372> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9373> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9374> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9375> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9376> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9377> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9378> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9379> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9380> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9381> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9382> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9383> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9384> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9385> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9386> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9387> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9388> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9389> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9390> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9391> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9392> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9393> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9394> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9395> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9396> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9397> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9398> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9399> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9400> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9401> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9402> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9403> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9404> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9405> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9406> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9407> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9408> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9409> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9410> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9411> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9412> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9413> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9414> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9415> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9416> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9417> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9418> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9419> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9420> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9421> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9422> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9423> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9424> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9425> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9426> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9427> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9428> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9429> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9430> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9431> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9432> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9433> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9434> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9435> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9436> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9437> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9438> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9439> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9440> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9441> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9442> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9443> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9444> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9445> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9446> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9447> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9448> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9449> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9450> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9451> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9452> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9453> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9454> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9455> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9456> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9457> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9458> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9459> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9460> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9461> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9462> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9463> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9464> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9465> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9466> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9467> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9468> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9469> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9470> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9471> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9472> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9473> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9474> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9475> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9476> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9477> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9478> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9479> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9480> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9481> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9482> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9483> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9484> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9485> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9486> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9487> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9488> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9489> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9490> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9491> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9492> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9493> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9494> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9495> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9496> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9497> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9498> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9499> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9500> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9501> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9502> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9503> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9504> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9505> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9506> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9507> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9508> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9509> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9510> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9511> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9512> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9513> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9514> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9515> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9516> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9517> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9518> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9519> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9520> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9521> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9522> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9523> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9524> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9525> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9526> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9527> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9528> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9529> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9530> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9531> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9532> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9533> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9534> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9535> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9536> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9537> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9538> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9539> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9540> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9541> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9542> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9543> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9544> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9545> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9546> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9547> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9548> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9549> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9550> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9551> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9552> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9553> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9554> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9555> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9556> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9557> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9558> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9559> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9560> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9561> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9562> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9563> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9564> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9565> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9566> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9567> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9568> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9569> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9570> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9571> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9572> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9573> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9574> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9575> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9576> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9577> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9578> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9579> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9580> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9581> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9582> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9583> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9584> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9585> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9586> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9587> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9588> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9589> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9590> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9591> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9592> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9593> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9594> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9595> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9596> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9597> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9598> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9599> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9600> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9601> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9602> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9603> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9604> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9605> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9606> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9607> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9608> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9609> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9610> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9611> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9612> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9613> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9614> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9615> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9616> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9617> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9618> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9619> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9620> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9621> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9622> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9623> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9624> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9625> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9626> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9627> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9628> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9629> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9630> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9631> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9632> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9633> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9634> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9635> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9636> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9637> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9638> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9639> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9640> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9641> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9642> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9643> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9644> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9645> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9646> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9647> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9648> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9649> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9650> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9651> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9652> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9653> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9654> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9655> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9656> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9657> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9658> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9659> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9660> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9661> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9662> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9663> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9664> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9665> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9666> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9667> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9668> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9669> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9670> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9671> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9672> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9673> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9674> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9675> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9676> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9677> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9678> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9679> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9680> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9681> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9682> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9683> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9684> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9685> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9686> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9687> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9688> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9689> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9690> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9691> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9692> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9693> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9694> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9695> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9696> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9697> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9698> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9699> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9700> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9701> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9702> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9703> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9704> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9705> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9706> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9707> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9708> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9709> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9710> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9711> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9712> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9713> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9714> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9715> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9716> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9717> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9718> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9719> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9720> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9721> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9722> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9723> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9724> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9725> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9726> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9727> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9728> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9729> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9730> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9731> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9732> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9733> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9734> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9735> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9736> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9737> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9738> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9739> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9740> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9741> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9742> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9743> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9744> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9745> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9746> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9747> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9748> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9749> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9750> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9751> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9752> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9753> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9754> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9755> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9756> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9757> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9758> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9759> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9760> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9761> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9762> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9763> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9764> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9765> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9766> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9767> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9768> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9769> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9770> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9771> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9772> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9773> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9774> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9775> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9776> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9777> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9778> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9779> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9780> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9781> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9782> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9783> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9784> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9785> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9786> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9787> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9788> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9789> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9790> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9791> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9792> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9793> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9794> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9795> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9796> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9797> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9798> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9799> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9800> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9801> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9802> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9803> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9804> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9805> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9806> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9807> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9808> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9809> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9810> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9811> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9812> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9813> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9814> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9815> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9816> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9817> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9818> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9819> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9820> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9821> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9822> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9823> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9824> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9825> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9826> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9827> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9828> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9829> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9830> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9831> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9832> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9833> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9834> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9835> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9836> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9837> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9838> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9839> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9840> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9841> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9842> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9843> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9844> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9845> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9846> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9847> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9848> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9849> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9850> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9851> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9852> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9853> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9854> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9855> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9856> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9857> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9858> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9859> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9860> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9861> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9862> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9863> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9864> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9865> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9866> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9867> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9868> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9869> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9870> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9871> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9872> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9873> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9874> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9875> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9876> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9877> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9878> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9879> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9880> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9881> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9882> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9883> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9884> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9885> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9886> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9887> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9888> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9889> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9890> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9891> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9892> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9893> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9894> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9895> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9896> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9897> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9898> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9899> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9900> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9901> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9902> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9903> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9904> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9905> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9906> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9907> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9908> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9909> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9910> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9911> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9912> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9913> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9914> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9915> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9916> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9917> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9918> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9919> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9920> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9921> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9922> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9923> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9924> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9925> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9926> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9927> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9928> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9929> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9930> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9931> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9932> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9933> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9934> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9935> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9936> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9937> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9938> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9939> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9940> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9941> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9942> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9943> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9944> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9945> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9946> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9947> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9948> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9949> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9950> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9951> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9952> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9953> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9954> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9955> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9956> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9957> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9958> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9959> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9960> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9961> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9962> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9963> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9964> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9965> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9966> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9967> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9968> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9969> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9970> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9971> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9972> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9973> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9974> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9975> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9976> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9977> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9978> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9979> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9980> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9981> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9982> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9983> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9984> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9985> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9986> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9987> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9988> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9989> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9990> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9991> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9992> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9993> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9994> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9995> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9996> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9997> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9998> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c9999> .
+<http://example.org/ns#a> <http://example.org/ns#b> <http://example.org/ns#c10000> .
diff --git a/tests/turtle/test-16.ttl b/tests/turtle/test-16.ttl
new file mode 100644
index 0000000..a9ac37f
--- /dev/null
+++ b/tests/turtle/test-16.ttl
@@ -0,0 +1,10002 @@
+# 10000 items (10000 triples) more than the default Bison stack size
+@prefix : <http://example.org/ns#> .
+:a :b :c1;
+ :b :c2;
+ :b :c3;
+ :b :c4;
+ :b :c5;
+ :b :c6;
+ :b :c7;
+ :b :c8;
+ :b :c9;
+ :b :c10;
+ :b :c11;
+ :b :c12;
+ :b :c13;
+ :b :c14;
+ :b :c15;
+ :b :c16;
+ :b :c17;
+ :b :c18;
+ :b :c19;
+ :b :c20;
+ :b :c21;
+ :b :c22;
+ :b :c23;
+ :b :c24;
+ :b :c25;
+ :b :c26;
+ :b :c27;
+ :b :c28;
+ :b :c29;
+ :b :c30;
+ :b :c31;
+ :b :c32;
+ :b :c33;
+ :b :c34;
+ :b :c35;
+ :b :c36;
+ :b :c37;
+ :b :c38;
+ :b :c39;
+ :b :c40;
+ :b :c41;
+ :b :c42;
+ :b :c43;
+ :b :c44;
+ :b :c45;
+ :b :c46;
+ :b :c47;
+ :b :c48;
+ :b :c49;
+ :b :c50;
+ :b :c51;
+ :b :c52;
+ :b :c53;
+ :b :c54;
+ :b :c55;
+ :b :c56;
+ :b :c57;
+ :b :c58;
+ :b :c59;
+ :b :c60;
+ :b :c61;
+ :b :c62;
+ :b :c63;
+ :b :c64;
+ :b :c65;
+ :b :c66;
+ :b :c67;
+ :b :c68;
+ :b :c69;
+ :b :c70;
+ :b :c71;
+ :b :c72;
+ :b :c73;
+ :b :c74;
+ :b :c75;
+ :b :c76;
+ :b :c77;
+ :b :c78;
+ :b :c79;
+ :b :c80;
+ :b :c81;
+ :b :c82;
+ :b :c83;
+ :b :c84;
+ :b :c85;
+ :b :c86;
+ :b :c87;
+ :b :c88;
+ :b :c89;
+ :b :c90;
+ :b :c91;
+ :b :c92;
+ :b :c93;
+ :b :c94;
+ :b :c95;
+ :b :c96;
+ :b :c97;
+ :b :c98;
+ :b :c99;
+ :b :c100;
+ :b :c101;
+ :b :c102;
+ :b :c103;
+ :b :c104;
+ :b :c105;
+ :b :c106;
+ :b :c107;
+ :b :c108;
+ :b :c109;
+ :b :c110;
+ :b :c111;
+ :b :c112;
+ :b :c113;
+ :b :c114;
+ :b :c115;
+ :b :c116;
+ :b :c117;
+ :b :c118;
+ :b :c119;
+ :b :c120;
+ :b :c121;
+ :b :c122;
+ :b :c123;
+ :b :c124;
+ :b :c125;
+ :b :c126;
+ :b :c127;
+ :b :c128;
+ :b :c129;
+ :b :c130;
+ :b :c131;
+ :b :c132;
+ :b :c133;
+ :b :c134;
+ :b :c135;
+ :b :c136;
+ :b :c137;
+ :b :c138;
+ :b :c139;
+ :b :c140;
+ :b :c141;
+ :b :c142;
+ :b :c143;
+ :b :c144;
+ :b :c145;
+ :b :c146;
+ :b :c147;
+ :b :c148;
+ :b :c149;
+ :b :c150;
+ :b :c151;
+ :b :c152;
+ :b :c153;
+ :b :c154;
+ :b :c155;
+ :b :c156;
+ :b :c157;
+ :b :c158;
+ :b :c159;
+ :b :c160;
+ :b :c161;
+ :b :c162;
+ :b :c163;
+ :b :c164;
+ :b :c165;
+ :b :c166;
+ :b :c167;
+ :b :c168;
+ :b :c169;
+ :b :c170;
+ :b :c171;
+ :b :c172;
+ :b :c173;
+ :b :c174;
+ :b :c175;
+ :b :c176;
+ :b :c177;
+ :b :c178;
+ :b :c179;
+ :b :c180;
+ :b :c181;
+ :b :c182;
+ :b :c183;
+ :b :c184;
+ :b :c185;
+ :b :c186;
+ :b :c187;
+ :b :c188;
+ :b :c189;
+ :b :c190;
+ :b :c191;
+ :b :c192;
+ :b :c193;
+ :b :c194;
+ :b :c195;
+ :b :c196;
+ :b :c197;
+ :b :c198;
+ :b :c199;
+ :b :c200;
+ :b :c201;
+ :b :c202;
+ :b :c203;
+ :b :c204;
+ :b :c205;
+ :b :c206;
+ :b :c207;
+ :b :c208;
+ :b :c209;
+ :b :c210;
+ :b :c211;
+ :b :c212;
+ :b :c213;
+ :b :c214;
+ :b :c215;
+ :b :c216;
+ :b :c217;
+ :b :c218;
+ :b :c219;
+ :b :c220;
+ :b :c221;
+ :b :c222;
+ :b :c223;
+ :b :c224;
+ :b :c225;
+ :b :c226;
+ :b :c227;
+ :b :c228;
+ :b :c229;
+ :b :c230;
+ :b :c231;
+ :b :c232;
+ :b :c233;
+ :b :c234;
+ :b :c235;
+ :b :c236;
+ :b :c237;
+ :b :c238;
+ :b :c239;
+ :b :c240;
+ :b :c241;
+ :b :c242;
+ :b :c243;
+ :b :c244;
+ :b :c245;
+ :b :c246;
+ :b :c247;
+ :b :c248;
+ :b :c249;
+ :b :c250;
+ :b :c251;
+ :b :c252;
+ :b :c253;
+ :b :c254;
+ :b :c255;
+ :b :c256;
+ :b :c257;
+ :b :c258;
+ :b :c259;
+ :b :c260;
+ :b :c261;
+ :b :c262;
+ :b :c263;
+ :b :c264;
+ :b :c265;
+ :b :c266;
+ :b :c267;
+ :b :c268;
+ :b :c269;
+ :b :c270;
+ :b :c271;
+ :b :c272;
+ :b :c273;
+ :b :c274;
+ :b :c275;
+ :b :c276;
+ :b :c277;
+ :b :c278;
+ :b :c279;
+ :b :c280;
+ :b :c281;
+ :b :c282;
+ :b :c283;
+ :b :c284;
+ :b :c285;
+ :b :c286;
+ :b :c287;
+ :b :c288;
+ :b :c289;
+ :b :c290;
+ :b :c291;
+ :b :c292;
+ :b :c293;
+ :b :c294;
+ :b :c295;
+ :b :c296;
+ :b :c297;
+ :b :c298;
+ :b :c299;
+ :b :c300;
+ :b :c301;
+ :b :c302;
+ :b :c303;
+ :b :c304;
+ :b :c305;
+ :b :c306;
+ :b :c307;
+ :b :c308;
+ :b :c309;
+ :b :c310;
+ :b :c311;
+ :b :c312;
+ :b :c313;
+ :b :c314;
+ :b :c315;
+ :b :c316;
+ :b :c317;
+ :b :c318;
+ :b :c319;
+ :b :c320;
+ :b :c321;
+ :b :c322;
+ :b :c323;
+ :b :c324;
+ :b :c325;
+ :b :c326;
+ :b :c327;
+ :b :c328;
+ :b :c329;
+ :b :c330;
+ :b :c331;
+ :b :c332;
+ :b :c333;
+ :b :c334;
+ :b :c335;
+ :b :c336;
+ :b :c337;
+ :b :c338;
+ :b :c339;
+ :b :c340;
+ :b :c341;
+ :b :c342;
+ :b :c343;
+ :b :c344;
+ :b :c345;
+ :b :c346;
+ :b :c347;
+ :b :c348;
+ :b :c349;
+ :b :c350;
+ :b :c351;
+ :b :c352;
+ :b :c353;
+ :b :c354;
+ :b :c355;
+ :b :c356;
+ :b :c357;
+ :b :c358;
+ :b :c359;
+ :b :c360;
+ :b :c361;
+ :b :c362;
+ :b :c363;
+ :b :c364;
+ :b :c365;
+ :b :c366;
+ :b :c367;
+ :b :c368;
+ :b :c369;
+ :b :c370;
+ :b :c371;
+ :b :c372;
+ :b :c373;
+ :b :c374;
+ :b :c375;
+ :b :c376;
+ :b :c377;
+ :b :c378;
+ :b :c379;
+ :b :c380;
+ :b :c381;
+ :b :c382;
+ :b :c383;
+ :b :c384;
+ :b :c385;
+ :b :c386;
+ :b :c387;
+ :b :c388;
+ :b :c389;
+ :b :c390;
+ :b :c391;
+ :b :c392;
+ :b :c393;
+ :b :c394;
+ :b :c395;
+ :b :c396;
+ :b :c397;
+ :b :c398;
+ :b :c399;
+ :b :c400;
+ :b :c401;
+ :b :c402;
+ :b :c403;
+ :b :c404;
+ :b :c405;
+ :b :c406;
+ :b :c407;
+ :b :c408;
+ :b :c409;
+ :b :c410;
+ :b :c411;
+ :b :c412;
+ :b :c413;
+ :b :c414;
+ :b :c415;
+ :b :c416;
+ :b :c417;
+ :b :c418;
+ :b :c419;
+ :b :c420;
+ :b :c421;
+ :b :c422;
+ :b :c423;
+ :b :c424;
+ :b :c425;
+ :b :c426;
+ :b :c427;
+ :b :c428;
+ :b :c429;
+ :b :c430;
+ :b :c431;
+ :b :c432;
+ :b :c433;
+ :b :c434;
+ :b :c435;
+ :b :c436;
+ :b :c437;
+ :b :c438;
+ :b :c439;
+ :b :c440;
+ :b :c441;
+ :b :c442;
+ :b :c443;
+ :b :c444;
+ :b :c445;
+ :b :c446;
+ :b :c447;
+ :b :c448;
+ :b :c449;
+ :b :c450;
+ :b :c451;
+ :b :c452;
+ :b :c453;
+ :b :c454;
+ :b :c455;
+ :b :c456;
+ :b :c457;
+ :b :c458;
+ :b :c459;
+ :b :c460;
+ :b :c461;
+ :b :c462;
+ :b :c463;
+ :b :c464;
+ :b :c465;
+ :b :c466;
+ :b :c467;
+ :b :c468;
+ :b :c469;
+ :b :c470;
+ :b :c471;
+ :b :c472;
+ :b :c473;
+ :b :c474;
+ :b :c475;
+ :b :c476;
+ :b :c477;
+ :b :c478;
+ :b :c479;
+ :b :c480;
+ :b :c481;
+ :b :c482;
+ :b :c483;
+ :b :c484;
+ :b :c485;
+ :b :c486;
+ :b :c487;
+ :b :c488;
+ :b :c489;
+ :b :c490;
+ :b :c491;
+ :b :c492;
+ :b :c493;
+ :b :c494;
+ :b :c495;
+ :b :c496;
+ :b :c497;
+ :b :c498;
+ :b :c499;
+ :b :c500;
+ :b :c501;
+ :b :c502;
+ :b :c503;
+ :b :c504;
+ :b :c505;
+ :b :c506;
+ :b :c507;
+ :b :c508;
+ :b :c509;
+ :b :c510;
+ :b :c511;
+ :b :c512;
+ :b :c513;
+ :b :c514;
+ :b :c515;
+ :b :c516;
+ :b :c517;
+ :b :c518;
+ :b :c519;
+ :b :c520;
+ :b :c521;
+ :b :c522;
+ :b :c523;
+ :b :c524;
+ :b :c525;
+ :b :c526;
+ :b :c527;
+ :b :c528;
+ :b :c529;
+ :b :c530;
+ :b :c531;
+ :b :c532;
+ :b :c533;
+ :b :c534;
+ :b :c535;
+ :b :c536;
+ :b :c537;
+ :b :c538;
+ :b :c539;
+ :b :c540;
+ :b :c541;
+ :b :c542;
+ :b :c543;
+ :b :c544;
+ :b :c545;
+ :b :c546;
+ :b :c547;
+ :b :c548;
+ :b :c549;
+ :b :c550;
+ :b :c551;
+ :b :c552;
+ :b :c553;
+ :b :c554;
+ :b :c555;
+ :b :c556;
+ :b :c557;
+ :b :c558;
+ :b :c559;
+ :b :c560;
+ :b :c561;
+ :b :c562;
+ :b :c563;
+ :b :c564;
+ :b :c565;
+ :b :c566;
+ :b :c567;
+ :b :c568;
+ :b :c569;
+ :b :c570;
+ :b :c571;
+ :b :c572;
+ :b :c573;
+ :b :c574;
+ :b :c575;
+ :b :c576;
+ :b :c577;
+ :b :c578;
+ :b :c579;
+ :b :c580;
+ :b :c581;
+ :b :c582;
+ :b :c583;
+ :b :c584;
+ :b :c585;
+ :b :c586;
+ :b :c587;
+ :b :c588;
+ :b :c589;
+ :b :c590;
+ :b :c591;
+ :b :c592;
+ :b :c593;
+ :b :c594;
+ :b :c595;
+ :b :c596;
+ :b :c597;
+ :b :c598;
+ :b :c599;
+ :b :c600;
+ :b :c601;
+ :b :c602;
+ :b :c603;
+ :b :c604;
+ :b :c605;
+ :b :c606;
+ :b :c607;
+ :b :c608;
+ :b :c609;
+ :b :c610;
+ :b :c611;
+ :b :c612;
+ :b :c613;
+ :b :c614;
+ :b :c615;
+ :b :c616;
+ :b :c617;
+ :b :c618;
+ :b :c619;
+ :b :c620;
+ :b :c621;
+ :b :c622;
+ :b :c623;
+ :b :c624;
+ :b :c625;
+ :b :c626;
+ :b :c627;
+ :b :c628;
+ :b :c629;
+ :b :c630;
+ :b :c631;
+ :b :c632;
+ :b :c633;
+ :b :c634;
+ :b :c635;
+ :b :c636;
+ :b :c637;
+ :b :c638;
+ :b :c639;
+ :b :c640;
+ :b :c641;
+ :b :c642;
+ :b :c643;
+ :b :c644;
+ :b :c645;
+ :b :c646;
+ :b :c647;
+ :b :c648;
+ :b :c649;
+ :b :c650;
+ :b :c651;
+ :b :c652;
+ :b :c653;
+ :b :c654;
+ :b :c655;
+ :b :c656;
+ :b :c657;
+ :b :c658;
+ :b :c659;
+ :b :c660;
+ :b :c661;
+ :b :c662;
+ :b :c663;
+ :b :c664;
+ :b :c665;
+ :b :c666;
+ :b :c667;
+ :b :c668;
+ :b :c669;
+ :b :c670;
+ :b :c671;
+ :b :c672;
+ :b :c673;
+ :b :c674;
+ :b :c675;
+ :b :c676;
+ :b :c677;
+ :b :c678;
+ :b :c679;
+ :b :c680;
+ :b :c681;
+ :b :c682;
+ :b :c683;
+ :b :c684;
+ :b :c685;
+ :b :c686;
+ :b :c687;
+ :b :c688;
+ :b :c689;
+ :b :c690;
+ :b :c691;
+ :b :c692;
+ :b :c693;
+ :b :c694;
+ :b :c695;
+ :b :c696;
+ :b :c697;
+ :b :c698;
+ :b :c699;
+ :b :c700;
+ :b :c701;
+ :b :c702;
+ :b :c703;
+ :b :c704;
+ :b :c705;
+ :b :c706;
+ :b :c707;
+ :b :c708;
+ :b :c709;
+ :b :c710;
+ :b :c711;
+ :b :c712;
+ :b :c713;
+ :b :c714;
+ :b :c715;
+ :b :c716;
+ :b :c717;
+ :b :c718;
+ :b :c719;
+ :b :c720;
+ :b :c721;
+ :b :c722;
+ :b :c723;
+ :b :c724;
+ :b :c725;
+ :b :c726;
+ :b :c727;
+ :b :c728;
+ :b :c729;
+ :b :c730;
+ :b :c731;
+ :b :c732;
+ :b :c733;
+ :b :c734;
+ :b :c735;
+ :b :c736;
+ :b :c737;
+ :b :c738;
+ :b :c739;
+ :b :c740;
+ :b :c741;
+ :b :c742;
+ :b :c743;
+ :b :c744;
+ :b :c745;
+ :b :c746;
+ :b :c747;
+ :b :c748;
+ :b :c749;
+ :b :c750;
+ :b :c751;
+ :b :c752;
+ :b :c753;
+ :b :c754;
+ :b :c755;
+ :b :c756;
+ :b :c757;
+ :b :c758;
+ :b :c759;
+ :b :c760;
+ :b :c761;
+ :b :c762;
+ :b :c763;
+ :b :c764;
+ :b :c765;
+ :b :c766;
+ :b :c767;
+ :b :c768;
+ :b :c769;
+ :b :c770;
+ :b :c771;
+ :b :c772;
+ :b :c773;
+ :b :c774;
+ :b :c775;
+ :b :c776;
+ :b :c777;
+ :b :c778;
+ :b :c779;
+ :b :c780;
+ :b :c781;
+ :b :c782;
+ :b :c783;
+ :b :c784;
+ :b :c785;
+ :b :c786;
+ :b :c787;
+ :b :c788;
+ :b :c789;
+ :b :c790;
+ :b :c791;
+ :b :c792;
+ :b :c793;
+ :b :c794;
+ :b :c795;
+ :b :c796;
+ :b :c797;
+ :b :c798;
+ :b :c799;
+ :b :c800;
+ :b :c801;
+ :b :c802;
+ :b :c803;
+ :b :c804;
+ :b :c805;
+ :b :c806;
+ :b :c807;
+ :b :c808;
+ :b :c809;
+ :b :c810;
+ :b :c811;
+ :b :c812;
+ :b :c813;
+ :b :c814;
+ :b :c815;
+ :b :c816;
+ :b :c817;
+ :b :c818;
+ :b :c819;
+ :b :c820;
+ :b :c821;
+ :b :c822;
+ :b :c823;
+ :b :c824;
+ :b :c825;
+ :b :c826;
+ :b :c827;
+ :b :c828;
+ :b :c829;
+ :b :c830;
+ :b :c831;
+ :b :c832;
+ :b :c833;
+ :b :c834;
+ :b :c835;
+ :b :c836;
+ :b :c837;
+ :b :c838;
+ :b :c839;
+ :b :c840;
+ :b :c841;
+ :b :c842;
+ :b :c843;
+ :b :c844;
+ :b :c845;
+ :b :c846;
+ :b :c847;
+ :b :c848;
+ :b :c849;
+ :b :c850;
+ :b :c851;
+ :b :c852;
+ :b :c853;
+ :b :c854;
+ :b :c855;
+ :b :c856;
+ :b :c857;
+ :b :c858;
+ :b :c859;
+ :b :c860;
+ :b :c861;
+ :b :c862;
+ :b :c863;
+ :b :c864;
+ :b :c865;
+ :b :c866;
+ :b :c867;
+ :b :c868;
+ :b :c869;
+ :b :c870;
+ :b :c871;
+ :b :c872;
+ :b :c873;
+ :b :c874;
+ :b :c875;
+ :b :c876;
+ :b :c877;
+ :b :c878;
+ :b :c879;
+ :b :c880;
+ :b :c881;
+ :b :c882;
+ :b :c883;
+ :b :c884;
+ :b :c885;
+ :b :c886;
+ :b :c887;
+ :b :c888;
+ :b :c889;
+ :b :c890;
+ :b :c891;
+ :b :c892;
+ :b :c893;
+ :b :c894;
+ :b :c895;
+ :b :c896;
+ :b :c897;
+ :b :c898;
+ :b :c899;
+ :b :c900;
+ :b :c901;
+ :b :c902;
+ :b :c903;
+ :b :c904;
+ :b :c905;
+ :b :c906;
+ :b :c907;
+ :b :c908;
+ :b :c909;
+ :b :c910;
+ :b :c911;
+ :b :c912;
+ :b :c913;
+ :b :c914;
+ :b :c915;
+ :b :c916;
+ :b :c917;
+ :b :c918;
+ :b :c919;
+ :b :c920;
+ :b :c921;
+ :b :c922;
+ :b :c923;
+ :b :c924;
+ :b :c925;
+ :b :c926;
+ :b :c927;
+ :b :c928;
+ :b :c929;
+ :b :c930;
+ :b :c931;
+ :b :c932;
+ :b :c933;
+ :b :c934;
+ :b :c935;
+ :b :c936;
+ :b :c937;
+ :b :c938;
+ :b :c939;
+ :b :c940;
+ :b :c941;
+ :b :c942;
+ :b :c943;
+ :b :c944;
+ :b :c945;
+ :b :c946;
+ :b :c947;
+ :b :c948;
+ :b :c949;
+ :b :c950;
+ :b :c951;
+ :b :c952;
+ :b :c953;
+ :b :c954;
+ :b :c955;
+ :b :c956;
+ :b :c957;
+ :b :c958;
+ :b :c959;
+ :b :c960;
+ :b :c961;
+ :b :c962;
+ :b :c963;
+ :b :c964;
+ :b :c965;
+ :b :c966;
+ :b :c967;
+ :b :c968;
+ :b :c969;
+ :b :c970;
+ :b :c971;
+ :b :c972;
+ :b :c973;
+ :b :c974;
+ :b :c975;
+ :b :c976;
+ :b :c977;
+ :b :c978;
+ :b :c979;
+ :b :c980;
+ :b :c981;
+ :b :c982;
+ :b :c983;
+ :b :c984;
+ :b :c985;
+ :b :c986;
+ :b :c987;
+ :b :c988;
+ :b :c989;
+ :b :c990;
+ :b :c991;
+ :b :c992;
+ :b :c993;
+ :b :c994;
+ :b :c995;
+ :b :c996;
+ :b :c997;
+ :b :c998;
+ :b :c999;
+ :b :c1000;
+ :b :c1001;
+ :b :c1002;
+ :b :c1003;
+ :b :c1004;
+ :b :c1005;
+ :b :c1006;
+ :b :c1007;
+ :b :c1008;
+ :b :c1009;
+ :b :c1010;
+ :b :c1011;
+ :b :c1012;
+ :b :c1013;
+ :b :c1014;
+ :b :c1015;
+ :b :c1016;
+ :b :c1017;
+ :b :c1018;
+ :b :c1019;
+ :b :c1020;
+ :b :c1021;
+ :b :c1022;
+ :b :c1023;
+ :b :c1024;
+ :b :c1025;
+ :b :c1026;
+ :b :c1027;
+ :b :c1028;
+ :b :c1029;
+ :b :c1030;
+ :b :c1031;
+ :b :c1032;
+ :b :c1033;
+ :b :c1034;
+ :b :c1035;
+ :b :c1036;
+ :b :c1037;
+ :b :c1038;
+ :b :c1039;
+ :b :c1040;
+ :b :c1041;
+ :b :c1042;
+ :b :c1043;
+ :b :c1044;
+ :b :c1045;
+ :b :c1046;
+ :b :c1047;
+ :b :c1048;
+ :b :c1049;
+ :b :c1050;
+ :b :c1051;
+ :b :c1052;
+ :b :c1053;
+ :b :c1054;
+ :b :c1055;
+ :b :c1056;
+ :b :c1057;
+ :b :c1058;
+ :b :c1059;
+ :b :c1060;
+ :b :c1061;
+ :b :c1062;
+ :b :c1063;
+ :b :c1064;
+ :b :c1065;
+ :b :c1066;
+ :b :c1067;
+ :b :c1068;
+ :b :c1069;
+ :b :c1070;
+ :b :c1071;
+ :b :c1072;
+ :b :c1073;
+ :b :c1074;
+ :b :c1075;
+ :b :c1076;
+ :b :c1077;
+ :b :c1078;
+ :b :c1079;
+ :b :c1080;
+ :b :c1081;
+ :b :c1082;
+ :b :c1083;
+ :b :c1084;
+ :b :c1085;
+ :b :c1086;
+ :b :c1087;
+ :b :c1088;
+ :b :c1089;
+ :b :c1090;
+ :b :c1091;
+ :b :c1092;
+ :b :c1093;
+ :b :c1094;
+ :b :c1095;
+ :b :c1096;
+ :b :c1097;
+ :b :c1098;
+ :b :c1099;
+ :b :c1100;
+ :b :c1101;
+ :b :c1102;
+ :b :c1103;
+ :b :c1104;
+ :b :c1105;
+ :b :c1106;
+ :b :c1107;
+ :b :c1108;
+ :b :c1109;
+ :b :c1110;
+ :b :c1111;
+ :b :c1112;
+ :b :c1113;
+ :b :c1114;
+ :b :c1115;
+ :b :c1116;
+ :b :c1117;
+ :b :c1118;
+ :b :c1119;
+ :b :c1120;
+ :b :c1121;
+ :b :c1122;
+ :b :c1123;
+ :b :c1124;
+ :b :c1125;
+ :b :c1126;
+ :b :c1127;
+ :b :c1128;
+ :b :c1129;
+ :b :c1130;
+ :b :c1131;
+ :b :c1132;
+ :b :c1133;
+ :b :c1134;
+ :b :c1135;
+ :b :c1136;
+ :b :c1137;
+ :b :c1138;
+ :b :c1139;
+ :b :c1140;
+ :b :c1141;
+ :b :c1142;
+ :b :c1143;
+ :b :c1144;
+ :b :c1145;
+ :b :c1146;
+ :b :c1147;
+ :b :c1148;
+ :b :c1149;
+ :b :c1150;
+ :b :c1151;
+ :b :c1152;
+ :b :c1153;
+ :b :c1154;
+ :b :c1155;
+ :b :c1156;
+ :b :c1157;
+ :b :c1158;
+ :b :c1159;
+ :b :c1160;
+ :b :c1161;
+ :b :c1162;
+ :b :c1163;
+ :b :c1164;
+ :b :c1165;
+ :b :c1166;
+ :b :c1167;
+ :b :c1168;
+ :b :c1169;
+ :b :c1170;
+ :b :c1171;
+ :b :c1172;
+ :b :c1173;
+ :b :c1174;
+ :b :c1175;
+ :b :c1176;
+ :b :c1177;
+ :b :c1178;
+ :b :c1179;
+ :b :c1180;
+ :b :c1181;
+ :b :c1182;
+ :b :c1183;
+ :b :c1184;
+ :b :c1185;
+ :b :c1186;
+ :b :c1187;
+ :b :c1188;
+ :b :c1189;
+ :b :c1190;
+ :b :c1191;
+ :b :c1192;
+ :b :c1193;
+ :b :c1194;
+ :b :c1195;
+ :b :c1196;
+ :b :c1197;
+ :b :c1198;
+ :b :c1199;
+ :b :c1200;
+ :b :c1201;
+ :b :c1202;
+ :b :c1203;
+ :b :c1204;
+ :b :c1205;
+ :b :c1206;
+ :b :c1207;
+ :b :c1208;
+ :b :c1209;
+ :b :c1210;
+ :b :c1211;
+ :b :c1212;
+ :b :c1213;
+ :b :c1214;
+ :b :c1215;
+ :b :c1216;
+ :b :c1217;
+ :b :c1218;
+ :b :c1219;
+ :b :c1220;
+ :b :c1221;
+ :b :c1222;
+ :b :c1223;
+ :b :c1224;
+ :b :c1225;
+ :b :c1226;
+ :b :c1227;
+ :b :c1228;
+ :b :c1229;
+ :b :c1230;
+ :b :c1231;
+ :b :c1232;
+ :b :c1233;
+ :b :c1234;
+ :b :c1235;
+ :b :c1236;
+ :b :c1237;
+ :b :c1238;
+ :b :c1239;
+ :b :c1240;
+ :b :c1241;
+ :b :c1242;
+ :b :c1243;
+ :b :c1244;
+ :b :c1245;
+ :b :c1246;
+ :b :c1247;
+ :b :c1248;
+ :b :c1249;
+ :b :c1250;
+ :b :c1251;
+ :b :c1252;
+ :b :c1253;
+ :b :c1254;
+ :b :c1255;
+ :b :c1256;
+ :b :c1257;
+ :b :c1258;
+ :b :c1259;
+ :b :c1260;
+ :b :c1261;
+ :b :c1262;
+ :b :c1263;
+ :b :c1264;
+ :b :c1265;
+ :b :c1266;
+ :b :c1267;
+ :b :c1268;
+ :b :c1269;
+ :b :c1270;
+ :b :c1271;
+ :b :c1272;
+ :b :c1273;
+ :b :c1274;
+ :b :c1275;
+ :b :c1276;
+ :b :c1277;
+ :b :c1278;
+ :b :c1279;
+ :b :c1280;
+ :b :c1281;
+ :b :c1282;
+ :b :c1283;
+ :b :c1284;
+ :b :c1285;
+ :b :c1286;
+ :b :c1287;
+ :b :c1288;
+ :b :c1289;
+ :b :c1290;
+ :b :c1291;
+ :b :c1292;
+ :b :c1293;
+ :b :c1294;
+ :b :c1295;
+ :b :c1296;
+ :b :c1297;
+ :b :c1298;
+ :b :c1299;
+ :b :c1300;
+ :b :c1301;
+ :b :c1302;
+ :b :c1303;
+ :b :c1304;
+ :b :c1305;
+ :b :c1306;
+ :b :c1307;
+ :b :c1308;
+ :b :c1309;
+ :b :c1310;
+ :b :c1311;
+ :b :c1312;
+ :b :c1313;
+ :b :c1314;
+ :b :c1315;
+ :b :c1316;
+ :b :c1317;
+ :b :c1318;
+ :b :c1319;
+ :b :c1320;
+ :b :c1321;
+ :b :c1322;
+ :b :c1323;
+ :b :c1324;
+ :b :c1325;
+ :b :c1326;
+ :b :c1327;
+ :b :c1328;
+ :b :c1329;
+ :b :c1330;
+ :b :c1331;
+ :b :c1332;
+ :b :c1333;
+ :b :c1334;
+ :b :c1335;
+ :b :c1336;
+ :b :c1337;
+ :b :c1338;
+ :b :c1339;
+ :b :c1340;
+ :b :c1341;
+ :b :c1342;
+ :b :c1343;
+ :b :c1344;
+ :b :c1345;
+ :b :c1346;
+ :b :c1347;
+ :b :c1348;
+ :b :c1349;
+ :b :c1350;
+ :b :c1351;
+ :b :c1352;
+ :b :c1353;
+ :b :c1354;
+ :b :c1355;
+ :b :c1356;
+ :b :c1357;
+ :b :c1358;
+ :b :c1359;
+ :b :c1360;
+ :b :c1361;
+ :b :c1362;
+ :b :c1363;
+ :b :c1364;
+ :b :c1365;
+ :b :c1366;
+ :b :c1367;
+ :b :c1368;
+ :b :c1369;
+ :b :c1370;
+ :b :c1371;
+ :b :c1372;
+ :b :c1373;
+ :b :c1374;
+ :b :c1375;
+ :b :c1376;
+ :b :c1377;
+ :b :c1378;
+ :b :c1379;
+ :b :c1380;
+ :b :c1381;
+ :b :c1382;
+ :b :c1383;
+ :b :c1384;
+ :b :c1385;
+ :b :c1386;
+ :b :c1387;
+ :b :c1388;
+ :b :c1389;
+ :b :c1390;
+ :b :c1391;
+ :b :c1392;
+ :b :c1393;
+ :b :c1394;
+ :b :c1395;
+ :b :c1396;
+ :b :c1397;
+ :b :c1398;
+ :b :c1399;
+ :b :c1400;
+ :b :c1401;
+ :b :c1402;
+ :b :c1403;
+ :b :c1404;
+ :b :c1405;
+ :b :c1406;
+ :b :c1407;
+ :b :c1408;
+ :b :c1409;
+ :b :c1410;
+ :b :c1411;
+ :b :c1412;
+ :b :c1413;
+ :b :c1414;
+ :b :c1415;
+ :b :c1416;
+ :b :c1417;
+ :b :c1418;
+ :b :c1419;
+ :b :c1420;
+ :b :c1421;
+ :b :c1422;
+ :b :c1423;
+ :b :c1424;
+ :b :c1425;
+ :b :c1426;
+ :b :c1427;
+ :b :c1428;
+ :b :c1429;
+ :b :c1430;
+ :b :c1431;
+ :b :c1432;
+ :b :c1433;
+ :b :c1434;
+ :b :c1435;
+ :b :c1436;
+ :b :c1437;
+ :b :c1438;
+ :b :c1439;
+ :b :c1440;
+ :b :c1441;
+ :b :c1442;
+ :b :c1443;
+ :b :c1444;
+ :b :c1445;
+ :b :c1446;
+ :b :c1447;
+ :b :c1448;
+ :b :c1449;
+ :b :c1450;
+ :b :c1451;
+ :b :c1452;
+ :b :c1453;
+ :b :c1454;
+ :b :c1455;
+ :b :c1456;
+ :b :c1457;
+ :b :c1458;
+ :b :c1459;
+ :b :c1460;
+ :b :c1461;
+ :b :c1462;
+ :b :c1463;
+ :b :c1464;
+ :b :c1465;
+ :b :c1466;
+ :b :c1467;
+ :b :c1468;
+ :b :c1469;
+ :b :c1470;
+ :b :c1471;
+ :b :c1472;
+ :b :c1473;
+ :b :c1474;
+ :b :c1475;
+ :b :c1476;
+ :b :c1477;
+ :b :c1478;
+ :b :c1479;
+ :b :c1480;
+ :b :c1481;
+ :b :c1482;
+ :b :c1483;
+ :b :c1484;
+ :b :c1485;
+ :b :c1486;
+ :b :c1487;
+ :b :c1488;
+ :b :c1489;
+ :b :c1490;
+ :b :c1491;
+ :b :c1492;
+ :b :c1493;
+ :b :c1494;
+ :b :c1495;
+ :b :c1496;
+ :b :c1497;
+ :b :c1498;
+ :b :c1499;
+ :b :c1500;
+ :b :c1501;
+ :b :c1502;
+ :b :c1503;
+ :b :c1504;
+ :b :c1505;
+ :b :c1506;
+ :b :c1507;
+ :b :c1508;
+ :b :c1509;
+ :b :c1510;
+ :b :c1511;
+ :b :c1512;
+ :b :c1513;
+ :b :c1514;
+ :b :c1515;
+ :b :c1516;
+ :b :c1517;
+ :b :c1518;
+ :b :c1519;
+ :b :c1520;
+ :b :c1521;
+ :b :c1522;
+ :b :c1523;
+ :b :c1524;
+ :b :c1525;
+ :b :c1526;
+ :b :c1527;
+ :b :c1528;
+ :b :c1529;
+ :b :c1530;
+ :b :c1531;
+ :b :c1532;
+ :b :c1533;
+ :b :c1534;
+ :b :c1535;
+ :b :c1536;
+ :b :c1537;
+ :b :c1538;
+ :b :c1539;
+ :b :c1540;
+ :b :c1541;
+ :b :c1542;
+ :b :c1543;
+ :b :c1544;
+ :b :c1545;
+ :b :c1546;
+ :b :c1547;
+ :b :c1548;
+ :b :c1549;
+ :b :c1550;
+ :b :c1551;
+ :b :c1552;
+ :b :c1553;
+ :b :c1554;
+ :b :c1555;
+ :b :c1556;
+ :b :c1557;
+ :b :c1558;
+ :b :c1559;
+ :b :c1560;
+ :b :c1561;
+ :b :c1562;
+ :b :c1563;
+ :b :c1564;
+ :b :c1565;
+ :b :c1566;
+ :b :c1567;
+ :b :c1568;
+ :b :c1569;
+ :b :c1570;
+ :b :c1571;
+ :b :c1572;
+ :b :c1573;
+ :b :c1574;
+ :b :c1575;
+ :b :c1576;
+ :b :c1577;
+ :b :c1578;
+ :b :c1579;
+ :b :c1580;
+ :b :c1581;
+ :b :c1582;
+ :b :c1583;
+ :b :c1584;
+ :b :c1585;
+ :b :c1586;
+ :b :c1587;
+ :b :c1588;
+ :b :c1589;
+ :b :c1590;
+ :b :c1591;
+ :b :c1592;
+ :b :c1593;
+ :b :c1594;
+ :b :c1595;
+ :b :c1596;
+ :b :c1597;
+ :b :c1598;
+ :b :c1599;
+ :b :c1600;
+ :b :c1601;
+ :b :c1602;
+ :b :c1603;
+ :b :c1604;
+ :b :c1605;
+ :b :c1606;
+ :b :c1607;
+ :b :c1608;
+ :b :c1609;
+ :b :c1610;
+ :b :c1611;
+ :b :c1612;
+ :b :c1613;
+ :b :c1614;
+ :b :c1615;
+ :b :c1616;
+ :b :c1617;
+ :b :c1618;
+ :b :c1619;
+ :b :c1620;
+ :b :c1621;
+ :b :c1622;
+ :b :c1623;
+ :b :c1624;
+ :b :c1625;
+ :b :c1626;
+ :b :c1627;
+ :b :c1628;
+ :b :c1629;
+ :b :c1630;
+ :b :c1631;
+ :b :c1632;
+ :b :c1633;
+ :b :c1634;
+ :b :c1635;
+ :b :c1636;
+ :b :c1637;
+ :b :c1638;
+ :b :c1639;
+ :b :c1640;
+ :b :c1641;
+ :b :c1642;
+ :b :c1643;
+ :b :c1644;
+ :b :c1645;
+ :b :c1646;
+ :b :c1647;
+ :b :c1648;
+ :b :c1649;
+ :b :c1650;
+ :b :c1651;
+ :b :c1652;
+ :b :c1653;
+ :b :c1654;
+ :b :c1655;
+ :b :c1656;
+ :b :c1657;
+ :b :c1658;
+ :b :c1659;
+ :b :c1660;
+ :b :c1661;
+ :b :c1662;
+ :b :c1663;
+ :b :c1664;
+ :b :c1665;
+ :b :c1666;
+ :b :c1667;
+ :b :c1668;
+ :b :c1669;
+ :b :c1670;
+ :b :c1671;
+ :b :c1672;
+ :b :c1673;
+ :b :c1674;
+ :b :c1675;
+ :b :c1676;
+ :b :c1677;
+ :b :c1678;
+ :b :c1679;
+ :b :c1680;
+ :b :c1681;
+ :b :c1682;
+ :b :c1683;
+ :b :c1684;
+ :b :c1685;
+ :b :c1686;
+ :b :c1687;
+ :b :c1688;
+ :b :c1689;
+ :b :c1690;
+ :b :c1691;
+ :b :c1692;
+ :b :c1693;
+ :b :c1694;
+ :b :c1695;
+ :b :c1696;
+ :b :c1697;
+ :b :c1698;
+ :b :c1699;
+ :b :c1700;
+ :b :c1701;
+ :b :c1702;
+ :b :c1703;
+ :b :c1704;
+ :b :c1705;
+ :b :c1706;
+ :b :c1707;
+ :b :c1708;
+ :b :c1709;
+ :b :c1710;
+ :b :c1711;
+ :b :c1712;
+ :b :c1713;
+ :b :c1714;
+ :b :c1715;
+ :b :c1716;
+ :b :c1717;
+ :b :c1718;
+ :b :c1719;
+ :b :c1720;
+ :b :c1721;
+ :b :c1722;
+ :b :c1723;
+ :b :c1724;
+ :b :c1725;
+ :b :c1726;
+ :b :c1727;
+ :b :c1728;
+ :b :c1729;
+ :b :c1730;
+ :b :c1731;
+ :b :c1732;
+ :b :c1733;
+ :b :c1734;
+ :b :c1735;
+ :b :c1736;
+ :b :c1737;
+ :b :c1738;
+ :b :c1739;
+ :b :c1740;
+ :b :c1741;
+ :b :c1742;
+ :b :c1743;
+ :b :c1744;
+ :b :c1745;
+ :b :c1746;
+ :b :c1747;
+ :b :c1748;
+ :b :c1749;
+ :b :c1750;
+ :b :c1751;
+ :b :c1752;
+ :b :c1753;
+ :b :c1754;
+ :b :c1755;
+ :b :c1756;
+ :b :c1757;
+ :b :c1758;
+ :b :c1759;
+ :b :c1760;
+ :b :c1761;
+ :b :c1762;
+ :b :c1763;
+ :b :c1764;
+ :b :c1765;
+ :b :c1766;
+ :b :c1767;
+ :b :c1768;
+ :b :c1769;
+ :b :c1770;
+ :b :c1771;
+ :b :c1772;
+ :b :c1773;
+ :b :c1774;
+ :b :c1775;
+ :b :c1776;
+ :b :c1777;
+ :b :c1778;
+ :b :c1779;
+ :b :c1780;
+ :b :c1781;
+ :b :c1782;
+ :b :c1783;
+ :b :c1784;
+ :b :c1785;
+ :b :c1786;
+ :b :c1787;
+ :b :c1788;
+ :b :c1789;
+ :b :c1790;
+ :b :c1791;
+ :b :c1792;
+ :b :c1793;
+ :b :c1794;
+ :b :c1795;
+ :b :c1796;
+ :b :c1797;
+ :b :c1798;
+ :b :c1799;
+ :b :c1800;
+ :b :c1801;
+ :b :c1802;
+ :b :c1803;
+ :b :c1804;
+ :b :c1805;
+ :b :c1806;
+ :b :c1807;
+ :b :c1808;
+ :b :c1809;
+ :b :c1810;
+ :b :c1811;
+ :b :c1812;
+ :b :c1813;
+ :b :c1814;
+ :b :c1815;
+ :b :c1816;
+ :b :c1817;
+ :b :c1818;
+ :b :c1819;
+ :b :c1820;
+ :b :c1821;
+ :b :c1822;
+ :b :c1823;
+ :b :c1824;
+ :b :c1825;
+ :b :c1826;
+ :b :c1827;
+ :b :c1828;
+ :b :c1829;
+ :b :c1830;
+ :b :c1831;
+ :b :c1832;
+ :b :c1833;
+ :b :c1834;
+ :b :c1835;
+ :b :c1836;
+ :b :c1837;
+ :b :c1838;
+ :b :c1839;
+ :b :c1840;
+ :b :c1841;
+ :b :c1842;
+ :b :c1843;
+ :b :c1844;
+ :b :c1845;
+ :b :c1846;
+ :b :c1847;
+ :b :c1848;
+ :b :c1849;
+ :b :c1850;
+ :b :c1851;
+ :b :c1852;
+ :b :c1853;
+ :b :c1854;
+ :b :c1855;
+ :b :c1856;
+ :b :c1857;
+ :b :c1858;
+ :b :c1859;
+ :b :c1860;
+ :b :c1861;
+ :b :c1862;
+ :b :c1863;
+ :b :c1864;
+ :b :c1865;
+ :b :c1866;
+ :b :c1867;
+ :b :c1868;
+ :b :c1869;
+ :b :c1870;
+ :b :c1871;
+ :b :c1872;
+ :b :c1873;
+ :b :c1874;
+ :b :c1875;
+ :b :c1876;
+ :b :c1877;
+ :b :c1878;
+ :b :c1879;
+ :b :c1880;
+ :b :c1881;
+ :b :c1882;
+ :b :c1883;
+ :b :c1884;
+ :b :c1885;
+ :b :c1886;
+ :b :c1887;
+ :b :c1888;
+ :b :c1889;
+ :b :c1890;
+ :b :c1891;
+ :b :c1892;
+ :b :c1893;
+ :b :c1894;
+ :b :c1895;
+ :b :c1896;
+ :b :c1897;
+ :b :c1898;
+ :b :c1899;
+ :b :c1900;
+ :b :c1901;
+ :b :c1902;
+ :b :c1903;
+ :b :c1904;
+ :b :c1905;
+ :b :c1906;
+ :b :c1907;
+ :b :c1908;
+ :b :c1909;
+ :b :c1910;
+ :b :c1911;
+ :b :c1912;
+ :b :c1913;
+ :b :c1914;
+ :b :c1915;
+ :b :c1916;
+ :b :c1917;
+ :b :c1918;
+ :b :c1919;
+ :b :c1920;
+ :b :c1921;
+ :b :c1922;
+ :b :c1923;
+ :b :c1924;
+ :b :c1925;
+ :b :c1926;
+ :b :c1927;
+ :b :c1928;
+ :b :c1929;
+ :b :c1930;
+ :b :c1931;
+ :b :c1932;
+ :b :c1933;
+ :b :c1934;
+ :b :c1935;
+ :b :c1936;
+ :b :c1937;
+ :b :c1938;
+ :b :c1939;
+ :b :c1940;
+ :b :c1941;
+ :b :c1942;
+ :b :c1943;
+ :b :c1944;
+ :b :c1945;
+ :b :c1946;
+ :b :c1947;
+ :b :c1948;
+ :b :c1949;
+ :b :c1950;
+ :b :c1951;
+ :b :c1952;
+ :b :c1953;
+ :b :c1954;
+ :b :c1955;
+ :b :c1956;
+ :b :c1957;
+ :b :c1958;
+ :b :c1959;
+ :b :c1960;
+ :b :c1961;
+ :b :c1962;
+ :b :c1963;
+ :b :c1964;
+ :b :c1965;
+ :b :c1966;
+ :b :c1967;
+ :b :c1968;
+ :b :c1969;
+ :b :c1970;
+ :b :c1971;
+ :b :c1972;
+ :b :c1973;
+ :b :c1974;
+ :b :c1975;
+ :b :c1976;
+ :b :c1977;
+ :b :c1978;
+ :b :c1979;
+ :b :c1980;
+ :b :c1981;
+ :b :c1982;
+ :b :c1983;
+ :b :c1984;
+ :b :c1985;
+ :b :c1986;
+ :b :c1987;
+ :b :c1988;
+ :b :c1989;
+ :b :c1990;
+ :b :c1991;
+ :b :c1992;
+ :b :c1993;
+ :b :c1994;
+ :b :c1995;
+ :b :c1996;
+ :b :c1997;
+ :b :c1998;
+ :b :c1999;
+ :b :c2000;
+ :b :c2001;
+ :b :c2002;
+ :b :c2003;
+ :b :c2004;
+ :b :c2005;
+ :b :c2006;
+ :b :c2007;
+ :b :c2008;
+ :b :c2009;
+ :b :c2010;
+ :b :c2011;
+ :b :c2012;
+ :b :c2013;
+ :b :c2014;
+ :b :c2015;
+ :b :c2016;
+ :b :c2017;
+ :b :c2018;
+ :b :c2019;
+ :b :c2020;
+ :b :c2021;
+ :b :c2022;
+ :b :c2023;
+ :b :c2024;
+ :b :c2025;
+ :b :c2026;
+ :b :c2027;
+ :b :c2028;
+ :b :c2029;
+ :b :c2030;
+ :b :c2031;
+ :b :c2032;
+ :b :c2033;
+ :b :c2034;
+ :b :c2035;
+ :b :c2036;
+ :b :c2037;
+ :b :c2038;
+ :b :c2039;
+ :b :c2040;
+ :b :c2041;
+ :b :c2042;
+ :b :c2043;
+ :b :c2044;
+ :b :c2045;
+ :b :c2046;
+ :b :c2047;
+ :b :c2048;
+ :b :c2049;
+ :b :c2050;
+ :b :c2051;
+ :b :c2052;
+ :b :c2053;
+ :b :c2054;
+ :b :c2055;
+ :b :c2056;
+ :b :c2057;
+ :b :c2058;
+ :b :c2059;
+ :b :c2060;
+ :b :c2061;
+ :b :c2062;
+ :b :c2063;
+ :b :c2064;
+ :b :c2065;
+ :b :c2066;
+ :b :c2067;
+ :b :c2068;
+ :b :c2069;
+ :b :c2070;
+ :b :c2071;
+ :b :c2072;
+ :b :c2073;
+ :b :c2074;
+ :b :c2075;
+ :b :c2076;
+ :b :c2077;
+ :b :c2078;
+ :b :c2079;
+ :b :c2080;
+ :b :c2081;
+ :b :c2082;
+ :b :c2083;
+ :b :c2084;
+ :b :c2085;
+ :b :c2086;
+ :b :c2087;
+ :b :c2088;
+ :b :c2089;
+ :b :c2090;
+ :b :c2091;
+ :b :c2092;
+ :b :c2093;
+ :b :c2094;
+ :b :c2095;
+ :b :c2096;
+ :b :c2097;
+ :b :c2098;
+ :b :c2099;
+ :b :c2100;
+ :b :c2101;
+ :b :c2102;
+ :b :c2103;
+ :b :c2104;
+ :b :c2105;
+ :b :c2106;
+ :b :c2107;
+ :b :c2108;
+ :b :c2109;
+ :b :c2110;
+ :b :c2111;
+ :b :c2112;
+ :b :c2113;
+ :b :c2114;
+ :b :c2115;
+ :b :c2116;
+ :b :c2117;
+ :b :c2118;
+ :b :c2119;
+ :b :c2120;
+ :b :c2121;
+ :b :c2122;
+ :b :c2123;
+ :b :c2124;
+ :b :c2125;
+ :b :c2126;
+ :b :c2127;
+ :b :c2128;
+ :b :c2129;
+ :b :c2130;
+ :b :c2131;
+ :b :c2132;
+ :b :c2133;
+ :b :c2134;
+ :b :c2135;
+ :b :c2136;
+ :b :c2137;
+ :b :c2138;
+ :b :c2139;
+ :b :c2140;
+ :b :c2141;
+ :b :c2142;
+ :b :c2143;
+ :b :c2144;
+ :b :c2145;
+ :b :c2146;
+ :b :c2147;
+ :b :c2148;
+ :b :c2149;
+ :b :c2150;
+ :b :c2151;
+ :b :c2152;
+ :b :c2153;
+ :b :c2154;
+ :b :c2155;
+ :b :c2156;
+ :b :c2157;
+ :b :c2158;
+ :b :c2159;
+ :b :c2160;
+ :b :c2161;
+ :b :c2162;
+ :b :c2163;
+ :b :c2164;
+ :b :c2165;
+ :b :c2166;
+ :b :c2167;
+ :b :c2168;
+ :b :c2169;
+ :b :c2170;
+ :b :c2171;
+ :b :c2172;
+ :b :c2173;
+ :b :c2174;
+ :b :c2175;
+ :b :c2176;
+ :b :c2177;
+ :b :c2178;
+ :b :c2179;
+ :b :c2180;
+ :b :c2181;
+ :b :c2182;
+ :b :c2183;
+ :b :c2184;
+ :b :c2185;
+ :b :c2186;
+ :b :c2187;
+ :b :c2188;
+ :b :c2189;
+ :b :c2190;
+ :b :c2191;
+ :b :c2192;
+ :b :c2193;
+ :b :c2194;
+ :b :c2195;
+ :b :c2196;
+ :b :c2197;
+ :b :c2198;
+ :b :c2199;
+ :b :c2200;
+ :b :c2201;
+ :b :c2202;
+ :b :c2203;
+ :b :c2204;
+ :b :c2205;
+ :b :c2206;
+ :b :c2207;
+ :b :c2208;
+ :b :c2209;
+ :b :c2210;
+ :b :c2211;
+ :b :c2212;
+ :b :c2213;
+ :b :c2214;
+ :b :c2215;
+ :b :c2216;
+ :b :c2217;
+ :b :c2218;
+ :b :c2219;
+ :b :c2220;
+ :b :c2221;
+ :b :c2222;
+ :b :c2223;
+ :b :c2224;
+ :b :c2225;
+ :b :c2226;
+ :b :c2227;
+ :b :c2228;
+ :b :c2229;
+ :b :c2230;
+ :b :c2231;
+ :b :c2232;
+ :b :c2233;
+ :b :c2234;
+ :b :c2235;
+ :b :c2236;
+ :b :c2237;
+ :b :c2238;
+ :b :c2239;
+ :b :c2240;
+ :b :c2241;
+ :b :c2242;
+ :b :c2243;
+ :b :c2244;
+ :b :c2245;
+ :b :c2246;
+ :b :c2247;
+ :b :c2248;
+ :b :c2249;
+ :b :c2250;
+ :b :c2251;
+ :b :c2252;
+ :b :c2253;
+ :b :c2254;
+ :b :c2255;
+ :b :c2256;
+ :b :c2257;
+ :b :c2258;
+ :b :c2259;
+ :b :c2260;
+ :b :c2261;
+ :b :c2262;
+ :b :c2263;
+ :b :c2264;
+ :b :c2265;
+ :b :c2266;
+ :b :c2267;
+ :b :c2268;
+ :b :c2269;
+ :b :c2270;
+ :b :c2271;
+ :b :c2272;
+ :b :c2273;
+ :b :c2274;
+ :b :c2275;
+ :b :c2276;
+ :b :c2277;
+ :b :c2278;
+ :b :c2279;
+ :b :c2280;
+ :b :c2281;
+ :b :c2282;
+ :b :c2283;
+ :b :c2284;
+ :b :c2285;
+ :b :c2286;
+ :b :c2287;
+ :b :c2288;
+ :b :c2289;
+ :b :c2290;
+ :b :c2291;
+ :b :c2292;
+ :b :c2293;
+ :b :c2294;
+ :b :c2295;
+ :b :c2296;
+ :b :c2297;
+ :b :c2298;
+ :b :c2299;
+ :b :c2300;
+ :b :c2301;
+ :b :c2302;
+ :b :c2303;
+ :b :c2304;
+ :b :c2305;
+ :b :c2306;
+ :b :c2307;
+ :b :c2308;
+ :b :c2309;
+ :b :c2310;
+ :b :c2311;
+ :b :c2312;
+ :b :c2313;
+ :b :c2314;
+ :b :c2315;
+ :b :c2316;
+ :b :c2317;
+ :b :c2318;
+ :b :c2319;
+ :b :c2320;
+ :b :c2321;
+ :b :c2322;
+ :b :c2323;
+ :b :c2324;
+ :b :c2325;
+ :b :c2326;
+ :b :c2327;
+ :b :c2328;
+ :b :c2329;
+ :b :c2330;
+ :b :c2331;
+ :b :c2332;
+ :b :c2333;
+ :b :c2334;
+ :b :c2335;
+ :b :c2336;
+ :b :c2337;
+ :b :c2338;
+ :b :c2339;
+ :b :c2340;
+ :b :c2341;
+ :b :c2342;
+ :b :c2343;
+ :b :c2344;
+ :b :c2345;
+ :b :c2346;
+ :b :c2347;
+ :b :c2348;
+ :b :c2349;
+ :b :c2350;
+ :b :c2351;
+ :b :c2352;
+ :b :c2353;
+ :b :c2354;
+ :b :c2355;
+ :b :c2356;
+ :b :c2357;
+ :b :c2358;
+ :b :c2359;
+ :b :c2360;
+ :b :c2361;
+ :b :c2362;
+ :b :c2363;
+ :b :c2364;
+ :b :c2365;
+ :b :c2366;
+ :b :c2367;
+ :b :c2368;
+ :b :c2369;
+ :b :c2370;
+ :b :c2371;
+ :b :c2372;
+ :b :c2373;
+ :b :c2374;
+ :b :c2375;
+ :b :c2376;
+ :b :c2377;
+ :b :c2378;
+ :b :c2379;
+ :b :c2380;
+ :b :c2381;
+ :b :c2382;
+ :b :c2383;
+ :b :c2384;
+ :b :c2385;
+ :b :c2386;
+ :b :c2387;
+ :b :c2388;
+ :b :c2389;
+ :b :c2390;
+ :b :c2391;
+ :b :c2392;
+ :b :c2393;
+ :b :c2394;
+ :b :c2395;
+ :b :c2396;
+ :b :c2397;
+ :b :c2398;
+ :b :c2399;
+ :b :c2400;
+ :b :c2401;
+ :b :c2402;
+ :b :c2403;
+ :b :c2404;
+ :b :c2405;
+ :b :c2406;
+ :b :c2407;
+ :b :c2408;
+ :b :c2409;
+ :b :c2410;
+ :b :c2411;
+ :b :c2412;
+ :b :c2413;
+ :b :c2414;
+ :b :c2415;
+ :b :c2416;
+ :b :c2417;
+ :b :c2418;
+ :b :c2419;
+ :b :c2420;
+ :b :c2421;
+ :b :c2422;
+ :b :c2423;
+ :b :c2424;
+ :b :c2425;
+ :b :c2426;
+ :b :c2427;
+ :b :c2428;
+ :b :c2429;
+ :b :c2430;
+ :b :c2431;
+ :b :c2432;
+ :b :c2433;
+ :b :c2434;
+ :b :c2435;
+ :b :c2436;
+ :b :c2437;
+ :b :c2438;
+ :b :c2439;
+ :b :c2440;
+ :b :c2441;
+ :b :c2442;
+ :b :c2443;
+ :b :c2444;
+ :b :c2445;
+ :b :c2446;
+ :b :c2447;
+ :b :c2448;
+ :b :c2449;
+ :b :c2450;
+ :b :c2451;
+ :b :c2452;
+ :b :c2453;
+ :b :c2454;
+ :b :c2455;
+ :b :c2456;
+ :b :c2457;
+ :b :c2458;
+ :b :c2459;
+ :b :c2460;
+ :b :c2461;
+ :b :c2462;
+ :b :c2463;
+ :b :c2464;
+ :b :c2465;
+ :b :c2466;
+ :b :c2467;
+ :b :c2468;
+ :b :c2469;
+ :b :c2470;
+ :b :c2471;
+ :b :c2472;
+ :b :c2473;
+ :b :c2474;
+ :b :c2475;
+ :b :c2476;
+ :b :c2477;
+ :b :c2478;
+ :b :c2479;
+ :b :c2480;
+ :b :c2481;
+ :b :c2482;
+ :b :c2483;
+ :b :c2484;
+ :b :c2485;
+ :b :c2486;
+ :b :c2487;
+ :b :c2488;
+ :b :c2489;
+ :b :c2490;
+ :b :c2491;
+ :b :c2492;
+ :b :c2493;
+ :b :c2494;
+ :b :c2495;
+ :b :c2496;
+ :b :c2497;
+ :b :c2498;
+ :b :c2499;
+ :b :c2500;
+ :b :c2501;
+ :b :c2502;
+ :b :c2503;
+ :b :c2504;
+ :b :c2505;
+ :b :c2506;
+ :b :c2507;
+ :b :c2508;
+ :b :c2509;
+ :b :c2510;
+ :b :c2511;
+ :b :c2512;
+ :b :c2513;
+ :b :c2514;
+ :b :c2515;
+ :b :c2516;
+ :b :c2517;
+ :b :c2518;
+ :b :c2519;
+ :b :c2520;
+ :b :c2521;
+ :b :c2522;
+ :b :c2523;
+ :b :c2524;
+ :b :c2525;
+ :b :c2526;
+ :b :c2527;
+ :b :c2528;
+ :b :c2529;
+ :b :c2530;
+ :b :c2531;
+ :b :c2532;
+ :b :c2533;
+ :b :c2534;
+ :b :c2535;
+ :b :c2536;
+ :b :c2537;
+ :b :c2538;
+ :b :c2539;
+ :b :c2540;
+ :b :c2541;
+ :b :c2542;
+ :b :c2543;
+ :b :c2544;
+ :b :c2545;
+ :b :c2546;
+ :b :c2547;
+ :b :c2548;
+ :b :c2549;
+ :b :c2550;
+ :b :c2551;
+ :b :c2552;
+ :b :c2553;
+ :b :c2554;
+ :b :c2555;
+ :b :c2556;
+ :b :c2557;
+ :b :c2558;
+ :b :c2559;
+ :b :c2560;
+ :b :c2561;
+ :b :c2562;
+ :b :c2563;
+ :b :c2564;
+ :b :c2565;
+ :b :c2566;
+ :b :c2567;
+ :b :c2568;
+ :b :c2569;
+ :b :c2570;
+ :b :c2571;
+ :b :c2572;
+ :b :c2573;
+ :b :c2574;
+ :b :c2575;
+ :b :c2576;
+ :b :c2577;
+ :b :c2578;
+ :b :c2579;
+ :b :c2580;
+ :b :c2581;
+ :b :c2582;
+ :b :c2583;
+ :b :c2584;
+ :b :c2585;
+ :b :c2586;
+ :b :c2587;
+ :b :c2588;
+ :b :c2589;
+ :b :c2590;
+ :b :c2591;
+ :b :c2592;
+ :b :c2593;
+ :b :c2594;
+ :b :c2595;
+ :b :c2596;
+ :b :c2597;
+ :b :c2598;
+ :b :c2599;
+ :b :c2600;
+ :b :c2601;
+ :b :c2602;
+ :b :c2603;
+ :b :c2604;
+ :b :c2605;
+ :b :c2606;
+ :b :c2607;
+ :b :c2608;
+ :b :c2609;
+ :b :c2610;
+ :b :c2611;
+ :b :c2612;
+ :b :c2613;
+ :b :c2614;
+ :b :c2615;
+ :b :c2616;
+ :b :c2617;
+ :b :c2618;
+ :b :c2619;
+ :b :c2620;
+ :b :c2621;
+ :b :c2622;
+ :b :c2623;
+ :b :c2624;
+ :b :c2625;
+ :b :c2626;
+ :b :c2627;
+ :b :c2628;
+ :b :c2629;
+ :b :c2630;
+ :b :c2631;
+ :b :c2632;
+ :b :c2633;
+ :b :c2634;
+ :b :c2635;
+ :b :c2636;
+ :b :c2637;
+ :b :c2638;
+ :b :c2639;
+ :b :c2640;
+ :b :c2641;
+ :b :c2642;
+ :b :c2643;
+ :b :c2644;
+ :b :c2645;
+ :b :c2646;
+ :b :c2647;
+ :b :c2648;
+ :b :c2649;
+ :b :c2650;
+ :b :c2651;
+ :b :c2652;
+ :b :c2653;
+ :b :c2654;
+ :b :c2655;
+ :b :c2656;
+ :b :c2657;
+ :b :c2658;
+ :b :c2659;
+ :b :c2660;
+ :b :c2661;
+ :b :c2662;
+ :b :c2663;
+ :b :c2664;
+ :b :c2665;
+ :b :c2666;
+ :b :c2667;
+ :b :c2668;
+ :b :c2669;
+ :b :c2670;
+ :b :c2671;
+ :b :c2672;
+ :b :c2673;
+ :b :c2674;
+ :b :c2675;
+ :b :c2676;
+ :b :c2677;
+ :b :c2678;
+ :b :c2679;
+ :b :c2680;
+ :b :c2681;
+ :b :c2682;
+ :b :c2683;
+ :b :c2684;
+ :b :c2685;
+ :b :c2686;
+ :b :c2687;
+ :b :c2688;
+ :b :c2689;
+ :b :c2690;
+ :b :c2691;
+ :b :c2692;
+ :b :c2693;
+ :b :c2694;
+ :b :c2695;
+ :b :c2696;
+ :b :c2697;
+ :b :c2698;
+ :b :c2699;
+ :b :c2700;
+ :b :c2701;
+ :b :c2702;
+ :b :c2703;
+ :b :c2704;
+ :b :c2705;
+ :b :c2706;
+ :b :c2707;
+ :b :c2708;
+ :b :c2709;
+ :b :c2710;
+ :b :c2711;
+ :b :c2712;
+ :b :c2713;
+ :b :c2714;
+ :b :c2715;
+ :b :c2716;
+ :b :c2717;
+ :b :c2718;
+ :b :c2719;
+ :b :c2720;
+ :b :c2721;
+ :b :c2722;
+ :b :c2723;
+ :b :c2724;
+ :b :c2725;
+ :b :c2726;
+ :b :c2727;
+ :b :c2728;
+ :b :c2729;
+ :b :c2730;
+ :b :c2731;
+ :b :c2732;
+ :b :c2733;
+ :b :c2734;
+ :b :c2735;
+ :b :c2736;
+ :b :c2737;
+ :b :c2738;
+ :b :c2739;
+ :b :c2740;
+ :b :c2741;
+ :b :c2742;
+ :b :c2743;
+ :b :c2744;
+ :b :c2745;
+ :b :c2746;
+ :b :c2747;
+ :b :c2748;
+ :b :c2749;
+ :b :c2750;
+ :b :c2751;
+ :b :c2752;
+ :b :c2753;
+ :b :c2754;
+ :b :c2755;
+ :b :c2756;
+ :b :c2757;
+ :b :c2758;
+ :b :c2759;
+ :b :c2760;
+ :b :c2761;
+ :b :c2762;
+ :b :c2763;
+ :b :c2764;
+ :b :c2765;
+ :b :c2766;
+ :b :c2767;
+ :b :c2768;
+ :b :c2769;
+ :b :c2770;
+ :b :c2771;
+ :b :c2772;
+ :b :c2773;
+ :b :c2774;
+ :b :c2775;
+ :b :c2776;
+ :b :c2777;
+ :b :c2778;
+ :b :c2779;
+ :b :c2780;
+ :b :c2781;
+ :b :c2782;
+ :b :c2783;
+ :b :c2784;
+ :b :c2785;
+ :b :c2786;
+ :b :c2787;
+ :b :c2788;
+ :b :c2789;
+ :b :c2790;
+ :b :c2791;
+ :b :c2792;
+ :b :c2793;
+ :b :c2794;
+ :b :c2795;
+ :b :c2796;
+ :b :c2797;
+ :b :c2798;
+ :b :c2799;
+ :b :c2800;
+ :b :c2801;
+ :b :c2802;
+ :b :c2803;
+ :b :c2804;
+ :b :c2805;
+ :b :c2806;
+ :b :c2807;
+ :b :c2808;
+ :b :c2809;
+ :b :c2810;
+ :b :c2811;
+ :b :c2812;
+ :b :c2813;
+ :b :c2814;
+ :b :c2815;
+ :b :c2816;
+ :b :c2817;
+ :b :c2818;
+ :b :c2819;
+ :b :c2820;
+ :b :c2821;
+ :b :c2822;
+ :b :c2823;
+ :b :c2824;
+ :b :c2825;
+ :b :c2826;
+ :b :c2827;
+ :b :c2828;
+ :b :c2829;
+ :b :c2830;
+ :b :c2831;
+ :b :c2832;
+ :b :c2833;
+ :b :c2834;
+ :b :c2835;
+ :b :c2836;
+ :b :c2837;
+ :b :c2838;
+ :b :c2839;
+ :b :c2840;
+ :b :c2841;
+ :b :c2842;
+ :b :c2843;
+ :b :c2844;
+ :b :c2845;
+ :b :c2846;
+ :b :c2847;
+ :b :c2848;
+ :b :c2849;
+ :b :c2850;
+ :b :c2851;
+ :b :c2852;
+ :b :c2853;
+ :b :c2854;
+ :b :c2855;
+ :b :c2856;
+ :b :c2857;
+ :b :c2858;
+ :b :c2859;
+ :b :c2860;
+ :b :c2861;
+ :b :c2862;
+ :b :c2863;
+ :b :c2864;
+ :b :c2865;
+ :b :c2866;
+ :b :c2867;
+ :b :c2868;
+ :b :c2869;
+ :b :c2870;
+ :b :c2871;
+ :b :c2872;
+ :b :c2873;
+ :b :c2874;
+ :b :c2875;
+ :b :c2876;
+ :b :c2877;
+ :b :c2878;
+ :b :c2879;
+ :b :c2880;
+ :b :c2881;
+ :b :c2882;
+ :b :c2883;
+ :b :c2884;
+ :b :c2885;
+ :b :c2886;
+ :b :c2887;
+ :b :c2888;
+ :b :c2889;
+ :b :c2890;
+ :b :c2891;
+ :b :c2892;
+ :b :c2893;
+ :b :c2894;
+ :b :c2895;
+ :b :c2896;
+ :b :c2897;
+ :b :c2898;
+ :b :c2899;
+ :b :c2900;
+ :b :c2901;
+ :b :c2902;
+ :b :c2903;
+ :b :c2904;
+ :b :c2905;
+ :b :c2906;
+ :b :c2907;
+ :b :c2908;
+ :b :c2909;
+ :b :c2910;
+ :b :c2911;
+ :b :c2912;
+ :b :c2913;
+ :b :c2914;
+ :b :c2915;
+ :b :c2916;
+ :b :c2917;
+ :b :c2918;
+ :b :c2919;
+ :b :c2920;
+ :b :c2921;
+ :b :c2922;
+ :b :c2923;
+ :b :c2924;
+ :b :c2925;
+ :b :c2926;
+ :b :c2927;
+ :b :c2928;
+ :b :c2929;
+ :b :c2930;
+ :b :c2931;
+ :b :c2932;
+ :b :c2933;
+ :b :c2934;
+ :b :c2935;
+ :b :c2936;
+ :b :c2937;
+ :b :c2938;
+ :b :c2939;
+ :b :c2940;
+ :b :c2941;
+ :b :c2942;
+ :b :c2943;
+ :b :c2944;
+ :b :c2945;
+ :b :c2946;
+ :b :c2947;
+ :b :c2948;
+ :b :c2949;
+ :b :c2950;
+ :b :c2951;
+ :b :c2952;
+ :b :c2953;
+ :b :c2954;
+ :b :c2955;
+ :b :c2956;
+ :b :c2957;
+ :b :c2958;
+ :b :c2959;
+ :b :c2960;
+ :b :c2961;
+ :b :c2962;
+ :b :c2963;
+ :b :c2964;
+ :b :c2965;
+ :b :c2966;
+ :b :c2967;
+ :b :c2968;
+ :b :c2969;
+ :b :c2970;
+ :b :c2971;
+ :b :c2972;
+ :b :c2973;
+ :b :c2974;
+ :b :c2975;
+ :b :c2976;
+ :b :c2977;
+ :b :c2978;
+ :b :c2979;
+ :b :c2980;
+ :b :c2981;
+ :b :c2982;
+ :b :c2983;
+ :b :c2984;
+ :b :c2985;
+ :b :c2986;
+ :b :c2987;
+ :b :c2988;
+ :b :c2989;
+ :b :c2990;
+ :b :c2991;
+ :b :c2992;
+ :b :c2993;
+ :b :c2994;
+ :b :c2995;
+ :b :c2996;
+ :b :c2997;
+ :b :c2998;
+ :b :c2999;
+ :b :c3000;
+ :b :c3001;
+ :b :c3002;
+ :b :c3003;
+ :b :c3004;
+ :b :c3005;
+ :b :c3006;
+ :b :c3007;
+ :b :c3008;
+ :b :c3009;
+ :b :c3010;
+ :b :c3011;
+ :b :c3012;
+ :b :c3013;
+ :b :c3014;
+ :b :c3015;
+ :b :c3016;
+ :b :c3017;
+ :b :c3018;
+ :b :c3019;
+ :b :c3020;
+ :b :c3021;
+ :b :c3022;
+ :b :c3023;
+ :b :c3024;
+ :b :c3025;
+ :b :c3026;
+ :b :c3027;
+ :b :c3028;
+ :b :c3029;
+ :b :c3030;
+ :b :c3031;
+ :b :c3032;
+ :b :c3033;
+ :b :c3034;
+ :b :c3035;
+ :b :c3036;
+ :b :c3037;
+ :b :c3038;
+ :b :c3039;
+ :b :c3040;
+ :b :c3041;
+ :b :c3042;
+ :b :c3043;
+ :b :c3044;
+ :b :c3045;
+ :b :c3046;
+ :b :c3047;
+ :b :c3048;
+ :b :c3049;
+ :b :c3050;
+ :b :c3051;
+ :b :c3052;
+ :b :c3053;
+ :b :c3054;
+ :b :c3055;
+ :b :c3056;
+ :b :c3057;
+ :b :c3058;
+ :b :c3059;
+ :b :c3060;
+ :b :c3061;
+ :b :c3062;
+ :b :c3063;
+ :b :c3064;
+ :b :c3065;
+ :b :c3066;
+ :b :c3067;
+ :b :c3068;
+ :b :c3069;
+ :b :c3070;
+ :b :c3071;
+ :b :c3072;
+ :b :c3073;
+ :b :c3074;
+ :b :c3075;
+ :b :c3076;
+ :b :c3077;
+ :b :c3078;
+ :b :c3079;
+ :b :c3080;
+ :b :c3081;
+ :b :c3082;
+ :b :c3083;
+ :b :c3084;
+ :b :c3085;
+ :b :c3086;
+ :b :c3087;
+ :b :c3088;
+ :b :c3089;
+ :b :c3090;
+ :b :c3091;
+ :b :c3092;
+ :b :c3093;
+ :b :c3094;
+ :b :c3095;
+ :b :c3096;
+ :b :c3097;
+ :b :c3098;
+ :b :c3099;
+ :b :c3100;
+ :b :c3101;
+ :b :c3102;
+ :b :c3103;
+ :b :c3104;
+ :b :c3105;
+ :b :c3106;
+ :b :c3107;
+ :b :c3108;
+ :b :c3109;
+ :b :c3110;
+ :b :c3111;
+ :b :c3112;
+ :b :c3113;
+ :b :c3114;
+ :b :c3115;
+ :b :c3116;
+ :b :c3117;
+ :b :c3118;
+ :b :c3119;
+ :b :c3120;
+ :b :c3121;
+ :b :c3122;
+ :b :c3123;
+ :b :c3124;
+ :b :c3125;
+ :b :c3126;
+ :b :c3127;
+ :b :c3128;
+ :b :c3129;
+ :b :c3130;
+ :b :c3131;
+ :b :c3132;
+ :b :c3133;
+ :b :c3134;
+ :b :c3135;
+ :b :c3136;
+ :b :c3137;
+ :b :c3138;
+ :b :c3139;
+ :b :c3140;
+ :b :c3141;
+ :b :c3142;
+ :b :c3143;
+ :b :c3144;
+ :b :c3145;
+ :b :c3146;
+ :b :c3147;
+ :b :c3148;
+ :b :c3149;
+ :b :c3150;
+ :b :c3151;
+ :b :c3152;
+ :b :c3153;
+ :b :c3154;
+ :b :c3155;
+ :b :c3156;
+ :b :c3157;
+ :b :c3158;
+ :b :c3159;
+ :b :c3160;
+ :b :c3161;
+ :b :c3162;
+ :b :c3163;
+ :b :c3164;
+ :b :c3165;
+ :b :c3166;
+ :b :c3167;
+ :b :c3168;
+ :b :c3169;
+ :b :c3170;
+ :b :c3171;
+ :b :c3172;
+ :b :c3173;
+ :b :c3174;
+ :b :c3175;
+ :b :c3176;
+ :b :c3177;
+ :b :c3178;
+ :b :c3179;
+ :b :c3180;
+ :b :c3181;
+ :b :c3182;
+ :b :c3183;
+ :b :c3184;
+ :b :c3185;
+ :b :c3186;
+ :b :c3187;
+ :b :c3188;
+ :b :c3189;
+ :b :c3190;
+ :b :c3191;
+ :b :c3192;
+ :b :c3193;
+ :b :c3194;
+ :b :c3195;
+ :b :c3196;
+ :b :c3197;
+ :b :c3198;
+ :b :c3199;
+ :b :c3200;
+ :b :c3201;
+ :b :c3202;
+ :b :c3203;
+ :b :c3204;
+ :b :c3205;
+ :b :c3206;
+ :b :c3207;
+ :b :c3208;
+ :b :c3209;
+ :b :c3210;
+ :b :c3211;
+ :b :c3212;
+ :b :c3213;
+ :b :c3214;
+ :b :c3215;
+ :b :c3216;
+ :b :c3217;
+ :b :c3218;
+ :b :c3219;
+ :b :c3220;
+ :b :c3221;
+ :b :c3222;
+ :b :c3223;
+ :b :c3224;
+ :b :c3225;
+ :b :c3226;
+ :b :c3227;
+ :b :c3228;
+ :b :c3229;
+ :b :c3230;
+ :b :c3231;
+ :b :c3232;
+ :b :c3233;
+ :b :c3234;
+ :b :c3235;
+ :b :c3236;
+ :b :c3237;
+ :b :c3238;
+ :b :c3239;
+ :b :c3240;
+ :b :c3241;
+ :b :c3242;
+ :b :c3243;
+ :b :c3244;
+ :b :c3245;
+ :b :c3246;
+ :b :c3247;
+ :b :c3248;
+ :b :c3249;
+ :b :c3250;
+ :b :c3251;
+ :b :c3252;
+ :b :c3253;
+ :b :c3254;
+ :b :c3255;
+ :b :c3256;
+ :b :c3257;
+ :b :c3258;
+ :b :c3259;
+ :b :c3260;
+ :b :c3261;
+ :b :c3262;
+ :b :c3263;
+ :b :c3264;
+ :b :c3265;
+ :b :c3266;
+ :b :c3267;
+ :b :c3268;
+ :b :c3269;
+ :b :c3270;
+ :b :c3271;
+ :b :c3272;
+ :b :c3273;
+ :b :c3274;
+ :b :c3275;
+ :b :c3276;
+ :b :c3277;
+ :b :c3278;
+ :b :c3279;
+ :b :c3280;
+ :b :c3281;
+ :b :c3282;
+ :b :c3283;
+ :b :c3284;
+ :b :c3285;
+ :b :c3286;
+ :b :c3287;
+ :b :c3288;
+ :b :c3289;
+ :b :c3290;
+ :b :c3291;
+ :b :c3292;
+ :b :c3293;
+ :b :c3294;
+ :b :c3295;
+ :b :c3296;
+ :b :c3297;
+ :b :c3298;
+ :b :c3299;
+ :b :c3300;
+ :b :c3301;
+ :b :c3302;
+ :b :c3303;
+ :b :c3304;
+ :b :c3305;
+ :b :c3306;
+ :b :c3307;
+ :b :c3308;
+ :b :c3309;
+ :b :c3310;
+ :b :c3311;
+ :b :c3312;
+ :b :c3313;
+ :b :c3314;
+ :b :c3315;
+ :b :c3316;
+ :b :c3317;
+ :b :c3318;
+ :b :c3319;
+ :b :c3320;
+ :b :c3321;
+ :b :c3322;
+ :b :c3323;
+ :b :c3324;
+ :b :c3325;
+ :b :c3326;
+ :b :c3327;
+ :b :c3328;
+ :b :c3329;
+ :b :c3330;
+ :b :c3331;
+ :b :c3332;
+ :b :c3333;
+ :b :c3334;
+ :b :c3335;
+ :b :c3336;
+ :b :c3337;
+ :b :c3338;
+ :b :c3339;
+ :b :c3340;
+ :b :c3341;
+ :b :c3342;
+ :b :c3343;
+ :b :c3344;
+ :b :c3345;
+ :b :c3346;
+ :b :c3347;
+ :b :c3348;
+ :b :c3349;
+ :b :c3350;
+ :b :c3351;
+ :b :c3352;
+ :b :c3353;
+ :b :c3354;
+ :b :c3355;
+ :b :c3356;
+ :b :c3357;
+ :b :c3358;
+ :b :c3359;
+ :b :c3360;
+ :b :c3361;
+ :b :c3362;
+ :b :c3363;
+ :b :c3364;
+ :b :c3365;
+ :b :c3366;
+ :b :c3367;
+ :b :c3368;
+ :b :c3369;
+ :b :c3370;
+ :b :c3371;
+ :b :c3372;
+ :b :c3373;
+ :b :c3374;
+ :b :c3375;
+ :b :c3376;
+ :b :c3377;
+ :b :c3378;
+ :b :c3379;
+ :b :c3380;
+ :b :c3381;
+ :b :c3382;
+ :b :c3383;
+ :b :c3384;
+ :b :c3385;
+ :b :c3386;
+ :b :c3387;
+ :b :c3388;
+ :b :c3389;
+ :b :c3390;
+ :b :c3391;
+ :b :c3392;
+ :b :c3393;
+ :b :c3394;
+ :b :c3395;
+ :b :c3396;
+ :b :c3397;
+ :b :c3398;
+ :b :c3399;
+ :b :c3400;
+ :b :c3401;
+ :b :c3402;
+ :b :c3403;
+ :b :c3404;
+ :b :c3405;
+ :b :c3406;
+ :b :c3407;
+ :b :c3408;
+ :b :c3409;
+ :b :c3410;
+ :b :c3411;
+ :b :c3412;
+ :b :c3413;
+ :b :c3414;
+ :b :c3415;
+ :b :c3416;
+ :b :c3417;
+ :b :c3418;
+ :b :c3419;
+ :b :c3420;
+ :b :c3421;
+ :b :c3422;
+ :b :c3423;
+ :b :c3424;
+ :b :c3425;
+ :b :c3426;
+ :b :c3427;
+ :b :c3428;
+ :b :c3429;
+ :b :c3430;
+ :b :c3431;
+ :b :c3432;
+ :b :c3433;
+ :b :c3434;
+ :b :c3435;
+ :b :c3436;
+ :b :c3437;
+ :b :c3438;
+ :b :c3439;
+ :b :c3440;
+ :b :c3441;
+ :b :c3442;
+ :b :c3443;
+ :b :c3444;
+ :b :c3445;
+ :b :c3446;
+ :b :c3447;
+ :b :c3448;
+ :b :c3449;
+ :b :c3450;
+ :b :c3451;
+ :b :c3452;
+ :b :c3453;
+ :b :c3454;
+ :b :c3455;
+ :b :c3456;
+ :b :c3457;
+ :b :c3458;
+ :b :c3459;
+ :b :c3460;
+ :b :c3461;
+ :b :c3462;
+ :b :c3463;
+ :b :c3464;
+ :b :c3465;
+ :b :c3466;
+ :b :c3467;
+ :b :c3468;
+ :b :c3469;
+ :b :c3470;
+ :b :c3471;
+ :b :c3472;
+ :b :c3473;
+ :b :c3474;
+ :b :c3475;
+ :b :c3476;
+ :b :c3477;
+ :b :c3478;
+ :b :c3479;
+ :b :c3480;
+ :b :c3481;
+ :b :c3482;
+ :b :c3483;
+ :b :c3484;
+ :b :c3485;
+ :b :c3486;
+ :b :c3487;
+ :b :c3488;
+ :b :c3489;
+ :b :c3490;
+ :b :c3491;
+ :b :c3492;
+ :b :c3493;
+ :b :c3494;
+ :b :c3495;
+ :b :c3496;
+ :b :c3497;
+ :b :c3498;
+ :b :c3499;
+ :b :c3500;
+ :b :c3501;
+ :b :c3502;
+ :b :c3503;
+ :b :c3504;
+ :b :c3505;
+ :b :c3506;
+ :b :c3507;
+ :b :c3508;
+ :b :c3509;
+ :b :c3510;
+ :b :c3511;
+ :b :c3512;
+ :b :c3513;
+ :b :c3514;
+ :b :c3515;
+ :b :c3516;
+ :b :c3517;
+ :b :c3518;
+ :b :c3519;
+ :b :c3520;
+ :b :c3521;
+ :b :c3522;
+ :b :c3523;
+ :b :c3524;
+ :b :c3525;
+ :b :c3526;
+ :b :c3527;
+ :b :c3528;
+ :b :c3529;
+ :b :c3530;
+ :b :c3531;
+ :b :c3532;
+ :b :c3533;
+ :b :c3534;
+ :b :c3535;
+ :b :c3536;
+ :b :c3537;
+ :b :c3538;
+ :b :c3539;
+ :b :c3540;
+ :b :c3541;
+ :b :c3542;
+ :b :c3543;
+ :b :c3544;
+ :b :c3545;
+ :b :c3546;
+ :b :c3547;
+ :b :c3548;
+ :b :c3549;
+ :b :c3550;
+ :b :c3551;
+ :b :c3552;
+ :b :c3553;
+ :b :c3554;
+ :b :c3555;
+ :b :c3556;
+ :b :c3557;
+ :b :c3558;
+ :b :c3559;
+ :b :c3560;
+ :b :c3561;
+ :b :c3562;
+ :b :c3563;
+ :b :c3564;
+ :b :c3565;
+ :b :c3566;
+ :b :c3567;
+ :b :c3568;
+ :b :c3569;
+ :b :c3570;
+ :b :c3571;
+ :b :c3572;
+ :b :c3573;
+ :b :c3574;
+ :b :c3575;
+ :b :c3576;
+ :b :c3577;
+ :b :c3578;
+ :b :c3579;
+ :b :c3580;
+ :b :c3581;
+ :b :c3582;
+ :b :c3583;
+ :b :c3584;
+ :b :c3585;
+ :b :c3586;
+ :b :c3587;
+ :b :c3588;
+ :b :c3589;
+ :b :c3590;
+ :b :c3591;
+ :b :c3592;
+ :b :c3593;
+ :b :c3594;
+ :b :c3595;
+ :b :c3596;
+ :b :c3597;
+ :b :c3598;
+ :b :c3599;
+ :b :c3600;
+ :b :c3601;
+ :b :c3602;
+ :b :c3603;
+ :b :c3604;
+ :b :c3605;
+ :b :c3606;
+ :b :c3607;
+ :b :c3608;
+ :b :c3609;
+ :b :c3610;
+ :b :c3611;
+ :b :c3612;
+ :b :c3613;
+ :b :c3614;
+ :b :c3615;
+ :b :c3616;
+ :b :c3617;
+ :b :c3618;
+ :b :c3619;
+ :b :c3620;
+ :b :c3621;
+ :b :c3622;
+ :b :c3623;
+ :b :c3624;
+ :b :c3625;
+ :b :c3626;
+ :b :c3627;
+ :b :c3628;
+ :b :c3629;
+ :b :c3630;
+ :b :c3631;
+ :b :c3632;
+ :b :c3633;
+ :b :c3634;
+ :b :c3635;
+ :b :c3636;
+ :b :c3637;
+ :b :c3638;
+ :b :c3639;
+ :b :c3640;
+ :b :c3641;
+ :b :c3642;
+ :b :c3643;
+ :b :c3644;
+ :b :c3645;
+ :b :c3646;
+ :b :c3647;
+ :b :c3648;
+ :b :c3649;
+ :b :c3650;
+ :b :c3651;
+ :b :c3652;
+ :b :c3653;
+ :b :c3654;
+ :b :c3655;
+ :b :c3656;
+ :b :c3657;
+ :b :c3658;
+ :b :c3659;
+ :b :c3660;
+ :b :c3661;
+ :b :c3662;
+ :b :c3663;
+ :b :c3664;
+ :b :c3665;
+ :b :c3666;
+ :b :c3667;
+ :b :c3668;
+ :b :c3669;
+ :b :c3670;
+ :b :c3671;
+ :b :c3672;
+ :b :c3673;
+ :b :c3674;
+ :b :c3675;
+ :b :c3676;
+ :b :c3677;
+ :b :c3678;
+ :b :c3679;
+ :b :c3680;
+ :b :c3681;
+ :b :c3682;
+ :b :c3683;
+ :b :c3684;
+ :b :c3685;
+ :b :c3686;
+ :b :c3687;
+ :b :c3688;
+ :b :c3689;
+ :b :c3690;
+ :b :c3691;
+ :b :c3692;
+ :b :c3693;
+ :b :c3694;
+ :b :c3695;
+ :b :c3696;
+ :b :c3697;
+ :b :c3698;
+ :b :c3699;
+ :b :c3700;
+ :b :c3701;
+ :b :c3702;
+ :b :c3703;
+ :b :c3704;
+ :b :c3705;
+ :b :c3706;
+ :b :c3707;
+ :b :c3708;
+ :b :c3709;
+ :b :c3710;
+ :b :c3711;
+ :b :c3712;
+ :b :c3713;
+ :b :c3714;
+ :b :c3715;
+ :b :c3716;
+ :b :c3717;
+ :b :c3718;
+ :b :c3719;
+ :b :c3720;
+ :b :c3721;
+ :b :c3722;
+ :b :c3723;
+ :b :c3724;
+ :b :c3725;
+ :b :c3726;
+ :b :c3727;
+ :b :c3728;
+ :b :c3729;
+ :b :c3730;
+ :b :c3731;
+ :b :c3732;
+ :b :c3733;
+ :b :c3734;
+ :b :c3735;
+ :b :c3736;
+ :b :c3737;
+ :b :c3738;
+ :b :c3739;
+ :b :c3740;
+ :b :c3741;
+ :b :c3742;
+ :b :c3743;
+ :b :c3744;
+ :b :c3745;
+ :b :c3746;
+ :b :c3747;
+ :b :c3748;
+ :b :c3749;
+ :b :c3750;
+ :b :c3751;
+ :b :c3752;
+ :b :c3753;
+ :b :c3754;
+ :b :c3755;
+ :b :c3756;
+ :b :c3757;
+ :b :c3758;
+ :b :c3759;
+ :b :c3760;
+ :b :c3761;
+ :b :c3762;
+ :b :c3763;
+ :b :c3764;
+ :b :c3765;
+ :b :c3766;
+ :b :c3767;
+ :b :c3768;
+ :b :c3769;
+ :b :c3770;
+ :b :c3771;
+ :b :c3772;
+ :b :c3773;
+ :b :c3774;
+ :b :c3775;
+ :b :c3776;
+ :b :c3777;
+ :b :c3778;
+ :b :c3779;
+ :b :c3780;
+ :b :c3781;
+ :b :c3782;
+ :b :c3783;
+ :b :c3784;
+ :b :c3785;
+ :b :c3786;
+ :b :c3787;
+ :b :c3788;
+ :b :c3789;
+ :b :c3790;
+ :b :c3791;
+ :b :c3792;
+ :b :c3793;
+ :b :c3794;
+ :b :c3795;
+ :b :c3796;
+ :b :c3797;
+ :b :c3798;
+ :b :c3799;
+ :b :c3800;
+ :b :c3801;
+ :b :c3802;
+ :b :c3803;
+ :b :c3804;
+ :b :c3805;
+ :b :c3806;
+ :b :c3807;
+ :b :c3808;
+ :b :c3809;
+ :b :c3810;
+ :b :c3811;
+ :b :c3812;
+ :b :c3813;
+ :b :c3814;
+ :b :c3815;
+ :b :c3816;
+ :b :c3817;
+ :b :c3818;
+ :b :c3819;
+ :b :c3820;
+ :b :c3821;
+ :b :c3822;
+ :b :c3823;
+ :b :c3824;
+ :b :c3825;
+ :b :c3826;
+ :b :c3827;
+ :b :c3828;
+ :b :c3829;
+ :b :c3830;
+ :b :c3831;
+ :b :c3832;
+ :b :c3833;
+ :b :c3834;
+ :b :c3835;
+ :b :c3836;
+ :b :c3837;
+ :b :c3838;
+ :b :c3839;
+ :b :c3840;
+ :b :c3841;
+ :b :c3842;
+ :b :c3843;
+ :b :c3844;
+ :b :c3845;
+ :b :c3846;
+ :b :c3847;
+ :b :c3848;
+ :b :c3849;
+ :b :c3850;
+ :b :c3851;
+ :b :c3852;
+ :b :c3853;
+ :b :c3854;
+ :b :c3855;
+ :b :c3856;
+ :b :c3857;
+ :b :c3858;
+ :b :c3859;
+ :b :c3860;
+ :b :c3861;
+ :b :c3862;
+ :b :c3863;
+ :b :c3864;
+ :b :c3865;
+ :b :c3866;
+ :b :c3867;
+ :b :c3868;
+ :b :c3869;
+ :b :c3870;
+ :b :c3871;
+ :b :c3872;
+ :b :c3873;
+ :b :c3874;
+ :b :c3875;
+ :b :c3876;
+ :b :c3877;
+ :b :c3878;
+ :b :c3879;
+ :b :c3880;
+ :b :c3881;
+ :b :c3882;
+ :b :c3883;
+ :b :c3884;
+ :b :c3885;
+ :b :c3886;
+ :b :c3887;
+ :b :c3888;
+ :b :c3889;
+ :b :c3890;
+ :b :c3891;
+ :b :c3892;
+ :b :c3893;
+ :b :c3894;
+ :b :c3895;
+ :b :c3896;
+ :b :c3897;
+ :b :c3898;
+ :b :c3899;
+ :b :c3900;
+ :b :c3901;
+ :b :c3902;
+ :b :c3903;
+ :b :c3904;
+ :b :c3905;
+ :b :c3906;
+ :b :c3907;
+ :b :c3908;
+ :b :c3909;
+ :b :c3910;
+ :b :c3911;
+ :b :c3912;
+ :b :c3913;
+ :b :c3914;
+ :b :c3915;
+ :b :c3916;
+ :b :c3917;
+ :b :c3918;
+ :b :c3919;
+ :b :c3920;
+ :b :c3921;
+ :b :c3922;
+ :b :c3923;
+ :b :c3924;
+ :b :c3925;
+ :b :c3926;
+ :b :c3927;
+ :b :c3928;
+ :b :c3929;
+ :b :c3930;
+ :b :c3931;
+ :b :c3932;
+ :b :c3933;
+ :b :c3934;
+ :b :c3935;
+ :b :c3936;
+ :b :c3937;
+ :b :c3938;
+ :b :c3939;
+ :b :c3940;
+ :b :c3941;
+ :b :c3942;
+ :b :c3943;
+ :b :c3944;
+ :b :c3945;
+ :b :c3946;
+ :b :c3947;
+ :b :c3948;
+ :b :c3949;
+ :b :c3950;
+ :b :c3951;
+ :b :c3952;
+ :b :c3953;
+ :b :c3954;
+ :b :c3955;
+ :b :c3956;
+ :b :c3957;
+ :b :c3958;
+ :b :c3959;
+ :b :c3960;
+ :b :c3961;
+ :b :c3962;
+ :b :c3963;
+ :b :c3964;
+ :b :c3965;
+ :b :c3966;
+ :b :c3967;
+ :b :c3968;
+ :b :c3969;
+ :b :c3970;
+ :b :c3971;
+ :b :c3972;
+ :b :c3973;
+ :b :c3974;
+ :b :c3975;
+ :b :c3976;
+ :b :c3977;
+ :b :c3978;
+ :b :c3979;
+ :b :c3980;
+ :b :c3981;
+ :b :c3982;
+ :b :c3983;
+ :b :c3984;
+ :b :c3985;
+ :b :c3986;
+ :b :c3987;
+ :b :c3988;
+ :b :c3989;
+ :b :c3990;
+ :b :c3991;
+ :b :c3992;
+ :b :c3993;
+ :b :c3994;
+ :b :c3995;
+ :b :c3996;
+ :b :c3997;
+ :b :c3998;
+ :b :c3999;
+ :b :c4000;
+ :b :c4001;
+ :b :c4002;
+ :b :c4003;
+ :b :c4004;
+ :b :c4005;
+ :b :c4006;
+ :b :c4007;
+ :b :c4008;
+ :b :c4009;
+ :b :c4010;
+ :b :c4011;
+ :b :c4012;
+ :b :c4013;
+ :b :c4014;
+ :b :c4015;
+ :b :c4016;
+ :b :c4017;
+ :b :c4018;
+ :b :c4019;
+ :b :c4020;
+ :b :c4021;
+ :b :c4022;
+ :b :c4023;
+ :b :c4024;
+ :b :c4025;
+ :b :c4026;
+ :b :c4027;
+ :b :c4028;
+ :b :c4029;
+ :b :c4030;
+ :b :c4031;
+ :b :c4032;
+ :b :c4033;
+ :b :c4034;
+ :b :c4035;
+ :b :c4036;
+ :b :c4037;
+ :b :c4038;
+ :b :c4039;
+ :b :c4040;
+ :b :c4041;
+ :b :c4042;
+ :b :c4043;
+ :b :c4044;
+ :b :c4045;
+ :b :c4046;
+ :b :c4047;
+ :b :c4048;
+ :b :c4049;
+ :b :c4050;
+ :b :c4051;
+ :b :c4052;
+ :b :c4053;
+ :b :c4054;
+ :b :c4055;
+ :b :c4056;
+ :b :c4057;
+ :b :c4058;
+ :b :c4059;
+ :b :c4060;
+ :b :c4061;
+ :b :c4062;
+ :b :c4063;
+ :b :c4064;
+ :b :c4065;
+ :b :c4066;
+ :b :c4067;
+ :b :c4068;
+ :b :c4069;
+ :b :c4070;
+ :b :c4071;
+ :b :c4072;
+ :b :c4073;
+ :b :c4074;
+ :b :c4075;
+ :b :c4076;
+ :b :c4077;
+ :b :c4078;
+ :b :c4079;
+ :b :c4080;
+ :b :c4081;
+ :b :c4082;
+ :b :c4083;
+ :b :c4084;
+ :b :c4085;
+ :b :c4086;
+ :b :c4087;
+ :b :c4088;
+ :b :c4089;
+ :b :c4090;
+ :b :c4091;
+ :b :c4092;
+ :b :c4093;
+ :b :c4094;
+ :b :c4095;
+ :b :c4096;
+ :b :c4097;
+ :b :c4098;
+ :b :c4099;
+ :b :c4100;
+ :b :c4101;
+ :b :c4102;
+ :b :c4103;
+ :b :c4104;
+ :b :c4105;
+ :b :c4106;
+ :b :c4107;
+ :b :c4108;
+ :b :c4109;
+ :b :c4110;
+ :b :c4111;
+ :b :c4112;
+ :b :c4113;
+ :b :c4114;
+ :b :c4115;
+ :b :c4116;
+ :b :c4117;
+ :b :c4118;
+ :b :c4119;
+ :b :c4120;
+ :b :c4121;
+ :b :c4122;
+ :b :c4123;
+ :b :c4124;
+ :b :c4125;
+ :b :c4126;
+ :b :c4127;
+ :b :c4128;
+ :b :c4129;
+ :b :c4130;
+ :b :c4131;
+ :b :c4132;
+ :b :c4133;
+ :b :c4134;
+ :b :c4135;
+ :b :c4136;
+ :b :c4137;
+ :b :c4138;
+ :b :c4139;
+ :b :c4140;
+ :b :c4141;
+ :b :c4142;
+ :b :c4143;
+ :b :c4144;
+ :b :c4145;
+ :b :c4146;
+ :b :c4147;
+ :b :c4148;
+ :b :c4149;
+ :b :c4150;
+ :b :c4151;
+ :b :c4152;
+ :b :c4153;
+ :b :c4154;
+ :b :c4155;
+ :b :c4156;
+ :b :c4157;
+ :b :c4158;
+ :b :c4159;
+ :b :c4160;
+ :b :c4161;
+ :b :c4162;
+ :b :c4163;
+ :b :c4164;
+ :b :c4165;
+ :b :c4166;
+ :b :c4167;
+ :b :c4168;
+ :b :c4169;
+ :b :c4170;
+ :b :c4171;
+ :b :c4172;
+ :b :c4173;
+ :b :c4174;
+ :b :c4175;
+ :b :c4176;
+ :b :c4177;
+ :b :c4178;
+ :b :c4179;
+ :b :c4180;
+ :b :c4181;
+ :b :c4182;
+ :b :c4183;
+ :b :c4184;
+ :b :c4185;
+ :b :c4186;
+ :b :c4187;
+ :b :c4188;
+ :b :c4189;
+ :b :c4190;
+ :b :c4191;
+ :b :c4192;
+ :b :c4193;
+ :b :c4194;
+ :b :c4195;
+ :b :c4196;
+ :b :c4197;
+ :b :c4198;
+ :b :c4199;
+ :b :c4200;
+ :b :c4201;
+ :b :c4202;
+ :b :c4203;
+ :b :c4204;
+ :b :c4205;
+ :b :c4206;
+ :b :c4207;
+ :b :c4208;
+ :b :c4209;
+ :b :c4210;
+ :b :c4211;
+ :b :c4212;
+ :b :c4213;
+ :b :c4214;
+ :b :c4215;
+ :b :c4216;
+ :b :c4217;
+ :b :c4218;
+ :b :c4219;
+ :b :c4220;
+ :b :c4221;
+ :b :c4222;
+ :b :c4223;
+ :b :c4224;
+ :b :c4225;
+ :b :c4226;
+ :b :c4227;
+ :b :c4228;
+ :b :c4229;
+ :b :c4230;
+ :b :c4231;
+ :b :c4232;
+ :b :c4233;
+ :b :c4234;
+ :b :c4235;
+ :b :c4236;
+ :b :c4237;
+ :b :c4238;
+ :b :c4239;
+ :b :c4240;
+ :b :c4241;
+ :b :c4242;
+ :b :c4243;
+ :b :c4244;
+ :b :c4245;
+ :b :c4246;
+ :b :c4247;
+ :b :c4248;
+ :b :c4249;
+ :b :c4250;
+ :b :c4251;
+ :b :c4252;
+ :b :c4253;
+ :b :c4254;
+ :b :c4255;
+ :b :c4256;
+ :b :c4257;
+ :b :c4258;
+ :b :c4259;
+ :b :c4260;
+ :b :c4261;
+ :b :c4262;
+ :b :c4263;
+ :b :c4264;
+ :b :c4265;
+ :b :c4266;
+ :b :c4267;
+ :b :c4268;
+ :b :c4269;
+ :b :c4270;
+ :b :c4271;
+ :b :c4272;
+ :b :c4273;
+ :b :c4274;
+ :b :c4275;
+ :b :c4276;
+ :b :c4277;
+ :b :c4278;
+ :b :c4279;
+ :b :c4280;
+ :b :c4281;
+ :b :c4282;
+ :b :c4283;
+ :b :c4284;
+ :b :c4285;
+ :b :c4286;
+ :b :c4287;
+ :b :c4288;
+ :b :c4289;
+ :b :c4290;
+ :b :c4291;
+ :b :c4292;
+ :b :c4293;
+ :b :c4294;
+ :b :c4295;
+ :b :c4296;
+ :b :c4297;
+ :b :c4298;
+ :b :c4299;
+ :b :c4300;
+ :b :c4301;
+ :b :c4302;
+ :b :c4303;
+ :b :c4304;
+ :b :c4305;
+ :b :c4306;
+ :b :c4307;
+ :b :c4308;
+ :b :c4309;
+ :b :c4310;
+ :b :c4311;
+ :b :c4312;
+ :b :c4313;
+ :b :c4314;
+ :b :c4315;
+ :b :c4316;
+ :b :c4317;
+ :b :c4318;
+ :b :c4319;
+ :b :c4320;
+ :b :c4321;
+ :b :c4322;
+ :b :c4323;
+ :b :c4324;
+ :b :c4325;
+ :b :c4326;
+ :b :c4327;
+ :b :c4328;
+ :b :c4329;
+ :b :c4330;
+ :b :c4331;
+ :b :c4332;
+ :b :c4333;
+ :b :c4334;
+ :b :c4335;
+ :b :c4336;
+ :b :c4337;
+ :b :c4338;
+ :b :c4339;
+ :b :c4340;
+ :b :c4341;
+ :b :c4342;
+ :b :c4343;
+ :b :c4344;
+ :b :c4345;
+ :b :c4346;
+ :b :c4347;
+ :b :c4348;
+ :b :c4349;
+ :b :c4350;
+ :b :c4351;
+ :b :c4352;
+ :b :c4353;
+ :b :c4354;
+ :b :c4355;
+ :b :c4356;
+ :b :c4357;
+ :b :c4358;
+ :b :c4359;
+ :b :c4360;
+ :b :c4361;
+ :b :c4362;
+ :b :c4363;
+ :b :c4364;
+ :b :c4365;
+ :b :c4366;
+ :b :c4367;
+ :b :c4368;
+ :b :c4369;
+ :b :c4370;
+ :b :c4371;
+ :b :c4372;
+ :b :c4373;
+ :b :c4374;
+ :b :c4375;
+ :b :c4376;
+ :b :c4377;
+ :b :c4378;
+ :b :c4379;
+ :b :c4380;
+ :b :c4381;
+ :b :c4382;
+ :b :c4383;
+ :b :c4384;
+ :b :c4385;
+ :b :c4386;
+ :b :c4387;
+ :b :c4388;
+ :b :c4389;
+ :b :c4390;
+ :b :c4391;
+ :b :c4392;
+ :b :c4393;
+ :b :c4394;
+ :b :c4395;
+ :b :c4396;
+ :b :c4397;
+ :b :c4398;
+ :b :c4399;
+ :b :c4400;
+ :b :c4401;
+ :b :c4402;
+ :b :c4403;
+ :b :c4404;
+ :b :c4405;
+ :b :c4406;
+ :b :c4407;
+ :b :c4408;
+ :b :c4409;
+ :b :c4410;
+ :b :c4411;
+ :b :c4412;
+ :b :c4413;
+ :b :c4414;
+ :b :c4415;
+ :b :c4416;
+ :b :c4417;
+ :b :c4418;
+ :b :c4419;
+ :b :c4420;
+ :b :c4421;
+ :b :c4422;
+ :b :c4423;
+ :b :c4424;
+ :b :c4425;
+ :b :c4426;
+ :b :c4427;
+ :b :c4428;
+ :b :c4429;
+ :b :c4430;
+ :b :c4431;
+ :b :c4432;
+ :b :c4433;
+ :b :c4434;
+ :b :c4435;
+ :b :c4436;
+ :b :c4437;
+ :b :c4438;
+ :b :c4439;
+ :b :c4440;
+ :b :c4441;
+ :b :c4442;
+ :b :c4443;
+ :b :c4444;
+ :b :c4445;
+ :b :c4446;
+ :b :c4447;
+ :b :c4448;
+ :b :c4449;
+ :b :c4450;
+ :b :c4451;
+ :b :c4452;
+ :b :c4453;
+ :b :c4454;
+ :b :c4455;
+ :b :c4456;
+ :b :c4457;
+ :b :c4458;
+ :b :c4459;
+ :b :c4460;
+ :b :c4461;
+ :b :c4462;
+ :b :c4463;
+ :b :c4464;
+ :b :c4465;
+ :b :c4466;
+ :b :c4467;
+ :b :c4468;
+ :b :c4469;
+ :b :c4470;
+ :b :c4471;
+ :b :c4472;
+ :b :c4473;
+ :b :c4474;
+ :b :c4475;
+ :b :c4476;
+ :b :c4477;
+ :b :c4478;
+ :b :c4479;
+ :b :c4480;
+ :b :c4481;
+ :b :c4482;
+ :b :c4483;
+ :b :c4484;
+ :b :c4485;
+ :b :c4486;
+ :b :c4487;
+ :b :c4488;
+ :b :c4489;
+ :b :c4490;
+ :b :c4491;
+ :b :c4492;
+ :b :c4493;
+ :b :c4494;
+ :b :c4495;
+ :b :c4496;
+ :b :c4497;
+ :b :c4498;
+ :b :c4499;
+ :b :c4500;
+ :b :c4501;
+ :b :c4502;
+ :b :c4503;
+ :b :c4504;
+ :b :c4505;
+ :b :c4506;
+ :b :c4507;
+ :b :c4508;
+ :b :c4509;
+ :b :c4510;
+ :b :c4511;
+ :b :c4512;
+ :b :c4513;
+ :b :c4514;
+ :b :c4515;
+ :b :c4516;
+ :b :c4517;
+ :b :c4518;
+ :b :c4519;
+ :b :c4520;
+ :b :c4521;
+ :b :c4522;
+ :b :c4523;
+ :b :c4524;
+ :b :c4525;
+ :b :c4526;
+ :b :c4527;
+ :b :c4528;
+ :b :c4529;
+ :b :c4530;
+ :b :c4531;
+ :b :c4532;
+ :b :c4533;
+ :b :c4534;
+ :b :c4535;
+ :b :c4536;
+ :b :c4537;
+ :b :c4538;
+ :b :c4539;
+ :b :c4540;
+ :b :c4541;
+ :b :c4542;
+ :b :c4543;
+ :b :c4544;
+ :b :c4545;
+ :b :c4546;
+ :b :c4547;
+ :b :c4548;
+ :b :c4549;
+ :b :c4550;
+ :b :c4551;
+ :b :c4552;
+ :b :c4553;
+ :b :c4554;
+ :b :c4555;
+ :b :c4556;
+ :b :c4557;
+ :b :c4558;
+ :b :c4559;
+ :b :c4560;
+ :b :c4561;
+ :b :c4562;
+ :b :c4563;
+ :b :c4564;
+ :b :c4565;
+ :b :c4566;
+ :b :c4567;
+ :b :c4568;
+ :b :c4569;
+ :b :c4570;
+ :b :c4571;
+ :b :c4572;
+ :b :c4573;
+ :b :c4574;
+ :b :c4575;
+ :b :c4576;
+ :b :c4577;
+ :b :c4578;
+ :b :c4579;
+ :b :c4580;
+ :b :c4581;
+ :b :c4582;
+ :b :c4583;
+ :b :c4584;
+ :b :c4585;
+ :b :c4586;
+ :b :c4587;
+ :b :c4588;
+ :b :c4589;
+ :b :c4590;
+ :b :c4591;
+ :b :c4592;
+ :b :c4593;
+ :b :c4594;
+ :b :c4595;
+ :b :c4596;
+ :b :c4597;
+ :b :c4598;
+ :b :c4599;
+ :b :c4600;
+ :b :c4601;
+ :b :c4602;
+ :b :c4603;
+ :b :c4604;
+ :b :c4605;
+ :b :c4606;
+ :b :c4607;
+ :b :c4608;
+ :b :c4609;
+ :b :c4610;
+ :b :c4611;
+ :b :c4612;
+ :b :c4613;
+ :b :c4614;
+ :b :c4615;
+ :b :c4616;
+ :b :c4617;
+ :b :c4618;
+ :b :c4619;
+ :b :c4620;
+ :b :c4621;
+ :b :c4622;
+ :b :c4623;
+ :b :c4624;
+ :b :c4625;
+ :b :c4626;
+ :b :c4627;
+ :b :c4628;
+ :b :c4629;
+ :b :c4630;
+ :b :c4631;
+ :b :c4632;
+ :b :c4633;
+ :b :c4634;
+ :b :c4635;
+ :b :c4636;
+ :b :c4637;
+ :b :c4638;
+ :b :c4639;
+ :b :c4640;
+ :b :c4641;
+ :b :c4642;
+ :b :c4643;
+ :b :c4644;
+ :b :c4645;
+ :b :c4646;
+ :b :c4647;
+ :b :c4648;
+ :b :c4649;
+ :b :c4650;
+ :b :c4651;
+ :b :c4652;
+ :b :c4653;
+ :b :c4654;
+ :b :c4655;
+ :b :c4656;
+ :b :c4657;
+ :b :c4658;
+ :b :c4659;
+ :b :c4660;
+ :b :c4661;
+ :b :c4662;
+ :b :c4663;
+ :b :c4664;
+ :b :c4665;
+ :b :c4666;
+ :b :c4667;
+ :b :c4668;
+ :b :c4669;
+ :b :c4670;
+ :b :c4671;
+ :b :c4672;
+ :b :c4673;
+ :b :c4674;
+ :b :c4675;
+ :b :c4676;
+ :b :c4677;
+ :b :c4678;
+ :b :c4679;
+ :b :c4680;
+ :b :c4681;
+ :b :c4682;
+ :b :c4683;
+ :b :c4684;
+ :b :c4685;
+ :b :c4686;
+ :b :c4687;
+ :b :c4688;
+ :b :c4689;
+ :b :c4690;
+ :b :c4691;
+ :b :c4692;
+ :b :c4693;
+ :b :c4694;
+ :b :c4695;
+ :b :c4696;
+ :b :c4697;
+ :b :c4698;
+ :b :c4699;
+ :b :c4700;
+ :b :c4701;
+ :b :c4702;
+ :b :c4703;
+ :b :c4704;
+ :b :c4705;
+ :b :c4706;
+ :b :c4707;
+ :b :c4708;
+ :b :c4709;
+ :b :c4710;
+ :b :c4711;
+ :b :c4712;
+ :b :c4713;
+ :b :c4714;
+ :b :c4715;
+ :b :c4716;
+ :b :c4717;
+ :b :c4718;
+ :b :c4719;
+ :b :c4720;
+ :b :c4721;
+ :b :c4722;
+ :b :c4723;
+ :b :c4724;
+ :b :c4725;
+ :b :c4726;
+ :b :c4727;
+ :b :c4728;
+ :b :c4729;
+ :b :c4730;
+ :b :c4731;
+ :b :c4732;
+ :b :c4733;
+ :b :c4734;
+ :b :c4735;
+ :b :c4736;
+ :b :c4737;
+ :b :c4738;
+ :b :c4739;
+ :b :c4740;
+ :b :c4741;
+ :b :c4742;
+ :b :c4743;
+ :b :c4744;
+ :b :c4745;
+ :b :c4746;
+ :b :c4747;
+ :b :c4748;
+ :b :c4749;
+ :b :c4750;
+ :b :c4751;
+ :b :c4752;
+ :b :c4753;
+ :b :c4754;
+ :b :c4755;
+ :b :c4756;
+ :b :c4757;
+ :b :c4758;
+ :b :c4759;
+ :b :c4760;
+ :b :c4761;
+ :b :c4762;
+ :b :c4763;
+ :b :c4764;
+ :b :c4765;
+ :b :c4766;
+ :b :c4767;
+ :b :c4768;
+ :b :c4769;
+ :b :c4770;
+ :b :c4771;
+ :b :c4772;
+ :b :c4773;
+ :b :c4774;
+ :b :c4775;
+ :b :c4776;
+ :b :c4777;
+ :b :c4778;
+ :b :c4779;
+ :b :c4780;
+ :b :c4781;
+ :b :c4782;
+ :b :c4783;
+ :b :c4784;
+ :b :c4785;
+ :b :c4786;
+ :b :c4787;
+ :b :c4788;
+ :b :c4789;
+ :b :c4790;
+ :b :c4791;
+ :b :c4792;
+ :b :c4793;
+ :b :c4794;
+ :b :c4795;
+ :b :c4796;
+ :b :c4797;
+ :b :c4798;
+ :b :c4799;
+ :b :c4800;
+ :b :c4801;
+ :b :c4802;
+ :b :c4803;
+ :b :c4804;
+ :b :c4805;
+ :b :c4806;
+ :b :c4807;
+ :b :c4808;
+ :b :c4809;
+ :b :c4810;
+ :b :c4811;
+ :b :c4812;
+ :b :c4813;
+ :b :c4814;
+ :b :c4815;
+ :b :c4816;
+ :b :c4817;
+ :b :c4818;
+ :b :c4819;
+ :b :c4820;
+ :b :c4821;
+ :b :c4822;
+ :b :c4823;
+ :b :c4824;
+ :b :c4825;
+ :b :c4826;
+ :b :c4827;
+ :b :c4828;
+ :b :c4829;
+ :b :c4830;
+ :b :c4831;
+ :b :c4832;
+ :b :c4833;
+ :b :c4834;
+ :b :c4835;
+ :b :c4836;
+ :b :c4837;
+ :b :c4838;
+ :b :c4839;
+ :b :c4840;
+ :b :c4841;
+ :b :c4842;
+ :b :c4843;
+ :b :c4844;
+ :b :c4845;
+ :b :c4846;
+ :b :c4847;
+ :b :c4848;
+ :b :c4849;
+ :b :c4850;
+ :b :c4851;
+ :b :c4852;
+ :b :c4853;
+ :b :c4854;
+ :b :c4855;
+ :b :c4856;
+ :b :c4857;
+ :b :c4858;
+ :b :c4859;
+ :b :c4860;
+ :b :c4861;
+ :b :c4862;
+ :b :c4863;
+ :b :c4864;
+ :b :c4865;
+ :b :c4866;
+ :b :c4867;
+ :b :c4868;
+ :b :c4869;
+ :b :c4870;
+ :b :c4871;
+ :b :c4872;
+ :b :c4873;
+ :b :c4874;
+ :b :c4875;
+ :b :c4876;
+ :b :c4877;
+ :b :c4878;
+ :b :c4879;
+ :b :c4880;
+ :b :c4881;
+ :b :c4882;
+ :b :c4883;
+ :b :c4884;
+ :b :c4885;
+ :b :c4886;
+ :b :c4887;
+ :b :c4888;
+ :b :c4889;
+ :b :c4890;
+ :b :c4891;
+ :b :c4892;
+ :b :c4893;
+ :b :c4894;
+ :b :c4895;
+ :b :c4896;
+ :b :c4897;
+ :b :c4898;
+ :b :c4899;
+ :b :c4900;
+ :b :c4901;
+ :b :c4902;
+ :b :c4903;
+ :b :c4904;
+ :b :c4905;
+ :b :c4906;
+ :b :c4907;
+ :b :c4908;
+ :b :c4909;
+ :b :c4910;
+ :b :c4911;
+ :b :c4912;
+ :b :c4913;
+ :b :c4914;
+ :b :c4915;
+ :b :c4916;
+ :b :c4917;
+ :b :c4918;
+ :b :c4919;
+ :b :c4920;
+ :b :c4921;
+ :b :c4922;
+ :b :c4923;
+ :b :c4924;
+ :b :c4925;
+ :b :c4926;
+ :b :c4927;
+ :b :c4928;
+ :b :c4929;
+ :b :c4930;
+ :b :c4931;
+ :b :c4932;
+ :b :c4933;
+ :b :c4934;
+ :b :c4935;
+ :b :c4936;
+ :b :c4937;
+ :b :c4938;
+ :b :c4939;
+ :b :c4940;
+ :b :c4941;
+ :b :c4942;
+ :b :c4943;
+ :b :c4944;
+ :b :c4945;
+ :b :c4946;
+ :b :c4947;
+ :b :c4948;
+ :b :c4949;
+ :b :c4950;
+ :b :c4951;
+ :b :c4952;
+ :b :c4953;
+ :b :c4954;
+ :b :c4955;
+ :b :c4956;
+ :b :c4957;
+ :b :c4958;
+ :b :c4959;
+ :b :c4960;
+ :b :c4961;
+ :b :c4962;
+ :b :c4963;
+ :b :c4964;
+ :b :c4965;
+ :b :c4966;
+ :b :c4967;
+ :b :c4968;
+ :b :c4969;
+ :b :c4970;
+ :b :c4971;
+ :b :c4972;
+ :b :c4973;
+ :b :c4974;
+ :b :c4975;
+ :b :c4976;
+ :b :c4977;
+ :b :c4978;
+ :b :c4979;
+ :b :c4980;
+ :b :c4981;
+ :b :c4982;
+ :b :c4983;
+ :b :c4984;
+ :b :c4985;
+ :b :c4986;
+ :b :c4987;
+ :b :c4988;
+ :b :c4989;
+ :b :c4990;
+ :b :c4991;
+ :b :c4992;
+ :b :c4993;
+ :b :c4994;
+ :b :c4995;
+ :b :c4996;
+ :b :c4997;
+ :b :c4998;
+ :b :c4999;
+ :b :c5000;
+ :b :c5001;
+ :b :c5002;
+ :b :c5003;
+ :b :c5004;
+ :b :c5005;
+ :b :c5006;
+ :b :c5007;
+ :b :c5008;
+ :b :c5009;
+ :b :c5010;
+ :b :c5011;
+ :b :c5012;
+ :b :c5013;
+ :b :c5014;
+ :b :c5015;
+ :b :c5016;
+ :b :c5017;
+ :b :c5018;
+ :b :c5019;
+ :b :c5020;
+ :b :c5021;
+ :b :c5022;
+ :b :c5023;
+ :b :c5024;
+ :b :c5025;
+ :b :c5026;
+ :b :c5027;
+ :b :c5028;
+ :b :c5029;
+ :b :c5030;
+ :b :c5031;
+ :b :c5032;
+ :b :c5033;
+ :b :c5034;
+ :b :c5035;
+ :b :c5036;
+ :b :c5037;
+ :b :c5038;
+ :b :c5039;
+ :b :c5040;
+ :b :c5041;
+ :b :c5042;
+ :b :c5043;
+ :b :c5044;
+ :b :c5045;
+ :b :c5046;
+ :b :c5047;
+ :b :c5048;
+ :b :c5049;
+ :b :c5050;
+ :b :c5051;
+ :b :c5052;
+ :b :c5053;
+ :b :c5054;
+ :b :c5055;
+ :b :c5056;
+ :b :c5057;
+ :b :c5058;
+ :b :c5059;
+ :b :c5060;
+ :b :c5061;
+ :b :c5062;
+ :b :c5063;
+ :b :c5064;
+ :b :c5065;
+ :b :c5066;
+ :b :c5067;
+ :b :c5068;
+ :b :c5069;
+ :b :c5070;
+ :b :c5071;
+ :b :c5072;
+ :b :c5073;
+ :b :c5074;
+ :b :c5075;
+ :b :c5076;
+ :b :c5077;
+ :b :c5078;
+ :b :c5079;
+ :b :c5080;
+ :b :c5081;
+ :b :c5082;
+ :b :c5083;
+ :b :c5084;
+ :b :c5085;
+ :b :c5086;
+ :b :c5087;
+ :b :c5088;
+ :b :c5089;
+ :b :c5090;
+ :b :c5091;
+ :b :c5092;
+ :b :c5093;
+ :b :c5094;
+ :b :c5095;
+ :b :c5096;
+ :b :c5097;
+ :b :c5098;
+ :b :c5099;
+ :b :c5100;
+ :b :c5101;
+ :b :c5102;
+ :b :c5103;
+ :b :c5104;
+ :b :c5105;
+ :b :c5106;
+ :b :c5107;
+ :b :c5108;
+ :b :c5109;
+ :b :c5110;
+ :b :c5111;
+ :b :c5112;
+ :b :c5113;
+ :b :c5114;
+ :b :c5115;
+ :b :c5116;
+ :b :c5117;
+ :b :c5118;
+ :b :c5119;
+ :b :c5120;
+ :b :c5121;
+ :b :c5122;
+ :b :c5123;
+ :b :c5124;
+ :b :c5125;
+ :b :c5126;
+ :b :c5127;
+ :b :c5128;
+ :b :c5129;
+ :b :c5130;
+ :b :c5131;
+ :b :c5132;
+ :b :c5133;
+ :b :c5134;
+ :b :c5135;
+ :b :c5136;
+ :b :c5137;
+ :b :c5138;
+ :b :c5139;
+ :b :c5140;
+ :b :c5141;
+ :b :c5142;
+ :b :c5143;
+ :b :c5144;
+ :b :c5145;
+ :b :c5146;
+ :b :c5147;
+ :b :c5148;
+ :b :c5149;
+ :b :c5150;
+ :b :c5151;
+ :b :c5152;
+ :b :c5153;
+ :b :c5154;
+ :b :c5155;
+ :b :c5156;
+ :b :c5157;
+ :b :c5158;
+ :b :c5159;
+ :b :c5160;
+ :b :c5161;
+ :b :c5162;
+ :b :c5163;
+ :b :c5164;
+ :b :c5165;
+ :b :c5166;
+ :b :c5167;
+ :b :c5168;
+ :b :c5169;
+ :b :c5170;
+ :b :c5171;
+ :b :c5172;
+ :b :c5173;
+ :b :c5174;
+ :b :c5175;
+ :b :c5176;
+ :b :c5177;
+ :b :c5178;
+ :b :c5179;
+ :b :c5180;
+ :b :c5181;
+ :b :c5182;
+ :b :c5183;
+ :b :c5184;
+ :b :c5185;
+ :b :c5186;
+ :b :c5187;
+ :b :c5188;
+ :b :c5189;
+ :b :c5190;
+ :b :c5191;
+ :b :c5192;
+ :b :c5193;
+ :b :c5194;
+ :b :c5195;
+ :b :c5196;
+ :b :c5197;
+ :b :c5198;
+ :b :c5199;
+ :b :c5200;
+ :b :c5201;
+ :b :c5202;
+ :b :c5203;
+ :b :c5204;
+ :b :c5205;
+ :b :c5206;
+ :b :c5207;
+ :b :c5208;
+ :b :c5209;
+ :b :c5210;
+ :b :c5211;
+ :b :c5212;
+ :b :c5213;
+ :b :c5214;
+ :b :c5215;
+ :b :c5216;
+ :b :c5217;
+ :b :c5218;
+ :b :c5219;
+ :b :c5220;
+ :b :c5221;
+ :b :c5222;
+ :b :c5223;
+ :b :c5224;
+ :b :c5225;
+ :b :c5226;
+ :b :c5227;
+ :b :c5228;
+ :b :c5229;
+ :b :c5230;
+ :b :c5231;
+ :b :c5232;
+ :b :c5233;
+ :b :c5234;
+ :b :c5235;
+ :b :c5236;
+ :b :c5237;
+ :b :c5238;
+ :b :c5239;
+ :b :c5240;
+ :b :c5241;
+ :b :c5242;
+ :b :c5243;
+ :b :c5244;
+ :b :c5245;
+ :b :c5246;
+ :b :c5247;
+ :b :c5248;
+ :b :c5249;
+ :b :c5250;
+ :b :c5251;
+ :b :c5252;
+ :b :c5253;
+ :b :c5254;
+ :b :c5255;
+ :b :c5256;
+ :b :c5257;
+ :b :c5258;
+ :b :c5259;
+ :b :c5260;
+ :b :c5261;
+ :b :c5262;
+ :b :c5263;
+ :b :c5264;
+ :b :c5265;
+ :b :c5266;
+ :b :c5267;
+ :b :c5268;
+ :b :c5269;
+ :b :c5270;
+ :b :c5271;
+ :b :c5272;
+ :b :c5273;
+ :b :c5274;
+ :b :c5275;
+ :b :c5276;
+ :b :c5277;
+ :b :c5278;
+ :b :c5279;
+ :b :c5280;
+ :b :c5281;
+ :b :c5282;
+ :b :c5283;
+ :b :c5284;
+ :b :c5285;
+ :b :c5286;
+ :b :c5287;
+ :b :c5288;
+ :b :c5289;
+ :b :c5290;
+ :b :c5291;
+ :b :c5292;
+ :b :c5293;
+ :b :c5294;
+ :b :c5295;
+ :b :c5296;
+ :b :c5297;
+ :b :c5298;
+ :b :c5299;
+ :b :c5300;
+ :b :c5301;
+ :b :c5302;
+ :b :c5303;
+ :b :c5304;
+ :b :c5305;
+ :b :c5306;
+ :b :c5307;
+ :b :c5308;
+ :b :c5309;
+ :b :c5310;
+ :b :c5311;
+ :b :c5312;
+ :b :c5313;
+ :b :c5314;
+ :b :c5315;
+ :b :c5316;
+ :b :c5317;
+ :b :c5318;
+ :b :c5319;
+ :b :c5320;
+ :b :c5321;
+ :b :c5322;
+ :b :c5323;
+ :b :c5324;
+ :b :c5325;
+ :b :c5326;
+ :b :c5327;
+ :b :c5328;
+ :b :c5329;
+ :b :c5330;
+ :b :c5331;
+ :b :c5332;
+ :b :c5333;
+ :b :c5334;
+ :b :c5335;
+ :b :c5336;
+ :b :c5337;
+ :b :c5338;
+ :b :c5339;
+ :b :c5340;
+ :b :c5341;
+ :b :c5342;
+ :b :c5343;
+ :b :c5344;
+ :b :c5345;
+ :b :c5346;
+ :b :c5347;
+ :b :c5348;
+ :b :c5349;
+ :b :c5350;
+ :b :c5351;
+ :b :c5352;
+ :b :c5353;
+ :b :c5354;
+ :b :c5355;
+ :b :c5356;
+ :b :c5357;
+ :b :c5358;
+ :b :c5359;
+ :b :c5360;
+ :b :c5361;
+ :b :c5362;
+ :b :c5363;
+ :b :c5364;
+ :b :c5365;
+ :b :c5366;
+ :b :c5367;
+ :b :c5368;
+ :b :c5369;
+ :b :c5370;
+ :b :c5371;
+ :b :c5372;
+ :b :c5373;
+ :b :c5374;
+ :b :c5375;
+ :b :c5376;
+ :b :c5377;
+ :b :c5378;
+ :b :c5379;
+ :b :c5380;
+ :b :c5381;
+ :b :c5382;
+ :b :c5383;
+ :b :c5384;
+ :b :c5385;
+ :b :c5386;
+ :b :c5387;
+ :b :c5388;
+ :b :c5389;
+ :b :c5390;
+ :b :c5391;
+ :b :c5392;
+ :b :c5393;
+ :b :c5394;
+ :b :c5395;
+ :b :c5396;
+ :b :c5397;
+ :b :c5398;
+ :b :c5399;
+ :b :c5400;
+ :b :c5401;
+ :b :c5402;
+ :b :c5403;
+ :b :c5404;
+ :b :c5405;
+ :b :c5406;
+ :b :c5407;
+ :b :c5408;
+ :b :c5409;
+ :b :c5410;
+ :b :c5411;
+ :b :c5412;
+ :b :c5413;
+ :b :c5414;
+ :b :c5415;
+ :b :c5416;
+ :b :c5417;
+ :b :c5418;
+ :b :c5419;
+ :b :c5420;
+ :b :c5421;
+ :b :c5422;
+ :b :c5423;
+ :b :c5424;
+ :b :c5425;
+ :b :c5426;
+ :b :c5427;
+ :b :c5428;
+ :b :c5429;
+ :b :c5430;
+ :b :c5431;
+ :b :c5432;
+ :b :c5433;
+ :b :c5434;
+ :b :c5435;
+ :b :c5436;
+ :b :c5437;
+ :b :c5438;
+ :b :c5439;
+ :b :c5440;
+ :b :c5441;
+ :b :c5442;
+ :b :c5443;
+ :b :c5444;
+ :b :c5445;
+ :b :c5446;
+ :b :c5447;
+ :b :c5448;
+ :b :c5449;
+ :b :c5450;
+ :b :c5451;
+ :b :c5452;
+ :b :c5453;
+ :b :c5454;
+ :b :c5455;
+ :b :c5456;
+ :b :c5457;
+ :b :c5458;
+ :b :c5459;
+ :b :c5460;
+ :b :c5461;
+ :b :c5462;
+ :b :c5463;
+ :b :c5464;
+ :b :c5465;
+ :b :c5466;
+ :b :c5467;
+ :b :c5468;
+ :b :c5469;
+ :b :c5470;
+ :b :c5471;
+ :b :c5472;
+ :b :c5473;
+ :b :c5474;
+ :b :c5475;
+ :b :c5476;
+ :b :c5477;
+ :b :c5478;
+ :b :c5479;
+ :b :c5480;
+ :b :c5481;
+ :b :c5482;
+ :b :c5483;
+ :b :c5484;
+ :b :c5485;
+ :b :c5486;
+ :b :c5487;
+ :b :c5488;
+ :b :c5489;
+ :b :c5490;
+ :b :c5491;
+ :b :c5492;
+ :b :c5493;
+ :b :c5494;
+ :b :c5495;
+ :b :c5496;
+ :b :c5497;
+ :b :c5498;
+ :b :c5499;
+ :b :c5500;
+ :b :c5501;
+ :b :c5502;
+ :b :c5503;
+ :b :c5504;
+ :b :c5505;
+ :b :c5506;
+ :b :c5507;
+ :b :c5508;
+ :b :c5509;
+ :b :c5510;
+ :b :c5511;
+ :b :c5512;
+ :b :c5513;
+ :b :c5514;
+ :b :c5515;
+ :b :c5516;
+ :b :c5517;
+ :b :c5518;
+ :b :c5519;
+ :b :c5520;
+ :b :c5521;
+ :b :c5522;
+ :b :c5523;
+ :b :c5524;
+ :b :c5525;
+ :b :c5526;
+ :b :c5527;
+ :b :c5528;
+ :b :c5529;
+ :b :c5530;
+ :b :c5531;
+ :b :c5532;
+ :b :c5533;
+ :b :c5534;
+ :b :c5535;
+ :b :c5536;
+ :b :c5537;
+ :b :c5538;
+ :b :c5539;
+ :b :c5540;
+ :b :c5541;
+ :b :c5542;
+ :b :c5543;
+ :b :c5544;
+ :b :c5545;
+ :b :c5546;
+ :b :c5547;
+ :b :c5548;
+ :b :c5549;
+ :b :c5550;
+ :b :c5551;
+ :b :c5552;
+ :b :c5553;
+ :b :c5554;
+ :b :c5555;
+ :b :c5556;
+ :b :c5557;
+ :b :c5558;
+ :b :c5559;
+ :b :c5560;
+ :b :c5561;
+ :b :c5562;
+ :b :c5563;
+ :b :c5564;
+ :b :c5565;
+ :b :c5566;
+ :b :c5567;
+ :b :c5568;
+ :b :c5569;
+ :b :c5570;
+ :b :c5571;
+ :b :c5572;
+ :b :c5573;
+ :b :c5574;
+ :b :c5575;
+ :b :c5576;
+ :b :c5577;
+ :b :c5578;
+ :b :c5579;
+ :b :c5580;
+ :b :c5581;
+ :b :c5582;
+ :b :c5583;
+ :b :c5584;
+ :b :c5585;
+ :b :c5586;
+ :b :c5587;
+ :b :c5588;
+ :b :c5589;
+ :b :c5590;
+ :b :c5591;
+ :b :c5592;
+ :b :c5593;
+ :b :c5594;
+ :b :c5595;
+ :b :c5596;
+ :b :c5597;
+ :b :c5598;
+ :b :c5599;
+ :b :c5600;
+ :b :c5601;
+ :b :c5602;
+ :b :c5603;
+ :b :c5604;
+ :b :c5605;
+ :b :c5606;
+ :b :c5607;
+ :b :c5608;
+ :b :c5609;
+ :b :c5610;
+ :b :c5611;
+ :b :c5612;
+ :b :c5613;
+ :b :c5614;
+ :b :c5615;
+ :b :c5616;
+ :b :c5617;
+ :b :c5618;
+ :b :c5619;
+ :b :c5620;
+ :b :c5621;
+ :b :c5622;
+ :b :c5623;
+ :b :c5624;
+ :b :c5625;
+ :b :c5626;
+ :b :c5627;
+ :b :c5628;
+ :b :c5629;
+ :b :c5630;
+ :b :c5631;
+ :b :c5632;
+ :b :c5633;
+ :b :c5634;
+ :b :c5635;
+ :b :c5636;
+ :b :c5637;
+ :b :c5638;
+ :b :c5639;
+ :b :c5640;
+ :b :c5641;
+ :b :c5642;
+ :b :c5643;
+ :b :c5644;
+ :b :c5645;
+ :b :c5646;
+ :b :c5647;
+ :b :c5648;
+ :b :c5649;
+ :b :c5650;
+ :b :c5651;
+ :b :c5652;
+ :b :c5653;
+ :b :c5654;
+ :b :c5655;
+ :b :c5656;
+ :b :c5657;
+ :b :c5658;
+ :b :c5659;
+ :b :c5660;
+ :b :c5661;
+ :b :c5662;
+ :b :c5663;
+ :b :c5664;
+ :b :c5665;
+ :b :c5666;
+ :b :c5667;
+ :b :c5668;
+ :b :c5669;
+ :b :c5670;
+ :b :c5671;
+ :b :c5672;
+ :b :c5673;
+ :b :c5674;
+ :b :c5675;
+ :b :c5676;
+ :b :c5677;
+ :b :c5678;
+ :b :c5679;
+ :b :c5680;
+ :b :c5681;
+ :b :c5682;
+ :b :c5683;
+ :b :c5684;
+ :b :c5685;
+ :b :c5686;
+ :b :c5687;
+ :b :c5688;
+ :b :c5689;
+ :b :c5690;
+ :b :c5691;
+ :b :c5692;
+ :b :c5693;
+ :b :c5694;
+ :b :c5695;
+ :b :c5696;
+ :b :c5697;
+ :b :c5698;
+ :b :c5699;
+ :b :c5700;
+ :b :c5701;
+ :b :c5702;
+ :b :c5703;
+ :b :c5704;
+ :b :c5705;
+ :b :c5706;
+ :b :c5707;
+ :b :c5708;
+ :b :c5709;
+ :b :c5710;
+ :b :c5711;
+ :b :c5712;
+ :b :c5713;
+ :b :c5714;
+ :b :c5715;
+ :b :c5716;
+ :b :c5717;
+ :b :c5718;
+ :b :c5719;
+ :b :c5720;
+ :b :c5721;
+ :b :c5722;
+ :b :c5723;
+ :b :c5724;
+ :b :c5725;
+ :b :c5726;
+ :b :c5727;
+ :b :c5728;
+ :b :c5729;
+ :b :c5730;
+ :b :c5731;
+ :b :c5732;
+ :b :c5733;
+ :b :c5734;
+ :b :c5735;
+ :b :c5736;
+ :b :c5737;
+ :b :c5738;
+ :b :c5739;
+ :b :c5740;
+ :b :c5741;
+ :b :c5742;
+ :b :c5743;
+ :b :c5744;
+ :b :c5745;
+ :b :c5746;
+ :b :c5747;
+ :b :c5748;
+ :b :c5749;
+ :b :c5750;
+ :b :c5751;
+ :b :c5752;
+ :b :c5753;
+ :b :c5754;
+ :b :c5755;
+ :b :c5756;
+ :b :c5757;
+ :b :c5758;
+ :b :c5759;
+ :b :c5760;
+ :b :c5761;
+ :b :c5762;
+ :b :c5763;
+ :b :c5764;
+ :b :c5765;
+ :b :c5766;
+ :b :c5767;
+ :b :c5768;
+ :b :c5769;
+ :b :c5770;
+ :b :c5771;
+ :b :c5772;
+ :b :c5773;
+ :b :c5774;
+ :b :c5775;
+ :b :c5776;
+ :b :c5777;
+ :b :c5778;
+ :b :c5779;
+ :b :c5780;
+ :b :c5781;
+ :b :c5782;
+ :b :c5783;
+ :b :c5784;
+ :b :c5785;
+ :b :c5786;
+ :b :c5787;
+ :b :c5788;
+ :b :c5789;
+ :b :c5790;
+ :b :c5791;
+ :b :c5792;
+ :b :c5793;
+ :b :c5794;
+ :b :c5795;
+ :b :c5796;
+ :b :c5797;
+ :b :c5798;
+ :b :c5799;
+ :b :c5800;
+ :b :c5801;
+ :b :c5802;
+ :b :c5803;
+ :b :c5804;
+ :b :c5805;
+ :b :c5806;
+ :b :c5807;
+ :b :c5808;
+ :b :c5809;
+ :b :c5810;
+ :b :c5811;
+ :b :c5812;
+ :b :c5813;
+ :b :c5814;
+ :b :c5815;
+ :b :c5816;
+ :b :c5817;
+ :b :c5818;
+ :b :c5819;
+ :b :c5820;
+ :b :c5821;
+ :b :c5822;
+ :b :c5823;
+ :b :c5824;
+ :b :c5825;
+ :b :c5826;
+ :b :c5827;
+ :b :c5828;
+ :b :c5829;
+ :b :c5830;
+ :b :c5831;
+ :b :c5832;
+ :b :c5833;
+ :b :c5834;
+ :b :c5835;
+ :b :c5836;
+ :b :c5837;
+ :b :c5838;
+ :b :c5839;
+ :b :c5840;
+ :b :c5841;
+ :b :c5842;
+ :b :c5843;
+ :b :c5844;
+ :b :c5845;
+ :b :c5846;
+ :b :c5847;
+ :b :c5848;
+ :b :c5849;
+ :b :c5850;
+ :b :c5851;
+ :b :c5852;
+ :b :c5853;
+ :b :c5854;
+ :b :c5855;
+ :b :c5856;
+ :b :c5857;
+ :b :c5858;
+ :b :c5859;
+ :b :c5860;
+ :b :c5861;
+ :b :c5862;
+ :b :c5863;
+ :b :c5864;
+ :b :c5865;
+ :b :c5866;
+ :b :c5867;
+ :b :c5868;
+ :b :c5869;
+ :b :c5870;
+ :b :c5871;
+ :b :c5872;
+ :b :c5873;
+ :b :c5874;
+ :b :c5875;
+ :b :c5876;
+ :b :c5877;
+ :b :c5878;
+ :b :c5879;
+ :b :c5880;
+ :b :c5881;
+ :b :c5882;
+ :b :c5883;
+ :b :c5884;
+ :b :c5885;
+ :b :c5886;
+ :b :c5887;
+ :b :c5888;
+ :b :c5889;
+ :b :c5890;
+ :b :c5891;
+ :b :c5892;
+ :b :c5893;
+ :b :c5894;
+ :b :c5895;
+ :b :c5896;
+ :b :c5897;
+ :b :c5898;
+ :b :c5899;
+ :b :c5900;
+ :b :c5901;
+ :b :c5902;
+ :b :c5903;
+ :b :c5904;
+ :b :c5905;
+ :b :c5906;
+ :b :c5907;
+ :b :c5908;
+ :b :c5909;
+ :b :c5910;
+ :b :c5911;
+ :b :c5912;
+ :b :c5913;
+ :b :c5914;
+ :b :c5915;
+ :b :c5916;
+ :b :c5917;
+ :b :c5918;
+ :b :c5919;
+ :b :c5920;
+ :b :c5921;
+ :b :c5922;
+ :b :c5923;
+ :b :c5924;
+ :b :c5925;
+ :b :c5926;
+ :b :c5927;
+ :b :c5928;
+ :b :c5929;
+ :b :c5930;
+ :b :c5931;
+ :b :c5932;
+ :b :c5933;
+ :b :c5934;
+ :b :c5935;
+ :b :c5936;
+ :b :c5937;
+ :b :c5938;
+ :b :c5939;
+ :b :c5940;
+ :b :c5941;
+ :b :c5942;
+ :b :c5943;
+ :b :c5944;
+ :b :c5945;
+ :b :c5946;
+ :b :c5947;
+ :b :c5948;
+ :b :c5949;
+ :b :c5950;
+ :b :c5951;
+ :b :c5952;
+ :b :c5953;
+ :b :c5954;
+ :b :c5955;
+ :b :c5956;
+ :b :c5957;
+ :b :c5958;
+ :b :c5959;
+ :b :c5960;
+ :b :c5961;
+ :b :c5962;
+ :b :c5963;
+ :b :c5964;
+ :b :c5965;
+ :b :c5966;
+ :b :c5967;
+ :b :c5968;
+ :b :c5969;
+ :b :c5970;
+ :b :c5971;
+ :b :c5972;
+ :b :c5973;
+ :b :c5974;
+ :b :c5975;
+ :b :c5976;
+ :b :c5977;
+ :b :c5978;
+ :b :c5979;
+ :b :c5980;
+ :b :c5981;
+ :b :c5982;
+ :b :c5983;
+ :b :c5984;
+ :b :c5985;
+ :b :c5986;
+ :b :c5987;
+ :b :c5988;
+ :b :c5989;
+ :b :c5990;
+ :b :c5991;
+ :b :c5992;
+ :b :c5993;
+ :b :c5994;
+ :b :c5995;
+ :b :c5996;
+ :b :c5997;
+ :b :c5998;
+ :b :c5999;
+ :b :c6000;
+ :b :c6001;
+ :b :c6002;
+ :b :c6003;
+ :b :c6004;
+ :b :c6005;
+ :b :c6006;
+ :b :c6007;
+ :b :c6008;
+ :b :c6009;
+ :b :c6010;
+ :b :c6011;
+ :b :c6012;
+ :b :c6013;
+ :b :c6014;
+ :b :c6015;
+ :b :c6016;
+ :b :c6017;
+ :b :c6018;
+ :b :c6019;
+ :b :c6020;
+ :b :c6021;
+ :b :c6022;
+ :b :c6023;
+ :b :c6024;
+ :b :c6025;
+ :b :c6026;
+ :b :c6027;
+ :b :c6028;
+ :b :c6029;
+ :b :c6030;
+ :b :c6031;
+ :b :c6032;
+ :b :c6033;
+ :b :c6034;
+ :b :c6035;
+ :b :c6036;
+ :b :c6037;
+ :b :c6038;
+ :b :c6039;
+ :b :c6040;
+ :b :c6041;
+ :b :c6042;
+ :b :c6043;
+ :b :c6044;
+ :b :c6045;
+ :b :c6046;
+ :b :c6047;
+ :b :c6048;
+ :b :c6049;
+ :b :c6050;
+ :b :c6051;
+ :b :c6052;
+ :b :c6053;
+ :b :c6054;
+ :b :c6055;
+ :b :c6056;
+ :b :c6057;
+ :b :c6058;
+ :b :c6059;
+ :b :c6060;
+ :b :c6061;
+ :b :c6062;
+ :b :c6063;
+ :b :c6064;
+ :b :c6065;
+ :b :c6066;
+ :b :c6067;
+ :b :c6068;
+ :b :c6069;
+ :b :c6070;
+ :b :c6071;
+ :b :c6072;
+ :b :c6073;
+ :b :c6074;
+ :b :c6075;
+ :b :c6076;
+ :b :c6077;
+ :b :c6078;
+ :b :c6079;
+ :b :c6080;
+ :b :c6081;
+ :b :c6082;
+ :b :c6083;
+ :b :c6084;
+ :b :c6085;
+ :b :c6086;
+ :b :c6087;
+ :b :c6088;
+ :b :c6089;
+ :b :c6090;
+ :b :c6091;
+ :b :c6092;
+ :b :c6093;
+ :b :c6094;
+ :b :c6095;
+ :b :c6096;
+ :b :c6097;
+ :b :c6098;
+ :b :c6099;
+ :b :c6100;
+ :b :c6101;
+ :b :c6102;
+ :b :c6103;
+ :b :c6104;
+ :b :c6105;
+ :b :c6106;
+ :b :c6107;
+ :b :c6108;
+ :b :c6109;
+ :b :c6110;
+ :b :c6111;
+ :b :c6112;
+ :b :c6113;
+ :b :c6114;
+ :b :c6115;
+ :b :c6116;
+ :b :c6117;
+ :b :c6118;
+ :b :c6119;
+ :b :c6120;
+ :b :c6121;
+ :b :c6122;
+ :b :c6123;
+ :b :c6124;
+ :b :c6125;
+ :b :c6126;
+ :b :c6127;
+ :b :c6128;
+ :b :c6129;
+ :b :c6130;
+ :b :c6131;
+ :b :c6132;
+ :b :c6133;
+ :b :c6134;
+ :b :c6135;
+ :b :c6136;
+ :b :c6137;
+ :b :c6138;
+ :b :c6139;
+ :b :c6140;
+ :b :c6141;
+ :b :c6142;
+ :b :c6143;
+ :b :c6144;
+ :b :c6145;
+ :b :c6146;
+ :b :c6147;
+ :b :c6148;
+ :b :c6149;
+ :b :c6150;
+ :b :c6151;
+ :b :c6152;
+ :b :c6153;
+ :b :c6154;
+ :b :c6155;
+ :b :c6156;
+ :b :c6157;
+ :b :c6158;
+ :b :c6159;
+ :b :c6160;
+ :b :c6161;
+ :b :c6162;
+ :b :c6163;
+ :b :c6164;
+ :b :c6165;
+ :b :c6166;
+ :b :c6167;
+ :b :c6168;
+ :b :c6169;
+ :b :c6170;
+ :b :c6171;
+ :b :c6172;
+ :b :c6173;
+ :b :c6174;
+ :b :c6175;
+ :b :c6176;
+ :b :c6177;
+ :b :c6178;
+ :b :c6179;
+ :b :c6180;
+ :b :c6181;
+ :b :c6182;
+ :b :c6183;
+ :b :c6184;
+ :b :c6185;
+ :b :c6186;
+ :b :c6187;
+ :b :c6188;
+ :b :c6189;
+ :b :c6190;
+ :b :c6191;
+ :b :c6192;
+ :b :c6193;
+ :b :c6194;
+ :b :c6195;
+ :b :c6196;
+ :b :c6197;
+ :b :c6198;
+ :b :c6199;
+ :b :c6200;
+ :b :c6201;
+ :b :c6202;
+ :b :c6203;
+ :b :c6204;
+ :b :c6205;
+ :b :c6206;
+ :b :c6207;
+ :b :c6208;
+ :b :c6209;
+ :b :c6210;
+ :b :c6211;
+ :b :c6212;
+ :b :c6213;
+ :b :c6214;
+ :b :c6215;
+ :b :c6216;
+ :b :c6217;
+ :b :c6218;
+ :b :c6219;
+ :b :c6220;
+ :b :c6221;
+ :b :c6222;
+ :b :c6223;
+ :b :c6224;
+ :b :c6225;
+ :b :c6226;
+ :b :c6227;
+ :b :c6228;
+ :b :c6229;
+ :b :c6230;
+ :b :c6231;
+ :b :c6232;
+ :b :c6233;
+ :b :c6234;
+ :b :c6235;
+ :b :c6236;
+ :b :c6237;
+ :b :c6238;
+ :b :c6239;
+ :b :c6240;
+ :b :c6241;
+ :b :c6242;
+ :b :c6243;
+ :b :c6244;
+ :b :c6245;
+ :b :c6246;
+ :b :c6247;
+ :b :c6248;
+ :b :c6249;
+ :b :c6250;
+ :b :c6251;
+ :b :c6252;
+ :b :c6253;
+ :b :c6254;
+ :b :c6255;
+ :b :c6256;
+ :b :c6257;
+ :b :c6258;
+ :b :c6259;
+ :b :c6260;
+ :b :c6261;
+ :b :c6262;
+ :b :c6263;
+ :b :c6264;
+ :b :c6265;
+ :b :c6266;
+ :b :c6267;
+ :b :c6268;
+ :b :c6269;
+ :b :c6270;
+ :b :c6271;
+ :b :c6272;
+ :b :c6273;
+ :b :c6274;
+ :b :c6275;
+ :b :c6276;
+ :b :c6277;
+ :b :c6278;
+ :b :c6279;
+ :b :c6280;
+ :b :c6281;
+ :b :c6282;
+ :b :c6283;
+ :b :c6284;
+ :b :c6285;
+ :b :c6286;
+ :b :c6287;
+ :b :c6288;
+ :b :c6289;
+ :b :c6290;
+ :b :c6291;
+ :b :c6292;
+ :b :c6293;
+ :b :c6294;
+ :b :c6295;
+ :b :c6296;
+ :b :c6297;
+ :b :c6298;
+ :b :c6299;
+ :b :c6300;
+ :b :c6301;
+ :b :c6302;
+ :b :c6303;
+ :b :c6304;
+ :b :c6305;
+ :b :c6306;
+ :b :c6307;
+ :b :c6308;
+ :b :c6309;
+ :b :c6310;
+ :b :c6311;
+ :b :c6312;
+ :b :c6313;
+ :b :c6314;
+ :b :c6315;
+ :b :c6316;
+ :b :c6317;
+ :b :c6318;
+ :b :c6319;
+ :b :c6320;
+ :b :c6321;
+ :b :c6322;
+ :b :c6323;
+ :b :c6324;
+ :b :c6325;
+ :b :c6326;
+ :b :c6327;
+ :b :c6328;
+ :b :c6329;
+ :b :c6330;
+ :b :c6331;
+ :b :c6332;
+ :b :c6333;
+ :b :c6334;
+ :b :c6335;
+ :b :c6336;
+ :b :c6337;
+ :b :c6338;
+ :b :c6339;
+ :b :c6340;
+ :b :c6341;
+ :b :c6342;
+ :b :c6343;
+ :b :c6344;
+ :b :c6345;
+ :b :c6346;
+ :b :c6347;
+ :b :c6348;
+ :b :c6349;
+ :b :c6350;
+ :b :c6351;
+ :b :c6352;
+ :b :c6353;
+ :b :c6354;
+ :b :c6355;
+ :b :c6356;
+ :b :c6357;
+ :b :c6358;
+ :b :c6359;
+ :b :c6360;
+ :b :c6361;
+ :b :c6362;
+ :b :c6363;
+ :b :c6364;
+ :b :c6365;
+ :b :c6366;
+ :b :c6367;
+ :b :c6368;
+ :b :c6369;
+ :b :c6370;
+ :b :c6371;
+ :b :c6372;
+ :b :c6373;
+ :b :c6374;
+ :b :c6375;
+ :b :c6376;
+ :b :c6377;
+ :b :c6378;
+ :b :c6379;
+ :b :c6380;
+ :b :c6381;
+ :b :c6382;
+ :b :c6383;
+ :b :c6384;
+ :b :c6385;
+ :b :c6386;
+ :b :c6387;
+ :b :c6388;
+ :b :c6389;
+ :b :c6390;
+ :b :c6391;
+ :b :c6392;
+ :b :c6393;
+ :b :c6394;
+ :b :c6395;
+ :b :c6396;
+ :b :c6397;
+ :b :c6398;
+ :b :c6399;
+ :b :c6400;
+ :b :c6401;
+ :b :c6402;
+ :b :c6403;
+ :b :c6404;
+ :b :c6405;
+ :b :c6406;
+ :b :c6407;
+ :b :c6408;
+ :b :c6409;
+ :b :c6410;
+ :b :c6411;
+ :b :c6412;
+ :b :c6413;
+ :b :c6414;
+ :b :c6415;
+ :b :c6416;
+ :b :c6417;
+ :b :c6418;
+ :b :c6419;
+ :b :c6420;
+ :b :c6421;
+ :b :c6422;
+ :b :c6423;
+ :b :c6424;
+ :b :c6425;
+ :b :c6426;
+ :b :c6427;
+ :b :c6428;
+ :b :c6429;
+ :b :c6430;
+ :b :c6431;
+ :b :c6432;
+ :b :c6433;
+ :b :c6434;
+ :b :c6435;
+ :b :c6436;
+ :b :c6437;
+ :b :c6438;
+ :b :c6439;
+ :b :c6440;
+ :b :c6441;
+ :b :c6442;
+ :b :c6443;
+ :b :c6444;
+ :b :c6445;
+ :b :c6446;
+ :b :c6447;
+ :b :c6448;
+ :b :c6449;
+ :b :c6450;
+ :b :c6451;
+ :b :c6452;
+ :b :c6453;
+ :b :c6454;
+ :b :c6455;
+ :b :c6456;
+ :b :c6457;
+ :b :c6458;
+ :b :c6459;
+ :b :c6460;
+ :b :c6461;
+ :b :c6462;
+ :b :c6463;
+ :b :c6464;
+ :b :c6465;
+ :b :c6466;
+ :b :c6467;
+ :b :c6468;
+ :b :c6469;
+ :b :c6470;
+ :b :c6471;
+ :b :c6472;
+ :b :c6473;
+ :b :c6474;
+ :b :c6475;
+ :b :c6476;
+ :b :c6477;
+ :b :c6478;
+ :b :c6479;
+ :b :c6480;
+ :b :c6481;
+ :b :c6482;
+ :b :c6483;
+ :b :c6484;
+ :b :c6485;
+ :b :c6486;
+ :b :c6487;
+ :b :c6488;
+ :b :c6489;
+ :b :c6490;
+ :b :c6491;
+ :b :c6492;
+ :b :c6493;
+ :b :c6494;
+ :b :c6495;
+ :b :c6496;
+ :b :c6497;
+ :b :c6498;
+ :b :c6499;
+ :b :c6500;
+ :b :c6501;
+ :b :c6502;
+ :b :c6503;
+ :b :c6504;
+ :b :c6505;
+ :b :c6506;
+ :b :c6507;
+ :b :c6508;
+ :b :c6509;
+ :b :c6510;
+ :b :c6511;
+ :b :c6512;
+ :b :c6513;
+ :b :c6514;
+ :b :c6515;
+ :b :c6516;
+ :b :c6517;
+ :b :c6518;
+ :b :c6519;
+ :b :c6520;
+ :b :c6521;
+ :b :c6522;
+ :b :c6523;
+ :b :c6524;
+ :b :c6525;
+ :b :c6526;
+ :b :c6527;
+ :b :c6528;
+ :b :c6529;
+ :b :c6530;
+ :b :c6531;
+ :b :c6532;
+ :b :c6533;
+ :b :c6534;
+ :b :c6535;
+ :b :c6536;
+ :b :c6537;
+ :b :c6538;
+ :b :c6539;
+ :b :c6540;
+ :b :c6541;
+ :b :c6542;
+ :b :c6543;
+ :b :c6544;
+ :b :c6545;
+ :b :c6546;
+ :b :c6547;
+ :b :c6548;
+ :b :c6549;
+ :b :c6550;
+ :b :c6551;
+ :b :c6552;
+ :b :c6553;
+ :b :c6554;
+ :b :c6555;
+ :b :c6556;
+ :b :c6557;
+ :b :c6558;
+ :b :c6559;
+ :b :c6560;
+ :b :c6561;
+ :b :c6562;
+ :b :c6563;
+ :b :c6564;
+ :b :c6565;
+ :b :c6566;
+ :b :c6567;
+ :b :c6568;
+ :b :c6569;
+ :b :c6570;
+ :b :c6571;
+ :b :c6572;
+ :b :c6573;
+ :b :c6574;
+ :b :c6575;
+ :b :c6576;
+ :b :c6577;
+ :b :c6578;
+ :b :c6579;
+ :b :c6580;
+ :b :c6581;
+ :b :c6582;
+ :b :c6583;
+ :b :c6584;
+ :b :c6585;
+ :b :c6586;
+ :b :c6587;
+ :b :c6588;
+ :b :c6589;
+ :b :c6590;
+ :b :c6591;
+ :b :c6592;
+ :b :c6593;
+ :b :c6594;
+ :b :c6595;
+ :b :c6596;
+ :b :c6597;
+ :b :c6598;
+ :b :c6599;
+ :b :c6600;
+ :b :c6601;
+ :b :c6602;
+ :b :c6603;
+ :b :c6604;
+ :b :c6605;
+ :b :c6606;
+ :b :c6607;
+ :b :c6608;
+ :b :c6609;
+ :b :c6610;
+ :b :c6611;
+ :b :c6612;
+ :b :c6613;
+ :b :c6614;
+ :b :c6615;
+ :b :c6616;
+ :b :c6617;
+ :b :c6618;
+ :b :c6619;
+ :b :c6620;
+ :b :c6621;
+ :b :c6622;
+ :b :c6623;
+ :b :c6624;
+ :b :c6625;
+ :b :c6626;
+ :b :c6627;
+ :b :c6628;
+ :b :c6629;
+ :b :c6630;
+ :b :c6631;
+ :b :c6632;
+ :b :c6633;
+ :b :c6634;
+ :b :c6635;
+ :b :c6636;
+ :b :c6637;
+ :b :c6638;
+ :b :c6639;
+ :b :c6640;
+ :b :c6641;
+ :b :c6642;
+ :b :c6643;
+ :b :c6644;
+ :b :c6645;
+ :b :c6646;
+ :b :c6647;
+ :b :c6648;
+ :b :c6649;
+ :b :c6650;
+ :b :c6651;
+ :b :c6652;
+ :b :c6653;
+ :b :c6654;
+ :b :c6655;
+ :b :c6656;
+ :b :c6657;
+ :b :c6658;
+ :b :c6659;
+ :b :c6660;
+ :b :c6661;
+ :b :c6662;
+ :b :c6663;
+ :b :c6664;
+ :b :c6665;
+ :b :c6666;
+ :b :c6667;
+ :b :c6668;
+ :b :c6669;
+ :b :c6670;
+ :b :c6671;
+ :b :c6672;
+ :b :c6673;
+ :b :c6674;
+ :b :c6675;
+ :b :c6676;
+ :b :c6677;
+ :b :c6678;
+ :b :c6679;
+ :b :c6680;
+ :b :c6681;
+ :b :c6682;
+ :b :c6683;
+ :b :c6684;
+ :b :c6685;
+ :b :c6686;
+ :b :c6687;
+ :b :c6688;
+ :b :c6689;
+ :b :c6690;
+ :b :c6691;
+ :b :c6692;
+ :b :c6693;
+ :b :c6694;
+ :b :c6695;
+ :b :c6696;
+ :b :c6697;
+ :b :c6698;
+ :b :c6699;
+ :b :c6700;
+ :b :c6701;
+ :b :c6702;
+ :b :c6703;
+ :b :c6704;
+ :b :c6705;
+ :b :c6706;
+ :b :c6707;
+ :b :c6708;
+ :b :c6709;
+ :b :c6710;
+ :b :c6711;
+ :b :c6712;
+ :b :c6713;
+ :b :c6714;
+ :b :c6715;
+ :b :c6716;
+ :b :c6717;
+ :b :c6718;
+ :b :c6719;
+ :b :c6720;
+ :b :c6721;
+ :b :c6722;
+ :b :c6723;
+ :b :c6724;
+ :b :c6725;
+ :b :c6726;
+ :b :c6727;
+ :b :c6728;
+ :b :c6729;
+ :b :c6730;
+ :b :c6731;
+ :b :c6732;
+ :b :c6733;
+ :b :c6734;
+ :b :c6735;
+ :b :c6736;
+ :b :c6737;
+ :b :c6738;
+ :b :c6739;
+ :b :c6740;
+ :b :c6741;
+ :b :c6742;
+ :b :c6743;
+ :b :c6744;
+ :b :c6745;
+ :b :c6746;
+ :b :c6747;
+ :b :c6748;
+ :b :c6749;
+ :b :c6750;
+ :b :c6751;
+ :b :c6752;
+ :b :c6753;
+ :b :c6754;
+ :b :c6755;
+ :b :c6756;
+ :b :c6757;
+ :b :c6758;
+ :b :c6759;
+ :b :c6760;
+ :b :c6761;
+ :b :c6762;
+ :b :c6763;
+ :b :c6764;
+ :b :c6765;
+ :b :c6766;
+ :b :c6767;
+ :b :c6768;
+ :b :c6769;
+ :b :c6770;
+ :b :c6771;
+ :b :c6772;
+ :b :c6773;
+ :b :c6774;
+ :b :c6775;
+ :b :c6776;
+ :b :c6777;
+ :b :c6778;
+ :b :c6779;
+ :b :c6780;
+ :b :c6781;
+ :b :c6782;
+ :b :c6783;
+ :b :c6784;
+ :b :c6785;
+ :b :c6786;
+ :b :c6787;
+ :b :c6788;
+ :b :c6789;
+ :b :c6790;
+ :b :c6791;
+ :b :c6792;
+ :b :c6793;
+ :b :c6794;
+ :b :c6795;
+ :b :c6796;
+ :b :c6797;
+ :b :c6798;
+ :b :c6799;
+ :b :c6800;
+ :b :c6801;
+ :b :c6802;
+ :b :c6803;
+ :b :c6804;
+ :b :c6805;
+ :b :c6806;
+ :b :c6807;
+ :b :c6808;
+ :b :c6809;
+ :b :c6810;
+ :b :c6811;
+ :b :c6812;
+ :b :c6813;
+ :b :c6814;
+ :b :c6815;
+ :b :c6816;
+ :b :c6817;
+ :b :c6818;
+ :b :c6819;
+ :b :c6820;
+ :b :c6821;
+ :b :c6822;
+ :b :c6823;
+ :b :c6824;
+ :b :c6825;
+ :b :c6826;
+ :b :c6827;
+ :b :c6828;
+ :b :c6829;
+ :b :c6830;
+ :b :c6831;
+ :b :c6832;
+ :b :c6833;
+ :b :c6834;
+ :b :c6835;
+ :b :c6836;
+ :b :c6837;
+ :b :c6838;
+ :b :c6839;
+ :b :c6840;
+ :b :c6841;
+ :b :c6842;
+ :b :c6843;
+ :b :c6844;
+ :b :c6845;
+ :b :c6846;
+ :b :c6847;
+ :b :c6848;
+ :b :c6849;
+ :b :c6850;
+ :b :c6851;
+ :b :c6852;
+ :b :c6853;
+ :b :c6854;
+ :b :c6855;
+ :b :c6856;
+ :b :c6857;
+ :b :c6858;
+ :b :c6859;
+ :b :c6860;
+ :b :c6861;
+ :b :c6862;
+ :b :c6863;
+ :b :c6864;
+ :b :c6865;
+ :b :c6866;
+ :b :c6867;
+ :b :c6868;
+ :b :c6869;
+ :b :c6870;
+ :b :c6871;
+ :b :c6872;
+ :b :c6873;
+ :b :c6874;
+ :b :c6875;
+ :b :c6876;
+ :b :c6877;
+ :b :c6878;
+ :b :c6879;
+ :b :c6880;
+ :b :c6881;
+ :b :c6882;
+ :b :c6883;
+ :b :c6884;
+ :b :c6885;
+ :b :c6886;
+ :b :c6887;
+ :b :c6888;
+ :b :c6889;
+ :b :c6890;
+ :b :c6891;
+ :b :c6892;
+ :b :c6893;
+ :b :c6894;
+ :b :c6895;
+ :b :c6896;
+ :b :c6897;
+ :b :c6898;
+ :b :c6899;
+ :b :c6900;
+ :b :c6901;
+ :b :c6902;
+ :b :c6903;
+ :b :c6904;
+ :b :c6905;
+ :b :c6906;
+ :b :c6907;
+ :b :c6908;
+ :b :c6909;
+ :b :c6910;
+ :b :c6911;
+ :b :c6912;
+ :b :c6913;
+ :b :c6914;
+ :b :c6915;
+ :b :c6916;
+ :b :c6917;
+ :b :c6918;
+ :b :c6919;
+ :b :c6920;
+ :b :c6921;
+ :b :c6922;
+ :b :c6923;
+ :b :c6924;
+ :b :c6925;
+ :b :c6926;
+ :b :c6927;
+ :b :c6928;
+ :b :c6929;
+ :b :c6930;
+ :b :c6931;
+ :b :c6932;
+ :b :c6933;
+ :b :c6934;
+ :b :c6935;
+ :b :c6936;
+ :b :c6937;
+ :b :c6938;
+ :b :c6939;
+ :b :c6940;
+ :b :c6941;
+ :b :c6942;
+ :b :c6943;
+ :b :c6944;
+ :b :c6945;
+ :b :c6946;
+ :b :c6947;
+ :b :c6948;
+ :b :c6949;
+ :b :c6950;
+ :b :c6951;
+ :b :c6952;
+ :b :c6953;
+ :b :c6954;
+ :b :c6955;
+ :b :c6956;
+ :b :c6957;
+ :b :c6958;
+ :b :c6959;
+ :b :c6960;
+ :b :c6961;
+ :b :c6962;
+ :b :c6963;
+ :b :c6964;
+ :b :c6965;
+ :b :c6966;
+ :b :c6967;
+ :b :c6968;
+ :b :c6969;
+ :b :c6970;
+ :b :c6971;
+ :b :c6972;
+ :b :c6973;
+ :b :c6974;
+ :b :c6975;
+ :b :c6976;
+ :b :c6977;
+ :b :c6978;
+ :b :c6979;
+ :b :c6980;
+ :b :c6981;
+ :b :c6982;
+ :b :c6983;
+ :b :c6984;
+ :b :c6985;
+ :b :c6986;
+ :b :c6987;
+ :b :c6988;
+ :b :c6989;
+ :b :c6990;
+ :b :c6991;
+ :b :c6992;
+ :b :c6993;
+ :b :c6994;
+ :b :c6995;
+ :b :c6996;
+ :b :c6997;
+ :b :c6998;
+ :b :c6999;
+ :b :c7000;
+ :b :c7001;
+ :b :c7002;
+ :b :c7003;
+ :b :c7004;
+ :b :c7005;
+ :b :c7006;
+ :b :c7007;
+ :b :c7008;
+ :b :c7009;
+ :b :c7010;
+ :b :c7011;
+ :b :c7012;
+ :b :c7013;
+ :b :c7014;
+ :b :c7015;
+ :b :c7016;
+ :b :c7017;
+ :b :c7018;
+ :b :c7019;
+ :b :c7020;
+ :b :c7021;
+ :b :c7022;
+ :b :c7023;
+ :b :c7024;
+ :b :c7025;
+ :b :c7026;
+ :b :c7027;
+ :b :c7028;
+ :b :c7029;
+ :b :c7030;
+ :b :c7031;
+ :b :c7032;
+ :b :c7033;
+ :b :c7034;
+ :b :c7035;
+ :b :c7036;
+ :b :c7037;
+ :b :c7038;
+ :b :c7039;
+ :b :c7040;
+ :b :c7041;
+ :b :c7042;
+ :b :c7043;
+ :b :c7044;
+ :b :c7045;
+ :b :c7046;
+ :b :c7047;
+ :b :c7048;
+ :b :c7049;
+ :b :c7050;
+ :b :c7051;
+ :b :c7052;
+ :b :c7053;
+ :b :c7054;
+ :b :c7055;
+ :b :c7056;
+ :b :c7057;
+ :b :c7058;
+ :b :c7059;
+ :b :c7060;
+ :b :c7061;
+ :b :c7062;
+ :b :c7063;
+ :b :c7064;
+ :b :c7065;
+ :b :c7066;
+ :b :c7067;
+ :b :c7068;
+ :b :c7069;
+ :b :c7070;
+ :b :c7071;
+ :b :c7072;
+ :b :c7073;
+ :b :c7074;
+ :b :c7075;
+ :b :c7076;
+ :b :c7077;
+ :b :c7078;
+ :b :c7079;
+ :b :c7080;
+ :b :c7081;
+ :b :c7082;
+ :b :c7083;
+ :b :c7084;
+ :b :c7085;
+ :b :c7086;
+ :b :c7087;
+ :b :c7088;
+ :b :c7089;
+ :b :c7090;
+ :b :c7091;
+ :b :c7092;
+ :b :c7093;
+ :b :c7094;
+ :b :c7095;
+ :b :c7096;
+ :b :c7097;
+ :b :c7098;
+ :b :c7099;
+ :b :c7100;
+ :b :c7101;
+ :b :c7102;
+ :b :c7103;
+ :b :c7104;
+ :b :c7105;
+ :b :c7106;
+ :b :c7107;
+ :b :c7108;
+ :b :c7109;
+ :b :c7110;
+ :b :c7111;
+ :b :c7112;
+ :b :c7113;
+ :b :c7114;
+ :b :c7115;
+ :b :c7116;
+ :b :c7117;
+ :b :c7118;
+ :b :c7119;
+ :b :c7120;
+ :b :c7121;
+ :b :c7122;
+ :b :c7123;
+ :b :c7124;
+ :b :c7125;
+ :b :c7126;
+ :b :c7127;
+ :b :c7128;
+ :b :c7129;
+ :b :c7130;
+ :b :c7131;
+ :b :c7132;
+ :b :c7133;
+ :b :c7134;
+ :b :c7135;
+ :b :c7136;
+ :b :c7137;
+ :b :c7138;
+ :b :c7139;
+ :b :c7140;
+ :b :c7141;
+ :b :c7142;
+ :b :c7143;
+ :b :c7144;
+ :b :c7145;
+ :b :c7146;
+ :b :c7147;
+ :b :c7148;
+ :b :c7149;
+ :b :c7150;
+ :b :c7151;
+ :b :c7152;
+ :b :c7153;
+ :b :c7154;
+ :b :c7155;
+ :b :c7156;
+ :b :c7157;
+ :b :c7158;
+ :b :c7159;
+ :b :c7160;
+ :b :c7161;
+ :b :c7162;
+ :b :c7163;
+ :b :c7164;
+ :b :c7165;
+ :b :c7166;
+ :b :c7167;
+ :b :c7168;
+ :b :c7169;
+ :b :c7170;
+ :b :c7171;
+ :b :c7172;
+ :b :c7173;
+ :b :c7174;
+ :b :c7175;
+ :b :c7176;
+ :b :c7177;
+ :b :c7178;
+ :b :c7179;
+ :b :c7180;
+ :b :c7181;
+ :b :c7182;
+ :b :c7183;
+ :b :c7184;
+ :b :c7185;
+ :b :c7186;
+ :b :c7187;
+ :b :c7188;
+ :b :c7189;
+ :b :c7190;
+ :b :c7191;
+ :b :c7192;
+ :b :c7193;
+ :b :c7194;
+ :b :c7195;
+ :b :c7196;
+ :b :c7197;
+ :b :c7198;
+ :b :c7199;
+ :b :c7200;
+ :b :c7201;
+ :b :c7202;
+ :b :c7203;
+ :b :c7204;
+ :b :c7205;
+ :b :c7206;
+ :b :c7207;
+ :b :c7208;
+ :b :c7209;
+ :b :c7210;
+ :b :c7211;
+ :b :c7212;
+ :b :c7213;
+ :b :c7214;
+ :b :c7215;
+ :b :c7216;
+ :b :c7217;
+ :b :c7218;
+ :b :c7219;
+ :b :c7220;
+ :b :c7221;
+ :b :c7222;
+ :b :c7223;
+ :b :c7224;
+ :b :c7225;
+ :b :c7226;
+ :b :c7227;
+ :b :c7228;
+ :b :c7229;
+ :b :c7230;
+ :b :c7231;
+ :b :c7232;
+ :b :c7233;
+ :b :c7234;
+ :b :c7235;
+ :b :c7236;
+ :b :c7237;
+ :b :c7238;
+ :b :c7239;
+ :b :c7240;
+ :b :c7241;
+ :b :c7242;
+ :b :c7243;
+ :b :c7244;
+ :b :c7245;
+ :b :c7246;
+ :b :c7247;
+ :b :c7248;
+ :b :c7249;
+ :b :c7250;
+ :b :c7251;
+ :b :c7252;
+ :b :c7253;
+ :b :c7254;
+ :b :c7255;
+ :b :c7256;
+ :b :c7257;
+ :b :c7258;
+ :b :c7259;
+ :b :c7260;
+ :b :c7261;
+ :b :c7262;
+ :b :c7263;
+ :b :c7264;
+ :b :c7265;
+ :b :c7266;
+ :b :c7267;
+ :b :c7268;
+ :b :c7269;
+ :b :c7270;
+ :b :c7271;
+ :b :c7272;
+ :b :c7273;
+ :b :c7274;
+ :b :c7275;
+ :b :c7276;
+ :b :c7277;
+ :b :c7278;
+ :b :c7279;
+ :b :c7280;
+ :b :c7281;
+ :b :c7282;
+ :b :c7283;
+ :b :c7284;
+ :b :c7285;
+ :b :c7286;
+ :b :c7287;
+ :b :c7288;
+ :b :c7289;
+ :b :c7290;
+ :b :c7291;
+ :b :c7292;
+ :b :c7293;
+ :b :c7294;
+ :b :c7295;
+ :b :c7296;
+ :b :c7297;
+ :b :c7298;
+ :b :c7299;
+ :b :c7300;
+ :b :c7301;
+ :b :c7302;
+ :b :c7303;
+ :b :c7304;
+ :b :c7305;
+ :b :c7306;
+ :b :c7307;
+ :b :c7308;
+ :b :c7309;
+ :b :c7310;
+ :b :c7311;
+ :b :c7312;
+ :b :c7313;
+ :b :c7314;
+ :b :c7315;
+ :b :c7316;
+ :b :c7317;
+ :b :c7318;
+ :b :c7319;
+ :b :c7320;
+ :b :c7321;
+ :b :c7322;
+ :b :c7323;
+ :b :c7324;
+ :b :c7325;
+ :b :c7326;
+ :b :c7327;
+ :b :c7328;
+ :b :c7329;
+ :b :c7330;
+ :b :c7331;
+ :b :c7332;
+ :b :c7333;
+ :b :c7334;
+ :b :c7335;
+ :b :c7336;
+ :b :c7337;
+ :b :c7338;
+ :b :c7339;
+ :b :c7340;
+ :b :c7341;
+ :b :c7342;
+ :b :c7343;
+ :b :c7344;
+ :b :c7345;
+ :b :c7346;
+ :b :c7347;
+ :b :c7348;
+ :b :c7349;
+ :b :c7350;
+ :b :c7351;
+ :b :c7352;
+ :b :c7353;
+ :b :c7354;
+ :b :c7355;
+ :b :c7356;
+ :b :c7357;
+ :b :c7358;
+ :b :c7359;
+ :b :c7360;
+ :b :c7361;
+ :b :c7362;
+ :b :c7363;
+ :b :c7364;
+ :b :c7365;
+ :b :c7366;
+ :b :c7367;
+ :b :c7368;
+ :b :c7369;
+ :b :c7370;
+ :b :c7371;
+ :b :c7372;
+ :b :c7373;
+ :b :c7374;
+ :b :c7375;
+ :b :c7376;
+ :b :c7377;
+ :b :c7378;
+ :b :c7379;
+ :b :c7380;
+ :b :c7381;
+ :b :c7382;
+ :b :c7383;
+ :b :c7384;
+ :b :c7385;
+ :b :c7386;
+ :b :c7387;
+ :b :c7388;
+ :b :c7389;
+ :b :c7390;
+ :b :c7391;
+ :b :c7392;
+ :b :c7393;
+ :b :c7394;
+ :b :c7395;
+ :b :c7396;
+ :b :c7397;
+ :b :c7398;
+ :b :c7399;
+ :b :c7400;
+ :b :c7401;
+ :b :c7402;
+ :b :c7403;
+ :b :c7404;
+ :b :c7405;
+ :b :c7406;
+ :b :c7407;
+ :b :c7408;
+ :b :c7409;
+ :b :c7410;
+ :b :c7411;
+ :b :c7412;
+ :b :c7413;
+ :b :c7414;
+ :b :c7415;
+ :b :c7416;
+ :b :c7417;
+ :b :c7418;
+ :b :c7419;
+ :b :c7420;
+ :b :c7421;
+ :b :c7422;
+ :b :c7423;
+ :b :c7424;
+ :b :c7425;
+ :b :c7426;
+ :b :c7427;
+ :b :c7428;
+ :b :c7429;
+ :b :c7430;
+ :b :c7431;
+ :b :c7432;
+ :b :c7433;
+ :b :c7434;
+ :b :c7435;
+ :b :c7436;
+ :b :c7437;
+ :b :c7438;
+ :b :c7439;
+ :b :c7440;
+ :b :c7441;
+ :b :c7442;
+ :b :c7443;
+ :b :c7444;
+ :b :c7445;
+ :b :c7446;
+ :b :c7447;
+ :b :c7448;
+ :b :c7449;
+ :b :c7450;
+ :b :c7451;
+ :b :c7452;
+ :b :c7453;
+ :b :c7454;
+ :b :c7455;
+ :b :c7456;
+ :b :c7457;
+ :b :c7458;
+ :b :c7459;
+ :b :c7460;
+ :b :c7461;
+ :b :c7462;
+ :b :c7463;
+ :b :c7464;
+ :b :c7465;
+ :b :c7466;
+ :b :c7467;
+ :b :c7468;
+ :b :c7469;
+ :b :c7470;
+ :b :c7471;
+ :b :c7472;
+ :b :c7473;
+ :b :c7474;
+ :b :c7475;
+ :b :c7476;
+ :b :c7477;
+ :b :c7478;
+ :b :c7479;
+ :b :c7480;
+ :b :c7481;
+ :b :c7482;
+ :b :c7483;
+ :b :c7484;
+ :b :c7485;
+ :b :c7486;
+ :b :c7487;
+ :b :c7488;
+ :b :c7489;
+ :b :c7490;
+ :b :c7491;
+ :b :c7492;
+ :b :c7493;
+ :b :c7494;
+ :b :c7495;
+ :b :c7496;
+ :b :c7497;
+ :b :c7498;
+ :b :c7499;
+ :b :c7500;
+ :b :c7501;
+ :b :c7502;
+ :b :c7503;
+ :b :c7504;
+ :b :c7505;
+ :b :c7506;
+ :b :c7507;
+ :b :c7508;
+ :b :c7509;
+ :b :c7510;
+ :b :c7511;
+ :b :c7512;
+ :b :c7513;
+ :b :c7514;
+ :b :c7515;
+ :b :c7516;
+ :b :c7517;
+ :b :c7518;
+ :b :c7519;
+ :b :c7520;
+ :b :c7521;
+ :b :c7522;
+ :b :c7523;
+ :b :c7524;
+ :b :c7525;
+ :b :c7526;
+ :b :c7527;
+ :b :c7528;
+ :b :c7529;
+ :b :c7530;
+ :b :c7531;
+ :b :c7532;
+ :b :c7533;
+ :b :c7534;
+ :b :c7535;
+ :b :c7536;
+ :b :c7537;
+ :b :c7538;
+ :b :c7539;
+ :b :c7540;
+ :b :c7541;
+ :b :c7542;
+ :b :c7543;
+ :b :c7544;
+ :b :c7545;
+ :b :c7546;
+ :b :c7547;
+ :b :c7548;
+ :b :c7549;
+ :b :c7550;
+ :b :c7551;
+ :b :c7552;
+ :b :c7553;
+ :b :c7554;
+ :b :c7555;
+ :b :c7556;
+ :b :c7557;
+ :b :c7558;
+ :b :c7559;
+ :b :c7560;
+ :b :c7561;
+ :b :c7562;
+ :b :c7563;
+ :b :c7564;
+ :b :c7565;
+ :b :c7566;
+ :b :c7567;
+ :b :c7568;
+ :b :c7569;
+ :b :c7570;
+ :b :c7571;
+ :b :c7572;
+ :b :c7573;
+ :b :c7574;
+ :b :c7575;
+ :b :c7576;
+ :b :c7577;
+ :b :c7578;
+ :b :c7579;
+ :b :c7580;
+ :b :c7581;
+ :b :c7582;
+ :b :c7583;
+ :b :c7584;
+ :b :c7585;
+ :b :c7586;
+ :b :c7587;
+ :b :c7588;
+ :b :c7589;
+ :b :c7590;
+ :b :c7591;
+ :b :c7592;
+ :b :c7593;
+ :b :c7594;
+ :b :c7595;
+ :b :c7596;
+ :b :c7597;
+ :b :c7598;
+ :b :c7599;
+ :b :c7600;
+ :b :c7601;
+ :b :c7602;
+ :b :c7603;
+ :b :c7604;
+ :b :c7605;
+ :b :c7606;
+ :b :c7607;
+ :b :c7608;
+ :b :c7609;
+ :b :c7610;
+ :b :c7611;
+ :b :c7612;
+ :b :c7613;
+ :b :c7614;
+ :b :c7615;
+ :b :c7616;
+ :b :c7617;
+ :b :c7618;
+ :b :c7619;
+ :b :c7620;
+ :b :c7621;
+ :b :c7622;
+ :b :c7623;
+ :b :c7624;
+ :b :c7625;
+ :b :c7626;
+ :b :c7627;
+ :b :c7628;
+ :b :c7629;
+ :b :c7630;
+ :b :c7631;
+ :b :c7632;
+ :b :c7633;
+ :b :c7634;
+ :b :c7635;
+ :b :c7636;
+ :b :c7637;
+ :b :c7638;
+ :b :c7639;
+ :b :c7640;
+ :b :c7641;
+ :b :c7642;
+ :b :c7643;
+ :b :c7644;
+ :b :c7645;
+ :b :c7646;
+ :b :c7647;
+ :b :c7648;
+ :b :c7649;
+ :b :c7650;
+ :b :c7651;
+ :b :c7652;
+ :b :c7653;
+ :b :c7654;
+ :b :c7655;
+ :b :c7656;
+ :b :c7657;
+ :b :c7658;
+ :b :c7659;
+ :b :c7660;
+ :b :c7661;
+ :b :c7662;
+ :b :c7663;
+ :b :c7664;
+ :b :c7665;
+ :b :c7666;
+ :b :c7667;
+ :b :c7668;
+ :b :c7669;
+ :b :c7670;
+ :b :c7671;
+ :b :c7672;
+ :b :c7673;
+ :b :c7674;
+ :b :c7675;
+ :b :c7676;
+ :b :c7677;
+ :b :c7678;
+ :b :c7679;
+ :b :c7680;
+ :b :c7681;
+ :b :c7682;
+ :b :c7683;
+ :b :c7684;
+ :b :c7685;
+ :b :c7686;
+ :b :c7687;
+ :b :c7688;
+ :b :c7689;
+ :b :c7690;
+ :b :c7691;
+ :b :c7692;
+ :b :c7693;
+ :b :c7694;
+ :b :c7695;
+ :b :c7696;
+ :b :c7697;
+ :b :c7698;
+ :b :c7699;
+ :b :c7700;
+ :b :c7701;
+ :b :c7702;
+ :b :c7703;
+ :b :c7704;
+ :b :c7705;
+ :b :c7706;
+ :b :c7707;
+ :b :c7708;
+ :b :c7709;
+ :b :c7710;
+ :b :c7711;
+ :b :c7712;
+ :b :c7713;
+ :b :c7714;
+ :b :c7715;
+ :b :c7716;
+ :b :c7717;
+ :b :c7718;
+ :b :c7719;
+ :b :c7720;
+ :b :c7721;
+ :b :c7722;
+ :b :c7723;
+ :b :c7724;
+ :b :c7725;
+ :b :c7726;
+ :b :c7727;
+ :b :c7728;
+ :b :c7729;
+ :b :c7730;
+ :b :c7731;
+ :b :c7732;
+ :b :c7733;
+ :b :c7734;
+ :b :c7735;
+ :b :c7736;
+ :b :c7737;
+ :b :c7738;
+ :b :c7739;
+ :b :c7740;
+ :b :c7741;
+ :b :c7742;
+ :b :c7743;
+ :b :c7744;
+ :b :c7745;
+ :b :c7746;
+ :b :c7747;
+ :b :c7748;
+ :b :c7749;
+ :b :c7750;
+ :b :c7751;
+ :b :c7752;
+ :b :c7753;
+ :b :c7754;
+ :b :c7755;
+ :b :c7756;
+ :b :c7757;
+ :b :c7758;
+ :b :c7759;
+ :b :c7760;
+ :b :c7761;
+ :b :c7762;
+ :b :c7763;
+ :b :c7764;
+ :b :c7765;
+ :b :c7766;
+ :b :c7767;
+ :b :c7768;
+ :b :c7769;
+ :b :c7770;
+ :b :c7771;
+ :b :c7772;
+ :b :c7773;
+ :b :c7774;
+ :b :c7775;
+ :b :c7776;
+ :b :c7777;
+ :b :c7778;
+ :b :c7779;
+ :b :c7780;
+ :b :c7781;
+ :b :c7782;
+ :b :c7783;
+ :b :c7784;
+ :b :c7785;
+ :b :c7786;
+ :b :c7787;
+ :b :c7788;
+ :b :c7789;
+ :b :c7790;
+ :b :c7791;
+ :b :c7792;
+ :b :c7793;
+ :b :c7794;
+ :b :c7795;
+ :b :c7796;
+ :b :c7797;
+ :b :c7798;
+ :b :c7799;
+ :b :c7800;
+ :b :c7801;
+ :b :c7802;
+ :b :c7803;
+ :b :c7804;
+ :b :c7805;
+ :b :c7806;
+ :b :c7807;
+ :b :c7808;
+ :b :c7809;
+ :b :c7810;
+ :b :c7811;
+ :b :c7812;
+ :b :c7813;
+ :b :c7814;
+ :b :c7815;
+ :b :c7816;
+ :b :c7817;
+ :b :c7818;
+ :b :c7819;
+ :b :c7820;
+ :b :c7821;
+ :b :c7822;
+ :b :c7823;
+ :b :c7824;
+ :b :c7825;
+ :b :c7826;
+ :b :c7827;
+ :b :c7828;
+ :b :c7829;
+ :b :c7830;
+ :b :c7831;
+ :b :c7832;
+ :b :c7833;
+ :b :c7834;
+ :b :c7835;
+ :b :c7836;
+ :b :c7837;
+ :b :c7838;
+ :b :c7839;
+ :b :c7840;
+ :b :c7841;
+ :b :c7842;
+ :b :c7843;
+ :b :c7844;
+ :b :c7845;
+ :b :c7846;
+ :b :c7847;
+ :b :c7848;
+ :b :c7849;
+ :b :c7850;
+ :b :c7851;
+ :b :c7852;
+ :b :c7853;
+ :b :c7854;
+ :b :c7855;
+ :b :c7856;
+ :b :c7857;
+ :b :c7858;
+ :b :c7859;
+ :b :c7860;
+ :b :c7861;
+ :b :c7862;
+ :b :c7863;
+ :b :c7864;
+ :b :c7865;
+ :b :c7866;
+ :b :c7867;
+ :b :c7868;
+ :b :c7869;
+ :b :c7870;
+ :b :c7871;
+ :b :c7872;
+ :b :c7873;
+ :b :c7874;
+ :b :c7875;
+ :b :c7876;
+ :b :c7877;
+ :b :c7878;
+ :b :c7879;
+ :b :c7880;
+ :b :c7881;
+ :b :c7882;
+ :b :c7883;
+ :b :c7884;
+ :b :c7885;
+ :b :c7886;
+ :b :c7887;
+ :b :c7888;
+ :b :c7889;
+ :b :c7890;
+ :b :c7891;
+ :b :c7892;
+ :b :c7893;
+ :b :c7894;
+ :b :c7895;
+ :b :c7896;
+ :b :c7897;
+ :b :c7898;
+ :b :c7899;
+ :b :c7900;
+ :b :c7901;
+ :b :c7902;
+ :b :c7903;
+ :b :c7904;
+ :b :c7905;
+ :b :c7906;
+ :b :c7907;
+ :b :c7908;
+ :b :c7909;
+ :b :c7910;
+ :b :c7911;
+ :b :c7912;
+ :b :c7913;
+ :b :c7914;
+ :b :c7915;
+ :b :c7916;
+ :b :c7917;
+ :b :c7918;
+ :b :c7919;
+ :b :c7920;
+ :b :c7921;
+ :b :c7922;
+ :b :c7923;
+ :b :c7924;
+ :b :c7925;
+ :b :c7926;
+ :b :c7927;
+ :b :c7928;
+ :b :c7929;
+ :b :c7930;
+ :b :c7931;
+ :b :c7932;
+ :b :c7933;
+ :b :c7934;
+ :b :c7935;
+ :b :c7936;
+ :b :c7937;
+ :b :c7938;
+ :b :c7939;
+ :b :c7940;
+ :b :c7941;
+ :b :c7942;
+ :b :c7943;
+ :b :c7944;
+ :b :c7945;
+ :b :c7946;
+ :b :c7947;
+ :b :c7948;
+ :b :c7949;
+ :b :c7950;
+ :b :c7951;
+ :b :c7952;
+ :b :c7953;
+ :b :c7954;
+ :b :c7955;
+ :b :c7956;
+ :b :c7957;
+ :b :c7958;
+ :b :c7959;
+ :b :c7960;
+ :b :c7961;
+ :b :c7962;
+ :b :c7963;
+ :b :c7964;
+ :b :c7965;
+ :b :c7966;
+ :b :c7967;
+ :b :c7968;
+ :b :c7969;
+ :b :c7970;
+ :b :c7971;
+ :b :c7972;
+ :b :c7973;
+ :b :c7974;
+ :b :c7975;
+ :b :c7976;
+ :b :c7977;
+ :b :c7978;
+ :b :c7979;
+ :b :c7980;
+ :b :c7981;
+ :b :c7982;
+ :b :c7983;
+ :b :c7984;
+ :b :c7985;
+ :b :c7986;
+ :b :c7987;
+ :b :c7988;
+ :b :c7989;
+ :b :c7990;
+ :b :c7991;
+ :b :c7992;
+ :b :c7993;
+ :b :c7994;
+ :b :c7995;
+ :b :c7996;
+ :b :c7997;
+ :b :c7998;
+ :b :c7999;
+ :b :c8000;
+ :b :c8001;
+ :b :c8002;
+ :b :c8003;
+ :b :c8004;
+ :b :c8005;
+ :b :c8006;
+ :b :c8007;
+ :b :c8008;
+ :b :c8009;
+ :b :c8010;
+ :b :c8011;
+ :b :c8012;
+ :b :c8013;
+ :b :c8014;
+ :b :c8015;
+ :b :c8016;
+ :b :c8017;
+ :b :c8018;
+ :b :c8019;
+ :b :c8020;
+ :b :c8021;
+ :b :c8022;
+ :b :c8023;
+ :b :c8024;
+ :b :c8025;
+ :b :c8026;
+ :b :c8027;
+ :b :c8028;
+ :b :c8029;
+ :b :c8030;
+ :b :c8031;
+ :b :c8032;
+ :b :c8033;
+ :b :c8034;
+ :b :c8035;
+ :b :c8036;
+ :b :c8037;
+ :b :c8038;
+ :b :c8039;
+ :b :c8040;
+ :b :c8041;
+ :b :c8042;
+ :b :c8043;
+ :b :c8044;
+ :b :c8045;
+ :b :c8046;
+ :b :c8047;
+ :b :c8048;
+ :b :c8049;
+ :b :c8050;
+ :b :c8051;
+ :b :c8052;
+ :b :c8053;
+ :b :c8054;
+ :b :c8055;
+ :b :c8056;
+ :b :c8057;
+ :b :c8058;
+ :b :c8059;
+ :b :c8060;
+ :b :c8061;
+ :b :c8062;
+ :b :c8063;
+ :b :c8064;
+ :b :c8065;
+ :b :c8066;
+ :b :c8067;
+ :b :c8068;
+ :b :c8069;
+ :b :c8070;
+ :b :c8071;
+ :b :c8072;
+ :b :c8073;
+ :b :c8074;
+ :b :c8075;
+ :b :c8076;
+ :b :c8077;
+ :b :c8078;
+ :b :c8079;
+ :b :c8080;
+ :b :c8081;
+ :b :c8082;
+ :b :c8083;
+ :b :c8084;
+ :b :c8085;
+ :b :c8086;
+ :b :c8087;
+ :b :c8088;
+ :b :c8089;
+ :b :c8090;
+ :b :c8091;
+ :b :c8092;
+ :b :c8093;
+ :b :c8094;
+ :b :c8095;
+ :b :c8096;
+ :b :c8097;
+ :b :c8098;
+ :b :c8099;
+ :b :c8100;
+ :b :c8101;
+ :b :c8102;
+ :b :c8103;
+ :b :c8104;
+ :b :c8105;
+ :b :c8106;
+ :b :c8107;
+ :b :c8108;
+ :b :c8109;
+ :b :c8110;
+ :b :c8111;
+ :b :c8112;
+ :b :c8113;
+ :b :c8114;
+ :b :c8115;
+ :b :c8116;
+ :b :c8117;
+ :b :c8118;
+ :b :c8119;
+ :b :c8120;
+ :b :c8121;
+ :b :c8122;
+ :b :c8123;
+ :b :c8124;
+ :b :c8125;
+ :b :c8126;
+ :b :c8127;
+ :b :c8128;
+ :b :c8129;
+ :b :c8130;
+ :b :c8131;
+ :b :c8132;
+ :b :c8133;
+ :b :c8134;
+ :b :c8135;
+ :b :c8136;
+ :b :c8137;
+ :b :c8138;
+ :b :c8139;
+ :b :c8140;
+ :b :c8141;
+ :b :c8142;
+ :b :c8143;
+ :b :c8144;
+ :b :c8145;
+ :b :c8146;
+ :b :c8147;
+ :b :c8148;
+ :b :c8149;
+ :b :c8150;
+ :b :c8151;
+ :b :c8152;
+ :b :c8153;
+ :b :c8154;
+ :b :c8155;
+ :b :c8156;
+ :b :c8157;
+ :b :c8158;
+ :b :c8159;
+ :b :c8160;
+ :b :c8161;
+ :b :c8162;
+ :b :c8163;
+ :b :c8164;
+ :b :c8165;
+ :b :c8166;
+ :b :c8167;
+ :b :c8168;
+ :b :c8169;
+ :b :c8170;
+ :b :c8171;
+ :b :c8172;
+ :b :c8173;
+ :b :c8174;
+ :b :c8175;
+ :b :c8176;
+ :b :c8177;
+ :b :c8178;
+ :b :c8179;
+ :b :c8180;
+ :b :c8181;
+ :b :c8182;
+ :b :c8183;
+ :b :c8184;
+ :b :c8185;
+ :b :c8186;
+ :b :c8187;
+ :b :c8188;
+ :b :c8189;
+ :b :c8190;
+ :b :c8191;
+ :b :c8192;
+ :b :c8193;
+ :b :c8194;
+ :b :c8195;
+ :b :c8196;
+ :b :c8197;
+ :b :c8198;
+ :b :c8199;
+ :b :c8200;
+ :b :c8201;
+ :b :c8202;
+ :b :c8203;
+ :b :c8204;
+ :b :c8205;
+ :b :c8206;
+ :b :c8207;
+ :b :c8208;
+ :b :c8209;
+ :b :c8210;
+ :b :c8211;
+ :b :c8212;
+ :b :c8213;
+ :b :c8214;
+ :b :c8215;
+ :b :c8216;
+ :b :c8217;
+ :b :c8218;
+ :b :c8219;
+ :b :c8220;
+ :b :c8221;
+ :b :c8222;
+ :b :c8223;
+ :b :c8224;
+ :b :c8225;
+ :b :c8226;
+ :b :c8227;
+ :b :c8228;
+ :b :c8229;
+ :b :c8230;
+ :b :c8231;
+ :b :c8232;
+ :b :c8233;
+ :b :c8234;
+ :b :c8235;
+ :b :c8236;
+ :b :c8237;
+ :b :c8238;
+ :b :c8239;
+ :b :c8240;
+ :b :c8241;
+ :b :c8242;
+ :b :c8243;
+ :b :c8244;
+ :b :c8245;
+ :b :c8246;
+ :b :c8247;
+ :b :c8248;
+ :b :c8249;
+ :b :c8250;
+ :b :c8251;
+ :b :c8252;
+ :b :c8253;
+ :b :c8254;
+ :b :c8255;
+ :b :c8256;
+ :b :c8257;
+ :b :c8258;
+ :b :c8259;
+ :b :c8260;
+ :b :c8261;
+ :b :c8262;
+ :b :c8263;
+ :b :c8264;
+ :b :c8265;
+ :b :c8266;
+ :b :c8267;
+ :b :c8268;
+ :b :c8269;
+ :b :c8270;
+ :b :c8271;
+ :b :c8272;
+ :b :c8273;
+ :b :c8274;
+ :b :c8275;
+ :b :c8276;
+ :b :c8277;
+ :b :c8278;
+ :b :c8279;
+ :b :c8280;
+ :b :c8281;
+ :b :c8282;
+ :b :c8283;
+ :b :c8284;
+ :b :c8285;
+ :b :c8286;
+ :b :c8287;
+ :b :c8288;
+ :b :c8289;
+ :b :c8290;
+ :b :c8291;
+ :b :c8292;
+ :b :c8293;
+ :b :c8294;
+ :b :c8295;
+ :b :c8296;
+ :b :c8297;
+ :b :c8298;
+ :b :c8299;
+ :b :c8300;
+ :b :c8301;
+ :b :c8302;
+ :b :c8303;
+ :b :c8304;
+ :b :c8305;
+ :b :c8306;
+ :b :c8307;
+ :b :c8308;
+ :b :c8309;
+ :b :c8310;
+ :b :c8311;
+ :b :c8312;
+ :b :c8313;
+ :b :c8314;
+ :b :c8315;
+ :b :c8316;
+ :b :c8317;
+ :b :c8318;
+ :b :c8319;
+ :b :c8320;
+ :b :c8321;
+ :b :c8322;
+ :b :c8323;
+ :b :c8324;
+ :b :c8325;
+ :b :c8326;
+ :b :c8327;
+ :b :c8328;
+ :b :c8329;
+ :b :c8330;
+ :b :c8331;
+ :b :c8332;
+ :b :c8333;
+ :b :c8334;
+ :b :c8335;
+ :b :c8336;
+ :b :c8337;
+ :b :c8338;
+ :b :c8339;
+ :b :c8340;
+ :b :c8341;
+ :b :c8342;
+ :b :c8343;
+ :b :c8344;
+ :b :c8345;
+ :b :c8346;
+ :b :c8347;
+ :b :c8348;
+ :b :c8349;
+ :b :c8350;
+ :b :c8351;
+ :b :c8352;
+ :b :c8353;
+ :b :c8354;
+ :b :c8355;
+ :b :c8356;
+ :b :c8357;
+ :b :c8358;
+ :b :c8359;
+ :b :c8360;
+ :b :c8361;
+ :b :c8362;
+ :b :c8363;
+ :b :c8364;
+ :b :c8365;
+ :b :c8366;
+ :b :c8367;
+ :b :c8368;
+ :b :c8369;
+ :b :c8370;
+ :b :c8371;
+ :b :c8372;
+ :b :c8373;
+ :b :c8374;
+ :b :c8375;
+ :b :c8376;
+ :b :c8377;
+ :b :c8378;
+ :b :c8379;
+ :b :c8380;
+ :b :c8381;
+ :b :c8382;
+ :b :c8383;
+ :b :c8384;
+ :b :c8385;
+ :b :c8386;
+ :b :c8387;
+ :b :c8388;
+ :b :c8389;
+ :b :c8390;
+ :b :c8391;
+ :b :c8392;
+ :b :c8393;
+ :b :c8394;
+ :b :c8395;
+ :b :c8396;
+ :b :c8397;
+ :b :c8398;
+ :b :c8399;
+ :b :c8400;
+ :b :c8401;
+ :b :c8402;
+ :b :c8403;
+ :b :c8404;
+ :b :c8405;
+ :b :c8406;
+ :b :c8407;
+ :b :c8408;
+ :b :c8409;
+ :b :c8410;
+ :b :c8411;
+ :b :c8412;
+ :b :c8413;
+ :b :c8414;
+ :b :c8415;
+ :b :c8416;
+ :b :c8417;
+ :b :c8418;
+ :b :c8419;
+ :b :c8420;
+ :b :c8421;
+ :b :c8422;
+ :b :c8423;
+ :b :c8424;
+ :b :c8425;
+ :b :c8426;
+ :b :c8427;
+ :b :c8428;
+ :b :c8429;
+ :b :c8430;
+ :b :c8431;
+ :b :c8432;
+ :b :c8433;
+ :b :c8434;
+ :b :c8435;
+ :b :c8436;
+ :b :c8437;
+ :b :c8438;
+ :b :c8439;
+ :b :c8440;
+ :b :c8441;
+ :b :c8442;
+ :b :c8443;
+ :b :c8444;
+ :b :c8445;
+ :b :c8446;
+ :b :c8447;
+ :b :c8448;
+ :b :c8449;
+ :b :c8450;
+ :b :c8451;
+ :b :c8452;
+ :b :c8453;
+ :b :c8454;
+ :b :c8455;
+ :b :c8456;
+ :b :c8457;
+ :b :c8458;
+ :b :c8459;
+ :b :c8460;
+ :b :c8461;
+ :b :c8462;
+ :b :c8463;
+ :b :c8464;
+ :b :c8465;
+ :b :c8466;
+ :b :c8467;
+ :b :c8468;
+ :b :c8469;
+ :b :c8470;
+ :b :c8471;
+ :b :c8472;
+ :b :c8473;
+ :b :c8474;
+ :b :c8475;
+ :b :c8476;
+ :b :c8477;
+ :b :c8478;
+ :b :c8479;
+ :b :c8480;
+ :b :c8481;
+ :b :c8482;
+ :b :c8483;
+ :b :c8484;
+ :b :c8485;
+ :b :c8486;
+ :b :c8487;
+ :b :c8488;
+ :b :c8489;
+ :b :c8490;
+ :b :c8491;
+ :b :c8492;
+ :b :c8493;
+ :b :c8494;
+ :b :c8495;
+ :b :c8496;
+ :b :c8497;
+ :b :c8498;
+ :b :c8499;
+ :b :c8500;
+ :b :c8501;
+ :b :c8502;
+ :b :c8503;
+ :b :c8504;
+ :b :c8505;
+ :b :c8506;
+ :b :c8507;
+ :b :c8508;
+ :b :c8509;
+ :b :c8510;
+ :b :c8511;
+ :b :c8512;
+ :b :c8513;
+ :b :c8514;
+ :b :c8515;
+ :b :c8516;
+ :b :c8517;
+ :b :c8518;
+ :b :c8519;
+ :b :c8520;
+ :b :c8521;
+ :b :c8522;
+ :b :c8523;
+ :b :c8524;
+ :b :c8525;
+ :b :c8526;
+ :b :c8527;
+ :b :c8528;
+ :b :c8529;
+ :b :c8530;
+ :b :c8531;
+ :b :c8532;
+ :b :c8533;
+ :b :c8534;
+ :b :c8535;
+ :b :c8536;
+ :b :c8537;
+ :b :c8538;
+ :b :c8539;
+ :b :c8540;
+ :b :c8541;
+ :b :c8542;
+ :b :c8543;
+ :b :c8544;
+ :b :c8545;
+ :b :c8546;
+ :b :c8547;
+ :b :c8548;
+ :b :c8549;
+ :b :c8550;
+ :b :c8551;
+ :b :c8552;
+ :b :c8553;
+ :b :c8554;
+ :b :c8555;
+ :b :c8556;
+ :b :c8557;
+ :b :c8558;
+ :b :c8559;
+ :b :c8560;
+ :b :c8561;
+ :b :c8562;
+ :b :c8563;
+ :b :c8564;
+ :b :c8565;
+ :b :c8566;
+ :b :c8567;
+ :b :c8568;
+ :b :c8569;
+ :b :c8570;
+ :b :c8571;
+ :b :c8572;
+ :b :c8573;
+ :b :c8574;
+ :b :c8575;
+ :b :c8576;
+ :b :c8577;
+ :b :c8578;
+ :b :c8579;
+ :b :c8580;
+ :b :c8581;
+ :b :c8582;
+ :b :c8583;
+ :b :c8584;
+ :b :c8585;
+ :b :c8586;
+ :b :c8587;
+ :b :c8588;
+ :b :c8589;
+ :b :c8590;
+ :b :c8591;
+ :b :c8592;
+ :b :c8593;
+ :b :c8594;
+ :b :c8595;
+ :b :c8596;
+ :b :c8597;
+ :b :c8598;
+ :b :c8599;
+ :b :c8600;
+ :b :c8601;
+ :b :c8602;
+ :b :c8603;
+ :b :c8604;
+ :b :c8605;
+ :b :c8606;
+ :b :c8607;
+ :b :c8608;
+ :b :c8609;
+ :b :c8610;
+ :b :c8611;
+ :b :c8612;
+ :b :c8613;
+ :b :c8614;
+ :b :c8615;
+ :b :c8616;
+ :b :c8617;
+ :b :c8618;
+ :b :c8619;
+ :b :c8620;
+ :b :c8621;
+ :b :c8622;
+ :b :c8623;
+ :b :c8624;
+ :b :c8625;
+ :b :c8626;
+ :b :c8627;
+ :b :c8628;
+ :b :c8629;
+ :b :c8630;
+ :b :c8631;
+ :b :c8632;
+ :b :c8633;
+ :b :c8634;
+ :b :c8635;
+ :b :c8636;
+ :b :c8637;
+ :b :c8638;
+ :b :c8639;
+ :b :c8640;
+ :b :c8641;
+ :b :c8642;
+ :b :c8643;
+ :b :c8644;
+ :b :c8645;
+ :b :c8646;
+ :b :c8647;
+ :b :c8648;
+ :b :c8649;
+ :b :c8650;
+ :b :c8651;
+ :b :c8652;
+ :b :c8653;
+ :b :c8654;
+ :b :c8655;
+ :b :c8656;
+ :b :c8657;
+ :b :c8658;
+ :b :c8659;
+ :b :c8660;
+ :b :c8661;
+ :b :c8662;
+ :b :c8663;
+ :b :c8664;
+ :b :c8665;
+ :b :c8666;
+ :b :c8667;
+ :b :c8668;
+ :b :c8669;
+ :b :c8670;
+ :b :c8671;
+ :b :c8672;
+ :b :c8673;
+ :b :c8674;
+ :b :c8675;
+ :b :c8676;
+ :b :c8677;
+ :b :c8678;
+ :b :c8679;
+ :b :c8680;
+ :b :c8681;
+ :b :c8682;
+ :b :c8683;
+ :b :c8684;
+ :b :c8685;
+ :b :c8686;
+ :b :c8687;
+ :b :c8688;
+ :b :c8689;
+ :b :c8690;
+ :b :c8691;
+ :b :c8692;
+ :b :c8693;
+ :b :c8694;
+ :b :c8695;
+ :b :c8696;
+ :b :c8697;
+ :b :c8698;
+ :b :c8699;
+ :b :c8700;
+ :b :c8701;
+ :b :c8702;
+ :b :c8703;
+ :b :c8704;
+ :b :c8705;
+ :b :c8706;
+ :b :c8707;
+ :b :c8708;
+ :b :c8709;
+ :b :c8710;
+ :b :c8711;
+ :b :c8712;
+ :b :c8713;
+ :b :c8714;
+ :b :c8715;
+ :b :c8716;
+ :b :c8717;
+ :b :c8718;
+ :b :c8719;
+ :b :c8720;
+ :b :c8721;
+ :b :c8722;
+ :b :c8723;
+ :b :c8724;
+ :b :c8725;
+ :b :c8726;
+ :b :c8727;
+ :b :c8728;
+ :b :c8729;
+ :b :c8730;
+ :b :c8731;
+ :b :c8732;
+ :b :c8733;
+ :b :c8734;
+ :b :c8735;
+ :b :c8736;
+ :b :c8737;
+ :b :c8738;
+ :b :c8739;
+ :b :c8740;
+ :b :c8741;
+ :b :c8742;
+ :b :c8743;
+ :b :c8744;
+ :b :c8745;
+ :b :c8746;
+ :b :c8747;
+ :b :c8748;
+ :b :c8749;
+ :b :c8750;
+ :b :c8751;
+ :b :c8752;
+ :b :c8753;
+ :b :c8754;
+ :b :c8755;
+ :b :c8756;
+ :b :c8757;
+ :b :c8758;
+ :b :c8759;
+ :b :c8760;
+ :b :c8761;
+ :b :c8762;
+ :b :c8763;
+ :b :c8764;
+ :b :c8765;
+ :b :c8766;
+ :b :c8767;
+ :b :c8768;
+ :b :c8769;
+ :b :c8770;
+ :b :c8771;
+ :b :c8772;
+ :b :c8773;
+ :b :c8774;
+ :b :c8775;
+ :b :c8776;
+ :b :c8777;
+ :b :c8778;
+ :b :c8779;
+ :b :c8780;
+ :b :c8781;
+ :b :c8782;
+ :b :c8783;
+ :b :c8784;
+ :b :c8785;
+ :b :c8786;
+ :b :c8787;
+ :b :c8788;
+ :b :c8789;
+ :b :c8790;
+ :b :c8791;
+ :b :c8792;
+ :b :c8793;
+ :b :c8794;
+ :b :c8795;
+ :b :c8796;
+ :b :c8797;
+ :b :c8798;
+ :b :c8799;
+ :b :c8800;
+ :b :c8801;
+ :b :c8802;
+ :b :c8803;
+ :b :c8804;
+ :b :c8805;
+ :b :c8806;
+ :b :c8807;
+ :b :c8808;
+ :b :c8809;
+ :b :c8810;
+ :b :c8811;
+ :b :c8812;
+ :b :c8813;
+ :b :c8814;
+ :b :c8815;
+ :b :c8816;
+ :b :c8817;
+ :b :c8818;
+ :b :c8819;
+ :b :c8820;
+ :b :c8821;
+ :b :c8822;
+ :b :c8823;
+ :b :c8824;
+ :b :c8825;
+ :b :c8826;
+ :b :c8827;
+ :b :c8828;
+ :b :c8829;
+ :b :c8830;
+ :b :c8831;
+ :b :c8832;
+ :b :c8833;
+ :b :c8834;
+ :b :c8835;
+ :b :c8836;
+ :b :c8837;
+ :b :c8838;
+ :b :c8839;
+ :b :c8840;
+ :b :c8841;
+ :b :c8842;
+ :b :c8843;
+ :b :c8844;
+ :b :c8845;
+ :b :c8846;
+ :b :c8847;
+ :b :c8848;
+ :b :c8849;
+ :b :c8850;
+ :b :c8851;
+ :b :c8852;
+ :b :c8853;
+ :b :c8854;
+ :b :c8855;
+ :b :c8856;
+ :b :c8857;
+ :b :c8858;
+ :b :c8859;
+ :b :c8860;
+ :b :c8861;
+ :b :c8862;
+ :b :c8863;
+ :b :c8864;
+ :b :c8865;
+ :b :c8866;
+ :b :c8867;
+ :b :c8868;
+ :b :c8869;
+ :b :c8870;
+ :b :c8871;
+ :b :c8872;
+ :b :c8873;
+ :b :c8874;
+ :b :c8875;
+ :b :c8876;
+ :b :c8877;
+ :b :c8878;
+ :b :c8879;
+ :b :c8880;
+ :b :c8881;
+ :b :c8882;
+ :b :c8883;
+ :b :c8884;
+ :b :c8885;
+ :b :c8886;
+ :b :c8887;
+ :b :c8888;
+ :b :c8889;
+ :b :c8890;
+ :b :c8891;
+ :b :c8892;
+ :b :c8893;
+ :b :c8894;
+ :b :c8895;
+ :b :c8896;
+ :b :c8897;
+ :b :c8898;
+ :b :c8899;
+ :b :c8900;
+ :b :c8901;
+ :b :c8902;
+ :b :c8903;
+ :b :c8904;
+ :b :c8905;
+ :b :c8906;
+ :b :c8907;
+ :b :c8908;
+ :b :c8909;
+ :b :c8910;
+ :b :c8911;
+ :b :c8912;
+ :b :c8913;
+ :b :c8914;
+ :b :c8915;
+ :b :c8916;
+ :b :c8917;
+ :b :c8918;
+ :b :c8919;
+ :b :c8920;
+ :b :c8921;
+ :b :c8922;
+ :b :c8923;
+ :b :c8924;
+ :b :c8925;
+ :b :c8926;
+ :b :c8927;
+ :b :c8928;
+ :b :c8929;
+ :b :c8930;
+ :b :c8931;
+ :b :c8932;
+ :b :c8933;
+ :b :c8934;
+ :b :c8935;
+ :b :c8936;
+ :b :c8937;
+ :b :c8938;
+ :b :c8939;
+ :b :c8940;
+ :b :c8941;
+ :b :c8942;
+ :b :c8943;
+ :b :c8944;
+ :b :c8945;
+ :b :c8946;
+ :b :c8947;
+ :b :c8948;
+ :b :c8949;
+ :b :c8950;
+ :b :c8951;
+ :b :c8952;
+ :b :c8953;
+ :b :c8954;
+ :b :c8955;
+ :b :c8956;
+ :b :c8957;
+ :b :c8958;
+ :b :c8959;
+ :b :c8960;
+ :b :c8961;
+ :b :c8962;
+ :b :c8963;
+ :b :c8964;
+ :b :c8965;
+ :b :c8966;
+ :b :c8967;
+ :b :c8968;
+ :b :c8969;
+ :b :c8970;
+ :b :c8971;
+ :b :c8972;
+ :b :c8973;
+ :b :c8974;
+ :b :c8975;
+ :b :c8976;
+ :b :c8977;
+ :b :c8978;
+ :b :c8979;
+ :b :c8980;
+ :b :c8981;
+ :b :c8982;
+ :b :c8983;
+ :b :c8984;
+ :b :c8985;
+ :b :c8986;
+ :b :c8987;
+ :b :c8988;
+ :b :c8989;
+ :b :c8990;
+ :b :c8991;
+ :b :c8992;
+ :b :c8993;
+ :b :c8994;
+ :b :c8995;
+ :b :c8996;
+ :b :c8997;
+ :b :c8998;
+ :b :c8999;
+ :b :c9000;
+ :b :c9001;
+ :b :c9002;
+ :b :c9003;
+ :b :c9004;
+ :b :c9005;
+ :b :c9006;
+ :b :c9007;
+ :b :c9008;
+ :b :c9009;
+ :b :c9010;
+ :b :c9011;
+ :b :c9012;
+ :b :c9013;
+ :b :c9014;
+ :b :c9015;
+ :b :c9016;
+ :b :c9017;
+ :b :c9018;
+ :b :c9019;
+ :b :c9020;
+ :b :c9021;
+ :b :c9022;
+ :b :c9023;
+ :b :c9024;
+ :b :c9025;
+ :b :c9026;
+ :b :c9027;
+ :b :c9028;
+ :b :c9029;
+ :b :c9030;
+ :b :c9031;
+ :b :c9032;
+ :b :c9033;
+ :b :c9034;
+ :b :c9035;
+ :b :c9036;
+ :b :c9037;
+ :b :c9038;
+ :b :c9039;
+ :b :c9040;
+ :b :c9041;
+ :b :c9042;
+ :b :c9043;
+ :b :c9044;
+ :b :c9045;
+ :b :c9046;
+ :b :c9047;
+ :b :c9048;
+ :b :c9049;
+ :b :c9050;
+ :b :c9051;
+ :b :c9052;
+ :b :c9053;
+ :b :c9054;
+ :b :c9055;
+ :b :c9056;
+ :b :c9057;
+ :b :c9058;
+ :b :c9059;
+ :b :c9060;
+ :b :c9061;
+ :b :c9062;
+ :b :c9063;
+ :b :c9064;
+ :b :c9065;
+ :b :c9066;
+ :b :c9067;
+ :b :c9068;
+ :b :c9069;
+ :b :c9070;
+ :b :c9071;
+ :b :c9072;
+ :b :c9073;
+ :b :c9074;
+ :b :c9075;
+ :b :c9076;
+ :b :c9077;
+ :b :c9078;
+ :b :c9079;
+ :b :c9080;
+ :b :c9081;
+ :b :c9082;
+ :b :c9083;
+ :b :c9084;
+ :b :c9085;
+ :b :c9086;
+ :b :c9087;
+ :b :c9088;
+ :b :c9089;
+ :b :c9090;
+ :b :c9091;
+ :b :c9092;
+ :b :c9093;
+ :b :c9094;
+ :b :c9095;
+ :b :c9096;
+ :b :c9097;
+ :b :c9098;
+ :b :c9099;
+ :b :c9100;
+ :b :c9101;
+ :b :c9102;
+ :b :c9103;
+ :b :c9104;
+ :b :c9105;
+ :b :c9106;
+ :b :c9107;
+ :b :c9108;
+ :b :c9109;
+ :b :c9110;
+ :b :c9111;
+ :b :c9112;
+ :b :c9113;
+ :b :c9114;
+ :b :c9115;
+ :b :c9116;
+ :b :c9117;
+ :b :c9118;
+ :b :c9119;
+ :b :c9120;
+ :b :c9121;
+ :b :c9122;
+ :b :c9123;
+ :b :c9124;
+ :b :c9125;
+ :b :c9126;
+ :b :c9127;
+ :b :c9128;
+ :b :c9129;
+ :b :c9130;
+ :b :c9131;
+ :b :c9132;
+ :b :c9133;
+ :b :c9134;
+ :b :c9135;
+ :b :c9136;
+ :b :c9137;
+ :b :c9138;
+ :b :c9139;
+ :b :c9140;
+ :b :c9141;
+ :b :c9142;
+ :b :c9143;
+ :b :c9144;
+ :b :c9145;
+ :b :c9146;
+ :b :c9147;
+ :b :c9148;
+ :b :c9149;
+ :b :c9150;
+ :b :c9151;
+ :b :c9152;
+ :b :c9153;
+ :b :c9154;
+ :b :c9155;
+ :b :c9156;
+ :b :c9157;
+ :b :c9158;
+ :b :c9159;
+ :b :c9160;
+ :b :c9161;
+ :b :c9162;
+ :b :c9163;
+ :b :c9164;
+ :b :c9165;
+ :b :c9166;
+ :b :c9167;
+ :b :c9168;
+ :b :c9169;
+ :b :c9170;
+ :b :c9171;
+ :b :c9172;
+ :b :c9173;
+ :b :c9174;
+ :b :c9175;
+ :b :c9176;
+ :b :c9177;
+ :b :c9178;
+ :b :c9179;
+ :b :c9180;
+ :b :c9181;
+ :b :c9182;
+ :b :c9183;
+ :b :c9184;
+ :b :c9185;
+ :b :c9186;
+ :b :c9187;
+ :b :c9188;
+ :b :c9189;
+ :b :c9190;
+ :b :c9191;
+ :b :c9192;
+ :b :c9193;
+ :b :c9194;
+ :b :c9195;
+ :b :c9196;
+ :b :c9197;
+ :b :c9198;
+ :b :c9199;
+ :b :c9200;
+ :b :c9201;
+ :b :c9202;
+ :b :c9203;
+ :b :c9204;
+ :b :c9205;
+ :b :c9206;
+ :b :c9207;
+ :b :c9208;
+ :b :c9209;
+ :b :c9210;
+ :b :c9211;
+ :b :c9212;
+ :b :c9213;
+ :b :c9214;
+ :b :c9215;
+ :b :c9216;
+ :b :c9217;
+ :b :c9218;
+ :b :c9219;
+ :b :c9220;
+ :b :c9221;
+ :b :c9222;
+ :b :c9223;
+ :b :c9224;
+ :b :c9225;
+ :b :c9226;
+ :b :c9227;
+ :b :c9228;
+ :b :c9229;
+ :b :c9230;
+ :b :c9231;
+ :b :c9232;
+ :b :c9233;
+ :b :c9234;
+ :b :c9235;
+ :b :c9236;
+ :b :c9237;
+ :b :c9238;
+ :b :c9239;
+ :b :c9240;
+ :b :c9241;
+ :b :c9242;
+ :b :c9243;
+ :b :c9244;
+ :b :c9245;
+ :b :c9246;
+ :b :c9247;
+ :b :c9248;
+ :b :c9249;
+ :b :c9250;
+ :b :c9251;
+ :b :c9252;
+ :b :c9253;
+ :b :c9254;
+ :b :c9255;
+ :b :c9256;
+ :b :c9257;
+ :b :c9258;
+ :b :c9259;
+ :b :c9260;
+ :b :c9261;
+ :b :c9262;
+ :b :c9263;
+ :b :c9264;
+ :b :c9265;
+ :b :c9266;
+ :b :c9267;
+ :b :c9268;
+ :b :c9269;
+ :b :c9270;
+ :b :c9271;
+ :b :c9272;
+ :b :c9273;
+ :b :c9274;
+ :b :c9275;
+ :b :c9276;
+ :b :c9277;
+ :b :c9278;
+ :b :c9279;
+ :b :c9280;
+ :b :c9281;
+ :b :c9282;
+ :b :c9283;
+ :b :c9284;
+ :b :c9285;
+ :b :c9286;
+ :b :c9287;
+ :b :c9288;
+ :b :c9289;
+ :b :c9290;
+ :b :c9291;
+ :b :c9292;
+ :b :c9293;
+ :b :c9294;
+ :b :c9295;
+ :b :c9296;
+ :b :c9297;
+ :b :c9298;
+ :b :c9299;
+ :b :c9300;
+ :b :c9301;
+ :b :c9302;
+ :b :c9303;
+ :b :c9304;
+ :b :c9305;
+ :b :c9306;
+ :b :c9307;
+ :b :c9308;
+ :b :c9309;
+ :b :c9310;
+ :b :c9311;
+ :b :c9312;
+ :b :c9313;
+ :b :c9314;
+ :b :c9315;
+ :b :c9316;
+ :b :c9317;
+ :b :c9318;
+ :b :c9319;
+ :b :c9320;
+ :b :c9321;
+ :b :c9322;
+ :b :c9323;
+ :b :c9324;
+ :b :c9325;
+ :b :c9326;
+ :b :c9327;
+ :b :c9328;
+ :b :c9329;
+ :b :c9330;
+ :b :c9331;
+ :b :c9332;
+ :b :c9333;
+ :b :c9334;
+ :b :c9335;
+ :b :c9336;
+ :b :c9337;
+ :b :c9338;
+ :b :c9339;
+ :b :c9340;
+ :b :c9341;
+ :b :c9342;
+ :b :c9343;
+ :b :c9344;
+ :b :c9345;
+ :b :c9346;
+ :b :c9347;
+ :b :c9348;
+ :b :c9349;
+ :b :c9350;
+ :b :c9351;
+ :b :c9352;
+ :b :c9353;
+ :b :c9354;
+ :b :c9355;
+ :b :c9356;
+ :b :c9357;
+ :b :c9358;
+ :b :c9359;
+ :b :c9360;
+ :b :c9361;
+ :b :c9362;
+ :b :c9363;
+ :b :c9364;
+ :b :c9365;
+ :b :c9366;
+ :b :c9367;
+ :b :c9368;
+ :b :c9369;
+ :b :c9370;
+ :b :c9371;
+ :b :c9372;
+ :b :c9373;
+ :b :c9374;
+ :b :c9375;
+ :b :c9376;
+ :b :c9377;
+ :b :c9378;
+ :b :c9379;
+ :b :c9380;
+ :b :c9381;
+ :b :c9382;
+ :b :c9383;
+ :b :c9384;
+ :b :c9385;
+ :b :c9386;
+ :b :c9387;
+ :b :c9388;
+ :b :c9389;
+ :b :c9390;
+ :b :c9391;
+ :b :c9392;
+ :b :c9393;
+ :b :c9394;
+ :b :c9395;
+ :b :c9396;
+ :b :c9397;
+ :b :c9398;
+ :b :c9399;
+ :b :c9400;
+ :b :c9401;
+ :b :c9402;
+ :b :c9403;
+ :b :c9404;
+ :b :c9405;
+ :b :c9406;
+ :b :c9407;
+ :b :c9408;
+ :b :c9409;
+ :b :c9410;
+ :b :c9411;
+ :b :c9412;
+ :b :c9413;
+ :b :c9414;
+ :b :c9415;
+ :b :c9416;
+ :b :c9417;
+ :b :c9418;
+ :b :c9419;
+ :b :c9420;
+ :b :c9421;
+ :b :c9422;
+ :b :c9423;
+ :b :c9424;
+ :b :c9425;
+ :b :c9426;
+ :b :c9427;
+ :b :c9428;
+ :b :c9429;
+ :b :c9430;
+ :b :c9431;
+ :b :c9432;
+ :b :c9433;
+ :b :c9434;
+ :b :c9435;
+ :b :c9436;
+ :b :c9437;
+ :b :c9438;
+ :b :c9439;
+ :b :c9440;
+ :b :c9441;
+ :b :c9442;
+ :b :c9443;
+ :b :c9444;
+ :b :c9445;
+ :b :c9446;
+ :b :c9447;
+ :b :c9448;
+ :b :c9449;
+ :b :c9450;
+ :b :c9451;
+ :b :c9452;
+ :b :c9453;
+ :b :c9454;
+ :b :c9455;
+ :b :c9456;
+ :b :c9457;
+ :b :c9458;
+ :b :c9459;
+ :b :c9460;
+ :b :c9461;
+ :b :c9462;
+ :b :c9463;
+ :b :c9464;
+ :b :c9465;
+ :b :c9466;
+ :b :c9467;
+ :b :c9468;
+ :b :c9469;
+ :b :c9470;
+ :b :c9471;
+ :b :c9472;
+ :b :c9473;
+ :b :c9474;
+ :b :c9475;
+ :b :c9476;
+ :b :c9477;
+ :b :c9478;
+ :b :c9479;
+ :b :c9480;
+ :b :c9481;
+ :b :c9482;
+ :b :c9483;
+ :b :c9484;
+ :b :c9485;
+ :b :c9486;
+ :b :c9487;
+ :b :c9488;
+ :b :c9489;
+ :b :c9490;
+ :b :c9491;
+ :b :c9492;
+ :b :c9493;
+ :b :c9494;
+ :b :c9495;
+ :b :c9496;
+ :b :c9497;
+ :b :c9498;
+ :b :c9499;
+ :b :c9500;
+ :b :c9501;
+ :b :c9502;
+ :b :c9503;
+ :b :c9504;
+ :b :c9505;
+ :b :c9506;
+ :b :c9507;
+ :b :c9508;
+ :b :c9509;
+ :b :c9510;
+ :b :c9511;
+ :b :c9512;
+ :b :c9513;
+ :b :c9514;
+ :b :c9515;
+ :b :c9516;
+ :b :c9517;
+ :b :c9518;
+ :b :c9519;
+ :b :c9520;
+ :b :c9521;
+ :b :c9522;
+ :b :c9523;
+ :b :c9524;
+ :b :c9525;
+ :b :c9526;
+ :b :c9527;
+ :b :c9528;
+ :b :c9529;
+ :b :c9530;
+ :b :c9531;
+ :b :c9532;
+ :b :c9533;
+ :b :c9534;
+ :b :c9535;
+ :b :c9536;
+ :b :c9537;
+ :b :c9538;
+ :b :c9539;
+ :b :c9540;
+ :b :c9541;
+ :b :c9542;
+ :b :c9543;
+ :b :c9544;
+ :b :c9545;
+ :b :c9546;
+ :b :c9547;
+ :b :c9548;
+ :b :c9549;
+ :b :c9550;
+ :b :c9551;
+ :b :c9552;
+ :b :c9553;
+ :b :c9554;
+ :b :c9555;
+ :b :c9556;
+ :b :c9557;
+ :b :c9558;
+ :b :c9559;
+ :b :c9560;
+ :b :c9561;
+ :b :c9562;
+ :b :c9563;
+ :b :c9564;
+ :b :c9565;
+ :b :c9566;
+ :b :c9567;
+ :b :c9568;
+ :b :c9569;
+ :b :c9570;
+ :b :c9571;
+ :b :c9572;
+ :b :c9573;
+ :b :c9574;
+ :b :c9575;
+ :b :c9576;
+ :b :c9577;
+ :b :c9578;
+ :b :c9579;
+ :b :c9580;
+ :b :c9581;
+ :b :c9582;
+ :b :c9583;
+ :b :c9584;
+ :b :c9585;
+ :b :c9586;
+ :b :c9587;
+ :b :c9588;
+ :b :c9589;
+ :b :c9590;
+ :b :c9591;
+ :b :c9592;
+ :b :c9593;
+ :b :c9594;
+ :b :c9595;
+ :b :c9596;
+ :b :c9597;
+ :b :c9598;
+ :b :c9599;
+ :b :c9600;
+ :b :c9601;
+ :b :c9602;
+ :b :c9603;
+ :b :c9604;
+ :b :c9605;
+ :b :c9606;
+ :b :c9607;
+ :b :c9608;
+ :b :c9609;
+ :b :c9610;
+ :b :c9611;
+ :b :c9612;
+ :b :c9613;
+ :b :c9614;
+ :b :c9615;
+ :b :c9616;
+ :b :c9617;
+ :b :c9618;
+ :b :c9619;
+ :b :c9620;
+ :b :c9621;
+ :b :c9622;
+ :b :c9623;
+ :b :c9624;
+ :b :c9625;
+ :b :c9626;
+ :b :c9627;
+ :b :c9628;
+ :b :c9629;
+ :b :c9630;
+ :b :c9631;
+ :b :c9632;
+ :b :c9633;
+ :b :c9634;
+ :b :c9635;
+ :b :c9636;
+ :b :c9637;
+ :b :c9638;
+ :b :c9639;
+ :b :c9640;
+ :b :c9641;
+ :b :c9642;
+ :b :c9643;
+ :b :c9644;
+ :b :c9645;
+ :b :c9646;
+ :b :c9647;
+ :b :c9648;
+ :b :c9649;
+ :b :c9650;
+ :b :c9651;
+ :b :c9652;
+ :b :c9653;
+ :b :c9654;
+ :b :c9655;
+ :b :c9656;
+ :b :c9657;
+ :b :c9658;
+ :b :c9659;
+ :b :c9660;
+ :b :c9661;
+ :b :c9662;
+ :b :c9663;
+ :b :c9664;
+ :b :c9665;
+ :b :c9666;
+ :b :c9667;
+ :b :c9668;
+ :b :c9669;
+ :b :c9670;
+ :b :c9671;
+ :b :c9672;
+ :b :c9673;
+ :b :c9674;
+ :b :c9675;
+ :b :c9676;
+ :b :c9677;
+ :b :c9678;
+ :b :c9679;
+ :b :c9680;
+ :b :c9681;
+ :b :c9682;
+ :b :c9683;
+ :b :c9684;
+ :b :c9685;
+ :b :c9686;
+ :b :c9687;
+ :b :c9688;
+ :b :c9689;
+ :b :c9690;
+ :b :c9691;
+ :b :c9692;
+ :b :c9693;
+ :b :c9694;
+ :b :c9695;
+ :b :c9696;
+ :b :c9697;
+ :b :c9698;
+ :b :c9699;
+ :b :c9700;
+ :b :c9701;
+ :b :c9702;
+ :b :c9703;
+ :b :c9704;
+ :b :c9705;
+ :b :c9706;
+ :b :c9707;
+ :b :c9708;
+ :b :c9709;
+ :b :c9710;
+ :b :c9711;
+ :b :c9712;
+ :b :c9713;
+ :b :c9714;
+ :b :c9715;
+ :b :c9716;
+ :b :c9717;
+ :b :c9718;
+ :b :c9719;
+ :b :c9720;
+ :b :c9721;
+ :b :c9722;
+ :b :c9723;
+ :b :c9724;
+ :b :c9725;
+ :b :c9726;
+ :b :c9727;
+ :b :c9728;
+ :b :c9729;
+ :b :c9730;
+ :b :c9731;
+ :b :c9732;
+ :b :c9733;
+ :b :c9734;
+ :b :c9735;
+ :b :c9736;
+ :b :c9737;
+ :b :c9738;
+ :b :c9739;
+ :b :c9740;
+ :b :c9741;
+ :b :c9742;
+ :b :c9743;
+ :b :c9744;
+ :b :c9745;
+ :b :c9746;
+ :b :c9747;
+ :b :c9748;
+ :b :c9749;
+ :b :c9750;
+ :b :c9751;
+ :b :c9752;
+ :b :c9753;
+ :b :c9754;
+ :b :c9755;
+ :b :c9756;
+ :b :c9757;
+ :b :c9758;
+ :b :c9759;
+ :b :c9760;
+ :b :c9761;
+ :b :c9762;
+ :b :c9763;
+ :b :c9764;
+ :b :c9765;
+ :b :c9766;
+ :b :c9767;
+ :b :c9768;
+ :b :c9769;
+ :b :c9770;
+ :b :c9771;
+ :b :c9772;
+ :b :c9773;
+ :b :c9774;
+ :b :c9775;
+ :b :c9776;
+ :b :c9777;
+ :b :c9778;
+ :b :c9779;
+ :b :c9780;
+ :b :c9781;
+ :b :c9782;
+ :b :c9783;
+ :b :c9784;
+ :b :c9785;
+ :b :c9786;
+ :b :c9787;
+ :b :c9788;
+ :b :c9789;
+ :b :c9790;
+ :b :c9791;
+ :b :c9792;
+ :b :c9793;
+ :b :c9794;
+ :b :c9795;
+ :b :c9796;
+ :b :c9797;
+ :b :c9798;
+ :b :c9799;
+ :b :c9800;
+ :b :c9801;
+ :b :c9802;
+ :b :c9803;
+ :b :c9804;
+ :b :c9805;
+ :b :c9806;
+ :b :c9807;
+ :b :c9808;
+ :b :c9809;
+ :b :c9810;
+ :b :c9811;
+ :b :c9812;
+ :b :c9813;
+ :b :c9814;
+ :b :c9815;
+ :b :c9816;
+ :b :c9817;
+ :b :c9818;
+ :b :c9819;
+ :b :c9820;
+ :b :c9821;
+ :b :c9822;
+ :b :c9823;
+ :b :c9824;
+ :b :c9825;
+ :b :c9826;
+ :b :c9827;
+ :b :c9828;
+ :b :c9829;
+ :b :c9830;
+ :b :c9831;
+ :b :c9832;
+ :b :c9833;
+ :b :c9834;
+ :b :c9835;
+ :b :c9836;
+ :b :c9837;
+ :b :c9838;
+ :b :c9839;
+ :b :c9840;
+ :b :c9841;
+ :b :c9842;
+ :b :c9843;
+ :b :c9844;
+ :b :c9845;
+ :b :c9846;
+ :b :c9847;
+ :b :c9848;
+ :b :c9849;
+ :b :c9850;
+ :b :c9851;
+ :b :c9852;
+ :b :c9853;
+ :b :c9854;
+ :b :c9855;
+ :b :c9856;
+ :b :c9857;
+ :b :c9858;
+ :b :c9859;
+ :b :c9860;
+ :b :c9861;
+ :b :c9862;
+ :b :c9863;
+ :b :c9864;
+ :b :c9865;
+ :b :c9866;
+ :b :c9867;
+ :b :c9868;
+ :b :c9869;
+ :b :c9870;
+ :b :c9871;
+ :b :c9872;
+ :b :c9873;
+ :b :c9874;
+ :b :c9875;
+ :b :c9876;
+ :b :c9877;
+ :b :c9878;
+ :b :c9879;
+ :b :c9880;
+ :b :c9881;
+ :b :c9882;
+ :b :c9883;
+ :b :c9884;
+ :b :c9885;
+ :b :c9886;
+ :b :c9887;
+ :b :c9888;
+ :b :c9889;
+ :b :c9890;
+ :b :c9891;
+ :b :c9892;
+ :b :c9893;
+ :b :c9894;
+ :b :c9895;
+ :b :c9896;
+ :b :c9897;
+ :b :c9898;
+ :b :c9899;
+ :b :c9900;
+ :b :c9901;
+ :b :c9902;
+ :b :c9903;
+ :b :c9904;
+ :b :c9905;
+ :b :c9906;
+ :b :c9907;
+ :b :c9908;
+ :b :c9909;
+ :b :c9910;
+ :b :c9911;
+ :b :c9912;
+ :b :c9913;
+ :b :c9914;
+ :b :c9915;
+ :b :c9916;
+ :b :c9917;
+ :b :c9918;
+ :b :c9919;
+ :b :c9920;
+ :b :c9921;
+ :b :c9922;
+ :b :c9923;
+ :b :c9924;
+ :b :c9925;
+ :b :c9926;
+ :b :c9927;
+ :b :c9928;
+ :b :c9929;
+ :b :c9930;
+ :b :c9931;
+ :b :c9932;
+ :b :c9933;
+ :b :c9934;
+ :b :c9935;
+ :b :c9936;
+ :b :c9937;
+ :b :c9938;
+ :b :c9939;
+ :b :c9940;
+ :b :c9941;
+ :b :c9942;
+ :b :c9943;
+ :b :c9944;
+ :b :c9945;
+ :b :c9946;
+ :b :c9947;
+ :b :c9948;
+ :b :c9949;
+ :b :c9950;
+ :b :c9951;
+ :b :c9952;
+ :b :c9953;
+ :b :c9954;
+ :b :c9955;
+ :b :c9956;
+ :b :c9957;
+ :b :c9958;
+ :b :c9959;
+ :b :c9960;
+ :b :c9961;
+ :b :c9962;
+ :b :c9963;
+ :b :c9964;
+ :b :c9965;
+ :b :c9966;
+ :b :c9967;
+ :b :c9968;
+ :b :c9969;
+ :b :c9970;
+ :b :c9971;
+ :b :c9972;
+ :b :c9973;
+ :b :c9974;
+ :b :c9975;
+ :b :c9976;
+ :b :c9977;
+ :b :c9978;
+ :b :c9979;
+ :b :c9980;
+ :b :c9981;
+ :b :c9982;
+ :b :c9983;
+ :b :c9984;
+ :b :c9985;
+ :b :c9986;
+ :b :c9987;
+ :b :c9988;
+ :b :c9989;
+ :b :c9990;
+ :b :c9991;
+ :b :c9992;
+ :b :c9993;
+ :b :c9994;
+ :b :c9995;
+ :b :c9996;
+ :b :c9997;
+ :b :c9998;
+ :b :c9999;
+ :b :c10000 .
diff --git a/tests/turtle/test-17.out b/tests/turtle/test-17.out
new file mode 100644
index 0000000..466edbb
--- /dev/null
+++ b/tests/turtle/test-17.out
@@ -0,0 +1 @@
+<http://example.org/ex#a> <http://example.org/ex#b> "a long\n\tliteral\nwith\nnewlines" .
diff --git a/tests/turtle/test-17.ttl b/tests/turtle/test-17.ttl
new file mode 100644
index 0000000..86c453b
--- /dev/null
+++ b/tests/turtle/test-17.ttl
@@ -0,0 +1,6 @@
+# Test long literal
+@prefix : <http://example.org/ex#> .
+:a :b """a long
+ literal
+with
+newlines""" .
diff --git a/tests/turtle/test-18.out b/tests/turtle/test-18.out
new file mode 100644
index 0000000..4ff4b95
--- /dev/null
+++ b/tests/turtle/test-18.out
@@ -0,0 +1,2 @@
+<http://example.org/foo#a> <http://example.org/foo#b> "\nthis \ris a \U00015678long\t\nliteral\uABCD\n" .
+<http://example.org/foo#d> <http://example.org/foo#e> "\tThis \uABCDis\r \U00015678another\n\none\n" .
diff --git a/tests/turtle/test-18.ttl b/tests/turtle/test-18.ttl
new file mode 100644
index 0000000..1adfa45
--- /dev/null
+++ b/tests/turtle/test-18.ttl
@@ -0,0 +1,9 @@
+@prefix : <http://example.org/foo#> .
+
+:a :b """\nthis \ris a \U00015678long\t
+literal\uABCD
+""" .
+
+:d :e """\tThis \uABCDis\r \U00015678another\n
+one
+""" .
diff --git a/tests/turtle/test-19.out b/tests/turtle/test-19.out
new file mode 100644
index 0000000..2e2dbe4
--- /dev/null
+++ b/tests/turtle/test-19.out
@@ -0,0 +1 @@
+<http://example.org/#a> <http://example.org/#b> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
diff --git a/tests/turtle/test-19.ttl b/tests/turtle/test-19.ttl
new file mode 100644
index 0000000..9de0c07
--- /dev/null
+++ b/tests/turtle/test-19.ttl
@@ -0,0 +1,4 @@
+@prefix : <http://example.org/#> .
+
+:a :b 1.0 .
+
diff --git a/tests/turtle/test-20.out b/tests/turtle/test-20.out
new file mode 100644
index 0000000..fff2da5
--- /dev/null
+++ b/tests/turtle/test-20.out
@@ -0,0 +1,2 @@
+<http://example.org/#a> <http://example.org/#b> "" .
+<http://example.org/#c> <http://example.org/#d> "" .
diff --git a/tests/turtle/test-20.ttl b/tests/turtle/test-20.ttl
new file mode 100644
index 0000000..37a9a4f
--- /dev/null
+++ b/tests/turtle/test-20.ttl
@@ -0,0 +1,6 @@
+@prefix : <http://example.org/#> .
+
+:a :b "" .
+
+:c :d """""" .
+
diff --git a/tests/turtle/test-21.out b/tests/turtle/test-21.out
new file mode 100644
index 0000000..d5dca69
--- /dev/null
+++ b/tests/turtle/test-21.out
@@ -0,0 +1,3 @@
+<http://example.org#a> <http://example.org#b> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org#c> <http://example.org#d> "1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+<http://example.org#e> <http://example.org#f> "1.0e0"^^<http://www.w3.org/2001/XMLSchema#double> .
diff --git a/tests/turtle/test-21.ttl b/tests/turtle/test-21.ttl
new file mode 100644
index 0000000..a8e8dc1
--- /dev/null
+++ b/tests/turtle/test-21.ttl
@@ -0,0 +1,4 @@
+@prefix : <http://example.org#> .
+:a :b 1.0 .
+:c :d 1 .
+:e :f 1.0e0 .
diff --git a/tests/turtle/test-22.out b/tests/turtle/test-22.out
new file mode 100644
index 0000000..3d0f970
--- /dev/null
+++ b/tests/turtle/test-22.out
@@ -0,0 +1,3 @@
+<http://example.org#a> <http://example.org#b> "-1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org#c> <http://example.org#d> "-1"^^<http://www.w3.org/2001/XMLSchema#integer> .
+<http://example.org#e> <http://example.org#f> "-1.0e0"^^<http://www.w3.org/2001/XMLSchema#double> .
diff --git a/tests/turtle/test-22.ttl b/tests/turtle/test-22.ttl
new file mode 100644
index 0000000..9b1a725
--- /dev/null
+++ b/tests/turtle/test-22.ttl
@@ -0,0 +1,4 @@
+@prefix : <http://example.org#> .
+:a :b -1.0 .
+:c :d -1 .
+:e :f -1.0e0 .
diff --git a/tests/turtle/test-23.out b/tests/turtle/test-23.out
new file mode 100644
index 0000000..fde3131
--- /dev/null
+++ b/tests/turtle/test-23.out
@@ -0,0 +1 @@
+<http://example.org/ex#a> <http://example.org/ex#b> "John said: \"Hello World!\"" .
diff --git a/tests/turtle/test-23.ttl b/tests/turtle/test-23.ttl
new file mode 100644
index 0000000..9f5360a
--- /dev/null
+++ b/tests/turtle/test-23.ttl
@@ -0,0 +1,3 @@
+# Test long literal
+@prefix : <http://example.org/ex#> .
+:a :b """John said: "Hello World!\"""" .
diff --git a/tests/turtle/test-24.out b/tests/turtle/test-24.out
new file mode 100644
index 0000000..5a70bff
--- /dev/null
+++ b/tests/turtle/test-24.out
@@ -0,0 +1,2 @@
+<http://example.org#a> <http://example.org#b> "true"^^<http://www.w3.org/2001/XMLSchema#boolean> .
+<http://example.org#c> <http://example.org#d> "false"^^<http://www.w3.org/2001/XMLSchema#boolean> .
diff --git a/tests/turtle/test-24.ttl b/tests/turtle/test-24.ttl
new file mode 100644
index 0000000..25f3b75
--- /dev/null
+++ b/tests/turtle/test-24.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://example.org#> .
+:a :b true .
+:c :d false .
diff --git a/tests/turtle/test-25.out b/tests/turtle/test-25.out
new file mode 100644
index 0000000..1a38415
--- /dev/null
+++ b/tests/turtle/test-25.out
@@ -0,0 +1,7 @@
+<http://example.org/#a> <http://example.org/#b> <http://example.org/#c> .
+<http://example.org/#d> <http://example.org/#e> <http://example.org/#f> .
+<http://example.org/#g> <http://example.org/#h> <http://example.org/#i> .
+<http://example.org/#g> <http://example.org/#h> <http://example.org/#j> .
+<http://example.org/#k> <http://example.org/#l> <http://example.org/#m> .
+<http://example.org/#k> <http://example.org/#n> <http://example.org/#o> .
+<http://example.org/#k> <http://example.org/#p> <http://example.org/#q> .
diff --git a/tests/turtle/test-25.ttl b/tests/turtle/test-25.ttl
new file mode 100644
index 0000000..310349d
--- /dev/null
+++ b/tests/turtle/test-25.ttl
@@ -0,0 +1,14 @@
+# comment test
+@prefix : <http://example.org/#> .
+:a :b :c . # end of line comment
+:d # ignore me
+ :e # and me
+ :f # and me
+ .
+:g :h #ignore me
+ :i, # and me
+ :j . # and me
+
+:k :l :m ; #ignore me
+ :n :o ; # and me
+ :p :q . # and me
diff --git a/tests/turtle/test-26.out b/tests/turtle/test-26.out
new file mode 100644
index 0000000..ad105cf
--- /dev/null
+++ b/tests/turtle/test-26.out
@@ -0,0 +1 @@
+<http://example.org/#a> <http://example.org/#b> <http://example.org/#c> .
diff --git a/tests/turtle/test-26.ttl b/tests/turtle/test-26.ttl
new file mode 100644
index 0000000..0667c6b
--- /dev/null
+++ b/tests/turtle/test-26.ttl
@@ -0,0 +1,4 @@
+# comment line with no final newline test
+@prefix : <http://example.org/#> .
+:a :b :c .
+#foo
diff --git a/tests/turtle/test-27.out b/tests/turtle/test-27.out
new file mode 100644
index 0000000..7da0635
--- /dev/null
+++ b/tests/turtle/test-27.out
@@ -0,0 +1 @@
+<http://example.org/bar#blah> <http://example.org/bar#blah> <http://example.org/bar#blah> .
diff --git a/tests/turtle/test-27.ttl b/tests/turtle/test-27.ttl
new file mode 100644
index 0000000..569023c
--- /dev/null
+++ b/tests/turtle/test-27.ttl
@@ -0,0 +1,5 @@
+@prefix foo: <http://example.org/foo#> .
+@prefix foo: <http://example.org/bar#> .
+
+foo:blah foo:blah foo:blah .
+
diff --git a/tests/turtle/test-28-out.ttl b/tests/turtle/test-28-out.ttl
new file mode 100644
index 0000000..6a0e1a4
--- /dev/null
+++ b/tests/turtle/test-28-out.ttl
@@ -0,0 +1,6 @@
+@base <http://www.w3.org/2001/sw/DataAccess/df1/tests/test-28.ttl> .
+@prefix rdf: <../../../../../1999/02/22-rdf-syntax-ns#> .
+
+<http://example.org/foo>
+ <http://example.org/bar> 1, 1., 1.0, 1.000000000, 1.2345678901234567890123457890, 2.23400000000000000000005, 2.2340000000000000000005, 2.234000000000000000005, 2.23400000000000000005, 2.2340000000000000005, 2.234000000000000005, 2.23400000000000005, 2.2340000000000005, 2.234000000000005, 2.23400000000005, 2.2340000000005, 2.234000000005, 2.23400000005, 2.2340000005, 2.234000005, 2.3, 2.345 .
+
diff --git a/tests/turtle/test-28.out b/tests/turtle/test-28.out
new file mode 100644
index 0000000..0c15476
--- /dev/null
+++ b/tests/turtle/test-28.out
@@ -0,0 +1,22 @@
+<http://example.org/foo> <http://example.org/bar> "2.345"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.30"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.2340000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.23400000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.2340000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.23400000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.2340000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "1.2345678901234567"^^<http://www.w3.org/2001/XMLSchema#decimal> .
diff --git a/tests/turtle/test-28.ttl b/tests/turtle/test-28.ttl
new file mode 100644
index 0000000..7357dd4
--- /dev/null
+++ b/tests/turtle/test-28.ttl
@@ -0,0 +1,22 @@
+<http://example.org/foo> <http://example.org/bar> "2.345"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "1"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "1."^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "1.000000000"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.3"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.2340000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.23400000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.2340000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.23400000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.2340000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.23400000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.2340000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.23400000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.234000000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.2340000000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "2.23400000000000000000005"^^<http://www.w3.org/2001/XMLSchema#decimal> .
+<http://example.org/foo> <http://example.org/bar> "1.2345678901234567890123457890"^^<http://www.w3.org/2001/XMLSchema#decimal> .
diff --git a/tests/turtle/test-29.out b/tests/turtle/test-29.out
new file mode 100644
index 0000000..612052d
--- /dev/null
+++ b/tests/turtle/test-29.out
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/prop> <scheme:\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\t\n\u000B\u000C\r\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F !"#$%&'()*+,-./0123456789:/<=\u003E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F> .
diff --git a/tests/turtle/test-29.ttl b/tests/turtle/test-29.ttl
new file mode 100644
index 0000000..612052d
--- /dev/null
+++ b/tests/turtle/test-29.ttl
@@ -0,0 +1 @@
+<http://example.org/node> <http://example.org/prop> <scheme:\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\t\n\u000B\u000C\r\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F !"#$%&'()*+,-./0123456789:/<=\u003E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F> .
diff --git a/tests/turtle/test-30.out b/tests/turtle/test-30.out
new file mode 100644
index 0000000..ce5c67d
--- /dev/null
+++ b/tests/turtle/test-30.out
@@ -0,0 +1,5 @@
+<http://www.w3.org/2001/sw/DataAccess/df1/tests/a1> <http://www.w3.org/2001/sw/DataAccess/df1/tests/b1> <http://www.w3.org/2001/sw/DataAccess/df1/tests/c1> .
+<http://example.org/ns/a2> <http://example.org/ns/b2> <http://example.org/ns/c2> .
+<http://example.org/ns/foo/a3> <http://example.org/ns/foo/b3> <http://example.org/ns/foo/c3> .
+<http://example.org/ns/foo/bar#a4> <http://example.org/ns/foo/bar#b4> <http://example.org/ns/foo/bar#c4> .
+<http://example.org/ns2#a5> <http://example.org/ns2#b5> <http://example.org/ns2#c5> .
diff --git a/tests/turtle/test-30.ttl b/tests/turtle/test-30.ttl
new file mode 100644
index 0000000..6721ec2
--- /dev/null
+++ b/tests/turtle/test-30.ttl
@@ -0,0 +1,12 @@
+# In-scope base URI is http://www.w3.org/2001/sw/DataAccess/df1/tests/ at this point
+<a1> <b1> <c1> .
+@base <http://example.org/ns/> .
+# In-scope base URI is http://example.org/ns/ at this point
+<a2> <http://example.org/ns/b2> <c2> .
+@base <foo/> .
+# In-scope base URI is http://example.org/ns/foo/ at this point
+<a3> <b3> <c3> .
+@prefix : <bar#> .
+:a4 :b4 :c4 .
+@prefix : <http://example.org/ns2#> .
+:a5 :b5 :c5 .
diff --git a/tests/turtle/test-31-out.ttl b/tests/turtle/test-31-out.ttl
new file mode 100644
index 0000000..c1130ed
--- /dev/null
+++ b/tests/turtle/test-31-out.ttl
@@ -0,0 +1,10 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rss: <http://purl.org/rss/1.0/> .
+
+<http://example.org/block>
+ rss:items [
+ rdf:_1 <http://example.org/first-item> ;
+ rdf:_2 <http://example.org/second-item> ;
+ a rdf:Seq
+ ] .
+
diff --git a/tests/turtle/test-31.ttl b/tests/turtle/test-31.ttl
new file mode 100644
index 0000000..c1130ed
--- /dev/null
+++ b/tests/turtle/test-31.ttl
@@ -0,0 +1,10 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rss: <http://purl.org/rss/1.0/> .
+
+<http://example.org/block>
+ rss:items [
+ rdf:_1 <http://example.org/first-item> ;
+ rdf:_2 <http://example.org/second-item> ;
+ a rdf:Seq
+ ] .
+
diff --git a/tests/turtle/test-32-out.ttl b/tests/turtle/test-32-out.ttl
new file mode 100644
index 0000000..47e041a
--- /dev/null
+++ b/tests/turtle/test-32-out.ttl
@@ -0,0 +1,8 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix ex: <http://example.org/ns#> .
+
+ex:node1
+ rdf:value (ex:item1
+ ex:item2
+ ) .
+
diff --git a/tests/turtle/test-32.ttl b/tests/turtle/test-32.ttl
new file mode 100644
index 0000000..abf26d2
--- /dev/null
+++ b/tests/turtle/test-32.ttl
@@ -0,0 +1,5 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix ex: <http://example.org/ns#> .
+
+# Based on Issue#0000274 http://bugs.librdf.org/mantis/view.php?id=274
+ex:node1 rdf:value ( ex:item1 ex:item2 ) .
diff --git a/tests/turtle/test-33.out b/tests/turtle/test-33.out
new file mode 100644
index 0000000..586e364
--- /dev/null
+++ b/tests/turtle/test-33.out
@@ -0,0 +1 @@
+<http://example.org/ns#s> <http://example.org/ns#p1> "test-\\" .
diff --git a/tests/turtle/test-33.ttl b/tests/turtle/test-33.ttl
new file mode 100644
index 0000000..2206e33
--- /dev/null
+++ b/tests/turtle/test-33.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://example.org/ns#> .
+
+:s :p1 """test-\\""" .
diff --git a/tests/turtle/test-34-out.ttl b/tests/turtle/test-34-out.ttl
new file mode 100644
index 0000000..3e925e8
--- /dev/null
+++ b/tests/turtle/test-34-out.ttl
@@ -0,0 +1,7 @@
+@base <http://www.w3.org/2001/sw/DataAccess/df1/tests/test-34.ttl> .
+@prefix rdf: <../../../../../1999/02/22-rdf-syntax-ns#> .
+@prefix dbpedia: <http://dbpedia.org/resource/> .
+
+<http://example.org>
+ <http://xmlns.com/foaf/0.1/page> <http://dbpedia.org/resource/Babylon_A.D.> .
+
diff --git a/tests/turtle/test-34.ttl b/tests/turtle/test-34.ttl
new file mode 100644
index 0000000..eb39a8d
--- /dev/null
+++ b/tests/turtle/test-34.ttl
@@ -0,0 +1,4 @@
+@prefix dbpedia: <http://dbpedia.org/resource/> .
+
+<http://example.org>
+ <http://xmlns.com/foaf/0.1/page> <http://dbpedia.org/resource/Babylon_A.D.> .
diff --git a/tests/turtle/test-35.out b/tests/turtle/test-35.out
new file mode 100644
index 0000000..f397592
--- /dev/null
+++ b/tests/turtle/test-35.out
@@ -0,0 +1 @@
+<http://example.org/resource> <http://example.org#pred> "value"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
diff --git a/tests/turtle/test-35.ttl b/tests/turtle/test-35.ttl
new file mode 100644
index 0000000..5618041
--- /dev/null
+++ b/tests/turtle/test-35.ttl
@@ -0,0 +1 @@
+<http://example.org/resource> <http://example.org#pred> "value"@en^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
diff --git a/tests/turtle/test-36.out b/tests/turtle/test-36.out
new file mode 100644
index 0000000..af94fe6
--- /dev/null
+++ b/tests/turtle/test-36.out
@@ -0,0 +1,2 @@
+<http://example.org/ex#a> <http://example.org/ex#b> "first long literal" .
+<http://example.org/ex#c> <http://example.org/ex#d> "second long literal" .
diff --git a/tests/turtle/test-36.ttl b/tests/turtle/test-36.ttl
new file mode 100644
index 0000000..ceaad3d
--- /dev/null
+++ b/tests/turtle/test-36.ttl
@@ -0,0 +1,4 @@
+# Test long literal twice to ensure it does not over-quote
+@prefix : <http://example.org/ex#> .
+:a :b """first long literal""" .
+:c :d """second long literal""" .
diff --git a/tests/turtle/test-37.out b/tests/turtle/test-37.out
new file mode 100644
index 0000000..629cbf4
--- /dev/null
+++ b/tests/turtle/test-37.out
@@ -0,0 +1 @@
+<http://example.org/ex#a> <http://example.org/ex#b> "Cheers"@en-UK .
diff --git a/tests/turtle/test-37.ttl b/tests/turtle/test-37.ttl
new file mode 100644
index 0000000..7fd527c
--- /dev/null
+++ b/tests/turtle/test-37.ttl
@@ -0,0 +1,3 @@
+# Test long literal with lang tag
+@prefix : <http://example.org/ex#> .
+:a :b """Cheers"""@en-UK .
diff --git a/tests/turtle/test-38.out b/tests/turtle/test-38.out
new file mode 100644
index 0000000..34c0366
--- /dev/null
+++ b/tests/turtle/test-38.out
@@ -0,0 +1 @@
+<http://www.w3.org/2001/sw/DataAccess/df1/tests/x> <http://www.w3.org/2000/01/rdf-schema#label> "\uD801\uDC69" .
diff --git a/tests/turtle/test-38.ttl b/tests/turtle/test-38.ttl
new file mode 100644
index 0000000..9ab942a
--- /dev/null
+++ b/tests/turtle/test-38.ttl
@@ -0,0 +1,5 @@
+# http://bugs.librdf.org/mantis/view.php?id=505
+
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+<x> rdfs:label "\ud801\udc69" .
diff --git a/utils/Makefile.am b/utils/Makefile.am
new file mode 100644
index 0000000..1a434b7
--- /dev/null
+++ b/utils/Makefile.am
@@ -0,0 +1,90 @@
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor utils
+#
+# Copyright (C) 2000-2009, David Beckett http://www.dajobe.org/
+# Copyright (C) 2000-2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+
+bin_PROGRAMS = rapper
+noinst_PROGRAMS = rdfdiff
+
+man_MANS = rapper.1
+
+CLEANFILES = *.plist
+
+# Memory debugging
+MEM=@MEM@
+MEM_LIBS=@MEM_LIBS@
+
+AM_CPPFLAGS= $(MEM) -I$(top_srcdir)/src
+LIBS=@LIBS@ $(MEM_LIBS)
+
+
+ANALYZE = clang
+ANALYZE_FLAGS = "--analyze"
+# Based on COMPILE target
+ANALYZE_COMMAND = $(ANALYZE) \
+ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) \
+ $(ANALYZE_FLAGS)
+
+
+EXTRA_DIST= \
+rapper.html \
+$(man_MANS)
+
+rapper_SOURCES = rapper.c
+if GETOPT
+rapper_SOURCES += getopt.c raptor_getopt.h
+endif
+rapper_LDADD= $(top_builddir)/src/libraptor2.la
+
+rdfdiff_SOURCES = rdfdiff.c
+if GETOPT
+rdfdiff_SOURCES += getopt.c raptor_getopt.h
+endif
+rdfdiff_LDADD= $(top_builddir)/src/libraptor2.la
+
+
+if MAINTAINER_MODE
+rapper.html: $(srcdir)/rapper.1 $(srcdir)/../scripts/fix-groff-xhtml
+ -groff -man -Thtml -P-l $< | tidy -asxml -wrap 1000 2>/dev/null | $(PERL) $(srcdir)/../scripts/fix-groff-xhtml $@
+endif
+
+$(top_builddir)/src/libraptor2.la:
+ cd $(top_builddir)/src && $(MAKE) libraptor2.la
+
+if MAINTAINER_MODE
+# Run Clang static analyzer over sources.
+analyze: $(SOURCES)
+ @list='$(SOURCES)'; \
+ result=0; \
+ for file in $$list; do \
+ if echo $$file | grep '\.c$$' >/dev/null 2>&1; then \
+ $(RECHO) "Analyzing $$file"; \
+ $(ANALYZE_COMMAND) $(srcdir)/$$file; \
+ status=$$?; \
+ if test $$status != 0; then \
+ result=1; \
+ fi; \
+ fi; \
+ done; \
+ set -e; exit $$result
+endif
diff --git a/utils/Makefile.in b/utils/Makefile.in
new file mode 100644
index 0000000..d9ba6e6
--- /dev/null
+++ b/utils/Makefile.in
@@ -0,0 +1,785 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- Mode: Makefile -*-
+#
+# Makefile.am - automake file for Raptor utils
+#
+# Copyright (C) 2000-2009, David Beckett http://www.dajobe.org/
+# Copyright (C) 2000-2004, University of Bristol, UK http://www.bristol.ac.uk/
+#
+# This package is Free Software and part of Redland http://librdf.org/
+#
+# It is licensed under the following three licenses as alternatives:
+# 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+# 2. GNU General Public License (GPL) V2 or any newer version
+# 3. Apache License, V2.0 or any newer version
+#
+# You may not use this file except in compliance with at least one of
+# the above three licenses.
+#
+# See LICENSE.html or LICENSE.txt at the top of this package for the
+# complete terms and further detail along with the license texts for
+# the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+#
+#
+
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = rapper$(EXEEXT)
+noinst_PROGRAMS = rdfdiff$(EXEEXT)
+@GETOPT_TRUE@am__append_1 = getopt.c raptor_getopt.h
+@GETOPT_TRUE@am__append_2 = getopt.c raptor_getopt.h
+subdir = utils
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+am__rapper_SOURCES_DIST = rapper.c getopt.c raptor_getopt.h
+@GETOPT_TRUE@am__objects_1 = getopt.$(OBJEXT)
+am_rapper_OBJECTS = rapper.$(OBJEXT) $(am__objects_1)
+rapper_OBJECTS = $(am_rapper_OBJECTS)
+rapper_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__rdfdiff_SOURCES_DIST = rdfdiff.c getopt.c raptor_getopt.h
+am_rdfdiff_OBJECTS = rdfdiff.$(OBJEXT) $(am__objects_1)
+rdfdiff_OBJECTS = $(am_rdfdiff_OBJECTS)
+rdfdiff_DEPENDENCIES = $(top_builddir)/src/libraptor2.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
+depcomp = $(SHELL) $(top_srcdir)/build/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(rapper_SOURCES) $(rdfdiff_SOURCES)
+DIST_SOURCES = $(am__rapper_SOURCES_DIST) $(am__rdfdiff_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man_MANS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@ $(MEM_LIBS)
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+
+# Memory debugging
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+man_MANS = rapper.1
+CLEANFILES = *.plist
+AM_CPPFLAGS = $(MEM) -I$(top_srcdir)/src
+ANALYZE = clang
+ANALYZE_FLAGS = "--analyze"
+# Based on COMPILE target
+ANALYZE_COMMAND = $(ANALYZE) \
+ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) \
+ $(ANALYZE_FLAGS)
+
+EXTRA_DIST = \
+rapper.html \
+$(man_MANS)
+
+rapper_SOURCES = rapper.c $(am__append_1)
+rapper_LDADD = $(top_builddir)/src/libraptor2.la
+rdfdiff_SOURCES = rdfdiff.c $(am__append_2)
+rdfdiff_LDADD = $(top_builddir)/src/libraptor2.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu utils/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu utils/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p || test -f $$p1; \
+ then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+installcheck-binPROGRAMS: $(bin_PROGRAMS)
+ bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \
+ case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+ *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+ esac; \
+ f=`echo "$$p" | \
+ sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ for opt in --help --version; do \
+ if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \
+ 2>c$${pid}_.err </dev/null \
+ && test -n "`cat c$${pid}_.out`" \
+ && test -z "`cat c$${pid}_.err`"; then :; \
+ else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+ done; \
+ done; rm -f c$${pid}_.???; exit $$bad
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+rapper$(EXEEXT): $(rapper_OBJECTS) $(rapper_DEPENDENCIES) $(EXTRA_rapper_DEPENDENCIES)
+ @rm -f rapper$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rapper_OBJECTS) $(rapper_LDADD) $(LIBS)
+rdfdiff$(EXEEXT): $(rdfdiff_OBJECTS) $(rdfdiff_DEPENDENCIES) $(EXTRA_rdfdiff_DEPENDENCIES)
+ @rm -f rdfdiff$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rdfdiff_OBJECTS) $(rdfdiff_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rapper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdfdiff.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @list='$(MANS)'; if test -n "$$list"; then \
+ list=`for p in $$list; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+ if test -n "$$list" && \
+ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
+ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+ echo " typically \`make maintainer-clean' will remove them" >&2; \
+ exit 1; \
+ else :; fi; \
+ else :; fi
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) $(MANS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool \
+ clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am: installcheck-binPROGRAMS
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool clean-noinstPROGRAMS ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-binPROGRAMS \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-man1 \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am \
+ installcheck-binPROGRAMS installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-binPROGRAMS \
+ uninstall-man uninstall-man1
+
+
+@MAINTAINER_MODE_TRUE@rapper.html: $(srcdir)/rapper.1 $(srcdir)/../scripts/fix-groff-xhtml
+@MAINTAINER_MODE_TRUE@ -groff -man -Thtml -P-l $< | tidy -asxml -wrap 1000 2>/dev/null | $(PERL) $(srcdir)/../scripts/fix-groff-xhtml $@
+
+$(top_builddir)/src/libraptor2.la:
+ cd $(top_builddir)/src && $(MAKE) libraptor2.la
+
+# Run Clang static analyzer over sources.
+@MAINTAINER_MODE_TRUE@analyze: $(SOURCES)
+@MAINTAINER_MODE_TRUE@ @list='$(SOURCES)'; \
+@MAINTAINER_MODE_TRUE@ result=0; \
+@MAINTAINER_MODE_TRUE@ for file in $$list; do \
+@MAINTAINER_MODE_TRUE@ if echo $$file | grep '\.c$$' >/dev/null 2>&1; then \
+@MAINTAINER_MODE_TRUE@ $(RECHO) "Analyzing $$file"; \
+@MAINTAINER_MODE_TRUE@ $(ANALYZE_COMMAND) $(srcdir)/$$file; \
+@MAINTAINER_MODE_TRUE@ status=$$?; \
+@MAINTAINER_MODE_TRUE@ if test $$status != 0; then \
+@MAINTAINER_MODE_TRUE@ result=1; \
+@MAINTAINER_MODE_TRUE@ fi; \
+@MAINTAINER_MODE_TRUE@ fi; \
+@MAINTAINER_MODE_TRUE@ done; \
+@MAINTAINER_MODE_TRUE@ set -e; exit $$result
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/utils/getopt.c b/utils/getopt.c
new file mode 100644
index 0000000..28dad21
--- /dev/null
+++ b/utils/getopt.c
@@ -0,0 +1,157 @@
+/*
+ * Public Domain getopt - history below
+ *
+ */
+
+/*
+ * From: gwyn@brl-tgr.ARPA (Doug Gwyn <gwyn>) Newsgroups: net.sources
+ * Subject: getopt library routine Date: 30 Mar 85 04:45:33 GMT
+ */
+
+/*
+ * getopt -- public domain version of standard System V routine
+ *
+ * Strictly enforces the System V Command Syntax Standard; provided by D A
+ * Gwyn of BRL for generic ANSI C implementations
+ *
+ * #define STRICT to prevent acceptance of clustered options with arguments
+ * and ommision of whitespace between option and arg.
+ */
+
+/*
+ * Modified by Manuel Novoa III on 1/5/01 to use weak symbols.
+ * Programs needing long options will link gnu_getopt instead.
+ */
+
+/*
+ * Last public domain version 1.5 downloaded from uclibc CVS:
+ * http://www.uclibc.org/cgi-bin/cvsweb/uClibc/libc/unistd/getopt.c
+ * on 2003-02-18 by Dave Beckett and tidied:
+ * Ran through "indent getopt.c -gnu" then fixed up the mess
+ * Removed register - compilers are smart these days
+ * ANSI-fied the declarations
+ * Prefixed with raptor_ so that it doesn't clash with any getopt
+ * linked in later.
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+
+#include <raptor_getopt.h>
+
+int opterr; /* error => print message */
+int optind; /* next argv[] index */
+int optopt; /* Set for unknown arguments */
+char *optarg; /* option parameter if any */
+
+/*
+ * Err:
+ * program name argv[0]
+ * specific message
+ * defective option letter
+ */
+static int
+Err (char *name, char *mess, int c) /* returns '?' */
+{
+ optopt = c;
+ if(opterr)
+ {
+ (void) fprintf (stderr, "%s: %s -- %c\n", name, mess, c);
+ }
+
+ return '?'; /* erroneous-option marker */
+}
+
+
+int
+getopt (int argc, char * const argv[], const char *optstring)
+{
+ static int sp = 1; /* position within argument */
+ int osp; /* saved `sp' for param test */
+
+#ifndef STRICT
+ int oind; /* saved `optind' for param test */
+#endif
+ int c; /* option letter */
+ char *cp; /* -> option in `optstring' */
+
+ optarg = NULL;
+
+ /* initialise getopt vars */
+ if(optind == 0)
+ {
+ optind = 1;
+ opterr = 1;
+ optopt = 1;
+ optarg = NULL;
+ }
+
+ if(sp == 1)
+ { /* fresh argument */
+ if(optind >= argc /* no more arguments */
+ || argv[optind][0] != '-' /* no more options */
+ || argv[optind][1] == '\0' /* not option; stdin */
+ )
+ return EOF;
+ else if(strcmp (argv[optind], "--") == 0)
+ {
+ ++optind; /* skip over "--" */
+ return EOF; /* "--" marks end of options */
+ }
+ }
+
+ c = argv[optind][sp]; /* option letter */
+ osp = sp++; /* get ready for next letter */
+
+#ifndef STRICT
+ oind = optind; /* save optind for param test */
+#endif
+ if(argv[optind][sp] == '\0')
+ { /* end of argument */
+ ++optind; /* get ready for next try */
+ sp = 1; /* beginning of next argument */
+ }
+
+ if(c == ':'
+ || c == '?' /* optstring syntax conflict */
+ || (cp = strchr (optstring, c)) == NULL) /* not found */
+ {
+ return Err (argv[0], "illegal option", c);
+ }
+
+ if(cp[1] == ':')
+ { /* option takes parameter */
+#ifdef STRICT
+ if(osp != 1)
+ {
+ return Err (argv[0], "option must not be clustered", c);
+ }
+
+ /* reset by end of argument */
+ if(sp != 1)
+ {
+ return Err (argv[0], "option must be followed by white space", c);
+ }
+#else
+ if(oind == optind)
+ { /* argument w/o whitespace */
+ optarg = &argv[optind][sp];
+ sp = 1; /* beginning of next argument */
+ }
+
+ else
+#endif
+ if(optind >= argc)
+ {
+ return Err (argv[0], "option requires an argument", c);
+ }
+
+ else /* argument w/ whitespace */
+ optarg = argv[optind];
+
+ ++optind; /* skip over parameter */
+ }
+
+ return c;
+}
diff --git a/utils/rapper.1 b/utils/rapper.1
new file mode 100644
index 0000000..0305a00
--- /dev/null
+++ b/utils/rapper.1
@@ -0,0 +1,191 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\"
+.\" rapper.1 - Raptor RDF parsing and serializing utility manual page
+.\"
+.\" Copyright (C) 2002-2010 David Beckett - http://www.dajobe.org/
+.\" Copyright (C) 2002-2005 University of Bristol - http://www.bristol.ac.uk/
+.\"
+.TH rapper 1 "2010-04-28"
+.\" Please adjust this date whenever revising the manpage.
+.SH NAME
+rapper \- Raptor RDF parsing and serializing utility
+.SH SYNOPSIS
+.B rapper
+.RB [ OPTIONS ]
+.IR "INPUT-URI"
+.IR "[INPUT-BASE-URI]"
+.SH EXAMPLE
+.nf
+.B rapper -o ntriples http://planetrdf.com/guide/rss.rdf
+.br
+.B rapper -i rss-tag-soup -o rss-1.0 pile-of-rss.xml http://example.org/base/
+.br
+.B rapper --count http://example.org/index.rdf
+.SH DESCRIPTION
+The
+.B rapper
+utility allows parsing of RDF content by the
+.B Raptor
+RDF parser toolkit emitting the results as RDF triples in
+a choice of syntaxes. The \fIINPUT-URI\fR can be a file name, '-'
+for standard input or if Raptor is built with a WWW retrieval
+library, a general URI. The optional \fIINPUT-BASE-URI\fR is used as the
+document parser base URI if present otherwise defaults to the \fIINPUT-URI\fR.
+A value of '-' means no base URI.
+.SH OPTIONS
+rapper uses the usual GNU command line syntax, with long
+options starting with two dashes (`-') if supported by the
+getopt_long function. Otherwise the short options are only available.
+.TP
+.B \-h, \-\-help
+Show a summary of the options.
+.TP
+.B \-i, \-\-input FORMAT
+Set the input
+.I FORMAT
+to one of 'rdfxml' (RDF/XML, default), 'ntriples'
+(N-Triples, see below), 'turtle' (Turtle, see below)
+or 'rss-tag-soup' (RSS Tag Soup). The RSS Tag Soup parser
+can turn the many XML RSS formats and Atom 0.3 into RDF triples.
+.IP
+The list of
+parsers depends on how libraptor(3) was built. The list of
+supported parsers is given in the help summary given by \-h.
+.TP
+.B \-I, \-\-input-uri URI
+Set the input/parser base
+.I URI
+or use value '-' for no base.
+The default is the INPUT-URI argument value.
+.TP
+.B \-o, \-\-output FORMAT
+Set the output
+.I FORMAT
+to 'ntriples' (N-Triples, default), 'rdfxml' (RDF/XML), 'rdfxml-abbrev'
+(RDF/XML with abbreviations) or 'rss-1.0' (RSS 1.0, also an RDF/XML syntax).
+.IP
+The list of
+serializers depends on how libraptor(3) was built. The list of
+supported serializers is given in the help summary given by \-h.
+.TP
+.B \-O, \-\-output-uri URI
+Set the output/serializer base
+.I URI
+or use value '-' for no base.
+The default is the input base uri, either set by the argument
+INPUT-BASE-URI or via options
+.B \-I, \-\-input-uri URI
+.TP
+.B \-c, \-\-count
+Only count the triples and produce no other output.
+.TP
+.B \-e, \-\-ignore-errors
+Ignore errors, do not emit the messages and try to continue parsing.
+.TP
+.B \-f, \-\-feature FEATURE[=VALUE]
+Set a parser or serializer feature
+.I FEATURE
+to a value, or to 1 if
+.I VALUE
+is omitted,
+Use \-f help to get lists of valid parser and serializer features.
+.IP
+If the form \-f 'xmlns:\fIprefix\fP=\(dq\fIuri\fP\(dq' is used,
+the prefix and namespace uri given will be set for serializing.
+The syntax matches XML in that either or both of \fIprefix\fP
+or \fIuri\fP can be omitted.
+.TP
+.B \-g, \-\-guess
+Guess the parser to use from the source-URI rather than use
+the \-i FORMAT.
+.TP
+.B \-q, \-\-quiet
+No extra information messages.
+.TP
+.B \-r, \-\-replace-newlines
+Replace newlines in multi-line literals with spaces.
+.TP
+.B \-\-show-graphs
+Print graph names (URIs) as they are seen in the input. This only
+has a meaning for parsers that support graph names such as the TRiG parser.
+.TP
+.B \-\-show-namespaces
+Print namespaces as they are seen in the input.
+.TP
+.B \-t, \-\-trace
+Print URIs retrieved during parsing. Especially useful for
+monitoring what the guess and GRDDL parsers are doing.
+.TP
+.B \-w, \-\-ignore-warnings
+Ignore warnings, do not emit the messages.
+.TP
+.B \-v, \-\-version
+Print the raptor version and exit.
+.SH "EXAMPLES"
+.br
+.B rapper -q -i ntriples -o rdfxml -f 'xmlns:rss="http://purl.org/rss/1.0/"' -f 'xmlns:ex="http://example.org/"' tests/test.nt
+.br
+.B rapper -q -o rdfxml -f 'xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"' tests/rdf-schema.rdf 'http://www.w3.org/2000/01/rdf-schema#'
+.SH "CONFORMING TO"
+\fIRDF/XML Syntax (Revised)\fR,
+W3C Recommendation,
+.UR http://www.w3.org/TR/rdf-syntax-grammar/
+http://www.w3.org/TR/rdf-syntax-grammar/
+.UE
+
+\fIN-Triples\fR, in \fIRDF Test Cases\fR, Jan Grant and Dave Beckett (eds.),
+W3C Recommendation,
+.UR http://www.w3.org/TR/rdf-testcases/#ntriples
+http://www.w3.org/TR/rdf-testcases/#ntriples
+.UE
+
+\fITurtle Terse RDF Triple Language\fR, Dave Beckett,
+.UR http://www.dajobe.org/2004/01/turtle/
+http://www.dajobe.org/2004/01/turtle/
+.UE
+
+\fIRDFA in XHTML: Syntax and Processing\fR, Ben Adida, Mark Birbeck,
+Shane McCarron and Steven Pemberton (eds.),
+W3C Candidate Recommendation, 20 June 2008
+.UR http://www.w3.org/TR/2008/CR-rdfa-syntax-20080620/
+http://www.w3.org/TR/2008/CR-rdfa-syntax-20080620/
+.UE
+
+\fIRDF Site Summary (RSS) 1.0\fR, 2000-12-06
+.UR http://purl.org/rss/1.0/spec
+http://purl.org/rss/1.0/spec
+.UE
+.SH SEE ALSO
+.BR libraptor(3), raptor-config(1)
+.SH CHANGES
+.SS 2.0.0
+Removed -a option that did nothing.
+.LP
+Removed -m option from rapper but it was never documented here.
+.LP
+Removed -n option that was long hidden.
+.LP
+Removed -s option that was equivalent to -f scanForRDF
+.SS 1.4.16
+Added -I/--input-uri and -O/--output-uri to set the input and output
+(parser and serializer) base URIs separately.
+.SS 1.4.15
+Added -t/--trace to do URI traces.
+.SS 1.4.5
+Updated to add serializer rdfxml-abbrev
+.SS 1.4.3
+Updated potential parser and serializers and described -f for
+defining namespaces.
+.SS 1.3.0
+Added \-f for features.
+.br
+Added \-g for guessing the parser to use.
+.SS 1.1.0
+Removed \-a, \-\-assume since rdf:RDF is now always optional.
+.br
+.SH AUTHOR
+Dave Beckett -
+.UR http://www.dajobe.org/
+http://www.dajobe.org/
+.UE
+.br
diff --git a/utils/rapper.c b/utils/rapper.c
new file mode 100644
index 0000000..b0660c0
--- /dev/null
+++ b/utils/rapper.c
@@ -0,0 +1,976 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * rapper.c - Raptor RDF Parsing and Serializing utility
+ *
+ * Copyright (C) 2000-2010, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2000-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+
+/* Raptor includes */
+#include <raptor2.h>
+
+/* for access() and R_OK */
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef WIN32
+#include <io.h>
+#endif
+
+/* many places for getopt */
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#else
+#include <raptor_getopt.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+
+
+
+#ifdef NEED_OPTIND_DECLARATION
+extern int optind;
+extern char *optarg;
+#endif
+
+static void print_triples(void *user_data, raptor_statement *statement);
+static void print_graph(void *user_data, raptor_uri *graph, int flags);
+static void print_namespaces(void* user_data, raptor_namespace *nspace);
+static void relay_namespaces(void* user_data, raptor_namespace *nspace);
+int main(int argc, char *argv[]);
+
+
+static char *program = NULL;
+
+/* replace newlines in literal string output with spaces */
+static int replace_newlines = 0;
+
+/* extra noise? */
+static int quiet = 0;
+/* just count, no printing */
+static int count = 0;
+
+static int triple_count = 0;
+
+static raptor_serializer* serializer = NULL;
+
+static int guess = 0;
+
+static int reported_guess = 0;
+
+static int report_namespace = 0;
+
+static int report_graph = 0;
+
+
+static
+void print_triples(void *user_data, raptor_statement *triple)
+{
+ raptor_parser* rdf_parser = (raptor_parser*)user_data;
+ triple_count++;
+
+ if(guess && !quiet && !reported_guess) {
+ fprintf(stderr, "%s: Guessed parser name '%s'\n",
+ program, raptor_parser_get_name(rdf_parser));
+ reported_guess = 1;
+ }
+
+
+ if(count)
+ return;
+
+ /* replace newlines with spaces if object is a literal string */
+ if(replace_newlines &&
+ triple->object->type == RAPTOR_TERM_TYPE_LITERAL) {
+ char *s;
+ for(s = (char*)triple->object->value.literal.string; *s; s++)
+ if(*s == '\n')
+ *s=' ';
+ }
+
+ raptor_serializer_serialize_statement(serializer, triple);
+ return;
+}
+
+
+static
+void print_graph(void *user_data, raptor_uri *graph, int flags)
+{
+ /* raptor_parser *parser = (raptor_parser *)user_data; */
+ const char* label = (flags & RAPTOR_GRAPH_MARK_START) ? "start" : "end";
+
+ if(!report_graph)
+ return;
+
+ if(graph)
+ fprintf(stderr, "%s: Graph URI %s %s\n",
+ program, raptor_uri_as_string(graph), label);
+ else
+ fprintf(stderr, "%s: Default graph %s\n",
+ program, label);
+}
+
+
+static void
+print_namespaces(void* user_data, raptor_namespace *nspace)
+{
+ /* raptor_parser* rdf_parser = (raptor_parser*)user_data; */
+ unsigned char *s;
+
+ if(!report_namespace)
+ return;
+
+ s = raptor_namespace_format_as_xml(nspace, NULL);
+ fprintf(stderr, "%s: Namespace declared: %s\n",
+ program, s);
+ raptor_free_memory(s);
+
+ return;
+}
+
+
+static void
+relay_namespaces(void* user_data, raptor_namespace *nspace)
+{
+ raptor_serializer* rdf_serializer = (raptor_serializer*)user_data;
+
+ if(report_namespace)
+ print_namespaces(user_data, nspace);
+
+ raptor_serializer_set_namespace_from_namespace(rdf_serializer, nspace);
+}
+
+
+
+#ifdef HAVE_GETOPT_LONG
+#define HELP_TEXT(short, long, description) " -" short ", --" long " " description
+#define HELP_TEXT_LONG(long, description) " --" long " " description
+#define HELP_ARG(short, long) "--" #long
+#define HELP_ARG_BOTH(short, long) " \"-" short "\" or \"--" long "\""
+#define HELP_PAD "\n "
+#else
+#define HELP_TEXT(short, long, description) " -" short " " description
+#define HELP_TEXT_LONG(long, description)
+#define HELP_ARG(short, long) "-" #short
+#define HELP_ARG_BOTH(short, long) "\"-" short "\""
+#define HELP_PAD "\n "
+#endif
+
+
+#define GETOPT_STRING "cef:ghi:I:o:O:qrtvw"
+
+#ifdef HAVE_GETOPT_LONG
+#define SHOW_NAMESPACES_FLAG 0x100
+#define SHOW_GRAPHS_FLAG 0x200
+
+static const struct option long_options[] =
+{
+ /* name, has_arg, flag, val */
+ {"count", 0, 0, 'c'},
+ {"ignore-errors", 0, 0, 'e'},
+ {"feature", 1, 0, 'f'},
+ {"guess", 0, 0, 'g'},
+ {"help", 0, 0, 'h'},
+ {"input", 1, 0, 'i'},
+ {"input-uri", 1, 0, 'I'},
+ {"output", 1, 0, 'o'},
+ {"output-uri", 1, 0, 'O'},
+ {"quiet", 0, 0, 'q'},
+ {"replace-newlines", 0, 0, 'r'},
+ {"show-graphs", 0, 0, SHOW_GRAPHS_FLAG},
+ {"show-namespaces", 0, 0, SHOW_NAMESPACES_FLAG},
+ {"trace", 0, 0, 't'},
+ {"version", 0, 0, 'v'},
+ {"ignore-warnings", 0, 0, 'w'},
+ {NULL, 0, 0, 0}
+};
+#endif
+
+
+static int error_count = 0;
+static int warning_count = 0;
+
+static int ignore_warnings = 0;
+static int ignore_errors = 0;
+
+static const char * const title_format_string =
+ "Raptor RDF syntax parsing and serializing utility %s\n";
+
+
+static void
+rapper_log_handler(void *data, raptor_log_message *message)
+{
+ raptor_parser *parser = (raptor_parser *)data;
+
+ switch(message->level) {
+ case RAPTOR_LOG_LEVEL_FATAL:
+ case RAPTOR_LOG_LEVEL_ERROR:
+ if(!ignore_errors) {
+ fprintf(stderr, "%s: Error - ", program);
+ raptor_locator_print(message->locator, stderr);
+ fprintf(stderr, " - %s\n", message->text);
+
+ raptor_parser_parse_abort(parser);
+ }
+
+ error_count++;
+ break;
+
+ case RAPTOR_LOG_LEVEL_WARN:
+ if(!ignore_warnings) {
+ fprintf(stderr, "%s: Warning - ", program);
+ raptor_locator_print(message->locator, stderr);
+ fprintf(stderr, " - %s\n", message->text);
+ }
+
+ warning_count++;
+ break;
+
+ case RAPTOR_LOG_LEVEL_NONE:
+ case RAPTOR_LOG_LEVEL_TRACE:
+ case RAPTOR_LOG_LEVEL_DEBUG:
+ case RAPTOR_LOG_LEVEL_INFO:
+
+ fprintf(stderr, "%s: Unexpected %s message - ", program,
+ raptor_log_level_get_label(message->level));
+ raptor_locator_print(message->locator, stderr);
+ fprintf(stderr, " - %s\n", message->text);
+ break;
+ }
+
+}
+
+struct namespace_decl
+{
+ unsigned char *prefix;
+ unsigned char *uri_string;
+};
+
+
+static void
+rapper_free_namespace_decl(void* data) {
+ struct namespace_decl* nsd = (struct namespace_decl*)data;
+ if(nsd->prefix)
+ raptor_free_memory(nsd->prefix);
+ if(nsd->uri_string)
+ raptor_free_memory(nsd->uri_string);
+ raptor_free_memory(nsd);
+}
+
+
+static int
+rapper_uri_trace(void *user_data, raptor_uri* uri)
+{
+ fprintf(stderr, "%s: Tracing retrieval of URI %s\n",
+ program, raptor_uri_as_string(uri));
+ return 0;
+}
+
+
+typedef struct
+{
+ raptor_option option;
+ int i_value;
+ char* s_value;
+} option_value;
+
+
+
+int
+main(int argc, char *argv[])
+{
+ /* input variables - parser
+ * 'uri_string' is set to a URI otherwise 'filename' is file name
+ * or if NULL, stdin. Base URI in 'base_uri_string' is required for stdin.
+ */
+ raptor_world* world = NULL;
+ raptor_parser* rdf_parser = NULL;
+ char *filename = NULL;
+#define FILENAME_LABEL(name) ((name) ? (name) : "<stdin>")
+ unsigned char *uri_string = NULL;
+ int free_uri_string = 0;
+ raptor_uri *uri;
+ unsigned char *base_uri_string = NULL;
+ raptor_uri *base_uri = NULL;
+ const char *syntax_name="rdfxml";
+ raptor_sequence* parser_options = NULL;
+ int trace = 0;
+
+ /* output variables - serializer */
+ /* 'serializer' object variable is a global */
+ const char *serializer_syntax_name = "ntriples";
+ const unsigned char *output_base_uri_string = NULL;
+ raptor_uri *output_base_uri = NULL;
+ raptor_sequence* serializer_options = NULL;
+ raptor_sequence *namespace_declarations = NULL;
+
+ /* other variables */
+ int rc;
+ int usage = 0;
+ int help = 0;
+ char *p;
+
+ program = argv[0];
+ if((p = strrchr(program, '/')))
+ program = p + 1;
+ else if((p = strrchr(program, '\\')))
+ program = p + 1;
+ argv[0] = program;
+
+ world = raptor_new_world();
+ if(!world)
+ exit(1);
+ rc = raptor_world_open(world);
+ if(rc)
+ exit(1);
+
+ while(!usage && !help)
+ {
+ int c;
+#ifdef HAVE_GETOPT_LONG
+ int option_index = 0;
+
+ c = getopt_long (argc, argv, GETOPT_STRING, long_options, &option_index);
+#else
+ c = getopt (argc, argv, GETOPT_STRING);
+#endif
+ if(c == -1)
+ break;
+
+ switch (c) {
+ case 0:
+ case '?': /* getopt() - unknown option */
+ usage = 1;
+ break;
+
+ case 'c':
+ count = 1;
+ if(serializer_syntax_name)
+ serializer_syntax_name = NULL;
+ break;
+
+ case 'f':
+ if(optarg) {
+ if(!strcmp(optarg, "help")) {
+ int option_count = (int)raptor_option_get_count();
+ int i;
+
+ fprintf(stderr, "%s: Valid parser options are:\n",
+ program);
+ for(i = 0; i < option_count; i++) {
+ raptor_option_description *od;
+
+ od = raptor_world_get_option_description(world,
+ RAPTOR_DOMAIN_PARSER,
+ (raptor_option)i);
+ if(od) {
+ fprintf(stderr, " %-21s %s (%s)\n",
+ od->name, od->label,
+ raptor_option_get_value_type_label(od->value_type));
+ }
+ }
+ fprintf(stderr, "%s: Valid serializer options are:\n",
+ program);
+ for(i = 0; i < option_count; i++) {
+ raptor_option_description *od;
+
+ od = raptor_world_get_option_description(world,
+ RAPTOR_DOMAIN_SERIALIZER,
+ (raptor_option)i);
+ if(od) {
+ fprintf(stderr, " %-21s %s (%s)\n",
+ od->name, od->label,
+ raptor_option_get_value_type_label(od->value_type));
+ raptor_free_option_description(od);
+ }
+ }
+ fputs("Options are set with `" HELP_ARG(f, option) " OPTION = VALUE or `-f OPTION'\n"
+ "and take a decimal integer VALUE except where noted, defaulting to 1 if omitted.\n", stderr);
+ fputs("\nA option of the form xmlns:PREFIX=\"URI\" can be used to declare output\n"
+ "namespace prefixes and names for serializing using an XML-style syntax\n"
+ "Either or both of PREFIX or URI can be omitted such as -f xmlns=\"URI\"\n"
+ "This form can be repeated for multiple declarations.\n",
+ stderr);
+
+ raptor_free_world(world);
+ exit(0);
+ } else if(!strncmp(optarg, "xmlns", 5)) {
+ struct namespace_decl *nd;
+ nd = (struct namespace_decl *)raptor_alloc_memory(sizeof(*nd));
+ if(raptor_xml_namespace_string_parse((unsigned char*)optarg,
+ &nd->prefix,
+ &nd->uri_string)) {
+ fprintf(stderr, "%s: Bad xmlns syntax in '%s'\n",
+ program, optarg);
+ rapper_free_namespace_decl(nd);
+
+ raptor_free_world(world);
+ exit(0);
+ }
+
+ if(!namespace_declarations)
+ namespace_declarations = raptor_new_sequence(rapper_free_namespace_decl, NULL);
+
+ raptor_sequence_push(namespace_declarations, nd);
+ } else {
+ int option_count = (int)raptor_option_get_count();
+ int i;
+ size_t arg_len = strlen(optarg);
+ option_value* fv;
+ int ok = 0;
+
+ /* parser options */
+ for(i = 0; i < option_count; i++) {
+ raptor_domain domain;
+ raptor_option_description *od;
+ size_t name_len;
+
+ domain = RAPTOR_DOMAIN_PARSER;
+ od = raptor_world_get_option_description(world,
+ domain,
+ (raptor_option)i);
+ if(!od) {
+ domain = RAPTOR_DOMAIN_SERIALIZER;
+ od = raptor_world_get_option_description(world,
+ domain,
+ (raptor_option)i);
+ if(!od)
+ /* Neither a parser or serializer option - skip */
+ continue;
+ }
+
+ name_len = od->name_len;
+ if(!strncmp(optarg, od->name, name_len)) {
+ fv = (option_value*)raptor_calloc_memory(sizeof(option_value),
+ 1);
+
+ fv->option = (raptor_option)i;
+ if(od->value_type == RAPTOR_OPTION_VALUE_TYPE_BOOL ||
+ od->value_type == RAPTOR_OPTION_VALUE_TYPE_INT) {
+ if(name_len < arg_len && optarg[name_len] == '=')
+ fv->i_value = atoi(&optarg[name_len + 1]);
+ else if(name_len == arg_len)
+ fv->i_value = 1;
+ } else {
+ if(name_len < arg_len && optarg[name_len] == '=')
+ fv->s_value = &optarg[name_len + 1];
+ else if(name_len == arg_len)
+ fv->s_value = (char*)"";
+ }
+
+ if(domain == RAPTOR_DOMAIN_PARSER) {
+ if(!parser_options)
+ parser_options = raptor_new_sequence(raptor_free_memory,
+ NULL);
+ raptor_sequence_push(parser_options, fv);
+ } else {
+ /* RAPTOR_DOMAIN_SERIALIZER */
+ if(!serializer_options)
+ serializer_options = raptor_new_sequence(raptor_free_memory,
+ NULL);
+ raptor_sequence_push(serializer_options, fv);
+ }
+
+ ok = 1;
+ }
+ raptor_free_option_description(od);
+
+ if(ok)
+ break;
+ }
+
+
+ if(!ok) {
+ fprintf(stderr,
+ "%s: invalid argument `%s' for `" HELP_ARG(f, option) "'\n"
+ "Try '%s " HELP_ARG(f, option) " help' for a list of valid options\n",
+ program, optarg, program);
+ usage = 1;
+ }
+ }
+ }
+ break;
+
+ case 'g':
+ guess = 1;
+ break;
+
+ case 'h':
+ help = 1;
+ break;
+
+ case 't':
+ trace = 1;
+ break;
+
+ case 'q':
+ quiet = 1;
+ break;
+
+ case 'r':
+ replace_newlines = 1;
+ break;
+
+ case 'o':
+ if(optarg) {
+ if(raptor_world_is_serializer_name(world, optarg))
+ serializer_syntax_name = optarg;
+ else {
+ int i;
+
+ fprintf(stderr,
+ "%s: invalid argument `%s' for `" HELP_ARG(o, output) "'\n",
+ program, optarg);
+ fprintf(stderr, "Valid arguments are:\n");
+ for(i = 0; 1; i++) {
+ const raptor_syntax_description* sd;
+ sd = raptor_world_get_serializer_description(world, i);
+ if(!sd)
+ break;
+ fprintf(stderr, " %-14s for %s\n", sd->names[0], sd->label);
+ }
+ usage = 1;
+ break;
+
+ }
+ }
+ break;
+
+ case 'O':
+ if(optarg)
+ output_base_uri_string = (const unsigned char*)optarg;
+ break;
+
+ case 'i':
+ if(optarg) {
+ if(raptor_world_is_parser_name(world, optarg))
+ syntax_name = optarg;
+ else {
+ int i;
+
+ fprintf(stderr,
+ "%s: invalid argument `%s' for `" HELP_ARG(i, input) "'\n",
+ program, optarg);
+ fprintf(stderr, "Valid arguments are:\n");
+ for(i = 0; 1; i++) {
+ const raptor_syntax_description* sd;
+ sd = raptor_world_get_parser_description(world, i);
+ if(!sd)
+ break;
+ fprintf(stderr, " %-14s for %s\n", sd->names[0], sd->label);
+ }
+ usage = 1;
+ break;
+
+ }
+ }
+ break;
+
+ case 'I':
+ if(optarg)
+ base_uri_string = (unsigned char*)optarg;
+ break;
+
+ case 'w':
+ ignore_warnings = 1;
+ break;
+
+ case 'e':
+ ignore_errors = 1;
+ break;
+
+ case 'v':
+ fputs(raptor_version_string, stdout);
+ fputc('\n', stdout);
+
+ raptor_free_world(world);
+ exit(0);
+
+#ifdef SHOW_NAMESPACES_FLAG
+ case SHOW_NAMESPACES_FLAG:
+ report_namespace = 1;
+ break;
+#endif
+
+#ifdef SHOW_GRAPHS_FLAG
+ case SHOW_GRAPHS_FLAG:
+ report_graph = 1;
+ break;
+#endif
+
+ } /* end switch */
+
+ }
+
+ if(optind != argc-1 && optind != argc-2 && !help && !usage) {
+ usage = 2; /* Title and usage */
+ }
+
+
+ if(usage) {
+ if(usage > 1) {
+ fprintf(stderr, title_format_string, raptor_version_string);
+ fputs("Raptor home page: ", stderr);
+ fputs(raptor_home_url_string, stderr);
+ fputc('\n', stderr);
+ fputs(raptor_copyright_string, stderr);
+ fputs("\nLicense: ", stderr);
+ fputs(raptor_license_string, stderr);
+ fputs("\n\n", stderr);
+ }
+ fprintf(stderr, "Try `%s " HELP_ARG(h, help) "' for more information.\n",
+ program);
+
+ raptor_free_world(world);
+ exit(1);
+ }
+
+ if(help) {
+ int i;
+
+ printf(title_format_string, raptor_version_string);
+ puts("Parse RDF syntax from a source into serialized RDF triples.");
+ printf("Usage: %s [OPTIONS] INPUT-URI [INPUT-BASE-URI]\n\n", program);
+
+ fputs(raptor_copyright_string, stdout);
+ fputs("\nLicense: ", stdout);
+ puts(raptor_license_string);
+ fputs("Raptor home page: ", stdout);
+ puts(raptor_home_url_string);
+
+ puts("\nArguments:");
+ puts(" INPUT-URI a filename, URI or '-' for standard input (stdin).");
+ puts(" INPUT-BASE-URI the input/parser base URI or '-' for none.\n"
+ " Default is INPUT-URI\n"
+ " Equivalent to" HELP_ARG_BOTH("I INPUT-BASE-URI", "input-uri INPUT-BASE-URI"));
+
+ puts("\nMain options:");
+ puts(HELP_TEXT("i FORMAT", "input FORMAT ", "Set the input format/parser to one of:"));
+ for(i = 0; 1; i++) {
+ const raptor_syntax_description* sd;
+ sd = raptor_world_get_parser_description(world, i);
+ if(!sd)
+ break;
+ printf(" %-14s %s", sd->names[0], sd->label);
+ if(!i)
+ puts(" (default)");
+ else
+ putchar('\n');
+ }
+ puts(HELP_TEXT("I URI", "input-uri URI ", "Set the input/parser base URI. '-' for none.") HELP_PAD " Default is INPUT-BASE-URI argument value.");
+ putchar('\n');
+
+ puts(HELP_TEXT("o FORMAT", "output FORMAT", "Set the output format/serializer to one of:"));
+ for(i = 0; 1; i++) {
+ const raptor_syntax_description* sd;
+ sd = raptor_world_get_serializer_description(world, i);
+ if(!sd)
+ break;
+ printf(" %-14s %s", sd->names[0], sd->label);
+ if(!i)
+ puts(" (default)");
+ else
+ putchar('\n');
+ }
+ puts(HELP_TEXT("O URI", "output-uri URI ", "Set the output/serializer base URI. '-' for none.") HELP_PAD " Default is input/parser base URI.");
+ putchar('\n');
+
+ puts("General options:");
+ puts(HELP_TEXT("c", "count ", "Count triples only - do not print them."));
+ puts(HELP_TEXT("e", "ignore-errors ", "Ignore error messages"));
+ puts(HELP_TEXT("f OPTION(=VALUE)", "feature OPTION(=VALUE)", HELP_PAD "Set parser or serializer options" HELP_PAD "Use `-f help' for a list of valid options"));
+ puts(HELP_TEXT("g", "guess ", "Guess the input syntax (same as -i guess)"));
+ puts(HELP_TEXT("h", "help ", "Print this help, then exit"));
+ puts(HELP_TEXT("m MODE", "mode MODE ", "Set parser mode - 'lax' (default) or 'strict'"));
+ puts(HELP_TEXT("q", "quiet ", "No extra information messages"));
+ puts(HELP_TEXT("r", "replace-newlines", "Replace newlines with spaces in literals"));
+#ifdef SHOW_GRAPHS_FLAG
+ puts(HELP_TEXT_LONG("show-graphs ", "Show named graphs as they are declared"));
+#endif
+#ifdef SHOW_NAMESPACES_FLAG
+ puts(HELP_TEXT_LONG("show-namespaces ", "Show namespaces as they are declared"));
+#endif
+ puts(HELP_TEXT("t", "trace ", "Trace URIs retrieved during parsing"));
+ puts(HELP_TEXT("w", "ignore-warnings ", "Ignore warning messages"));
+ puts(HELP_TEXT("v", "version ", "Print the Raptor version"));
+ puts("\nReport bugs to http://bugs.librdf.org/");
+
+ raptor_free_world(world);
+ exit(0);
+ }
+
+
+ if(optind == argc-1)
+ uri_string = (unsigned char*)argv[optind];
+ else {
+ uri_string = (unsigned char*)argv[optind++];
+ base_uri_string = (unsigned char*)argv[optind];
+ }
+
+ /* If uri_string is "path-to-file", turn it into a file: URI */
+ if(!strcmp((const char*)uri_string, "-")) {
+ if(!base_uri_string) {
+ fprintf(stderr,
+ "%s: A Base URI is required when reading from standard input.\n",
+ program);
+ return(1);
+ }
+ uri_string = NULL;
+ } else if(!access((const char*)uri_string, R_OK)) {
+ filename = (char*)uri_string;
+ uri_string = raptor_uri_filename_to_uri_string(filename);
+ if(!uri_string) {
+ fprintf(stderr, "%s: Failed to create URI for file %s.\n",
+ program, filename);
+ return(1);
+ }
+ free_uri_string = 1;
+ }
+
+ if(uri_string) {
+ uri = raptor_new_uri(world, uri_string);
+ if(!uri) {
+ fprintf(stderr, "%s: Failed to create URI for %s\n",
+ program, uri_string);
+ return(1);
+ }
+ } else
+ uri = NULL; /* stdin */
+
+
+ /* Set the input/parser base URI */
+ if(base_uri_string) {
+ if(strcmp((const char*)base_uri_string, "-")) {
+ base_uri = raptor_new_uri(world, base_uri_string);
+ if(!base_uri) {
+ fprintf(stderr, "%s: Failed to create URI for %s\n",
+ program, base_uri_string);
+ return(1);
+ }
+ }
+ }
+
+
+ /* Set the output/serializer base URI from the argument if explicitly
+ * set, otherwise default to the input base URI if present.
+ */
+ if(!output_base_uri_string) {
+ if(base_uri)
+ output_base_uri = raptor_uri_copy(base_uri);
+ } else {
+ if(strcmp((const char*)output_base_uri_string, "-")) {
+ output_base_uri = raptor_new_uri(world, output_base_uri_string);
+ if(!output_base_uri) {
+ fprintf(stderr, "%s: Failed to create output base URI for %s\n",
+ program, output_base_uri_string);
+ return(1);
+ }
+ } else
+ output_base_uri = NULL;
+ }
+
+
+ if(guess)
+ syntax_name="guess";
+
+ rdf_parser = raptor_new_parser(world, syntax_name);
+ if(!rdf_parser) {
+ fprintf(stderr, "%s: Failed to create raptor parser type %s\n",
+ program, syntax_name);
+ return(1);
+ }
+
+ raptor_world_set_log_handler(world, rdf_parser, rapper_log_handler);
+
+ if(parser_options) {
+ option_value *fv;
+ while((fv = (option_value*)raptor_sequence_pop(parser_options))) {
+ raptor_parser_set_option(rdf_parser, fv->option,
+ fv->s_value, fv->i_value);
+ raptor_free_memory(fv);
+ }
+ raptor_free_sequence(parser_options);
+ parser_options = NULL;
+ }
+
+ if(trace)
+ raptor_parser_set_uri_filter(rdf_parser, rapper_uri_trace, rdf_parser);
+
+
+ if(!quiet) {
+ if(uri_string) {
+ if(base_uri_string)
+ fprintf(stderr, "%s: Parsing URI %s with parser %s and base URI %s\n",
+ program, uri_string, syntax_name, base_uri_string);
+ else
+ fprintf(stderr, "%s: Parsing URI %s with parser %s\n", program,
+ uri_string, syntax_name);
+ } else {
+ if(base_uri_string)
+ fprintf(stderr,
+ "%s: Parsing file %s with parser %s and base URI %s\n", program,
+ FILENAME_LABEL(filename), syntax_name, base_uri_string);
+ else
+ fprintf(stderr, "%s: Parsing file %s with parser %s\n", program,
+ FILENAME_LABEL(filename), syntax_name);
+ }
+ }
+
+ raptor_parser_set_statement_handler(rdf_parser, rdf_parser, print_triples);
+
+ if(report_graph)
+ raptor_parser_set_graph_mark_handler(rdf_parser, rdf_parser, print_graph);
+
+ if(report_namespace)
+ raptor_parser_set_namespace_handler(rdf_parser, rdf_parser,
+ print_namespaces);
+
+
+ if(serializer_syntax_name) {
+ if(!quiet) {
+ if(output_base_uri)
+ fprintf(stderr, "%s: Serializing with serializer %s and base URI %s\n",
+ program, serializer_syntax_name,
+ raptor_uri_as_string(output_base_uri));
+ else
+ fprintf(stderr, "%s: Serializing with serializer %s\n",
+ program, serializer_syntax_name);
+ }
+
+ serializer = raptor_new_serializer(world, serializer_syntax_name);
+ if(!serializer) {
+ fprintf(stderr,
+ "%s: Failed to create raptor serializer type %s\n", program,
+ serializer_syntax_name);
+ return(1);
+ }
+
+ if(namespace_declarations) {
+ int i;
+ for(i = 0; i< raptor_sequence_size(namespace_declarations); i++) {
+ struct namespace_decl *nd;
+ raptor_uri *ns_uri = NULL;
+
+ nd = (struct namespace_decl*)raptor_sequence_get_at(namespace_declarations, i);
+ if(nd->uri_string)
+ ns_uri = raptor_new_uri(world, nd->uri_string);
+
+ raptor_serializer_set_namespace(serializer, ns_uri, nd->prefix);
+ if(ns_uri)
+ raptor_free_uri(ns_uri);
+ }
+ raptor_free_sequence(namespace_declarations);
+ namespace_declarations = NULL;
+ }
+
+ if(serializer_options) {
+ option_value *fv;
+ while((fv = (option_value*)raptor_sequence_pop(serializer_options))) {
+ raptor_serializer_set_option(serializer, fv->option,
+ fv->s_value, fv->i_value);
+ raptor_free_memory(fv);
+ }
+ raptor_free_sequence(serializer_options);
+ serializer_options = NULL;
+ }
+
+ raptor_serializer_start_to_file_handle(serializer,
+ output_base_uri, stdout);
+
+ if(!report_namespace)
+ raptor_parser_set_namespace_handler(rdf_parser, serializer,
+ relay_namespaces);
+ }
+
+
+ /* Begin the parsing of the content from file or URI,
+ * sending it to serializer via callback print_triples()
+ */
+ rc = 0;
+ if(!uri || filename) {
+ if(raptor_parser_parse_file(rdf_parser, uri, base_uri)) {
+ fprintf(stderr, "%s: Failed to parse file %s %s content\n",
+ program, FILENAME_LABEL(filename), syntax_name);
+ rc = 1;
+ }
+ } else {
+ if(raptor_parser_parse_uri(rdf_parser, uri, base_uri)) {
+ fprintf(stderr, "%s: Failed to parse URI %s %s content\n",
+ program, uri_string, syntax_name);
+ rc = 1;
+ }
+ }
+
+ raptor_free_parser(rdf_parser);
+
+ if(serializer) {
+ raptor_serializer_serialize_end(serializer);
+ raptor_free_serializer(serializer);
+ }
+
+
+ if(!quiet) {
+ if(triple_count == 1)
+ fprintf(stderr, "%s: Parsing returned 1 triple\n",
+ program);
+ else
+ fprintf(stderr, "%s: Parsing returned %d triples\n",
+ program, triple_count);
+ }
+
+ if(output_base_uri)
+ raptor_free_uri(output_base_uri);
+ if(base_uri)
+ raptor_free_uri(base_uri);
+ if(uri)
+ raptor_free_uri(uri);
+ if(free_uri_string)
+ raptor_free_memory(uri_string);
+
+ if(namespace_declarations)
+ raptor_free_sequence(namespace_declarations);
+ if(parser_options)
+ raptor_free_sequence(parser_options);
+ if(serializer_options)
+ raptor_free_sequence(serializer_options);
+
+ raptor_free_world(world);
+
+ if(error_count && !ignore_errors)
+ return 1;
+
+ if(warning_count && !ignore_warnings)
+ return 2;
+
+ return(rc);
+}
diff --git a/utils/rapper.html b/utils/rapper.html
new file mode 100644
index 0000000..ebb2726
--- /dev/null
+++ b/utils/rapper.html
@@ -0,0 +1,104 @@
+<!-- Creator : groff version 1.21 -->
+<!-- CreationDate: Thu Jun 7 13:59:51 2012 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<style type="text/css">
+/*<![CDATA[*/
+ p { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ table { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ h1 { text-align: center }
+/*]]>*/
+</style>
+<title>Raptor RDF Parser Toolkit - Raptor RDF parser utility</title>
+</head>
+<body bgcolor="#ffffff" text="#000085">
+<h1>Raptor RDF Parser Toolkit - Raptor RDF parser utility</h1>
+<hr />
+<h2>NAME <a name="NAME" id="NAME"></a></h2>
+<p style="margin-left:11%; margin-top: 1em">rapper &minus; Raptor RDF parsing and serializing utility</p>
+<h2>SYNOPSIS <a name="SYNOPSIS" id="SYNOPSIS"></a></h2>
+<p style="margin-left:11%; margin-top: 1em"><b>rapper</b> [<b>OPTIONS</b>] <i>INPUT-URI [INPUT-BASE-URI]</i></p>
+<h2>EXAMPLE <a name="EXAMPLE" id="EXAMPLE"></a></h2>
+<p style="margin-left:11%; margin-top: 1em"><i><b>rapper -o ntriples http://planetrdf.com/guide/rss.rdf<br />
+rapper -i rss-tag-soup -o rss-1.0 pile-of-rss.xml http://example.org/base/<br />
+rapper --count http://example.org/index.rdf</b></i></p>
+<h2>DESCRIPTION <a name="DESCRIPTION" id="DESCRIPTION"></a></h2>
+<p style="margin-left:11%; margin-top: 1em">The <b>rapper</b> utility allows parsing of RDF content by the <b>Raptor</b> RDF parser toolkit emitting the results as RDF triples in a choice of syntaxes. The <i>INPUT-URI</i> can be a file name, &rsquo;-&rsquo; for standard input or if Raptor is built with a WWW retrieval library, a general URI. The optional <i>INPUT-BASE-URI</i> is used as the document parser base URI if present otherwise defaults to the <i>INPUT-URI</i>. A value of &rsquo;-&rsquo; means no base URI.</p>
+<h2>OPTIONS <a name="OPTIONS" id="OPTIONS"></a></h2>
+<p style="margin-left:11%; margin-top: 1em">rapper uses the usual GNU command line syntax, with long options starting with two dashes (&rsquo;-&rsquo;) if supported by the getopt_long function. Otherwise the short options are only available. <b><br />
+&minus;h, &minus;&minus;help</b></p>
+<p style="margin-left:22%;">Show a summary of the options.</p>
+<p style="margin-left:11%;"><b>&minus;i, &minus;&minus;input FORMAT</b></p>
+<p style="margin-left:22%;">Set the input <i>FORMAT</i> to one of &rsquo;rdfxml&rsquo; (RDF/XML, default), &rsquo;ntriples&rsquo; (N-Triples, see below), &rsquo;turtle&rsquo; (Turtle, see below) or &rsquo;rss-tag-soup&rsquo; (RSS Tag Soup). The RSS Tag Soup parser can turn the many XML RSS formats and Atom 0.3 into RDF triples.</p>
+<p style="margin-left:22%; margin-top: 1em">The list of parsers depends on how libraptor(3) was built. The list of supported parsers is given in the help summary given by &minus;h.</p>
+<p style="margin-left:11%;"><b>&minus;I, &minus;&minus;input-uri URI</b></p>
+<p style="margin-left:22%;">Set the input/parser base <i>URI</i> or use value &rsquo;-&rsquo; for no base. The default is the INPUT-URI argument value.</p>
+<p style="margin-left:11%;"><b>&minus;o, &minus;&minus;output FORMAT</b></p>
+<p style="margin-left:22%;">Set the output <i>FORMAT</i> to &rsquo;ntriples&rsquo; (N-Triples, default), &rsquo;rdfxml&rsquo; (RDF/XML), &rsquo;rdfxml-abbrev&rsquo; (RDF/XML with abbreviations) or &rsquo;rss-1.0&rsquo; (RSS 1.0, also an RDF/XML syntax).</p>
+<p style="margin-left:22%; margin-top: 1em">The list of serializers depends on how libraptor(3) was built. The list of supported serializers is given in the help summary given by &minus;h.</p>
+<p style="margin-left:11%;"><b>&minus;O, &minus;&minus;output-uri URI</b></p>
+<p style="margin-left:22%;">Set the output/serializer base <i>URI</i> or use value &rsquo;-&rsquo; for no base. The default is the input base uri, either set by the argument INPUT-BASE-URI or via options <b>&minus;I, &minus;&minus;input-uri URI</b></p>
+<p style="margin-left:11%;"><b>&minus;c, &minus;&minus;count</b></p>
+<p style="margin-left:22%;">Only count the triples and produce no other output.</p>
+<p style="margin-left:11%;"><b>&minus;e, &minus;&minus;ignore-errors</b></p>
+<p style="margin-left:22%;">Ignore errors, do not emit the messages and try to continue parsing.</p>
+<p style="margin-left:11%;"><b>&minus;f, &minus;&minus;feature FEATURE[=VALUE]</b></p>
+<p style="margin-left:22%;">Set a parser or serializer feature <i>FEATURE</i> to a value, or to 1 if <i>VALUE</i> is omitted, Use &minus;f help to get lists of valid parser and serializer features.</p>
+<p style="margin-left:22%; margin-top: 1em">If the form &minus;f &rsquo;xmlns:<i>prefix</i>="<i>uri</i>"&rsquo; is used, the prefix and namespace uri given will be set for serializing. The syntax matches XML in that either or both of <i>prefix</i> or <i>uri</i> can be omitted.</p>
+<p style="margin-left:11%;"><b>&minus;g, &minus;&minus;guess</b></p>
+<p style="margin-left:22%;">Guess the parser to use from the source-URI rather than use the &minus;i FORMAT.</p>
+<p style="margin-left:11%;"><b>&minus;q, &minus;&minus;quiet</b></p>
+<p style="margin-left:22%;">No extra information messages.</p>
+<p style="margin-left:11%;"><b>&minus;r, &minus;&minus;replace-newlines</b></p>
+<p style="margin-left:22%;">Replace newlines in multi-line literals with spaces.</p>
+<p style="margin-left:11%;"><b>&minus;&minus;show-graphs</b></p>
+<p style="margin-left:22%;">Print graph names (URIs) as they are seen in the input. This only has a meaning for parsers that support graph names such as the TRiG parser.</p>
+<p style="margin-left:11%;"><b>&minus;&minus;show-namespaces</b></p>
+<p style="margin-left:22%;">Print namespaces as they are seen in the input.</p>
+<p style="margin-left:11%;"><b>&minus;t, &minus;&minus;trace</b></p>
+<p style="margin-left:22%;">Print URIs retrieved during parsing. Especially useful for monitoring what the guess and GRDDL parsers are doing.</p>
+<p style="margin-left:11%;"><b>&minus;w, &minus;&minus;ignore-warnings</b></p>
+<p style="margin-left:22%;">Ignore warnings, do not emit the messages.</p>
+<p style="margin-left:11%;"><b>&minus;v, &minus;&minus;version</b></p>
+<p style="margin-left:22%;">Print the raptor version and exit.</p>
+<h2>EXAMPLES <a name="EXAMPLES" id="EXAMPLES"></a></h2>
+<p style="margin-left:11%; margin-top: 1em"><b>rapper -q -i ntriples -o rdfxml -f &rsquo;xmlns:rss="http://purl.org/rss/1.0/"&rsquo; -f &rsquo;xmlns:ex="http://example.org/"&rsquo; tests/test.nt<br />
+rapper -q -o rdfxml -f &rsquo;xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"&rsquo; tests/rdf-schema.rdf &rsquo;http://www.w3.org/2000/01/rdf-schema#&rsquo;</b></p>
+<h2>CONFORMING TO <a name="CONFORMING_TO"></a></h2>
+<p style="margin-left:11%; margin-top: 1em"><b><i>RDF/XML Syntax (Revised)</i></b>, W3C Recommendation, <a href="http://www.w3.org/TR/rdf-syntax-grammar/">http://www.w3.org/TR/rdf-syntax-grammar/</a></p>
+<p style="margin-left:11%; margin-top: 1em"><i>N-Triples</i>, in <i>RDF Test Cases</i>, Jan Grant and Dave Beckett (eds.), W3C Recommendation, <a href="http://www.w3.org/TR/rdf-testcases/#ntriples">http://www.w3.org/TR/rdf-testcases/#ntriples</a></p>
+<p style="margin-left:11%; margin-top: 1em"><i>Turtle Terse RDF Triple Language</i>, Dave Beckett, <a href="http://www.dajobe.org/2004/01/turtle/">http://www.dajobe.org/2004/01/turtle/</a></p>
+<p style="margin-left:11%; margin-top: 1em"><i>RDFA in XHTML: Syntax and Processing</i>, Ben Adida, Mark Birbeck, Shane McCarron and Steven Pemberton (eds.), W3C Candidate Recommendation, 20 June 2008 <a href="http://www.w3.org/TR/2008/CR-rdfa-syntax-20080620/">http://www.w3.org/TR/2008/CR-rdfa-syntax-20080620/</a></p>
+<p style="margin-left:11%; margin-top: 1em"><i>RDF Site Summary (RSS) 1.0</i>, 2000-12-06 <a href="http://purl.org/rss/1.0/spec">http://purl.org/rss/1.0/spec</a></p>
+<h2>SEE ALSO <a name="SEE_ALSO"></a></h2>
+<p style="margin-left:11%; margin-top: 1em"><b>libraptor(3),</b>raptor-config(1)</p>
+<h2>CHANGES <a name="CHANGES" id="CHANGES"></a></h2>
+<p style="margin-left:11%; margin-top: 1em"><b>2.0.0</b><br />
+Removed -a option that did nothing.</p>
+<p style="margin-left:11%; margin-top: 1em">Removed -m option from rapper but it was never documented here.</p>
+<p style="margin-left:11%; margin-top: 1em">Removed -n option that was long hidden.</p>
+<p style="margin-left:11%; margin-top: 1em">Removed -s option that was equivalent to -f scanForRDF</p>
+<p style="margin-left:11%; margin-top: 1em"><b>1.4.16</b><br />
+Added -I/--input-uri and -O/--output-uri to set the input and output (parser and serializer) base URIs separately.</p>
+<p style="margin-left:11%; margin-top: 1em"><b>1.4.15</b><br />
+Added -t/--trace to do URI traces.</p>
+<p style="margin-left:11%; margin-top: 1em"><b>1.4.5</b><br />
+Updated to add serializer rdfxml-abbrev</p>
+<p style="margin-left:11%; margin-top: 1em"><b>1.4.3</b><br />
+Updated potential parser and serializers and described -f for defining namespaces.</p>
+<p style="margin-left:11%; margin-top: 1em"><b>1.3.0</b><br />
+Added &minus;f for features.<br />
+Added &minus;g for guessing the parser to use.</p>
+<p style="margin-left:11%; margin-top: 1em"><b>1.1.0</b><br />
+Removed &minus;a, &minus;&minus;assume since rdf:RDF is now always optional.</p>
+<h2>AUTHOR <a name="AUTHOR" id="AUTHOR"></a></h2>
+<p style="margin-left:11%; margin-top: 1em">Dave Beckett - <a href="http://www.dajobe.org/">http://www.dajobe.org/</a></p>
+<hr />
+
+<p>Copyright 2002-2012 <a href="http://www.dajobe.org/">Dave Beckett</a><br />2002-2012 <a href="http://www.bristol.ac.uk/">University of Bristol</a></p>
+
+</body>
+</html>
diff --git a/utils/raptor_getopt.h b/utils/raptor_getopt.h
new file mode 100644
index 0000000..56ba8ea
--- /dev/null
+++ b/utils/raptor_getopt.h
@@ -0,0 +1,21 @@
+/*
+ * Public Domain getopt header
+ *
+ */
+
+#ifndef RAPTOR_GETOPT_H
+#define RAPTOR_GETOPT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int getopt(int argc, char * const argv[], const char *optstring);
+extern char *optarg;
+extern int optind, opterr, optopt;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/utils/rdfdiff.c b/utils/rdfdiff.c
new file mode 100644
index 0000000..0cd6279
--- /dev/null
+++ b/utils/rdfdiff.c
@@ -0,0 +1,1065 @@
+/* -*- Mode: c; c-basic-offset: 2 -*-
+ *
+ * rdfdiff.c - Raptor RDF diff tool
+ *
+ * Copyright (C) 2000-2008, David Beckett http://www.dajobe.org/
+ * Copyright (C) 2000-2005, University of Bristol, UK http://www.bristol.ac.uk/
+ * Copyright (C) 2005, Steve Shepard steveshep@gmail.com
+ *
+ * This package is Free Software and part of Redland http://librdf.org/
+ *
+ * It is licensed under the following three licenses as alternatives:
+ * 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
+ * 2. GNU General Public License (GPL) V2 or any newer version
+ * 3. Apache License, V2.0 or any newer version
+ *
+ * You may not use this file except in compliance with at least one of
+ * the above three licenses.
+ *
+ * See LICENSE.html or LICENSE.txt at the top of this package for the
+ * complete terms and further detail along with the license texts for
+ * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
+ *
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <raptor_config.h>
+#endif
+
+#ifdef WIN32
+#include <win32_raptor_config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+
+/* Raptor includes */
+#include <raptor2.h>
+#include <raptor_internal.h>
+
+/* for access() and R_OK */
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef WIN32
+#include <io.h>
+#endif
+
+/* many places for getopt */
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#else
+#include <raptor_getopt.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#if 0
+#undef RAPTOR_DEBUG
+#define RAPTOR_DEBUG 2
+#endif
+
+#ifndef RAPTOR_INTERNAL
+#define RAPTOR_MALLOC(type, size) (type)malloc(size)
+#define RAPTOR_CALLOC(type, nmemb, size) (type)calloc(nmemb, size)
+#define RAPTOR_FREE(type, ptr) free((void*)ptr)
+#endif
+
+#ifdef NEED_OPTIND_DECLARATION
+extern int optind;
+extern char *optarg;
+#endif
+
+#define MAX_ASCII_INT_SIZE 13
+#define RDF_NAMESPACE_URI_LEN 43
+#define ORDINAL_STRING_LEN (RDF_NAMESPACE_URI_LEN + MAX_ASCII_INT_SIZE + 1)
+
+#define GETOPT_STRING "bhf:t:u:"
+
+#ifdef HAVE_GETOPT_LONG
+static const struct option long_options[] =
+{
+ /* name, has_arg, flag, val */
+ {"brief" , 0, 0, 'b'},
+ {"help" , 0, 0, 'h'},
+ {"from-format" , 1, 0, 'f'},
+ {"to-format" , 1, 0, 't'},
+ {"base-uri" , 1, 0, 'u'},
+ {NULL , 0, 0, 0}
+};
+#endif
+
+#ifdef HAVE_GETOPT_LONG
+#define HELP_TEXT(short, long, description) " -" short ", --" long " " description
+#define HELP_ARG(short, long) "--" #long
+#define HELP_PAD "\n "
+#else
+#define HELP_TEXT(short, long, description) " -" short " " description
+#define HELP_ARG(short, long) "-" #short
+#define HELP_PAD "\n "
+#endif
+
+typedef struct rdfdiff_link_s {
+ struct rdfdiff_link_s *next;
+ raptor_statement *statement;
+} rdfdiff_link;
+
+typedef struct rdfdiff_blank_s {
+ struct rdfdiff_blank_s *next;
+ raptor_world *world;
+ char *blank_id;
+ raptor_statement *owner;
+ rdfdiff_link *first;
+ rdfdiff_link *last;
+ int matched;
+} rdfdiff_blank;
+
+typedef struct {
+ raptor_world *world;
+ char *name;
+ raptor_parser *parser;
+ rdfdiff_link *first;
+ rdfdiff_link *last;
+ rdfdiff_blank *first_blank;
+ rdfdiff_blank *last_blank;
+ int statement_count;
+ int error_count;
+ int warning_count;
+ int difference_count;
+} rdfdiff_file;
+
+static int brief = 0;
+static char *program = NULL;
+static const char * const title_format_string="Raptor RDF diff utility %s\n";
+static int ignore_errors = 0;
+static int ignore_warnings = 0;
+static int emit_from_header = 1;
+static int emit_to_header = 1;
+
+static rdfdiff_file* from_file = NULL;
+static rdfdiff_file*to_file = NULL;
+
+static rdfdiff_file* rdfdiff_new_file(raptor_world* world, const unsigned char *name, const char *syntax);
+static void rdfdiff_free_file(rdfdiff_file* file);
+
+static rdfdiff_blank *rdfdiff_find_blank(rdfdiff_blank *first, char *blank_id);
+static rdfdiff_blank *rdfdiff_new_blank(raptor_world *world, char *blank_id);
+static void rdfdiff_free_blank(rdfdiff_blank *blank);
+
+static int rdfdiff_blank_equals(const rdfdiff_blank *b1, const rdfdiff_blank *b2,
+ rdfdiff_file*b1_file, rdfdiff_file*b2_file);
+
+static void rdfdiff_log_handler(void *data, raptor_log_message *message);
+
+static void rdfdiff_collect_statements(void *user_data, raptor_statement *statement);
+
+int main(int argc, char *argv[]);
+
+
+/* Version of strcmp that can take NULL parameters. Assume that
+ * Non-NULL strings are lexically greater than NULL strings
+ */
+static int
+safe_strcmp(const char *s1, const char *s2)
+{
+ if(s1 == NULL && s2 == NULL) {
+ return 0;
+ } else if(s1 == NULL && s2 != NULL) {
+ return -1;
+ } else if(s1 != NULL && s2 == NULL) {
+ return 1;
+ } else {
+ return strcmp(s1, s2);
+ }
+
+}
+
+
+static rdfdiff_file*
+rdfdiff_new_file(raptor_world *world, const unsigned char *name, const char *syntax)
+{
+ rdfdiff_file* file = RAPTOR_CALLOC(rdfdiff_file*, 1, sizeof(*file));
+ if(file) {
+ file->world = world;
+ file->name = RAPTOR_MALLOC(char*, strlen((const char*)name) + 1);
+ strcpy((char*)file->name, (const char*)name);
+
+ file->parser = raptor_new_parser(world, syntax);
+ if(file->parser) {
+ raptor_world_set_log_handler(world, file, rdfdiff_log_handler);
+ } else {
+ fprintf(stderr, "%s: Failed to create raptor parser type %s for %s\n",
+ program, syntax, name);
+ rdfdiff_free_file(file);
+ return(0);
+ }
+
+
+ }
+
+ return file;
+}
+
+
+static void
+rdfdiff_free_file(rdfdiff_file* file)
+{
+ rdfdiff_link *cur, *next;
+ rdfdiff_blank *cur1, *next1;
+
+ if(file->name)
+ RAPTOR_FREE(char*, file->name);
+
+ if(file->parser)
+ raptor_free_parser(file->parser);
+
+ for(cur = file->first; cur; cur = next) {
+ next = cur->next;
+
+ raptor_free_statement(cur->statement);
+ RAPTOR_FREE(rdfdiff_link, cur);
+ }
+
+ for(cur1 = file->first_blank; cur1; cur1 = next1) {
+ next1 = cur1->next;
+
+ rdfdiff_free_blank(cur1);
+ }
+
+ RAPTOR_FREE(rdfdiff_file, file);
+
+}
+
+
+static rdfdiff_blank *
+rdfdiff_new_blank(raptor_world* world, char *blank_id)
+{
+ rdfdiff_blank *blank = RAPTOR_CALLOC(rdfdiff_blank*, 1, sizeof(*blank));
+
+ if(blank) {
+ blank->world = world;
+ blank->blank_id = RAPTOR_MALLOC(char*, strlen(blank_id) + 1);
+ strcpy((char*)blank->blank_id, (const char*)blank_id);
+ }
+
+ return blank;
+}
+
+
+static void
+rdfdiff_free_blank(rdfdiff_blank *blank)
+{
+ rdfdiff_link *cur, *next;
+
+ if(blank->blank_id)
+ RAPTOR_FREE(char*, blank->blank_id);
+
+ if(blank->owner)
+ raptor_free_statement(blank->owner);
+
+ for(cur = blank->first; cur; cur = next) {
+ next = cur->next;
+
+ raptor_free_statement(cur->statement);
+ RAPTOR_FREE(rdfdiff_link, cur);
+ }
+
+ RAPTOR_FREE(rdfdiff_blank, blank);
+
+}
+
+
+static int
+rdfdiff_statement_equals(raptor_world *world, const raptor_statement *s1, const raptor_statement *s2)
+{
+ int rv = 0;
+
+ if(!s1 || !s2)
+ return 0;
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, "(rdfdiff_statement_equals) Comparing ");
+ raptor_statement_print_as_ntriples(s1, stderr);
+ fprintf(stderr, " to ");
+ raptor_statement_print_as_ntriples(s2, stderr);
+#endif
+
+ /* normal comparison */
+ if(s1->subject->type != s2->subject->type) {
+ rv = 0;
+ goto done;
+ }
+
+ if(s1->subject->type == RAPTOR_TERM_TYPE_BLANK) {
+ /* Here for completeness. Anonymous nodes are taken care of
+ * elsewhere */
+ /*if(strcmp((const char *)s1->subject, (const char *)s2->subject->value) != 0)
+ return 0;*/
+ } else {
+ if(!raptor_uri_equals(s1->subject->value.uri,
+ s2->subject->value.uri)) {
+ rv = 0;
+ goto done;
+ }
+ }
+
+ if(s1->predicate->type != s2->predicate->type) {
+ rv = 0;
+ goto done;
+ }
+
+ if(!raptor_uri_equals(s1->predicate->value.uri,
+ s2->predicate->value.uri)) {
+ rv = 0;
+ goto done;
+ }
+
+ if(s1->object->type != s2->object->type) {
+ rv = 0;
+ goto done;
+ }
+
+ if(s1->object->type == RAPTOR_TERM_TYPE_LITERAL) {
+ int equal;
+
+ equal= !safe_strcmp((char *)s1->object->value.literal.string,
+ (char *)s2->object->value.literal.string);
+
+ if(equal) {
+ if(s1->object->value.literal.language && s2->object->value.literal.language)
+ equal = !strcmp((char *)s1->object->value.literal.language,
+ (char *)s2->object->value.literal.language);
+ else if(s1->object->value.literal.language || s2->object->value.literal.language)
+ equal = 0;
+ else
+ equal = 1;
+
+ if(equal)
+ equal = raptor_uri_equals(s1->object->value.literal.datatype,
+ s2->object->value.literal.datatype);
+ }
+
+ rv = equal;
+ goto done;
+ } else if(s1->object->type == RAPTOR_TERM_TYPE_BLANK) {
+ /* Here for completeness. Anonymous nodes are taken care of
+ * elsewhere */
+ /* if(strcmp((const char *)s1->object, (const char *)s2->object->value) != 0)
+ return 0; */
+ } else {
+ if(!raptor_uri_equals(s1->object->value.uri,
+ s2->object->value.uri)) {
+ rv = 0;
+ goto done;
+ }
+ }
+
+ rv = 1;
+ done:
+
+#if defined(RAPTOR_DEBUG) && RAPTOR_DEBUG > 1
+ fprintf(stderr, " : %s\n", (rv ? "equal" : "not equal"));
+#endif
+ return rv;
+}
+
+
+static int
+rdfdiff_blank_equals(const rdfdiff_blank *b1, const rdfdiff_blank *b2,
+ rdfdiff_file *b1_file, rdfdiff_file *b2_file)
+{
+ /* first compare "owners". Owners are subject/predicate or arcs
+ * in. */
+ int equal = 0;
+
+ if(b1->owner == NULL && b2->owner == NULL) {
+ /* Both are "top-level" anonymous objects. I.E. Neither is the
+ * object of a statement. Fall through and compare based on their
+ * contents. */
+ equal = 1;
+ } else if(b1->owner == NULL || b2->owner == NULL) {
+ equal = 0;
+ } else if(b1->owner->subject->type != RAPTOR_TERM_TYPE_BLANK &&
+ b2->owner->subject->type != RAPTOR_TERM_TYPE_BLANK) {
+ /* Neither are anonymous. Normal comparison. This will return
+ * false if both the subject and the predicates don't match. We
+ * know the objects are blank nodes. */
+ equal = rdfdiff_statement_equals(b1->world, b1->owner, b2->owner);
+
+ } else if(b1->owner->subject->type == RAPTOR_TERM_TYPE_BLANK &&
+ b2->owner->subject->type == RAPTOR_TERM_TYPE_BLANK) {
+ rdfdiff_blank *p1;
+ rdfdiff_blank *p2;
+
+ /* Both are anonymous. Need further testing. Check that the
+ * containing anononymous nodes are eaual. */
+#if 0
+ fprintf(stderr, "b1->owner: ");
+ raptor_statement_print_as_ntriples(b1->owner, stderr);
+ fprintf(stderr, "\n");
+
+ fprintf(stderr, "b2->owner: ");
+ raptor_statement_print_as_ntriples(b2->owner, stderr);
+ fprintf(stderr, "\n");
+#endif
+ p1 = rdfdiff_find_blank(b1_file->first_blank,
+ (char *)b1->owner->subject->value.blank.string);
+ p2 = rdfdiff_find_blank(b2_file->first_blank,
+ (char *)b2->owner->subject->value.blank.string);
+ equal = rdfdiff_blank_equals(p1, p2, b1_file, b2_file);
+ } else {
+ equal = 0;
+ }
+
+ /* Now compare the contents. This accounts for the case where a
+ * subject has several properties (of the same predicate value) with
+ * different blank nodes as values. */
+ if(equal) {
+ rdfdiff_link *s1 = b1->first;
+ while(s1) {
+
+ rdfdiff_link *s2 = b2->first;
+ while(s2) {
+
+ if(rdfdiff_statement_equals(b1->world, s1->statement, s2->statement))
+ break;
+
+ s2 = s2->next;
+
+ }
+
+ if(s2 == 0) {
+ equal = 0;
+ break;
+ }
+
+ s1 = s1->next;
+
+ }
+
+ }
+
+ return equal;
+}
+
+
+static void
+rdfdiff_log_handler(void *data, raptor_log_message *message)
+{
+ rdfdiff_file* file = (rdfdiff_file*)data;
+
+ switch(message->level) {
+ case RAPTOR_LOG_LEVEL_FATAL:
+ case RAPTOR_LOG_LEVEL_ERROR:
+ if(!ignore_errors) {
+ fprintf(stderr, "%s: Error - ", program);
+ raptor_locator_print(message->locator, stderr);
+ fprintf(stderr, " - %s\n", message->text);
+
+ raptor_parser_parse_abort(file->parser);
+ }
+
+ file->error_count++;
+ break;
+
+ case RAPTOR_LOG_LEVEL_WARN:
+ if(!ignore_warnings) {
+ fprintf(stderr, "%s: Warning - ", program);
+ raptor_locator_print(message->locator, stderr);
+ fprintf(stderr, " - %s\n", message->text);
+ }
+
+ file->warning_count++;
+ break;
+
+ case RAPTOR_LOG_LEVEL_NONE:
+ case RAPTOR_LOG_LEVEL_TRACE:
+ case RAPTOR_LOG_LEVEL_DEBUG:
+ case RAPTOR_LOG_LEVEL_INFO:
+
+ fprintf(stderr, "%s: Unexpected %s message - ", program,
+ raptor_log_level_get_label(message->level));
+ raptor_locator_print(message->locator, stderr);
+ fprintf(stderr, " - %s\n", message->text);
+ break;
+ }
+
+}
+
+
+
+static rdfdiff_blank *
+rdfdiff_find_blank(rdfdiff_blank *first, char *blank_id)
+{
+ rdfdiff_blank *rv_blank = 0;
+ rdfdiff_blank *cur = first;
+
+ while(cur) {
+
+ if(strcmp(cur->blank_id, blank_id) == 0) {
+ rv_blank = cur;
+ break;
+ }
+
+ cur = cur->next;
+
+ }
+
+ return rv_blank;
+
+}
+
+
+static rdfdiff_blank *
+rdfdiff_lookup_blank(rdfdiff_file* file, char *blank_id)
+{
+ rdfdiff_blank *rv_blank = rdfdiff_find_blank(file->first_blank, blank_id);
+
+ if(!rv_blank) {
+ rv_blank = rdfdiff_new_blank(file->world, blank_id);
+ if(rv_blank) {
+
+ if(!file->first_blank) {
+ file->first_blank = rv_blank;
+ file->last_blank = rv_blank;
+ } else {
+ file->last_blank->next = rv_blank;
+ file->last_blank = rv_blank;
+ }
+ }
+ }
+
+ return rv_blank;
+
+}
+
+
+static int
+rdfdiff_add_blank_statement(rdfdiff_file* file,
+ raptor_statement *statement)
+{
+ rdfdiff_blank *blank;
+ rdfdiff_link *dlink;
+
+ blank = rdfdiff_lookup_blank(file, (char *)statement->subject->value.blank.string);
+ if(!blank)
+ goto failed;
+
+ dlink = RAPTOR_MALLOC(rdfdiff_link*, sizeof(*dlink));
+ if(!dlink)
+ goto failed;
+
+ dlink->statement = raptor_statement_copy(statement);
+ if(!dlink->statement) {
+ RAPTOR_FREE(rdfdiff_link, dlink);
+ goto failed;
+ }
+
+ dlink->next = NULL;
+ if(!blank->first) {
+ blank->first = dlink;
+ blank->last = dlink;
+ } else {
+ blank->last->next = dlink;
+ blank->last = dlink;
+ }
+
+ return 0;
+
+failed:
+ fprintf(stderr, "%s: Internal Error\n", program);
+ return 1;
+}
+
+
+static int
+rdfdiff_add_blank_statement_owner(rdfdiff_file* file,
+ raptor_statement *statement)
+{
+ rdfdiff_blank *blank;
+
+ blank = rdfdiff_lookup_blank(file,
+ (char*)statement->object->value.blank.string);
+ if(!blank)
+ goto failed;
+
+ if(blank->owner)
+ raptor_free_statement(blank->owner);
+
+ blank->owner = raptor_statement_copy(statement);
+ if(!blank->owner)
+ goto failed;
+
+ return 0;
+
+failed:
+ fprintf(stderr, "%s: Internal Error\n", program);
+ return 1;
+}
+
+
+static int
+rdfdiff_add_statement(rdfdiff_file* file, raptor_statement *statement)
+{
+ int rv = 0;
+
+ rdfdiff_link *dlink = RAPTOR_MALLOC(rdfdiff_link*, sizeof(*dlink));
+
+ if(dlink) {
+
+ dlink->statement = raptor_statement_copy(statement);
+
+ if(dlink->statement) {
+
+ dlink->next = NULL;
+
+ if(!file->first) {
+ file->first = dlink;
+ file->last = dlink;
+ } else {
+ file->last->next = dlink;
+ file->last = dlink;
+ }
+
+ } else {
+ RAPTOR_FREE(rdfdiff_link, dlink);
+ rv = 1;
+ }
+
+ } else {
+ rv = 1;
+ }
+
+ if(rv != 0)
+ fprintf(stderr, "%s: Internal Error\n", program);
+
+ return rv;
+
+}
+
+
+static rdfdiff_link*
+rdfdiff_statement_find(rdfdiff_file* file, const raptor_statement *statement,
+ rdfdiff_link** prev_p)
+{
+ rdfdiff_link* prev = NULL;
+ rdfdiff_link* cur = file->first;
+
+ while(cur) {
+ if(rdfdiff_statement_equals(file->world, cur->statement, statement)) {
+ if(prev_p)
+ *prev_p=prev;
+ return cur;
+ }
+ prev = cur;
+ cur = cur->next;
+ }
+
+ return NULL;
+}
+
+
+static int
+rdfdiff_statement_exists(rdfdiff_file* file, const raptor_statement *statement)
+{
+ rdfdiff_link* node;
+ rdfdiff_link* prev = NULL;
+ node = rdfdiff_statement_find(file, statement, &prev);
+ return (node != NULL);
+}
+
+
+/*
+ * rdfdiff_collect_statements - Called when parsing "from" file to build a
+ * list of statements for comparison with those in the "to" file.
+ */
+static void
+rdfdiff_collect_statements(void *user_data, raptor_statement *statement)
+{
+ int rv = 0;
+ rdfdiff_file* file = (rdfdiff_file*)user_data;
+
+ if(rdfdiff_statement_exists(file, statement))
+ return;
+
+ file->statement_count++;
+
+ if(statement->subject->type == RAPTOR_TERM_TYPE_BLANK ||
+ statement->object->type == RAPTOR_TERM_TYPE_BLANK) {
+
+ if(statement->subject->type == RAPTOR_TERM_TYPE_BLANK)
+ rv = rdfdiff_add_blank_statement(file, statement);
+
+ if(rv == 0 && statement->object->type == RAPTOR_TERM_TYPE_BLANK)
+ rv = rdfdiff_add_blank_statement_owner(file, statement);
+
+ } else {
+ rv = rdfdiff_add_statement(file, statement);
+ }
+
+ if(rv != 0) {
+ raptor_parser_parse_abort(file->parser);
+ }
+
+}
+
+
+
+int
+main(int argc, char *argv[])
+{
+ raptor_world *world = NULL;
+ unsigned char *from_string = NULL;
+ unsigned char *to_string = NULL;
+ raptor_uri *from_uri = NULL;
+ raptor_uri *to_uri = NULL;
+ raptor_uri *base_uri = NULL;
+ const char *from_syntax = "rdfxml";
+ const char *to_syntax = "rdfxml";
+ int free_from_string = 0;
+ int free_to_string = 0;
+ int usage = 0;
+ int help = 0;
+ char *p;
+ int rv = 0;
+ rdfdiff_blank *b1;
+ rdfdiff_link *cur;
+
+ program = argv[0];
+ if((p = strrchr(program, '/')))
+ program = p+1;
+ else if((p = strrchr(program, '\\')))
+ program = p+1;
+ argv[0] = program;
+
+ world = raptor_new_world();
+ if(!world)
+ exit(1);
+ rv = raptor_world_open(world);
+ if(rv)
+ exit(1);
+
+ while(!usage && !help)
+ {
+ int c;
+#ifdef HAVE_GETOPT_LONG
+ int option_index = 0;
+
+ c = getopt_long (argc, argv, GETOPT_STRING, long_options, &option_index);
+#else
+ c = getopt (argc, argv, GETOPT_STRING);
+#endif
+ if(c == -1)
+ break;
+
+ switch (c) {
+ case 0:
+ case '?': /* getopt() - unknown option */
+ usage = 1;
+ break;
+
+ case 'b':
+ brief = 1;
+ break;
+
+ case 'h':
+ help = 1;
+ break;
+
+ case 'f':
+ if(optarg)
+ from_syntax = optarg;
+ break;
+
+ case 't':
+ if(optarg)
+ to_syntax = optarg;
+ break;
+
+ case 'u':
+ if(optarg)
+ base_uri = raptor_new_uri(world, (const unsigned char*)optarg);
+ break;
+
+ }
+
+ }
+
+ if(optind != argc-2)
+ help = 1;
+
+ if(usage) {
+ if(usage > 1) {
+ fprintf(stderr, title_format_string, raptor_version_string);
+ fputs(raptor_short_copyright_string, stderr);
+ fputc('\n', stderr);
+ }
+ fprintf(stderr, "Try `%s " HELP_ARG(h, help) "' for more information.\n",
+ program);
+ rv = 1;
+ goto exit;
+ }
+
+ if(help) {
+ printf("Usage: %s [OPTIONS] <from URI> <to URI>\n", program);
+ printf(title_format_string, raptor_version_string);
+ puts(raptor_short_copyright_string);
+ puts("Find differences between two RDF files.");
+ puts("\nOPTIONS:");
+ puts(HELP_TEXT("h", "help ", "Print this help, then exit"));
+ puts(HELP_TEXT("b", "brief ", "Report only whether files differ"));
+ puts(HELP_TEXT("u BASE-URI", "base-uri BASE-URI ", "Set the base URI for the files"));
+ puts(HELP_TEXT("f FORMAT", "from-format FORMAT ", "Format of <from URI> (default is rdfxml)"));
+ puts(HELP_TEXT("t FORMAT", "to-format FORMAT ", "Format of <to URI> (default is rdfxml)"));
+ rv = 1;
+ goto exit;
+ }
+
+ from_string = (unsigned char *)argv[optind++];
+ to_string = (unsigned char *)argv[optind];
+
+ if(!access((const char *)from_string, R_OK)) {
+ char *filename = (char *)from_string;
+ from_string = raptor_uri_filename_to_uri_string(filename);
+ if(!from_string) {
+ fprintf(stderr, "%s: Failed to create URI for file %s.\n", program, filename);
+ rv = 2;
+ goto exit;
+ }
+ free_from_string = 1;
+ }
+
+ if(!access((const char *)to_string, R_OK)) {
+ char *filename = (char *)to_string;
+ to_string = raptor_uri_filename_to_uri_string(filename);
+ if(!to_string) {
+ fprintf(stderr, "%s: Failed to create URI for file %s.\n", program, filename);
+ rv = 2;
+ goto exit;
+ }
+ free_to_string = 1;
+ }
+
+ if(from_string) {
+ from_uri = raptor_new_uri(world, from_string);
+ if(!from_uri) {
+ fprintf(stderr, "%s: Failed to create URI for %s\n", program, from_string);
+ rv = 2;
+ goto exit;
+ }
+ }
+
+ if(to_string) {
+ to_uri = raptor_new_uri(world, to_string);
+ if(!to_uri) {
+ fprintf(stderr, "%s: Failed to create URI for %s\n", program, from_string);
+ rv = 2;
+ goto exit;
+ }
+ }
+
+ /* create and init "from" data structures */
+ from_file = rdfdiff_new_file(world, from_string, from_syntax);
+ if(!from_file) {
+ rv = 2;
+ goto exit;
+ }
+
+ /* create and init "to" data structures */
+ to_file = rdfdiff_new_file(world, to_string, to_syntax);
+ if(!to_file) {
+ rv = 2;
+ goto exit;
+ }
+
+ /* parse the files */
+ raptor_parser_set_statement_handler(from_file->parser, from_file,
+ rdfdiff_collect_statements);
+
+ if(raptor_parser_parse_uri(from_file->parser, from_uri, base_uri)) {
+ fprintf(stderr, "%s: Failed to parse URI %s as %s content\n", program,
+ from_string, from_syntax);
+ rv = 1;
+ goto exit;
+ } else {
+
+ /* Note intentional from_uri as base_uri */
+ raptor_parser_set_statement_handler(to_file->parser, to_file,
+ rdfdiff_collect_statements);
+ if(raptor_parser_parse_uri(to_file->parser, to_uri, base_uri ? base_uri: from_uri)) {
+ fprintf(stderr, "%s: Failed to parse URI %s as %s content\n", program,
+ to_string, to_syntax);
+ rv = 1;
+ goto exit;
+ }
+ }
+
+
+ /* Compare triples with no blank nodes */
+ cur = to_file->first;
+ while(cur) {
+ rdfdiff_link* node;
+ rdfdiff_link* prev;
+ node = rdfdiff_statement_find(from_file, cur->statement, &prev);
+ if(node) {
+ /* exists in from file - remove it from the list */
+ if(from_file->first == node) {
+ from_file->first = node->next;
+ } else {
+ prev->next = node->next;
+ }
+ raptor_free_statement(node->statement);
+ RAPTOR_FREE(rdfdiff_link, node);
+ } else {
+ if(!brief) {
+ if(emit_from_header) {
+ fprintf(stderr, "Statements in %s but not in %s\n",
+ to_file->name, from_file->name);
+ emit_from_header = 0;
+ }
+
+ fprintf(stderr, "< ");
+ raptor_statement_print_as_ntriples(cur->statement, stderr);
+ fprintf(stderr, "\n");
+ }
+
+ to_file->difference_count++;
+ }
+ cur = cur->next;
+ }
+
+
+ /* Now compare the blank nodes */
+ b1 = to_file->first_blank;
+ while(b1) {
+
+ rdfdiff_blank *b2 = from_file->first_blank;
+
+ while(b2) {
+
+ if(!b2->matched && rdfdiff_blank_equals(b1, b2, to_file, from_file)) {
+ b1->matched = 1;
+ b2->matched = 1;
+ break;
+ }
+
+ b2 = b2->next;
+
+ }
+
+ if(b2 == 0) {
+ if(!brief) {
+#if 0
+ fprintf(stderr, "< ");
+ raptor_statement_print_as_ntriples(b1->owner, stderr);
+ fprintf(stderr, "\n");
+#else
+ if(emit_from_header) {
+ fprintf(stderr, "Statements in %s but not in %s\n", to_file->name, from_file->name);
+ emit_from_header = 0;
+ }
+
+ fprintf(stderr, "< anonymous node %s\n", b1->blank_id);
+#endif
+ }
+
+ to_file->difference_count++;
+ }
+
+ b1 = b1->next;
+
+ }
+
+ if(from_file->first) {
+ /* The entrys left in from_file have not been found in to_file. */
+ if(!brief) {
+
+ if(emit_to_header) {
+ fprintf(stderr, "Statements in %s but not in %s\n", from_file->name,
+ to_file->name);
+ emit_to_header = 0;
+ }
+
+ cur = from_file->first;
+ while(cur) {
+ if(!brief) {
+ fprintf(stderr, "> ");
+ raptor_statement_print_as_ntriples(cur->statement, stderr);
+ fprintf(stderr, "\n");
+ }
+
+ cur = cur->next;
+ from_file->difference_count++;
+ }
+ }
+
+ }
+
+ if(from_file->first_blank) {
+ rdfdiff_blank *blank = from_file->first_blank;
+ while(blank) {
+
+ if(!blank->matched) {
+ if(!brief) {
+#if 0
+ fprintf(stderr, "> ");
+ raptor_statement_print_as_ntriples(blank->owner, stderr);
+ fprintf(stderr, "\n");
+#else
+ if(emit_to_header) {
+ fprintf(stderr, "Statements in %s but not in %s\n", from_file->name, to_file->name);
+ emit_to_header = 0;
+ }
+ fprintf(stderr, "> anonymous node %s\n", blank->blank_id);
+#endif
+ }
+ from_file->difference_count++;
+ }
+
+ blank = blank->next;
+
+ }
+
+ }
+
+ if(!(from_file->difference_count == 0 &&
+ to_file->difference_count == 0)) {
+
+ if(brief)
+ fprintf(stderr, "Files differ\n");
+
+ rv = 1;
+ }
+
+exit:
+
+ if(base_uri)
+ raptor_free_uri(base_uri);
+
+ if(from_file)
+ rdfdiff_free_file(from_file);
+
+ if(to_file)
+ rdfdiff_free_file(to_file);
+
+ if(free_from_string)
+ raptor_free_memory(from_string);
+
+ if(free_to_string)
+ raptor_free_memory(to_string);
+
+ if(from_uri)
+ raptor_free_uri(from_uri);
+
+ if(to_uri)
+ raptor_free_uri(to_uri);
+
+ raptor_free_world(world);
+
+ return rv;
+
+}
+
diff --git a/win32/Makefile.am b/win32/Makefile.am
new file mode 100644
index 0000000..5bdbfd2
--- /dev/null
+++ b/win32/Makefile.am
@@ -0,0 +1,12 @@
+EXTRA_DIST=README.txt \
+raptor.dsp raptor.dsw \
+rapper.dsp \
+raptortest.cpp raptortest.dsp \
+raptor.sln \
+rapper.vcproj raptor.vcproj raptortest.vcproj
+
+# Make some empty dirs that may be needed
+dist-hook:
+ for dir in Debug Release; do \
+ mkdir $(distdir)/$$dir; \
+ done
diff --git a/win32/Makefile.in b/win32/Makefile.in
new file mode 100644
index 0000000..f6606e4
--- /dev/null
+++ b/win32/Makefile.in
@@ -0,0 +1,438 @@
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = win32
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/raptor_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MEM = @MEM@
+MEM_LIBS = @MEM_LIBS@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RAPTOR_LDFLAGS = @RAPTOR_LDFLAGS@
+RAPTOR_LIBTOOLLIBS = @RAPTOR_LIBTOOLLIBS@
+RAPTOR_LIBTOOL_VERSION = @RAPTOR_LIBTOOL_VERSION@
+RAPTOR_PARSERS = @RAPTOR_PARSERS@
+RAPTOR_SERIALIZERS = @RAPTOR_SERIALIZERS@
+RAPTOR_VERSION = @RAPTOR_VERSION@
+RAPTOR_VERSION_DECIMAL = @RAPTOR_VERSION_DECIMAL@
+RAPTOR_VERSION_MAJOR = @RAPTOR_VERSION_MAJOR@
+RAPTOR_VERSION_MINOR = @RAPTOR_VERSION_MINOR@
+RAPTOR_VERSION_RELEASE = @RAPTOR_VERSION_RELEASE@
+RAPTOR_WWW_LIBRARY = @RAPTOR_WWW_LIBRARY@
+RAPTOR_XML_PARSER = @RAPTOR_XML_PARSER@
+RECHO = @RECHO@
+RECHO_C = @RECHO_C@
+RECHO_N = @RECHO_N@
+RPM_RELEASE = @RPM_RELEASE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+XML_CONFIG = @XML_CONFIG@
+XSLT_CONFIG = @XSLT_CONFIG@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = README.txt \
+raptor.dsp raptor.dsw \
+rapper.dsp \
+raptortest.cpp raptortest.dsp \
+raptor.sln \
+rapper.vcproj raptor.vcproj raptortest.vcproj
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu win32/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu win32/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ dist-hook distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+# Make some empty dirs that may be needed
+dist-hook:
+ for dir in Debug Release; do \
+ mkdir $(distdir)/$$dir; \
+ done
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/win32/README.txt b/win32/README.txt
new file mode 100644
index 0000000..3a95ff8
--- /dev/null
+++ b/win32/README.txt
@@ -0,0 +1,30 @@
+This is user contributed win32 configuration for building raptor
+using MS Windows development environments.
+
+The latest files are the *.vcproj and *.sln files for MS Visual
+Studio 8, provided by John Barstow.
+
+The *.dsp *.dsw files are older and from MS Developer Studio provided
+by several prople.
+
+The various project files assume that (iconv, libxml, libxml2) or
+expat are available as well as curl have been installed or compiled
+in sibling top level directories. See the raptor.vcproj (newest) or
+raptor.dsp (older) files for the exact paths used, which are
+version-number dependant.
+
+It should be relatively easy to change raptor between using libxml2
+and expat. See ..\win32_raptor_config.h near:
+/* For using expat on win32 */
+...
+#else
+/* For using libxml2 on win32 */
+
+and pick one path.
+
+
+I do not test this configuration since I don't use Windows. I am
+happy to receive patches to fix things though.
+
+Dave
+2005-05-19
diff --git a/win32/rapper.dsp b/win32/rapper.dsp
new file mode 100644
index 0000000..9f71c54
--- /dev/null
+++ b/win32/rapper.dsp
@@ -0,0 +1,108 @@
+# Microsoft Developer Studio Project File - Name="rapper" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=rapper - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "rapper.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "rapper.mak" CFG="rapper - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "rapper - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "rapper - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "rapper - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "rapper - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c /Tc
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 raptor.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /map /debug /machine:I386 /pdbtype:sept /libpath:"Debug"
+# SUBTRACT LINK32 /incremental:no
+
+!ENDIF
+
+# Begin Target
+
+# Name "rapper - Win32 Release"
+# Name "rapper - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\getopt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\rdfdump.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/win32/rapper.vcproj b/win32/rapper.vcproj
new file mode 100644
index 0000000..746400f
--- /dev/null
+++ b/win32/rapper.vcproj
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="rapper">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\src;..\utils"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ PrecompiledHeaderFile=".\Release/rapper.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="1"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="raptor.lib"
+ OutputFile=".\Release/rapper.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="Release"
+ ProgramDatabaseFile=".\Release/rapper.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/rapper.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\src;..\utils"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_MT"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="2"
+ PrecompiledHeaderFile=".\Debug/rapper.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="1"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="raptor.lib"
+ OutputFile=".\Debug/rapper.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="Debug"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/rapper.pdb"
+ GenerateMapFile="TRUE"
+ MapFileName=".\Debug/rapper.map"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/rapper.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+ <File
+ RelativePath="..\utils\getopt.c">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)/$(InputName)1.obj"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)/$(InputName)1.obj"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\utils\rapper.c">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl">
+ <File
+ RelativePath="..\utils\raptor_getopt.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/win32/raptor.dsp b/win32/raptor.dsp
new file mode 100644
index 0000000..049e46f
--- /dev/null
+++ b/win32/raptor.dsp
@@ -0,0 +1,277 @@
+# Microsoft Developer Studio Project File - Name="raptor" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=raptor - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "raptor.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "raptor.mak" CFG="raptor - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "raptor - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "raptor - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "$/RDFDB/DSPs/RDF File/raptor"
+# PROP Scc_LocalPath "."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "raptor - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WIN32_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "...." /I "../curl-7.12.1/include" /I ".." /I "../../expat-1.95.8/lib" /I "C:\OLD D DRIVE\Expat-1.95.7\Source\lib" /I "C:\OLD D DRIVE\curl\curl-7.10.3\include" /D "RAPTOR_INTERNAL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WIN32_EXPORTS" /FD /c
+# SUBTRACT CPP /YX /Yc /Yu
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 urlmon.lib xmlparse.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /libpath:"..\expat\lib"
+
+!ELSEIF "$(CFG)" == "raptor - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WIN32_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../curl-7.12.1/include" /I ".." /I "../../expat-1.95.8/lib" /I "C:\OLD D DRIVE\Expat-1.95.7\Source\lib" /I "C:\OLD D DRIVE\curl\curl-7.10.3\include" /D "RAPTOR_INTERNAL" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "WIN32_EXPORTS" /FR /FD /GZ /c /Tc
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 urlmon.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /map /debug /machine:I386 /pdbtype:sept /libpath:"..\expat\lib"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "raptor - Win32 Release"
+# Name "raptor - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\getopt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\ntriples_parse.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_expat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_feature.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_general.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_identifier.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_iostream.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_libxml.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_locator.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_namespace.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_nfc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_nfc_data.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_parse.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_qname.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_rdfxml.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_rfc2396.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_rss.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_sax2.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_sequence.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_serialize.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_set.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_stringbuffer.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_uri.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_utf8.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_win32.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_www.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_www_curl.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_www_libfetch.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_www_libwww.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_www_libxml.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_xml.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_xml_writer.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\strcasecmp.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\turtle_lexer.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\turtle_parser.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\ntriples.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_getopt.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_internal.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\raptor_nfc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\turtle_common.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\turtle_lexer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\turtle_parser.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\win32_raptor_config.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/win32/raptor.dsw b/win32/raptor.dsw
new file mode 100644
index 0000000..ec264df
--- /dev/null
+++ b/win32/raptor.dsw
@@ -0,0 +1,86 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "curllib"="..\..\..\..\curl\curl-7.10.3\lib\curllib.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "expat"="..\..\..\..\Expat-1.95.7\Source\lib\expat.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "rapper"=".\rapper.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "raptor"=".\raptor.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name curllib
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name expat
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "raptortest"=".\raptortest.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name raptor
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/win32/raptor.sln b/win32/raptor.sln
new file mode 100644
index 0000000..2fa6309
--- /dev/null
+++ b/win32/raptor.sln
@@ -0,0 +1,37 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rapper", "rapper.vcproj", "{1FFF7A31-D1A9-4516-AB07-4D415ABAB733}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raptor", "raptor.vcproj", "{F48C108E-B937-4D8C-A308-9C257C5D0D3D}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curllib", "..\..\..\curl-7.13.2\lib\curllib.vcproj", "{59ED01CF-49C8-42C5-846F-AAF0A5F3B437}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {1FFF7A31-D1A9-4516-AB07-4D415ABAB733}.Debug.ActiveCfg = Debug|Win32
+ {1FFF7A31-D1A9-4516-AB07-4D415ABAB733}.Debug.Build.0 = Debug|Win32
+ {1FFF7A31-D1A9-4516-AB07-4D415ABAB733}.Release.ActiveCfg = Release|Win32
+ {1FFF7A31-D1A9-4516-AB07-4D415ABAB733}.Release.Build.0 = Release|Win32
+ {F48C108E-B937-4D8C-A308-9C257C5D0D3D}.Debug.ActiveCfg = Debug|Win32
+ {F48C108E-B937-4D8C-A308-9C257C5D0D3D}.Debug.Build.0 = Debug|Win32
+ {F48C108E-B937-4D8C-A308-9C257C5D0D3D}.Release.ActiveCfg = Release|Win32
+ {F48C108E-B937-4D8C-A308-9C257C5D0D3D}.Release.Build.0 = Release|Win32
+ {59ED01CF-49C8-42C5-846F-AAF0A5F3B437}.Debug.ActiveCfg = Debug|Win32
+ {59ED01CF-49C8-42C5-846F-AAF0A5F3B437}.Debug.Build.0 = Debug|Win32
+ {59ED01CF-49C8-42C5-846F-AAF0A5F3B437}.Release.ActiveCfg = Release|Win32
+ {59ED01CF-49C8-42C5-846F-AAF0A5F3B437}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/win32/raptor.vcproj b/win32/raptor.vcproj
new file mode 100644
index 0000000..a52cc9a
--- /dev/null
+++ b/win32/raptor.vcproj
@@ -0,0 +1,981 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="raptor">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="&quot;..\..\..\iconv-1.9.1.win32\include&quot;;..\..\..\libxml2\include;..\src;&quot;..\..\..\curl-7.13.2\include&quot;;..\..\..\libxslt\include"
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_USRDLL;WIN32_EXPORTS;RAPTOR_DEBUG"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="2"
+ PrecompiledHeaderFile=".\Debug/raptor.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ BrowseInformation="1"
+ WarningLevel="4"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="1"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="urlmon.lib libxml2.lib iconv.lib libxslt.lib"
+ OutputFile=".\Debug/raptor.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\..\..\libxml2\lib;&quot;..\..\..\iconv-1.9.1.win32\lib&quot;;..\..\..\libxslt\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/raptor.pdb"
+ GenerateMapFile="TRUE"
+ MapFileName=".\Debug/raptor.map"
+ ImportLibrary=".\Debug/raptor.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/raptor.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="&quot;..\..\..\iconv-1.9.1.win32\include&quot;;..\..\..\libxml2\include;&quot;..\..\..\curl-7.13.2\include&quot;;..\..\..\libxslt\include;..\src"
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_USRDLL;WIN32_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ PrecompiledHeaderFile=".\Release/raptor.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="1"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="urlmon.lib odbc32.lib odbccp32.lib libxml2.lib iconv.lib libxslt.lib"
+ OutputFile=".\Release/raptor.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\..\..\libxml2\lib;&quot;..\..\..\iconv-1.9.1.win32\lib&quot;;..\..\..\libxslt\lib"
+ ProgramDatabaseFile=".\Release/raptor.pdb"
+ ImportLibrary=".\Release/raptor.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/raptor.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ <ProjectReference
+ ReferencedProjectIdentifier="{59ED01CF-49C8-42C5-846F-AAF0A5F3B437}"
+ Name="curllib"/>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+ <File
+ RelativePath="..\src\n3_lexer.c">
+ </File>
+ <File
+ RelativePath="..\src\n3_parser.c">
+ </File>
+ <File
+ RelativePath="..\src\ntriples_parse.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\parsedate.c">
+ </File>
+ <File
+ RelativePath="..\src\raptor_expat.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_feature.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_general.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_guess.c">
+ </File>
+ <File
+ RelativePath="..\src\raptor_identifier.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_iostream.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_libxml.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_locator.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_namespace.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_nfc.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_nfc_data.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_parse.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_qname.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_rdfxml.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_rfc2396.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_rss.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_rss_common.c">
+ </File>
+ <File
+ RelativePath="..\src\raptor_sax2.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_sequence.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_serialize.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_serialize_ntriples.c">
+ </File>
+ <File
+ RelativePath="..\src\raptor_serialize_rdfxml.c">
+ </File>
+ <File
+ RelativePath="..\src\raptor_serialize_rdfxmla.c">
+ </File>
+ <File
+ RelativePath="..\src\raptor_serialize_rss.c">
+ </File>
+ <File
+ RelativePath="..\src\raptor_serialize_simple.c">
+ </File>
+ <File
+ RelativePath="..\src\raptor_set.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_stringbuffer.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_uri.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_utf8.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_win32.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_www.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_www_curl.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_www_libfetch.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_www_libwww.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_www_libxml.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_xml.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_xml_writer.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\raptor_xsd.c">
+ </File>
+ <File
+ RelativePath="..\src\raptor_xslt.c">
+ </File>
+ <File
+ RelativePath="..\src\strcasecmp.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\turtle_common.c">
+ </File>
+ <File
+ RelativePath="..\src\turtle_lexer.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\turtle_parser.c">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ CompileAs="0"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="RAPTOR_INTERNAL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;WIN32_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="">
+ <File
+ RelativePath="..\src\n3_common.h">
+ </File>
+ <File
+ RelativePath="..\src\n3_lexer.h">
+ </File>
+ <File
+ RelativePath="..\src\n3_parser.h">
+ </File>
+ <File
+ RelativePath="..\src\raptor.h">
+ </File>
+ <File
+ RelativePath="..\src\raptor_internal.h">
+ </File>
+ <File
+ RelativePath="..\src\raptor_nfc.h">
+ </File>
+ <File
+ RelativePath="..\src\raptor_rss.h">
+ </File>
+ <File
+ RelativePath="..\src\turtle_common.h">
+ </File>
+ <File
+ RelativePath="..\src\turtle_lexer.h">
+ </File>
+ <File
+ RelativePath="..\src\turtle_parser.h">
+ </File>
+ <File
+ RelativePath="..\src\win32_raptor_config.h">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/win32/raptortest.cpp b/win32/raptortest.cpp
new file mode 100644
index 0000000..1c6b825
--- /dev/null
+++ b/win32/raptortest.cpp
@@ -0,0 +1,82 @@
+// raptortest.cpp : Defines the entry point for the console application.
+//
+
+#include <stdio.h>
+#include <windows.h>
+#include "..\raptor.h"
+
+#define TIMEIT
+#define DUMPIT
+
+int nStmts = 0;
+
+void dump_statement(void* user_data, const raptor_statement *statement)
+{
+ nStmts++;
+#ifdef DUMPIT
+ printf("%li, [%s, ", nStmts, statement->subject);
+
+ if(statement->predicate_type == RAPTOR_PREDICATE_TYPE_ORDINAL)
+ printf("[rdf:_%d]", *((int*)statement->predicate));
+ else if(statement->predicate_type == RAPTOR_PREDICATE_TYPE_XML_NAME)
+ printf("%s", (const char*)statement->predicate);
+ else
+ printf("[%s]", (const char*)statement->predicate);
+
+ if(statement->object_type == RAPTOR_OBJECT_TYPE_LITERAL ||
+ statement->object_type == RAPTOR_OBJECT_TYPE_XML_LITERAL)
+ printf(", \"%s\"]", (const char*)statement->object);
+ else if(statement->object_type == RAPTOR_OBJECT_TYPE_XML_NAME)
+ printf(", %s]", (const char*)statement->object);
+ else
+ printf(", %s]", statement->object);
+
+ printf("\n");
+#endif
+}
+
+void usage()
+{
+ printf("Usage: raptortest <rdffileurl>\nE.g. file:c:\\test.rdf\n");
+}
+
+int main(int argc, char* argv[])
+{
+ if (argc != 2)
+ {
+ usage();
+ return -1;
+ }
+
+
+ raptor_init();
+
+ raptor_parser* p = raptor_new("");
+
+ raptor_set_statement_handler(p, NULL, dump_statement);
+
+#ifdef TIMEIT
+ LARGE_INTEGER Start;
+ QueryPerformanceCounter(&Start);
+#endif
+ raptor_parse_file(p, argv[1], NULL);
+
+#ifdef TIMEIT
+ LARGE_INTEGER End;
+ QueryPerformanceCounter(&End);
+ LARGE_INTEGER Frec;
+ QueryPerformanceFrequency(&Frec);
+ double Total = (End.LowPart-Start.LowPart);
+ double StmtsPer = Total/nStmts;
+
+ printf("%li statments processed in %g t. %g t/stmts, %li t/s, %g stmts/s", nStmts, Total, StmtsPer, Frec.LowPart, (double)Frec.LowPart/StmtsPer);
+#endif
+
+ raptor_free(p);
+
+ raptor_finish();
+
+ return 0;
+}
+
+
diff --git a/win32/raptortest.dsp b/win32/raptortest.dsp
new file mode 100644
index 0000000..1bec5ed
--- /dev/null
+++ b/win32/raptortest.dsp
@@ -0,0 +1,95 @@
+# Microsoft Developer Studio Project File - Name="raptortest" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=raptortest - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "raptortest.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "raptortest.mak" CFG="raptortest - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "raptortest - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "raptortest - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "$/RDFDB/DSPs/RDF File/raptor"
+# PROP Scc_LocalPath "."
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "raptortest - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../Release"
+# PROP Intermediate_Dir "../Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "C:\OLD D DRIVE\Expat-1.95.7\Source\lib" /I "C:\OLD D DRIVE\curl\curl-7.10.3\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX /Yc /Yu
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"../Release"
+
+!ELSEIF "$(CFG)" == "raptortest - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "raptortest___Win32_Debug"
+# PROP BASE Intermediate_Dir "raptortest___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../Debug"
+# PROP Intermediate_Dir "../Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\\" /I "C:\OLD D DRIVE\Expat-1.95.7\Source\lib" /I "C:\OLD D DRIVE\curl\curl-7.10.3\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
+# SUBTRACT CPP /YX /Yc /Yu
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 raptor.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"Debug" /libpath:"../Debug"
+
+!ENDIF
+
+# Begin Target
+
+# Name "raptortest - Win32 Release"
+# Name "raptortest - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\raptortest.cpp
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/win32/raptortest.vcproj b/win32/raptortest.vcproj
new file mode 100644
index 0000000..3ffb771
--- /dev/null
+++ b/win32/raptortest.vcproj
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="raptortest"
+ SccProjectName="$/RDFDB/DSPs/RDF File/raptor"
+ SccLocalPath=".">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\../Release"
+ IntermediateDirectory=".\../Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="C:\OLD D DRIVE\Expat-1.95.7\Source\lib,C:\OLD D DRIVE\curl\curl-7.10.3\include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="4"
+ EnableFunctionLevelLinking="TRUE"
+ PrecompiledHeaderFile=".\../Release/raptortest.pch"
+ AssemblerListingLocation=".\../Release/"
+ ObjectFile=".\../Release/"
+ ProgramDataBaseFileName=".\../Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\../Release/raptortest.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="../Release"
+ ProgramDatabaseFile=".\../Release/raptortest.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\../Release/raptortest.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\../Debug"
+ IntermediateDirectory=".\../Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\,C:\OLD D DRIVE\Expat-1.95.7\Source\lib,C:\OLD D DRIVE\curl\curl-7.10.3\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="5"
+ PrecompiledHeaderFile=".\../Debug/raptortest.pch"
+ AssemblerListingLocation=".\../Debug/"
+ ObjectFile=".\../Debug/"
+ ProgramDataBaseFileName=".\../Debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="raptor.lib odbc32.lib odbccp32.lib"
+ OutputFile=".\../Debug/raptortest.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="Debug,../Debug"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\../Debug/raptortest.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\../Debug/raptortest.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+ <File
+ RelativePath="raptortest.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>